@cauca-911/material 18.0.0 → 18.0.1-beta2

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 (81) hide show
  1. package/esm2022/lib/buttons/base-button.mjs +33 -0
  2. package/esm2022/lib/buttons/basic-button/basic-button.component.mjs +64 -0
  3. package/esm2022/lib/buttons/flat-button/flat-button.component.mjs +64 -0
  4. package/esm2022/lib/buttons/icon-button/icon-button.component.mjs +28 -0
  5. package/esm2022/lib/buttons/menu-item/menu-item.component.mjs +68 -0
  6. package/esm2022/lib/buttons/raised-button/raised-button.component.mjs +64 -0
  7. package/esm2022/lib/buttons/stroked-button/stroked-button.component.mjs +71 -0
  8. package/esm2022/lib/cauca-material.component.mjs +6 -5
  9. package/esm2022/lib/cauca-material.module.mjs +14 -52
  10. package/esm2022/lib/cauca-menu-sidebar/cauca-menu-sidebar.component.mjs +14 -10
  11. package/esm2022/lib/cauca-menu-vertical/cauca-menu-vertical.component.mjs +16 -8
  12. package/esm2022/lib/cauca-simple-dialog/cauca-simple-dialog.component.mjs +14 -10
  13. package/esm2022/lib/cauca-slideshow/cauca-slideshow.component.mjs +6 -6
  14. package/esm2022/lib/dialogs/alert-dialog/alert-dialog.component.mjs +57 -0
  15. package/esm2022/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +69 -0
  16. package/esm2022/lib/dialogs/services/dialog.service.mjs +52 -0
  17. package/esm2022/lib/inputs/cauca-date-time-picker/cauca-date-time-picker.component.mjs +137 -0
  18. package/esm2022/lib/{cauca-date-time-picker → inputs/cauca-date-time-picker}/components/desktop-time-picker/desktop-time-picker.component.mjs +2 -2
  19. package/esm2022/lib/inputs/cauca-date-time-picker/components/dialog-date-time-picker/dialog-date-time-picker.component.mjs +358 -0
  20. package/esm2022/lib/inputs/cauca-date-time-picker/components/mobile-time-picker/mobile-time-picker.component.mjs +74 -0
  21. package/esm2022/lib/inputs/cauca-date-time-picker/models/dialog-date-time-picker-data.mjs +2 -0
  22. package/esm2022/lib/inputs/cauca-input-file/cauca-input-file.component.mjs +147 -0
  23. package/esm2022/lib/inputs/cauca-input-multiple-langue/cauca-input-multiple-langue.component.mjs +99 -0
  24. package/esm2022/lib/inputs/password/models/password-validation.mjs +13 -0
  25. package/esm2022/lib/inputs/password/password-criteria/password-criteria.component.mjs +49 -0
  26. package/esm2022/lib/inputs/password/password-criteria-viewer/password-criteria-viewer.component.mjs +29 -0
  27. package/esm2022/lib/inputs/password/password-input/password-input.component.mjs +112 -0
  28. package/esm2022/lib/inputs/password/password-selection/password-selection.component.mjs +112 -0
  29. package/esm2022/lib/inputs/password/validators/password-validator.mjs +19 -0
  30. package/esm2022/lib/inputs/select-with-search/select-with-search.component.mjs +157 -0
  31. package/esm2022/lib/layout/expandable-panel/expandable-panel.component.mjs +75 -0
  32. package/esm2022/lib/layout/menu-expandable-panel/menu-expandable-panel.component.mjs +148 -0
  33. package/esm2022/lib/layout/menu-expandable-panel-item/menu-expandable-panel-item.component.mjs +50 -0
  34. package/esm2022/lib/layout/page-title/page-title.component.mjs +86 -0
  35. package/esm2022/lib/notifications/snack-bar/snack-bar.component.mjs +75 -0
  36. package/esm2022/public-api.mjs +21 -4
  37. package/fesm2022/cauca-911-material.mjs +1988 -648
  38. package/fesm2022/cauca-911-material.mjs.map +1 -1
  39. package/lib/buttons/base-button.d.ts +21 -0
  40. package/lib/buttons/basic-button/basic-button.component.d.ts +6 -0
  41. package/lib/buttons/flat-button/flat-button.component.d.ts +6 -0
  42. package/lib/buttons/icon-button/icon-button.component.d.ts +6 -0
  43. package/lib/buttons/menu-item/menu-item.component.d.ts +9 -0
  44. package/lib/buttons/raised-button/raised-button.component.d.ts +6 -0
  45. package/lib/buttons/stroked-button/stroked-button.component.d.ts +6 -0
  46. package/lib/cauca-material.component.d.ts +1 -1
  47. package/lib/cauca-material.module.d.ts +4 -14
  48. package/lib/cauca-menu-sidebar/cauca-menu-sidebar.component.d.ts +1 -1
  49. package/lib/cauca-menu-vertical/cauca-menu-vertical.component.d.ts +1 -1
  50. package/lib/cauca-simple-dialog/cauca-simple-dialog.component.d.ts +1 -1
  51. package/lib/cauca-slideshow/cauca-slideshow.component.d.ts +1 -1
  52. package/lib/dialogs/alert-dialog/alert-dialog.component.d.ts +18 -0
  53. package/lib/dialogs/confirm-dialog/confirm-dialog.component.d.ts +17 -0
  54. package/lib/dialogs/services/dialog.service.d.ts +26 -0
  55. package/lib/{cauca-input-file → inputs/cauca-input-file}/cauca-input-file.component.d.ts +1 -1
  56. package/lib/{cauca-input-multiple-langue → inputs/cauca-input-multiple-langue}/cauca-input-multiple-langue.component.d.ts +1 -1
  57. package/lib/inputs/password/models/password-validation.d.ts +9 -0
  58. package/lib/inputs/password/password-criteria/password-criteria.component.d.ts +9 -0
  59. package/lib/inputs/password/password-criteria-viewer/password-criteria-viewer.component.d.ts +9 -0
  60. package/lib/inputs/password/password-input/password-input.component.d.ts +25 -0
  61. package/lib/inputs/password/password-selection/password-selection.component.d.ts +20 -0
  62. package/lib/inputs/password/validators/password-validator.d.ts +9 -0
  63. package/lib/inputs/select-with-search/select-with-search.component.d.ts +32 -0
  64. package/lib/layout/expandable-panel/expandable-panel.component.d.ts +10 -0
  65. package/lib/layout/menu-expandable-panel/menu-expandable-panel.component.d.ts +29 -0
  66. package/lib/layout/menu-expandable-panel-item/menu-expandable-panel-item.component.d.ts +13 -0
  67. package/lib/layout/page-title/page-title.component.d.ts +11 -0
  68. package/lib/notifications/snack-bar/snack-bar.component.d.ts +17 -0
  69. package/package.json +3 -2
  70. package/public-api.d.ts +20 -3
  71. package/esm2022/lib/cauca-date-time-picker/cauca-date-time-picker.component.mjs +0 -137
  72. package/esm2022/lib/cauca-date-time-picker/components/dialog-date-time-picker/dialog-date-time-picker.component.mjs +0 -357
  73. package/esm2022/lib/cauca-date-time-picker/components/mobile-time-picker/mobile-time-picker.component.mjs +0 -74
  74. package/esm2022/lib/cauca-date-time-picker/models/dialog-date-time-picker-data.mjs +0 -2
  75. package/esm2022/lib/cauca-input-file/cauca-input-file.component.mjs +0 -148
  76. package/esm2022/lib/cauca-input-multiple-langue/cauca-input-multiple-langue.component.mjs +0 -87
  77. /package/lib/{cauca-date-time-picker → inputs/cauca-date-time-picker}/cauca-date-time-picker.component.d.ts +0 -0
  78. /package/lib/{cauca-date-time-picker → inputs/cauca-date-time-picker}/components/desktop-time-picker/desktop-time-picker.component.d.ts +0 -0
  79. /package/lib/{cauca-date-time-picker → inputs/cauca-date-time-picker}/components/dialog-date-time-picker/dialog-date-time-picker.component.d.ts +0 -0
  80. /package/lib/{cauca-date-time-picker → inputs/cauca-date-time-picker}/components/mobile-time-picker/mobile-time-picker.component.d.ts +0 -0
  81. /package/lib/{cauca-date-time-picker → inputs/cauca-date-time-picker}/models/dialog-date-time-picker-data.d.ts +0 -0
@@ -0,0 +1,112 @@
1
+ import { Component, forwardRef, HostBinding, Input } from '@angular/core';
2
+ import { TranslateModule } from '@ngx-translate/core';
3
+ import { PasswordCriteriaViewerComponent } from '../password-criteria-viewer/password-criteria-viewer.component';
4
+ import { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';
5
+ import { filter } from 'rxjs';
6
+ import { PasswordInputComponent } from '../password-input/password-input.component';
7
+ import { PasswordValidation } from '../models/password-validation';
8
+ import { PasswordValidator } from '../validators/password-validator';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/forms";
11
+ const _c0 = ["*"];
12
+ export class PasswordSelectionComponent {
13
+ constructor(formBuilder) {
14
+ this.passwordValidation = new PasswordValidation();
15
+ this.disabled = false;
16
+ this.direction = 'row';
17
+ this.formWidth = '50%';
18
+ this.lastPasswordValidationSent = false;
19
+ this.onChange = (value) => value;
20
+ this.onTouched = () => { };
21
+ this.form = formBuilder.group({
22
+ password: ['', Validators.required],
23
+ confirmation: ['', Validators.required]
24
+ }, { validators: (formGroup) => {
25
+ this.passwordValidation = PasswordValidator.validate(formGroup);
26
+ if (!this.passwordValidation.isValid()) {
27
+ return ({ validation: this.passwordValidation });
28
+ }
29
+ return null;
30
+ } });
31
+ this.form.valueChanges.pipe(filter(_ => this.form.valid != this.lastPasswordValidationSent)).subscribe(form => {
32
+ this.lastPasswordValidationSent = this.form.valid;
33
+ if (this.form.valid) {
34
+ this.onChange(form.password);
35
+ }
36
+ else {
37
+ this.onChange('');
38
+ }
39
+ });
40
+ }
41
+ writeValue(value) {
42
+ this.form.get('password').setValue(value);
43
+ this.form.get('confirmation').setValue(value);
44
+ }
45
+ registerOnChange(fn) {
46
+ this.onChange = fn;
47
+ }
48
+ registerOnTouched(fn) {
49
+ this.onTouched = fn;
50
+ }
51
+ setDisabledState(isDisabled) {
52
+ this.disabled = isDisabled;
53
+ if (isDisabled) {
54
+ this.form.get('password').disable();
55
+ this.form.get('confirmation').disable();
56
+ }
57
+ else {
58
+ this.form.get('password').enable();
59
+ this.form.get('confirmation').enable();
60
+ }
61
+ }
62
+ static { this.ɵfac = function PasswordSelectionComponent_Factory(t) { return new (t || PasswordSelectionComponent)(i0.ɵɵdirectiveInject(i1.UntypedFormBuilder)); }; }
63
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PasswordSelectionComponent, selectors: [["app-password-selection"]], hostVars: 4, hostBindings: function PasswordSelectionComponent_HostBindings(rf, ctx) { if (rf & 2) {
64
+ i0.ɵɵstyleProp("flex-direction", ctx.direction)("form", ctx.formWidth, "width");
65
+ } }, inputs: { direction: "direction", formWidth: "formWidth" }, standalone: true, features: [i0.ɵɵProvidersFeature([
66
+ {
67
+ provide: NG_VALUE_ACCESSOR,
68
+ multi: true,
69
+ useExisting: forwardRef(() => PasswordSelectionComponent),
70
+ },
71
+ ]), i0.ɵɵStandaloneFeature], ngContentSelectors: _c0, decls: 7, vars: 9, consts: [[3, "formGroup"], [1, "passwords"], ["autocomplete", "new-password", "label", "password", "formControlName", "password", 3, "translateLabel", "required"], ["autocomplete", "new-password", "label", "passwordConfirmation", "formControlName", "confirmation", 3, "translateLabel", "required"], [1, "errors"], [3, "disabled", "passwordValidation"]], template: function PasswordSelectionComponent_Template(rf, ctx) { if (rf & 1) {
72
+ i0.ɵɵprojectionDef();
73
+ i0.ɵɵelementStart(0, "form", 0)(1, "div", 1);
74
+ i0.ɵɵelement(2, "app-password-input", 2)(3, "app-password-input", 3);
75
+ i0.ɵɵelementEnd();
76
+ i0.ɵɵelementStart(4, "div", 4);
77
+ i0.ɵɵprojection(5);
78
+ i0.ɵɵelementEnd()();
79
+ i0.ɵɵelement(6, "app-password-criteria-viewer", 5);
80
+ } if (rf & 2) {
81
+ i0.ɵɵclassProp("full-width-form", ctx.direction === "column");
82
+ i0.ɵɵproperty("formGroup", ctx.form);
83
+ i0.ɵɵadvance(2);
84
+ i0.ɵɵproperty("translateLabel", true)("required", true);
85
+ i0.ɵɵadvance();
86
+ i0.ɵɵproperty("translateLabel", true)("required", true);
87
+ i0.ɵɵadvance(3);
88
+ i0.ɵɵproperty("disabled", ctx.disabled)("passwordValidation", ctx.passwordValidation);
89
+ } }, dependencies: [PasswordInputComponent, FormsModule, i1.ɵNgNoValidate, i1.NgControlStatus, i1.NgControlStatusGroup, i1.RequiredValidator, ReactiveFormsModule, i1.FormGroupDirective, i1.FormControlName, TranslateModule, PasswordCriteriaViewerComponent], styles: ["[_nghost-%COMP%]{display:flex;gap:20px}form[_ngcontent-%COMP%]{width:50%;display:flex;flex-direction:column}.full-width-form[_ngcontent-%COMP%]{width:100%}.passwords[_ngcontent-%COMP%]{gap:16px;display:flex;flex-direction:column}.criteria[_ngcontent-%COMP%]{flex-grow:1}.disabled[_ngcontent-%COMP%]{opacity:.5}.errors[_ngcontent-%COMP%]{padding:0 16px}"] }); }
90
+ }
91
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PasswordSelectionComponent, [{
92
+ type: Component,
93
+ args: [{ selector: 'app-password-selection', standalone: true, imports: [PasswordInputComponent, FormsModule, ReactiveFormsModule, TranslateModule, PasswordCriteriaViewerComponent], providers: [
94
+ {
95
+ provide: NG_VALUE_ACCESSOR,
96
+ multi: true,
97
+ useExisting: forwardRef(() => PasswordSelectionComponent),
98
+ },
99
+ ], template: "<form [formGroup]=\"form\" [class.full-width-form]=\"direction === 'column'\">\r\n <div class=\"passwords\">\r\n <app-password-input autocomplete=\"new-password\" label=\"password\" [translateLabel]=\"true\" [required]=\"true\" formControlName=\"password\" />\r\n <app-password-input autocomplete=\"new-password\" label=\"passwordConfirmation\" [translateLabel]=\"true\" [required]=\"true\" formControlName=\"confirmation\" />\r\n </div>\r\n <div class=\"errors\">\r\n <ng-content></ng-content>\r\n </div>\r\n</form>\r\n<app-password-criteria-viewer [disabled]=\"disabled\" [passwordValidation]=\"passwordValidation\"></app-password-criteria-viewer>", styles: [":host{display:flex;gap:20px}form{width:50%;display:flex;flex-direction:column}.full-width-form{width:100%}.passwords{gap:16px;display:flex;flex-direction:column}.criteria{flex-grow:1}.disabled{opacity:.5}.errors{padding:0 16px}\n"] }]
100
+ }], () => [{ type: i1.UntypedFormBuilder }], { direction: [{
101
+ type: Input
102
+ }, {
103
+ type: HostBinding,
104
+ args: ['style.flex-direction']
105
+ }], formWidth: [{
106
+ type: Input
107
+ }, {
108
+ type: HostBinding,
109
+ args: ['style.form.width']
110
+ }] }); })();
111
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PasswordSelectionComponent, { className: "PasswordSelectionComponent", filePath: "lib\\inputs\\password\\password-selection\\password-selection.component.ts", lineNumber: 24 }); })();
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtc2VsZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhdWNhLW1hdGVyaWFsL3NyYy9saWIvaW5wdXRzL3Bhc3N3b3JkL3Bhc3N3b3JkLXNlbGVjdGlvbi9wYXNzd29yZC1zZWxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2F1Y2EtbWF0ZXJpYWwvc3JjL2xpYi9pbnB1dHMvcGFzc3dvcmQvcGFzc3dvcmQtc2VsZWN0aW9uL3Bhc3N3b3JkLXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNqSCxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBMEQsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0ssT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQWdCckUsTUFBTSxPQUFPLDBCQUEwQjtJQVVyQyxZQUFtQixXQUErQjtRQVIzQyx1QkFBa0IsR0FBdUIsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ2xFLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFb0IsY0FBUyxHQUFtQixLQUFLLENB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QUUsaUJBQWlCO29CQUMxQixLQUFLLEVBQUUsSUFBSTtvQkFDWCxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUMxRDthQUNGOztZQ3BCQyxBQURKLCtCQUEwRSxhQUMvQztZQUVuQixBQURBLHdDQUF3SSw0QkFDZ0I7WUFDNUosaUJBQU07WUFDTiw4QkFBb0I7WUFDaEIsa0JBQXlCO1lBRWpDLEFBREksaUJBQU0sRUFDSDtZQUNQLGtEQUE2SDs7WUFUcEcsNkRBQWdEO1lBQW5FLG9DQUFrQjtZQUVpRCxlQUF1QjtZQUFDLEFBQXhCLHFDQUF1QixrQkFBa0I7WUFDN0IsY0FBdUI7WUFBQyxBQUF4QixxQ0FBdUIsa0JBQWtCO1lBTWhHLGVBQXFCO1lBQUMsQUFBdEIsdUNBQXFCLDhDQUEwQzs0QkRHakYsc0JBQXNCLEVBQUUsV0FBVyx1RkFBRSxtQkFBbUIsNkNBQUUsZUFBZSxFQUFFLCtCQUErQjs7aUZBV3pHLDBCQUEwQjtjQWR0QyxTQUFTOzJCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1AsQ0FBQyxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLCtCQUErQixDQUFDLGFBRzFHO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLEtBQUssRUFBRSxJQUFJO3dCQUNYLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDJCQUEyQixDQUFDO3FCQUMxRDtpQkFDRjttREFPb0QsU0FBUztrQkFBN0QsS0FBSzs7a0JBQUksV0FBVzttQkFBQyxzQkFBc0I7WUFDSyxTQUFTO2tCQUF6RCxLQUFLOztrQkFBSSxXQUFXO21CQUFDLGtCQUFrQjs7a0ZBTjdCLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBQYXNzd29yZENyaXRlcmlhVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vcGFzc3dvcmQtY3JpdGVyaWEtdmlld2VyL3Bhc3N3b3JkLWNyaXRlcmlhLXZpZXdlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQYXNzd29yZElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vcGFzc3dvcmQtaW5wdXQvcGFzc3dvcmQtaW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFzc3dvcmRWYWxpZGF0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL3Bhc3N3b3JkLXZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBQYXNzd29yZFZhbGlkYXRvciB9IGZyb20gJy4uL3ZhbGlkYXRvcnMvcGFzc3dvcmQtdmFsaWRhdG9yJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLXBhc3N3b3JkLXNlbGVjdGlvbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbUGFzc3dvcmRJbnB1dENvbXBvbmVudCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgUGFzc3dvcmRDcml0ZXJpYVZpZXdlckNvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Bhc3N3b3JkLXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3Bhc3N3b3JkLXNlbGVjdGlvbi5jb21wb25lbnQuc2NzcycsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGFzc3dvcmRTZWxlY3Rpb25Db21wb25lbnQpLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRTZWxlY3Rpb25Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHVibGljIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAgcHVibGljIHBhc3N3b3JkVmFsaWRhdGlvbjogUGFzc3dvcmRWYWxpZGF0aW9uID0gbmV3IFBhc3N3b3JkVmFsaWRhdGlvbigpO1xyXG4gIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ3N0eWxlLmZsZXgtZGlyZWN0aW9uJykgcHVibGljIGRpcmVjdGlvbjogJ3Jvdyd8J2NvbHVtbicgPSAncm93JztcclxuICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ3N0eWxlLmZvcm0ud2lkdGgnKSBwdWJsaWMgZm9ybVdpZHRoOiBzdHJpbmcgPSAnNTAlJztcclxuXHJcbiAgcHJpdmF0ZSBsYXN0UGFzc3dvcmRWYWxpZGF0aW9uU2VudCA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IoZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcikge1xyXG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBwYXNzd29yZDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgY29uZmlybWF0aW9uOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdXHJcbiAgICB9LCB7IHZhbGlkYXRvcnM6IChmb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXApOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XHJcbiAgICAgIHRoaXMucGFzc3dvcmRWYWxpZGF0aW9uID0gUGFzc3dvcmRWYWxpZGF0b3IudmFsaWRhdGUoZm9ybUdyb3VwKTtcclxuICAgICAgaWYgKCF0aGlzLnBhc3N3b3JkVmFsaWRhdGlvbi5pc1ZhbGlkKCkpIHtcclxuICAgICAgICByZXR1cm4gKHsgdmFsaWRhdGlvbjogdGhpcy5wYXNzd29yZFZhbGlkYXRpb259KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH19KTtcclxuXHJcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoZmlsdGVyKF8gPT4gdGhpcy5mb3JtLnZhbGlkICE9IHRoaXMubGFzdFBhc3N3b3JkVmFsaWRhdGlvblNlbnQpKS5zdWJzY3JpYmUoZm9ybSA9PiB7XHJcbiAgICAgIHRoaXMubGFzdFBhc3N3b3JkVmFsaWRhdGlvblNlbnQgPSB0aGlzLmZvcm0udmFsaWQ7XHJcbiAgICAgIGlmICh0aGlzLmZvcm0udmFsaWQpIHtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKGZvcm0ucGFzc3dvcmQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UoJycpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ3Bhc3N3b3JkJykuc2V0VmFsdWUodmFsdWUpO1xyXG4gICAgdGhpcy5mb3JtLmdldCgnY29uZmlybWF0aW9uJykuc2V0VmFsdWUodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmZvcm0uZ2V0KCdwYXNzd29yZCcpLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnY29uZmlybWF0aW9uJykuZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb3JtLmdldCgncGFzc3dvcmQnKS5lbmFibGUoKTtcclxuICAgICAgdGhpcy5mb3JtLmdldCgnY29uZmlybWF0aW9uJykuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DaGFuZ2UgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB2YWx1ZTtcclxuXHJcbiAgcHVibGljIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHsvKiBUaGlzIG1ldGhvZCBuZWVkcyB0byBiZSBlbXB0eSAqLyB9O1xyXG5cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBbY2xhc3MuZnVsbC13aWR0aC1mb3JtXT1cImRpcmVjdGlvbiA9PT0gJ2NvbHVtbidcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwYXNzd29yZHNcIj5cclxuICAgICAgICA8YXBwLXBhc3N3b3JkLWlucHV0IGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiIGxhYmVsPVwicGFzc3dvcmRcIiBbdHJhbnNsYXRlTGFiZWxdPVwidHJ1ZVwiIFtyZXF1aXJlZF09XCJ0cnVlXCIgZm9ybUNvbnRyb2xOYW1lPVwicGFzc3dvcmRcIiAvPlxyXG4gICAgICAgIDxhcHAtcGFzc3dvcmQtaW5wdXQgYXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCIgbGFiZWw9XCJwYXNzd29yZENvbmZpcm1hdGlvblwiIFt0cmFuc2xhdGVMYWJlbF09XCJ0cnVlXCIgW3JlcXVpcmVkXT1cInRydWVcIiBmb3JtQ29udHJvbE5hbWU9XCJjb25maXJtYXRpb25cIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZXJyb3JzXCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbjwvZm9ybT5cclxuPGFwcC1wYXNzd29yZC1jcml0ZXJpYS12aWV3ZXIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3Bhc3N3b3JkVmFsaWRhdGlvbl09XCJwYXNzd29yZFZhbGlkYXRpb25cIj48L2FwcC1wYXNzd29yZC1jcml0ZXJpYS12aWV3ZXI+Il19
@@ -0,0 +1,19 @@
1
+ import { PasswordValidation } from '../models/password-validation';
2
+ export class PasswordValidator {
3
+ static { this.passwordMinLength = 13; }
4
+ static validate(formGroup) {
5
+ const password = formGroup.controls['password'].value;
6
+ const confirmedPassword = formGroup.controls['confirmation'].value;
7
+ return new PasswordValidation(password.length >= this.passwordMinLength, this.hasNumeric(password), this.hasLowerCaseAndUpperCase(password), this.hasSpecialCharacter(password), password && password === confirmedPassword);
8
+ }
9
+ static hasLowerCaseAndUpperCase(password) {
10
+ return /^(?=.*[a-z])(?=.*[A-Z])/.test(password);
11
+ }
12
+ static hasNumeric(password) {
13
+ return /(?=.*\d)/.test(password);
14
+ }
15
+ static hasSpecialCharacter(password) {
16
+ return new RegExp(/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/).test(password);
17
+ }
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2F1Y2EtbWF0ZXJpYWwvc3JjL2xpYi9pbnB1dHMvcGFzc3dvcmQvdmFsaWRhdG9ycy9wYXNzd29yZC12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFbkUsTUFBTSxPQUFPLGlCQUFpQjthQUNILHNCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUV2QyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQTJCO1FBQzlDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3RELE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDbkUsT0FBTyxJQUFJLGtCQUFrQixDQUN6QixRQUFRLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFDekIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxFQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEVBQ2xDLFFBQVEsSUFBSSxRQUFRLEtBQUssaUJBQWlCLENBQzdDLENBQUM7SUFDTixDQUFDO0lBRU0sTUFBTSxDQUFDLHdCQUF3QixDQUFDLFFBQWdCO1FBQ25ELE9BQU8seUJBQXlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQWE7UUFDbEMsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBYTtRQUMzQyxPQUFPLElBQUksTUFBTSxDQUFDLHVDQUF1QyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUGFzc3dvcmRWYWxpZGF0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL3Bhc3N3b3JkLXZhbGlkYXRpb24nO1xuXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRWYWxpZGF0b3Ige1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgcGFzc3dvcmRNaW5MZW5ndGggPSAxMztcblxuICAgIHB1YmxpYyBzdGF0aWMgdmFsaWRhdGUoZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwKTogUGFzc3dvcmRWYWxpZGF0aW9uIHtcbiAgICAgICAgY29uc3QgcGFzc3dvcmQgPSBmb3JtR3JvdXAuY29udHJvbHNbJ3Bhc3N3b3JkJ10udmFsdWU7XG4gICAgICAgIGNvbnN0IGNvbmZpcm1lZFBhc3N3b3JkID0gZm9ybUdyb3VwLmNvbnRyb2xzWydjb25maXJtYXRpb24nXS52YWx1ZTtcbiAgICAgICAgcmV0dXJuIG5ldyBQYXNzd29yZFZhbGlkYXRpb24oXG4gICAgICAgICAgICBwYXNzd29yZC5sZW5ndGggPj0gdGhpcy5wYXNzd29yZE1pbkxlbmd0aCxcbiAgICAgICAgICAgIHRoaXMuaGFzTnVtZXJpYyhwYXNzd29yZCksXG4gICAgICAgICAgICB0aGlzLmhhc0xvd2VyQ2FzZUFuZFVwcGVyQ2FzZShwYXNzd29yZCksXG4gICAgICAgICAgICB0aGlzLmhhc1NwZWNpYWxDaGFyYWN0ZXIocGFzc3dvcmQpLFxuICAgICAgICAgICAgcGFzc3dvcmQgJiYgcGFzc3dvcmQgPT09IGNvbmZpcm1lZFBhc3N3b3JkLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaGFzTG93ZXJDYXNlQW5kVXBwZXJDYXNlKHBhc3N3b3JkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIC9eKD89LipbYS16XSkoPz0uKltBLVpdKS8udGVzdChwYXNzd29yZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBoYXNOdW1lcmljKHBhc3N3b3JkOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIC8oPz0uKlxcZCkvLnRlc3QocGFzc3dvcmQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaGFzU3BlY2lhbENoYXJhY3RlcihwYXNzd29yZDogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKC9bIUAjJCVeJiooKV8rXFwtPVxcW1xcXXt9Oyc6XCJcXFxcfCwuPD5cXC8/XS8pLnRlc3QocGFzc3dvcmQpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,157 @@
1
+ import { NgForOf, AsyncPipe } from '@angular/common';
2
+ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
3
+ import { ReactiveFormsModule, FormsModule, FormControl } from '@angular/forms';
4
+ import { MatError, MatFormFieldModule } from '@angular/material/form-field';
5
+ import { MatSelectModule } from '@angular/material/select';
6
+ import { TranslateModule } from '@ngx-translate/core';
7
+ import { NgxMatSelectSearchModule } from 'ngx-mat-select-search';
8
+ import { ReplaySubject, Subject, takeUntil } from 'rxjs';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/material/form-field";
11
+ import * as i2 from "@angular/material/select";
12
+ import * as i3 from "@angular/material/core";
13
+ import * as i4 from "@ngx-translate/core";
14
+ import * as i5 from "@angular/forms";
15
+ import * as i6 from "ngx-mat-select-search";
16
+ const _c0 = ["singleSelect"];
17
+ const _c1 = ["*"];
18
+ function SelectWithSearchComponent_mat_option_10_Template(rf, ctx) { if (rf & 1) {
19
+ i0.ɵɵelementStart(0, "mat-option", 4);
20
+ i0.ɵɵtext(1);
21
+ i0.ɵɵelementEnd();
22
+ } if (rf & 2) {
23
+ const option_r1 = ctx.$implicit;
24
+ i0.ɵɵproperty("value", option_r1.id);
25
+ i0.ɵɵadvance();
26
+ i0.ɵɵtextInterpolate1(" ", option_r1.name, " ");
27
+ } }
28
+ export class SelectWithSearchComponent {
29
+ constructor() {
30
+ this.selectFirstOptionByDefault = false;
31
+ this.optionFilterControl = new FormControl('');
32
+ this.filteredOptions = new ReplaySubject();
33
+ this.isDisabled = true;
34
+ this.valueChanged = new EventEmitter();
35
+ this._onDestroy = new Subject();
36
+ this.allOptions = [];
37
+ }
38
+ set options(newOptions) {
39
+ if (newOptions) {
40
+ this.allOptions = newOptions;
41
+ this.filteredOptions.next(newOptions.slice());
42
+ this.setInitialSelectedOption();
43
+ this.isDisabled = (this.options.length < 1);
44
+ }
45
+ else {
46
+ this.allOptions = [];
47
+ this.isDisabled = (this.options.length < 1);
48
+ }
49
+ }
50
+ get options() {
51
+ return this.allOptions;
52
+ }
53
+ set value(newValue) {
54
+ if (newValue !== this.selectedOptionId) {
55
+ this.selectedOptionId = newValue;
56
+ this.valueChanged.emit(this.value);
57
+ }
58
+ }
59
+ get value() {
60
+ return this.selectedOptionId;
61
+ }
62
+ ngOnInit() {
63
+ this.optionFilterControl.valueChanges
64
+ .pipe(takeUntil(this._onDestroy))
65
+ .subscribe(() => {
66
+ this.filterCities();
67
+ });
68
+ }
69
+ ngOnDestroy() {
70
+ this._onDestroy.next();
71
+ this._onDestroy.complete();
72
+ }
73
+ filterCities() {
74
+ if (!this.options) {
75
+ return;
76
+ }
77
+ let filter = this.optionFilterControl.value;
78
+ if (!filter) {
79
+ this.filteredOptions.next(this.options.slice());
80
+ return;
81
+ }
82
+ else {
83
+ filter = filter.toLowerCase();
84
+ }
85
+ this.filteredOptions.next(this.options
86
+ .filter(option => option.name.toLowerCase().indexOf(filter) > -1));
87
+ }
88
+ setInitialSelectedOption() {
89
+ if (this.value) {
90
+ const city = this.options.find((c) => c.id === this.value);
91
+ if (!city) {
92
+ this.selectFirstOption();
93
+ }
94
+ }
95
+ else if (this.options.length > 0 && this.selectFirstOptionByDefault) {
96
+ this.selectFirstOption();
97
+ }
98
+ }
99
+ selectFirstOption() {
100
+ this.value = this.options[0].id;
101
+ }
102
+ static { this.ɵfac = function SelectWithSearchComponent_Factory(t) { return new (t || SelectWithSearchComponent)(); }; }
103
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SelectWithSearchComponent, selectors: [["app-select-with-search"]], viewQuery: function SelectWithSearchComponent_Query(rf, ctx) { if (rf & 1) {
104
+ i0.ɵɵviewQuery(_c0, 7);
105
+ } if (rf & 2) {
106
+ let _t;
107
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.singleSelect = _t.first);
108
+ } }, inputs: { label: "label", selectFirstOptionByDefault: "selectFirstOptionByDefault", options: "options", value: "value" }, outputs: { valueChanged: "valueChanged" }, standalone: true, features: [i0.ɵɵStandaloneFeature], ngContentSelectors: _c1, decls: 12, vars: 15, consts: [["subscriptSizing", "dynamic", 1, "full-width-field", "header", "dense"], [3, "valueChange", "value", "disabled"], [3, "formControl", "placeholderLabel", "noEntriesFoundLabel"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"]], template: function SelectWithSearchComponent_Template(rf, ctx) { if (rf & 1) {
109
+ i0.ɵɵprojectionDef();
110
+ i0.ɵɵelementStart(0, "mat-form-field", 0);
111
+ i0.ɵɵprojection(1);
112
+ i0.ɵɵelementStart(2, "mat-label");
113
+ i0.ɵɵtext(3);
114
+ i0.ɵɵpipe(4, "translate");
115
+ i0.ɵɵelementEnd();
116
+ i0.ɵɵelementStart(5, "mat-select", 1);
117
+ i0.ɵɵtwoWayListener("valueChange", function SelectWithSearchComponent_Template_mat_select_valueChange_5_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.value, $event) || (ctx.value = $event); return $event; });
118
+ i0.ɵɵelementStart(6, "mat-option");
119
+ i0.ɵɵelement(7, "ngx-mat-select-search", 2);
120
+ i0.ɵɵpipe(8, "translate");
121
+ i0.ɵɵpipe(9, "translate");
122
+ i0.ɵɵelementEnd();
123
+ i0.ɵɵtemplate(10, SelectWithSearchComponent_mat_option_10_Template, 2, 2, "mat-option", 3);
124
+ i0.ɵɵpipe(11, "async");
125
+ i0.ɵɵelementEnd()();
126
+ } if (rf & 2) {
127
+ i0.ɵɵadvance(3);
128
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 7, ctx.label));
129
+ i0.ɵɵadvance(2);
130
+ i0.ɵɵtwoWayProperty("value", ctx.value);
131
+ i0.ɵɵproperty("disabled", ctx.isDisabled);
132
+ i0.ɵɵadvance(2);
133
+ i0.ɵɵproperty("formControl", ctx.optionFilterControl)("placeholderLabel", i0.ɵɵpipeBind1(8, 9, "search"))("noEntriesFoundLabel", i0.ɵɵpipeBind1(9, 11, "noResult"));
134
+ i0.ɵɵadvance(3);
135
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(11, 13, ctx.filteredOptions));
136
+ } }, dependencies: [NgForOf, AsyncPipe, MatSelectModule, i1.MatFormField, i1.MatLabel, i2.MatSelect, i3.MatOption, TranslateModule, i4.TranslatePipe, MatFormFieldModule, ReactiveFormsModule, i5.NgControlStatus, i5.FormControlDirective, FormsModule, NgxMatSelectSearchModule, i6.MatSelectSearchComponent] }); }
137
+ }
138
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SelectWithSearchComponent, [{
139
+ type: Component,
140
+ args: [{ selector: 'app-select-with-search', standalone: true, imports: [NgForOf, AsyncPipe, MatError, MatSelectModule, TranslateModule, MatFormFieldModule, ReactiveFormsModule, FormsModule, NgxMatSelectSearchModule], template: "<mat-form-field class=\"full-width-field header dense\" subscriptSizing=\"dynamic\">\r\n <ng-content></ng-content>\r\n <mat-label>{{ label | translate }}</mat-label>\r\n <mat-select [(value)]=\"value\" [disabled]=\"isDisabled\">\r\n <mat-option>\r\n <ngx-mat-select-search [formControl]=\"optionFilterControl\" [placeholderLabel]=\"'search' | translate\"\r\n [noEntriesFoundLabel]=\"'noResult' | translate\">\r\n </ngx-mat-select-search>\r\n </mat-option>\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-select>\r\n\r\n</mat-form-field>" }]
141
+ }], null, { label: [{
142
+ type: Input,
143
+ args: [{ required: true }]
144
+ }], selectFirstOptionByDefault: [{
145
+ type: Input
146
+ }], singleSelect: [{
147
+ type: ViewChild,
148
+ args: ['singleSelect', { static: true }]
149
+ }], valueChanged: [{
150
+ type: Output
151
+ }], options: [{
152
+ type: Input
153
+ }], value: [{
154
+ type: Input
155
+ }] }); })();
156
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SelectWithSearchComponent, { className: "SelectWithSearchComponent", filePath: "lib\\inputs\\select-with-search\\select-with-search.component.ts", lineNumber: 22 }); })();
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXdpdGgtc2VhcmNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhdWNhLW1hdGVyaWFsL3NyYy9saWIvaW5wdXRzL3NlbGVjdC13aXRoLXNlYXJjaC9zZWxlY3Qtd2l0aC1zZWFyY2guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2F1Y2EtbWF0ZXJpYWwvc3JjL2xpYi9pbnB1dHMvc2VsZWN0LXdpdGgtc2VhcmNoL3NlbGVjdC13aXRoLXNlYXJjaC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RSxPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7SUNFakQscUNBQStFO0lBQzNFLFlBQ0o7SUFBQSxpQkFBYTs7O0lBRjhDLG9DQUFtQjtJQUMxRSxjQUNKO0lBREksK0NBQ0o7O0FEVVIsTUFBTSxPQUFPLHlCQUF5QjtJQVB0QztRQVNrQiwrQkFBMEIsR0FB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RUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixDQUFDO2dCQUt6SCxLQUFLO2tCQUFwQyxLQUFLO21CQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztZQUNQLDBCQUEwQjtrQkFBekMsS0FBSztZQUk4QyxZQUFZO2tCQUEvRCxTQUFTO21CQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFJcEMsWUFBWTtrQkFEbEIsTUFBTTtZQVNJLE9BQU87a0JBRGpCLEtBQUs7WUFpQkssS0FBSztrQkFEZixLQUFLOztrRkFqQ0sseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdGb3JPZiwgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRFcnJvciwgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdFNlbGVjdCwgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IE5neE1hdFNlbGVjdFNlYXJjaE1vZHVsZSB9IGZyb20gJ25neC1tYXQtc2VsZWN0LXNlYXJjaCc7XHJcbmltcG9ydCB7IFJlcGxheVN1YmplY3QsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPcHRpb24ge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zZWxlY3Qtd2l0aC1zZWFyY2gnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW05nRm9yT2YsIEFzeW5jUGlwZSwgTWF0RXJyb3IsIE1hdFNlbGVjdE1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlLCBOZ3hNYXRTZWxlY3RTZWFyY2hNb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3Qtd2l0aC1zZWFyY2guY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9zZWxlY3Qtd2l0aC1zZWFyY2guY29tcG9uZW50LnNjc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZWxlY3RXaXRoU2VhcmNoQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCh7cmVxdWlyZWQ6IHRydWV9KSBwdWJsaWMgbGFiZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgc2VsZWN0Rmlyc3RPcHRpb25CeURlZmF1bHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIG9wdGlvbkZpbHRlckNvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZz4gPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJyk7XHJcbiAgcHVibGljIGZpbHRlcmVkT3B0aW9uczogUmVwbGF5U3ViamVjdDxPcHRpb25bXT4gPSBuZXcgUmVwbGF5U3ViamVjdDxPcHRpb25bXT4oKTtcclxuICBAVmlld0NoaWxkKCdzaW5nbGVTZWxlY3QnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgc2luZ2xlU2VsZWN0OiBNYXRTZWxlY3Q7XHJcbiAgcHVibGljIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwcm90ZWN0ZWQgX29uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIHByaXZhdGUgc2VsZWN0ZWRPcHRpb25JZDogc3RyaW5nO1xyXG4gIHByaXZhdGUgYWxsT3B0aW9uczogT3B0aW9uW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IG9wdGlvbnMobmV3T3B0aW9uczogT3B0aW9uW10pIHtcclxuICAgIGlmIChuZXdPcHRpb25zKSB7XHJcbiAgICAgIHRoaXMuYWxsT3B0aW9ucyA9IG5ld09wdGlvbnM7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zLm5leHQobmV3T3B0aW9ucy5zbGljZSgpKTtcclxuICAgICAgdGhpcy5zZXRJbml0aWFsU2VsZWN0ZWRPcHRpb24oKTtcclxuICAgICAgdGhpcy5pc0Rpc2FibGVkID0gKHRoaXMub3B0aW9ucy5sZW5ndGggPCAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYWxsT3B0aW9ucyA9IFtdO1xyXG4gICAgICB0aGlzLmlzRGlzYWJsZWQgPSAodGhpcy5vcHRpb25zLmxlbmd0aCA8IDEpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgZ2V0IG9wdGlvbnMoKTogT3B0aW9uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuYWxsT3B0aW9ucztcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCB2YWx1ZShuZXdWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuc2VsZWN0ZWRPcHRpb25JZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9uSWQgPSBuZXdWYWx1ZTtcclxuICAgICAgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdCh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRPcHRpb25JZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMub3B0aW9uRmlsdGVyQ29udHJvbC52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyQ2l0aWVzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fb25EZXN0cm95Lm5leHQoKTtcclxuICAgIHRoaXMuX29uRGVzdHJveS5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJDaXRpZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGZpbHRlciA9IHRoaXMub3B0aW9uRmlsdGVyQ29udHJvbC52YWx1ZTtcclxuICAgIGlmICghZmlsdGVyKSB7XHJcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zLm5leHQodGhpcy5vcHRpb25zLnNsaWNlKCkpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmaWx0ZXIgPSBmaWx0ZXIudG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zLm5leHQodGhpcy5vcHRpb25zXHJcbiAgICAgIC5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXIpID4gLTEpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SW5pdGlhbFNlbGVjdGVkT3B0aW9uKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudmFsdWUpIHtcclxuICAgICAgY29uc3QgY2l0eSA9IHRoaXMub3B0aW9ucy5maW5kKChjOiBPcHRpb24pID0+IGMuaWQgPT09IHRoaXMudmFsdWUpO1xyXG4gICAgICBpZiAoIWNpdHkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdEZpcnN0T3B0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLmxlbmd0aCA+IDAgJiYgdGhpcy5zZWxlY3RGaXJzdE9wdGlvbkJ5RGVmYXVsdCkge1xyXG4gICAgICB0aGlzLnNlbGVjdEZpcnN0T3B0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlbGVjdEZpcnN0T3B0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHRoaXMub3B0aW9uc1swXS5pZDtcclxuICB9XHJcbn1cclxuIiwiPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZnVsbC13aWR0aC1maWVsZCBoZWFkZXIgZGVuc2VcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8bWF0LWxhYmVsPnt7IGxhYmVsIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+XHJcbiAgICA8bWF0LXNlbGVjdCBbKHZhbHVlKV09XCJ2YWx1ZVwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDxuZ3gtbWF0LXNlbGVjdC1zZWFyY2ggW2Zvcm1Db250cm9sXT1cIm9wdGlvbkZpbHRlckNvbnRyb2xcIiBbcGxhY2Vob2xkZXJMYWJlbF09XCInc2VhcmNoJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbbm9FbnRyaWVzRm91bmRMYWJlbF09XCInbm9SZXN1bHQnIHwgdHJhbnNsYXRlXCI+XHJcbiAgICAgICAgICAgIDwvbmd4LW1hdC1zZWxlY3Qtc2VhcmNoPlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlcmVkT3B0aW9ucyB8IGFzeW5jXCIgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPlxyXG4gICAgICAgICAgICB7e29wdGlvbi5uYW1lfX1cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICA8L21hdC1zZWxlY3Q+XHJcblxyXG48L21hdC1mb3JtLWZpZWxkPiJdfQ==
@@ -0,0 +1,75 @@
1
+ import { AUTO_STYLE, animate, state, style, transition, trigger } from '@angular/animations';
2
+ import { ChangeDetectionStrategy, Component, input, model } from '@angular/core';
3
+ import { MatIcon } from '@angular/material/icon';
4
+ import * as i0 from "@angular/core";
5
+ const _c0 = ["*"];
6
+ const DEFAULT_DURATION = 500;
7
+ export class ExpandablePanelComponent {
8
+ constructor() {
9
+ this.isCollapsed = model(false);
10
+ this.title = input('');
11
+ this.subTitle = input('');
12
+ }
13
+ changeState() {
14
+ this.isCollapsed.update(value => !value);
15
+ }
16
+ static { this.ɵfac = function ExpandablePanelComponent_Factory(t) { return new (t || ExpandablePanelComponent)(); }; }
17
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ExpandablePanelComponent, selectors: [["app-expandable-panel"]], inputs: { isCollapsed: [1, "isCollapsed"], title: [1, "title"], subTitle: [1, "subTitle"] }, outputs: { isCollapsed: "isCollapsedChange" }, standalone: true, features: [i0.ɵɵStandaloneFeature], ngContentSelectors: _c0, decls: 11, vars: 4, consts: [[1, "expansion-button", 3, "click"], [1, "primary"], [1, "body2"], [1, "expansion-panel"]], template: function ExpandablePanelComponent_Template(rf, ctx) { if (rf & 1) {
18
+ i0.ɵɵprojectionDef();
19
+ i0.ɵɵelementStart(0, "section")(1, "div", 0);
20
+ i0.ɵɵlistener("click", function ExpandablePanelComponent_Template_div_click_1_listener() { return ctx.changeState(); });
21
+ i0.ɵɵelementStart(2, "mat-icon");
22
+ i0.ɵɵtext(3, "expand_less");
23
+ i0.ɵɵelementEnd();
24
+ i0.ɵɵelementStart(4, "div")(5, "div", 1);
25
+ i0.ɵɵtext(6);
26
+ i0.ɵɵelementEnd();
27
+ i0.ɵɵelementStart(7, "div", 2);
28
+ i0.ɵɵtext(8);
29
+ i0.ɵɵelementEnd()()();
30
+ i0.ɵɵelementStart(9, "div", 3);
31
+ i0.ɵɵprojection(10);
32
+ i0.ɵɵelementEnd()();
33
+ } if (rf & 2) {
34
+ i0.ɵɵadvance(2);
35
+ i0.ɵɵproperty("@arrow-collapse", ctx.isCollapsed());
36
+ i0.ɵɵadvance(4);
37
+ i0.ɵɵtextInterpolate(ctx.title());
38
+ i0.ɵɵadvance(2);
39
+ i0.ɵɵtextInterpolate(ctx.subTitle());
40
+ i0.ɵɵadvance();
41
+ i0.ɵɵproperty("@collapse", ctx.isCollapsed());
42
+ } }, dependencies: [MatIcon], styles: ["section[_ngcontent-%COMP%]{display:flex;padding:16px 0}.primary[_ngcontent-%COMP%]{font-weight:600}.body2[_ngcontent-%COMP%]{width:fit-content;white-space:nowrap}.expansion-button[_ngcontent-%COMP%]{display:flex;gap:4px;width:240px;padding:0 16px 8px 0;cursor:pointer;height:fit-content}.expansion-panel[_ngcontent-%COMP%]{overflow:hidden;flex:1}"], data: { animation: [
43
+ trigger('collapse', [
44
+ state('false', style({ height: AUTO_STYLE, opacity: 1, visibility: AUTO_STYLE })),
45
+ state('true', style({ height: '0', opacity: 0, visibility: 'hidden' })),
46
+ transition('false => true', animate(DEFAULT_DURATION + 'ms ease-in')),
47
+ transition('true => false', animate(DEFAULT_DURATION + 'ms ease-out'))
48
+ ]),
49
+ trigger('arrow-collapse', [
50
+ state('false', style({ transform: 'rotate(0deg)' })),
51
+ state('true', style({ transform: 'rotate(180deg)' })),
52
+ transition('false => true', animate(DEFAULT_DURATION + 'ms ease-in')),
53
+ transition('true => false', animate(DEFAULT_DURATION + 'ms ease-out'))
54
+ ])
55
+ ] }, changeDetection: 0 }); }
56
+ }
57
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ExpandablePanelComponent, [{
58
+ type: Component,
59
+ args: [{ selector: 'app-expandable-panel', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatIcon], animations: [
60
+ trigger('collapse', [
61
+ state('false', style({ height: AUTO_STYLE, opacity: 1, visibility: AUTO_STYLE })),
62
+ state('true', style({ height: '0', opacity: 0, visibility: 'hidden' })),
63
+ transition('false => true', animate(DEFAULT_DURATION + 'ms ease-in')),
64
+ transition('true => false', animate(DEFAULT_DURATION + 'ms ease-out'))
65
+ ]),
66
+ trigger('arrow-collapse', [
67
+ state('false', style({ transform: 'rotate(0deg)' })),
68
+ state('true', style({ transform: 'rotate(180deg)' })),
69
+ transition('false => true', animate(DEFAULT_DURATION + 'ms ease-in')),
70
+ transition('true => false', animate(DEFAULT_DURATION + 'ms ease-out'))
71
+ ])
72
+ ], template: "<section>\r\n <div class=\"expansion-button\" (click)=\"changeState()\">\r\n <mat-icon [@arrow-collapse]=\"isCollapsed()\">expand_less</mat-icon>\r\n <div>\r\n <div class=\"primary\">{{title()}}</div>\r\n <div class=\"body2\">{{subTitle()}}</div>\r\n </div>\r\n </div>\r\n <div class=\"expansion-panel\" [@collapse]=\"isCollapsed()\">\r\n <ng-content></ng-content>\r\n </div>\r\n</section>", styles: ["section{display:flex;padding:16px 0}.primary{font-weight:600}.body2{width:fit-content;white-space:nowrap}.expansion-button{display:flex;gap:4px;width:240px;padding:0 16px 8px 0;cursor:pointer;height:fit-content}.expansion-panel{overflow:hidden;flex:1}\n"] }]
73
+ }], null, null); })();
74
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ExpandablePanelComponent, { className: "ExpandablePanelComponent", filePath: "lib\\layout\\expandable-panel\\expandable-panel.component.ts", lineNumber: 29 }); })();
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5kYWJsZS1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYXVjYS1tYXRlcmlhbC9zcmMvbGliL2xheW91dC9leHBhbmRhYmxlLXBhbmVsL2V4cGFuZGFibGUtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2F1Y2EtbWF0ZXJpYWwvc3JjL2xpYi9sYXlvdXQvZXhwYW5kYWJsZS1wYW5lbC9leHBhbmRhYmxlLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQTRCLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFFakQsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7QUF3QjdCLE1BQU0sT0FBTyx3QkFBd0I7SUF0QnJDO1FBdUJTLGdCQUFXLEdBQXlCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxVQUFLLEdBQXdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxhQUFRLEdBQXdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztLQUtsRDtJQUhRLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7eUZBUFUsd0JBQXdCO29FQUF4Qix3QkFBd0I7O1lDM0JqQyxBQURKLCtCQUFTLGFBQ2lEO1lBQXhCLGtHQUFTLGlCQUFhLElBQUM7WUFD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QztpQkFDSDs7a0ZBRVUsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVVUT19TVFlMRSwgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0U2lnbmFsLCBNb2RlbFNpZ25hbCwgaW5wdXQsIG1vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuXHJcbmNvbnN0IERFRkFVTFRfRFVSQVRJT04gPSA1MDA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1leHBhbmRhYmxlLXBhbmVsJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGltcG9ydHM6IFtNYXRJY29uXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZXhwYW5kYWJsZS1wYW5lbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2V4cGFuZGFibGUtcGFuZWwuY29tcG9uZW50LnNjc3MnLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2NvbGxhcHNlJywgW1xyXG4gICAgICBzdGF0ZSgnZmFsc2UnLCBzdHlsZSh7IGhlaWdodDogQVVUT19TVFlMRSwgb3BhY2l0eTogMSwgdmlzaWJpbGl0eTogQVVUT19TVFlMRSB9KSksXHJcbiAgICAgIHN0YXRlKCd0cnVlJywgc3R5bGUoeyBoZWlnaHQ6ICcwJywgb3BhY2l0eTogMCwgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdmYWxzZSA9PiB0cnVlJywgYW5pbWF0ZShERUZBVUxUX0RVUkFUSU9OICsgJ21zIGVhc2UtaW4nKSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ3RydWUgPT4gZmFsc2UnLCBhbmltYXRlKERFRkFVTFRfRFVSQVRJT04gKyAnbXMgZWFzZS1vdXQnKSlcclxuICAgIF0pLFxyXG4gICAgdHJpZ2dlcignYXJyb3ctY29sbGFwc2UnLCBbXHJcbiAgICAgIHN0YXRlKCdmYWxzZScsIHN0eWxlKHsgdHJhbnNmb3JtOiAncm90YXRlKDBkZWcpJyB9KSksXHJcbiAgICAgIHN0YXRlKCd0cnVlJywgc3R5bGUoeyB0cmFuc2Zvcm06ICdyb3RhdGUoMTgwZGVnKScgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdmYWxzZSA9PiB0cnVlJywgYW5pbWF0ZShERUZBVUxUX0RVUkFUSU9OICsgJ21zIGVhc2UtaW4nKSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ3RydWUgPT4gZmFsc2UnLCBhbmltYXRlKERFRkFVTFRfRFVSQVRJT04gKyAnbXMgZWFzZS1vdXQnKSlcclxuICAgIF0pXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXhwYW5kYWJsZVBhbmVsQ29tcG9uZW50IHtcclxuICBwdWJsaWMgaXNDb2xsYXBzZWQ6IE1vZGVsU2lnbmFsPGJvb2xlYW4+ID0gbW9kZWwoZmFsc2UpO1xyXG4gIHB1YmxpYyB0aXRsZTogSW5wdXRTaWduYWw8c3RyaW5nPiA9IGlucHV0KCcnKTtcclxuICBwdWJsaWMgc3ViVGl0bGU6IElucHV0U2lnbmFsPHN0cmluZz4gPSBpbnB1dCgnJyk7XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VTdGF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNDb2xsYXBzZWQudXBkYXRlKHZhbHVlID0+ICF2YWx1ZSk7XHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uPlxyXG4gICAgPGRpdiBjbGFzcz1cImV4cGFuc2lvbi1idXR0b25cIiAoY2xpY2spPVwiY2hhbmdlU3RhdGUoKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbiBbQGFycm93LWNvbGxhcHNlXT1cImlzQ29sbGFwc2VkKClcIj5leHBhbmRfbGVzczwvbWF0LWljb24+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaW1hcnlcIj57e3RpdGxlKCl9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9keTJcIj57e3N1YlRpdGxlKCl9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZXhwYW5zaW9uLXBhbmVsXCIgW0Bjb2xsYXBzZV09XCJpc0NvbGxhcHNlZCgpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbjwvc2VjdGlvbj4iXX0=
@@ -0,0 +1,148 @@
1
+ import { Component, HostBinding, inject, input, signal } from '@angular/core';
2
+ import { MatIconModule } from '@angular/material/icon';
3
+ import { Router } from '@angular/router';
4
+ import { TranslateModule } from '@ngx-translate/core';
5
+ import { MenuExpandablePanelItemComponent } from '../menu-expandable-panel-item/menu-expandable-panel-item.component';
6
+ import { NgClass } from '@angular/common';
7
+ import { trigger, state, style, transition, animate } from '@angular/animations';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@angular/material/icon";
10
+ import * as i2 from "@ngx-translate/core";
11
+ const _forTrack0 = ($index, $item) => $item.title;
12
+ function MenuExpandablePanelComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
13
+ i0.ɵɵelementStart(0, "div", 2);
14
+ i0.ɵɵtext(1);
15
+ i0.ɵɵpipe(2, "translate");
16
+ i0.ɵɵelementEnd();
17
+ } if (rf & 2) {
18
+ const ctx_r0 = i0.ɵɵnextContext();
19
+ i0.ɵɵadvance();
20
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r0.subTitle()));
21
+ } }
22
+ function MenuExpandablePanelComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵelementStart(0, "mat-icon");
24
+ i0.ɵɵtext(1, "arrow_forward_ios");
25
+ i0.ɵɵelementEnd();
26
+ } if (rf & 2) {
27
+ const ctx_r0 = i0.ɵɵnextContext();
28
+ i0.ɵɵproperty("@arrow-collapse", ctx_r0.opened());
29
+ } }
30
+ function MenuExpandablePanelComponent_Conditional_9_For_1_Template(rf, ctx) { if (rf & 1) {
31
+ i0.ɵɵelement(0, "app-menu-expandable-panel-item", 3);
32
+ } if (rf & 2) {
33
+ const item_r2 = ctx.$implicit;
34
+ i0.ɵɵproperty("icon", item_r2.icon)("title", item_r2.title)("route", item_r2.route)("isSubItem", true)("action", item_r2.action);
35
+ } }
36
+ function MenuExpandablePanelComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
37
+ i0.ɵɵrepeaterCreate(0, MenuExpandablePanelComponent_Conditional_9_For_1_Template, 1, 5, "app-menu-expandable-panel-item", 3, _forTrack0);
38
+ } if (rf & 2) {
39
+ const ctx_r0 = i0.ɵɵnextContext();
40
+ i0.ɵɵrepeater(ctx_r0.items());
41
+ } }
42
+ const DEFAULT_DURATION = 200;
43
+ export class MenuExpandablePanelComponent {
44
+ constructor() {
45
+ this.title = input();
46
+ this.isSubItem = input(false);
47
+ this.subTitle = input();
48
+ this.menuIcon = input();
49
+ this.showExpansionIcon = input(true);
50
+ this.addTopBorderRadius = input(false);
51
+ this.bottomBorder = input(false);
52
+ this.addBottomBorderRadius = input(false);
53
+ this.route = input([]);
54
+ this.items = input([]);
55
+ this.opened = signal(false);
56
+ this.router = inject(Router);
57
+ }
58
+ get topLeftRadius() {
59
+ return this.addTopBorderRadius() ? '12px' : '0px';
60
+ }
61
+ get topRightRadius() {
62
+ return this.addTopBorderRadius() ? '12px' : '0px';
63
+ }
64
+ get bottomLeftRadius() {
65
+ return this.addBottomBorderRadius() ? '12px' : '0px';
66
+ }
67
+ get bottomRightRadius() {
68
+ return this.addBottomBorderRadius() ? '12px' : '0px';
69
+ }
70
+ get bottomBorderClass() {
71
+ return this.bottomBorder();
72
+ }
73
+ handleClick() {
74
+ if (this.route().length > 0 && this.items().length === 0) {
75
+ this.router.navigate(this.route());
76
+ }
77
+ else {
78
+ this.opened.set(!this.opened());
79
+ }
80
+ }
81
+ static { this.ɵfac = function MenuExpandablePanelComponent_Factory(t) { return new (t || MenuExpandablePanelComponent)(); }; }
82
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuExpandablePanelComponent, selectors: [["app-menu-expandable-panel"]], hostVars: 10, hostBindings: function MenuExpandablePanelComponent_HostBindings(rf, ctx) { if (rf & 2) {
83
+ i0.ɵɵstyleProp("border-top-left-radius", ctx.topLeftRadius)("border-top-right-radius", ctx.topRightRadius)("border-bottom-left-radius", ctx.bottomLeftRadius)("border-bottom-right-radius", ctx.bottomRightRadius);
84
+ i0.ɵɵclassProp("bottom-border", ctx.bottomBorderClass);
85
+ } }, inputs: { title: [1, "title"], isSubItem: [1, "isSubItem"], subTitle: [1, "subTitle"], menuIcon: [1, "menuIcon"], showExpansionIcon: [1, "showExpansionIcon"], addTopBorderRadius: [1, "addTopBorderRadius"], bottomBorder: [1, "bottomBorder"], addBottomBorderRadius: [1, "addBottomBorderRadius"], route: [1, "route"], items: [1, "items"] }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 10, vars: 8, consts: [[3, "click", "ngClass"], [1, "subtitle1"], [1, "body2"], [3, "icon", "title", "route", "isSubItem", "action"]], template: function MenuExpandablePanelComponent_Template(rf, ctx) { if (rf & 1) {
86
+ i0.ɵɵelementStart(0, "section", 0);
87
+ i0.ɵɵlistener("click", function MenuExpandablePanelComponent_Template_section_click_0_listener() { return ctx.handleClick(); });
88
+ i0.ɵɵelementStart(1, "mat-icon");
89
+ i0.ɵɵtext(2);
90
+ i0.ɵɵelementEnd();
91
+ i0.ɵɵelementStart(3, "div")(4, "div", 1);
92
+ i0.ɵɵtext(5);
93
+ i0.ɵɵpipe(6, "translate");
94
+ i0.ɵɵelementEnd();
95
+ i0.ɵɵtemplate(7, MenuExpandablePanelComponent_Conditional_7_Template, 3, 3, "div", 2);
96
+ i0.ɵɵelementEnd();
97
+ i0.ɵɵtemplate(8, MenuExpandablePanelComponent_Conditional_8_Template, 2, 1, "mat-icon");
98
+ i0.ɵɵelementEnd();
99
+ i0.ɵɵtemplate(9, MenuExpandablePanelComponent_Conditional_9_Template, 2, 0);
100
+ } if (rf & 2) {
101
+ i0.ɵɵproperty("ngClass", ctx.opened() ? "bottom-padding" : "");
102
+ i0.ɵɵadvance(2);
103
+ i0.ɵɵtextInterpolate(ctx.menuIcon());
104
+ i0.ɵɵadvance(3);
105
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 6, ctx.title()));
106
+ i0.ɵɵadvance(2);
107
+ i0.ɵɵconditional(ctx.subTitle() ? 7 : -1);
108
+ i0.ɵɵadvance();
109
+ i0.ɵɵconditional(ctx.showExpansionIcon() ? 8 : -1);
110
+ i0.ɵɵadvance();
111
+ i0.ɵɵconditional(ctx.opened() ? 9 : -1);
112
+ } }, dependencies: [MatIconModule, i1.MatIcon, TranslateModule, i2.TranslatePipe, MenuExpandablePanelItemComponent, NgClass], styles: ["[_nghost-%COMP%]{padding:10px 12px;background-color:#fff;cursor:pointer;display:block}section[_ngcontent-%COMP%]{display:flex;gap:16px;align-items:center}section.bottom-padding[_ngcontent-%COMP%]{padding-bottom:10px}div[_ngcontent-%COMP%]{flex:1}"], data: { animation: [
113
+ trigger('arrow-collapse', [
114
+ state('false', style({ transform: 'rotate(0deg)' })),
115
+ state('true', style({ transform: 'rotate(-90deg)' })),
116
+ transition('false => true', animate(DEFAULT_DURATION + 'ms ease-in-out')),
117
+ transition('true => false', animate(DEFAULT_DURATION + 'ms ease-in-out'))
118
+ ])
119
+ ] } }); }
120
+ }
121
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MenuExpandablePanelComponent, [{
122
+ type: Component,
123
+ args: [{ selector: 'app-menu-expandable-panel', standalone: true, imports: [MatIconModule, TranslateModule, MenuExpandablePanelItemComponent, NgClass], animations: [
124
+ trigger('arrow-collapse', [
125
+ state('false', style({ transform: 'rotate(0deg)' })),
126
+ state('true', style({ transform: 'rotate(-90deg)' })),
127
+ transition('false => true', animate(DEFAULT_DURATION + 'ms ease-in-out')),
128
+ transition('true => false', animate(DEFAULT_DURATION + 'ms ease-in-out'))
129
+ ])
130
+ ], template: "<section [ngClass]=\"opened() ? 'bottom-padding' : ''\" (click)=\"handleClick()\">\r\n <mat-icon>{{menuIcon()}}</mat-icon>\r\n <div>\r\n <div class=\"subtitle1\">{{title() | translate}}</div>\r\n @if(subTitle()) {<div class=\"body2\">{{subTitle() | translate}}</div>}\r\n </div>\r\n @if (showExpansionIcon()) {<mat-icon [@arrow-collapse]=\"opened()\">arrow_forward_ios</mat-icon>}\r\n</section>\r\n@if(opened()) {\r\n @for (item of items(); track item.title) {\r\n <app-menu-expandable-panel-item [icon]=\"item.icon\" [title]=\"item.title\" [route]=\"item.route\" [isSubItem]=\"true\" [action]=\"item.action\" />\r\n }\r\n}", styles: [":host{padding:10px 12px;background-color:#fff;cursor:pointer;display:block}section{display:flex;gap:16px;align-items:center}section.bottom-padding{padding-bottom:10px}div{flex:1}\n"] }]
131
+ }], null, { topLeftRadius: [{
132
+ type: HostBinding,
133
+ args: ['style.border-top-left-radius']
134
+ }], topRightRadius: [{
135
+ type: HostBinding,
136
+ args: ['style.border-top-right-radius']
137
+ }], bottomLeftRadius: [{
138
+ type: HostBinding,
139
+ args: ['style.border-bottom-left-radius']
140
+ }], bottomRightRadius: [{
141
+ type: HostBinding,
142
+ args: ['style.border-bottom-right-radius']
143
+ }], bottomBorderClass: [{
144
+ type: HostBinding,
145
+ args: ['class.bottom-border']
146
+ }] }); })();
147
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MenuExpandablePanelComponent, { className: "MenuExpandablePanelComponent", filePath: "lib\\layout\\menu-expandable-panel\\menu-expandable-panel.component.ts", lineNumber: 26 }); })();
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1leHBhbmRhYmxlLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhdWNhLW1hdGVyaWFsL3NyYy9saWIvbGF5b3V0L21lbnUtZXhwYW5kYWJsZS1wYW5lbC9tZW51LWV4cGFuZGFibGUtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2F1Y2EtbWF0ZXJpYWwvc3JjL2xpYi9sYXlvdXQvbWVudS1leHBhbmRhYmxlLXBhbmVsL21lbnUtZXhwYW5kYWJsZS1wYW5lbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFlLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDdEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7OztJQ0Z4RCw4QkFBbUI7SUFBQSxZQUEwQjs7SUFBQSxpQkFBTTs7O0lBQWhDLGNBQTBCO0lBQTFCLDZEQUEwQjs7O0lBRXZDLGdDQUF1QztJQUFBLGlDQUFpQjtJQUFBLGlCQUFXOzs7SUFBekQsaURBQTRCOzs7SUFJN0Qsb0RBQXlJOzs7SUFBekIsQUFBbkIsQUFBckIsQUFBckIsQUFBbkIsbUNBQWtCLHdC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aUI7a0JBQTVFLFdBQVc7bUJBQUMsa0NBQWtDO1lBR0EsaUJBQWlCO2tCQUEvRCxXQUFXO21CQUFDLHFCQUFxQjs7a0ZBNUJ2Qiw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBpbmplY3QsIGlucHV0LCBJbnB1dFNpZ25hbCwgc2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBNZW51RXhwYW5kYWJsZVBhbmVsSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL21lbnUtZXhwYW5kYWJsZS1wYW5lbC1pdGVtL21lbnUtZXhwYW5kYWJsZS1wYW5lbC1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyB0cmlnZ2VyLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIGFuaW1hdGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuXHJcbmNvbnN0IERFRkFVTFRfRFVSQVRJT04gPSAyMDA7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1tZW51LWV4cGFuZGFibGUtcGFuZWwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW01hdEljb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgTWVudUV4cGFuZGFibGVQYW5lbEl0ZW1Db21wb25lbnQsIE5nQ2xhc3NdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LWV4cGFuZGFibGUtcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9tZW51LWV4cGFuZGFibGUtcGFuZWwuY29tcG9uZW50LnNjc3MnLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2Fycm93LWNvbGxhcHNlJywgW1xyXG4gICAgICBzdGF0ZSgnZmFsc2UnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3JvdGF0ZSgwZGVnKScgfSkpLFxyXG4gICAgICBzdGF0ZSgndHJ1ZScsIHN0eWxlKHsgdHJhbnNmb3JtOiAncm90YXRlKC05MGRlZyknIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignZmFsc2UgPT4gdHJ1ZScsIGFuaW1hdGUoREVGQVVMVF9EVVJBVElPTiArICdtcyBlYXNlLWluLW91dCcpKSxcclxuICAgICAgdHJhbnNpdGlvbigndHJ1ZSA9PiBmYWxzZScsIGFuaW1hdGUoREVGQVVMVF9EVVJBVElPTiArICdtcyBlYXNlLWluLW91dCcpKVxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZW51RXhwYW5kYWJsZVBhbmVsQ29tcG9uZW50IHtcclxuICBwdWJsaWMgdGl0bGU6IElucHV0U2lnbmFsPHN0cmluZz4gPSBpbnB1dCgpO1xyXG4gIHB1YmxpYyBpc1N1Ykl0ZW06IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQoZmFsc2UpO1xyXG4gIHB1YmxpYyBzdWJUaXRsZTogSW5wdXRTaWduYWw8c3RyaW5nPiA9IGlucHV0KCk7XHJcbiAgcHVibGljIG1lbnVJY29uOiBJbnB1dFNpZ25hbDxzdHJpbmc+ID0gaW5wdXQoKTtcclxuICBwdWJsaWMgc2hvd0V4cGFuc2lvbkljb246IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQodHJ1ZSk7XHJcbiAgcHVibGljIGFkZFRvcEJvcmRlclJhZGl1czogSW5wdXRTaWduYWw8Ym9vbGVhbj4gPSBpbnB1dChmYWxzZSk7XHJcbiAgcHVibGljIGJvdHRvbUJvcmRlcjogSW5wdXRTaWduYWw8Ym9vbGVhbj4gPSBpbnB1dChmYWxzZSk7XHJcbiAgcHVibGljIGFkZEJvdHRvbUJvcmRlclJhZGl1czogSW5wdXRTaWduYWw8Ym9vbGVhbj4gPSBpbnB1dChmYWxzZSk7XHJcbiAgcHVibGljIHJvdXRlOiBJbnB1dFNpZ25hbDxzdHJpbmdbXT4gPSBpbnB1dChbXSk7XHJcbiAgcHVibGljIGl0ZW1zOiBJbnB1dFNpZ25hbDx7IGljb246IHN0cmluZywgdGl0bGU6IHN0cmluZywgcm91dGU/OiBzdHJpbmdbXSwgYWN0aW9uPzogKCkgPT4gdm9pZCB9W10+ID0gaW5wdXQoW10pO1xyXG5cclxuICBwdWJsaWMgb3BlbmVkOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG4gIEBIb3N0QmluZGluZygnc3R5bGUuYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cycpIHB1YmxpYyBnZXQgdG9wTGVmdFJhZGl1cygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkVG9wQm9yZGVyUmFkaXVzKCkgPyAnMTJweCcgOiAnMHB4JztcclxuICB9XHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5ib3JkZXItdG9wLXJpZ2h0LXJhZGl1cycpIHB1YmxpYyBnZXQgdG9wUmlnaHRSYWRpdXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmFkZFRvcEJvcmRlclJhZGl1cygpID8gJzEycHgnIDogJzBweCc7XHJcbiAgfVxyXG4gIEBIb3N0QmluZGluZygnc3R5bGUuYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cycpIHB1YmxpYyBnZXQgYm90dG9tTGVmdFJhZGl1cygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuYWRkQm90dG9tQm9yZGVyUmFkaXVzKCkgPyAnMTJweCcgOiAnMHB4JztcclxuICB9XHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cycpIHB1YmxpYyBnZXQgYm90dG9tUmlnaHRSYWRpdXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmFkZEJvdHRvbUJvcmRlclJhZGl1cygpID8gJzEycHgnIDogJzBweCc7XHJcbiAgfVxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYm90dG9tLWJvcmRlcicpIHB1YmxpYyBnZXQgYm90dG9tQm9yZGVyQ2xhc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5ib3R0b21Cb3JkZXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDbGljaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJvdXRlKCkubGVuZ3RoID4gMCAmJiB0aGlzLml0ZW1zKCkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKHRoaXMucm91dGUoKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZW5lZC5zZXQoIXRoaXMub3BlbmVkKCkpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8c2VjdGlvbiBbbmdDbGFzc109XCJvcGVuZWQoKSA/ICdib3R0b20tcGFkZGluZycgOiAnJ1wiIChjbGljayk9XCJoYW5kbGVDbGljaygpXCI+XHJcbiAgICA8bWF0LWljb24+e3ttZW51SWNvbigpfX08L21hdC1pY29uPlxyXG4gICAgPGRpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3VidGl0bGUxXCI+e3t0aXRsZSgpIHwgdHJhbnNsYXRlfX08L2Rpdj5cclxuICAgICAgICBAaWYoc3ViVGl0bGUoKSkgezxkaXYgY2xhc3M9XCJib2R5MlwiPnt7c3ViVGl0bGUoKSB8IHRyYW5zbGF0ZX19PC9kaXY+fVxyXG4gICAgPC9kaXY+XHJcbiAgICBAaWYgKHNob3dFeHBhbnNpb25JY29uKCkpIHs8bWF0LWljb24gW0BhcnJvdy1jb2xsYXBzZV09XCJvcGVuZWQoKVwiPmFycm93X2ZvcndhcmRfaW9zPC9tYXQtaWNvbj59XHJcbjwvc2VjdGlvbj5cclxuQGlmKG9wZW5lZCgpKSB7XHJcbiAgICBAZm9yIChpdGVtIG9mIGl0ZW1zKCk7IHRyYWNrIGl0ZW0udGl0bGUpIHtcclxuICAgICAgICA8YXBwLW1lbnUtZXhwYW5kYWJsZS1wYW5lbC1pdGVtIFtpY29uXT1cIml0ZW0uaWNvblwiIFt0aXRsZV09XCJpdGVtLnRpdGxlXCIgW3JvdXRlXT1cIml0ZW0ucm91dGVcIiBbaXNTdWJJdGVtXT1cInRydWVcIiBbYWN0aW9uXT1cIml0ZW0uYWN0aW9uXCIgLz5cclxuICAgIH1cclxufSJdfQ==