@esfaenza/core 15.2.42-beta1 → 15.2.42-beta3

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 (117) hide show
  1. package/components/components.module.d.ts +26 -16
  2. package/components/operations/ops-menu/ops-menu.component.d.ts +6 -0
  3. package/components/operations/ops-menu-category/ops-menu-category.component.d.ts +8 -0
  4. package/components/operations/ops-menu-operation/ops-menu-operation.component.d.ts +9 -0
  5. package/components/{sidebar → page-structure/sidebar}/sidebar.component.d.ts +6 -9
  6. package/components/page-structure/user-infos/user-infos.component.d.ts +63 -0
  7. package/components/page-structure/user-infos/user-infos.component.loc.d.ts +8 -0
  8. package/components/public-api.d.ts +25 -15
  9. package/components/search/es-filters/es-filters.component.d.ts +27 -0
  10. package/components/search/es-filters/es-filters.service.d.ts +6 -0
  11. package/components/search/filters-sidebar/filters-sidebar.component.d.ts +20 -0
  12. package/components/search/filters-sidebar-item/filters-sidebar-item.component.d.ts +16 -0
  13. package/components/search/filters-sidebar-section/filters-sidebar-section.component.d.ts +9 -0
  14. package/components/search/filters-topbar/filters-topbar.component.d.ts +38 -0
  15. package/components/span/labeled-span/labeled-span.component.d.ts +11 -0
  16. package/domain/models/decorators/decorators.d.ts +1 -0
  17. package/domain/models/user/UpdateAccountRecoverySettingsDto.d.ts +5 -0
  18. package/domain/models/user/UpdatePasswordDto.d.ts +9 -0
  19. package/domain/models/user/UpdateProfilePictureDto.d.ts +4 -0
  20. package/domain/public-api.d.ts +4 -0
  21. package/esm2020/components/components.module.mjs +90 -20
  22. package/esm2020/components/operations/ops-menu/ops-menu.component.mjs +12 -0
  23. package/esm2020/components/operations/ops-menu-category/ops-menu-category.component.mjs +21 -0
  24. package/esm2020/components/operations/ops-menu-operation/ops-menu-operation.component.mjs +19 -0
  25. package/esm2020/components/page-structure/back-top/back-top.component.mjs +43 -0
  26. package/esm2020/components/page-structure/base/base.component.mjs +55 -0
  27. package/esm2020/components/page-structure/base/reactive.component.mjs +26 -0
  28. package/esm2020/components/page-structure/breadcrumb/breadcrumb.component.mjs +70 -0
  29. package/esm2020/components/page-structure/error/404/pagenotfound.component.mjs +30 -0
  30. package/esm2020/components/page-structure/error/500/servererror.component.mjs +39 -0
  31. package/esm2020/components/page-structure/error/Angular/angularerror.component.mjs +55 -0
  32. package/esm2020/components/page-structure/external-page/external_pages.component.mjs +47 -0
  33. package/esm2020/components/{jace-login → page-structure/jace-login}/jace-login.component.mjs +1 -1
  34. package/esm2020/components/page-structure/jace-resource/jace-resource.component.mjs +65 -0
  35. package/esm2020/components/page-structure/navbar/modules-board/jace-modules-board.component.mjs +40 -0
  36. package/esm2020/components/page-structure/navbar/navbar.component.loc.mjs +36 -0
  37. package/esm2020/components/page-structure/navbar/navbar.component.mjs +161 -0
  38. package/esm2020/components/page-structure/page/pages.component.mjs +60 -0
  39. package/esm2020/components/page-structure/redirecter/redirecter.component.mjs +53 -0
  40. package/esm2020/components/page-structure/sidebar/sidebar.component.mjs +294 -0
  41. package/esm2020/components/page-structure/user-infos/user-infos.component.loc.mjs +43 -0
  42. package/esm2020/components/page-structure/user-infos/user-infos.component.mjs +160 -0
  43. package/esm2020/components/public-api.mjs +26 -16
  44. package/esm2020/components/search/es-filters/es-filters.component.mjs +56 -0
  45. package/esm2020/components/search/es-filters/es-filters.service.mjs +19 -0
  46. package/esm2020/components/search/filters-sidebar/filters-sidebar.component.mjs +65 -0
  47. package/esm2020/components/search/filters-sidebar-item/filters-sidebar-item.component.mjs +39 -0
  48. package/esm2020/components/search/filters-sidebar-section/filters-sidebar-section.component.mjs +22 -0
  49. package/esm2020/components/search/filters-topbar/filters-topbar.component.mjs +94 -0
  50. package/esm2020/components/span/labeled-span/labeled-span.component.mjs +25 -0
  51. package/esm2020/domain/models/decorators/decorators.mjs +6 -0
  52. package/esm2020/domain/models/user/UpdateAccountRecoverySettingsDto.mjs +7 -0
  53. package/esm2020/domain/models/user/UpdatePasswordDto.mjs +11 -0
  54. package/esm2020/domain/models/user/UpdateProfilePictureDto.mjs +6 -0
  55. package/esm2020/domain/public-api.mjs +5 -1
  56. package/esm2020/lib/app.component.mjs +2 -2
  57. package/esm2020/lib/core.module.mjs +7 -4
  58. package/esm2020/pipes/pipes.module.mjs +1 -1
  59. package/esm2020/services/classes/preferences/app.preference.persistor.mjs +1 -1
  60. package/esm2020/services/classes/preferences/user/app.userpreferences.base.mjs +68 -0
  61. package/esm2020/services/public-api.mjs +2 -1
  62. package/fesm2015/esfaenza-core-components.mjs +664 -75
  63. package/fesm2015/esfaenza-core-components.mjs.map +1 -1
  64. package/fesm2015/esfaenza-core-domain.mjs +31 -1
  65. package/fesm2015/esfaenza-core-domain.mjs.map +1 -1
  66. package/fesm2015/esfaenza-core-pipes.mjs.map +1 -1
  67. package/fesm2015/esfaenza-core-services.mjs +77 -5
  68. package/fesm2015/esfaenza-core-services.mjs.map +1 -1
  69. package/fesm2015/esfaenza-core.mjs +8 -5
  70. package/fesm2015/esfaenza-core.mjs.map +1 -1
  71. package/fesm2020/esfaenza-core-components.mjs +653 -75
  72. package/fesm2020/esfaenza-core-components.mjs.map +1 -1
  73. package/fesm2020/esfaenza-core-domain.mjs +31 -1
  74. package/fesm2020/esfaenza-core-domain.mjs.map +1 -1
  75. package/fesm2020/esfaenza-core-pipes.mjs.map +1 -1
  76. package/fesm2020/esfaenza-core-services.mjs +64 -5
  77. package/fesm2020/esfaenza-core-services.mjs.map +1 -1
  78. package/fesm2020/esfaenza-core.mjs +8 -5
  79. package/fesm2020/esfaenza-core.mjs.map +1 -1
  80. package/lib/core.module.d.ts +2 -1
  81. package/package.json +1 -1
  82. package/services/classes/preferences/user/app.userpreferences.base.d.ts +23 -0
  83. package/services/public-api.d.ts +1 -0
  84. package/theme/styles/_project-override.scss +63 -1
  85. package/theme/styles/_variables.scss +1 -1
  86. package/theme/styles/skins/enuma.scss +1 -0
  87. package/theme/styles/skins/jace.scss +63 -0
  88. package/esm2020/components/back-top/back-top.component.mjs +0 -43
  89. package/esm2020/components/base/base.component.mjs +0 -55
  90. package/esm2020/components/base/reactive.component.mjs +0 -26
  91. package/esm2020/components/breadcrumb/breadcrumb.component.mjs +0 -70
  92. package/esm2020/components/error/404/pagenotfound.component.mjs +0 -30
  93. package/esm2020/components/error/500/servererror.component.mjs +0 -39
  94. package/esm2020/components/error/Angular/angularerror.component.mjs +0 -55
  95. package/esm2020/components/external-page/external_pages.component.mjs +0 -47
  96. package/esm2020/components/jace-resource/jace-resource.component.mjs +0 -65
  97. package/esm2020/components/navbar/modules-board/jace-modules-board.component.mjs +0 -40
  98. package/esm2020/components/navbar/navbar.component.loc.mjs +0 -36
  99. package/esm2020/components/navbar/navbar.component.mjs +0 -161
  100. package/esm2020/components/page/pages.component.mjs +0 -60
  101. package/esm2020/components/redirecter/redirecter.component.mjs +0 -53
  102. package/esm2020/components/sidebar/sidebar.component.mjs +0 -293
  103. /package/components/{back-top → page-structure/back-top}/back-top.component.d.ts +0 -0
  104. /package/components/{base → page-structure/base}/base.component.d.ts +0 -0
  105. /package/components/{base → page-structure/base}/reactive.component.d.ts +0 -0
  106. /package/components/{breadcrumb → page-structure/breadcrumb}/breadcrumb.component.d.ts +0 -0
  107. /package/components/{error → page-structure/error}/404/pagenotfound.component.d.ts +0 -0
  108. /package/components/{error → page-structure/error}/500/servererror.component.d.ts +0 -0
  109. /package/components/{error → page-structure/error}/Angular/angularerror.component.d.ts +0 -0
  110. /package/components/{external-page → page-structure/external-page}/external_pages.component.d.ts +0 -0
  111. /package/components/{jace-login → page-structure/jace-login}/jace-login.component.d.ts +0 -0
  112. /package/components/{jace-resource → page-structure/jace-resource}/jace-resource.component.d.ts +0 -0
  113. /package/components/{navbar → page-structure/navbar}/modules-board/jace-modules-board.component.d.ts +0 -0
  114. /package/components/{navbar → page-structure/navbar}/navbar.component.d.ts +0 -0
  115. /package/components/{navbar → page-structure/navbar}/navbar.component.loc.d.ts +0 -0
  116. /package/components/{page → page-structure/page}/pages.component.d.ts +0 -0
  117. /package/components/{redirecter → page-structure/redirecter}/redirecter.component.d.ts +0 -0
@@ -0,0 +1,160 @@
1
+ import { Component, ViewChild } from "@angular/core";
2
+ import { NgFor, NgIf } from "@angular/common";
3
+ import { FormsModule } from "@angular/forms";
4
+ // Configurazioni
5
+ import { ExtensionsModule } from "@esfaenza/extensions";
6
+ import { LocalizationModule, LocalizationService } from "@esfaenza/localizations";
7
+ // Classi
8
+ import { UpdatePasswordDto } from "@esfaenza/core/domain";
9
+ import { FormsAndValidationsModule } from "@esfaenza/forms-and-validations";
10
+ import { BaseComponent } from "../base/base.component";
11
+ import { UserInfoComponentLoc } from "./user-infos.component.loc";
12
+ import { EsModalComponent } from "../../es-modal/es-modal.component";
13
+ import { EsModalHeadComponent } from "../../es-modal/es-modal-head/es-modal-head.component";
14
+ import { LabeledSpanComponent } from "../../span/labeled-span/labeled-span.component";
15
+ import { OperationsMenuComponent } from "../../operations/ops-menu/ops-menu.component";
16
+ import { OperationsMenuCategoryComponent } from "../../operations/ops-menu-category/ops-menu-category.component";
17
+ import { OperationsMenuOperationComponent } from "../../operations/ops-menu-operation/ops-menu-operation.component";
18
+ import { AccessControlModule } from "@esfaenza/access-control";
19
+ import { MatTooltipModule } from "@angular/material/tooltip";
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "@esfaenza/core/services";
22
+ import * as i2 from "@esfaenza/extensions";
23
+ import * as i3 from "@esfaenza/localizations";
24
+ import * as i4 from "@angular/forms";
25
+ import * as i5 from "@esfaenza/forms-and-validations";
26
+ import * as i6 from "@esfaenza/access-control";
27
+ import * as i7 from "@angular/material/tooltip";
28
+ export class UserInfosComponent extends BaseComponent {
29
+ constructor(inj, tks, msgExts, expExts, utiExts, lc, _state, profile) {
30
+ super(inj);
31
+ this.inj = inj;
32
+ this.tks = tks;
33
+ this.msgExts = msgExts;
34
+ this.expExts = expExts;
35
+ this.utiExts = utiExts;
36
+ this.lc = lc;
37
+ this._state = _state;
38
+ this.profile = profile;
39
+ this.UpdateProfilePictureDTO = null;
40
+ this.UpdateRecoverySettingsDTO = null;
41
+ this.UpdatePasswordDTO = null;
42
+ }
43
+ ngOnInit() {
44
+ this.getAccountDetails();
45
+ }
46
+ getAccountDetails() {
47
+ // Recupero le informazioni Account partendo dalla identity
48
+ let identity = this.tks.getJaceIdentity();
49
+ this.AccountRoles = identity.Roles;
50
+ this.AccountPermissions = identity.Permissions;
51
+ // TODO: Rimuovere, placeholder per grafica
52
+ this.AccountDetails = new JaceUserAccount();
53
+ this.AccountDetails.username = "TESTUSR";
54
+ this.AccountDetails.idtenant = "FX";
55
+ this.AccountDetails.firstname = "Utente";
56
+ this.AccountDetails.lastname = "di Test";
57
+ this.AccountDetails.recoveryemail = "testusr@enuma.it";
58
+ this.AccountDetails.dtvalidfrom = new Date();
59
+ this.AccountDetails.dtvalidto = new Date();
60
+ // TODO: Definire API per i dati dell Account loggato
61
+ //let pars = new HttpParams().set("idAccount", identity.IdAccount.toString());
62
+ //this.http.get<JaceUserAccount>(GET_Accounts_GetEntityAccount, pars).subscribe(res => { this.AccountDetails = res; });
63
+ }
64
+ onShowAccountRoles() {
65
+ this.dlgShowAccountRoles.show();
66
+ }
67
+ onUpdateProfilePicture() {
68
+ this.UpdateProfilePictureDTO = null;
69
+ requestAnimationFrame(() => {
70
+ this.UpdateProfilePictureDTO = { image: null };
71
+ this.dlgUpdateProfilePicture.show();
72
+ });
73
+ }
74
+ async doUpdateProfilePicture() {
75
+ let res = await this.profile.doUpdateProfilePicture(this.UpdateProfilePictureDTO.image);
76
+ this.msgExts.manageCallResultResponse(res, "Modifica eseguita con Successo", "Errori nella modifica", () => {
77
+ this.dlgUpdateProfilePicture.hide();
78
+ });
79
+ }
80
+ //#endregion
81
+ //#region Delete Profile Picture
82
+ onDeleteProfilePicture() {
83
+ this.msgExts.simpleWarningWithChoice("Conferma eliminazione", "Si e' certi di voler rimuovere la foto profilo?", () => {
84
+ this.doDeleteProfilePicture();
85
+ });
86
+ }
87
+ async doDeleteProfilePicture() {
88
+ let res = await this.profile.doDeleteProfilePicture();
89
+ this.msgExts.manageCallResultResponse(res, "Foto profilo rimossa con successo", "Errori nella rimozione della foto profilo", () => {
90
+ this.dlgUpdateProfilePicture.hide();
91
+ });
92
+ }
93
+ onUpdateRecoverySettings() {
94
+ this.UpdateRecoverySettingsDTO = null;
95
+ requestAnimationFrame(() => {
96
+ this.UpdateRecoverySettingsDTO = { email: this.AccountDetails.recoveryemail };
97
+ this.dlgUpdateRecoverySettings.show();
98
+ });
99
+ }
100
+ async doUpdateRecoverySettings() {
101
+ let res = await this.profile.doUpdateRecoverySettings(this.UpdateRecoverySettingsDTO.email);
102
+ this.msgExts.manageCallResultResponse(res, "Modifica eseguita con Successo", "Errori nella modifica", () => {
103
+ this.getAccountDetails();
104
+ this.dlgUpdateRecoverySettings.hide();
105
+ });
106
+ }
107
+ onUpdatePassword() {
108
+ this.UpdatePasswordDTO = null;
109
+ requestAnimationFrame(() => {
110
+ this.CustomError = "";
111
+ this.UpdatePasswordDTO = new UpdatePasswordDto();
112
+ this.dlgUpdatePassword.show();
113
+ });
114
+ }
115
+ async doUpdatePassword() {
116
+ if (this.UpdatePasswordDTO.newpwd != this.UpdatePasswordDTO.confirmpwd)
117
+ this.CustomError = "Le password inserite non coincidono.";
118
+ else {
119
+ let res = await this.profile.doUpdatePassword(this.UpdatePasswordDTO.oldpwd, this.UpdatePasswordDTO.newpwd, this.UpdatePasswordDTO.confirmpwd);
120
+ this.msgExts.manageCallResultResponse(res, "Password modificata con Successo", "Errori nella modifica della Password", () => { this.dlgUpdatePassword.hide(); });
121
+ }
122
+ }
123
+ }
124
+ UserInfosComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserInfosComponent, deps: [{ token: i0.Injector }, { token: i1.TokenService }, { token: i2.MessageService }, { token: i2.ExportService }, { token: i2.UtilityService }, { token: i3.LocalizationService }, { token: i1.AppState }, { token: i1.UserPreferencesService }], target: i0.ɵɵFactoryTarget.Component });
125
+ UserInfosComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: UserInfosComponent, isStandalone: true, selector: "user-infos", viewQueries: [{ propertyName: "dlgShowAccountRoles", first: true, predicate: ["dlgShowAccountRoles"], descendants: true }, { propertyName: "dlgUpdateProfilePicture", first: true, predicate: ["dlgUpdateProfilePicture"], descendants: true }, { propertyName: "dlgUpdateRecoverySettings", first: true, predicate: ["dlgUpdateRecoverySettings"], descendants: true }, { propertyName: "dlgUpdatePassword", first: true, predicate: ["dlgUpdatePassword"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div style=\"height: 100%; width: 100%; display: flex;\">\r\n <div style=\"margin: auto;\">\r\n <div class=\"user-img-container\">\r\n <img [src]=\"profile.ProfilePicture\" alt=\"user-img\" class=\"user-img\" />\r\n <div class=\"app-pointer user-img-btn\">\r\n <div class=\"app-opacity user-img-btn-body\" (click)=\"onUpdateProfilePicture();\">\r\n <i class=\"far fa-pen\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\" style=\"position: relative;\" *ngIf=\"AccountDetails\">\r\n <div class=\"card card-body app-no-margin app-padding-15\">\r\n <div class=\"row\">\r\n <div *ac=\"'R:Jace Admin'\" class=\"user-roles-btn\" [matTooltip]=\"'Visualizza Ruoli e Permessi'\" matTooltipPosition=\"above\" (click)=\"onShowAccountRoles();\">\r\n <i class=\"far fa-book-user\"></i>\r\n </div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Utente' | localize : lc\" Display=\"Vertical\">{{AccountDetails.username}}</labeled-span></div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Tenant' | localize : lc\" Display=\"Vertical\">{{AccountDetails.idtenant}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Nome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.firstname}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Cognome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.lastname}}</labeled-span> </div>\r\n <div class=\"col-md-12 app-margin-top-10\"><labeled-span [Label]=\"'Email' | localize : lc\" Display=\"Vertical\">{{AccountDetails.recoveryemail || 'Non disponibile'}}</labeled-span></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-10 row\">\r\n <div class=\"col-md-6\" style=\"padding-right: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdatePassword()\">Modifica Password</button>\r\n </div>\r\n <div class=\"col-md-6\" style=\"padding-left: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdateRecoverySettings()\">Modifica Email</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--Update Password-->\r\n<es-modal #dlgUpdatePassword [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgUpdatePassword.hide();\">\r\n <h5 class=\"modal-title pull-left\">Modifica Password</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdatePasswordDTO\" #formUpdatePassword=\"ngForm\" (ngSubmit)=\"formUpdatePassword.valid && doUpdatePassword()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [Password]=\"true\" [Label]=\"'Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.oldpwd\" name=\"oldpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Nuova Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.newpwd\" name=\"newpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Conferma Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.confirmpwd\" name=\"confpw\" required></form-input>\r\n <!--Validazione Custom-->\r\n <div *ngIf=\"CustomError\" class=\"app-white-text app-margin-top-15 app-margin-bottom-0 card app-padding-10 card-danger\">\r\n <strong>{{'Error' | localize : lc}}:&nbsp;</strong>{{CustomError}}\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdatePassword.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Update Extra Info-->\r\n<es-modal #dlgUpdateRecoverySettings [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgUpdateRecoverySettings.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Modifica Email' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateRecoverySettingsDTO\" #formUpdateInfos=\"ngForm\" (ngSubmit)=\"formUpdateInfos.valid && doUpdateRecoverySettings()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Email' | localize: lc\" [(ngModel)]=\"UpdateRecoverySettingsDTO.email\" name=\"email\"></form-input>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateRecoverySettings.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Upload Picture-->\r\n<es-modal #dlgUpdateProfilePicture [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgUpdateProfilePicture.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Carica Avatar' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateProfilePictureDTO\" #formUpdateProfilePicture=\"ngForm\" (ngSubmit)=\"formUpdateProfilePicture && doUpdateProfilePicture();\">\r\n <div class=\"modal-body lastfix\">\r\n <form-file Label=\"File\" [FancyMode]=\"true\" [(ngModel)]=\"UpdateProfilePictureDTO.image\" name=\"up_file\"></form-file>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" style=\"margin-right: auto;\" (click)=\"onDeleteProfilePicture();\">{{'Rimuovi' | localize : lc}}</button>\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateProfilePicture.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Save' | localize : lc}}</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Ruoli e Permessi-->\r\n<es-modal #dlgShowAccountRoles [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgShowAccountRoles.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Ruoli e Permessi' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\" style=\"max-height: 600px; overflow-y: auto;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"AccountRoles\">\r\n <labeled-span [Label]=\"'Ruoli'\" Display=\"Vertical\">\r\n <div *ngFor=\"let r of AccountRoles;\">{{r}}</div>\r\n </labeled-span>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"AccountPermissions\">\r\n <labeled-span [Label]=\"'Permessi'\" Display=\"Vertical\">\r\n <div *ngFor=\"let p of AccountPermissions;\">{{p}}</div>\r\n </labeled-span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgShowAccountRoles.hide();\">{{'Chiudi' | localize : lc}}</button>\r\n </div>\r\n</es-modal>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato&family=Sora&display=swap\";.app-wideplus{width:100%;text-align:center;border:1px solid #ccc;border-radius:5px;padding:5px}.btn-outline-main-modified{color:#242d3a;border-color:#242d3a;background:transparent}.btn-outline-main-modified:hover{color:#fff;background:#242D3A;border-color:#242d3a}.user-img-container{position:relative;width:200px;margin:auto}.user-img{object-fit:cover;max-height:200px;min-height:200px;min-width:200px;max-width:200px;border-radius:50%;box-shadow:0 8px 6px #1313130a,0 12px 16px #1313130d}.user-img-btn{position:absolute;right:0;width:40px;height:40px;margin-top:-50px}.user-img-btn-body{background-color:#0056b3;color:#fff;border-radius:50%;text-align:center;height:100%;font-size:1.2rem;line-height:2.5rem}.user-roles-btn{position:absolute;top:0;right:2px;font-size:1.2rem;padding:5px;z-index:1;color:#0056b3;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsAndValidationsModule }, { kind: "component", type: i5.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { kind: "component", type: i5.FormFileComponent, selector: "form-file", inputs: ["Multiple", "AllowDownload", "MaxSize", "FancyMode"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i3.LocalizePipe, name: "localize" }, { kind: "component", type: EsModalComponent, selector: "es-modal", inputs: ["Size", "IgnoreBackdrop", "HasOverlap"], outputs: ["onShow", "onHide"] }, { kind: "component", type: EsModalHeadComponent, selector: "es-modal-head", outputs: ["Close"] }, { kind: "component", type: LabeledSpanComponent, selector: "labeled-span", inputs: ["First", "Label", "Display"] }, { kind: "ngmodule", type: ExtensionsModule }, { kind: "ngmodule", type: AccessControlModule }, { kind: "directive", type: i6.AccessControlDirective, selector: "[ac]", inputs: ["ac", "acAbsolute"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], viewProviders: [{ provide: LocalizationService, useClass: UserInfoComponentLoc }] });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserInfosComponent, decorators: [{
127
+ type: Component,
128
+ args: [{ selector: "user-infos", viewProviders: [{ provide: LocalizationService, useClass: UserInfoComponentLoc }], standalone: true, imports: [
129
+ FormsModule,
130
+ FormsAndValidationsModule,
131
+ NgIf,
132
+ NgFor,
133
+ LocalizationModule,
134
+ EsModalComponent,
135
+ EsModalHeadComponent,
136
+ OperationsMenuComponent,
137
+ OperationsMenuCategoryComponent,
138
+ OperationsMenuOperationComponent,
139
+ LabeledSpanComponent,
140
+ ExtensionsModule,
141
+ AccessControlModule,
142
+ MatTooltipModule
143
+ ], template: "<div style=\"height: 100%; width: 100%; display: flex;\">\r\n <div style=\"margin: auto;\">\r\n <div class=\"user-img-container\">\r\n <img [src]=\"profile.ProfilePicture\" alt=\"user-img\" class=\"user-img\" />\r\n <div class=\"app-pointer user-img-btn\">\r\n <div class=\"app-opacity user-img-btn-body\" (click)=\"onUpdateProfilePicture();\">\r\n <i class=\"far fa-pen\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\" style=\"position: relative;\" *ngIf=\"AccountDetails\">\r\n <div class=\"card card-body app-no-margin app-padding-15\">\r\n <div class=\"row\">\r\n <div *ac=\"'R:Jace Admin'\" class=\"user-roles-btn\" [matTooltip]=\"'Visualizza Ruoli e Permessi'\" matTooltipPosition=\"above\" (click)=\"onShowAccountRoles();\">\r\n <i class=\"far fa-book-user\"></i>\r\n </div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Utente' | localize : lc\" Display=\"Vertical\">{{AccountDetails.username}}</labeled-span></div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Tenant' | localize : lc\" Display=\"Vertical\">{{AccountDetails.idtenant}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Nome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.firstname}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Cognome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.lastname}}</labeled-span> </div>\r\n <div class=\"col-md-12 app-margin-top-10\"><labeled-span [Label]=\"'Email' | localize : lc\" Display=\"Vertical\">{{AccountDetails.recoveryemail || 'Non disponibile'}}</labeled-span></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-10 row\">\r\n <div class=\"col-md-6\" style=\"padding-right: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdatePassword()\">Modifica Password</button>\r\n </div>\r\n <div class=\"col-md-6\" style=\"padding-left: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdateRecoverySettings()\">Modifica Email</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--Update Password-->\r\n<es-modal #dlgUpdatePassword [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgUpdatePassword.hide();\">\r\n <h5 class=\"modal-title pull-left\">Modifica Password</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdatePasswordDTO\" #formUpdatePassword=\"ngForm\" (ngSubmit)=\"formUpdatePassword.valid && doUpdatePassword()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [Password]=\"true\" [Label]=\"'Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.oldpwd\" name=\"oldpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Nuova Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.newpwd\" name=\"newpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Conferma Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.confirmpwd\" name=\"confpw\" required></form-input>\r\n <!--Validazione Custom-->\r\n <div *ngIf=\"CustomError\" class=\"app-white-text app-margin-top-15 app-margin-bottom-0 card app-padding-10 card-danger\">\r\n <strong>{{'Error' | localize : lc}}:&nbsp;</strong>{{CustomError}}\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdatePassword.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Update Extra Info-->\r\n<es-modal #dlgUpdateRecoverySettings [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgUpdateRecoverySettings.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Modifica Email' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateRecoverySettingsDTO\" #formUpdateInfos=\"ngForm\" (ngSubmit)=\"formUpdateInfos.valid && doUpdateRecoverySettings()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Email' | localize: lc\" [(ngModel)]=\"UpdateRecoverySettingsDTO.email\" name=\"email\"></form-input>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateRecoverySettings.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Upload Picture-->\r\n<es-modal #dlgUpdateProfilePicture [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgUpdateProfilePicture.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Carica Avatar' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateProfilePictureDTO\" #formUpdateProfilePicture=\"ngForm\" (ngSubmit)=\"formUpdateProfilePicture && doUpdateProfilePicture();\">\r\n <div class=\"modal-body lastfix\">\r\n <form-file Label=\"File\" [FancyMode]=\"true\" [(ngModel)]=\"UpdateProfilePictureDTO.image\" name=\"up_file\"></form-file>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" style=\"margin-right: auto;\" (click)=\"onDeleteProfilePicture();\">{{'Rimuovi' | localize : lc}}</button>\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateProfilePicture.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Save' | localize : lc}}</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Ruoli e Permessi-->\r\n<es-modal #dlgShowAccountRoles [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgShowAccountRoles.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Ruoli e Permessi' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\" style=\"max-height: 600px; overflow-y: auto;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"AccountRoles\">\r\n <labeled-span [Label]=\"'Ruoli'\" Display=\"Vertical\">\r\n <div *ngFor=\"let r of AccountRoles;\">{{r}}</div>\r\n </labeled-span>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"AccountPermissions\">\r\n <labeled-span [Label]=\"'Permessi'\" Display=\"Vertical\">\r\n <div *ngFor=\"let p of AccountPermissions;\">{{p}}</div>\r\n </labeled-span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgShowAccountRoles.hide();\">{{'Chiudi' | localize : lc}}</button>\r\n </div>\r\n</es-modal>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato&family=Sora&display=swap\";.app-wideplus{width:100%;text-align:center;border:1px solid #ccc;border-radius:5px;padding:5px}.btn-outline-main-modified{color:#242d3a;border-color:#242d3a;background:transparent}.btn-outline-main-modified:hover{color:#fff;background:#242D3A;border-color:#242d3a}.user-img-container{position:relative;width:200px;margin:auto}.user-img{object-fit:cover;max-height:200px;min-height:200px;min-width:200px;max-width:200px;border-radius:50%;box-shadow:0 8px 6px #1313130a,0 12px 16px #1313130d}.user-img-btn{position:absolute;right:0;width:40px;height:40px;margin-top:-50px}.user-img-btn-body{background-color:#0056b3;color:#fff;border-radius:50%;text-align:center;height:100%;font-size:1.2rem;line-height:2.5rem}.user-roles-btn{position:absolute;top:0;right:2px;font-size:1.2rem;padding:5px;z-index:1;color:#0056b3;cursor:pointer}\n"] }]
144
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.TokenService }, { type: i2.MessageService }, { type: i2.ExportService }, { type: i2.UtilityService }, { type: i3.LocalizationService }, { type: i1.AppState }, { type: i1.UserPreferencesService }]; }, propDecorators: { dlgShowAccountRoles: [{
145
+ type: ViewChild,
146
+ args: ["dlgShowAccountRoles"]
147
+ }], dlgUpdateProfilePicture: [{
148
+ type: ViewChild,
149
+ args: ["dlgUpdateProfilePicture"]
150
+ }], dlgUpdateRecoverySettings: [{
151
+ type: ViewChild,
152
+ args: ["dlgUpdateRecoverySettings"]
153
+ }], dlgUpdatePassword: [{
154
+ type: ViewChild,
155
+ args: ["dlgUpdatePassword"]
156
+ }] } });
157
+ // TODO: Definire meglio entita ACCOUNT
158
+ export class JaceUserAccount {
159
+ }
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pbmZvcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3BhZ2Utc3RydWN0dXJlL3VzZXItaW5mb3MvdXNlci1pbmZvcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3BhZ2Utc3RydWN0dXJlL3VzZXItaW5mb3MvdXNlci1pbmZvcy5jb21wb25lbnRfdHN0Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFNBQVMsRUFBWSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBaUIsZ0JBQWdCLEVBQWtDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbEYsU0FBUztBQUNULE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBVyx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUl0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVB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Z0hXLHc4QkQ3RUgsV0FBVyxvL0JBQ1gseUJBQXlCLHlUQUN6QixJQUFJLDZGQUNKLEtBQUssa0hBQ0wsa0JBQWtCLDBGQUNsQixnQkFBZ0Isc0lBQ2hCLG9CQUFvQiw4RUFJcEIsb0JBQW9CLCtGQUNwQixnQkFBZ0IsOEJBQ2hCLG1CQUFtQixzSUFDbkIsZ0JBQWdCLG9IQWhCTCxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxDQUFDOzRGQW1CeEUsa0JBQWtCO2tCQXZCOUIsU0FBUzsrQkFDSSxZQUFZLGlCQUdQLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLENBQUMsY0FDckUsSUFBSSxXQUNQO3dCQUNMLFdBQVc7d0JBQ1gseUJBQXlCO3dCQUN6QixJQUFJO3dCQUNKLEtBQUs7d0JBQ0wsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2QiwrQkFBK0I7d0JBQy9CLGdDQUFnQzt3QkFDaEMsb0JBQW9CO3dCQUNwQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3FCQUNuQjs4U0F1Q2lDLG1CQUFtQjtzQkFBcEQsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBUU0sdUJBQXVCO3NCQUE1RCxTQUFTO3VCQUFDLHlCQUF5QjtnQkFtQ0kseUJBQXlCO3NCQUFoRSxTQUFTO3VCQUFDLDJCQUEyQjtnQkFxQk4saUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQjs7QUEwQmxDLHVDQUF1QztBQUN2QyxNQUFNLE9BQU8sZUFBZTtDQWUzQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE5nRm9yLCBOZ0lmIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgRXhwb3J0U2VydmljZSwgRXh0ZW5zaW9uc01vZHVsZSwgTWVzc2FnZVNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1vZHVsZSwgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5cclxuLy8gQ2xhc3NpXHJcbmltcG9ydCB7IFVwZGF0ZVBhc3N3b3JkRHRvIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL2RvbWFpblwiO1xyXG5pbXBvcnQgeyBBcHBGaWxlLCBGb3Jtc0FuZFZhbGlkYXRpb25zTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9mb3Jtcy1hbmQtdmFsaWRhdGlvbnNcIjtcclxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCB9IGZyb20gXCIuLi9iYXNlL2Jhc2UuY29tcG9uZW50XCJcclxuXHJcbi8vIEFwcGxpY2F6aW9uZVxyXG5pbXBvcnQgeyBBcHBTdGF0ZSwgVG9rZW5TZXJ2aWNlLCBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL3NlcnZpY2VzXCI7XHJcbmltcG9ydCB7IFVzZXJJbmZvQ29tcG9uZW50TG9jIH0gZnJvbSBcIi4vdXNlci1pbmZvcy5jb21wb25lbnQubG9jXCI7XHJcbmltcG9ydCB7IEVzTW9kYWxDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vZXMtbW9kYWwvZXMtbW9kYWwuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVzTW9kYWxIZWFkQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2VzLW1vZGFsL2VzLW1vZGFsLWhlYWQvZXMtbW9kYWwtaGVhZC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgTGFiZWxlZFNwYW5Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vc3Bhbi9sYWJlbGVkLXNwYW4vbGFiZWxlZC1zcGFuLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBPcGVyYXRpb25zTWVudUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9vcGVyYXRpb25zL29wcy1tZW51L29wcy1tZW51LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBPcGVyYXRpb25zTWVudUNhdGVnb3J5Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL29wZXJhdGlvbnMvb3BzLW1lbnUtY2F0ZWdvcnkvb3BzLW1lbnUtY2F0ZWdvcnkuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IE9wZXJhdGlvbnNNZW51T3BlcmF0aW9uQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL29wZXJhdGlvbnMvb3BzLW1lbnUtb3BlcmF0aW9uL29wcy1tZW51LW9wZXJhdGlvbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbE1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvYWNjZXNzLWNvbnRyb2xcIjtcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJ1c2VyLWluZm9zXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3VzZXItaW5mb3MuY29tcG9uZW50X3RzdC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcInVzZXItaW5mb3MuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogVXNlckluZm9Db21wb25lbnRMb2MgfV0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW1xyXG4gICAgICAgIEZvcm1zTW9kdWxlLCBcclxuICAgICAgICBGb3Jtc0FuZFZhbGlkYXRpb25zTW9kdWxlLCBcclxuICAgICAgICBOZ0lmLFxyXG4gICAgICAgIE5nRm9yLFxyXG4gICAgICAgIExvY2FsaXphdGlvbk1vZHVsZSwgXHJcbiAgICAgICAgRXNNb2RhbENvbXBvbmVudCwgXHJcbiAgICAgICAgRXNNb2RhbEhlYWRDb21wb25lbnQsIFxyXG4gICAgICAgIE9wZXJhdGlvbnNNZW51Q29tcG9uZW50LCBcclxuICAgICAgICBPcGVyYXRpb25zTWVudUNhdGVnb3J5Q29tcG9uZW50LCBcclxuICAgICAgICBPcGVyYXRpb25zTWVudU9wZXJhdGlvbkNvbXBvbmVudCxcclxuICAgICAgICBMYWJlbGVkU3BhbkNvbXBvbmVudCxcclxuICAgICAgICBFeHRlbnNpb25zTW9kdWxlLFxyXG4gICAgICAgIEFjY2Vzc0NvbnRyb2xNb2R1bGUsXHJcbiAgICAgICAgTWF0VG9vbHRpcE1vZHVsZVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlckluZm9zQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XHJcbiAgICBwdWJsaWMgQWNjb3VudERldGFpbHM6IEphY2VVc2VyQWNjb3VudDtcclxuICAgIHB1YmxpYyBBY2NvdW50Um9sZXM6IHN0cmluZ1tdO1xyXG4gICAgcHVibGljIEFjY291bnRQZXJtaXNzaW9uczogc3RyaW5nW107XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmo6IEluamVjdG9yLCBwcml2YXRlIHRrczogVG9rZW5TZXJ2aWNlLCBwdWJsaWMgbXNnRXh0czogTWVzc2FnZVNlcnZpY2UsIHB1YmxpYyBleHBFeHRzOiBFeHBvcnRTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgcHVibGljIHV0aUV4dHM6IFV0aWxpdHlTZXJ2aWNlLCBwdWJsaWMgbGM6IExvY2FsaXphdGlvblNlcnZpY2UsIHB1YmxpYyBfc3RhdGU6IEFwcFN0YXRlLFxyXG4gICAgICAgICAgICAgICAgcHVibGljIHByb2ZpbGU6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcihpbmopO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuZ2V0QWNjb3VudERldGFpbHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBY2NvdW50RGV0YWlscygpIHtcclxuICAgICAgICAvLyBSZWN1cGVybyBsZSBpbmZvcm1hemlvbmkgQWNjb3VudCBwYXJ0ZW5kbyBkYWxsYSBpZGVudGl0eVxyXG4gICAgICAgIGxldCBpZGVudGl0eSA9IHRoaXMudGtzLmdldEphY2VJZGVudGl0eSgpO1xyXG4gICAgICAgIHRoaXMuQWNjb3VudFJvbGVzID0gaWRlbnRpdHkuUm9sZXM7XHJcbiAgICAgICAgdGhpcy5BY2NvdW50UGVybWlzc2lvbnMgPSBpZGVudGl0eS5QZXJtaXNzaW9ucztcclxuXHJcbiAgICAgICAgLy8gVE9ETzogUmltdW92ZXJlLCBwbGFjZWhvbGRlciBwZXIgZ3JhZmljYVxyXG4gICAgICAgIHRoaXMuQWNjb3VudERldGFpbHMgPSBuZXcgSmFjZVVzZXJBY2NvdW50KCk7XHJcbiAgICAgICAgdGhpcy5BY2NvdW50RGV0YWlscy51c2VybmFtZSA9IFwiVEVTVFVTUlwiO1xyXG4gICAgICAgIHRoaXMuQWNjb3VudERldGFpbHMuaWR0ZW5hbnQgPSBcIkZYXCI7XHJcbiAgICAgICAgdGhpcy5BY2NvdW50RGV0YWlscy5maXJzdG5hbWUgPSBcIlV0ZW50ZVwiO1xyXG4gICAgICAgIHRoaXMuQWNjb3VudERldGFpbHMubGFzdG5hbWUgPSBcImRpIFRlc3RcIjtcclxuICAgICAgICB0aGlzLkFjY291bnREZXRhaWxzLnJlY292ZXJ5ZW1haWwgPSBcInRlc3R1c3JAZW51bWEuaXRcIjtcclxuICAgICAgICB0aGlzLkFjY291bnREZXRhaWxzLmR0dmFsaWRmcm9tID0gbmV3IERhdGUoKTtcclxuICAgICAgICB0aGlzLkFjY291bnREZXRhaWxzLmR0dmFsaWR0byA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICAgIC8vIFRPRE86IERlZmluaXJlIEFQSSBwZXIgaSBkYXRpIGRlbGwgQWNjb3VudCBsb2dnYXRvXHJcbiAgICAgICAgLy9sZXQgcGFycyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KFwiaWRBY2NvdW50XCIsIGlkZW50aXR5LklkQWNjb3VudC50b1N0cmluZygpKTtcclxuICAgICAgICAvL3RoaXMuaHR0cC5nZXQ8SmFjZVVzZXJBY2NvdW50PihHRVRfQWNjb3VudHNfR2V0RW50aXR5QWNjb3VudCwgcGFycykuc3Vic2NyaWJlKHJlcyA9PiB7IHRoaXMuQWNjb3VudERldGFpbHMgPSByZXM7IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vI3JlZ2lvbiBTaG93IFJvbGVzIGFuZCBQZXJtaXNzaW9uc1xyXG4gICAgQFZpZXdDaGlsZChcImRsZ1Nob3dBY2NvdW50Um9sZXNcIikgZGxnU2hvd0FjY291bnRSb2xlczogRXNNb2RhbENvbXBvbmVudDtcclxuXHJcbiAgICBvblNob3dBY2NvdW50Um9sZXMoKSB7XHJcbiAgICAgICAgdGhpcy5kbGdTaG93QWNjb3VudFJvbGVzLnNob3coKTtcclxuICAgIH1cclxuICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgIC8vI3JlZ2lvbiBVcGRhdGUgUHJvZmlsZSBQaWN0dXJlXHJcbiAgICBAVmlld0NoaWxkKFwiZGxnVXBkYXRlUHJvZmlsZVBpY3R1cmVcIikgZGxnVXBkYXRlUHJvZmlsZVBpY3R1cmU6IEVzTW9kYWxDb21wb25lbnQ7XHJcbiAgICBwdWJsaWMgVXBkYXRlUHJvZmlsZVBpY3R1cmVEVE86IHsgaW1hZ2U6IEFwcEZpbGUgfSA9IG51bGw7XHJcblxyXG4gICAgcHVibGljIG9uVXBkYXRlUHJvZmlsZVBpY3R1cmUoKSB7XHJcbiAgICAgICAgdGhpcy5VcGRhdGVQcm9maWxlUGljdHVyZURUTyA9IG51bGw7XHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5VcGRhdGVQcm9maWxlUGljdHVyZURUTyA9IHsgaW1hZ2U6IG51bGwgfTtcclxuICAgICAgICAgICAgdGhpcy5kbGdVcGRhdGVQcm9maWxlUGljdHVyZS5zaG93KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvVXBkYXRlUHJvZmlsZVBpY3R1cmUoKSB7XHJcbiAgICAgICAgbGV0IHJlcyA9IGF3YWl0IHRoaXMucHJvZmlsZS5kb1VwZGF0ZVByb2ZpbGVQaWN0dXJlKHRoaXMuVXBkYXRlUHJvZmlsZVBpY3R1cmVEVE8uaW1hZ2UpO1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5tYW5hZ2VDYWxsUmVzdWx0UmVzcG9uc2UocmVzLCBcIk1vZGlmaWNhIGVzZWd1aXRhIGNvbiBTdWNjZXNzb1wiLCBcIkVycm9yaSBuZWxsYSBtb2RpZmljYVwiLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZGxnVXBkYXRlUHJvZmlsZVBpY3R1cmUuaGlkZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgLy8jcmVnaW9uIERlbGV0ZSBQcm9maWxlIFBpY3R1cmVcclxuICAgIHB1YmxpYyBvbkRlbGV0ZVByb2ZpbGVQaWN0dXJlKCkge1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVXYXJuaW5nV2l0aENob2ljZShcIkNvbmZlcm1hIGVsaW1pbmF6aW9uZVwiLCBcIlNpIGUnIGNlcnRpIGRpIHZvbGVyIHJpbXVvdmVyZSBsYSBmb3RvIHByb2ZpbG8/XCIsICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5kb0RlbGV0ZVByb2ZpbGVQaWN0dXJlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvRGVsZXRlUHJvZmlsZVBpY3R1cmUoKSB7XHJcbiAgICAgICAgbGV0IHJlcyA9IGF3YWl0IHRoaXMucHJvZmlsZS5kb0RlbGV0ZVByb2ZpbGVQaWN0dXJlKCk7XHJcbiAgICAgICAgdGhpcy5tc2dFeHRzLm1hbmFnZUNhbGxSZXN1bHRSZXNwb25zZShyZXMsIFwiRm90byBwcm9maWxvIHJpbW9zc2EgY29uIHN1Y2Nlc3NvXCIsIFwiRXJyb3JpIG5lbGxhIHJpbW96aW9uZSBkZWxsYSBmb3RvIHByb2ZpbG9cIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmRsZ1VwZGF0ZVByb2ZpbGVQaWN0dXJlLmhpZGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgIC8vI3JlZ2lvbiBVcGRhdGUgUmVjb3ZlcnkgSW5mb1xyXG4gICAgQFZpZXdDaGlsZChcImRsZ1VwZGF0ZVJlY292ZXJ5U2V0dGluZ3NcIikgZGxnVXBkYXRlUmVjb3ZlcnlTZXR0aW5nczogRXNNb2RhbENvbXBvbmVudDtcclxuICAgIHB1YmxpYyBVcGRhdGVSZWNvdmVyeVNldHRpbmdzRFRPOiB7IGVtYWlsOiBzdHJpbmcgfSA9IG51bGw7XHJcblxyXG4gICAgcHVibGljIG9uVXBkYXRlUmVjb3ZlcnlTZXR0aW5ncygpIHtcclxuICAgICAgICB0aGlzLlVwZGF0ZVJlY292ZXJ5U2V0dGluZ3NEVE8gPSBudWxsO1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuVXBkYXRlUmVjb3ZlcnlTZXR0aW5nc0RUTyA9IHsgZW1haWw6IHRoaXMuQWNjb3VudERldGFpbHMucmVjb3ZlcnllbWFpbCB9O1xyXG4gICAgICAgICAgICB0aGlzLmRsZ1VwZGF0ZVJlY292ZXJ5U2V0dGluZ3Muc2hvdygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBkb1VwZGF0ZVJlY292ZXJ5U2V0dGluZ3MoKSB7XHJcbiAgICAgICAgbGV0IHJlcyA9IGF3YWl0IHRoaXMucHJvZmlsZS5kb1VwZGF0ZVJlY292ZXJ5U2V0dGluZ3ModGhpcy5VcGRhdGVSZWNvdmVyeVNldHRpbmdzRFRPLmVtYWlsKTtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMubWFuYWdlQ2FsbFJlc3VsdFJlc3BvbnNlKHJlcywgXCJNb2RpZmljYSBlc2VndWl0YSBjb24gU3VjY2Vzc29cIiwgXCJFcnJvcmkgbmVsbGEgbW9kaWZpY2FcIiwgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdldEFjY291bnREZXRhaWxzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZGxnVXBkYXRlUmVjb3ZlcnlTZXR0aW5ncy5oaWRlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICAvLyNyZWdpb24gVXBkYXRlIFBhc3N3b3JkXHJcbiAgICBAVmlld0NoaWxkKFwiZGxnVXBkYXRlUGFzc3dvcmRcIikgZGxnVXBkYXRlUGFzc3dvcmQ6IEVzTW9kYWxDb21wb25lbnQ7XHJcbiAgICBwdWJsaWMgVXBkYXRlUGFzc3dvcmREVE86IFVwZGF0ZVBhc3N3b3JkRHRvID0gbnVsbDtcclxuICAgIEN1c3RvbUVycm9yOiBzdHJpbmc7XHJcblxyXG4gICAgcHVibGljIG9uVXBkYXRlUGFzc3dvcmQoKSB7XHJcbiAgICAgICAgdGhpcy5VcGRhdGVQYXNzd29yZERUTyA9IG51bGw7XHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5DdXN0b21FcnJvciA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRoaXMuVXBkYXRlUGFzc3dvcmREVE8gPSBuZXcgVXBkYXRlUGFzc3dvcmREdG8oKTtcclxuICAgICAgICAgICAgdGhpcy5kbGdVcGRhdGVQYXNzd29yZC5zaG93KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGRvVXBkYXRlUGFzc3dvcmQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuVXBkYXRlUGFzc3dvcmREVE8ubmV3cHdkICE9IHRoaXMuVXBkYXRlUGFzc3dvcmREVE8uY29uZmlybXB3ZClcclxuICAgICAgICAgICAgdGhpcy5DdXN0b21FcnJvciA9IFwiTGUgcGFzc3dvcmQgaW5zZXJpdGUgbm9uIGNvaW5jaWRvbm8uXCI7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCByZXMgPSBhd2FpdCB0aGlzLnByb2ZpbGUuZG9VcGRhdGVQYXNzd29yZCh0aGlzLlVwZGF0ZVBhc3N3b3JkRFRPLm9sZHB3ZCwgdGhpcy5VcGRhdGVQYXNzd29yZERUTy5uZXdwd2QsIHRoaXMuVXBkYXRlUGFzc3dvcmREVE8uY29uZmlybXB3ZCk7XHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5tYW5hZ2VDYWxsUmVzdWx0UmVzcG9uc2UocmVzLCBcIlBhc3N3b3JkIG1vZGlmaWNhdGEgY29uIFN1Y2Nlc3NvXCIsIFwiRXJyb3JpIG5lbGxhIG1vZGlmaWNhIGRlbGxhIFBhc3N3b3JkXCIsXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7IHRoaXMuZGxnVXBkYXRlUGFzc3dvcmQuaGlkZSgpOyB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8jZW5kcmVnaW9uXHJcbn1cclxuXHJcbi8vIFRPRE86IERlZmluaXJlIG1lZ2xpbyBlbnRpdGEgQUNDT1VOVFxyXG5leHBvcnQgY2xhc3MgSmFjZVVzZXJBY2NvdW50IHtcclxuICAgIGlkOiBzdHJpbmc7XHJcbiAgICBpZHVzZXI6IHN0cmluZztcclxuICAgIGlkdGVuYW50OiBzdHJpbmc7XHJcbiAgICB1c2VybmFtZTogc3RyaW5nO1xyXG4gICAgZHR2YWxpZGZyb206IERhdGU7XHJcbiAgICBkdHZhbGlkdG86IERhdGU7XHJcbiAgICBjb2RmaXNjYWxlOiBzdHJpbmc7XHJcbiAgICBmaXJzdG5hbWU6IHN0cmluZztcclxuICAgIGxhc3RuYW1lOiBzdHJpbmc7XHJcbiAgICBkdGxvY2tkb3duOiBEYXRlO1xyXG4gICAgbG9ja2Rvd25yZWFzb246IHN0cmluZztcclxuICAgIC8vIERldGFpbFxyXG4gICAgcmVjb3ZlcnllbWFpbDogc3RyaW5nO1xyXG4gICAgcmVjb3ZlcnlwaG9uZTogc3RyaW5nO1xyXG59IiwiPGRpdiBzdHlsZT1cImhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IGRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICA8ZGl2IHN0eWxlPVwibWFyZ2luOiBhdXRvO1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWltZy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGltZyBbc3JjXT1cInByb2ZpbGUuUHJvZmlsZVBpY3R1cmVcIiBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwidXNlci1pbWdcIiAvPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXBvaW50ZXIgdXNlci1pbWctYnRuXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLW9wYWNpdHkgdXNlci1pbWctYnRuLWJvZHlcIiAoY2xpY2spPVwib25VcGRhdGVQcm9maWxlUGljdHVyZSgpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLXBlblwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLW1hcmdpbi10b3AtMTVcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIiAqbmdJZj1cIkFjY291bnREZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtYm9keSBhcHAtbm8tbWFyZ2luIGFwcC1wYWRkaW5nLTE1XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqYWM9XCInUjpKYWNlIEFkbWluJ1wiIGNsYXNzPVwidXNlci1yb2xlcy1idG5cIiBbbWF0VG9vbHRpcF09XCInVmlzdWFsaXp6YSBSdW9saSBlIFBlcm1lc3NpJ1wiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCIgKGNsaWNrKT1cIm9uU2hvd0FjY291bnRSb2xlcygpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1ib29rLXVzZXJcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+PGxhYmVsZWQtc3BhbiBbTGFiZWxdPVwiJ1V0ZW50ZScgfCBsb2NhbGl6ZSA6IGxjXCIgRGlzcGxheT1cIlZlcnRpY2FsXCI+e3tBY2NvdW50RGV0YWlscy51c2VybmFtZX19PC9sYWJlbGVkLXNwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+PGxhYmVsZWQtc3BhbiBbTGFiZWxdPVwiJ1RlbmFudCcgfCBsb2NhbGl6ZSA6IGxjXCIgRGlzcGxheT1cIlZlcnRpY2FsXCI+e3tBY2NvdW50RGV0YWlscy5pZHRlbmFudH19PC9sYWJlbGVkLXNwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGFwcC1tYXJnaW4tdG9wLTEwXCI+PGxhYmVsZWQtc3BhbiBbTGFiZWxdPVwiJ05vbWUnIHwgbG9jYWxpemUgOiBsY1wiIERpc3BsYXk9XCJWZXJ0aWNhbFwiPnt7QWNjb3VudERldGFpbHMuZmlyc3RuYW1lfX08L2xhYmVsZWQtc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgYXBwLW1hcmdpbi10b3AtMTBcIj48bGFiZWxlZC1zcGFuIFtMYWJlbF09XCInQ29nbm9tZScgfCBsb2NhbGl6ZSA6IGxjXCIgRGlzcGxheT1cIlZlcnRpY2FsXCI+e3tBY2NvdW50RGV0YWlscy5sYXN0bmFtZX19PC9sYWJlbGVkLXNwYW4+IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgYXBwLW1hcmdpbi10b3AtMTBcIj48bGFiZWxlZC1zcGFuIFtMYWJlbF09XCInRW1haWwnIHwgbG9jYWxpemUgOiBsY1wiIERpc3BsYXk9XCJWZXJ0aWNhbFwiPnt7QWNjb3VudERldGFpbHMucmVjb3ZlcnllbWFpbCB8fCAnTm9uIGRpc3BvbmliaWxlJ319PC9sYWJlbGVkLXNwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1tYXJnaW4tdG9wLTEwIHJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDVweDtcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwib25VcGRhdGVQYXNzd29yZCgpXCI+TW9kaWZpY2EgUGFzc3dvcmQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiA1cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uVXBkYXRlUmVjb3ZlcnlTZXR0aW5ncygpXCI+TW9kaWZpY2EgRW1haWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48IS0tVXBkYXRlIFBhc3N3b3JkLS0+XHJcbjxlcy1tb2RhbCAjZGxnVXBkYXRlUGFzc3dvcmQgW1NpemVdPVwiJ00nXCI+XHJcbiAgICA8ZXMtbW9kYWwtaGVhZCAoQ2xvc2UpPVwiZGxnVXBkYXRlUGFzc3dvcmQuaGlkZSgpO1wiPlxyXG4gICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIHB1bGwtbGVmdFwiPk1vZGlmaWNhIFBhc3N3b3JkPC9oNT5cclxuICAgIDwvZXMtbW9kYWwtaGVhZD5cclxuICAgIDxmb3JtICpuZ0lmPVwiVXBkYXRlUGFzc3dvcmREVE9cIiAjZm9ybVVwZGF0ZVBhc3N3b3JkPVwibmdGb3JtXCIgKG5nU3VibWl0KT1cImZvcm1VcGRhdGVQYXNzd29yZC52YWxpZCAmJiBkb1VwZGF0ZVBhc3N3b3JkKClcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBsYXN0Zml4XCI+XHJcbiAgICAgICAgICAgIDxmb3JtLWlucHV0IFtQYXNzd29yZF09XCJ0cnVlXCIgW0xhYmVsXT1cIidQYXNzd29yZCcgfCBsb2NhbGl6ZTogbGNcIiBbKG5nTW9kZWwpXT1cIlVwZGF0ZVBhc3N3b3JkRFRPLm9sZHB3ZFwiIG5hbWU9XCJvbGRwd1wiIHJlcXVpcmVkPjwvZm9ybS1pbnB1dD5cclxuICAgICAgICAgICAgPGZvcm0taW5wdXQgW1Bhc3N3b3JkXT1cInRydWVcIiBbTGFiZWxdPVwiJ051b3ZhIFBhc3N3b3JkJyB8IGxvY2FsaXplOiBsY1wiIFsobmdNb2RlbCldPVwiVXBkYXRlUGFzc3dvcmREVE8ubmV3cHdkXCIgbmFtZT1cIm5ld3B3XCIgcmVxdWlyZWQ+PC9mb3JtLWlucHV0PlxyXG4gICAgICAgICAgICA8Zm9ybS1pbnB1dCBbUGFzc3dvcmRdPVwidHJ1ZVwiIFtMYWJlbF09XCInQ29uZmVybWEgUGFzc3dvcmQnIHwgbG9jYWxpemU6IGxjXCIgWyhuZ01vZGVsKV09XCJVcGRhdGVQYXNzd29yZERUTy5jb25maXJtcHdkXCIgbmFtZT1cImNvbmZwd1wiIHJlcXVpcmVkPjwvZm9ybS1pbnB1dD5cclxuICAgICAgICAgICAgPCEtLVZhbGlkYXppb25lIEN1c3RvbS0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiQ3VzdG9tRXJyb3JcIiBjbGFzcz1cImFwcC13aGl0ZS10ZXh0IGFwcC1tYXJnaW4tdG9wLTE1IGFwcC1tYXJnaW4tYm90dG9tLTAgY2FyZCBhcHAtcGFkZGluZy0xMCBjYXJkLWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgPHN0cm9uZz57eydFcnJvcicgfCBsb2NhbGl6ZSA6IGxjfX06Jm5ic3A7PC9zdHJvbmc+e3tDdXN0b21FcnJvcn19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBhcHAtbWFyZ2luLXJpZ2h0LTEwXCIgKGNsaWNrKT1cImRsZ1VwZGF0ZVBhc3N3b3JkLmhpZGUoKTtcIj57eydDYW5jZWwnIHwgbG9jYWxpemUgOiBsY319PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+Q29uZmVybWE8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuPC9lcy1tb2RhbD5cclxuXHJcbjwhLS1VcGRhdGUgRXh0cmEgSW5mby0tPlxyXG48ZXMtbW9kYWwgI2RsZ1VwZGF0ZVJlY292ZXJ5U2V0dGluZ3MgW1NpemVdPVwiJ00nXCI+XHJcbiAgICA8ZXMtbW9kYWwtaGVhZCAoQ2xvc2UpPVwiZGxnVXBkYXRlUmVjb3ZlcnlTZXR0aW5ncy5oaWRlKCk7XCI+XHJcbiAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGUgcHVsbC1sZWZ0XCI+e3snTW9kaWZpY2EgRW1haWwnIHwgbG9jYWxpemUgOiBsY319PC9oNT5cclxuICAgIDwvZXMtbW9kYWwtaGVhZD5cclxuICAgIDxmb3JtICpuZ0lmPVwiVXBkYXRlUmVjb3ZlcnlTZXR0aW5nc0RUT1wiICNmb3JtVXBkYXRlSW5mb3M9XCJuZ0Zvcm1cIiAobmdTdWJtaXQpPVwiZm9ybVVwZGF0ZUluZm9zLnZhbGlkICYmIGRvVXBkYXRlUmVjb3ZlcnlTZXR0aW5ncygpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgbGFzdGZpeFwiPlxyXG4gICAgICAgICAgICA8Zm9ybS1pbnB1dCBbTGFiZWxJbnB1dFJhdGlvXT1cIiczIDknXCIgW0xhYmVsXT1cIidFbWFpbCcgfCBsb2NhbGl6ZTogbGNcIiBbKG5nTW9kZWwpXT1cIlVwZGF0ZVJlY292ZXJ5U2V0dGluZ3NEVE8uZW1haWxcIiBuYW1lPVwiZW1haWxcIj48L2Zvcm0taW5wdXQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IGFwcC1tYXJnaW4tcmlnaHQtMTBcIiAoY2xpY2spPVwiZGxnVXBkYXRlUmVjb3ZlcnlTZXR0aW5ncy5oaWRlKCk7XCI+e3snQ2FuY2VsJyB8IGxvY2FsaXplIDogbGN9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPkNvbmZlcm1hPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbjwvZXMtbW9kYWw+XHJcblxyXG48IS0tVXBsb2FkIFBpY3R1cmUtLT5cclxuPGVzLW1vZGFsICNkbGdVcGRhdGVQcm9maWxlUGljdHVyZSBbU2l6ZV09XCInTSdcIj5cclxuICAgIDxlcy1tb2RhbC1oZWFkIChDbG9zZSk9XCJkbGdVcGRhdGVQcm9maWxlUGljdHVyZS5oaWRlKCk7XCI+XHJcbiAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGUgcHVsbC1sZWZ0XCI+e3snQ2FyaWNhIEF2YXRhcicgfCBsb2NhbGl6ZSA6IGxjfX08L2g1PlxyXG4gICAgPC9lcy1tb2RhbC1oZWFkPlxyXG4gICAgPGZvcm0gKm5nSWY9XCJVcGRhdGVQcm9maWxlUGljdHVyZURUT1wiICNmb3JtVXBkYXRlUHJvZmlsZVBpY3R1cmU9XCJuZ0Zvcm1cIiAobmdTdWJtaXQpPVwiZm9ybVVwZGF0ZVByb2ZpbGVQaWN0dXJlICYmIGRvVXBkYXRlUHJvZmlsZVBpY3R1cmUoKTtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBsYXN0Zml4XCI+XHJcbiAgICAgICAgICAgIDxmb3JtLWZpbGUgTGFiZWw9XCJGaWxlXCIgW0ZhbmN5TW9kZV09XCJ0cnVlXCIgWyhuZ01vZGVsKV09XCJVcGRhdGVQcm9maWxlUGljdHVyZURUTy5pbWFnZVwiIG5hbWU9XCJ1cF9maWxlXCI+PC9mb3JtLWZpbGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IGF1dG87XCIgKGNsaWNrKT1cIm9uRGVsZXRlUHJvZmlsZVBpY3R1cmUoKTtcIj57eydSaW11b3ZpJyB8IGxvY2FsaXplIDogbGN9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IGFwcC1tYXJnaW4tcmlnaHQtMTBcIiAoY2xpY2spPVwiZGxnVXBkYXRlUHJvZmlsZVBpY3R1cmUuaGlkZSgpO1wiPnt7J0NhbmNlbCcgfCBsb2NhbGl6ZSA6IGxjfX08L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIj57eydTYXZlJyB8IGxvY2FsaXplIDogbGN9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG48L2VzLW1vZGFsPlxyXG5cclxuPCEtLVJ1b2xpIGUgUGVybWVzc2ktLT5cclxuPGVzLW1vZGFsICNkbGdTaG93QWNjb3VudFJvbGVzIFtTaXplXT1cIidMJ1wiPlxyXG4gICAgPGVzLW1vZGFsLWhlYWQgKENsb3NlKT1cImRsZ1Nob3dBY2NvdW50Um9sZXMuaGlkZSgpO1wiPlxyXG4gICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlIHB1bGwtbGVmdFwiPnt7J1J1b2xpIGUgUGVybWVzc2knIHwgbG9jYWxpemUgOiBsY319PC9oNT5cclxuICAgIDwvZXMtbW9kYWwtaGVhZD5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCIgc3R5bGU9XCJtYXgtaGVpZ2h0OiA2MDBweDsgb3ZlcmZsb3cteTogYXV0bztcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0lmPVwiQWNjb3VudFJvbGVzXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWxlZC1zcGFuIFtMYWJlbF09XCInUnVvbGknXCIgRGlzcGxheT1cIlZlcnRpY2FsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgciBvZiBBY2NvdW50Um9sZXM7XCI+e3tyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWxlZC1zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCIgKm5nSWY9XCJBY2NvdW50UGVybWlzc2lvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbGVkLXNwYW4gW0xhYmVsXT1cIidQZXJtZXNzaSdcIiBEaXNwbGF5PVwiVmVydGljYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwIG9mIEFjY291bnRQZXJtaXNzaW9ucztcIj57e3B9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbGVkLXNwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJkbGdTaG93QWNjb3VudFJvbGVzLmhpZGUoKTtcIj57eydDaGl1ZGknIHwgbG9jYWxpemUgOiBsY319PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuPC9lcy1tb2RhbD4iXX0=
@@ -1,19 +1,29 @@
1
- export * from './back-top/back-top.component';
2
- export * from './breadcrumb/breadcrumb.component';
3
- export * from './error/404/pagenotfound.component';
4
- export * from './error/500/servererror.component';
5
- export * from './error/Angular/angularerror.component';
6
- export * from './page/pages.component';
7
- export * from './external-page/external_pages.component';
8
- export * from './jace-login/jace-login.component';
9
- export * from './navbar/navbar.component';
10
- export * from './navbar/modules-board/jace-modules-board.component';
11
- export * from './redirecter/redirecter.component';
12
- export * from './sidebar/sidebar.component';
13
- export * from './base/base.component';
14
- export * from './base/reactive.component';
15
- export * from './jace-resource/jace-resource.component';
1
+ export * from './page-structure/back-top/back-top.component';
2
+ export * from './page-structure/breadcrumb/breadcrumb.component';
3
+ export * from './page-structure/error/404/pagenotfound.component';
4
+ export * from './page-structure/error/500/servererror.component';
5
+ export * from './page-structure/error/Angular/angularerror.component';
6
+ export * from './page-structure/page/pages.component';
7
+ export * from './page-structure/external-page/external_pages.component';
8
+ export * from './page-structure/jace-login/jace-login.component';
9
+ export * from './page-structure/navbar/navbar.component';
10
+ export * from './page-structure/navbar/modules-board/jace-modules-board.component';
11
+ export * from './page-structure/redirecter/redirecter.component';
12
+ export * from './page-structure/sidebar/sidebar.component';
13
+ export * from './page-structure/base/base.component';
14
+ export * from './page-structure/base/reactive.component';
15
+ export * from './page-structure/jace-resource/jace-resource.component';
16
+ export * from './page-structure/user-infos/user-infos.component';
16
17
  export * from './components.module';
17
18
  export * from "./es-modal/es-modal.component";
18
19
  export * from "./es-modal/es-modal-head/es-modal-head.component";
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrREFBa0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFjay10b3AvYmFjay10b3AuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9lcnJvci80MDQvcGFnZW5vdGZvdW5kLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3IvNTAwL3NlcnZlcmVycm9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3IvQW5ndWxhci9hbmd1bGFyZXJyb3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9wYWdlL3BhZ2VzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZXh0ZXJuYWwtcGFnZS9leHRlcm5hbF9wYWdlcy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2phY2UtbG9naW4vamFjZS1sb2dpbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL25hdmJhci9uYXZiYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9uYXZiYXIvbW9kdWxlcy1ib2FyZC9qYWNlLW1vZHVsZXMtYm9hcmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9yZWRpcmVjdGVyL3JlZGlyZWN0ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9iYXNlL2Jhc2UuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9iYXNlL3JlYWN0aXZlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vamFjZS1yZXNvdXJjZS9qYWNlLXJlc291cmNlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9lcy1tb2RhbC9lcy1tb2RhbC5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vZXMtbW9kYWwvZXMtbW9kYWwtaGVhZC9lcy1tb2RhbC1oZWFkLmNvbXBvbmVudFwiOyJdfQ==
20
+ export * from './search/filters-topbar/filters-topbar.component';
21
+ export * from './search/filters-sidebar/filters-sidebar.component';
22
+ export * from './search/filters-sidebar-section/filters-sidebar-section.component';
23
+ export * from './search/filters-sidebar-item/filters-sidebar-item.component';
24
+ export * from './search/es-filters/es-filters.component';
25
+ export * from './span/labeled-span/labeled-span.component';
26
+ export * from './operations/ops-menu/ops-menu.component';
27
+ export * from './operations/ops-menu-category/ops-menu-category.component';
28
+ export * from './operations/ops-menu-operation/ops-menu-operation.component';
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMsOERBQThELENBQUM7QUFDN0UsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDhEQUE4RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wYWdlLXN0cnVjdHVyZS9iYWNrLXRvcC9iYWNrLXRvcC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BhZ2Utc3RydWN0dXJlL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BhZ2Utc3RydWN0dXJlL2Vycm9yLzQwNC9wYWdlbm90Zm91bmQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9wYWdlLXN0cnVjdHVyZS9lcnJvci81MDAvc2VydmVyZXJyb3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9wYWdlLXN0cnVjdHVyZS9lcnJvci9Bbmd1bGFyL2FuZ3VsYXJlcnJvci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BhZ2Utc3RydWN0dXJlL3BhZ2UvcGFnZXMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9wYWdlLXN0cnVjdHVyZS9leHRlcm5hbC1wYWdlL2V4dGVybmFsX3BhZ2VzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS1zdHJ1Y3R1cmUvamFjZS1sb2dpbi9qYWNlLWxvZ2luLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS1zdHJ1Y3R1cmUvbmF2YmFyL25hdmJhci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BhZ2Utc3RydWN0dXJlL25hdmJhci9tb2R1bGVzLWJvYXJkL2phY2UtbW9kdWxlcy1ib2FyZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BhZ2Utc3RydWN0dXJlL3JlZGlyZWN0ZXIvcmVkaXJlY3Rlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BhZ2Utc3RydWN0dXJlL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BhZ2Utc3RydWN0dXJlL2Jhc2UvYmFzZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BhZ2Utc3RydWN0dXJlL2Jhc2UvcmVhY3RpdmUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9wYWdlLXN0cnVjdHVyZS9qYWNlLXJlc291cmNlL2phY2UtcmVzb3VyY2UuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9wYWdlLXN0cnVjdHVyZS91c2VyLWluZm9zL3VzZXItaW5mb3MuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnRzLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2VzLW1vZGFsL2VzLW1vZGFsLmNvbXBvbmVudFwiO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9lcy1tb2RhbC9lcy1tb2RhbC1oZWFkL2VzLW1vZGFsLWhlYWQuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoL2ZpbHRlcnMtdG9wYmFyL2ZpbHRlcnMtdG9wYmFyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VhcmNoL2ZpbHRlcnMtc2lkZWJhci9maWx0ZXJzLXNpZGViYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gvZmlsdGVycy1zaWRlYmFyLXNlY3Rpb24vZmlsdGVycy1zaWRlYmFyLXNlY3Rpb24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gvZmlsdGVycy1zaWRlYmFyLWl0ZW0vZmlsdGVycy1zaWRlYmFyLWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gvZXMtZmlsdGVycy9lcy1maWx0ZXJzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc3Bhbi9sYWJlbGVkLXNwYW4vbGFiZWxlZC1zcGFuLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vb3BlcmF0aW9ucy9vcHMtbWVudS9vcHMtbWVudS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL29wZXJhdGlvbnMvb3BzLW1lbnUtY2F0ZWdvcnkvb3BzLW1lbnUtY2F0ZWdvcnkuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9vcGVyYXRpb25zL29wcy1tZW51LW9wZXJhdGlvbi9vcHMtbWVudS1vcGVyYXRpb24uY29tcG9uZW50JzsiXX0=
@@ -0,0 +1,56 @@
1
+ // Angular
2
+ import { Component, EventEmitter, Input, Output, ViewChild } from "@angular/core";
3
+ import { EsFiltersService } from "./es-filters.service";
4
+ import { FiltersHorizontalComponent } from "../filters-topbar/filters-topbar.component";
5
+ import { FiltersVerticalComponent } from "../filters-sidebar/filters-sidebar.component";
6
+ import { CommonModule } from "@angular/common";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./es-filters.service";
9
+ export class EsFiltersComponent {
10
+ constructor(filtersService) {
11
+ this.filtersService = filtersService;
12
+ this.DefaultFilters = [];
13
+ this.Title = "Filtri";
14
+ this.Description = "Impostare qui i filtri di interesse";
15
+ this.onSendSearch = new EventEmitter();
16
+ // TODO: Automatico
17
+ this.Sources = [];
18
+ }
19
+ ngOnInit() {
20
+ //this.filtersService.setView(this.SearchView, "search");
21
+ }
22
+ onUpdateFiltersTop() {
23
+ this.filters_h.onUpdateFilters();
24
+ }
25
+ onShowFilters() {
26
+ this.filters_v.onShowFilters();
27
+ }
28
+ emitSendSearch() {
29
+ this.onSendSearch.emit();
30
+ }
31
+ }
32
+ EsFiltersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EsFiltersComponent, deps: [{ token: i1.EsFiltersService }], target: i0.ɵɵFactoryTarget.Component });
33
+ EsFiltersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: EsFiltersComponent, isStandalone: true, selector: "es-filters", inputs: { SearchView: "SearchView", DefaultFilters: "DefaultFilters", Title: "Title", Description: "Description", Sources: "Sources" }, outputs: { onSendSearch: "onSendSearch" }, providers: [EsFiltersService], viewQueries: [{ propertyName: "filters_h", first: true, predicate: FiltersHorizontalComponent, descendants: true }, { propertyName: "filters_v", first: true, predicate: FiltersVerticalComponent, descendants: true }], ngImport: i0, template: "<filters-topbar [searchView]=\"SearchView\" (onSendSearch)=\"emitSendSearch();\" (onShowFilters)=\"onShowFilters();\" [DefaultFilters]=\"DefaultFilters\" [sources]=\"Sources\"></filters-topbar>\r\n<filters-sidebar [searchView]=\"SearchView\" (onSendSearch)=\"emitSendSearch();\" [DefaultFilters]=\"DefaultFilters\" [Title]=\"Title\" [Description]=\"Description\">\r\n <ng-content></ng-content>\r\n</filters-sidebar>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: FiltersVerticalComponent, selector: "filters-sidebar", inputs: ["searchView", "DefaultFilters", "Title", "Description"], outputs: ["onSendSearch"] }, { kind: "component", type: FiltersHorizontalComponent, selector: "filters-topbar", inputs: ["searchView", "sources", "DefaultFilters"], outputs: ["onShowFilters", "onSendSearch"] }] });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: EsFiltersComponent, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: "es-filters", providers: [EsFiltersService], standalone: true, imports: [CommonModule, FiltersVerticalComponent, FiltersHorizontalComponent], template: "<filters-topbar [searchView]=\"SearchView\" (onSendSearch)=\"emitSendSearch();\" (onShowFilters)=\"onShowFilters();\" [DefaultFilters]=\"DefaultFilters\" [sources]=\"Sources\"></filters-topbar>\r\n<filters-sidebar [searchView]=\"SearchView\" (onSendSearch)=\"emitSendSearch();\" [DefaultFilters]=\"DefaultFilters\" [Title]=\"Title\" [Description]=\"Description\">\r\n <ng-content></ng-content>\r\n</filters-sidebar>" }]
37
+ }], ctorParameters: function () { return [{ type: i1.EsFiltersService }]; }, propDecorators: { SearchView: [{
38
+ type: Input
39
+ }], DefaultFilters: [{
40
+ type: Input
41
+ }], Title: [{
42
+ type: Input
43
+ }], Description: [{
44
+ type: Input
45
+ }], onSendSearch: [{
46
+ type: Output
47
+ }], filters_h: [{
48
+ type: ViewChild,
49
+ args: [FiltersHorizontalComponent]
50
+ }], filters_v: [{
51
+ type: ViewChild,
52
+ args: [FiltersVerticalComponent]
53
+ }], Sources: [{
54
+ type: Input
55
+ }] } });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtZmlsdGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3NlYXJjaC9lcy1maWx0ZXJzL2VzLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL3NyYy9zZWFyY2gvZXMtZmlsdGVycy9lcy1maWx0ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV4RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQVMvQyxNQUFNLE9BQU8sa0JBQWtCO0lBYzNCLFlBQW9CLGNBQWdDO1FBQWhDLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQVozQyxtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQUM5QixVQUFLLEdBQVcsUUFBUSxDQUFDO1FBQ3pCLGdCQUFXLEdBQVcscUNBQXFDLENBQUM7UUFFM0QsaUJBQVksR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUt0RSxtQkFBbUI7UUFDVixZQUFPLEdBQXlDLEVBQUUsQ0FBQztJQUVKLENBQUM7SUFFekQsUUFBUTtRQUNKLHlEQUF5RDtJQUM3RCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVNLGFBQWE7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs7Z0hBOUJRLGtCQUFrQjtvR0FBbEIsa0JBQWtCLDRPQUpoQixDQUFDLGdCQUFnQixDQUFDLHFFQVlsQiwwQkFBMEIsNEVBQzFCLHdCQUF3QixnREN4QnZDLG9hQUdrQiwyQ0RVSixZQUFZLCtCQUFFLHdCQUF3Qix5SkFBRSwwQkFBMEI7NEZBRW5FLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDSSxZQUFZLGFBRVgsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLENBQUM7dUdBR3BFLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUVnQyxTQUFTO3NCQUEvQyxTQUFTO3VCQUFDLDBCQUEwQjtnQkFDQSxTQUFTO3NCQUE3QyxTQUFTO3VCQUFDLHdCQUF3QjtnQkFHMUIsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRXNGaWx0ZXJzU2VydmljZSB9IGZyb20gXCIuL2VzLWZpbHRlcnMuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBGaWx0ZXJzSG9yaXpvbnRhbENvbXBvbmVudCB9IGZyb20gXCIuLi9maWx0ZXJzLXRvcGJhci9maWx0ZXJzLXRvcGJhci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRmlsdGVyc1ZlcnRpY2FsQ29tcG9uZW50IH0gZnJvbSBcIi4uL2ZpbHRlcnMtc2lkZWJhci9maWx0ZXJzLXNpZGViYXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEtleVZhbHVlIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL2RvbWFpblwiO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImVzLWZpbHRlcnNcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZXMtZmlsdGVycy5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgcHJvdmlkZXJzOiBbRXNGaWx0ZXJzU2VydmljZV0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRmlsdGVyc1ZlcnRpY2FsQ29tcG9uZW50LCBGaWx0ZXJzSG9yaXpvbnRhbENvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEVzRmlsdGVyc0NvbXBvbmVudCB7XHJcbiAgICBASW5wdXQoKSBTZWFyY2hWaWV3OiBhbnk7XHJcbiAgICBASW5wdXQoKSBEZWZhdWx0RmlsdGVyczogc3RyaW5nW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIFRpdGxlOiBzdHJpbmcgPSBcIkZpbHRyaVwiO1xyXG4gICAgQElucHV0KCkgRGVzY3JpcHRpb246IHN0cmluZyA9IFwiSW1wb3N0YXJlIHF1aSBpIGZpbHRyaSBkaSBpbnRlcmVzc2VcIjtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25TZW5kU2VhcmNoOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgQFZpZXdDaGlsZChGaWx0ZXJzSG9yaXpvbnRhbENvbXBvbmVudCkgZmlsdGVyc19oOiBGaWx0ZXJzSG9yaXpvbnRhbENvbXBvbmVudDtcclxuICAgIEBWaWV3Q2hpbGQoRmlsdGVyc1ZlcnRpY2FsQ29tcG9uZW50KSBmaWx0ZXJzX3Y6IEZpbHRlcnNWZXJ0aWNhbENvbXBvbmVudDtcclxuXHJcbiAgICAvLyBUT0RPOiBBdXRvbWF0aWNvXHJcbiAgICBASW5wdXQoKSBTb3VyY2VzOiB7IGlkOiBzdHJpbmcsIHNvdXJjZTogS2V5VmFsdWVbXSB9W10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpbHRlcnNTZXJ2aWNlOiBFc0ZpbHRlcnNTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICAvL3RoaXMuZmlsdGVyc1NlcnZpY2Uuc2V0Vmlldyh0aGlzLlNlYXJjaFZpZXcsIFwic2VhcmNoXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblVwZGF0ZUZpbHRlcnNUb3AoKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzX2gub25VcGRhdGVGaWx0ZXJzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uU2hvd0ZpbHRlcnMoKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJzX3Yub25TaG93RmlsdGVycygpO1xyXG4gICAgfVxyXG5cclxuICAgIGVtaXRTZW5kU2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMub25TZW5kU2VhcmNoLmVtaXQoKTtcclxuICAgIH1cclxufSIsIjxmaWx0ZXJzLXRvcGJhciBbc2VhcmNoVmlld109XCJTZWFyY2hWaWV3XCIgKG9uU2VuZFNlYXJjaCk9XCJlbWl0U2VuZFNlYXJjaCgpO1wiIChvblNob3dGaWx0ZXJzKT1cIm9uU2hvd0ZpbHRlcnMoKTtcIiBbRGVmYXVsdEZpbHRlcnNdPVwiRGVmYXVsdEZpbHRlcnNcIiBbc291cmNlc109XCJTb3VyY2VzXCI+PC9maWx0ZXJzLXRvcGJhcj5cclxuPGZpbHRlcnMtc2lkZWJhciBbc2VhcmNoVmlld109XCJTZWFyY2hWaWV3XCIgKG9uU2VuZFNlYXJjaCk9XCJlbWl0U2VuZFNlYXJjaCgpO1wiIFtEZWZhdWx0RmlsdGVyc109XCJEZWZhdWx0RmlsdGVyc1wiIFtUaXRsZV09XCJUaXRsZVwiIFtEZXNjcmlwdGlvbl09XCJEZXNjcmlwdGlvblwiPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48L2ZpbHRlcnMtc2lkZWJhcj4iXX0=
@@ -0,0 +1,19 @@
1
+ // Angular
2
+ export class EsFiltersService {
3
+ constructor() {
4
+ this.SearchViews = [];
5
+ }
6
+ setView(sv, name) {
7
+ console.log("Assegno alla SearchView della service: " + JSON.stringify(sv));
8
+ if (this.SearchViews[name])
9
+ this.SearchViews[name].view = sv;
10
+ else {
11
+ this.SearchViews[name] = { view: sv };
12
+ }
13
+ }
14
+ getView(name) {
15
+ console.log("Ottengo valore della SearchView della service: " + JSON.stringify(this.SearchViews[name].view));
16
+ return this.SearchViews[name].view;
17
+ }
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXMtZmlsdGVycy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL3NyYy9zZWFyY2gvZXMtZmlsdGVycy9lcy1maWx0ZXJzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUVWLE1BQU0sT0FBTyxnQkFBZ0I7SUFHekI7UUFGUSxnQkFBVyxHQUFzQyxFQUFFLENBQUM7SUFFNUMsQ0FBQztJQUVqQixPQUFPLENBQUMsRUFBTyxFQUFFLElBQVk7UUFDekIsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5Q0FBeUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQzthQUN4RDtZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7U0FDekM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVk7UUFDaEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpREFBaUQsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3RyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuXHJcbmV4cG9ydCBjbGFzcyBFc0ZpbHRlcnNTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgU2VhcmNoVmlld3M6IHsgW2lkOiBzdHJpbmddOiB7IHZpZXc6IGFueSB9IH1bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gICAgc2V0VmlldyhzdjogYW55LCBuYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkFzc2Vnbm8gYWxsYSBTZWFyY2hWaWV3IGRlbGxhIHNlcnZpY2U6IFwiICsgSlNPTi5zdHJpbmdpZnkoc3YpKTtcclxuICAgICAgICBpZiAodGhpcy5TZWFyY2hWaWV3c1tuYW1lXSkgdGhpcy5TZWFyY2hWaWV3c1tuYW1lXS52aWV3ID0gc3Y7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuU2VhcmNoVmlld3NbbmFtZV0gPSB7IHZpZXc6IHN2IH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFZpZXcobmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJPdHRlbmdvIHZhbG9yZSBkZWxsYSBTZWFyY2hWaWV3IGRlbGxhIHNlcnZpY2U6IFwiICsgSlNPTi5zdHJpbmdpZnkodGhpcy5TZWFyY2hWaWV3c1tuYW1lXS52aWV3KSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuU2VhcmNoVmlld3NbbmFtZV0udmlldztcclxuICAgIH1cclxufSJdfQ==
@@ -0,0 +1,65 @@
1
+ // Angular
2
+ import { Component, EventEmitter, Input, Output } from "@angular/core";
3
+ import { animate, animation, style, transition, trigger, useAnimation } from "@angular/animations";
4
+ import { NgIf } from "@angular/common";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@esfaenza/extensions";
7
+ // Animazione
8
+ export const SlideInFromRight = animation([
9
+ style({ right: -400 }),
10
+ animate('0.4s ease-out', style({ right: 0 }))
11
+ ]);
12
+ export class FiltersVerticalComponent {
13
+ constructor(utiExts) {
14
+ this.utiExts = utiExts;
15
+ this.DefaultFilters = [];
16
+ this.Title = "Filtri";
17
+ this.Description = "Impostare qui i filtri di interesse";
18
+ this.onSendSearch = new EventEmitter();
19
+ }
20
+ // ************************** Public API **************************
21
+ onShowFilters() {
22
+ this.doShowFilters();
23
+ }
24
+ onHideFilters(confirm) {
25
+ this.doHideFilters(confirm);
26
+ }
27
+ // ************************** Private API **************************
28
+ doShowFilters() {
29
+ this.BackupView = this.utiExts.deepClone(this.searchView);
30
+ }
31
+ doHideFilters(confirm) {
32
+ if (confirm) {
33
+ this.onSendSearch.emit();
34
+ }
35
+ else {
36
+ this.searchView = this.utiExts.deepClone(this.BackupView);
37
+ }
38
+ this.BackupView = null;
39
+ }
40
+ }
41
+ FiltersVerticalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FiltersVerticalComponent, deps: [{ token: i1.UtilityService }], target: i0.ɵɵFactoryTarget.Component });
42
+ FiltersVerticalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FiltersVerticalComponent, isStandalone: true, selector: "filters-sidebar", inputs: { searchView: "searchView", DefaultFilters: "DefaultFilters", Title: "Title", Description: "Description" }, outputs: { onSendSearch: "onSendSearch" }, ngImport: i0, template: "<div *ngIf=\"!!BackupView\" class=\"filters-backdrop app-no-selection\">\r\n <div [@FiltersAnimation] class=\"filters-container\">\r\n <div class=\"filters-header\">\r\n <div class=\"filters-close\" (click)=\"onHideFilters(false)\"><i class=\"far fa-close\"></i></div>\r\n <div class=\"filters-header-title\">{{Title}}</div>\r\n <div class=\"filters-header-desc\">{{Description}}</div>\r\n </div>\r\n <form>\r\n <div class=\"filters-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"filters-footer\">\r\n <button type=\"submit\" class=\"filters-button-main\" (click)=\"onHideFilters(true)\">Ricerca con i filtri applicati</button>\r\n </div>\r\n </form>\r\n </div>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato&family=Sora&display=swap\";.filters-backdrop{position:fixed;width:100vw;height:100vh;background-color:#0009;left:0;top:0;z-index:1098}.filters-container{position:absolute;width:400px;height:100vh;right:0;top:0}.filters-header{padding:15px;height:90px;position:relative;background-color:#344154}.filters-close{position:absolute;top:15px;right:15px;color:#ef4444;cursor:pointer;padding:5px}.filters-header-title{color:#fff;font-size:1.4rem;font-weight:700}.filters-header-desc{color:#fff;font-size:1rem}.filters-body{background-color:#fff;overflow-y:auto;height:calc(100vh - 160px)}.filters-footer{background-color:#344154;padding:15px;height:70px;display:flex;justify-content:space-between}.filters-button-main{background-color:#0056b3;color:#fff;width:370px;padding:5px 10px;text-align:center;font-size:1.2rem;font-weight:700;cursor:pointer;border:none;transition:.5s}.filters-button-main:hover{transition:1s;background-color:#004a9a}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
43
+ trigger("FiltersAnimation", [
44
+ transition(":enter", [useAnimation(SlideInFromRight)])
45
+ ])
46
+ ] });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FiltersVerticalComponent, decorators: [{
48
+ type: Component,
49
+ args: [{ selector: "filters-sidebar", animations: [
50
+ trigger("FiltersAnimation", [
51
+ transition(":enter", [useAnimation(SlideInFromRight)])
52
+ ])
53
+ ], standalone: true, imports: [NgIf], template: "<div *ngIf=\"!!BackupView\" class=\"filters-backdrop app-no-selection\">\r\n <div [@FiltersAnimation] class=\"filters-container\">\r\n <div class=\"filters-header\">\r\n <div class=\"filters-close\" (click)=\"onHideFilters(false)\"><i class=\"far fa-close\"></i></div>\r\n <div class=\"filters-header-title\">{{Title}}</div>\r\n <div class=\"filters-header-desc\">{{Description}}</div>\r\n </div>\r\n <form>\r\n <div class=\"filters-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"filters-footer\">\r\n <button type=\"submit\" class=\"filters-button-main\" (click)=\"onHideFilters(true)\">Ricerca con i filtri applicati</button>\r\n </div>\r\n </form>\r\n </div>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato&family=Sora&display=swap\";.filters-backdrop{position:fixed;width:100vw;height:100vh;background-color:#0009;left:0;top:0;z-index:1098}.filters-container{position:absolute;width:400px;height:100vh;right:0;top:0}.filters-header{padding:15px;height:90px;position:relative;background-color:#344154}.filters-close{position:absolute;top:15px;right:15px;color:#ef4444;cursor:pointer;padding:5px}.filters-header-title{color:#fff;font-size:1.4rem;font-weight:700}.filters-header-desc{color:#fff;font-size:1rem}.filters-body{background-color:#fff;overflow-y:auto;height:calc(100vh - 160px)}.filters-footer{background-color:#344154;padding:15px;height:70px;display:flex;justify-content:space-between}.filters-button-main{background-color:#0056b3;color:#fff;width:370px;padding:5px 10px;text-align:center;font-size:1.2rem;font-weight:700;cursor:pointer;border:none;transition:.5s}.filters-button-main:hover{transition:1s;background-color:#004a9a}\n"] }]
54
+ }], ctorParameters: function () { return [{ type: i1.UtilityService }]; }, propDecorators: { searchView: [{
55
+ type: Input
56
+ }], DefaultFilters: [{
57
+ type: Input
58
+ }], Title: [{
59
+ type: Input
60
+ }], Description: [{
61
+ type: Input
62
+ }], onSendSearch: [{
63
+ type: Output
64
+ }] } });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvc2VhcmNoL2ZpbHRlcnMtc2lkZWJhci9maWx0ZXJzLXNpZGViYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL3NyYy9zZWFyY2gvZmlsdGVycy1zaWRlYmFyL2ZpbHRlcnMtc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUV2QyxhQUFhO0FBQ2IsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO0lBQ3RDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLE9BQU8sQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7Q0FDaEQsQ0FBQyxDQUFDO0FBY0gsTUFBTSxPQUFPLHdCQUF3QjtJQVNqQyxZQUFvQixPQUF1QjtRQUF2QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQVBsQyxtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQUM5QixVQUFLLEdBQVcsUUFBUSxDQUFDO1FBQ3pCLGdCQUFXLEdBQVcscUNBQXFDLENBQUM7UUFDM0QsaUJBQVksR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUl2QixDQUFDO0lBRWhELG1FQUFtRTtJQUU1RCxhQUFhO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sYUFBYSxDQUFDLE9BQWdCO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELG9FQUFvRTtJQUU1RCxhQUFhO1FBQ2pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxhQUFhLENBQUMsT0FBZ0I7UUFDbEMsSUFBSSxPQUFPLEVBQUU7WUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQUU7YUFDckM7WUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUFFO1FBQ25FLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7O3NIQS9CUSx3QkFBd0I7MEdBQXhCLHdCQUF3QiwwT0N4QnJDLGkwQkFnQk0seWhDRE1RLElBQUksK0VBTkY7UUFDUixPQUFPLENBQUMsa0JBQWtCLEVBQUU7WUFDeEIsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7U0FDekQsQ0FBQztLQUNMOzRGQUlRLHdCQUF3QjtrQkFacEMsU0FBUzsrQkFDSSxpQkFBaUIsY0FHZjt3QkFDUixPQUFPLENBQUMsa0JBQWtCLEVBQUU7NEJBQ3hCLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO3lCQUN6RCxDQUFDO3FCQUNMLGNBQ1csSUFBSSxXQUNQLENBQUMsSUFBSSxDQUFDO3FHQUdOLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcbmltcG9ydCB7IGFuaW1hdGUsIGFuaW1hdGlvbiwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIsIHVzZUFuaW1hdGlvbiB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XHJcbmltcG9ydCB7IE5nSWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcblxyXG4vLyBBbmltYXppb25lXHJcbmV4cG9ydCBjb25zdCBTbGlkZUluRnJvbVJpZ2h0ID0gYW5pbWF0aW9uKFtcclxuICAgIHN0eWxlKHsgcmlnaHQ6IC00MDAgfSksXHJcbiAgICBhbmltYXRlKCcwLjRzIGVhc2Utb3V0Jywgc3R5bGUoeyByaWdodDogMCB9KSlcclxuXSk7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImZpbHRlcnMtc2lkZWJhclwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9maWx0ZXJzLXNpZGViYXIuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogW1wiLi9maWx0ZXJzLXNpZGViYXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICBhbmltYXRpb25zOiBbXHJcbiAgICAgICAgdHJpZ2dlcihcIkZpbHRlcnNBbmltYXRpb25cIiwgW1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uKFwiOmVudGVyXCIsIFt1c2VBbmltYXRpb24oU2xpZGVJbkZyb21SaWdodCldKVxyXG4gICAgICAgIF0pXHJcbiAgICBdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtOZ0lmXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyc1ZlcnRpY2FsQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIHNlYXJjaFZpZXc6IGFueTtcclxuICAgIEBJbnB1dCgpIERlZmF1bHRGaWx0ZXJzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgVGl0bGU6IHN0cmluZyA9IFwiRmlsdHJpXCI7XHJcbiAgICBASW5wdXQoKSBEZXNjcmlwdGlvbjogc3RyaW5nID0gXCJJbXBvc3RhcmUgcXVpIGkgZmlsdHJpIGRpIGludGVyZXNzZVwiO1xyXG4gICAgQE91dHB1dCgpIG9uU2VuZFNlYXJjaDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIHB1YmxpYyBCYWNrdXBWaWV3OiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB1dGlFeHRzOiBVdGlsaXR5U2VydmljZSkgeyB9XHJcblxyXG4gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKiogUHVibGljIEFQSSAqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAgIHB1YmxpYyBvblNob3dGaWx0ZXJzKCkge1xyXG4gICAgICAgIHRoaXMuZG9TaG93RmlsdGVycygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkhpZGVGaWx0ZXJzKGNvbmZpcm06IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmRvSGlkZUZpbHRlcnMoY29uZmlybSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKiogUHJpdmF0ZSBBUEkgKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbiAgICBwcml2YXRlIGRvU2hvd0ZpbHRlcnMoKSB7XHJcbiAgICAgICAgdGhpcy5CYWNrdXBWaWV3ID0gdGhpcy51dGlFeHRzLmRlZXBDbG9uZSh0aGlzLnNlYXJjaFZpZXcpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZG9IaWRlRmlsdGVycyhjb25maXJtOiBib29sZWFuKSB7XHJcbiAgICAgICAgaWYgKGNvbmZpcm0pIHsgdGhpcy5vblNlbmRTZWFyY2guZW1pdCgpOyB9XHJcbiAgICAgICAgZWxzZSB7IHRoaXMuc2VhcmNoVmlldyA9IHRoaXMudXRpRXh0cy5kZWVwQ2xvbmUodGhpcy5CYWNrdXBWaWV3KTsgfVxyXG4gICAgICAgIHRoaXMuQmFja3VwVmlldyA9IG51bGw7XHJcbiAgICB9XHJcbn0iLCI8ZGl2ICpuZ0lmPVwiISFCYWNrdXBWaWV3XCIgY2xhc3M9XCJmaWx0ZXJzLWJhY2tkcm9wIGFwcC1uby1zZWxlY3Rpb25cIj5cclxuICAgIDxkaXYgW0BGaWx0ZXJzQW5pbWF0aW9uXSBjbGFzcz1cImZpbHRlcnMtY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlcnMtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJzLWNsb3NlXCIgKGNsaWNrKT1cIm9uSGlkZUZpbHRlcnMoZmFsc2UpXCI+PGkgY2xhc3M9XCJmYXIgZmEtY2xvc2VcIj48L2k+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJzLWhlYWRlci10aXRsZVwiPnt7VGl0bGV9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVycy1oZWFkZXItZGVzY1wiPnt7RGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxmb3JtPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVycy1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVycy1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiZmlsdGVycy1idXR0b24tbWFpblwiIChjbGljayk9XCJvbkhpZGVGaWx0ZXJzKHRydWUpXCI+UmljZXJjYSBjb24gaSBmaWx0cmkgYXBwbGljYXRpPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -0,0 +1,39 @@
1
+ // Angular
2
+ import { Component, Input } from "@angular/core";
3
+ import { FormsAndValidationsModule } from "@esfaenza/forms-and-validations";
4
+ import { FormsModule } from "@angular/forms";
5
+ import { NgIf } from "@angular/common";
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../es-filters/es-filters.service";
8
+ import * as i2 from "@angular/forms";
9
+ import * as i3 from "@esfaenza/forms-and-validations";
10
+ export class FiltersVerticalItemComponent {
11
+ get labelName() { return this.propName + "_label"; }
12
+ constructor(filtersService) {
13
+ this.filtersService = filtersService;
14
+ this.Required = false;
15
+ this.propName = "";
16
+ this.type = "input";
17
+ this.source = [];
18
+ }
19
+ ngOnInit() {
20
+ //this.SearchView = this.filtersService.getView(this.ViewName);
21
+ }
22
+ }
23
+ FiltersVerticalItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FiltersVerticalItemComponent, deps: [{ token: i1.EsFiltersService }], target: i0.ɵɵFactoryTarget.Component });
24
+ FiltersVerticalItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FiltersVerticalItemComponent, isStandalone: true, selector: "filters-sidebar-item", inputs: { SearchView: "SearchView", Required: "Required", propName: "propName", type: "type", source: "source" }, ngImport: i0, template: "<!--TODO: multiselect-->\r\n<ng-container *ngIf=\"type == 'input'\">\r\n <form-input [Validation]=\"false\" [Placeholder]=\"'...'\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + SearchView[labelName]\"\r\n [name]=\"propName\" [required]=\"Required\"></form-input>\r\n</ng-container>\r\n<ng-container *ngIf=\"type == 'select'\">\r\n <form-select [Validation]=\"false\" [Placeholder]=\"'...'\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + SearchView[labelName]\"\r\n [Source]=\"source\" [name]=\"propName\" [required]=\"Required\"></form-select>\r\n</ng-container>\r\n<ng-container *ngIf=\"type == 'date'\">\r\n <form-date [Validation]=\"false\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + SearchView[labelName]\"\r\n [name]=\"propName\" [required]=\"Required\"></form-date>\r\n</ng-container>\r\n<ng-container *ngIf=\"type == 'boolean'\">\r\n <form-checkbox [Validation]=\"false\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + SearchView[labelName]\"\r\n [name]=\"propName\" [required]=\"Required\"></form-checkbox>\r\n</ng-container>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato&family=Sora&display=swap\";\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FormsAndValidationsModule }, { kind: "component", type: i3.FormCheckboxComponent, selector: "form-checkbox", inputs: ["SliderMode"] }, { kind: "component", type: i3.FormDateComponent, selector: "form-date", inputs: ["JsDates"] }, { kind: "component", type: i3.FormInputComponent, selector: "form-input", inputs: ["Password"], outputs: ["onSuffixAction", "onPrefixAction"] }, { kind: "component", type: i3.FormSelectComponent, selector: "form-select", inputs: ["SelectLabel", "PlaceholderValue", "RequiredPlaceholder", "EmptyFieldValue", "ShowValidationSymbol", "OptionTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FiltersVerticalItemComponent, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: "filters-sidebar-item", standalone: true, imports: [FormsModule, FormsAndValidationsModule, NgIf], template: "<!--TODO: multiselect-->\r\n<ng-container *ngIf=\"type == 'input'\">\r\n <form-input [Validation]=\"false\" [Placeholder]=\"'...'\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + SearchView[labelName]\"\r\n [name]=\"propName\" [required]=\"Required\"></form-input>\r\n</ng-container>\r\n<ng-container *ngIf=\"type == 'select'\">\r\n <form-select [Validation]=\"false\" [Placeholder]=\"'...'\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + SearchView[labelName]\"\r\n [Source]=\"source\" [name]=\"propName\" [required]=\"Required\"></form-select>\r\n</ng-container>\r\n<ng-container *ngIf=\"type == 'date'\">\r\n <form-date [Validation]=\"false\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + SearchView[labelName]\"\r\n [name]=\"propName\" [required]=\"Required\"></form-date>\r\n</ng-container>\r\n<ng-container *ngIf=\"type == 'boolean'\">\r\n <form-checkbox [Validation]=\"false\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + SearchView[labelName]\"\r\n [name]=\"propName\" [required]=\"Required\"></form-checkbox>\r\n</ng-container>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato&family=Sora&display=swap\";\n"] }]
28
+ }], ctorParameters: function () { return [{ type: i1.EsFiltersService }]; }, propDecorators: { SearchView: [{
29
+ type: Input
30
+ }], Required: [{
31
+ type: Input
32
+ }], propName: [{
33
+ type: Input
34
+ }], type: [{
35
+ type: Input
36
+ }], source: [{
37
+ type: Input
38
+ }] } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy1zaWRlYmFyLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL3NyYy9zZWFyY2gvZmlsdGVycy1zaWRlYmFyLWl0ZW0vZmlsdGVycy1zaWRlYmFyLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL3NyYy9zZWFyY2gvZmlsdGVycy1zaWRlYmFyLWl0ZW0vZmlsdGVycy1zaWRlYmFyLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBU3ZDLE1BQU0sT0FBTyw0QkFBNEI7SUFPckMsSUFBSSxTQUFTLEtBQWEsT0FBTyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFNUQsWUFBb0IsY0FBZ0M7UUFBaEMsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBUDNDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUN0QixTQUFJLEdBQTRELE9BQU8sQ0FBQztRQUN4RSxXQUFNLEdBQWUsRUFBRSxDQUFDO0lBSXVCLENBQUM7SUFFekQsUUFBUTtRQUNKLCtEQUErRDtJQUNuRSxDQUFDOzswSEFiUSw0QkFBNEI7OEdBQTVCLDRCQUE0QixrTUNmekMsNGlEQW9CZSw2SURQRCxXQUFXLDJqQkFBRSx5QkFBeUIsd2tCQUFFLElBQUk7NEZBRTdDLDRCQUE0QjtrQkFQeEMsU0FBUzsrQkFDSSxzQkFBc0IsY0FHcEIsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLHlCQUF5QixFQUFFLElBQUksQ0FBQzt1R0FHOUMsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEVzRmlsdGVyc1NlcnZpY2UgfSBmcm9tIFwiLi4vZXMtZmlsdGVycy9lcy1maWx0ZXJzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZG9tYWluXCI7XHJcbmltcG9ydCB7IEZvcm1zQW5kVmFsaWRhdGlvbnNNb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2Zvcm1zLWFuZC12YWxpZGF0aW9uc1wiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJmaWx0ZXJzLXNpZGViYXItaXRlbVwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9maWx0ZXJzLXNpZGViYXItaXRlbS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL2ZpbHRlcnMtc2lkZWJhci1pdGVtLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgRm9ybXNBbmRWYWxpZGF0aW9uc01vZHVsZSwgTmdJZl1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlcnNWZXJ0aWNhbEl0ZW1Db21wb25lbnQge1xyXG4gICAgQElucHV0KCkgU2VhcmNoVmlldzogYW55O1xyXG4gICAgQElucHV0KCkgUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHByb3BOYW1lOiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgQElucHV0KCkgdHlwZTogXCJpbnB1dFwiIHwgXCJzZWxlY3RcIiB8IFwibXVsdGlzZWxlY3RcIiB8IFwiZGF0ZVwiIHwgXCJib29sZWFuXCIgPSBcImlucHV0XCI7XHJcbiAgICBASW5wdXQoKSBzb3VyY2U6IEtleVZhbHVlW10gPSBbXTtcclxuXHJcbiAgICBnZXQgbGFiZWxOYW1lKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLnByb3BOYW1lICsgXCJfbGFiZWxcIjsgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZmlsdGVyc1NlcnZpY2U6IEVzRmlsdGVyc1NlcnZpY2UpIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIC8vdGhpcy5TZWFyY2hWaWV3ID0gdGhpcy5maWx0ZXJzU2VydmljZS5nZXRWaWV3KHRoaXMuVmlld05hbWUpO1xyXG4gICAgfVxyXG59IiwiPCEtLVRPRE86IG11bHRpc2VsZWN0LS0+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09ICdpbnB1dCdcIj5cclxuICAgIDxmb3JtLWlucHV0IFtWYWxpZGF0aW9uXT1cImZhbHNlXCIgW1BsYWNlaG9sZGVyXT1cIicuLi4nXCIgW0Zsb2F0aW5nTGFiZWxdPVwiZmFsc2VcIiBbTGFiZWxJbnB1dFJhdGlvXT1cIicwIDEyJ1wiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIlNlYXJjaFZpZXdbcHJvcE5hbWVdXCIgW0xhYmVsXT1cIicmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnICsgU2VhcmNoVmlld1tsYWJlbE5hbWVdXCJcclxuICAgICAgICAgICAgICAgIFtuYW1lXT1cInByb3BOYW1lXCIgW3JlcXVpcmVkXT1cIlJlcXVpcmVkXCI+PC9mb3JtLWlucHV0PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT0gJ3NlbGVjdCdcIj5cclxuICAgIDxmb3JtLXNlbGVjdCBbVmFsaWRhdGlvbl09XCJmYWxzZVwiIFtQbGFjZWhvbGRlcl09XCInLi4uJ1wiIFtGbG9hdGluZ0xhYmVsXT1cImZhbHNlXCIgW0xhYmVsSW5wdXRSYXRpb109XCInMCAxMidcIlxyXG4gICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiU2VhcmNoVmlld1twcm9wTmFtZV1cIiBbTGFiZWxdPVwiJyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgKyBTZWFyY2hWaWV3W2xhYmVsTmFtZV1cIlxyXG4gICAgICAgICAgICAgICAgIFtTb3VyY2VdPVwic291cmNlXCIgW25hbWVdPVwicHJvcE5hbWVcIiBbcmVxdWlyZWRdPVwiUmVxdWlyZWRcIj48L2Zvcm0tc2VsZWN0PlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT0gJ2RhdGUnXCI+XHJcbiAgICA8Zm9ybS1kYXRlIFtWYWxpZGF0aW9uXT1cImZhbHNlXCIgW0Zsb2F0aW5nTGFiZWxdPVwiZmFsc2VcIiBbTGFiZWxJbnB1dFJhdGlvXT1cIicwIDEyJ1wiXHJcbiAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiU2VhcmNoVmlld1twcm9wTmFtZV1cIiBbTGFiZWxdPVwiJyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgKyBTZWFyY2hWaWV3W2xhYmVsTmFtZV1cIlxyXG4gICAgICAgICAgICAgICBbbmFtZV09XCJwcm9wTmFtZVwiIFtyZXF1aXJlZF09XCJSZXF1aXJlZFwiPjwvZm9ybS1kYXRlPlxyXG48L25nLWNvbnRhaW5lcj5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT0gJ2Jvb2xlYW4nXCI+XHJcbiAgICA8Zm9ybS1jaGVja2JveCBbVmFsaWRhdGlvbl09XCJmYWxzZVwiIFtGbG9hdGluZ0xhYmVsXT1cImZhbHNlXCIgW0xhYmVsSW5wdXRSYXRpb109XCInMCAxMidcIlxyXG4gICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJTZWFyY2hWaWV3W3Byb3BOYW1lXVwiIFtMYWJlbF09XCInJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7JyArIFNlYXJjaFZpZXdbbGFiZWxOYW1lXVwiXHJcbiAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJwcm9wTmFtZVwiIFtyZXF1aXJlZF09XCJSZXF1aXJlZFwiPjwvZm9ybS1jaGVja2JveD5cclxuPC9uZy1jb250YWluZXI+Il19
@@ -0,0 +1,22 @@
1
+ // Angular
2
+ import { NgIf } from "@angular/common";
3
+ import { Component, Input } from "@angular/core";
4
+ import * as i0 from "@angular/core";
5
+ export class FiltersVerticalSectionComponent {
6
+ constructor() {
7
+ this.Title = "Placeholder";
8
+ this.isCollapsed = false;
9
+ }
10
+ onCollapse() {
11
+ this.isCollapsed = !this.isCollapsed;
12
+ }
13
+ }
14
+ FiltersVerticalSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FiltersVerticalSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15
+ FiltersVerticalSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FiltersVerticalSectionComponent, isStandalone: true, selector: "filters-sidebar-section", inputs: { Title: "Title" }, ngImport: i0, template: "<div class=\"filters-section\">\r\n <div class=\"filters-section-title\">\r\n <div class=\"app-bold\">{{Title}}</div>\r\n <div class=\"filters-section-title-caret\">\r\n <i class=\"far\" (click)=\"onCollapse()\" [class.fa-caret-down]=\"!isCollapsed\" [class.fa-caret-up]=\"isCollapsed\"></i>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isCollapsed\" class=\"app-margin-top-5\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato&family=Sora&display=swap\";.filters-section{color:#000;border-bottom:1px solid #eeeeee;padding:15px}.filters-section-title{display:flex;font-size:1.2rem}.filters-section-title-caret{margin-left:auto;color:#0056b3;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FiltersVerticalSectionComponent, decorators: [{
17
+ type: Component,
18
+ args: [{ selector: "filters-sidebar-section", standalone: true, imports: [NgIf], template: "<div class=\"filters-section\">\r\n <div class=\"filters-section-title\">\r\n <div class=\"app-bold\">{{Title}}</div>\r\n <div class=\"filters-section-title-caret\">\r\n <i class=\"far\" (click)=\"onCollapse()\" [class.fa-caret-down]=\"!isCollapsed\" [class.fa-caret-up]=\"isCollapsed\"></i>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isCollapsed\" class=\"app-margin-top-5\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato&family=Sora&display=swap\";.filters-section{color:#000;border-bottom:1px solid #eeeeee;padding:15px}.filters-section-title{display:flex;font-size:1.2rem}.filters-section-title-caret{margin-left:auto;color:#0056b3;cursor:pointer}\n"] }]
19
+ }], ctorParameters: function () { return []; }, propDecorators: { Title: [{
20
+ type: Input
21
+ }] } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy1zaWRlYmFyLXNlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL3NyYy9zZWFyY2gvZmlsdGVycy1zaWRlYmFyLXNlY3Rpb24vZmlsdGVycy1zaWRlYmFyLXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL3NyYy9zZWFyY2gvZmlsdGVycy1zaWRlYmFyLXNlY3Rpb24vZmlsdGVycy1zaWRlYmFyLXNlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFTakQsTUFBTSxPQUFPLCtCQUErQjtJQUt4QztRQUpTLFVBQUssR0FBVyxhQUFhLENBQUM7UUFFdkMsZ0JBQVcsR0FBWSxLQUFLLENBQUM7SUFFYixDQUFDO0lBRVYsVUFBVTtRQUNiLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3pDLENBQUM7OzZIQVRRLCtCQUErQjtpSEFBL0IsK0JBQStCLCtHQ1g1Qyw2ZEFVTSx1VkREUSxJQUFJOzRGQUVMLCtCQUErQjtrQkFQM0MsU0FBUzsrQkFDSSx5QkFBeUIsY0FHdkIsSUFBSSxXQUNQLENBQUMsSUFBSSxDQUFDOzBFQUdOLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgTmdJZiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImZpbHRlcnMtc2lkZWJhci1zZWN0aW9uXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2ZpbHRlcnMtc2lkZWJhci1zZWN0aW9uLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vZmlsdGVycy1zaWRlYmFyLXNlY3Rpb24uY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW05nSWZdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJzVmVydGljYWxTZWN0aW9uQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCgpIFRpdGxlOiBzdHJpbmcgPSBcIlBsYWNlaG9sZGVyXCI7XHJcblxyXG4gICAgaXNDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIHB1YmxpYyBvbkNvbGxhcHNlKCkge1xyXG4gICAgICAgIHRoaXMuaXNDb2xsYXBzZWQgPSAhdGhpcy5pc0NvbGxhcHNlZDtcclxuICAgIH1cclxufSIsIjxkaXYgY2xhc3M9XCJmaWx0ZXJzLXNlY3Rpb25cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJzLXNlY3Rpb24tdGl0bGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLWJvbGRcIj57e1RpdGxlfX08L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVycy1zZWN0aW9uLXRpdGxlLWNhcmV0XCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyXCIgKGNsaWNrKT1cIm9uQ29sbGFwc2UoKVwiIFtjbGFzcy5mYS1jYXJldC1kb3duXT1cIiFpc0NvbGxhcHNlZFwiIFtjbGFzcy5mYS1jYXJldC11cF09XCJpc0NvbGxhcHNlZFwiPjwvaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFpc0NvbGxhcHNlZFwiIGNsYXNzPVwiYXBwLW1hcmdpbi10b3AtNVwiPlxyXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=