@smarterplan/ngx-smarterplan-admin 0.1.61 → 0.1.63

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 (48) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/admin/admin.component.mjs +5 -5
  3. package/esm2020/lib/chevron/chevron.component.mjs +5 -5
  4. package/esm2020/lib/guest-link/guest-link.component.mjs +5 -5
  5. package/esm2020/lib/guide.guard.mjs +4 -4
  6. package/esm2020/lib/helpers.mjs +1 -1
  7. package/esm2020/lib/name-from-id.pipe.mjs +4 -4
  8. package/esm2020/lib/ngx-smarterplan-admin-routing.module.mjs +5 -5
  9. package/esm2020/lib/ngx-smarterplan-admin.module.mjs +5 -5
  10. package/esm2020/lib/ngx-smarterplan-admin.service.mjs +4 -4
  11. package/esm2020/lib/organisation/organisation.component.mjs +5 -5
  12. package/esm2020/lib/sp-admin.guard.mjs +7 -12
  13. package/esm2020/lib/user/detail-organisation/detail-organisation.component.mjs +5 -5
  14. package/esm2020/lib/user/form-mission/form-mission.component.mjs +5 -5
  15. package/esm2020/lib/user/form-organisation/form-organisation.component.mjs +5 -5
  16. package/esm2020/lib/user/user-mission-form/user-mission-form.component.mjs +5 -5
  17. package/esm2020/lib/user/user.component.mjs +5 -5
  18. package/esm2020/lib/visitor/create-batch/create-batch.component.mjs +5 -5
  19. package/esm2020/lib/visitor/template/template.component.mjs +5 -5
  20. package/esm2020/lib/visitor/visitor.component.mjs +5 -5
  21. package/esm2020/public-api.mjs +1 -1
  22. package/fesm2015/smarterplan-ngx-smarterplan-admin.mjs +71 -76
  23. package/fesm2015/smarterplan-ngx-smarterplan-admin.mjs.map +1 -1
  24. package/fesm2020/smarterplan-ngx-smarterplan-admin.mjs +71 -76
  25. package/fesm2020/smarterplan-ngx-smarterplan-admin.mjs.map +1 -1
  26. package/lib/sp-admin.guard.d.ts +2 -3
  27. package/package.json +14 -13
  28. package/lib/admin/admin.component.d.ts.map +0 -1
  29. package/lib/chevron/chevron.component.d.ts.map +0 -1
  30. package/lib/guest-link/guest-link.component.d.ts.map +0 -1
  31. package/lib/guide.guard.d.ts.map +0 -1
  32. package/lib/helpers.d.ts.map +0 -1
  33. package/lib/name-from-id.pipe.d.ts.map +0 -1
  34. package/lib/ngx-smarterplan-admin-routing.module.d.ts.map +0 -1
  35. package/lib/ngx-smarterplan-admin.module.d.ts.map +0 -1
  36. package/lib/ngx-smarterplan-admin.service.d.ts.map +0 -1
  37. package/lib/organisation/organisation.component.d.ts.map +0 -1
  38. package/lib/sp-admin.guard.d.ts.map +0 -1
  39. package/lib/user/detail-organisation/detail-organisation.component.d.ts.map +0 -1
  40. package/lib/user/form-mission/form-mission.component.d.ts.map +0 -1
  41. package/lib/user/form-organisation/form-organisation.component.d.ts.map +0 -1
  42. package/lib/user/user-mission-form/user-mission-form.component.d.ts.map +0 -1
  43. package/lib/user/user.component.d.ts.map +0 -1
  44. package/lib/visitor/create-batch/create-batch.component.d.ts.map +0 -1
  45. package/lib/visitor/template/template.component.d.ts.map +0 -1
  46. package/lib/visitor/visitor.component.d.ts.map +0 -1
  47. package/public-api.d.ts.map +0 -1
  48. package/smarterplan-ngx-smarterplan-admin.d.ts.map +0 -1
@@ -22,9 +22,9 @@ import * as Papa from 'papaparse';
22
22
  class NgxSmarterplanAdminService {
23
23
  constructor() { }
24
24
  }
25
- NgxSmarterplanAdminService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NgxSmarterplanAdminService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
26
- NgxSmarterplanAdminService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NgxSmarterplanAdminService, providedIn: 'root' });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NgxSmarterplanAdminService, decorators: [{
25
+ NgxSmarterplanAdminService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NgxSmarterplanAdminService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
26
+ NgxSmarterplanAdminService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NgxSmarterplanAdminService, providedIn: 'root' });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NgxSmarterplanAdminService, decorators: [{
28
28
  type: Injectable,
29
29
  args: [{
30
30
  providedIn: 'root'
@@ -38,11 +38,11 @@ class ChevronComponent {
38
38
  ngOnInit() {
39
39
  }
40
40
  }
41
- ChevronComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ChevronComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
42
- ChevronComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: ChevronComponent, selector: "lib-chevron", inputs: { conditionShowing: "conditionShowing" }, ngImport: i0, template: "<div style=\"height: 30px; width: 30px;\">\n <span class=\"icon-container\" >\n <div [class]=\"conditionShowing ? 'icon-img-up' : 'icon-img-down'\"></div>\n </span>\n</div>\n", styles: [".icon-container{height:30px;width:30px}.icon-img-down{width:30px;height:100%;background:url(https://api.iconify.design/mdi-light/chevron-right.svg?width=28) no-repeat center center/contain}.icon-img-up{width:30px;height:100%;background:url(https://api.iconify.design/mdi-light/chevron-down.svg?width=28) no-repeat center center/contain}\n"] });
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ChevronComponent, decorators: [{
41
+ ChevronComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ChevronComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
42
+ ChevronComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ChevronComponent, selector: "lib-chevron", inputs: { conditionShowing: "conditionShowing" }, ngImport: i0, template: "<div style=\"height: 30px; width: 30px;\">\r\n <span class=\"icon-container\" >\r\n <div [class]=\"conditionShowing ? 'icon-img-up' : 'icon-img-down'\"></div>\r\n </span>\r\n</div>\r\n", styles: [".icon-container{height:30px;width:30px}.icon-img-down{width:30px;height:100%;background:url(https://api.iconify.design/mdi-light/chevron-right.svg?width=28) no-repeat center center/contain}.icon-img-up{width:30px;height:100%;background:url(https://api.iconify.design/mdi-light/chevron-down.svg?width=28) no-repeat center center/contain}\n"] });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ChevronComponent, decorators: [{
44
44
  type: Component,
45
- args: [{ selector: 'lib-chevron', template: "<div style=\"height: 30px; width: 30px;\">\n <span class=\"icon-container\" >\n <div [class]=\"conditionShowing ? 'icon-img-up' : 'icon-img-down'\"></div>\n </span>\n</div>\n", styles: [".icon-container{height:30px;width:30px}.icon-img-down{width:30px;height:100%;background:url(https://api.iconify.design/mdi-light/chevron-right.svg?width=28) no-repeat center center/contain}.icon-img-up{width:30px;height:100%;background:url(https://api.iconify.design/mdi-light/chevron-down.svg?width=28) no-repeat center center/contain}\n"] }]
45
+ args: [{ selector: 'lib-chevron', template: "<div style=\"height: 30px; width: 30px;\">\r\n <span class=\"icon-container\" >\r\n <div [class]=\"conditionShowing ? 'icon-img-up' : 'icon-img-down'\"></div>\r\n </span>\r\n</div>\r\n", styles: [".icon-container{height:30px;width:30px}.icon-img-down{width:30px;height:100%;background:url(https://api.iconify.design/mdi-light/chevron-right.svg?width=28) no-repeat center center/contain}.icon-img-up{width:30px;height:100%;background:url(https://api.iconify.design/mdi-light/chevron-down.svg?width=28) no-repeat center center/contain}\n"] }]
46
46
  }], ctorParameters: function () { return []; }, propDecorators: { conditionShowing: [{
47
47
  type: Input
48
48
  }] } });
@@ -202,11 +202,11 @@ class OrganisationComponent {
202
202
  }
203
203
  }
204
204
  }
205
- OrganisationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: OrganisationComponent, deps: [{ token: i1.OrganisationService }, { token: i1$1.FormBuilder }, { token: i1.BaseUserService }, { token: i1.MissionService }, { token: i3.TranslateService }, { token: i1.PropertyService }], target: i0.ɵɵFactoryTarget.Component });
206
- OrganisationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: OrganisationComponent, selector: "lib-organisation", ngImport: i0, template: "<div class=\"container-fluid\" class=\"dashboard-tab\">\n <h3>{{'SmarterPlan Client Organisations' | translate}}</h3>\n <div class=\"row\">\n <div class=\"col-md-8 col-lg-6\">\n\n <div *ngIf=\"error\" class=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\n <strong>{{'Error' | translate}}!</strong> We haven't been able to fulfil your request.\n <button type=\"button\" class=\"close\" data-dismiss=\"alert\" (click)=\"onDismiss()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n\n <div *ngIf=\"!create && !editing\">\n <div class=\"d-flex justify-content-between align-items-center p-1\">\n <input class=\"form-control search-button\" [(ngModel)]=\"query\" i18n-placeholder placeholder=\"Search\"\n type=\"text\">&nbsp;\n </div>\n <!-- <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"onAdd()\">{{'Add new client organisation' |\n translate}}</button> -->\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\n <lib-loader></lib-loader>\n </div>\n <ul class=\"list-group list-group-flush\">\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let a of clients; index as index\"\n (click)=\"onToggleDetail(index)\">\n <div class=\"d-flex justify-content-between align-items-center\">\n {{a.name}}\n <lib-chevron [conditionShowing]=\"index==details\"></lib-chevron>\n <!-- <ic-icon [icon]=\"index==details ? chevronDown : chevronRight\"></ic-icon> -->\n </div>\n\n <div *ngIf=\"index==details\">\n <ul class=\"list-group list-group-flush\">\n <!-- <li class=\"list-group-item bg-transparent\">{{'Activit\u00E9' | translate}}</li> -->\n <li class=\"list-group-item bg-transparent\">{{'Address' | translate}}: {{ a.organisation.address }}</li>\n <li class=\"list-group-item bg-transparent\">{{ 'Postal Code' | translate}}: {{ a.organisation.postal }}\n </li>\n <li class=\"list-group-item bg-transparent\">{{'City' | translate}}: {{ a.organisation.city }}</li>\n <li class=\"list-group-item bg-transparent\">{{'SIRET' | translate}}: {{ a.organisation.siret ?\n a.organisation.siret : 'Not provided' | translate }}</li>\n <li class=\"list-group-item bg-transparent\">{{'Created' | translate}}: {{ a.organisation.createdAt | date:'long' }}\n </li>\n <ng-container *ngIf=\"a.adminMissions.length > 0\">\n <li *ngIf=\"a.adminMissions.length <= 1\" class=\"list-group-item bg-transparent\">\n {{'Administrator User' | translate}} :</li>\n <li *ngIf=\"a.adminMissions.length > 1\" class=\"list-group-item bg-transparent\">\n {{'Administrator User(s)' | translate}} :</li>\n <li class=\"list-group-item list-group-item-action\"\n *ngFor=\"let admin of a.adminMissions; index as index\" (click)=\"onToggleDetail(index)\">\n <ul class=\"list-group list-group-flush\">\n <li class=\"ml-4\"> {{admin.user.displayName}} ({{admin.user.email}})\n <!-- <button type=\"button\" class=\"btn btn-primary rounded-pill\" style=\"float: right;\"\n (click)=\"onRemoveAdmin(admin)\">\n {{'Remove'|translate}}</button> \n </li>\n <li class=\"list-group-item bg-transparent\">{{'Phone'}}: {{admin.user.phone}}</li> -->\n </ul>\n\n </ng-container>\n <ng-container *ngIf=\"a.adminMissions.length == 0\">\n <li class=\"list-group-item bg-warning\"><span class=\"badge badge-warning\">\n {{'Warning' | translate}}</span> {{'No Administrator User'| translate}} </li>\n </ng-container>\n <ng-container *ngIf=\"a.properties.length > 0\">\n <li class=\"list-group-item bg-transparent\">{{'Locations' | translate}}: </li>\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let property of a.properties\">\n <ul class=\"list-group list-group-flush\">\n <li class=\"ml-4\">{{property}}</li>\n </ul>\n </li>\n </ng-container>\n </ul>\n <div class=\"action-button-container\">\n <button type=\"button\" class=\"btn btn-primary rounded-pill action-button\"\n (click)=\"onEdit(a.organisation)\">\n {{'Edit' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary rounded-pill action-button\"\n (click)=\"onArchive(a.organisation)\" disabled>\n {{'Archive' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary rounded-pill action-button\"\n (click)=\"onDeleteOrg(a.organisation)\">\n {{'Delete' | translate}}</button>\n </div>\n </div>\n </li>\n </ul>\n </div>\n\n <div *ngIf=\"form && (create || editing)\">\n <form (ngSubmit)=\"onSubmitOrg()\" [formGroup]=\"form\">\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"name.invalid && name.touched\" required\n formControlName=\"name\">\n <div class=\"invalid-feedback\">\n {{'A name is required' | translate}}\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"address\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'City' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"city\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Postal code' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"postal\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'SIRET' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"siret\">\n </div>\n </div>\n <div *ngIf=\"working\">\n <lib-loader></lib-loader>\n </div>\n <div class=\"action-button-container\">\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill action-button\"\n [disabled]=\"working || form.invalid\">{{'Save' | translate}}</button>\n <button type=\"button\" (click)=\"onCancel()\" [disabled]=\"working\"\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\n </div>\n </form>\n </div>\n <!--<spOrganisationForm [model]=\" editingOrganisation\" (submit)=\"onSave($event)\" (cancel)=\"onCancel()\">\n </spOrganisationForm>-->\n </div>\n </div>\n</div>\n\n<!-- <div>{{'Administrator User' | translate}}</div>\n <div formGroupName=\"user\" *ngIf=\"create || isAddingAdmin\">\n <div *ngIf=\"form\" class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Email' | translate}} *</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"email.invalid && email.touched\" required\n formControlName=\"email\">\n <div class=\"invalid-feedback\">\n {{'An email is required' | translate}}\n </div>\n </div>\n </div>\n \n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'First name' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"firstName\">\n </div>\n </div>\n \n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Last name' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"lastName\">\n </div>\n </div>\n \n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Phone' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"phone\">\n </div>\n </div>\n </div> -->", styles: [".form-group{margin:1.5rem 0}.search-button{width:-moz-fit-content;width:fit-content}li.ml-4{margin-left:3rem}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"], components: [{ type: i1.LoaderComponent, selector: "lib-loader", inputs: ["useLogo", "color"] }, { type: ChevronComponent, selector: "lib-chevron", inputs: ["conditionShowing"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i3.TranslatePipe, "date": i5.DatePipe } });
207
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: OrganisationComponent, decorators: [{
205
+ OrganisationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: OrganisationComponent, deps: [{ token: i1.OrganisationService }, { token: i1$1.FormBuilder }, { token: i1.BaseUserService }, { token: i1.MissionService }, { token: i3.TranslateService }, { token: i1.PropertyService }], target: i0.ɵɵFactoryTarget.Component });
206
+ OrganisationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: OrganisationComponent, selector: "lib-organisation", ngImport: i0, template: "<div class=\"container-fluid\" class=\"dashboard-tab\">\r\n <h3>{{'SmarterPlan Client Organisations' | translate}}</h3>\r\n <div class=\"row\">\r\n <div class=\"col-md-8 col-lg-6\">\r\n\r\n <div *ngIf=\"error\" class=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\r\n <strong>{{'Error' | translate}}!</strong> We haven't been able to fulfil your request.\r\n <button type=\"button\" class=\"close\" data-dismiss=\"alert\" (click)=\"onDismiss()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"!create && !editing\">\r\n <div class=\"d-flex justify-content-between align-items-center p-1\">\r\n <input class=\"form-control search-button\" [(ngModel)]=\"query\" i18n-placeholder placeholder=\"Search\"\r\n type=\"text\">&nbsp;\r\n </div>\r\n <!-- <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"onAdd()\">{{'Add new client organisation' |\r\n translate}}</button> -->\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\r\n <lib-loader></lib-loader>\r\n </div>\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let a of clients; index as index\"\r\n (click)=\"onToggleDetail(index)\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n {{a.name}}\r\n <lib-chevron [conditionShowing]=\"index==details\"></lib-chevron>\r\n <!-- <ic-icon [icon]=\"index==details ? chevronDown : chevronRight\"></ic-icon> -->\r\n </div>\r\n\r\n <div *ngIf=\"index==details\">\r\n <ul class=\"list-group list-group-flush\">\r\n <!-- <li class=\"list-group-item bg-transparent\">{{'Activit\u00E9' | translate}}</li> -->\r\n <li class=\"list-group-item bg-transparent\">{{'Address' | translate}}: {{ a.organisation.address }}</li>\r\n <li class=\"list-group-item bg-transparent\">{{ 'Postal Code' | translate}}: {{ a.organisation.postal }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\">{{'City' | translate}}: {{ a.organisation.city }}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'SIRET' | translate}}: {{ a.organisation.siret ?\r\n a.organisation.siret : 'Not provided' | translate }}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Created' | translate}}: {{ a.organisation.createdAt | date:'long' }}\r\n </li>\r\n <ng-container *ngIf=\"a.adminMissions.length > 0\">\r\n <li *ngIf=\"a.adminMissions.length <= 1\" class=\"list-group-item bg-transparent\">\r\n {{'Administrator User' | translate}} :</li>\r\n <li *ngIf=\"a.adminMissions.length > 1\" class=\"list-group-item bg-transparent\">\r\n {{'Administrator User(s)' | translate}} :</li>\r\n <li class=\"list-group-item list-group-item-action\"\r\n *ngFor=\"let admin of a.adminMissions; index as index\" (click)=\"onToggleDetail(index)\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"ml-4\"> {{admin.user.displayName}} ({{admin.user.email}})\r\n <!-- <button type=\"button\" class=\"btn btn-primary rounded-pill\" style=\"float: right;\"\r\n (click)=\"onRemoveAdmin(admin)\">\r\n {{'Remove'|translate}}</button> \r\n </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Phone'}}: {{admin.user.phone}}</li> -->\r\n </ul>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"a.adminMissions.length == 0\">\r\n <li class=\"list-group-item bg-warning\"><span class=\"badge badge-warning\">\r\n {{'Warning' | translate}}</span> {{'No Administrator User'| translate}} </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"a.properties.length > 0\">\r\n <li class=\"list-group-item bg-transparent\">{{'Locations' | translate}}: </li>\r\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let property of a.properties\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"ml-4\">{{property}}</li>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <div class=\"action-button-container\">\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill action-button\"\r\n (click)=\"onEdit(a.organisation)\">\r\n {{'Edit' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill action-button\"\r\n (click)=\"onArchive(a.organisation)\" disabled>\r\n {{'Archive' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill action-button\"\r\n (click)=\"onDeleteOrg(a.organisation)\">\r\n {{'Delete' | translate}}</button>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div *ngIf=\"form && (create || editing)\">\r\n <form (ngSubmit)=\"onSubmitOrg()\" [formGroup]=\"form\">\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"name.invalid && name.touched\" required\r\n formControlName=\"name\">\r\n <div class=\"invalid-feedback\">\r\n {{'A name is required' | translate}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"address\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'City' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"city\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Postal code' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"postal\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'SIRET' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"siret\">\r\n </div>\r\n </div>\r\n <div *ngIf=\"working\">\r\n <lib-loader></lib-loader>\r\n </div>\r\n <div class=\"action-button-container\">\r\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill action-button\"\r\n [disabled]=\"working || form.invalid\">{{'Save' | translate}}</button>\r\n <button type=\"button\" (click)=\"onCancel()\" [disabled]=\"working\"\r\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n <!--<spOrganisationForm [model]=\" editingOrganisation\" (submit)=\"onSave($event)\" (cancel)=\"onCancel()\">\r\n </spOrganisationForm>-->\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- <div>{{'Administrator User' | translate}}</div>\r\n <div formGroupName=\"user\" *ngIf=\"create || isAddingAdmin\">\r\n <div *ngIf=\"form\" class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Email' | translate}} *</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"email.invalid && email.touched\" required\r\n formControlName=\"email\">\r\n <div class=\"invalid-feedback\">\r\n {{'An email is required' | translate}}\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'First name' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"firstName\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Last name' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"lastName\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Phone' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"phone\">\r\n </div>\r\n </div>\r\n </div> -->", styles: [".form-group{margin:1.5rem 0}.search-button{width:fit-content}li.ml-4{margin-left:3rem}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"], components: [{ type: i1.LoaderComponent, selector: "lib-loader", inputs: ["useLogo", "color"] }, { type: ChevronComponent, selector: "lib-chevron", inputs: ["conditionShowing"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i3.TranslatePipe, "date": i5.DatePipe } });
207
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: OrganisationComponent, decorators: [{
208
208
  type: Component,
209
- args: [{ selector: 'lib-organisation', template: "<div class=\"container-fluid\" class=\"dashboard-tab\">\n <h3>{{'SmarterPlan Client Organisations' | translate}}</h3>\n <div class=\"row\">\n <div class=\"col-md-8 col-lg-6\">\n\n <div *ngIf=\"error\" class=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\n <strong>{{'Error' | translate}}!</strong> We haven't been able to fulfil your request.\n <button type=\"button\" class=\"close\" data-dismiss=\"alert\" (click)=\"onDismiss()\" aria-label=\"Close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n\n <div *ngIf=\"!create && !editing\">\n <div class=\"d-flex justify-content-between align-items-center p-1\">\n <input class=\"form-control search-button\" [(ngModel)]=\"query\" i18n-placeholder placeholder=\"Search\"\n type=\"text\">&nbsp;\n </div>\n <!-- <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"onAdd()\">{{'Add new client organisation' |\n translate}}</button> -->\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\n <lib-loader></lib-loader>\n </div>\n <ul class=\"list-group list-group-flush\">\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let a of clients; index as index\"\n (click)=\"onToggleDetail(index)\">\n <div class=\"d-flex justify-content-between align-items-center\">\n {{a.name}}\n <lib-chevron [conditionShowing]=\"index==details\"></lib-chevron>\n <!-- <ic-icon [icon]=\"index==details ? chevronDown : chevronRight\"></ic-icon> -->\n </div>\n\n <div *ngIf=\"index==details\">\n <ul class=\"list-group list-group-flush\">\n <!-- <li class=\"list-group-item bg-transparent\">{{'Activit\u00E9' | translate}}</li> -->\n <li class=\"list-group-item bg-transparent\">{{'Address' | translate}}: {{ a.organisation.address }}</li>\n <li class=\"list-group-item bg-transparent\">{{ 'Postal Code' | translate}}: {{ a.organisation.postal }}\n </li>\n <li class=\"list-group-item bg-transparent\">{{'City' | translate}}: {{ a.organisation.city }}</li>\n <li class=\"list-group-item bg-transparent\">{{'SIRET' | translate}}: {{ a.organisation.siret ?\n a.organisation.siret : 'Not provided' | translate }}</li>\n <li class=\"list-group-item bg-transparent\">{{'Created' | translate}}: {{ a.organisation.createdAt | date:'long' }}\n </li>\n <ng-container *ngIf=\"a.adminMissions.length > 0\">\n <li *ngIf=\"a.adminMissions.length <= 1\" class=\"list-group-item bg-transparent\">\n {{'Administrator User' | translate}} :</li>\n <li *ngIf=\"a.adminMissions.length > 1\" class=\"list-group-item bg-transparent\">\n {{'Administrator User(s)' | translate}} :</li>\n <li class=\"list-group-item list-group-item-action\"\n *ngFor=\"let admin of a.adminMissions; index as index\" (click)=\"onToggleDetail(index)\">\n <ul class=\"list-group list-group-flush\">\n <li class=\"ml-4\"> {{admin.user.displayName}} ({{admin.user.email}})\n <!-- <button type=\"button\" class=\"btn btn-primary rounded-pill\" style=\"float: right;\"\n (click)=\"onRemoveAdmin(admin)\">\n {{'Remove'|translate}}</button> \n </li>\n <li class=\"list-group-item bg-transparent\">{{'Phone'}}: {{admin.user.phone}}</li> -->\n </ul>\n\n </ng-container>\n <ng-container *ngIf=\"a.adminMissions.length == 0\">\n <li class=\"list-group-item bg-warning\"><span class=\"badge badge-warning\">\n {{'Warning' | translate}}</span> {{'No Administrator User'| translate}} </li>\n </ng-container>\n <ng-container *ngIf=\"a.properties.length > 0\">\n <li class=\"list-group-item bg-transparent\">{{'Locations' | translate}}: </li>\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let property of a.properties\">\n <ul class=\"list-group list-group-flush\">\n <li class=\"ml-4\">{{property}}</li>\n </ul>\n </li>\n </ng-container>\n </ul>\n <div class=\"action-button-container\">\n <button type=\"button\" class=\"btn btn-primary rounded-pill action-button\"\n (click)=\"onEdit(a.organisation)\">\n {{'Edit' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary rounded-pill action-button\"\n (click)=\"onArchive(a.organisation)\" disabled>\n {{'Archive' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary rounded-pill action-button\"\n (click)=\"onDeleteOrg(a.organisation)\">\n {{'Delete' | translate}}</button>\n </div>\n </div>\n </li>\n </ul>\n </div>\n\n <div *ngIf=\"form && (create || editing)\">\n <form (ngSubmit)=\"onSubmitOrg()\" [formGroup]=\"form\">\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"name.invalid && name.touched\" required\n formControlName=\"name\">\n <div class=\"invalid-feedback\">\n {{'A name is required' | translate}}\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"address\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'City' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"city\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Postal code' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"postal\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'SIRET' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"siret\">\n </div>\n </div>\n <div *ngIf=\"working\">\n <lib-loader></lib-loader>\n </div>\n <div class=\"action-button-container\">\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill action-button\"\n [disabled]=\"working || form.invalid\">{{'Save' | translate}}</button>\n <button type=\"button\" (click)=\"onCancel()\" [disabled]=\"working\"\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\n </div>\n </form>\n </div>\n <!--<spOrganisationForm [model]=\" editingOrganisation\" (submit)=\"onSave($event)\" (cancel)=\"onCancel()\">\n </spOrganisationForm>-->\n </div>\n </div>\n</div>\n\n<!-- <div>{{'Administrator User' | translate}}</div>\n <div formGroupName=\"user\" *ngIf=\"create || isAddingAdmin\">\n <div *ngIf=\"form\" class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Email' | translate}} *</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"email.invalid && email.touched\" required\n formControlName=\"email\">\n <div class=\"invalid-feedback\">\n {{'An email is required' | translate}}\n </div>\n </div>\n </div>\n \n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'First name' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"firstName\">\n </div>\n </div>\n \n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Last name' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"lastName\">\n </div>\n </div>\n \n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Phone' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"phone\">\n </div>\n </div>\n </div> -->", styles: [".form-group{margin:1.5rem 0}.search-button{width:-moz-fit-content;width:fit-content}li.ml-4{margin-left:3rem}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"] }]
209
+ args: [{ selector: 'lib-organisation', template: "<div class=\"container-fluid\" class=\"dashboard-tab\">\r\n <h3>{{'SmarterPlan Client Organisations' | translate}}</h3>\r\n <div class=\"row\">\r\n <div class=\"col-md-8 col-lg-6\">\r\n\r\n <div *ngIf=\"error\" class=\"alert alert-danger alert-dismissible fade show\" role=\"alert\">\r\n <strong>{{'Error' | translate}}!</strong> We haven't been able to fulfil your request.\r\n <button type=\"button\" class=\"close\" data-dismiss=\"alert\" (click)=\"onDismiss()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"!create && !editing\">\r\n <div class=\"d-flex justify-content-between align-items-center p-1\">\r\n <input class=\"form-control search-button\" [(ngModel)]=\"query\" i18n-placeholder placeholder=\"Search\"\r\n type=\"text\">&nbsp;\r\n </div>\r\n <!-- <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"onAdd()\">{{'Add new client organisation' |\r\n translate}}</button> -->\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\r\n <lib-loader></lib-loader>\r\n </div>\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let a of clients; index as index\"\r\n (click)=\"onToggleDetail(index)\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n {{a.name}}\r\n <lib-chevron [conditionShowing]=\"index==details\"></lib-chevron>\r\n <!-- <ic-icon [icon]=\"index==details ? chevronDown : chevronRight\"></ic-icon> -->\r\n </div>\r\n\r\n <div *ngIf=\"index==details\">\r\n <ul class=\"list-group list-group-flush\">\r\n <!-- <li class=\"list-group-item bg-transparent\">{{'Activit\u00E9' | translate}}</li> -->\r\n <li class=\"list-group-item bg-transparent\">{{'Address' | translate}}: {{ a.organisation.address }}</li>\r\n <li class=\"list-group-item bg-transparent\">{{ 'Postal Code' | translate}}: {{ a.organisation.postal }}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\">{{'City' | translate}}: {{ a.organisation.city }}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'SIRET' | translate}}: {{ a.organisation.siret ?\r\n a.organisation.siret : 'Not provided' | translate }}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Created' | translate}}: {{ a.organisation.createdAt | date:'long' }}\r\n </li>\r\n <ng-container *ngIf=\"a.adminMissions.length > 0\">\r\n <li *ngIf=\"a.adminMissions.length <= 1\" class=\"list-group-item bg-transparent\">\r\n {{'Administrator User' | translate}} :</li>\r\n <li *ngIf=\"a.adminMissions.length > 1\" class=\"list-group-item bg-transparent\">\r\n {{'Administrator User(s)' | translate}} :</li>\r\n <li class=\"list-group-item list-group-item-action\"\r\n *ngFor=\"let admin of a.adminMissions; index as index\" (click)=\"onToggleDetail(index)\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"ml-4\"> {{admin.user.displayName}} ({{admin.user.email}})\r\n <!-- <button type=\"button\" class=\"btn btn-primary rounded-pill\" style=\"float: right;\"\r\n (click)=\"onRemoveAdmin(admin)\">\r\n {{'Remove'|translate}}</button> \r\n </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Phone'}}: {{admin.user.phone}}</li> -->\r\n </ul>\r\n\r\n </ng-container>\r\n <ng-container *ngIf=\"a.adminMissions.length == 0\">\r\n <li class=\"list-group-item bg-warning\"><span class=\"badge badge-warning\">\r\n {{'Warning' | translate}}</span> {{'No Administrator User'| translate}} </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"a.properties.length > 0\">\r\n <li class=\"list-group-item bg-transparent\">{{'Locations' | translate}}: </li>\r\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let property of a.properties\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"ml-4\">{{property}}</li>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <div class=\"action-button-container\">\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill action-button\"\r\n (click)=\"onEdit(a.organisation)\">\r\n {{'Edit' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill action-button\"\r\n (click)=\"onArchive(a.organisation)\" disabled>\r\n {{'Archive' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill action-button\"\r\n (click)=\"onDeleteOrg(a.organisation)\">\r\n {{'Delete' | translate}}</button>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div *ngIf=\"form && (create || editing)\">\r\n <form (ngSubmit)=\"onSubmitOrg()\" [formGroup]=\"form\">\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"name.invalid && name.touched\" required\r\n formControlName=\"name\">\r\n <div class=\"invalid-feedback\">\r\n {{'A name is required' | translate}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"address\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'City' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"city\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Postal code' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"postal\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'SIRET' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"siret\">\r\n </div>\r\n </div>\r\n <div *ngIf=\"working\">\r\n <lib-loader></lib-loader>\r\n </div>\r\n <div class=\"action-button-container\">\r\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill action-button\"\r\n [disabled]=\"working || form.invalid\">{{'Save' | translate}}</button>\r\n <button type=\"button\" (click)=\"onCancel()\" [disabled]=\"working\"\r\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n <!--<spOrganisationForm [model]=\" editingOrganisation\" (submit)=\"onSave($event)\" (cancel)=\"onCancel()\">\r\n </spOrganisationForm>-->\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!-- <div>{{'Administrator User' | translate}}</div>\r\n <div formGroupName=\"user\" *ngIf=\"create || isAddingAdmin\">\r\n <div *ngIf=\"form\" class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Email' | translate}} *</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"email.invalid && email.touched\" required\r\n formControlName=\"email\">\r\n <div class=\"invalid-feedback\">\r\n {{'An email is required' | translate}}\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'First name' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"firstName\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Last name' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"lastName\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Phone' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"phone\">\r\n </div>\r\n </div>\r\n </div> -->", styles: [".form-group{margin:1.5rem 0}.search-button{width:fit-content}li.ml-4{margin-left:3rem}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"] }]
210
210
  }], ctorParameters: function () { return [{ type: i1.OrganisationService }, { type: i1$1.FormBuilder }, { type: i1.BaseUserService }, { type: i1.MissionService }, { type: i3.TranslateService }, { type: i1.PropertyService }]; } });
211
211
 
212
212
  class GuestLinkComponent {
@@ -252,11 +252,11 @@ class GuestLinkComponent {
252
252
  }
253
253
  }
254
254
  }
255
- GuestLinkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: GuestLinkComponent, deps: [{ token: i1.SpaceService }, { token: i4.NgbActiveModal }], target: i0.ɵɵFactoryTarget.Component });
256
- GuestLinkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: GuestLinkComponent, selector: "lib-guest-link", inputs: { spaceID: "spaceID", username: "username" }, ngImport: i0, template: "<div class=\"main\">\n <p>{{'Current password for account:' | translate}} {{username}}</p>\n <input type=\"password\" class=\"form-control\" id=\"password\">\n <p *ngIf=\"errorMessage\">{{errorMessage}}</p>\n <div class=\"row ml-0 mt-3\" *ngIf=\"link\">\n <a id=\"linkHref\" target=\"_blank\">{{'Try the link' | translate }}</a>\n <div ngxClipboard [cbContent]=\"link\" [style.cursor]=\"'pointer'\" style=\"margin-left: 5px; max-width: 20px;\"\n ngbTooltip=\"Copied!\" triggers=\"click:blur\">\n <span class=\"iconify\" data-icon=\"mdi:content-copy\" data-inline=\"false\" data-width=\"20\"\n data-height=\"20\"></span>\n </div>\n\n </div>\n <div class=\"row ml-0 mt-3\">\n <button class=\"btn btn-primary rounded-pill mr-2\" (click)=\"onGenerate()\">{{'Generate link' | translate\n }}</button>\n <button class=\"btn btn-primary rounded-pill\" (click)=\"onCancel()\">{{'Cancel' | translate }}</button>\n </div>\n\n</div>\n", styles: [".main{margin:1.5rem}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.ClipboardDirective, selector: "[ngxClipboard]", inputs: ["ngxClipboard", "container", "cbContent", "cbSuccessMsg"], outputs: ["cbOnSuccess", "cbOnError"] }, { type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }], pipes: { "translate": i3.TranslatePipe } });
257
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: GuestLinkComponent, decorators: [{
255
+ GuestLinkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GuestLinkComponent, deps: [{ token: i1.SpaceService }, { token: i4.NgbActiveModal }], target: i0.ɵɵFactoryTarget.Component });
256
+ GuestLinkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: GuestLinkComponent, selector: "lib-guest-link", inputs: { spaceID: "spaceID", username: "username" }, ngImport: i0, template: "<div class=\"main\">\r\n <p>{{'Current password for account:' | translate}} {{username}}</p>\r\n <input type=\"password\" class=\"form-control\" id=\"password\">\r\n <p *ngIf=\"errorMessage\">{{errorMessage}}</p>\r\n <div class=\"row ml-0 mt-3\" *ngIf=\"link\">\r\n <a id=\"linkHref\" target=\"_blank\">{{'Try the link' | translate }}</a>\r\n <div ngxClipboard [cbContent]=\"link\" [style.cursor]=\"'pointer'\" style=\"margin-left: 5px; max-width: 20px;\"\r\n ngbTooltip=\"Copied!\" triggers=\"click:blur\">\r\n <span class=\"iconify\" data-icon=\"mdi:content-copy\" data-inline=\"false\" data-width=\"20\"\r\n data-height=\"20\"></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row ml-0 mt-3\">\r\n <button class=\"btn btn-primary rounded-pill mr-2\" (click)=\"onGenerate()\">{{'Generate link' | translate\r\n }}</button>\r\n <button class=\"btn btn-primary rounded-pill\" (click)=\"onCancel()\">{{'Cancel' | translate }}</button>\r\n </div>\r\n\r\n</div>\r\n", styles: [".main{margin:1.5rem}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4$1.ClipboardDirective, selector: "[ngxClipboard]", inputs: ["ngxClipboard", "container", "cbContent", "cbSuccessMsg"], outputs: ["cbOnSuccess", "cbOnError"] }, { type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }], pipes: { "translate": i3.TranslatePipe } });
257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GuestLinkComponent, decorators: [{
258
258
  type: Component,
259
- args: [{ selector: 'lib-guest-link', template: "<div class=\"main\">\n <p>{{'Current password for account:' | translate}} {{username}}</p>\n <input type=\"password\" class=\"form-control\" id=\"password\">\n <p *ngIf=\"errorMessage\">{{errorMessage}}</p>\n <div class=\"row ml-0 mt-3\" *ngIf=\"link\">\n <a id=\"linkHref\" target=\"_blank\">{{'Try the link' | translate }}</a>\n <div ngxClipboard [cbContent]=\"link\" [style.cursor]=\"'pointer'\" style=\"margin-left: 5px; max-width: 20px;\"\n ngbTooltip=\"Copied!\" triggers=\"click:blur\">\n <span class=\"iconify\" data-icon=\"mdi:content-copy\" data-inline=\"false\" data-width=\"20\"\n data-height=\"20\"></span>\n </div>\n\n </div>\n <div class=\"row ml-0 mt-3\">\n <button class=\"btn btn-primary rounded-pill mr-2\" (click)=\"onGenerate()\">{{'Generate link' | translate\n }}</button>\n <button class=\"btn btn-primary rounded-pill\" (click)=\"onCancel()\">{{'Cancel' | translate }}</button>\n </div>\n\n</div>\n", styles: [".main{margin:1.5rem}\n"] }]
259
+ args: [{ selector: 'lib-guest-link', template: "<div class=\"main\">\r\n <p>{{'Current password for account:' | translate}} {{username}}</p>\r\n <input type=\"password\" class=\"form-control\" id=\"password\">\r\n <p *ngIf=\"errorMessage\">{{errorMessage}}</p>\r\n <div class=\"row ml-0 mt-3\" *ngIf=\"link\">\r\n <a id=\"linkHref\" target=\"_blank\">{{'Try the link' | translate }}</a>\r\n <div ngxClipboard [cbContent]=\"link\" [style.cursor]=\"'pointer'\" style=\"margin-left: 5px; max-width: 20px;\"\r\n ngbTooltip=\"Copied!\" triggers=\"click:blur\">\r\n <span class=\"iconify\" data-icon=\"mdi:content-copy\" data-inline=\"false\" data-width=\"20\"\r\n data-height=\"20\"></span>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row ml-0 mt-3\">\r\n <button class=\"btn btn-primary rounded-pill mr-2\" (click)=\"onGenerate()\">{{'Generate link' | translate\r\n }}</button>\r\n <button class=\"btn btn-primary rounded-pill\" (click)=\"onCancel()\">{{'Cancel' | translate }}</button>\r\n </div>\r\n\r\n</div>\r\n", styles: [".main{margin:1.5rem}\n"] }]
260
260
  }], ctorParameters: function () { return [{ type: i1.SpaceService }, { type: i4.NgbActiveModal }]; }, propDecorators: { spaceID: [{
261
261
  type: Input
262
262
  }], username: [{
@@ -498,11 +498,11 @@ class FormMissionComponent {
498
498
  }
499
499
  }
500
500
  }
501
- FormMissionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: FormMissionComponent, deps: [{ token: i1$1.FormBuilder }, { token: i1.SpaceService }, { token: i1.BaseUserService }, { token: i1.DomainService }, { token: i1.OrganisationService }, { token: i1.ZoneService }, { token: i1.HashtagService }, { token: i1.LocaleService }, { token: i1.ValidatorsService }], target: i0.ɵɵFactoryTarget.Component });
502
- FormMissionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: FormMissionComponent, selector: "lib-form-mission", inputs: { missionToEdit: "missionToEdit", organisationForMission: "organisationForMission", isSP: "isSP", userForMissionID: "userForMissionID", currentUserOrganisation: "currentUserOrganisation" }, outputs: { addedMissionInput: "addedMissionInput" }, ngImport: i0, template: "<div class=\"form-containter\" *ngIf=\"missionForm\">\n <div style=\"margin-top: 1rem;\">\n <h4>{{ 'Mission details' | translate }}</h4>\n </div>\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"missionForm\">\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Organisation' | translate}}</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" data-testid=\"form-mission-organisation\" class=\"form-control\"\n formControlName=\"organisation\">\n </div>\n </div>\n\n <div class=\"form-group row\" *ngIf=\"isSP\">\n <label class=\"col-sm-4 col-form-label\">{{ 'Ordered by' | translate }}</label>\n <div class=\"col-sm-8\">\n <select class=\"form-control\" required formControlName=\"orderedOrganisationID\">\n <option *ngFor=\"let org of allOrgs\" [ngValue]=\"org.id\">\n {{ org.name }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Description' | translate}}</label>\n <div class=\"col-sm-8\">\n <textarea class=\"form-control\" formControlName=\"description\" rows=\"10\" (ngModelChange)=\"onVerifForm()\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['description'])|| isFormError(missionForm.controls['description'])} \"\n data-testid=\"form-mission-description\"></textarea>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-mission-description-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['description']) \n || isFormError(missionForm.controls['description'])\">\n {{validatorsService.getError(missionForm.controls['description']) |\n translate}}\n </ngb-alert>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Role' | translate}}*</label>\n <div class=\"col-sm-8\">\n <select class=\"form-control\" required formControlName=\"role\" data-testid=\"form-mission-role\" (ngModelChange)=\"onVerifForm()\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['role'])|| isFormError(missionForm.controls['role'])} \">\n <option *ngFor=\"let r of availableRoles\" [ngValue]=\"r\">\n {{ r }}\n </option>\n </select>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-mission-role-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['role']) \n || isFormError(missionForm.controls['role'])\">\n {{validatorsService.getError(missionForm.controls['role']) |\n translate}}\n </ngb-alert>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\"\n *ngIf=\"missionForm.get('role').value !== 'VISITOR_MUSEUM' && missionForm.get('role').value !== 'GUIDE_MUSEUM'\">\n <label class=\"col-sm-4 col-form-label\">{{'Domains' | translate}}</label>\n <div class=\"col-sm-8\" *ngIf=\"domains\">\n <select class=\"form-control\" multiple formControlName=\"domains\">\n <option *ngFor=\"let domain of domains\" [ngValue]=\"domain.id\">\n {{ domain.name }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Access level' | translate}}</label>\n <div class=\"col-sm-8\">\n <select class=\"form-control\" required formControlName=\"level\" data-testid=\"form-mission-level\">\n <option *ngFor=\"let level of availableLevels\" [ngValue]=\"level\">\n {{ level }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized location' | translate }}*</label>\n <div class=\"col-sm-8\" *ngIf=\"availableSpaces\">\n <select class=\"form-control\" required formControlName=\"space\" (ngModelChange)=\"onVerifForm()\" (change)=\"onSpaceClick()\"\n data-testid=\"form-mission-space\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['space'])|| isFormError(missionForm.controls['space'])} \">\n <option *ngFor=\"let space of availableSpaces\" [ngValue]=\"space.id\">\n {{ space.name }}\n </option>\n </select>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-mission-space-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['space']) \n || isFormError(missionForm.controls['space'])\">\n {{validatorsService.getError(missionForm.controls['space']) |\n translate}}\n </ngb-alert>\n </div>\n </div>\n <div class=\"col-sm-8\" *ngIf=\"!availableSpaces\">\n {{ 'No locations available' | translate}}\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized zone' | translate }}</label>\n <div class=\"col-sm-8\" *ngIf=\"zonesForSpace; else noSpace\">\n <select class=\"form-control\" formControlName=\"zone\" data-testid=\"form-mission-zone\">\n <option [ngValue]=\"defaultZone.id\">\n {{ 'All zones' | translate }}\n </option>\n <option *ngFor=\"let zone of zonesForSpace\" [ngValue]=\"zone.id\">\n {{ zone.name }}\n </option>\n </select>\n </div>\n <ng-template #noSpace>\n <div class=\"col-sm-8 hint-container\">\n <p class=\"hint keywordsRules\">{{'You need to choose the location first' | translate}} </p>\n </div>\n </ng-template>\n </div>\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Language' | translate}}</label>\n <div class=\"col-sm-8\">\n <select class=\"form-control\" formControlName=\"locale\">\n <option [ngValue]=\"null\">{{'Not applicable' | translate}}</option>\n <option *ngFor=\"let locale of locales\" [ngValue]=\"locale\">\n {{ locale }}\n </option>\n </select>\n </div>\n </div>\n <!-- Hashtags are available after Space is set -->\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Hashtags' | translate}}</label>\n <div class=\"col-sm-8\" *ngIf=\"spaceID.value\">\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length > 0\">{{'Available hashtags' | translate}} </p>\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length === 0\">\n {{'No hashtags created for this location' | translate}} </p>\n <div *ngIf=\"availableHashtags.length > 0\">\n <ul class=\"keywordsDisplay no-border\">\n <div class=\"keywordsdisplayContainer\">\n <li *ngFor=\"let hashtag of availableHashtags\"\n [class]=\"hashtagAdded(hashtag) ? 'keywordsItem added' : 'keywordsItem'\"\n (click)=\"onHashtagClick(hashtag)\" style=\"cursor: pointer;\"\n ngbTooltip=\"{{hashtagAdded(hashtag) ? ('Remove'|translate) : ('Add'|translate) }}\">\n {{hashtag.name}}\n </li>\n </div>\n </ul>\n <p class=\"keywordsRules\">{{'Added hashtags' | translate}} </p>\n <ul class=\"keywordsDisplay\">\n <div class=\"keywordsdisplayContainer\" *ngIf=\"addedHashtags.length> 0\">\n <li class=\"keywordsItem\" *ngFor=\"let hashtag of addedHashtags\">{{ hashtag.name }}\n <a type=\"button\" class=\"closeButton\" (click)=\"removeHashtag(hashtag)\">\n <span class=\"crossItem\"></span>\n </a>\n </li>\n </div>\n </ul>\n </div>\n </div>\n <div class=\"col-sm-8 hint-container\" *ngIf=\"!spaceID.value\">\n <p class=\"hint keywordsRules\">{{'You need to choose the location first' | translate}} </p>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Mission Start Date' | translate}}</label>\n <div class=\"input-group col-sm-8\">\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" formControlName=\"startDate\" ngbDatepicker\n #d1=\"ngbDatepicker\" data-testid=\"form-mission-startDate\" (ngModelChange)=\"onVerifDate();onVerifForm()\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['startDate'])|| isFormError(missionForm.controls['startDate'])} \">\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d1.toggle()\" type=\"button\"></button>\n </div>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-mission-startDate-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['startDate']) \n || isFormError(missionForm.controls['startDate'])\">\n {{validatorsService.getError(missionForm.controls['startDate']) |\n translate}}\n </ngb-alert>\n\n <ngb-alert data-testid=\"form-mission-startDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\"dateError\">\n {{'errorForm.date_start_end' |\n translate}}\n </ngb-alert>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Mission Start Time' | translate}}</label>\n <div class=\"input-group col-sm-8 timeZoneContainer\">\n <ngb-timepicker [(ngModel)]=\"missionTimeStart\" [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onVerifDate();onVerifForm()\"></ngb-timepicker>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Mission End Date' | translate}}</label>\n <div class=\"input-group col-sm-8\">\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" ngbDatepicker #d2=\"ngbDatepicker\"\n formControlName=\"endDate\" data-testid=\"form-mission-endDate\"\n [class.is-invalid]=\"validatorsService.isControlError(missionForm.controls['endDate'])\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['endDate'])|| isFormError(missionForm.controls['endDate'])} \"\n (ngModelChange)=\"onVerifDate();onVerifForm()\">\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d2.toggle()\" type=\"button\"></button>\n </div>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-mission-endDate-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['endDate']) \n || isFormError(missionForm.controls['endDate'])\">\n {{validatorsService.getError(missionForm.controls['endDate']) |\n translate}}\n </ngb-alert>\n\n <ngb-alert data-testid=\"form-mission-endDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\"dateError\">\n {{'errorForm.date_end_start' |\n translate}}\n </ngb-alert>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Mission End Time' | translate}}</label>\n <div class=\"input-group col-sm-8 timeZoneContainer\">\n <ngb-timepicker [(ngModel)]=\"missionTimeEnd\" [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onVerifDate();onVerifForm()\"></ngb-timepicker>\n </div>\n </div>\n\n <div class=\"btn-control-div action-button-container\">\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill mr-3 action-button\"\n data-testid=\"form-mission-submit-btn\" [ngClass]=\"{'is-invalid' : errorForm }\">{{'Save' |\n translate}}</button>\n <button type=\"button\" (click)=\"onCancel()\" data-testid=\"form-mission-cancel-btn\"\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' |\n translate}}</button>\n </div>\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\n <ngb-alert data-testid=\"form-mission-invalid\" [dismissible]=\"false\" type=\"danger\">\n {{'errorForm.infoBtn' |translate}}\n </ngb-alert>\n </div>\n </form>\n</div>", styles: [".form-containter{padding:0rem 1rem;margin-bottom:2rem}.checkbox-apply{margin-top:calc(.375rem + 1px)}.keywordsDisplay{min-height:40px}.hint{margin:0!important}.hint-container{display:flex;align-items:center}.crossItem{margin:0;padding:0;border:0;background:none;position:relative;width:7px;height:20px}.crossItem:before,.crossItem:after{content:\"\";position:absolute;top:6.25px;left:0;right:0;height:1.5px;background:#fff;border-radius:1.5px}.crossItem:before{transform:rotate(45deg)}.crossItem:after{transform:rotate(-45deg)}.crossItem span{display:block}.btn-control-div .btn{width:8rem}.timeZoneContainer{align-items:center}.timeZoneContainer span{margin-left:5px}.form-group{margin:1.5rem 0}label.col-sm-4.col-form-label{width:200px;min-width:200px}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"], components: [{ type: i4.NgbAlert, selector: "ngb-alert", inputs: ["animation", "dismissible", "type"], outputs: ["closed"], exportAs: ["ngbAlert"] }, { type: i4.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i4.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i3.TranslatePipe } });
503
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: FormMissionComponent, decorators: [{
501
+ FormMissionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FormMissionComponent, deps: [{ token: i1$1.FormBuilder }, { token: i1.SpaceService }, { token: i1.BaseUserService }, { token: i1.DomainService }, { token: i1.OrganisationService }, { token: i1.ZoneService }, { token: i1.HashtagService }, { token: i1.LocaleService }, { token: i1.ValidatorsService }], target: i0.ɵɵFactoryTarget.Component });
502
+ FormMissionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FormMissionComponent, selector: "lib-form-mission", inputs: { missionToEdit: "missionToEdit", organisationForMission: "organisationForMission", isSP: "isSP", userForMissionID: "userForMissionID", currentUserOrganisation: "currentUserOrganisation" }, outputs: { addedMissionInput: "addedMissionInput" }, ngImport: i0, template: "<div class=\"form-containter\" *ngIf=\"missionForm\">\r\n <div style=\"margin-top: 1rem;\">\r\n <h4>{{ 'Mission details' | translate }}</h4>\r\n </div>\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"missionForm\">\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Organisation' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <input type=\"text\" data-testid=\"form-mission-organisation\" class=\"form-control\"\r\n formControlName=\"organisation\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\" *ngIf=\"isSP\">\r\n <label class=\"col-sm-4 col-form-label\">{{ 'Ordered by' | translate }}</label>\r\n <div class=\"col-sm-8\">\r\n <select class=\"form-control\" required formControlName=\"orderedOrganisationID\">\r\n <option *ngFor=\"let org of allOrgs\" [ngValue]=\"org.id\">\r\n {{ org.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Description' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <textarea class=\"form-control\" formControlName=\"description\" rows=\"10\" (ngModelChange)=\"onVerifForm()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['description'])|| isFormError(missionForm.controls['description'])} \"\r\n data-testid=\"form-mission-description\"></textarea>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-mission-description-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['description']) \r\n || isFormError(missionForm.controls['description'])\">\r\n {{validatorsService.getError(missionForm.controls['description']) |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Role' | translate}}*</label>\r\n <div class=\"col-sm-8\">\r\n <select class=\"form-control\" required formControlName=\"role\" data-testid=\"form-mission-role\" (ngModelChange)=\"onVerifForm()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['role'])|| isFormError(missionForm.controls['role'])} \">\r\n <option *ngFor=\"let r of availableRoles\" [ngValue]=\"r\">\r\n {{ r }}\r\n </option>\r\n </select>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-mission-role-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['role']) \r\n || isFormError(missionForm.controls['role'])\">\r\n {{validatorsService.getError(missionForm.controls['role']) |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\"\r\n *ngIf=\"missionForm.get('role').value !== 'VISITOR_MUSEUM' && missionForm.get('role').value !== 'GUIDE_MUSEUM'\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Domains' | translate}}</label>\r\n <div class=\"col-sm-8\" *ngIf=\"domains\">\r\n <select class=\"form-control\" multiple formControlName=\"domains\">\r\n <option *ngFor=\"let domain of domains\" [ngValue]=\"domain.id\">\r\n {{ domain.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Access level' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <select class=\"form-control\" required formControlName=\"level\" data-testid=\"form-mission-level\">\r\n <option *ngFor=\"let level of availableLevels\" [ngValue]=\"level\">\r\n {{ level }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized location' | translate }}*</label>\r\n <div class=\"col-sm-8\" *ngIf=\"availableSpaces\">\r\n <select class=\"form-control\" required formControlName=\"space\" (ngModelChange)=\"onVerifForm()\" (change)=\"onSpaceClick()\"\r\n data-testid=\"form-mission-space\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['space'])|| isFormError(missionForm.controls['space'])} \">\r\n <option *ngFor=\"let space of availableSpaces\" [ngValue]=\"space.id\">\r\n {{ space.name }}\r\n </option>\r\n </select>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-mission-space-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['space']) \r\n || isFormError(missionForm.controls['space'])\">\r\n {{validatorsService.getError(missionForm.controls['space']) |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-8\" *ngIf=\"!availableSpaces\">\r\n {{ 'No locations available' | translate}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized zone' | translate }}</label>\r\n <div class=\"col-sm-8\" *ngIf=\"zonesForSpace; else noSpace\">\r\n <select class=\"form-control\" formControlName=\"zone\" data-testid=\"form-mission-zone\">\r\n <option [ngValue]=\"defaultZone.id\">\r\n {{ 'All zones' | translate }}\r\n </option>\r\n <option *ngFor=\"let zone of zonesForSpace\" [ngValue]=\"zone.id\">\r\n {{ zone.name }}\r\n </option>\r\n </select>\r\n </div>\r\n <ng-template #noSpace>\r\n <div class=\"col-sm-8 hint-container\">\r\n <p class=\"hint keywordsRules\">{{'You need to choose the location first' | translate}} </p>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Language' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <select class=\"form-control\" formControlName=\"locale\">\r\n <option [ngValue]=\"null\">{{'Not applicable' | translate}}</option>\r\n <option *ngFor=\"let locale of locales\" [ngValue]=\"locale\">\r\n {{ locale }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n <!-- Hashtags are available after Space is set -->\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Hashtags' | translate}}</label>\r\n <div class=\"col-sm-8\" *ngIf=\"spaceID.value\">\r\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length > 0\">{{'Available hashtags' | translate}} </p>\r\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length === 0\">\r\n {{'No hashtags created for this location' | translate}} </p>\r\n <div *ngIf=\"availableHashtags.length > 0\">\r\n <ul class=\"keywordsDisplay no-border\">\r\n <div class=\"keywordsdisplayContainer\">\r\n <li *ngFor=\"let hashtag of availableHashtags\"\r\n [class]=\"hashtagAdded(hashtag) ? 'keywordsItem added' : 'keywordsItem'\"\r\n (click)=\"onHashtagClick(hashtag)\" style=\"cursor: pointer;\"\r\n ngbTooltip=\"{{hashtagAdded(hashtag) ? ('Remove'|translate) : ('Add'|translate) }}\">\r\n {{hashtag.name}}\r\n </li>\r\n </div>\r\n </ul>\r\n <p class=\"keywordsRules\">{{'Added hashtags' | translate}} </p>\r\n <ul class=\"keywordsDisplay\">\r\n <div class=\"keywordsdisplayContainer\" *ngIf=\"addedHashtags.length> 0\">\r\n <li class=\"keywordsItem\" *ngFor=\"let hashtag of addedHashtags\">{{ hashtag.name }}\r\n <a type=\"button\" class=\"closeButton\" (click)=\"removeHashtag(hashtag)\">\r\n <span class=\"crossItem\"></span>\r\n </a>\r\n </li>\r\n </div>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-8 hint-container\" *ngIf=\"!spaceID.value\">\r\n <p class=\"hint keywordsRules\">{{'You need to choose the location first' | translate}} </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Mission Start Date' | translate}}</label>\r\n <div class=\"input-group col-sm-8\">\r\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" formControlName=\"startDate\" ngbDatepicker\r\n #d1=\"ngbDatepicker\" data-testid=\"form-mission-startDate\" (ngModelChange)=\"onVerifDate();onVerifForm()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['startDate'])|| isFormError(missionForm.controls['startDate'])} \">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d1.toggle()\" type=\"button\"></button>\r\n </div>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-mission-startDate-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['startDate']) \r\n || isFormError(missionForm.controls['startDate'])\">\r\n {{validatorsService.getError(missionForm.controls['startDate']) |\r\n translate}}\r\n </ngb-alert>\r\n\r\n <ngb-alert data-testid=\"form-mission-startDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"dateError\">\r\n {{'errorForm.date_start_end' |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Mission Start Time' | translate}}</label>\r\n <div class=\"input-group col-sm-8 timeZoneContainer\">\r\n <ngb-timepicker [(ngModel)]=\"missionTimeStart\" [ngModelOptions]=\"{standalone: true}\"\r\n (ngModelChange)=\"onVerifDate();onVerifForm()\"></ngb-timepicker>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Mission End Date' | translate}}</label>\r\n <div class=\"input-group col-sm-8\">\r\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" ngbDatepicker #d2=\"ngbDatepicker\"\r\n formControlName=\"endDate\" data-testid=\"form-mission-endDate\"\r\n [class.is-invalid]=\"validatorsService.isControlError(missionForm.controls['endDate'])\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['endDate'])|| isFormError(missionForm.controls['endDate'])} \"\r\n (ngModelChange)=\"onVerifDate();onVerifForm()\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d2.toggle()\" type=\"button\"></button>\r\n </div>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-mission-endDate-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['endDate']) \r\n || isFormError(missionForm.controls['endDate'])\">\r\n {{validatorsService.getError(missionForm.controls['endDate']) |\r\n translate}}\r\n </ngb-alert>\r\n\r\n <ngb-alert data-testid=\"form-mission-endDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"dateError\">\r\n {{'errorForm.date_end_start' |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Mission End Time' | translate}}</label>\r\n <div class=\"input-group col-sm-8 timeZoneContainer\">\r\n <ngb-timepicker [(ngModel)]=\"missionTimeEnd\" [ngModelOptions]=\"{standalone: true}\"\r\n (ngModelChange)=\"onVerifDate();onVerifForm()\"></ngb-timepicker>\r\n </div>\r\n </div>\r\n\r\n <div class=\"btn-control-div action-button-container\">\r\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill mr-3 action-button\"\r\n data-testid=\"form-mission-submit-btn\" [ngClass]=\"{'is-invalid' : errorForm }\">{{'Save' |\r\n translate}}</button>\r\n <button type=\"button\" (click)=\"onCancel()\" data-testid=\"form-mission-cancel-btn\"\r\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' |\r\n translate}}</button>\r\n </div>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\r\n <ngb-alert data-testid=\"form-mission-invalid\" [dismissible]=\"false\" type=\"danger\">\r\n {{'errorForm.infoBtn' |translate}}\r\n </ngb-alert>\r\n </div>\r\n </form>\r\n</div>", styles: [".form-containter{padding:0rem 1rem;margin-bottom:2rem}.checkbox-apply{margin-top:calc(.375rem + 1px)}.keywordsDisplay{min-height:40px}.hint{margin:0!important}.hint-container{display:flex;align-items:center}.crossItem{margin:0;padding:0;border:0;background:none;position:relative;width:7px;height:20px}.crossItem:before,.crossItem:after{content:\"\";position:absolute;top:6.25px;left:0;right:0;height:1.5px;background:#fff;border-radius:1.5px}.crossItem:before{transform:rotate(45deg)}.crossItem:after{transform:rotate(-45deg)}.crossItem span{display:block}.btn-control-div .btn{width:8rem}.timeZoneContainer{align-items:center}.timeZoneContainer span{margin-left:5px}.form-group{margin:1.5rem 0}label.col-sm-4.col-form-label{width:200px;min-width:200px}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"], components: [{ type: i4.NgbAlert, selector: "ngb-alert", inputs: ["animation", "dismissible", "type"], outputs: ["closed"], exportAs: ["ngbAlert"] }, { type: i4.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i4.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i3.TranslatePipe } });
503
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FormMissionComponent, decorators: [{
504
504
  type: Component,
505
- args: [{ selector: 'lib-form-mission', template: "<div class=\"form-containter\" *ngIf=\"missionForm\">\n <div style=\"margin-top: 1rem;\">\n <h4>{{ 'Mission details' | translate }}</h4>\n </div>\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"missionForm\">\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Organisation' | translate}}</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" data-testid=\"form-mission-organisation\" class=\"form-control\"\n formControlName=\"organisation\">\n </div>\n </div>\n\n <div class=\"form-group row\" *ngIf=\"isSP\">\n <label class=\"col-sm-4 col-form-label\">{{ 'Ordered by' | translate }}</label>\n <div class=\"col-sm-8\">\n <select class=\"form-control\" required formControlName=\"orderedOrganisationID\">\n <option *ngFor=\"let org of allOrgs\" [ngValue]=\"org.id\">\n {{ org.name }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Description' | translate}}</label>\n <div class=\"col-sm-8\">\n <textarea class=\"form-control\" formControlName=\"description\" rows=\"10\" (ngModelChange)=\"onVerifForm()\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['description'])|| isFormError(missionForm.controls['description'])} \"\n data-testid=\"form-mission-description\"></textarea>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-mission-description-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['description']) \n || isFormError(missionForm.controls['description'])\">\n {{validatorsService.getError(missionForm.controls['description']) |\n translate}}\n </ngb-alert>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Role' | translate}}*</label>\n <div class=\"col-sm-8\">\n <select class=\"form-control\" required formControlName=\"role\" data-testid=\"form-mission-role\" (ngModelChange)=\"onVerifForm()\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['role'])|| isFormError(missionForm.controls['role'])} \">\n <option *ngFor=\"let r of availableRoles\" [ngValue]=\"r\">\n {{ r }}\n </option>\n </select>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-mission-role-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['role']) \n || isFormError(missionForm.controls['role'])\">\n {{validatorsService.getError(missionForm.controls['role']) |\n translate}}\n </ngb-alert>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\"\n *ngIf=\"missionForm.get('role').value !== 'VISITOR_MUSEUM' && missionForm.get('role').value !== 'GUIDE_MUSEUM'\">\n <label class=\"col-sm-4 col-form-label\">{{'Domains' | translate}}</label>\n <div class=\"col-sm-8\" *ngIf=\"domains\">\n <select class=\"form-control\" multiple formControlName=\"domains\">\n <option *ngFor=\"let domain of domains\" [ngValue]=\"domain.id\">\n {{ domain.name }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Access level' | translate}}</label>\n <div class=\"col-sm-8\">\n <select class=\"form-control\" required formControlName=\"level\" data-testid=\"form-mission-level\">\n <option *ngFor=\"let level of availableLevels\" [ngValue]=\"level\">\n {{ level }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized location' | translate }}*</label>\n <div class=\"col-sm-8\" *ngIf=\"availableSpaces\">\n <select class=\"form-control\" required formControlName=\"space\" (ngModelChange)=\"onVerifForm()\" (change)=\"onSpaceClick()\"\n data-testid=\"form-mission-space\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['space'])|| isFormError(missionForm.controls['space'])} \">\n <option *ngFor=\"let space of availableSpaces\" [ngValue]=\"space.id\">\n {{ space.name }}\n </option>\n </select>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-mission-space-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['space']) \n || isFormError(missionForm.controls['space'])\">\n {{validatorsService.getError(missionForm.controls['space']) |\n translate}}\n </ngb-alert>\n </div>\n </div>\n <div class=\"col-sm-8\" *ngIf=\"!availableSpaces\">\n {{ 'No locations available' | translate}}\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized zone' | translate }}</label>\n <div class=\"col-sm-8\" *ngIf=\"zonesForSpace; else noSpace\">\n <select class=\"form-control\" formControlName=\"zone\" data-testid=\"form-mission-zone\">\n <option [ngValue]=\"defaultZone.id\">\n {{ 'All zones' | translate }}\n </option>\n <option *ngFor=\"let zone of zonesForSpace\" [ngValue]=\"zone.id\">\n {{ zone.name }}\n </option>\n </select>\n </div>\n <ng-template #noSpace>\n <div class=\"col-sm-8 hint-container\">\n <p class=\"hint keywordsRules\">{{'You need to choose the location first' | translate}} </p>\n </div>\n </ng-template>\n </div>\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Language' | translate}}</label>\n <div class=\"col-sm-8\">\n <select class=\"form-control\" formControlName=\"locale\">\n <option [ngValue]=\"null\">{{'Not applicable' | translate}}</option>\n <option *ngFor=\"let locale of locales\" [ngValue]=\"locale\">\n {{ locale }}\n </option>\n </select>\n </div>\n </div>\n <!-- Hashtags are available after Space is set -->\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Hashtags' | translate}}</label>\n <div class=\"col-sm-8\" *ngIf=\"spaceID.value\">\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length > 0\">{{'Available hashtags' | translate}} </p>\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length === 0\">\n {{'No hashtags created for this location' | translate}} </p>\n <div *ngIf=\"availableHashtags.length > 0\">\n <ul class=\"keywordsDisplay no-border\">\n <div class=\"keywordsdisplayContainer\">\n <li *ngFor=\"let hashtag of availableHashtags\"\n [class]=\"hashtagAdded(hashtag) ? 'keywordsItem added' : 'keywordsItem'\"\n (click)=\"onHashtagClick(hashtag)\" style=\"cursor: pointer;\"\n ngbTooltip=\"{{hashtagAdded(hashtag) ? ('Remove'|translate) : ('Add'|translate) }}\">\n {{hashtag.name}}\n </li>\n </div>\n </ul>\n <p class=\"keywordsRules\">{{'Added hashtags' | translate}} </p>\n <ul class=\"keywordsDisplay\">\n <div class=\"keywordsdisplayContainer\" *ngIf=\"addedHashtags.length> 0\">\n <li class=\"keywordsItem\" *ngFor=\"let hashtag of addedHashtags\">{{ hashtag.name }}\n <a type=\"button\" class=\"closeButton\" (click)=\"removeHashtag(hashtag)\">\n <span class=\"crossItem\"></span>\n </a>\n </li>\n </div>\n </ul>\n </div>\n </div>\n <div class=\"col-sm-8 hint-container\" *ngIf=\"!spaceID.value\">\n <p class=\"hint keywordsRules\">{{'You need to choose the location first' | translate}} </p>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Mission Start Date' | translate}}</label>\n <div class=\"input-group col-sm-8\">\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" formControlName=\"startDate\" ngbDatepicker\n #d1=\"ngbDatepicker\" data-testid=\"form-mission-startDate\" (ngModelChange)=\"onVerifDate();onVerifForm()\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['startDate'])|| isFormError(missionForm.controls['startDate'])} \">\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d1.toggle()\" type=\"button\"></button>\n </div>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-mission-startDate-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['startDate']) \n || isFormError(missionForm.controls['startDate'])\">\n {{validatorsService.getError(missionForm.controls['startDate']) |\n translate}}\n </ngb-alert>\n\n <ngb-alert data-testid=\"form-mission-startDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\"dateError\">\n {{'errorForm.date_start_end' |\n translate}}\n </ngb-alert>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Mission Start Time' | translate}}</label>\n <div class=\"input-group col-sm-8 timeZoneContainer\">\n <ngb-timepicker [(ngModel)]=\"missionTimeStart\" [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onVerifDate();onVerifForm()\"></ngb-timepicker>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Mission End Date' | translate}}</label>\n <div class=\"input-group col-sm-8\">\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" ngbDatepicker #d2=\"ngbDatepicker\"\n formControlName=\"endDate\" data-testid=\"form-mission-endDate\"\n [class.is-invalid]=\"validatorsService.isControlError(missionForm.controls['endDate'])\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['endDate'])|| isFormError(missionForm.controls['endDate'])} \"\n (ngModelChange)=\"onVerifDate();onVerifForm()\">\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d2.toggle()\" type=\"button\"></button>\n </div>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-mission-endDate-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['endDate']) \n || isFormError(missionForm.controls['endDate'])\">\n {{validatorsService.getError(missionForm.controls['endDate']) |\n translate}}\n </ngb-alert>\n\n <ngb-alert data-testid=\"form-mission-endDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\"dateError\">\n {{'errorForm.date_end_start' |\n translate}}\n </ngb-alert>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Mission End Time' | translate}}</label>\n <div class=\"input-group col-sm-8 timeZoneContainer\">\n <ngb-timepicker [(ngModel)]=\"missionTimeEnd\" [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onVerifDate();onVerifForm()\"></ngb-timepicker>\n </div>\n </div>\n\n <div class=\"btn-control-div action-button-container\">\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill mr-3 action-button\"\n data-testid=\"form-mission-submit-btn\" [ngClass]=\"{'is-invalid' : errorForm }\">{{'Save' |\n translate}}</button>\n <button type=\"button\" (click)=\"onCancel()\" data-testid=\"form-mission-cancel-btn\"\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' |\n translate}}</button>\n </div>\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\n <ngb-alert data-testid=\"form-mission-invalid\" [dismissible]=\"false\" type=\"danger\">\n {{'errorForm.infoBtn' |translate}}\n </ngb-alert>\n </div>\n </form>\n</div>", styles: [".form-containter{padding:0rem 1rem;margin-bottom:2rem}.checkbox-apply{margin-top:calc(.375rem + 1px)}.keywordsDisplay{min-height:40px}.hint{margin:0!important}.hint-container{display:flex;align-items:center}.crossItem{margin:0;padding:0;border:0;background:none;position:relative;width:7px;height:20px}.crossItem:before,.crossItem:after{content:\"\";position:absolute;top:6.25px;left:0;right:0;height:1.5px;background:#fff;border-radius:1.5px}.crossItem:before{transform:rotate(45deg)}.crossItem:after{transform:rotate(-45deg)}.crossItem span{display:block}.btn-control-div .btn{width:8rem}.timeZoneContainer{align-items:center}.timeZoneContainer span{margin-left:5px}.form-group{margin:1.5rem 0}label.col-sm-4.col-form-label{width:200px;min-width:200px}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"] }]
505
+ args: [{ selector: 'lib-form-mission', template: "<div class=\"form-containter\" *ngIf=\"missionForm\">\r\n <div style=\"margin-top: 1rem;\">\r\n <h4>{{ 'Mission details' | translate }}</h4>\r\n </div>\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"missionForm\">\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Organisation' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <input type=\"text\" data-testid=\"form-mission-organisation\" class=\"form-control\"\r\n formControlName=\"organisation\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\" *ngIf=\"isSP\">\r\n <label class=\"col-sm-4 col-form-label\">{{ 'Ordered by' | translate }}</label>\r\n <div class=\"col-sm-8\">\r\n <select class=\"form-control\" required formControlName=\"orderedOrganisationID\">\r\n <option *ngFor=\"let org of allOrgs\" [ngValue]=\"org.id\">\r\n {{ org.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Description' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <textarea class=\"form-control\" formControlName=\"description\" rows=\"10\" (ngModelChange)=\"onVerifForm()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['description'])|| isFormError(missionForm.controls['description'])} \"\r\n data-testid=\"form-mission-description\"></textarea>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-mission-description-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['description']) \r\n || isFormError(missionForm.controls['description'])\">\r\n {{validatorsService.getError(missionForm.controls['description']) |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Role' | translate}}*</label>\r\n <div class=\"col-sm-8\">\r\n <select class=\"form-control\" required formControlName=\"role\" data-testid=\"form-mission-role\" (ngModelChange)=\"onVerifForm()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['role'])|| isFormError(missionForm.controls['role'])} \">\r\n <option *ngFor=\"let r of availableRoles\" [ngValue]=\"r\">\r\n {{ r }}\r\n </option>\r\n </select>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-mission-role-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['role']) \r\n || isFormError(missionForm.controls['role'])\">\r\n {{validatorsService.getError(missionForm.controls['role']) |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\"\r\n *ngIf=\"missionForm.get('role').value !== 'VISITOR_MUSEUM' && missionForm.get('role').value !== 'GUIDE_MUSEUM'\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Domains' | translate}}</label>\r\n <div class=\"col-sm-8\" *ngIf=\"domains\">\r\n <select class=\"form-control\" multiple formControlName=\"domains\">\r\n <option *ngFor=\"let domain of domains\" [ngValue]=\"domain.id\">\r\n {{ domain.name }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Access level' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <select class=\"form-control\" required formControlName=\"level\" data-testid=\"form-mission-level\">\r\n <option *ngFor=\"let level of availableLevels\" [ngValue]=\"level\">\r\n {{ level }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized location' | translate }}*</label>\r\n <div class=\"col-sm-8\" *ngIf=\"availableSpaces\">\r\n <select class=\"form-control\" required formControlName=\"space\" (ngModelChange)=\"onVerifForm()\" (change)=\"onSpaceClick()\"\r\n data-testid=\"form-mission-space\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['space'])|| isFormError(missionForm.controls['space'])} \">\r\n <option *ngFor=\"let space of availableSpaces\" [ngValue]=\"space.id\">\r\n {{ space.name }}\r\n </option>\r\n </select>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-mission-space-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['space']) \r\n || isFormError(missionForm.controls['space'])\">\r\n {{validatorsService.getError(missionForm.controls['space']) |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-8\" *ngIf=\"!availableSpaces\">\r\n {{ 'No locations available' | translate}}\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized zone' | translate }}</label>\r\n <div class=\"col-sm-8\" *ngIf=\"zonesForSpace; else noSpace\">\r\n <select class=\"form-control\" formControlName=\"zone\" data-testid=\"form-mission-zone\">\r\n <option [ngValue]=\"defaultZone.id\">\r\n {{ 'All zones' | translate }}\r\n </option>\r\n <option *ngFor=\"let zone of zonesForSpace\" [ngValue]=\"zone.id\">\r\n {{ zone.name }}\r\n </option>\r\n </select>\r\n </div>\r\n <ng-template #noSpace>\r\n <div class=\"col-sm-8 hint-container\">\r\n <p class=\"hint keywordsRules\">{{'You need to choose the location first' | translate}} </p>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Language' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <select class=\"form-control\" formControlName=\"locale\">\r\n <option [ngValue]=\"null\">{{'Not applicable' | translate}}</option>\r\n <option *ngFor=\"let locale of locales\" [ngValue]=\"locale\">\r\n {{ locale }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n <!-- Hashtags are available after Space is set -->\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Hashtags' | translate}}</label>\r\n <div class=\"col-sm-8\" *ngIf=\"spaceID.value\">\r\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length > 0\">{{'Available hashtags' | translate}} </p>\r\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length === 0\">\r\n {{'No hashtags created for this location' | translate}} </p>\r\n <div *ngIf=\"availableHashtags.length > 0\">\r\n <ul class=\"keywordsDisplay no-border\">\r\n <div class=\"keywordsdisplayContainer\">\r\n <li *ngFor=\"let hashtag of availableHashtags\"\r\n [class]=\"hashtagAdded(hashtag) ? 'keywordsItem added' : 'keywordsItem'\"\r\n (click)=\"onHashtagClick(hashtag)\" style=\"cursor: pointer;\"\r\n ngbTooltip=\"{{hashtagAdded(hashtag) ? ('Remove'|translate) : ('Add'|translate) }}\">\r\n {{hashtag.name}}\r\n </li>\r\n </div>\r\n </ul>\r\n <p class=\"keywordsRules\">{{'Added hashtags' | translate}} </p>\r\n <ul class=\"keywordsDisplay\">\r\n <div class=\"keywordsdisplayContainer\" *ngIf=\"addedHashtags.length> 0\">\r\n <li class=\"keywordsItem\" *ngFor=\"let hashtag of addedHashtags\">{{ hashtag.name }}\r\n <a type=\"button\" class=\"closeButton\" (click)=\"removeHashtag(hashtag)\">\r\n <span class=\"crossItem\"></span>\r\n </a>\r\n </li>\r\n </div>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-8 hint-container\" *ngIf=\"!spaceID.value\">\r\n <p class=\"hint keywordsRules\">{{'You need to choose the location first' | translate}} </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Mission Start Date' | translate}}</label>\r\n <div class=\"input-group col-sm-8\">\r\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" formControlName=\"startDate\" ngbDatepicker\r\n #d1=\"ngbDatepicker\" data-testid=\"form-mission-startDate\" (ngModelChange)=\"onVerifDate();onVerifForm()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['startDate'])|| isFormError(missionForm.controls['startDate'])} \">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d1.toggle()\" type=\"button\"></button>\r\n </div>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-mission-startDate-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['startDate']) \r\n || isFormError(missionForm.controls['startDate'])\">\r\n {{validatorsService.getError(missionForm.controls['startDate']) |\r\n translate}}\r\n </ngb-alert>\r\n\r\n <ngb-alert data-testid=\"form-mission-startDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"dateError\">\r\n {{'errorForm.date_start_end' |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Mission Start Time' | translate}}</label>\r\n <div class=\"input-group col-sm-8 timeZoneContainer\">\r\n <ngb-timepicker [(ngModel)]=\"missionTimeStart\" [ngModelOptions]=\"{standalone: true}\"\r\n (ngModelChange)=\"onVerifDate();onVerifForm()\"></ngb-timepicker>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Mission End Date' | translate}}</label>\r\n <div class=\"input-group col-sm-8\">\r\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" ngbDatepicker #d2=\"ngbDatepicker\"\r\n formControlName=\"endDate\" data-testid=\"form-mission-endDate\"\r\n [class.is-invalid]=\"validatorsService.isControlError(missionForm.controls['endDate'])\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(missionForm.controls['endDate'])|| isFormError(missionForm.controls['endDate'])} \"\r\n (ngModelChange)=\"onVerifDate();onVerifForm()\">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d2.toggle()\" type=\"button\"></button>\r\n </div>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-mission-endDate-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(missionForm.controls['endDate']) \r\n || isFormError(missionForm.controls['endDate'])\">\r\n {{validatorsService.getError(missionForm.controls['endDate']) |\r\n translate}}\r\n </ngb-alert>\r\n\r\n <ngb-alert data-testid=\"form-mission-endDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"dateError\">\r\n {{'errorForm.date_end_start' |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Mission End Time' | translate}}</label>\r\n <div class=\"input-group col-sm-8 timeZoneContainer\">\r\n <ngb-timepicker [(ngModel)]=\"missionTimeEnd\" [ngModelOptions]=\"{standalone: true}\"\r\n (ngModelChange)=\"onVerifDate();onVerifForm()\"></ngb-timepicker>\r\n </div>\r\n </div>\r\n\r\n <div class=\"btn-control-div action-button-container\">\r\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill mr-3 action-button\"\r\n data-testid=\"form-mission-submit-btn\" [ngClass]=\"{'is-invalid' : errorForm }\">{{'Save' |\r\n translate}}</button>\r\n <button type=\"button\" (click)=\"onCancel()\" data-testid=\"form-mission-cancel-btn\"\r\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' |\r\n translate}}</button>\r\n </div>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\r\n <ngb-alert data-testid=\"form-mission-invalid\" [dismissible]=\"false\" type=\"danger\">\r\n {{'errorForm.infoBtn' |translate}}\r\n </ngb-alert>\r\n </div>\r\n </form>\r\n</div>", styles: [".form-containter{padding:0rem 1rem;margin-bottom:2rem}.checkbox-apply{margin-top:calc(.375rem + 1px)}.keywordsDisplay{min-height:40px}.hint{margin:0!important}.hint-container{display:flex;align-items:center}.crossItem{margin:0;padding:0;border:0;background:none;position:relative;width:7px;height:20px}.crossItem:before,.crossItem:after{content:\"\";position:absolute;top:6.25px;left:0;right:0;height:1.5px;background:#fff;border-radius:1.5px}.crossItem:before{transform:rotate(45deg)}.crossItem:after{transform:rotate(-45deg)}.crossItem span{display:block}.btn-control-div .btn{width:8rem}.timeZoneContainer{align-items:center}.timeZoneContainer span{margin-left:5px}.form-group{margin:1.5rem 0}label.col-sm-4.col-form-label{width:200px;min-width:200px}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"] }]
506
506
  }], ctorParameters: function () { return [{ type: i1$1.FormBuilder }, { type: i1.SpaceService }, { type: i1.BaseUserService }, { type: i1.DomainService }, { type: i1.OrganisationService }, { type: i1.ZoneService }, { type: i1.HashtagService }, { type: i1.LocaleService }, { type: i1.ValidatorsService }]; }, propDecorators: { missionToEdit: [{
507
507
  type: Input
508
508
  }], organisationForMission: [{
@@ -611,11 +611,11 @@ class UserMissionFormComponent {
611
611
  }
612
612
  }
613
613
  }
614
- UserMissionFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: UserMissionFormComponent, deps: [{ token: i1$1.FormBuilder }, { token: i1.BaseUserService }, { token: i3.TranslateService }, { token: i1.ValidatorsService }], target: i0.ɵɵFactoryTarget.Component });
615
- UserMissionFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: UserMissionFormComponent, selector: "lib-user-mission-form", inputs: { addToOrganisation: "addToOrganisation", isSP: "isSP", createForExistingUser: "createForExistingUser", currentOrg: "currentOrg" }, outputs: { added: "added" }, ngImport: i0, template: "<div *ngIf=\"form\">\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\n <div id=\"personalInfo\">\n <div style=\"margin-top: 1rem;\">\n <h4>{{ 'User Personal Information' | translate }}</h4>\n </div>\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Email' | translate}} *</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" class=\"form-control\" data-testid=\"new-user-email\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['email'])|| isFormError(form.controls['email'])}\"\n required formControlName=\"email\">\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"new-user-email-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['email']) \n || isFormError(form.controls['email'])\">\n {{validatorsService.getError(form.controls['email']) | translate}}\n </ngb-alert>\n\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Last name' | translate}}</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" class=\"form-control\" formControlName=\"lastName\" data-testid=\"new-user-lastName\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['lastName'])|| isFormError(form.controls['lastName'])}\">\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"new-user-lastName-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['lastName']) \n || isFormError(form.controls['lastName'])\">\n {{validatorsService.getError(form.controls['lastName']) | translate}}\n </ngb-alert>\n\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'First name' | translate}}</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" class=\"form-control\" formControlName=\"firstName\" data-testid=\"new-user-firstName\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['firstName'])|| isFormError(form.controls['firstName'])}\">\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"new-user-firstName-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['firstName']) \n || isFormError(form.controls['firstName'])\">\n {{validatorsService.getError(form.controls['firstName']) | translate}}\n </ngb-alert>\n\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex justify-content-center\" *ngIf=\"working\">\n <lib-loader></lib-loader>\n </div>\n\n <div *ngIf=\"createdUser; else waitingForUser\">\n <div class=\"alert alert-info\">\n {{'User successfully created' | translate}}\n </div>\n <lib-form-mission [organisationForMission]=\"addToOrganisation\" [userForMissionID]=\"createdUser.id\"\n [currentUserOrganisation]=\"currentOrg\" [isSP]=\"isSP\" (addedMissionInput)=\"onMissionInput($event)\">\n </lib-form-mission>\n </div>\n <ng-template #waitingForUser>\n <div class=\"action-button-container\">\n <button data-testid=\"new-user-submit-btn\" type=\"submit\" class=\"btn btn-outline-primary rounded-pill mr-3 action-button\"\n [disabled]=\"working\">{{'Create user' | translate}}</button>\n <button data-testid=\"new-user-cancel-btn\" type=\"button\" (click)=\"onCancel()\" [disabled]=\"working\"\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\n </div>\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\n <ngb-alert data-testid=\"new-user-form-invalid\" [dismissible]=\"false\" type=\"danger\">\n {{'errorForm.infoBtn' |translate}}\n </ngb-alert>\n </div>\n <div style=\"margin-top: 1rem;\">\n <h4>{{ 'Mission details' | translate }}</h4>\n </div>\n <ngb-alert type=\"warning\" [dismissible]=\"false\">{{'Please create a user first' | translate}}.</ngb-alert>\n\n </ng-template>\n </form>\n</div>", styles: [".form-group{margin:1.5rem 0}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"], components: [{ type: i4.NgbAlert, selector: "ngb-alert", inputs: ["animation", "dismissible", "type"], outputs: ["closed"], exportAs: ["ngbAlert"] }, { type: i1.LoaderComponent, selector: "lib-loader", inputs: ["useLogo", "color"] }, { type: FormMissionComponent, selector: "lib-form-mission", inputs: ["missionToEdit", "organisationForMission", "isSP", "userForMissionID", "currentUserOrganisation"], outputs: ["addedMissionInput"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe } });
616
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: UserMissionFormComponent, decorators: [{
614
+ UserMissionFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UserMissionFormComponent, deps: [{ token: i1$1.FormBuilder }, { token: i1.BaseUserService }, { token: i3.TranslateService }, { token: i1.ValidatorsService }], target: i0.ɵɵFactoryTarget.Component });
615
+ UserMissionFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: UserMissionFormComponent, selector: "lib-user-mission-form", inputs: { addToOrganisation: "addToOrganisation", isSP: "isSP", createForExistingUser: "createForExistingUser", currentOrg: "currentOrg" }, outputs: { added: "added" }, ngImport: i0, template: "<div *ngIf=\"form\">\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\r\n <div id=\"personalInfo\">\r\n <div style=\"margin-top: 1rem;\">\r\n <h4>{{ 'User Personal Information' | translate }}</h4>\r\n </div>\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Email' | translate}} *</label>\r\n <div class=\"col-sm-8\">\r\n <input type=\"text\" class=\"form-control\" data-testid=\"new-user-email\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['email'])|| isFormError(form.controls['email'])}\"\r\n required formControlName=\"email\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-user-email-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['email']) \r\n || isFormError(form.controls['email'])\">\r\n {{validatorsService.getError(form.controls['email']) | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Last name' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"lastName\" data-testid=\"new-user-lastName\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['lastName'])|| isFormError(form.controls['lastName'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-user-lastName-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['lastName']) \r\n || isFormError(form.controls['lastName'])\">\r\n {{validatorsService.getError(form.controls['lastName']) | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'First name' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"firstName\" data-testid=\"new-user-firstName\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['firstName'])|| isFormError(form.controls['firstName'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-user-firstName-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['firstName']) \r\n || isFormError(form.controls['firstName'])\">\r\n {{validatorsService.getError(form.controls['firstName']) | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"working\">\r\n <lib-loader></lib-loader>\r\n </div>\r\n\r\n <div *ngIf=\"createdUser; else waitingForUser\">\r\n <div class=\"alert alert-info\">\r\n {{'User successfully created' | translate}}\r\n </div>\r\n <lib-form-mission [organisationForMission]=\"addToOrganisation\" [userForMissionID]=\"createdUser.id\"\r\n [currentUserOrganisation]=\"currentOrg\" [isSP]=\"isSP\" (addedMissionInput)=\"onMissionInput($event)\">\r\n </lib-form-mission>\r\n </div>\r\n <ng-template #waitingForUser>\r\n <div class=\"action-button-container\">\r\n <button data-testid=\"new-user-submit-btn\" type=\"submit\" class=\"btn btn-outline-primary rounded-pill mr-3 action-button\"\r\n [disabled]=\"working\">{{'Create user' | translate}}</button>\r\n <button data-testid=\"new-user-cancel-btn\" type=\"button\" (click)=\"onCancel()\" [disabled]=\"working\"\r\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\r\n </div>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\r\n <ngb-alert data-testid=\"new-user-form-invalid\" [dismissible]=\"false\" type=\"danger\">\r\n {{'errorForm.infoBtn' |translate}}\r\n </ngb-alert>\r\n </div>\r\n <div style=\"margin-top: 1rem;\">\r\n <h4>{{ 'Mission details' | translate }}</h4>\r\n </div>\r\n <ngb-alert type=\"warning\" [dismissible]=\"false\">{{'Please create a user first' | translate}}.</ngb-alert>\r\n\r\n </ng-template>\r\n </form>\r\n</div>", styles: [".form-group{margin:1.5rem 0}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"], components: [{ type: i4.NgbAlert, selector: "ngb-alert", inputs: ["animation", "dismissible", "type"], outputs: ["closed"], exportAs: ["ngbAlert"] }, { type: i1.LoaderComponent, selector: "lib-loader", inputs: ["useLogo", "color"] }, { type: FormMissionComponent, selector: "lib-form-mission", inputs: ["missionToEdit", "organisationForMission", "isSP", "userForMissionID", "currentUserOrganisation"], outputs: ["addedMissionInput"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe } });
616
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UserMissionFormComponent, decorators: [{
617
617
  type: Component,
618
- args: [{ selector: 'lib-user-mission-form', template: "<div *ngIf=\"form\">\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\n <div id=\"personalInfo\">\n <div style=\"margin-top: 1rem;\">\n <h4>{{ 'User Personal Information' | translate }}</h4>\n </div>\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Email' | translate}} *</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" class=\"form-control\" data-testid=\"new-user-email\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['email'])|| isFormError(form.controls['email'])}\"\n required formControlName=\"email\">\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"new-user-email-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['email']) \n || isFormError(form.controls['email'])\">\n {{validatorsService.getError(form.controls['email']) | translate}}\n </ngb-alert>\n\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Last name' | translate}}</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" class=\"form-control\" formControlName=\"lastName\" data-testid=\"new-user-lastName\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['lastName'])|| isFormError(form.controls['lastName'])}\">\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"new-user-lastName-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['lastName']) \n || isFormError(form.controls['lastName'])\">\n {{validatorsService.getError(form.controls['lastName']) | translate}}\n </ngb-alert>\n\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'First name' | translate}}</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" class=\"form-control\" formControlName=\"firstName\" data-testid=\"new-user-firstName\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['firstName'])|| isFormError(form.controls['firstName'])}\">\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"new-user-firstName-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['firstName']) \n || isFormError(form.controls['firstName'])\">\n {{validatorsService.getError(form.controls['firstName']) | translate}}\n </ngb-alert>\n\n </div>\n </div>\n </div>\n </div>\n <div class=\"d-flex justify-content-center\" *ngIf=\"working\">\n <lib-loader></lib-loader>\n </div>\n\n <div *ngIf=\"createdUser; else waitingForUser\">\n <div class=\"alert alert-info\">\n {{'User successfully created' | translate}}\n </div>\n <lib-form-mission [organisationForMission]=\"addToOrganisation\" [userForMissionID]=\"createdUser.id\"\n [currentUserOrganisation]=\"currentOrg\" [isSP]=\"isSP\" (addedMissionInput)=\"onMissionInput($event)\">\n </lib-form-mission>\n </div>\n <ng-template #waitingForUser>\n <div class=\"action-button-container\">\n <button data-testid=\"new-user-submit-btn\" type=\"submit\" class=\"btn btn-outline-primary rounded-pill mr-3 action-button\"\n [disabled]=\"working\">{{'Create user' | translate}}</button>\n <button data-testid=\"new-user-cancel-btn\" type=\"button\" (click)=\"onCancel()\" [disabled]=\"working\"\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\n </div>\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\n <ngb-alert data-testid=\"new-user-form-invalid\" [dismissible]=\"false\" type=\"danger\">\n {{'errorForm.infoBtn' |translate}}\n </ngb-alert>\n </div>\n <div style=\"margin-top: 1rem;\">\n <h4>{{ 'Mission details' | translate }}</h4>\n </div>\n <ngb-alert type=\"warning\" [dismissible]=\"false\">{{'Please create a user first' | translate}}.</ngb-alert>\n\n </ng-template>\n </form>\n</div>", styles: [".form-group{margin:1.5rem 0}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"] }]
618
+ args: [{ selector: 'lib-user-mission-form', template: "<div *ngIf=\"form\">\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\r\n <div id=\"personalInfo\">\r\n <div style=\"margin-top: 1rem;\">\r\n <h4>{{ 'User Personal Information' | translate }}</h4>\r\n </div>\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Email' | translate}} *</label>\r\n <div class=\"col-sm-8\">\r\n <input type=\"text\" class=\"form-control\" data-testid=\"new-user-email\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['email'])|| isFormError(form.controls['email'])}\"\r\n required formControlName=\"email\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-user-email-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['email']) \r\n || isFormError(form.controls['email'])\">\r\n {{validatorsService.getError(form.controls['email']) | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Last name' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"lastName\" data-testid=\"new-user-lastName\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['lastName'])|| isFormError(form.controls['lastName'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-user-lastName-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['lastName']) \r\n || isFormError(form.controls['lastName'])\">\r\n {{validatorsService.getError(form.controls['lastName']) | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'First name' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"firstName\" data-testid=\"new-user-firstName\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['firstName'])|| isFormError(form.controls['firstName'])}\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"new-user-firstName-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\"validatorsService.isControlError(form.controls['firstName']) \r\n || isFormError(form.controls['firstName'])\">\r\n {{validatorsService.getError(form.controls['firstName']) | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"working\">\r\n <lib-loader></lib-loader>\r\n </div>\r\n\r\n <div *ngIf=\"createdUser; else waitingForUser\">\r\n <div class=\"alert alert-info\">\r\n {{'User successfully created' | translate}}\r\n </div>\r\n <lib-form-mission [organisationForMission]=\"addToOrganisation\" [userForMissionID]=\"createdUser.id\"\r\n [currentUserOrganisation]=\"currentOrg\" [isSP]=\"isSP\" (addedMissionInput)=\"onMissionInput($event)\">\r\n </lib-form-mission>\r\n </div>\r\n <ng-template #waitingForUser>\r\n <div class=\"action-button-container\">\r\n <button data-testid=\"new-user-submit-btn\" type=\"submit\" class=\"btn btn-outline-primary rounded-pill mr-3 action-button\"\r\n [disabled]=\"working\">{{'Create user' | translate}}</button>\r\n <button data-testid=\"new-user-cancel-btn\" type=\"button\" (click)=\"onCancel()\" [disabled]=\"working\"\r\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\r\n </div>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\r\n <ngb-alert data-testid=\"new-user-form-invalid\" [dismissible]=\"false\" type=\"danger\">\r\n {{'errorForm.infoBtn' |translate}}\r\n </ngb-alert>\r\n </div>\r\n <div style=\"margin-top: 1rem;\">\r\n <h4>{{ 'Mission details' | translate }}</h4>\r\n </div>\r\n <ngb-alert type=\"warning\" [dismissible]=\"false\">{{'Please create a user first' | translate}}.</ngb-alert>\r\n\r\n </ng-template>\r\n </form>\r\n</div>", styles: [".form-group{margin:1.5rem 0}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"] }]
619
619
  }], ctorParameters: function () { return [{ type: i1$1.FormBuilder }, { type: i1.BaseUserService }, { type: i3.TranslateService }, { type: i1.ValidatorsService }]; }, propDecorators: { addToOrganisation: [{
620
620
  type: Input
621
621
  }], isSP: [{
@@ -728,11 +728,11 @@ class FormOrganisationComponent {
728
728
  this.added.emit(added);
729
729
  }
730
730
  }
731
- FormOrganisationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: FormOrganisationComponent, deps: [{ token: i1.OrganisationService }, { token: i1$1.FormBuilder }, { token: i1.BaseUserService }], target: i0.ɵɵFactoryTarget.Component });
732
- FormOrganisationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: FormOrganisationComponent, selector: "lib-form-organisation", inputs: { currentOrg: "currentOrg", currentUser: "currentUser", existing: "existing" }, outputs: { added: "added" }, ngImport: i0, template: "<div *ngIf=\"form\">\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\n <div>\n <h4>{{ 'Organisation' | translate }}</h4>\n </div>\n <div class=\"form-group row\" *ngIf=\"existing\">\n <label class=\"col-sm-3 col-form-label\">{{'Organisation Token' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" id=\"tokenInput\" placeholder=\"Paste organisation token here\">\n </div>\n </div>\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"name.invalid && name.touched\" required\n formControlName=\"name\">\n <div class=\"invalid-feedback\">\n {{'Name is mandatory' | translate}}\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"address\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'City' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"city\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Postal Code' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"postal\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'SIRET' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"siret\">\n </div>\n </div>\n\n\n <div *ngIf=\"createdOrg; else noOrg\">\n <div class=\"alert alert-info\">\n {{'Organisation successfully created' | translate}}\n </div>\n <lib-user-mission-form [addToOrganisation]=\"createdOrg\" [currentOrg]=\"currentOrg\" [isSP]=\"isSP\"\n (added)=\"userAndMissionAdded($event)\">\n </lib-user-mission-form>\n </div>\n <ng-template #noOrg>\n <div class=\"action-button-container\">\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill mr-3 action-button\"\n [disabled]=\"this.working || form.invalid\">{{'Create organisation' | translate}}</button>\n <button type=\"button\" (click)=\"onCancel()\" [disabled]=\"this.working\"\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\n </div>\n <div style='margin-top: 1rem'>\n <h4>{{ 'User Personal Information' | translate }}</h4>\n </div>\n <ngb-alert type=\"warning\" [dismissible]=\"false\">{{'Please create new organisation first' | translate}}\n </ngb-alert>\n\n </ng-template>\n\n\n </form>\n</div>", styles: [".form-group{margin:1.5rem 0}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"], components: [{ type: UserMissionFormComponent, selector: "lib-user-mission-form", inputs: ["addToOrganisation", "isSP", "createForExistingUser", "currentOrg"], outputs: ["added"] }, { type: i4.NgbAlert, selector: "ngb-alert", inputs: ["animation", "dismissible", "type"], outputs: ["closed"], exportAs: ["ngbAlert"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i3.TranslatePipe } });
733
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: FormOrganisationComponent, decorators: [{
731
+ FormOrganisationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FormOrganisationComponent, deps: [{ token: i1.OrganisationService }, { token: i1$1.FormBuilder }, { token: i1.BaseUserService }], target: i0.ɵɵFactoryTarget.Component });
732
+ FormOrganisationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FormOrganisationComponent, selector: "lib-form-organisation", inputs: { currentOrg: "currentOrg", currentUser: "currentUser", existing: "existing" }, outputs: { added: "added" }, ngImport: i0, template: "<div *ngIf=\"form\">\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\r\n <div>\r\n <h4>{{ 'Organisation' | translate }}</h4>\r\n </div>\r\n <div class=\"form-group row\" *ngIf=\"existing\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Organisation Token' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" id=\"tokenInput\" placeholder=\"Paste organisation token here\">\r\n </div>\r\n </div>\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"name.invalid && name.touched\" required\r\n formControlName=\"name\">\r\n <div class=\"invalid-feedback\">\r\n {{'Name is mandatory' | translate}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"address\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'City' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"city\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Postal Code' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"postal\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'SIRET' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"siret\">\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"createdOrg; else noOrg\">\r\n <div class=\"alert alert-info\">\r\n {{'Organisation successfully created' | translate}}\r\n </div>\r\n <lib-user-mission-form [addToOrganisation]=\"createdOrg\" [currentOrg]=\"currentOrg\" [isSP]=\"isSP\"\r\n (added)=\"userAndMissionAdded($event)\">\r\n </lib-user-mission-form>\r\n </div>\r\n <ng-template #noOrg>\r\n <div class=\"action-button-container\">\r\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill mr-3 action-button\"\r\n [disabled]=\"this.working || form.invalid\">{{'Create organisation' | translate}}</button>\r\n <button type=\"button\" (click)=\"onCancel()\" [disabled]=\"this.working\"\r\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\r\n </div>\r\n <div style='margin-top: 1rem'>\r\n <h4>{{ 'User Personal Information' | translate }}</h4>\r\n </div>\r\n <ngb-alert type=\"warning\" [dismissible]=\"false\">{{'Please create new organisation first' | translate}}\r\n </ngb-alert>\r\n\r\n </ng-template>\r\n\r\n\r\n </form>\r\n</div>", styles: [".form-group{margin:1.5rem 0}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"], components: [{ type: UserMissionFormComponent, selector: "lib-user-mission-form", inputs: ["addToOrganisation", "isSP", "createForExistingUser", "currentOrg"], outputs: ["added"] }, { type: i4.NgbAlert, selector: "ngb-alert", inputs: ["animation", "dismissible", "type"], outputs: ["closed"], exportAs: ["ngbAlert"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i3.TranslatePipe } });
733
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FormOrganisationComponent, decorators: [{
734
734
  type: Component,
735
- args: [{ selector: 'lib-form-organisation', template: "<div *ngIf=\"form\">\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\n <div>\n <h4>{{ 'Organisation' | translate }}</h4>\n </div>\n <div class=\"form-group row\" *ngIf=\"existing\">\n <label class=\"col-sm-3 col-form-label\">{{'Organisation Token' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" id=\"tokenInput\" placeholder=\"Paste organisation token here\">\n </div>\n </div>\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"name.invalid && name.touched\" required\n formControlName=\"name\">\n <div class=\"invalid-feedback\">\n {{'Name is mandatory' | translate}}\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"address\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'City' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"city\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Postal Code' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"postal\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'SIRET' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"siret\">\n </div>\n </div>\n\n\n <div *ngIf=\"createdOrg; else noOrg\">\n <div class=\"alert alert-info\">\n {{'Organisation successfully created' | translate}}\n </div>\n <lib-user-mission-form [addToOrganisation]=\"createdOrg\" [currentOrg]=\"currentOrg\" [isSP]=\"isSP\"\n (added)=\"userAndMissionAdded($event)\">\n </lib-user-mission-form>\n </div>\n <ng-template #noOrg>\n <div class=\"action-button-container\">\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill mr-3 action-button\"\n [disabled]=\"this.working || form.invalid\">{{'Create organisation' | translate}}</button>\n <button type=\"button\" (click)=\"onCancel()\" [disabled]=\"this.working\"\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\n </div>\n <div style='margin-top: 1rem'>\n <h4>{{ 'User Personal Information' | translate }}</h4>\n </div>\n <ngb-alert type=\"warning\" [dismissible]=\"false\">{{'Please create new organisation first' | translate}}\n </ngb-alert>\n\n </ng-template>\n\n\n </form>\n</div>", styles: [".form-group{margin:1.5rem 0}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"] }]
735
+ args: [{ selector: 'lib-form-organisation', template: "<div *ngIf=\"form\">\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\r\n <div>\r\n <h4>{{ 'Organisation' | translate }}</h4>\r\n </div>\r\n <div class=\"form-group row\" *ngIf=\"existing\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Organisation Token' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" id=\"tokenInput\" placeholder=\"Paste organisation token here\">\r\n </div>\r\n </div>\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"name.invalid && name.touched\" required\r\n formControlName=\"name\">\r\n <div class=\"invalid-feedback\">\r\n {{'Name is mandatory' | translate}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"address\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'City' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"city\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Postal Code' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"postal\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'SIRET' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"siret\">\r\n </div>\r\n </div>\r\n\r\n\r\n <div *ngIf=\"createdOrg; else noOrg\">\r\n <div class=\"alert alert-info\">\r\n {{'Organisation successfully created' | translate}}\r\n </div>\r\n <lib-user-mission-form [addToOrganisation]=\"createdOrg\" [currentOrg]=\"currentOrg\" [isSP]=\"isSP\"\r\n (added)=\"userAndMissionAdded($event)\">\r\n </lib-user-mission-form>\r\n </div>\r\n <ng-template #noOrg>\r\n <div class=\"action-button-container\">\r\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill mr-3 action-button\"\r\n [disabled]=\"this.working || form.invalid\">{{'Create organisation' | translate}}</button>\r\n <button type=\"button\" (click)=\"onCancel()\" [disabled]=\"this.working\"\r\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\r\n </div>\r\n <div style='margin-top: 1rem'>\r\n <h4>{{ 'User Personal Information' | translate }}</h4>\r\n </div>\r\n <ngb-alert type=\"warning\" [dismissible]=\"false\">{{'Please create new organisation first' | translate}}\r\n </ngb-alert>\r\n\r\n </ng-template>\r\n\r\n\r\n </form>\r\n</div>", styles: [".form-group{margin:1.5rem 0}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"] }]
736
736
  }], ctorParameters: function () { return [{ type: i1.OrganisationService }, { type: i1$1.FormBuilder }, { type: i1.BaseUserService }]; }, propDecorators: { currentOrg: [{
737
737
  type: Input
738
738
  }], currentUser: [{
@@ -912,11 +912,11 @@ class DetailOrganisationComponent {
912
912
  }
913
913
  }
914
914
  }
915
- DetailOrganisationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: DetailOrganisationComponent, deps: [{ token: i1.OrganisationService }, { token: i1$1.FormBuilder }, { token: i1.PropertyService }, { token: i1.MissionService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
916
- DetailOrganisationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: DetailOrganisationComponent, selector: "lib-detail-organisation", inputs: { org: "org", currentOrg: "currentOrg", isSP: "isSP" }, outputs: { orgChanged: "orgChanged" }, usesOnChanges: true, ngImport: i0, template: "<div>\n <h5>{{'Organisation Details' | translate }}</h5>\n <div *ngIf=\"!editForm\">\n <ul class=\"list-group list-group-flush\">\n <li class=\"list-group-item bg-transparent\">{{'Name' | translate}}: {{ org.name }}</li>\n <li class=\"list-group-item bg-transparent\">{{'Logo' | translate }}: {{ org.logoUrl ? \"\" : \"No logo uploaded\"}} \n <img class=\"logo-img\" *ngIf=\"signedLogo\" [src]=\"signedLogo\">\n </li>\n <li class=\"list-group-item bg-transparent\">{{'SIRET' | translate }}: {{\n org.siret ? org.siret : (\"No data\" | translate)}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Address' | translate }}: {{\n org.address ? org.address : (\"No data\" | translate)}}</li>\n <li class=\"list-group-item bg-transparent\">{{'City' | translate }}: {{org.city }}</li>\n <li class=\"list-group-item bg-transparent\">{{'Contact information' | translate}}:\n {{ org.contactDetails ? org.contactDetails : (\"No data\" | translate)}}</li>\n <!-- <li class=\"list-group-item bg-transparent\" *ngIf=\"isSP\">\n <div class=\"row ml-0\">\n <div>\n {{'Active token' | translate }}:\n {{ org.shareToken ? prettifyToken() : ('No' | translate) }}\n </div>\n <div *ngIf=\"org.shareToken && !tokenExpired\" ngxClipboard [cbContent]=\"org.shareToken\"\n [style.cursor]=\"'pointer'\" style=\"margin-left: 5px; max-width: 20px;\" ngbTooltip=\"Copied!\"\n triggers=\"click:blur\">\n <span class=\"iconify\" data-icon=\"mdi:content-copy\" data-inline=\"false\" data-width=\"20\"\n data-height=\"20\"></span>\n </div>\n </div>\n </li> -->\n </ul>\n <div class=\"action-button-container\">\n <button class=\"btn btn-outline-primary rounded-pill mt-2 ml-3 action-button\" *ngIf=\"isSP || myOrg\"\n (click)=\"onEdit()\"> {{'Edit' | translate}}</button>\n <button class=\"btn btn-outline-primary rounded-pill mt-2 ml-3 action-button\" *ngIf=\"isSP\"\n (click)=\"onDelete()\"> {{'Delete' | translate}}</button>\n <!-- <button class=\"btn btn-outline-primary rounded-pill mt-2 ml-3 action-button\" *ngIf=\"isSP\"\n (click)=\"onToken()\">{{'Generate token' | translate}}</button> -->\n </div>\n </div>\n\n <!--Edit Form-->\n <div *ngIf=\"editForm\">\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"editForm\">\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"name.invalid && name.touched\" required\n formControlName=\"name\">\n <div class=\"invalid-feedback\">\n {{'A name is required' | translate}}\n </div>\n </div>\n </div>\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Contact information' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"contactDetails\"\n placeholder=\"{{'Name, phone, email' | translate}}\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"address\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'City' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"city\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Postal code' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"postal\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'SIRET' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"siret\">\n </div>\n </div>\n \n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Logo' | translate}}</label>\n <div class=\"col-sm-9\">\n <label for=\"file\" class=\"btn btn-label-file rounded-pill\">\n <input type=\"file\" id=\"file\" (change)=\"handleFileInput($event)\" />\n {{'Add logo image' | translate}}</label>\n <p class=\"fileToUploadName\" *ngIf=\"fileToUpload\">{{fileToUpload.name}}</p>\n </div>\n \n </div>\n <div class=\"action-button-container\">\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill action-button\"\n [disabled]=\"editForm.invalid\">{{'Save' |\n translate}}</button>\n <button type=\"button\" (click)=\"onCancel()\"\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' |\n translate}}</button>\n </div>\n </form>\n </div>\n <!--Loading-->\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\n <lib-loader></lib-loader>\n </div>\n\n <!--Stripe-->\n <!-- <hr>\n <h5>{{'stripe.account' | translate }}</h5>\n <ul class=\"list-group list-group-flush\">\n <li class=\"list-group-item bg-transparent\" *ngIf=\"(isSP || myOrg) && org.connectedAccountStripeID\">\n {{'stripe.connected' | translate }}: {{org.connectedAccountStripeID.substring(0, 15) }}...</li>\n <li class=\"list-group-item bg-transparent\" *ngIf=\"(isSP || myOrg) && org.stripeOnBoardingCompleted !== null\">\n {{'stripe.completed' | translate }}: {{org.stripeOnBoardingCompleted }}</li>\n </ul> -->\n</div>", styles: [".form-group{margin:1.5rem 0}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}.logo-img{height:100px;object-fit:contain;margin:4px 10px}\n"], components: [{ type: i1.LoaderComponent, selector: "lib-loader", inputs: ["useLogo", "color"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i3.TranslatePipe } });
917
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: DetailOrganisationComponent, decorators: [{
915
+ DetailOrganisationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DetailOrganisationComponent, deps: [{ token: i1.OrganisationService }, { token: i1$1.FormBuilder }, { token: i1.PropertyService }, { token: i1.MissionService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
916
+ DetailOrganisationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: DetailOrganisationComponent, selector: "lib-detail-organisation", inputs: { org: "org", currentOrg: "currentOrg", isSP: "isSP" }, outputs: { orgChanged: "orgChanged" }, usesOnChanges: true, ngImport: i0, template: "<div>\r\n <h5>{{'Organisation Details' | translate }}</h5>\r\n <div *ngIf=\"!editForm\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\">{{'Name' | translate}}: {{ org.name }}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Logo' | translate }}: {{ org.logoUrl ? \"\" : \"No logo uploaded\"}} \r\n <img class=\"logo-img\" *ngIf=\"signedLogo\" [src]=\"signedLogo\">\r\n </li>\r\n <li class=\"list-group-item bg-transparent\">{{'SIRET' | translate }}: {{\r\n org.siret ? org.siret : (\"No data\" | translate)}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Address' | translate }}: {{\r\n org.address ? org.address : (\"No data\" | translate)}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'City' | translate }}: {{org.city }}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Contact information' | translate}}:\r\n {{ org.contactDetails ? org.contactDetails : (\"No data\" | translate)}}</li>\r\n <!-- <li class=\"list-group-item bg-transparent\" *ngIf=\"isSP\">\r\n <div class=\"row ml-0\">\r\n <div>\r\n {{'Active token' | translate }}:\r\n {{ org.shareToken ? prettifyToken() : ('No' | translate) }}\r\n </div>\r\n <div *ngIf=\"org.shareToken && !tokenExpired\" ngxClipboard [cbContent]=\"org.shareToken\"\r\n [style.cursor]=\"'pointer'\" style=\"margin-left: 5px; max-width: 20px;\" ngbTooltip=\"Copied!\"\r\n triggers=\"click:blur\">\r\n <span class=\"iconify\" data-icon=\"mdi:content-copy\" data-inline=\"false\" data-width=\"20\"\r\n data-height=\"20\"></span>\r\n </div>\r\n </div>\r\n </li> -->\r\n </ul>\r\n <div class=\"action-button-container\">\r\n <button class=\"btn btn-outline-primary rounded-pill mt-2 ml-3 action-button\" *ngIf=\"isSP || myOrg\"\r\n (click)=\"onEdit()\"> {{'Edit' | translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill mt-2 ml-3 action-button\" *ngIf=\"isSP\"\r\n (click)=\"onDelete()\"> {{'Delete' | translate}}</button>\r\n <!-- <button class=\"btn btn-outline-primary rounded-pill mt-2 ml-3 action-button\" *ngIf=\"isSP\"\r\n (click)=\"onToken()\">{{'Generate token' | translate}}</button> -->\r\n </div>\r\n </div>\r\n\r\n <!--Edit Form-->\r\n <div *ngIf=\"editForm\">\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"editForm\">\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"name.invalid && name.touched\" required\r\n formControlName=\"name\">\r\n <div class=\"invalid-feedback\">\r\n {{'A name is required' | translate}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Contact information' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"contactDetails\"\r\n placeholder=\"{{'Name, phone, email' | translate}}\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"address\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'City' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"city\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Postal code' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"postal\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'SIRET' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"siret\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Logo' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <label for=\"file\" class=\"btn btn-label-file rounded-pill\">\r\n <input type=\"file\" id=\"file\" (change)=\"handleFileInput($event)\" />\r\n {{'Add logo image' | translate}}</label>\r\n <p class=\"fileToUploadName\" *ngIf=\"fileToUpload\">{{fileToUpload.name}}</p>\r\n </div>\r\n \r\n </div>\r\n <div class=\"action-button-container\">\r\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill action-button\"\r\n [disabled]=\"editForm.invalid\">{{'Save' |\r\n translate}}</button>\r\n <button type=\"button\" (click)=\"onCancel()\"\r\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' |\r\n translate}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n <!--Loading-->\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\r\n <lib-loader></lib-loader>\r\n </div>\r\n\r\n <!--Stripe-->\r\n <!-- <hr>\r\n <h5>{{'stripe.account' | translate }}</h5>\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"(isSP || myOrg) && org.connectedAccountStripeID\">\r\n {{'stripe.connected' | translate }}: {{org.connectedAccountStripeID.substring(0, 15) }}...</li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"(isSP || myOrg) && org.stripeOnBoardingCompleted !== null\">\r\n {{'stripe.completed' | translate }}: {{org.stripeOnBoardingCompleted }}</li>\r\n </ul> -->\r\n</div>", styles: [".form-group{margin:1.5rem 0}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}.logo-img{height:100px;object-fit:contain;margin:4px 10px}\n"], components: [{ type: i1.LoaderComponent, selector: "lib-loader", inputs: ["useLogo", "color"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], pipes: { "translate": i3.TranslatePipe } });
917
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: DetailOrganisationComponent, decorators: [{
918
918
  type: Component,
919
- args: [{ selector: 'lib-detail-organisation', template: "<div>\n <h5>{{'Organisation Details' | translate }}</h5>\n <div *ngIf=\"!editForm\">\n <ul class=\"list-group list-group-flush\">\n <li class=\"list-group-item bg-transparent\">{{'Name' | translate}}: {{ org.name }}</li>\n <li class=\"list-group-item bg-transparent\">{{'Logo' | translate }}: {{ org.logoUrl ? \"\" : \"No logo uploaded\"}} \n <img class=\"logo-img\" *ngIf=\"signedLogo\" [src]=\"signedLogo\">\n </li>\n <li class=\"list-group-item bg-transparent\">{{'SIRET' | translate }}: {{\n org.siret ? org.siret : (\"No data\" | translate)}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Address' | translate }}: {{\n org.address ? org.address : (\"No data\" | translate)}}</li>\n <li class=\"list-group-item bg-transparent\">{{'City' | translate }}: {{org.city }}</li>\n <li class=\"list-group-item bg-transparent\">{{'Contact information' | translate}}:\n {{ org.contactDetails ? org.contactDetails : (\"No data\" | translate)}}</li>\n <!-- <li class=\"list-group-item bg-transparent\" *ngIf=\"isSP\">\n <div class=\"row ml-0\">\n <div>\n {{'Active token' | translate }}:\n {{ org.shareToken ? prettifyToken() : ('No' | translate) }}\n </div>\n <div *ngIf=\"org.shareToken && !tokenExpired\" ngxClipboard [cbContent]=\"org.shareToken\"\n [style.cursor]=\"'pointer'\" style=\"margin-left: 5px; max-width: 20px;\" ngbTooltip=\"Copied!\"\n triggers=\"click:blur\">\n <span class=\"iconify\" data-icon=\"mdi:content-copy\" data-inline=\"false\" data-width=\"20\"\n data-height=\"20\"></span>\n </div>\n </div>\n </li> -->\n </ul>\n <div class=\"action-button-container\">\n <button class=\"btn btn-outline-primary rounded-pill mt-2 ml-3 action-button\" *ngIf=\"isSP || myOrg\"\n (click)=\"onEdit()\"> {{'Edit' | translate}}</button>\n <button class=\"btn btn-outline-primary rounded-pill mt-2 ml-3 action-button\" *ngIf=\"isSP\"\n (click)=\"onDelete()\"> {{'Delete' | translate}}</button>\n <!-- <button class=\"btn btn-outline-primary rounded-pill mt-2 ml-3 action-button\" *ngIf=\"isSP\"\n (click)=\"onToken()\">{{'Generate token' | translate}}</button> -->\n </div>\n </div>\n\n <!--Edit Form-->\n <div *ngIf=\"editForm\">\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"editForm\">\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"name.invalid && name.touched\" required\n formControlName=\"name\">\n <div class=\"invalid-feedback\">\n {{'A name is required' | translate}}\n </div>\n </div>\n </div>\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Contact information' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"contactDetails\"\n placeholder=\"{{'Name, phone, email' | translate}}\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"address\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'City' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"city\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Postal code' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"postal\">\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'SIRET' | translate}}</label>\n <div class=\"col-sm-9\">\n <input type=\"text\" class=\"form-control\" formControlName=\"siret\">\n </div>\n </div>\n \n <div class=\"form-group row\">\n <label class=\"col-sm-3 col-form-label\">{{'Logo' | translate}}</label>\n <div class=\"col-sm-9\">\n <label for=\"file\" class=\"btn btn-label-file rounded-pill\">\n <input type=\"file\" id=\"file\" (change)=\"handleFileInput($event)\" />\n {{'Add logo image' | translate}}</label>\n <p class=\"fileToUploadName\" *ngIf=\"fileToUpload\">{{fileToUpload.name}}</p>\n </div>\n \n </div>\n <div class=\"action-button-container\">\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill action-button\"\n [disabled]=\"editForm.invalid\">{{'Save' |\n translate}}</button>\n <button type=\"button\" (click)=\"onCancel()\"\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' |\n translate}}</button>\n </div>\n </form>\n </div>\n <!--Loading-->\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\n <lib-loader></lib-loader>\n </div>\n\n <!--Stripe-->\n <!-- <hr>\n <h5>{{'stripe.account' | translate }}</h5>\n <ul class=\"list-group list-group-flush\">\n <li class=\"list-group-item bg-transparent\" *ngIf=\"(isSP || myOrg) && org.connectedAccountStripeID\">\n {{'stripe.connected' | translate }}: {{org.connectedAccountStripeID.substring(0, 15) }}...</li>\n <li class=\"list-group-item bg-transparent\" *ngIf=\"(isSP || myOrg) && org.stripeOnBoardingCompleted !== null\">\n {{'stripe.completed' | translate }}: {{org.stripeOnBoardingCompleted }}</li>\n </ul> -->\n</div>", styles: [".form-group{margin:1.5rem 0}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}.logo-img{height:100px;object-fit:contain;margin:4px 10px}\n"] }]
919
+ args: [{ selector: 'lib-detail-organisation', template: "<div>\r\n <h5>{{'Organisation Details' | translate }}</h5>\r\n <div *ngIf=\"!editForm\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\">{{'Name' | translate}}: {{ org.name }}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Logo' | translate }}: {{ org.logoUrl ? \"\" : \"No logo uploaded\"}} \r\n <img class=\"logo-img\" *ngIf=\"signedLogo\" [src]=\"signedLogo\">\r\n </li>\r\n <li class=\"list-group-item bg-transparent\">{{'SIRET' | translate }}: {{\r\n org.siret ? org.siret : (\"No data\" | translate)}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Address' | translate }}: {{\r\n org.address ? org.address : (\"No data\" | translate)}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'City' | translate }}: {{org.city }}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Contact information' | translate}}:\r\n {{ org.contactDetails ? org.contactDetails : (\"No data\" | translate)}}</li>\r\n <!-- <li class=\"list-group-item bg-transparent\" *ngIf=\"isSP\">\r\n <div class=\"row ml-0\">\r\n <div>\r\n {{'Active token' | translate }}:\r\n {{ org.shareToken ? prettifyToken() : ('No' | translate) }}\r\n </div>\r\n <div *ngIf=\"org.shareToken && !tokenExpired\" ngxClipboard [cbContent]=\"org.shareToken\"\r\n [style.cursor]=\"'pointer'\" style=\"margin-left: 5px; max-width: 20px;\" ngbTooltip=\"Copied!\"\r\n triggers=\"click:blur\">\r\n <span class=\"iconify\" data-icon=\"mdi:content-copy\" data-inline=\"false\" data-width=\"20\"\r\n data-height=\"20\"></span>\r\n </div>\r\n </div>\r\n </li> -->\r\n </ul>\r\n <div class=\"action-button-container\">\r\n <button class=\"btn btn-outline-primary rounded-pill mt-2 ml-3 action-button\" *ngIf=\"isSP || myOrg\"\r\n (click)=\"onEdit()\"> {{'Edit' | translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill mt-2 ml-3 action-button\" *ngIf=\"isSP\"\r\n (click)=\"onDelete()\"> {{'Delete' | translate}}</button>\r\n <!-- <button class=\"btn btn-outline-primary rounded-pill mt-2 ml-3 action-button\" *ngIf=\"isSP\"\r\n (click)=\"onToken()\">{{'Generate token' | translate}}</button> -->\r\n </div>\r\n </div>\r\n\r\n <!--Edit Form-->\r\n <div *ngIf=\"editForm\">\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"editForm\">\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Name' | translate}} *</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" [class.is-invalid]=\"name.invalid && name.touched\" required\r\n formControlName=\"name\">\r\n <div class=\"invalid-feedback\">\r\n {{'A name is required' | translate}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Contact information' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"contactDetails\"\r\n placeholder=\"{{'Name, phone, email' | translate}}\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Address' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"address\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'City' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"city\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Postal code' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"postal\">\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'SIRET' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <input type=\"text\" class=\"form-control\" formControlName=\"siret\">\r\n </div>\r\n </div>\r\n \r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-3 col-form-label\">{{'Logo' | translate}}</label>\r\n <div class=\"col-sm-9\">\r\n <label for=\"file\" class=\"btn btn-label-file rounded-pill\">\r\n <input type=\"file\" id=\"file\" (change)=\"handleFileInput($event)\" />\r\n {{'Add logo image' | translate}}</label>\r\n <p class=\"fileToUploadName\" *ngIf=\"fileToUpload\">{{fileToUpload.name}}</p>\r\n </div>\r\n \r\n </div>\r\n <div class=\"action-button-container\">\r\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill action-button\"\r\n [disabled]=\"editForm.invalid\">{{'Save' |\r\n translate}}</button>\r\n <button type=\"button\" (click)=\"onCancel()\"\r\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' |\r\n translate}}</button>\r\n </div>\r\n </form>\r\n </div>\r\n <!--Loading-->\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\r\n <lib-loader></lib-loader>\r\n </div>\r\n\r\n <!--Stripe-->\r\n <!-- <hr>\r\n <h5>{{'stripe.account' | translate }}</h5>\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"(isSP || myOrg) && org.connectedAccountStripeID\">\r\n {{'stripe.connected' | translate }}: {{org.connectedAccountStripeID.substring(0, 15) }}...</li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"(isSP || myOrg) && org.stripeOnBoardingCompleted !== null\">\r\n {{'stripe.completed' | translate }}: {{org.stripeOnBoardingCompleted }}</li>\r\n </ul> -->\r\n</div>", styles: [".form-group{margin:1.5rem 0}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}.logo-img{height:100px;object-fit:contain;margin:4px 10px}\n"] }]
920
920
  }], ctorParameters: function () { return [{ type: i1.OrganisationService }, { type: i1$1.FormBuilder }, { type: i1.PropertyService }, { type: i1.MissionService }, { type: i3.TranslateService }]; }, propDecorators: { org: [{
921
921
  type: Input
922
922
  }], currentOrg: [{
@@ -1242,11 +1242,11 @@ class UserComponent {
1242
1242
  return data.replace(/\s/g, '');
1243
1243
  }
1244
1244
  }
1245
- UserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: UserComponent, deps: [{ token: i1.BaseUserService }, { token: i1.MissionService }, { token: i1.DomainService }, { token: i1.OrganisationService }, { token: i4.NgbModal }, { token: i3.TranslateService }, { token: i1.ProfileService }], target: i0.ɵɵFactoryTarget.Component });
1246
- UserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: UserComponent, selector: "lib-user", ngImport: i0, template: "<div class=\"dashboard-tab\">\n <div class=\"header-dashboard-tab\">\n <h3>{{'Users' | translate}}</h3>\n <!-- <app-search-bar *ngIf=\"!hideList\" [searchable]=\"orgsUsersMissions\" objectType=\"USER\"\n (searchEvent)=\"applyResultsSearchBar($event)\">\n </app-search-bar> -->\n <hr>\n </div>\n <div class=\"row\">\n <div class=\"col-md-8 col-lg-6\">\n <div class=\"row ml-0 mb-2\" *ngIf=\"!hideList\">\n <button class=\"btn btn-outline-primary rounded-pill add-button\" *ngIf=\"!isGuide\" (click)=\"onAddOrg()\">\n {{'Add user to new organisation' | translate}}</button>\n </div>\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\n <lib-loader></lib-loader>\n </div>\n <div *ngIf=\"!hideList\">\n <ul class=\"list-group list-group-flush\" *ngIf=\"filteredOrgsUsersMissions\" data-testid=\"mission-organisation-list\">\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let o of filteredOrgsUsersMissions\">\n <div class=\"d-flex justify-content-between align-items-center font-weight-bold\"\n ngbTooltip=\"See details and users\" style=\"cursor: pointer;\" (click)=\"onToggleDetailOrg(o.org.id, o.org)\">\n {{o.org.name}} <small *ngIf=\"o.org.id == currentOrg.id\">({{'My organisation' | translate}})</small>\n <small *ngIf=\"isSP && clientsSP.includes(o.org.id)\">({{'Client of SmarterPlan' | translate}})</small>\n <small *ngIf=\"isSP && getOrderedOrg(o.org.id)\">({{'Client of ' | translate}}\n {{getOrderedOrg(o.org.id)}})</small>\n <lib-chevron [conditionShowing]=\"detailsOrg==o.org.id\" [ngClass]=\"[getStringNoSpace(o.org.name)]\"></lib-chevron>\n </div>\n <div class=\"missions\" *ngIf=\"detailsOrg==o.org.id\">\n <div class='d-flex'>\n <button data-testid=\"user-new-btn\" class=\"btn btn-outline-primary rounded-pill mt-3 mb-3\" (click)=\"onAdd(o.org)\">{{'Add user' |\n translate}}</button>\n </div>\n\n <ul class=\"list-group list-group-flush\" data-testid=\"mission-user-list\">\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let a of o.users\"\n (click)=\"onToggleDetailUser(a.user.id)\">\n <div class=\"d-flex justify-content-between align-items-center\">\n {{a.user.displayName}}\n <lib-chevron [conditionShowing]=\"detailsUser==a.user.id\" [ngClass]=\"[getStringNoSpace(a.user.displayName)]\"></lib-chevron>\n </div>\n\n <div *ngIf=\"detailsUser==a.user.id\">\n <div class=\"ml-3\">\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\n {{'Email' | translate}}: {{a.user.email }}\n </div>\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\n <button type=\"button\" class=\"btn btn-primary rounded-pill\" data-testid=\"mission-new-btn\"\n (click)=\"onAddForUser(o.org, a.user)\">{{'Add new mission' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary rounded-pill\" (click)=\"onClearToken(a)\">\n {{'Clear Token' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary rounded-pill\"\n (click)=\"onDeleteUser(a.user)\">{{'Delete user' | translate}}</button>\n </div>\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\n {{ a.missions.length > 0 ? ('Current Missions' | translate) : ('No missions' | translate)}}\n </div>\n </div>\n <ul class=\"list-group list-group-flush\">\n <li class=\"list-group-item\" *ngFor=\"let mis of a.missions\">\n <ul class=\"list-group list-group-flush\">\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.description\">\n {{'Description' | translate}}: {{mis.description}}</li>\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.templateMissionID\">\n {{'Attendee of tour' | translate}}: {{mis.templateMission.title}}</li>\n\n <li class=\"list-group-item bg-transparent\">{{'Role' | translate}}: {{ mis.role }}</li>\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.hashtags && mis.hashtags.length> 0\">\n {{'Hashtags' | translate}}: <ul class=\"keywordsDisplay no-border\">\n <div class=\"keywordsdisplayContainer\">\n <li class=\"keywordsItem\" *ngFor=\"let hashtag of mis.hashtags\">\n {{ hashtag | hashtagFromID | async }}</li>\n </div>\n </ul>\n </li>\n <li class=\"list-group-item bg-transparent\">{{'Language' | translate }}: {{\n mis.locale ? mis.locale : ('Not applicable' | translate)}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Access level' | translate }}: {{\n mis.level}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Ordered by' | translate }}: {{\n mis.orderedOrganisation.name}}</li>\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.domains\">{{'Domains' | translate }}:\n {{mis.domains ?\n domainIdsToStringForMission(mis) : (\"No data\" | translate) }}</li>\n <li class=\"list-group-item bg-transparent\">{{'Authorized location' | translate }}:\n {{ mis.space ? mis.space.name : \"No location\" | translate}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Authorized zone' | translate }}:\n {{ mis.zone ? mis.zone.name : \"All zones allowed\" | translate}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Starts' | translate }}:\n {{ mis.startDateTime ? (mis.startDateTime | timeDateString: \"day_time_zone\" | async) :\n \"No data\" | translate}}, {{'Ends' | translate}}: {{ mis.endDateTime\n ? (mis.endDateTime | timeDateString: \"day_time_zone\" | async)\n : \"No data\" | translate}}\n </li>\n <li class=\"list-group-item bg-transparent\">{{'Created' | translate }}:\n {{ mis.createdAt | timeDateString: \"day_time_zone\" | async }}\n </li>\n </ul>\n <div class=\"action-button-container\" >\n <button type=\"button\" data-testid=\"edit-mission-btn\" class=\"btn btn-outline-primary rounded-pill mr-2 action-button\"\n (click)=\"onEdit(mis)\">{{'Edit' |\n translate}}</button>\n <button type=\"button\" *ngIf=\"mis.role === 'VISITOR' || mis.role === 'VISITOR_MUSEUM'\"\n class=\"btn btn-outline-primary rounded-pill mr-2 action-button share-visitor-button\"\n (click)=\"onSetForShareableLink(a.user, mis)\">{{'Generate Shareable Link' |\n translate}}</button>\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill action-button\"\n (click)=\"onDeleteMission(mis)\">{{'Delete' | translate}}</button>\n </div>\n </li>\n </ul>\n </div>\n </li>\n </ul>\n </div>\n </li>\n <li class=\"list-group-item list-group-item-action\" *ngIf=\"profilesWithoutMission && profilesWithoutMission.length > 0\">\n <div class=\"d-flex justify-content-between align-items-center font-weight-bold\"\n ngbTooltip=\"See details\" style=\"cursor: pointer;\" (click)=\"onToggleDetailOrg('-2', null)\">\n {{\"Users without missions\" | translate}}\n <lib-chevron [conditionShowing]=\"detailsOrg=='-2'\"></lib-chevron>\n </div>\n <div class=\"missions\" *ngIf=\"detailsOrg=='-2'\">\n <ul class=\"list-group list-group-flush\" data-testid=\"mission-organisation-list\">\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let profile of profilesWithoutMission\" \n (click)=\"onToggleDetailUser(profile.id)\">\n <div class=\"d-flex justify-content-between align-items-center\">\n {{profile.displayName}}\n <lib-chevron [conditionShowing]=\"detailsUser==profile.id\" [ngClass]=\"[getStringNoSpace(profile.displayName)]\"></lib-chevron>\n </div>\n <div *ngIf=\"detailsUser==profile.id\">\n <div class=\"ml-3\">\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\n {{'Email' | translate}}: {{profile.email }}\n </div>\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\n <button type=\"button\" class=\"btn btn-primary rounded-pill\" data-testid=\"mission-new-btn\"\n (click)=\"onAddForUser(currentOrg, profile)\">{{'Add new mission' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary rounded-pill\"\n (click)=\"onDeleteUser(profile)\">{{'Delete user' | translate}}</button>\n </div>\n </div>\n </div>\n </li>\n </ul>\n </div>\n </li>\n </ul>\n </div>\n\n <div *ngIf=\"create\">\n <lib-user-mission-form [addToOrganisation]=\"addToOrg\" [currentOrg]=\"currentOrg\" [isSP]=\"isSP\"\n (added)=\"userAdded($event)\">\n </lib-user-mission-form>\n </div>\n <div *ngIf=\"edit\">\n <lib-form-mission [missionToEdit]=\"missionToEdit\" [currentUserOrganisation]=\"currentOrg\" [isSP]=\"isSP\"\n (addedMissionInput)=\"onMissionEdited($event)\"></lib-form-mission>\n </div>\n <div *ngIf=\"createForExistingUser\">\n <lib-form-mission [organisationForMission]=\"addToOrg\" [currentUserOrganisation]=\"currentOrg\" [isSP]=\"isSP\"\n [userForMissionID]=\"userForAddingMission.id\" (addedMissionInput)=\"onMissionCreated($event)\">\n </lib-form-mission>\n </div>\n <div *ngIf=\"isAddingOrg || isAddingToExistingOrg\">\n <lib-form-organisation [currentOrg]=\"currentOrg\" [currentUser]=\"me\" [existing]=\"isAddingToExistingOrg\"\n (added)=\"orgAdded($event)\"></lib-form-organisation>\n </div>\n </div>\n\n <div class=\"col-md-4 col-lg-6\" *ngIf=\"orgSelectedDetails && !isGuide\">\n <lib-detail-organisation [org]=\"orgSelectedDetails\" [currentOrg]=\"currentOrg\" [isSP]=\"isSP\"\n (orgChanged)='orgAdded($event)'></lib-detail-organisation>\n </div>\n </div>\n</div>", styles: [".add-button{width:-moz-fit-content;width:fit-content;margin-left:.5rem}li.ml-4{margin-left:3rem}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}.action-button-container .share-visitor-button{width:-moz-fit-content;width:fit-content}\n"], components: [{ type: i1.LoaderComponent, selector: "lib-loader", inputs: ["useLogo", "color"] }, { type: ChevronComponent, selector: "lib-chevron", inputs: ["conditionShowing"] }, { type: UserMissionFormComponent, selector: "lib-user-mission-form", inputs: ["addToOrganisation", "isSP", "createForExistingUser", "currentOrg"], outputs: ["added"] }, { type: FormMissionComponent, selector: "lib-form-mission", inputs: ["missionToEdit", "organisationForMission", "isSP", "userForMissionID", "currentUserOrganisation"], outputs: ["addedMissionInput"] }, { type: FormOrganisationComponent, selector: "lib-form-organisation", inputs: ["currentOrg", "currentUser", "existing"], outputs: ["added"] }, { type: DetailOrganisationComponent, selector: "lib-detail-organisation", inputs: ["org", "currentOrg", "isSP"], outputs: ["orgChanged"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe, "async": i5.AsyncPipe, "hashtagFromID": i1.HashtagFromIdPipe, "timeDateString": i1.TimeDateToLocalStringPipe } });
1247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: UserComponent, decorators: [{
1245
+ UserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UserComponent, deps: [{ token: i1.BaseUserService }, { token: i1.MissionService }, { token: i1.DomainService }, { token: i1.OrganisationService }, { token: i4.NgbModal }, { token: i3.TranslateService }, { token: i1.ProfileService }], target: i0.ɵɵFactoryTarget.Component });
1246
+ UserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: UserComponent, selector: "lib-user", ngImport: i0, template: "<div class=\"dashboard-tab\">\r\n <div class=\"header-dashboard-tab\">\r\n <h3>{{'Users' | translate}}</h3>\r\n <!-- <app-search-bar *ngIf=\"!hideList\" [searchable]=\"orgsUsersMissions\" objectType=\"USER\"\r\n (searchEvent)=\"applyResultsSearchBar($event)\">\r\n </app-search-bar> -->\r\n <hr>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-8 col-lg-6\">\r\n <div class=\"row ml-0 mb-2\" *ngIf=\"!hideList\">\r\n <button class=\"btn btn-outline-primary rounded-pill add-button\" *ngIf=\"!isGuide\" (click)=\"onAddOrg()\">\r\n {{'Add user to new organisation' | translate}}</button>\r\n </div>\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\r\n <lib-loader></lib-loader>\r\n </div>\r\n <div *ngIf=\"!hideList\">\r\n <ul class=\"list-group list-group-flush\" *ngIf=\"filteredOrgsUsersMissions\" data-testid=\"mission-organisation-list\">\r\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let o of filteredOrgsUsersMissions\">\r\n <div class=\"d-flex justify-content-between align-items-center font-weight-bold\"\r\n ngbTooltip=\"See details and users\" style=\"cursor: pointer;\" (click)=\"onToggleDetailOrg(o.org.id, o.org)\">\r\n {{o.org.name}} <small *ngIf=\"o.org.id == currentOrg.id\">({{'My organisation' | translate}})</small>\r\n <small *ngIf=\"isSP && clientsSP.includes(o.org.id)\">({{'Client of SmarterPlan' | translate}})</small>\r\n <small *ngIf=\"isSP && getOrderedOrg(o.org.id)\">({{'Client of ' | translate}}\r\n {{getOrderedOrg(o.org.id)}})</small>\r\n <lib-chevron [conditionShowing]=\"detailsOrg==o.org.id\" [ngClass]=\"[getStringNoSpace(o.org.name)]\"></lib-chevron>\r\n </div>\r\n <div class=\"missions\" *ngIf=\"detailsOrg==o.org.id\">\r\n <div class='d-flex'>\r\n <button data-testid=\"user-new-btn\" class=\"btn btn-outline-primary rounded-pill mt-3 mb-3\" (click)=\"onAdd(o.org)\">{{'Add user' |\r\n translate}}</button>\r\n </div>\r\n\r\n <ul class=\"list-group list-group-flush\" data-testid=\"mission-user-list\">\r\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let a of o.users\"\r\n (click)=\"onToggleDetailUser(a.user.id)\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n {{a.user.displayName}}\r\n <lib-chevron [conditionShowing]=\"detailsUser==a.user.id\" [ngClass]=\"[getStringNoSpace(a.user.displayName)]\"></lib-chevron>\r\n </div>\r\n\r\n <div *ngIf=\"detailsUser==a.user.id\">\r\n <div class=\"ml-3\">\r\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\r\n {{'Email' | translate}}: {{a.user.email }}\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill\" data-testid=\"mission-new-btn\"\r\n (click)=\"onAddForUser(o.org, a.user)\">{{'Add new mission' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill\" (click)=\"onClearToken(a)\">\r\n {{'Clear Token' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill\"\r\n (click)=\"onDeleteUser(a.user)\">{{'Delete user' | translate}}</button>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\r\n {{ a.missions.length > 0 ? ('Current Missions' | translate) : ('No missions' | translate)}}\r\n </div>\r\n </div>\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item\" *ngFor=\"let mis of a.missions\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.description\">\r\n {{'Description' | translate}}: {{mis.description}}</li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.templateMissionID\">\r\n {{'Attendee of tour' | translate}}: {{mis.templateMission.title}}</li>\r\n\r\n <li class=\"list-group-item bg-transparent\">{{'Role' | translate}}: {{ mis.role }}</li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.hashtags && mis.hashtags.length> 0\">\r\n {{'Hashtags' | translate}}: <ul class=\"keywordsDisplay no-border\">\r\n <div class=\"keywordsdisplayContainer\">\r\n <li class=\"keywordsItem\" *ngFor=\"let hashtag of mis.hashtags\">\r\n {{ hashtag | hashtagFromID | async }}</li>\r\n </div>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Language' | translate }}: {{\r\n mis.locale ? mis.locale : ('Not applicable' | translate)}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Access level' | translate }}: {{\r\n mis.level}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Ordered by' | translate }}: {{\r\n mis.orderedOrganisation.name}}</li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.domains\">{{'Domains' | translate }}:\r\n {{mis.domains ?\r\n domainIdsToStringForMission(mis) : (\"No data\" | translate) }}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Authorized location' | translate }}:\r\n {{ mis.space ? mis.space.name : \"No location\" | translate}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Authorized zone' | translate }}:\r\n {{ mis.zone ? mis.zone.name : \"All zones allowed\" | translate}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Starts' | translate }}:\r\n {{ mis.startDateTime ? (mis.startDateTime | timeDateString: \"day_time_zone\" | async) :\r\n \"No data\" | translate}}, {{'Ends' | translate}}: {{ mis.endDateTime\r\n ? (mis.endDateTime | timeDateString: \"day_time_zone\" | async)\r\n : \"No data\" | translate}}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Created' | translate }}:\r\n {{ mis.createdAt | timeDateString: \"day_time_zone\" | async }}\r\n </li>\r\n </ul>\r\n <div class=\"action-button-container\" >\r\n <button type=\"button\" data-testid=\"edit-mission-btn\" class=\"btn btn-outline-primary rounded-pill mr-2 action-button\"\r\n (click)=\"onEdit(mis)\">{{'Edit' |\r\n translate}}</button>\r\n <button type=\"button\" *ngIf=\"mis.role === 'VISITOR' || mis.role === 'VISITOR_MUSEUM'\"\r\n class=\"btn btn-outline-primary rounded-pill mr-2 action-button share-visitor-button\"\r\n (click)=\"onSetForShareableLink(a.user, mis)\">{{'Generate Shareable Link' |\r\n translate}}</button>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill action-button\"\r\n (click)=\"onDeleteMission(mis)\">{{'Delete' | translate}}</button>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item list-group-item-action\" *ngIf=\"profilesWithoutMission && profilesWithoutMission.length > 0\">\r\n <div class=\"d-flex justify-content-between align-items-center font-weight-bold\"\r\n ngbTooltip=\"See details\" style=\"cursor: pointer;\" (click)=\"onToggleDetailOrg('-2', null)\">\r\n {{\"Users without missions\" | translate}}\r\n <lib-chevron [conditionShowing]=\"detailsOrg=='-2'\"></lib-chevron>\r\n </div>\r\n <div class=\"missions\" *ngIf=\"detailsOrg=='-2'\">\r\n <ul class=\"list-group list-group-flush\" data-testid=\"mission-organisation-list\">\r\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let profile of profilesWithoutMission\" \r\n (click)=\"onToggleDetailUser(profile.id)\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n {{profile.displayName}}\r\n <lib-chevron [conditionShowing]=\"detailsUser==profile.id\" [ngClass]=\"[getStringNoSpace(profile.displayName)]\"></lib-chevron>\r\n </div>\r\n <div *ngIf=\"detailsUser==profile.id\">\r\n <div class=\"ml-3\">\r\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\r\n {{'Email' | translate}}: {{profile.email }}\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill\" data-testid=\"mission-new-btn\"\r\n (click)=\"onAddForUser(currentOrg, profile)\">{{'Add new mission' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill\"\r\n (click)=\"onDeleteUser(profile)\">{{'Delete user' | translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div *ngIf=\"create\">\r\n <lib-user-mission-form [addToOrganisation]=\"addToOrg\" [currentOrg]=\"currentOrg\" [isSP]=\"isSP\"\r\n (added)=\"userAdded($event)\">\r\n </lib-user-mission-form>\r\n </div>\r\n <div *ngIf=\"edit\">\r\n <lib-form-mission [missionToEdit]=\"missionToEdit\" [currentUserOrganisation]=\"currentOrg\" [isSP]=\"isSP\"\r\n (addedMissionInput)=\"onMissionEdited($event)\"></lib-form-mission>\r\n </div>\r\n <div *ngIf=\"createForExistingUser\">\r\n <lib-form-mission [organisationForMission]=\"addToOrg\" [currentUserOrganisation]=\"currentOrg\" [isSP]=\"isSP\"\r\n [userForMissionID]=\"userForAddingMission.id\" (addedMissionInput)=\"onMissionCreated($event)\">\r\n </lib-form-mission>\r\n </div>\r\n <div *ngIf=\"isAddingOrg || isAddingToExistingOrg\">\r\n <lib-form-organisation [currentOrg]=\"currentOrg\" [currentUser]=\"me\" [existing]=\"isAddingToExistingOrg\"\r\n (added)=\"orgAdded($event)\"></lib-form-organisation>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-4 col-lg-6\" *ngIf=\"orgSelectedDetails && !isGuide\">\r\n <lib-detail-organisation [org]=\"orgSelectedDetails\" [currentOrg]=\"currentOrg\" [isSP]=\"isSP\"\r\n (orgChanged)='orgAdded($event)'></lib-detail-organisation>\r\n </div>\r\n </div>\r\n</div>", styles: [".add-button{width:fit-content;margin-left:.5rem}li.ml-4{margin-left:3rem}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}.action-button-container .share-visitor-button{width:fit-content}\n"], components: [{ type: i1.LoaderComponent, selector: "lib-loader", inputs: ["useLogo", "color"] }, { type: ChevronComponent, selector: "lib-chevron", inputs: ["conditionShowing"] }, { type: UserMissionFormComponent, selector: "lib-user-mission-form", inputs: ["addToOrganisation", "isSP", "createForExistingUser", "currentOrg"], outputs: ["added"] }, { type: FormMissionComponent, selector: "lib-form-mission", inputs: ["missionToEdit", "organisationForMission", "isSP", "userForMissionID", "currentUserOrganisation"], outputs: ["addedMissionInput"] }, { type: FormOrganisationComponent, selector: "lib-form-organisation", inputs: ["currentOrg", "currentUser", "existing"], outputs: ["added"] }, { type: DetailOrganisationComponent, selector: "lib-detail-organisation", inputs: ["org", "currentOrg", "isSP"], outputs: ["orgChanged"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3.TranslatePipe, "async": i5.AsyncPipe, "hashtagFromID": i1.HashtagFromIdPipe, "timeDateString": i1.TimeDateToLocalStringPipe } });
1247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: UserComponent, decorators: [{
1248
1248
  type: Component,
1249
- args: [{ selector: 'lib-user', template: "<div class=\"dashboard-tab\">\n <div class=\"header-dashboard-tab\">\n <h3>{{'Users' | translate}}</h3>\n <!-- <app-search-bar *ngIf=\"!hideList\" [searchable]=\"orgsUsersMissions\" objectType=\"USER\"\n (searchEvent)=\"applyResultsSearchBar($event)\">\n </app-search-bar> -->\n <hr>\n </div>\n <div class=\"row\">\n <div class=\"col-md-8 col-lg-6\">\n <div class=\"row ml-0 mb-2\" *ngIf=\"!hideList\">\n <button class=\"btn btn-outline-primary rounded-pill add-button\" *ngIf=\"!isGuide\" (click)=\"onAddOrg()\">\n {{'Add user to new organisation' | translate}}</button>\n </div>\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\n <lib-loader></lib-loader>\n </div>\n <div *ngIf=\"!hideList\">\n <ul class=\"list-group list-group-flush\" *ngIf=\"filteredOrgsUsersMissions\" data-testid=\"mission-organisation-list\">\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let o of filteredOrgsUsersMissions\">\n <div class=\"d-flex justify-content-between align-items-center font-weight-bold\"\n ngbTooltip=\"See details and users\" style=\"cursor: pointer;\" (click)=\"onToggleDetailOrg(o.org.id, o.org)\">\n {{o.org.name}} <small *ngIf=\"o.org.id == currentOrg.id\">({{'My organisation' | translate}})</small>\n <small *ngIf=\"isSP && clientsSP.includes(o.org.id)\">({{'Client of SmarterPlan' | translate}})</small>\n <small *ngIf=\"isSP && getOrderedOrg(o.org.id)\">({{'Client of ' | translate}}\n {{getOrderedOrg(o.org.id)}})</small>\n <lib-chevron [conditionShowing]=\"detailsOrg==o.org.id\" [ngClass]=\"[getStringNoSpace(o.org.name)]\"></lib-chevron>\n </div>\n <div class=\"missions\" *ngIf=\"detailsOrg==o.org.id\">\n <div class='d-flex'>\n <button data-testid=\"user-new-btn\" class=\"btn btn-outline-primary rounded-pill mt-3 mb-3\" (click)=\"onAdd(o.org)\">{{'Add user' |\n translate}}</button>\n </div>\n\n <ul class=\"list-group list-group-flush\" data-testid=\"mission-user-list\">\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let a of o.users\"\n (click)=\"onToggleDetailUser(a.user.id)\">\n <div class=\"d-flex justify-content-between align-items-center\">\n {{a.user.displayName}}\n <lib-chevron [conditionShowing]=\"detailsUser==a.user.id\" [ngClass]=\"[getStringNoSpace(a.user.displayName)]\"></lib-chevron>\n </div>\n\n <div *ngIf=\"detailsUser==a.user.id\">\n <div class=\"ml-3\">\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\n {{'Email' | translate}}: {{a.user.email }}\n </div>\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\n <button type=\"button\" class=\"btn btn-primary rounded-pill\" data-testid=\"mission-new-btn\"\n (click)=\"onAddForUser(o.org, a.user)\">{{'Add new mission' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary rounded-pill\" (click)=\"onClearToken(a)\">\n {{'Clear Token' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary rounded-pill\"\n (click)=\"onDeleteUser(a.user)\">{{'Delete user' | translate}}</button>\n </div>\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\n {{ a.missions.length > 0 ? ('Current Missions' | translate) : ('No missions' | translate)}}\n </div>\n </div>\n <ul class=\"list-group list-group-flush\">\n <li class=\"list-group-item\" *ngFor=\"let mis of a.missions\">\n <ul class=\"list-group list-group-flush\">\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.description\">\n {{'Description' | translate}}: {{mis.description}}</li>\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.templateMissionID\">\n {{'Attendee of tour' | translate}}: {{mis.templateMission.title}}</li>\n\n <li class=\"list-group-item bg-transparent\">{{'Role' | translate}}: {{ mis.role }}</li>\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.hashtags && mis.hashtags.length> 0\">\n {{'Hashtags' | translate}}: <ul class=\"keywordsDisplay no-border\">\n <div class=\"keywordsdisplayContainer\">\n <li class=\"keywordsItem\" *ngFor=\"let hashtag of mis.hashtags\">\n {{ hashtag | hashtagFromID | async }}</li>\n </div>\n </ul>\n </li>\n <li class=\"list-group-item bg-transparent\">{{'Language' | translate }}: {{\n mis.locale ? mis.locale : ('Not applicable' | translate)}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Access level' | translate }}: {{\n mis.level}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Ordered by' | translate }}: {{\n mis.orderedOrganisation.name}}</li>\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.domains\">{{'Domains' | translate }}:\n {{mis.domains ?\n domainIdsToStringForMission(mis) : (\"No data\" | translate) }}</li>\n <li class=\"list-group-item bg-transparent\">{{'Authorized location' | translate }}:\n {{ mis.space ? mis.space.name : \"No location\" | translate}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Authorized zone' | translate }}:\n {{ mis.zone ? mis.zone.name : \"All zones allowed\" | translate}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Starts' | translate }}:\n {{ mis.startDateTime ? (mis.startDateTime | timeDateString: \"day_time_zone\" | async) :\n \"No data\" | translate}}, {{'Ends' | translate}}: {{ mis.endDateTime\n ? (mis.endDateTime | timeDateString: \"day_time_zone\" | async)\n : \"No data\" | translate}}\n </li>\n <li class=\"list-group-item bg-transparent\">{{'Created' | translate }}:\n {{ mis.createdAt | timeDateString: \"day_time_zone\" | async }}\n </li>\n </ul>\n <div class=\"action-button-container\" >\n <button type=\"button\" data-testid=\"edit-mission-btn\" class=\"btn btn-outline-primary rounded-pill mr-2 action-button\"\n (click)=\"onEdit(mis)\">{{'Edit' |\n translate}}</button>\n <button type=\"button\" *ngIf=\"mis.role === 'VISITOR' || mis.role === 'VISITOR_MUSEUM'\"\n class=\"btn btn-outline-primary rounded-pill mr-2 action-button share-visitor-button\"\n (click)=\"onSetForShareableLink(a.user, mis)\">{{'Generate Shareable Link' |\n translate}}</button>\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill action-button\"\n (click)=\"onDeleteMission(mis)\">{{'Delete' | translate}}</button>\n </div>\n </li>\n </ul>\n </div>\n </li>\n </ul>\n </div>\n </li>\n <li class=\"list-group-item list-group-item-action\" *ngIf=\"profilesWithoutMission && profilesWithoutMission.length > 0\">\n <div class=\"d-flex justify-content-between align-items-center font-weight-bold\"\n ngbTooltip=\"See details\" style=\"cursor: pointer;\" (click)=\"onToggleDetailOrg('-2', null)\">\n {{\"Users without missions\" | translate}}\n <lib-chevron [conditionShowing]=\"detailsOrg=='-2'\"></lib-chevron>\n </div>\n <div class=\"missions\" *ngIf=\"detailsOrg=='-2'\">\n <ul class=\"list-group list-group-flush\" data-testid=\"mission-organisation-list\">\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let profile of profilesWithoutMission\" \n (click)=\"onToggleDetailUser(profile.id)\">\n <div class=\"d-flex justify-content-between align-items-center\">\n {{profile.displayName}}\n <lib-chevron [conditionShowing]=\"detailsUser==profile.id\" [ngClass]=\"[getStringNoSpace(profile.displayName)]\"></lib-chevron>\n </div>\n <div *ngIf=\"detailsUser==profile.id\">\n <div class=\"ml-3\">\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\n {{'Email' | translate}}: {{profile.email }}\n </div>\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\n <button type=\"button\" class=\"btn btn-primary rounded-pill\" data-testid=\"mission-new-btn\"\n (click)=\"onAddForUser(currentOrg, profile)\">{{'Add new mission' | translate}}</button>\n <button type=\"button\" class=\"btn btn-primary rounded-pill\"\n (click)=\"onDeleteUser(profile)\">{{'Delete user' | translate}}</button>\n </div>\n </div>\n </div>\n </li>\n </ul>\n </div>\n </li>\n </ul>\n </div>\n\n <div *ngIf=\"create\">\n <lib-user-mission-form [addToOrganisation]=\"addToOrg\" [currentOrg]=\"currentOrg\" [isSP]=\"isSP\"\n (added)=\"userAdded($event)\">\n </lib-user-mission-form>\n </div>\n <div *ngIf=\"edit\">\n <lib-form-mission [missionToEdit]=\"missionToEdit\" [currentUserOrganisation]=\"currentOrg\" [isSP]=\"isSP\"\n (addedMissionInput)=\"onMissionEdited($event)\"></lib-form-mission>\n </div>\n <div *ngIf=\"createForExistingUser\">\n <lib-form-mission [organisationForMission]=\"addToOrg\" [currentUserOrganisation]=\"currentOrg\" [isSP]=\"isSP\"\n [userForMissionID]=\"userForAddingMission.id\" (addedMissionInput)=\"onMissionCreated($event)\">\n </lib-form-mission>\n </div>\n <div *ngIf=\"isAddingOrg || isAddingToExistingOrg\">\n <lib-form-organisation [currentOrg]=\"currentOrg\" [currentUser]=\"me\" [existing]=\"isAddingToExistingOrg\"\n (added)=\"orgAdded($event)\"></lib-form-organisation>\n </div>\n </div>\n\n <div class=\"col-md-4 col-lg-6\" *ngIf=\"orgSelectedDetails && !isGuide\">\n <lib-detail-organisation [org]=\"orgSelectedDetails\" [currentOrg]=\"currentOrg\" [isSP]=\"isSP\"\n (orgChanged)='orgAdded($event)'></lib-detail-organisation>\n </div>\n </div>\n</div>", styles: [".add-button{width:-moz-fit-content;width:fit-content;margin-left:.5rem}li.ml-4{margin-left:3rem}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}.action-button-container .share-visitor-button{width:-moz-fit-content;width:fit-content}\n"] }]
1249
+ args: [{ selector: 'lib-user', template: "<div class=\"dashboard-tab\">\r\n <div class=\"header-dashboard-tab\">\r\n <h3>{{'Users' | translate}}</h3>\r\n <!-- <app-search-bar *ngIf=\"!hideList\" [searchable]=\"orgsUsersMissions\" objectType=\"USER\"\r\n (searchEvent)=\"applyResultsSearchBar($event)\">\r\n </app-search-bar> -->\r\n <hr>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-8 col-lg-6\">\r\n <div class=\"row ml-0 mb-2\" *ngIf=\"!hideList\">\r\n <button class=\"btn btn-outline-primary rounded-pill add-button\" *ngIf=\"!isGuide\" (click)=\"onAddOrg()\">\r\n {{'Add user to new organisation' | translate}}</button>\r\n </div>\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\r\n <lib-loader></lib-loader>\r\n </div>\r\n <div *ngIf=\"!hideList\">\r\n <ul class=\"list-group list-group-flush\" *ngIf=\"filteredOrgsUsersMissions\" data-testid=\"mission-organisation-list\">\r\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let o of filteredOrgsUsersMissions\">\r\n <div class=\"d-flex justify-content-between align-items-center font-weight-bold\"\r\n ngbTooltip=\"See details and users\" style=\"cursor: pointer;\" (click)=\"onToggleDetailOrg(o.org.id, o.org)\">\r\n {{o.org.name}} <small *ngIf=\"o.org.id == currentOrg.id\">({{'My organisation' | translate}})</small>\r\n <small *ngIf=\"isSP && clientsSP.includes(o.org.id)\">({{'Client of SmarterPlan' | translate}})</small>\r\n <small *ngIf=\"isSP && getOrderedOrg(o.org.id)\">({{'Client of ' | translate}}\r\n {{getOrderedOrg(o.org.id)}})</small>\r\n <lib-chevron [conditionShowing]=\"detailsOrg==o.org.id\" [ngClass]=\"[getStringNoSpace(o.org.name)]\"></lib-chevron>\r\n </div>\r\n <div class=\"missions\" *ngIf=\"detailsOrg==o.org.id\">\r\n <div class='d-flex'>\r\n <button data-testid=\"user-new-btn\" class=\"btn btn-outline-primary rounded-pill mt-3 mb-3\" (click)=\"onAdd(o.org)\">{{'Add user' |\r\n translate}}</button>\r\n </div>\r\n\r\n <ul class=\"list-group list-group-flush\" data-testid=\"mission-user-list\">\r\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let a of o.users\"\r\n (click)=\"onToggleDetailUser(a.user.id)\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n {{a.user.displayName}}\r\n <lib-chevron [conditionShowing]=\"detailsUser==a.user.id\" [ngClass]=\"[getStringNoSpace(a.user.displayName)]\"></lib-chevron>\r\n </div>\r\n\r\n <div *ngIf=\"detailsUser==a.user.id\">\r\n <div class=\"ml-3\">\r\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\r\n {{'Email' | translate}}: {{a.user.email }}\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill\" data-testid=\"mission-new-btn\"\r\n (click)=\"onAddForUser(o.org, a.user)\">{{'Add new mission' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill\" (click)=\"onClearToken(a)\">\r\n {{'Clear Token' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill\"\r\n (click)=\"onDeleteUser(a.user)\">{{'Delete user' | translate}}</button>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\r\n {{ a.missions.length > 0 ? ('Current Missions' | translate) : ('No missions' | translate)}}\r\n </div>\r\n </div>\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item\" *ngFor=\"let mis of a.missions\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.description\">\r\n {{'Description' | translate}}: {{mis.description}}</li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.templateMissionID\">\r\n {{'Attendee of tour' | translate}}: {{mis.templateMission.title}}</li>\r\n\r\n <li class=\"list-group-item bg-transparent\">{{'Role' | translate}}: {{ mis.role }}</li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.hashtags && mis.hashtags.length> 0\">\r\n {{'Hashtags' | translate}}: <ul class=\"keywordsDisplay no-border\">\r\n <div class=\"keywordsdisplayContainer\">\r\n <li class=\"keywordsItem\" *ngFor=\"let hashtag of mis.hashtags\">\r\n {{ hashtag | hashtagFromID | async }}</li>\r\n </div>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Language' | translate }}: {{\r\n mis.locale ? mis.locale : ('Not applicable' | translate)}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Access level' | translate }}: {{\r\n mis.level}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Ordered by' | translate }}: {{\r\n mis.orderedOrganisation.name}}</li>\r\n <li class=\"list-group-item bg-transparent\" *ngIf=\"mis.domains\">{{'Domains' | translate }}:\r\n {{mis.domains ?\r\n domainIdsToStringForMission(mis) : (\"No data\" | translate) }}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Authorized location' | translate }}:\r\n {{ mis.space ? mis.space.name : \"No location\" | translate}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Authorized zone' | translate }}:\r\n {{ mis.zone ? mis.zone.name : \"All zones allowed\" | translate}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Starts' | translate }}:\r\n {{ mis.startDateTime ? (mis.startDateTime | timeDateString: \"day_time_zone\" | async) :\r\n \"No data\" | translate}}, {{'Ends' | translate}}: {{ mis.endDateTime\r\n ? (mis.endDateTime | timeDateString: \"day_time_zone\" | async)\r\n : \"No data\" | translate}}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Created' | translate }}:\r\n {{ mis.createdAt | timeDateString: \"day_time_zone\" | async }}\r\n </li>\r\n </ul>\r\n <div class=\"action-button-container\" >\r\n <button type=\"button\" data-testid=\"edit-mission-btn\" class=\"btn btn-outline-primary rounded-pill mr-2 action-button\"\r\n (click)=\"onEdit(mis)\">{{'Edit' |\r\n translate}}</button>\r\n <button type=\"button\" *ngIf=\"mis.role === 'VISITOR' || mis.role === 'VISITOR_MUSEUM'\"\r\n class=\"btn btn-outline-primary rounded-pill mr-2 action-button share-visitor-button\"\r\n (click)=\"onSetForShareableLink(a.user, mis)\">{{'Generate Shareable Link' |\r\n translate}}</button>\r\n <button type=\"button\" class=\"btn btn-outline-primary rounded-pill action-button\"\r\n (click)=\"onDeleteMission(mis)\">{{'Delete' | translate}}</button>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item list-group-item-action\" *ngIf=\"profilesWithoutMission && profilesWithoutMission.length > 0\">\r\n <div class=\"d-flex justify-content-between align-items-center font-weight-bold\"\r\n ngbTooltip=\"See details\" style=\"cursor: pointer;\" (click)=\"onToggleDetailOrg('-2', null)\">\r\n {{\"Users without missions\" | translate}}\r\n <lib-chevron [conditionShowing]=\"detailsOrg=='-2'\"></lib-chevron>\r\n </div>\r\n <div class=\"missions\" *ngIf=\"detailsOrg=='-2'\">\r\n <ul class=\"list-group list-group-flush\" data-testid=\"mission-organisation-list\">\r\n <li class=\"list-group-item list-group-item-action\" *ngFor=\"let profile of profilesWithoutMission\" \r\n (click)=\"onToggleDetailUser(profile.id)\">\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n {{profile.displayName}}\r\n <lib-chevron [conditionShowing]=\"detailsUser==profile.id\" [ngClass]=\"[getStringNoSpace(profile.displayName)]\"></lib-chevron>\r\n </div>\r\n <div *ngIf=\"detailsUser==profile.id\">\r\n <div class=\"ml-3\">\r\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\r\n {{'Email' | translate}}: {{profile.email }}\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center mt-3\">\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill\" data-testid=\"mission-new-btn\"\r\n (click)=\"onAddForUser(currentOrg, profile)\">{{'Add new mission' | translate}}</button>\r\n <button type=\"button\" class=\"btn btn-primary rounded-pill\"\r\n (click)=\"onDeleteUser(profile)\">{{'Delete user' | translate}}</button>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div *ngIf=\"create\">\r\n <lib-user-mission-form [addToOrganisation]=\"addToOrg\" [currentOrg]=\"currentOrg\" [isSP]=\"isSP\"\r\n (added)=\"userAdded($event)\">\r\n </lib-user-mission-form>\r\n </div>\r\n <div *ngIf=\"edit\">\r\n <lib-form-mission [missionToEdit]=\"missionToEdit\" [currentUserOrganisation]=\"currentOrg\" [isSP]=\"isSP\"\r\n (addedMissionInput)=\"onMissionEdited($event)\"></lib-form-mission>\r\n </div>\r\n <div *ngIf=\"createForExistingUser\">\r\n <lib-form-mission [organisationForMission]=\"addToOrg\" [currentUserOrganisation]=\"currentOrg\" [isSP]=\"isSP\"\r\n [userForMissionID]=\"userForAddingMission.id\" (addedMissionInput)=\"onMissionCreated($event)\">\r\n </lib-form-mission>\r\n </div>\r\n <div *ngIf=\"isAddingOrg || isAddingToExistingOrg\">\r\n <lib-form-organisation [currentOrg]=\"currentOrg\" [currentUser]=\"me\" [existing]=\"isAddingToExistingOrg\"\r\n (added)=\"orgAdded($event)\"></lib-form-organisation>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-4 col-lg-6\" *ngIf=\"orgSelectedDetails && !isGuide\">\r\n <lib-detail-organisation [org]=\"orgSelectedDetails\" [currentOrg]=\"currentOrg\" [isSP]=\"isSP\"\r\n (orgChanged)='orgAdded($event)'></lib-detail-organisation>\r\n </div>\r\n </div>\r\n</div>", styles: [".add-button{width:fit-content;margin-left:.5rem}li.ml-4{margin-left:3rem}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}.action-button-container .share-visitor-button{width:fit-content}\n"] }]
1250
1250
  }], ctorParameters: function () { return [{ type: i1.BaseUserService }, { type: i1.MissionService }, { type: i1.DomainService }, { type: i1.OrganisationService }, { type: i4.NgbModal }, { type: i3.TranslateService }, { type: i1.ProfileService }]; } });
1251
1251
 
1252
1252
  function stringDateToMillis(dateString) {
@@ -1518,11 +1518,11 @@ class TemplateComponent {
1518
1518
  }
1519
1519
  }
1520
1520
  }
1521
- TemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: TemplateComponent, deps: [{ token: i1$1.FormBuilder }, { token: i1.BaseUserService }, { token: i1.SpaceService }, { token: i1.ZoneService }, { token: i1.HashtagService }, { token: i3.TranslateService }, { token: i1.ValidatorsService }], target: i0.ɵɵFactoryTarget.Component });
1522
- TemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: TemplateComponent, selector: "lib-template", inputs: { currentOrg: "currentOrg", editTemplate: "editTemplate", zoneID: "zoneID" }, outputs: { updatedTemplate: "updatedTemplate", createdTemplate: "createdTemplate" }, ngImport: i0, template: "<div class=\"form-container\" *ngIf=\"form\">\n <div>\n <h4>{{ 'Visit Template' | translate }}</h4>\n </div>\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\n <div>\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Visit Title' | translate}} *</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" class=\"form-control\"\n placeholder=\"Edvard Munch - \u00AB Un po\u00E8me d\u2019amour, de vie et de mort \u00BB\" formControlName=\"title\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['title'])|| isFormError(form.controls['title'])} \"\n data-testid=\"form-template-title\" (ngModelChange)=\"onVerifForm()\">\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-template-title-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(form.controls['title']) \n || isFormError(form.controls['title'])\">\n {{validatorsService.getError(form.controls['title']) |\n translate}}\n </ngb-alert>\n </div>\n </div>\n </div>\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Description' | translate}}</label>\n <div class=\"col-sm-8\">\n <textarea class=\"form-control\" formControlName=\"description\" style=\"height:200px\" (ngModelChange)=\"onVerifForm()\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['description'])|| isFormError(form.controls['description'])} \"\n data-testid=\"form-template-description\"\n placeholder=\"Cette visite d\u20191h30 vous pr\u00E9sentera les \u0153uvres embl\u00E9matiques du c\u00E9l\u00E8bre peintre norv\u00E9gien Edvard Munch (1863-1944)...\"></textarea>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-template-description-invalid\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\" validatorsService.isControlError(form.controls['description']) \n || isFormError(form.controls['description'])\">\n {{validatorsService.getError(form.controls['description']) |\n translate}}\n </ngb-alert>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Language' | translate}}</label>\n <div class=\"col-sm-8\">\n <select class=\"form-control\" formControlName=\"locale\">\n <option [ngValue]=\"null\">{{'Not applicable' | translate}}</option>\n <option *ngFor=\"let locale of locales\" [ngValue]=\"locale\">\n {{ locale }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Level' | translate}}*</label>\n <div class=\"col-sm-8\">\n <select class=\"form-control\" formControlName=\"level\">\n <option *ngFor=\"let level of availableLevels\" [ngValue]=\"level\">\n {{ level }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized location' | translate }}*</label>\n <div class=\"col-sm-8\" *ngIf=\"availableSpaces && !inputZone\">\n <select class=\"form-control\" formControlName=\"space\" (change)=\"onSpaceClick()\" (ngModelChange)=\"onVerifForm()\"\n data-testid=\"form-template-space\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['space'])|| isFormError(form.controls['space'])} \">\n <option *ngFor=\"let space of availableSpaces\" [ngValue]=\"space.id\">\n {{ space.name }}\n </option>\n </select>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-template-space-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(form.controls['space']) \n || isFormError(form.controls['space'])\">\n {{validatorsService.getError(form.controls['space']) |\n translate}}\n </ngb-alert>\n </div>\n </div>\n <div class=\"col-sm-8\" *ngIf=\"!availableSpaces\">\n {{ 'No locations available' | translate}}\n </div>\n <div class=\"col-sm-8\" *ngIf=\"inputZone\">\n <input type=\"text\" class=\"form-control\" [value]=\"inputZone.space.name\" disabled>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized zone' | translate }}*</label>\n <div class=\"col-sm-8\" *ngIf=\"zonesForSpace && zonesForSpace.length > 0 && !inputZone\">\n <select class=\"form-control\" required formControlName=\"zone\" (ngModelChange)=\"onVerifForm()\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['zone'])|| isFormError(form.controls['zone'])} \"\n data-testid=\"form-template-zone\">\n <option *ngFor=\"let zone of zonesForSpace\" [ngValue]=\"zone.id\">\n {{ zone.name }}\n </option>\n </select>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-template-zone-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(form.controls['zone']) \n || isFormError(form.controls['zone'])\">\n {{validatorsService.getError(form.controls['zone']) |\n translate}}\n </ngb-alert>\n </div>\n </div>\n <div class=\"col-sm-8\" *ngIf=\"zonesForSpace && zonesForSpace.length === 0 && !inputZone\">\n <p class=\"warning col-form-label\">{{\"No Museum Zones found for this location\"| translate}}</p>\n </div>\n <div class=\"col-sm-8\" *ngIf=\"inputZone\">\n <input type=\"text\" class=\"form-control\" [value]=\"inputZone.name\" disabled>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Hashtags' | translate}}</label>\n <div class=\"col-sm-8\" *ngIf=\"spaceID.value\">\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length > 0\">{{'Available hashtags' | translate}}\n </p>\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length === 0\">\n {{'No hashtags created for this location' | translate}} </p>\n <div *ngIf=\"availableHashtags.length > 0\">\n <ul class=\"keywordsDisplay no-border\">\n <div class=\"keywordsdisplayContainer\">\n <li [class]=\"addedHashtags.includes(hashtag) ? 'keywordsItem added' : 'keywordsItem'\"\n *ngFor=\"let hashtag of availableHashtags\" (click)=\"onHashtagClick(hashtag)\"\n style=\"cursor: pointer;\"\n ngbTooltip=\"{{addedHashtags.includes(hashtag) ? ('Remove'|translate) : ('Add'|translate) }}\">\n {{hashtag.name}}</li>\n </div>\n </ul>\n <p class=\"keywordsRules\">{{'Added hashtags' | translate}} </p>\n <ul class=\"keywordsDisplay\">\n <div class=\"keywordsdisplayContainer\" *ngIf=\"addedHashtags.length> 0\">\n <li class=\"keywordsItem\" *ngFor=\"let hashtag of addedHashtags\">{{ hashtag.name }}</li>\n </div>\n </ul>\n </div>\n </div>\n <div class=\"col-sm-8\" *ngIf=\"!spaceID.value\">\n <p class=\"keywordsRules\">{{'You need to choose the location first' | translate}} </p>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Start Date' | translate}} *</label>\n <div class=\"input-group col-sm-8\">\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" formControlName=\"startDate\" ngbDatepicker\n data-testid=\"form-template-startDate\" #d1=\"ngbDatepicker\" (ngModelChange)=\"onVerifDate();onVerifForm()\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['startDate'])|| isFormError(form.controls['startDate'])|| dateError} \">\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d1.toggle()\" type=\"button\"></button>\n </div>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-template-startDate-invalid\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\" validatorsService.isControlError(form.controls['startDate']) \n || isFormError(form.controls['startDate'])\">\n {{validatorsService.getError(form.controls['startDate']) |\n translate}}\n </ngb-alert>\n\n <ngb-alert data-testid=\"form-template-startDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\"startDateInvalid\">\n {{'errorForm.date_invalid' | translate}}\n </ngb-alert>\n\n <ngb-alert data-testid=\"form-template-startDate-invalid-verif\" [dismissible]=\"false\"\n type=\"danger\" *ngIf=\"dateError\">\n {{'errorForm.date_start_end' | translate}}\n </ngb-alert>\n\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Start Time' | translate}}</label>\n <div class=\"input-group col-sm-8\">\n <ngb-timepicker [(ngModel)]=\"missionTimeStart\" [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onVerifDate();onVerifForm()\">\n </ngb-timepicker>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'End Date' | translate}} *</label>\n <div class=\"input-group col-sm-8\">\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" formControlName=\"endDate\" ngbDatepicker\n #d2=\"ngbDatepicker\" data-testid=\"form-template-endDate\" (ngModelChange)=\"onVerifDate();onVerifForm()\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['endDate'])|| isFormError(form.controls['endDate'])|| dateError} \">\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d2.toggle()\" type=\"button\"></button>\n </div>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-template-endDate-invalid\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\" validatorsService.isControlError(form.controls['endDate']) || isFormError(form.controls['endDate'])\">\n {{validatorsService.getError(form.controls['endDate']) |\n translate}}\n </ngb-alert>\n\n <ngb-alert data-testid=\"form-template-endDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\"endDateInvalid\">\n {{'errorForm.date_invalid' | translate}}\n </ngb-alert>\n\n <ngb-alert data-testid=\"form-template-endDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\"dateError\">\n {{'errorForm.date_end_start' |\n translate}}\n </ngb-alert>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'End Time' | translate}}</label>\n <div class=\"input-group col-sm-8\">\n <ngb-timepicker [(ngModel)]=\"missionTimeEnd\" [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onVerifDate();onVerifForm()\"></ngb-timepicker>\n </div>\n </div>\n\n </div>\n <div class=\"btn-control-div action-button-container\">\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill action-button\"\n [ngClass]=\"{'is-invalid' : errorForm }\" [disabled]=\"this.working \"\n data-testid=\"form-template-submit-btn\">{{'Save' |\n translate}}</button>\n <button type=\"button\" (click)=\"onCancel()\" [disabled]=\"this.working\" data-testid=\"form-template-cancel-btn\"\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\n </div>\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\n <ngb-alert data-testid=\"form-template-invalid\" [dismissible]=\"false\" type=\"danger\">\n {{'errorForm.infoBtn' |translate}}\n </ngb-alert>\n </div>\n\n </form>\n</div>", styles: [".form-container{margin:2rem 0rem}.form-container .btn-control-div .btn{width:8rem}.warning{margin:0;color:red}.keywordsDisplay{min-height:40px}.keywordsRules{margin-bottom:2px}.form-group{margin:1.5rem 0}label.col-sm-4.col-form-label{width:200px;min-width:200px}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px!important}\n"], components: [{ type: i4.NgbAlert, selector: "ngb-alert", inputs: ["animation", "dismissible", "type"], outputs: ["closed"], exportAs: ["ngbAlert"] }, { type: i4.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i4.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i3.TranslatePipe } });
1523
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: TemplateComponent, decorators: [{
1521
+ TemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TemplateComponent, deps: [{ token: i1$1.FormBuilder }, { token: i1.BaseUserService }, { token: i1.SpaceService }, { token: i1.ZoneService }, { token: i1.HashtagService }, { token: i3.TranslateService }, { token: i1.ValidatorsService }], target: i0.ɵɵFactoryTarget.Component });
1522
+ TemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TemplateComponent, selector: "lib-template", inputs: { currentOrg: "currentOrg", editTemplate: "editTemplate", zoneID: "zoneID" }, outputs: { updatedTemplate: "updatedTemplate", createdTemplate: "createdTemplate" }, ngImport: i0, template: "<div class=\"form-container\" *ngIf=\"form\">\r\n <div>\r\n <h4>{{ 'Visit Template' | translate }}</h4>\r\n </div>\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\r\n <div>\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Visit Title' | translate}} *</label>\r\n <div class=\"col-sm-8\">\r\n <input type=\"text\" class=\"form-control\"\r\n placeholder=\"Edvard Munch - \u00AB Un po\u00E8me d\u2019amour, de vie et de mort \u00BB\" formControlName=\"title\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['title'])|| isFormError(form.controls['title'])} \"\r\n data-testid=\"form-template-title\" (ngModelChange)=\"onVerifForm()\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-template-title-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(form.controls['title']) \r\n || isFormError(form.controls['title'])\">\r\n {{validatorsService.getError(form.controls['title']) |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Description' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <textarea class=\"form-control\" formControlName=\"description\" style=\"height:200px\" (ngModelChange)=\"onVerifForm()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['description'])|| isFormError(form.controls['description'])} \"\r\n data-testid=\"form-template-description\"\r\n placeholder=\"Cette visite d\u20191h30 vous pr\u00E9sentera les \u0153uvres embl\u00E9matiques du c\u00E9l\u00E8bre peintre norv\u00E9gien Edvard Munch (1863-1944)...\"></textarea>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-template-description-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\" validatorsService.isControlError(form.controls['description']) \r\n || isFormError(form.controls['description'])\">\r\n {{validatorsService.getError(form.controls['description']) |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Language' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <select class=\"form-control\" formControlName=\"locale\">\r\n <option [ngValue]=\"null\">{{'Not applicable' | translate}}</option>\r\n <option *ngFor=\"let locale of locales\" [ngValue]=\"locale\">\r\n {{ locale }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Level' | translate}}*</label>\r\n <div class=\"col-sm-8\">\r\n <select class=\"form-control\" formControlName=\"level\">\r\n <option *ngFor=\"let level of availableLevels\" [ngValue]=\"level\">\r\n {{ level }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized location' | translate }}*</label>\r\n <div class=\"col-sm-8\" *ngIf=\"availableSpaces && !inputZone\">\r\n <select class=\"form-control\" formControlName=\"space\" (change)=\"onSpaceClick()\" (ngModelChange)=\"onVerifForm()\"\r\n data-testid=\"form-template-space\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['space'])|| isFormError(form.controls['space'])} \">\r\n <option *ngFor=\"let space of availableSpaces\" [ngValue]=\"space.id\">\r\n {{ space.name }}\r\n </option>\r\n </select>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-template-space-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(form.controls['space']) \r\n || isFormError(form.controls['space'])\">\r\n {{validatorsService.getError(form.controls['space']) |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-8\" *ngIf=\"!availableSpaces\">\r\n {{ 'No locations available' | translate}}\r\n </div>\r\n <div class=\"col-sm-8\" *ngIf=\"inputZone\">\r\n <input type=\"text\" class=\"form-control\" [value]=\"inputZone.space.name\" disabled>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized zone' | translate }}*</label>\r\n <div class=\"col-sm-8\" *ngIf=\"zonesForSpace && zonesForSpace.length > 0 && !inputZone\">\r\n <select class=\"form-control\" required formControlName=\"zone\" (ngModelChange)=\"onVerifForm()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['zone'])|| isFormError(form.controls['zone'])} \"\r\n data-testid=\"form-template-zone\">\r\n <option *ngFor=\"let zone of zonesForSpace\" [ngValue]=\"zone.id\">\r\n {{ zone.name }}\r\n </option>\r\n </select>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-template-zone-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(form.controls['zone']) \r\n || isFormError(form.controls['zone'])\">\r\n {{validatorsService.getError(form.controls['zone']) |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-8\" *ngIf=\"zonesForSpace && zonesForSpace.length === 0 && !inputZone\">\r\n <p class=\"warning col-form-label\">{{\"No Museum Zones found for this location\"| translate}}</p>\r\n </div>\r\n <div class=\"col-sm-8\" *ngIf=\"inputZone\">\r\n <input type=\"text\" class=\"form-control\" [value]=\"inputZone.name\" disabled>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Hashtags' | translate}}</label>\r\n <div class=\"col-sm-8\" *ngIf=\"spaceID.value\">\r\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length > 0\">{{'Available hashtags' | translate}}\r\n </p>\r\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length === 0\">\r\n {{'No hashtags created for this location' | translate}} </p>\r\n <div *ngIf=\"availableHashtags.length > 0\">\r\n <ul class=\"keywordsDisplay no-border\">\r\n <div class=\"keywordsdisplayContainer\">\r\n <li [class]=\"addedHashtags.includes(hashtag) ? 'keywordsItem added' : 'keywordsItem'\"\r\n *ngFor=\"let hashtag of availableHashtags\" (click)=\"onHashtagClick(hashtag)\"\r\n style=\"cursor: pointer;\"\r\n ngbTooltip=\"{{addedHashtags.includes(hashtag) ? ('Remove'|translate) : ('Add'|translate) }}\">\r\n {{hashtag.name}}</li>\r\n </div>\r\n </ul>\r\n <p class=\"keywordsRules\">{{'Added hashtags' | translate}} </p>\r\n <ul class=\"keywordsDisplay\">\r\n <div class=\"keywordsdisplayContainer\" *ngIf=\"addedHashtags.length> 0\">\r\n <li class=\"keywordsItem\" *ngFor=\"let hashtag of addedHashtags\">{{ hashtag.name }}</li>\r\n </div>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-8\" *ngIf=\"!spaceID.value\">\r\n <p class=\"keywordsRules\">{{'You need to choose the location first' | translate}} </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Start Date' | translate}} *</label>\r\n <div class=\"input-group col-sm-8\">\r\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" formControlName=\"startDate\" ngbDatepicker\r\n data-testid=\"form-template-startDate\" #d1=\"ngbDatepicker\" (ngModelChange)=\"onVerifDate();onVerifForm()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['startDate'])|| isFormError(form.controls['startDate'])|| dateError} \">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d1.toggle()\" type=\"button\"></button>\r\n </div>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-template-startDate-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\" validatorsService.isControlError(form.controls['startDate']) \r\n || isFormError(form.controls['startDate'])\">\r\n {{validatorsService.getError(form.controls['startDate']) |\r\n translate}}\r\n </ngb-alert>\r\n\r\n <ngb-alert data-testid=\"form-template-startDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"startDateInvalid\">\r\n {{'errorForm.date_invalid' | translate}}\r\n </ngb-alert>\r\n\r\n <ngb-alert data-testid=\"form-template-startDate-invalid-verif\" [dismissible]=\"false\"\r\n type=\"danger\" *ngIf=\"dateError\">\r\n {{'errorForm.date_start_end' | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Start Time' | translate}}</label>\r\n <div class=\"input-group col-sm-8\">\r\n <ngb-timepicker [(ngModel)]=\"missionTimeStart\" [ngModelOptions]=\"{standalone: true}\"\r\n (ngModelChange)=\"onVerifDate();onVerifForm()\">\r\n </ngb-timepicker>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'End Date' | translate}} *</label>\r\n <div class=\"input-group col-sm-8\">\r\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" formControlName=\"endDate\" ngbDatepicker\r\n #d2=\"ngbDatepicker\" data-testid=\"form-template-endDate\" (ngModelChange)=\"onVerifDate();onVerifForm()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['endDate'])|| isFormError(form.controls['endDate'])|| dateError} \">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d2.toggle()\" type=\"button\"></button>\r\n </div>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-template-endDate-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\" validatorsService.isControlError(form.controls['endDate']) || isFormError(form.controls['endDate'])\">\r\n {{validatorsService.getError(form.controls['endDate']) |\r\n translate}}\r\n </ngb-alert>\r\n\r\n <ngb-alert data-testid=\"form-template-endDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"endDateInvalid\">\r\n {{'errorForm.date_invalid' | translate}}\r\n </ngb-alert>\r\n\r\n <ngb-alert data-testid=\"form-template-endDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"dateError\">\r\n {{'errorForm.date_end_start' |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'End Time' | translate}}</label>\r\n <div class=\"input-group col-sm-8\">\r\n <ngb-timepicker [(ngModel)]=\"missionTimeEnd\" [ngModelOptions]=\"{standalone: true}\"\r\n (ngModelChange)=\"onVerifDate();onVerifForm()\"></ngb-timepicker>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"btn-control-div action-button-container\">\r\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill action-button\"\r\n [ngClass]=\"{'is-invalid' : errorForm }\" [disabled]=\"this.working \"\r\n data-testid=\"form-template-submit-btn\">{{'Save' |\r\n translate}}</button>\r\n <button type=\"button\" (click)=\"onCancel()\" [disabled]=\"this.working\" data-testid=\"form-template-cancel-btn\"\r\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\r\n </div>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\r\n <ngb-alert data-testid=\"form-template-invalid\" [dismissible]=\"false\" type=\"danger\">\r\n {{'errorForm.infoBtn' |translate}}\r\n </ngb-alert>\r\n </div>\r\n\r\n </form>\r\n</div>", styles: [".form-container{margin:2rem 0rem}.form-container .btn-control-div .btn{width:8rem}.warning{margin:0;color:red}.keywordsDisplay{min-height:40px}.keywordsRules{margin-bottom:2px}.form-group{margin:1.5rem 0}label.col-sm-4.col-form-label{width:200px;min-width:200px}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px!important}\n"], components: [{ type: i4.NgbAlert, selector: "ngb-alert", inputs: ["animation", "dismissible", "type"], outputs: ["closed"], exportAs: ["ngbAlert"] }, { type: i4.NgbTimepicker, selector: "ngb-timepicker", inputs: ["meridian", "spinners", "seconds", "hourStep", "minuteStep", "secondStep", "readonlyInputs", "size"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { type: i4.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i3.TranslatePipe } });
1523
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TemplateComponent, decorators: [{
1524
1524
  type: Component,
1525
- args: [{ selector: 'lib-template', template: "<div class=\"form-container\" *ngIf=\"form\">\n <div>\n <h4>{{ 'Visit Template' | translate }}</h4>\n </div>\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\n <div>\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Visit Title' | translate}} *</label>\n <div class=\"col-sm-8\">\n <input type=\"text\" class=\"form-control\"\n placeholder=\"Edvard Munch - \u00AB Un po\u00E8me d\u2019amour, de vie et de mort \u00BB\" formControlName=\"title\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['title'])|| isFormError(form.controls['title'])} \"\n data-testid=\"form-template-title\" (ngModelChange)=\"onVerifForm()\">\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-template-title-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(form.controls['title']) \n || isFormError(form.controls['title'])\">\n {{validatorsService.getError(form.controls['title']) |\n translate}}\n </ngb-alert>\n </div>\n </div>\n </div>\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Description' | translate}}</label>\n <div class=\"col-sm-8\">\n <textarea class=\"form-control\" formControlName=\"description\" style=\"height:200px\" (ngModelChange)=\"onVerifForm()\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['description'])|| isFormError(form.controls['description'])} \"\n data-testid=\"form-template-description\"\n placeholder=\"Cette visite d\u20191h30 vous pr\u00E9sentera les \u0153uvres embl\u00E9matiques du c\u00E9l\u00E8bre peintre norv\u00E9gien Edvard Munch (1863-1944)...\"></textarea>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-template-description-invalid\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\" validatorsService.isControlError(form.controls['description']) \n || isFormError(form.controls['description'])\">\n {{validatorsService.getError(form.controls['description']) |\n translate}}\n </ngb-alert>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Language' | translate}}</label>\n <div class=\"col-sm-8\">\n <select class=\"form-control\" formControlName=\"locale\">\n <option [ngValue]=\"null\">{{'Not applicable' | translate}}</option>\n <option *ngFor=\"let locale of locales\" [ngValue]=\"locale\">\n {{ locale }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Level' | translate}}*</label>\n <div class=\"col-sm-8\">\n <select class=\"form-control\" formControlName=\"level\">\n <option *ngFor=\"let level of availableLevels\" [ngValue]=\"level\">\n {{ level }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized location' | translate }}*</label>\n <div class=\"col-sm-8\" *ngIf=\"availableSpaces && !inputZone\">\n <select class=\"form-control\" formControlName=\"space\" (change)=\"onSpaceClick()\" (ngModelChange)=\"onVerifForm()\"\n data-testid=\"form-template-space\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['space'])|| isFormError(form.controls['space'])} \">\n <option *ngFor=\"let space of availableSpaces\" [ngValue]=\"space.id\">\n {{ space.name }}\n </option>\n </select>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-template-space-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(form.controls['space']) \n || isFormError(form.controls['space'])\">\n {{validatorsService.getError(form.controls['space']) |\n translate}}\n </ngb-alert>\n </div>\n </div>\n <div class=\"col-sm-8\" *ngIf=\"!availableSpaces\">\n {{ 'No locations available' | translate}}\n </div>\n <div class=\"col-sm-8\" *ngIf=\"inputZone\">\n <input type=\"text\" class=\"form-control\" [value]=\"inputZone.space.name\" disabled>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized zone' | translate }}*</label>\n <div class=\"col-sm-8\" *ngIf=\"zonesForSpace && zonesForSpace.length > 0 && !inputZone\">\n <select class=\"form-control\" required formControlName=\"zone\" (ngModelChange)=\"onVerifForm()\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['zone'])|| isFormError(form.controls['zone'])} \"\n data-testid=\"form-template-zone\">\n <option *ngFor=\"let zone of zonesForSpace\" [ngValue]=\"zone.id\">\n {{ zone.name }}\n </option>\n </select>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-template-zone-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(form.controls['zone']) \n || isFormError(form.controls['zone'])\">\n {{validatorsService.getError(form.controls['zone']) |\n translate}}\n </ngb-alert>\n </div>\n </div>\n <div class=\"col-sm-8\" *ngIf=\"zonesForSpace && zonesForSpace.length === 0 && !inputZone\">\n <p class=\"warning col-form-label\">{{\"No Museum Zones found for this location\"| translate}}</p>\n </div>\n <div class=\"col-sm-8\" *ngIf=\"inputZone\">\n <input type=\"text\" class=\"form-control\" [value]=\"inputZone.name\" disabled>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Hashtags' | translate}}</label>\n <div class=\"col-sm-8\" *ngIf=\"spaceID.value\">\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length > 0\">{{'Available hashtags' | translate}}\n </p>\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length === 0\">\n {{'No hashtags created for this location' | translate}} </p>\n <div *ngIf=\"availableHashtags.length > 0\">\n <ul class=\"keywordsDisplay no-border\">\n <div class=\"keywordsdisplayContainer\">\n <li [class]=\"addedHashtags.includes(hashtag) ? 'keywordsItem added' : 'keywordsItem'\"\n *ngFor=\"let hashtag of availableHashtags\" (click)=\"onHashtagClick(hashtag)\"\n style=\"cursor: pointer;\"\n ngbTooltip=\"{{addedHashtags.includes(hashtag) ? ('Remove'|translate) : ('Add'|translate) }}\">\n {{hashtag.name}}</li>\n </div>\n </ul>\n <p class=\"keywordsRules\">{{'Added hashtags' | translate}} </p>\n <ul class=\"keywordsDisplay\">\n <div class=\"keywordsdisplayContainer\" *ngIf=\"addedHashtags.length> 0\">\n <li class=\"keywordsItem\" *ngFor=\"let hashtag of addedHashtags\">{{ hashtag.name }}</li>\n </div>\n </ul>\n </div>\n </div>\n <div class=\"col-sm-8\" *ngIf=\"!spaceID.value\">\n <p class=\"keywordsRules\">{{'You need to choose the location first' | translate}} </p>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Start Date' | translate}} *</label>\n <div class=\"input-group col-sm-8\">\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" formControlName=\"startDate\" ngbDatepicker\n data-testid=\"form-template-startDate\" #d1=\"ngbDatepicker\" (ngModelChange)=\"onVerifDate();onVerifForm()\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['startDate'])|| isFormError(form.controls['startDate'])|| dateError} \">\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d1.toggle()\" type=\"button\"></button>\n </div>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-template-startDate-invalid\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\" validatorsService.isControlError(form.controls['startDate']) \n || isFormError(form.controls['startDate'])\">\n {{validatorsService.getError(form.controls['startDate']) |\n translate}}\n </ngb-alert>\n\n <ngb-alert data-testid=\"form-template-startDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\"startDateInvalid\">\n {{'errorForm.date_invalid' | translate}}\n </ngb-alert>\n\n <ngb-alert data-testid=\"form-template-startDate-invalid-verif\" [dismissible]=\"false\"\n type=\"danger\" *ngIf=\"dateError\">\n {{'errorForm.date_start_end' | translate}}\n </ngb-alert>\n\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'Start Time' | translate}}</label>\n <div class=\"input-group col-sm-8\">\n <ngb-timepicker [(ngModel)]=\"missionTimeStart\" [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onVerifDate();onVerifForm()\">\n </ngb-timepicker>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'End Date' | translate}} *</label>\n <div class=\"input-group col-sm-8\">\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" formControlName=\"endDate\" ngbDatepicker\n #d2=\"ngbDatepicker\" data-testid=\"form-template-endDate\" (ngModelChange)=\"onVerifDate();onVerifForm()\"\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['endDate'])|| isFormError(form.controls['endDate'])|| dateError} \">\n <div class=\"input-group-append\">\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d2.toggle()\" type=\"button\"></button>\n </div>\n <div class=\"invalid-feedback\">\n <ngb-alert data-testid=\"form-template-endDate-invalid\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\" validatorsService.isControlError(form.controls['endDate']) || isFormError(form.controls['endDate'])\">\n {{validatorsService.getError(form.controls['endDate']) |\n translate}}\n </ngb-alert>\n\n <ngb-alert data-testid=\"form-template-endDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\"endDateInvalid\">\n {{'errorForm.date_invalid' | translate}}\n </ngb-alert>\n\n <ngb-alert data-testid=\"form-template-endDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\n *ngIf=\"dateError\">\n {{'errorForm.date_end_start' |\n translate}}\n </ngb-alert>\n </div>\n </div>\n </div>\n\n <div class=\"form-group row\">\n <label class=\"col-sm-4 col-form-label\">{{'End Time' | translate}}</label>\n <div class=\"input-group col-sm-8\">\n <ngb-timepicker [(ngModel)]=\"missionTimeEnd\" [ngModelOptions]=\"{standalone: true}\"\n (ngModelChange)=\"onVerifDate();onVerifForm()\"></ngb-timepicker>\n </div>\n </div>\n\n </div>\n <div class=\"btn-control-div action-button-container\">\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill action-button\"\n [ngClass]=\"{'is-invalid' : errorForm }\" [disabled]=\"this.working \"\n data-testid=\"form-template-submit-btn\">{{'Save' |\n translate}}</button>\n <button type=\"button\" (click)=\"onCancel()\" [disabled]=\"this.working\" data-testid=\"form-template-cancel-btn\"\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\n </div>\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\n <ngb-alert data-testid=\"form-template-invalid\" [dismissible]=\"false\" type=\"danger\">\n {{'errorForm.infoBtn' |translate}}\n </ngb-alert>\n </div>\n\n </form>\n</div>", styles: [".form-container{margin:2rem 0rem}.form-container .btn-control-div .btn{width:8rem}.warning{margin:0;color:red}.keywordsDisplay{min-height:40px}.keywordsRules{margin-bottom:2px}.form-group{margin:1.5rem 0}label.col-sm-4.col-form-label{width:200px;min-width:200px}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px!important}\n"] }]
1525
+ args: [{ selector: 'lib-template', template: "<div class=\"form-container\" *ngIf=\"form\">\r\n <div>\r\n <h4>{{ 'Visit Template' | translate }}</h4>\r\n </div>\r\n <form (ngSubmit)=\"onSubmit()\" [formGroup]=\"form\">\r\n <div>\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Visit Title' | translate}} *</label>\r\n <div class=\"col-sm-8\">\r\n <input type=\"text\" class=\"form-control\"\r\n placeholder=\"Edvard Munch - \u00AB Un po\u00E8me d\u2019amour, de vie et de mort \u00BB\" formControlName=\"title\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['title'])|| isFormError(form.controls['title'])} \"\r\n data-testid=\"form-template-title\" (ngModelChange)=\"onVerifForm()\">\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-template-title-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(form.controls['title']) \r\n || isFormError(form.controls['title'])\">\r\n {{validatorsService.getError(form.controls['title']) |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Description' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <textarea class=\"form-control\" formControlName=\"description\" style=\"height:200px\" (ngModelChange)=\"onVerifForm()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['description'])|| isFormError(form.controls['description'])} \"\r\n data-testid=\"form-template-description\"\r\n placeholder=\"Cette visite d\u20191h30 vous pr\u00E9sentera les \u0153uvres embl\u00E9matiques du c\u00E9l\u00E8bre peintre norv\u00E9gien Edvard Munch (1863-1944)...\"></textarea>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-template-description-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\" validatorsService.isControlError(form.controls['description']) \r\n || isFormError(form.controls['description'])\">\r\n {{validatorsService.getError(form.controls['description']) |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Language' | translate}}</label>\r\n <div class=\"col-sm-8\">\r\n <select class=\"form-control\" formControlName=\"locale\">\r\n <option [ngValue]=\"null\">{{'Not applicable' | translate}}</option>\r\n <option *ngFor=\"let locale of locales\" [ngValue]=\"locale\">\r\n {{ locale }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Level' | translate}}*</label>\r\n <div class=\"col-sm-8\">\r\n <select class=\"form-control\" formControlName=\"level\">\r\n <option *ngFor=\"let level of availableLevels\" [ngValue]=\"level\">\r\n {{ level }}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized location' | translate }}*</label>\r\n <div class=\"col-sm-8\" *ngIf=\"availableSpaces && !inputZone\">\r\n <select class=\"form-control\" formControlName=\"space\" (change)=\"onSpaceClick()\" (ngModelChange)=\"onVerifForm()\"\r\n data-testid=\"form-template-space\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['space'])|| isFormError(form.controls['space'])} \">\r\n <option *ngFor=\"let space of availableSpaces\" [ngValue]=\"space.id\">\r\n {{ space.name }}\r\n </option>\r\n </select>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-template-space-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(form.controls['space']) \r\n || isFormError(form.controls['space'])\">\r\n {{validatorsService.getError(form.controls['space']) |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-8\" *ngIf=\"!availableSpaces\">\r\n {{ 'No locations available' | translate}}\r\n </div>\r\n <div class=\"col-sm-8\" *ngIf=\"inputZone\">\r\n <input type=\"text\" class=\"form-control\" [value]=\"inputZone.space.name\" disabled>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{ 'Authorized zone' | translate }}*</label>\r\n <div class=\"col-sm-8\" *ngIf=\"zonesForSpace && zonesForSpace.length > 0 && !inputZone\">\r\n <select class=\"form-control\" required formControlName=\"zone\" (ngModelChange)=\"onVerifForm()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['zone'])|| isFormError(form.controls['zone'])} \"\r\n data-testid=\"form-template-zone\">\r\n <option *ngFor=\"let zone of zonesForSpace\" [ngValue]=\"zone.id\">\r\n {{ zone.name }}\r\n </option>\r\n </select>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-template-zone-invalid\" [dismissible]=\"false\" type=\"danger\" *ngIf=\" validatorsService.isControlError(form.controls['zone']) \r\n || isFormError(form.controls['zone'])\">\r\n {{validatorsService.getError(form.controls['zone']) |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-8\" *ngIf=\"zonesForSpace && zonesForSpace.length === 0 && !inputZone\">\r\n <p class=\"warning col-form-label\">{{\"No Museum Zones found for this location\"| translate}}</p>\r\n </div>\r\n <div class=\"col-sm-8\" *ngIf=\"inputZone\">\r\n <input type=\"text\" class=\"form-control\" [value]=\"inputZone.name\" disabled>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Hashtags' | translate}}</label>\r\n <div class=\"col-sm-8\" *ngIf=\"spaceID.value\">\r\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length > 0\">{{'Available hashtags' | translate}}\r\n </p>\r\n <p class=\"keywordsRules\" *ngIf=\"availableHashtags.length === 0\">\r\n {{'No hashtags created for this location' | translate}} </p>\r\n <div *ngIf=\"availableHashtags.length > 0\">\r\n <ul class=\"keywordsDisplay no-border\">\r\n <div class=\"keywordsdisplayContainer\">\r\n <li [class]=\"addedHashtags.includes(hashtag) ? 'keywordsItem added' : 'keywordsItem'\"\r\n *ngFor=\"let hashtag of availableHashtags\" (click)=\"onHashtagClick(hashtag)\"\r\n style=\"cursor: pointer;\"\r\n ngbTooltip=\"{{addedHashtags.includes(hashtag) ? ('Remove'|translate) : ('Add'|translate) }}\">\r\n {{hashtag.name}}</li>\r\n </div>\r\n </ul>\r\n <p class=\"keywordsRules\">{{'Added hashtags' | translate}} </p>\r\n <ul class=\"keywordsDisplay\">\r\n <div class=\"keywordsdisplayContainer\" *ngIf=\"addedHashtags.length> 0\">\r\n <li class=\"keywordsItem\" *ngFor=\"let hashtag of addedHashtags\">{{ hashtag.name }}</li>\r\n </div>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-8\" *ngIf=\"!spaceID.value\">\r\n <p class=\"keywordsRules\">{{'You need to choose the location first' | translate}} </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Start Date' | translate}} *</label>\r\n <div class=\"input-group col-sm-8\">\r\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" formControlName=\"startDate\" ngbDatepicker\r\n data-testid=\"form-template-startDate\" #d1=\"ngbDatepicker\" (ngModelChange)=\"onVerifDate();onVerifForm()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['startDate'])|| isFormError(form.controls['startDate'])|| dateError} \">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d1.toggle()\" type=\"button\"></button>\r\n </div>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-template-startDate-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\" validatorsService.isControlError(form.controls['startDate']) \r\n || isFormError(form.controls['startDate'])\">\r\n {{validatorsService.getError(form.controls['startDate']) |\r\n translate}}\r\n </ngb-alert>\r\n\r\n <ngb-alert data-testid=\"form-template-startDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"startDateInvalid\">\r\n {{'errorForm.date_invalid' | translate}}\r\n </ngb-alert>\r\n\r\n <ngb-alert data-testid=\"form-template-startDate-invalid-verif\" [dismissible]=\"false\"\r\n type=\"danger\" *ngIf=\"dateError\">\r\n {{'errorForm.date_start_end' | translate}}\r\n </ngb-alert>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'Start Time' | translate}}</label>\r\n <div class=\"input-group col-sm-8\">\r\n <ngb-timepicker [(ngModel)]=\"missionTimeStart\" [ngModelOptions]=\"{standalone: true}\"\r\n (ngModelChange)=\"onVerifDate();onVerifForm()\">\r\n </ngb-timepicker>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'End Date' | translate}} *</label>\r\n <div class=\"input-group col-sm-8\">\r\n <input class=\"form-control\" placeholder=\"dd/mm/yyyy\" formControlName=\"endDate\" ngbDatepicker\r\n #d2=\"ngbDatepicker\" data-testid=\"form-template-endDate\" (ngModelChange)=\"onVerifDate();onVerifForm()\"\r\n [ngClass]=\"{'is-invalid' : validatorsService.isControlError(form.controls['endDate'])|| isFormError(form.controls['endDate'])|| dateError} \">\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary calendar\" (click)=\"d2.toggle()\" type=\"button\"></button>\r\n </div>\r\n <div class=\"invalid-feedback\">\r\n <ngb-alert data-testid=\"form-template-endDate-invalid\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\" validatorsService.isControlError(form.controls['endDate']) || isFormError(form.controls['endDate'])\">\r\n {{validatorsService.getError(form.controls['endDate']) |\r\n translate}}\r\n </ngb-alert>\r\n\r\n <ngb-alert data-testid=\"form-template-endDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"endDateInvalid\">\r\n {{'errorForm.date_invalid' | translate}}\r\n </ngb-alert>\r\n\r\n <ngb-alert data-testid=\"form-template-endDate-invalid-verif\" [dismissible]=\"false\" type=\"danger\"\r\n *ngIf=\"dateError\">\r\n {{'errorForm.date_end_start' |\r\n translate}}\r\n </ngb-alert>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group row\">\r\n <label class=\"col-sm-4 col-form-label\">{{'End Time' | translate}}</label>\r\n <div class=\"input-group col-sm-8\">\r\n <ngb-timepicker [(ngModel)]=\"missionTimeEnd\" [ngModelOptions]=\"{standalone: true}\"\r\n (ngModelChange)=\"onVerifDate();onVerifForm()\"></ngb-timepicker>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"btn-control-div action-button-container\">\r\n <button type=\"submit\" class=\"btn btn-outline-primary rounded-pill action-button\"\r\n [ngClass]=\"{'is-invalid' : errorForm }\" [disabled]=\"this.working \"\r\n data-testid=\"form-template-submit-btn\">{{'Save' |\r\n translate}}</button>\r\n <button type=\"button\" (click)=\"onCancel()\" [disabled]=\"this.working\" data-testid=\"form-template-cancel-btn\"\r\n class=\"btn btn-outline-primary rounded-pill action-button\">{{'Cancel' | translate}}</button>\r\n </div>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorForm\">\r\n <ngb-alert data-testid=\"form-template-invalid\" [dismissible]=\"false\" type=\"danger\">\r\n {{'errorForm.infoBtn' |translate}}\r\n </ngb-alert>\r\n </div>\r\n\r\n </form>\r\n</div>", styles: [".form-container{margin:2rem 0rem}.form-container .btn-control-div .btn{width:8rem}.warning{margin:0;color:red}.keywordsDisplay{min-height:40px}.keywordsRules{margin-bottom:2px}.form-group{margin:1.5rem 0}label.col-sm-4.col-form-label{width:200px;min-width:200px}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px!important}\n"] }]
1526
1526
  }], ctorParameters: function () { return [{ type: i1$1.FormBuilder }, { type: i1.BaseUserService }, { type: i1.SpaceService }, { type: i1.ZoneService }, { type: i1.HashtagService }, { type: i3.TranslateService }, { type: i1.ValidatorsService }]; }, propDecorators: { currentOrg: [{
1527
1527
  type: Input
1528
1528
  }], editTemplate: [{
@@ -1623,11 +1623,11 @@ class CreateBatchComponent {
1623
1623
  }
1624
1624
  }
1625
1625
  }
1626
- CreateBatchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CreateBatchComponent, deps: [{ token: i1.MissionService }, { token: i1.BaseUserService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
1627
- CreateBatchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: CreateBatchComponent, selector: "lib-create-batch", inputs: { template: "template" }, outputs: { createdMissions: "createdMissions" }, ngImport: i0, template: "<div>\n <h4>{{'Add email address' | translate}}</h4>\n <div class=\"row\">\n <input class=\"form-control custom-form\" #box (keyup.enter)=\"onAddEmail(box.value); box.value=''\"\n placeholder=\"me@example.com\" data-testid=\"form-user-email\">\n <div class=\"outer_circle\" style='margin-left: 1.1em;'>\n <button id='btn-icon' (click)=\"onAddEmail(box.value); box.value=''\" data-testid=\"form-user-email-btn\"></button>\n </div>\n </div>\n\n <div class=\"row mt-3\">\n <label for=\"file\" class=\"btn btn-label-file rounded-pill\">\n <input type=\"file\" id=\"file\" (change)=\"handleFileInput($event.target)\" />\n {{'Upload from csv' | translate}}</label>\n </div>\n\n <ul *ngIf=\"addedEmails.length > 0\">\n <li class=\"list_item\" *ngFor=\"let mail of addedEmails; index as index\">{{mail}}\n <div class=\"icon-container\" (click)=\"onDelete(index)\">\n <span class=\"iconify\" data-icon=\"mdi:trash-can-outline\"></span>\n </div>\n </li>\n </ul>\n <div class=\"d-flex justify-content-center\" *ngIf=\"working\">\n <lib-loader></lib-loader>\n </div>\n <div class=\"row action-button-container\">\n <button class=\"btn btn-outline-primary rounded-pill mr-2 mt-3 action-button\" data-testid=\"form-user-submit-btn\" (click)=\"onCreateMissions()\">\n {{'Create users' | translate}}</button>\n <button class=\"btn btn-outline-primary rounded-pill mr-2 mt-3 action-button\" data-testid=\"form-user-cancel-btn\" (click)=\"onCancel()\">\n {{'Cancel' | translate}}</button>\n </div>\n\n</div>", styles: ["#btn-icon{width:30px;height:30px;background:url(../../../../assets/icons/plus.svg);border:none;vertical-align:middle}#btn-icon:hover{background:url(../../../../assets/icons/plus-over.svg)}#btn-icon[disabled]:hover{background:url(../../../../assets/icons/plus.svg)}.outer_circle{background-color:#ebebeb;border-radius:50%;width:32px;height:32px;padding:1px;margin-left:5px}.custom-form{width:80%}h4{color:var(--smarterplan-primary)}.pointer{cursor:pointer}.list_item{display:flex;font-size:1.1em}.icon-container{cursor:pointer;margin-left:5px}input[type=file]{display:none}.form-group{margin:1.5rem 0}label.col-sm-4.col-form-label{width:200px;min-width:200px}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"], components: [{ type: i1.LoaderComponent, selector: "lib-loader", inputs: ["useLogo", "color"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i3.TranslatePipe } });
1628
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CreateBatchComponent, decorators: [{
1626
+ CreateBatchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CreateBatchComponent, deps: [{ token: i1.MissionService }, { token: i1.BaseUserService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
1627
+ CreateBatchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CreateBatchComponent, selector: "lib-create-batch", inputs: { template: "template" }, outputs: { createdMissions: "createdMissions" }, ngImport: i0, template: "<div>\r\n <h4>{{'Add email address' | translate}}</h4>\r\n <div class=\"row\">\r\n <input class=\"form-control custom-form\" #box (keyup.enter)=\"onAddEmail(box.value); box.value=''\"\r\n placeholder=\"me@example.com\" data-testid=\"form-user-email\">\r\n <div class=\"outer_circle\" style='margin-left: 1.1em;'>\r\n <button id='btn-icon' (click)=\"onAddEmail(box.value); box.value=''\" data-testid=\"form-user-email-btn\"></button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mt-3\">\r\n <label for=\"file\" class=\"btn btn-label-file rounded-pill\">\r\n <input type=\"file\" id=\"file\" (change)=\"handleFileInput($event.target)\" />\r\n {{'Upload from csv' | translate}}</label>\r\n </div>\r\n\r\n <ul *ngIf=\"addedEmails.length > 0\">\r\n <li class=\"list_item\" *ngFor=\"let mail of addedEmails; index as index\">{{mail}}\r\n <div class=\"icon-container\" (click)=\"onDelete(index)\">\r\n <span class=\"iconify\" data-icon=\"mdi:trash-can-outline\"></span>\r\n </div>\r\n </li>\r\n </ul>\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"working\">\r\n <lib-loader></lib-loader>\r\n </div>\r\n <div class=\"row action-button-container\">\r\n <button class=\"btn btn-outline-primary rounded-pill mr-2 mt-3 action-button\" data-testid=\"form-user-submit-btn\" (click)=\"onCreateMissions()\">\r\n {{'Create users' | translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill mr-2 mt-3 action-button\" data-testid=\"form-user-cancel-btn\" (click)=\"onCancel()\">\r\n {{'Cancel' | translate}}</button>\r\n </div>\r\n\r\n</div>", styles: ["#btn-icon{width:30px;height:30px;background:url(../../../../assets/icons/plus.svg);border:none;vertical-align:middle}#btn-icon:hover{background:url(../../../../assets/icons/plus-over.svg)}#btn-icon[disabled]:hover{background:url(../../../../assets/icons/plus.svg)}.outer_circle{background-color:#ebebeb;border-radius:50%;width:32px;height:32px;padding:1px;margin-left:5px}.custom-form{width:80%}h4{color:var(--smarterplan-primary)}.pointer{cursor:pointer}.list_item{display:flex;font-size:1.1em}.icon-container{cursor:pointer;margin-left:5px}input[type=file]{display:none}.form-group{margin:1.5rem 0}label.col-sm-4.col-form-label{width:200px;min-width:200px}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"], components: [{ type: i1.LoaderComponent, selector: "lib-loader", inputs: ["useLogo", "color"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i3.TranslatePipe } });
1628
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CreateBatchComponent, decorators: [{
1629
1629
  type: Component,
1630
- args: [{ selector: 'lib-create-batch', template: "<div>\n <h4>{{'Add email address' | translate}}</h4>\n <div class=\"row\">\n <input class=\"form-control custom-form\" #box (keyup.enter)=\"onAddEmail(box.value); box.value=''\"\n placeholder=\"me@example.com\" data-testid=\"form-user-email\">\n <div class=\"outer_circle\" style='margin-left: 1.1em;'>\n <button id='btn-icon' (click)=\"onAddEmail(box.value); box.value=''\" data-testid=\"form-user-email-btn\"></button>\n </div>\n </div>\n\n <div class=\"row mt-3\">\n <label for=\"file\" class=\"btn btn-label-file rounded-pill\">\n <input type=\"file\" id=\"file\" (change)=\"handleFileInput($event.target)\" />\n {{'Upload from csv' | translate}}</label>\n </div>\n\n <ul *ngIf=\"addedEmails.length > 0\">\n <li class=\"list_item\" *ngFor=\"let mail of addedEmails; index as index\">{{mail}}\n <div class=\"icon-container\" (click)=\"onDelete(index)\">\n <span class=\"iconify\" data-icon=\"mdi:trash-can-outline\"></span>\n </div>\n </li>\n </ul>\n <div class=\"d-flex justify-content-center\" *ngIf=\"working\">\n <lib-loader></lib-loader>\n </div>\n <div class=\"row action-button-container\">\n <button class=\"btn btn-outline-primary rounded-pill mr-2 mt-3 action-button\" data-testid=\"form-user-submit-btn\" (click)=\"onCreateMissions()\">\n {{'Create users' | translate}}</button>\n <button class=\"btn btn-outline-primary rounded-pill mr-2 mt-3 action-button\" data-testid=\"form-user-cancel-btn\" (click)=\"onCancel()\">\n {{'Cancel' | translate}}</button>\n </div>\n\n</div>", styles: ["#btn-icon{width:30px;height:30px;background:url(../../../../assets/icons/plus.svg);border:none;vertical-align:middle}#btn-icon:hover{background:url(../../../../assets/icons/plus-over.svg)}#btn-icon[disabled]:hover{background:url(../../../../assets/icons/plus.svg)}.outer_circle{background-color:#ebebeb;border-radius:50%;width:32px;height:32px;padding:1px;margin-left:5px}.custom-form{width:80%}h4{color:var(--smarterplan-primary)}.pointer{cursor:pointer}.list_item{display:flex;font-size:1.1em}.icon-container{cursor:pointer;margin-left:5px}input[type=file]{display:none}.form-group{margin:1.5rem 0}label.col-sm-4.col-form-label{width:200px;min-width:200px}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"] }]
1630
+ args: [{ selector: 'lib-create-batch', template: "<div>\r\n <h4>{{'Add email address' | translate}}</h4>\r\n <div class=\"row\">\r\n <input class=\"form-control custom-form\" #box (keyup.enter)=\"onAddEmail(box.value); box.value=''\"\r\n placeholder=\"me@example.com\" data-testid=\"form-user-email\">\r\n <div class=\"outer_circle\" style='margin-left: 1.1em;'>\r\n <button id='btn-icon' (click)=\"onAddEmail(box.value); box.value=''\" data-testid=\"form-user-email-btn\"></button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mt-3\">\r\n <label for=\"file\" class=\"btn btn-label-file rounded-pill\">\r\n <input type=\"file\" id=\"file\" (change)=\"handleFileInput($event.target)\" />\r\n {{'Upload from csv' | translate}}</label>\r\n </div>\r\n\r\n <ul *ngIf=\"addedEmails.length > 0\">\r\n <li class=\"list_item\" *ngFor=\"let mail of addedEmails; index as index\">{{mail}}\r\n <div class=\"icon-container\" (click)=\"onDelete(index)\">\r\n <span class=\"iconify\" data-icon=\"mdi:trash-can-outline\"></span>\r\n </div>\r\n </li>\r\n </ul>\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"working\">\r\n <lib-loader></lib-loader>\r\n </div>\r\n <div class=\"row action-button-container\">\r\n <button class=\"btn btn-outline-primary rounded-pill mr-2 mt-3 action-button\" data-testid=\"form-user-submit-btn\" (click)=\"onCreateMissions()\">\r\n {{'Create users' | translate}}</button>\r\n <button class=\"btn btn-outline-primary rounded-pill mr-2 mt-3 action-button\" data-testid=\"form-user-cancel-btn\" (click)=\"onCancel()\">\r\n {{'Cancel' | translate}}</button>\r\n </div>\r\n\r\n</div>", styles: ["#btn-icon{width:30px;height:30px;background:url(../../../../assets/icons/plus.svg);border:none;vertical-align:middle}#btn-icon:hover{background:url(../../../../assets/icons/plus-over.svg)}#btn-icon[disabled]:hover{background:url(../../../../assets/icons/plus.svg)}.outer_circle{background-color:#ebebeb;border-radius:50%;width:32px;height:32px;padding:1px;margin-left:5px}.custom-form{width:80%}h4{color:var(--smarterplan-primary)}.pointer{cursor:pointer}.list_item{display:flex;font-size:1.1em}.icon-container{cursor:pointer;margin-left:5px}input[type=file]{display:none}.form-group{margin:1.5rem 0}label.col-sm-4.col-form-label{width:200px;min-width:200px}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px}\n"] }]
1631
1631
  }], ctorParameters: function () { return [{ type: i1.MissionService }, { type: i1.BaseUserService }, { type: i3.TranslateService }]; }, propDecorators: { template: [{
1632
1632
  type: Input
1633
1633
  }], createdMissions: [{
@@ -1911,11 +1911,11 @@ class VisitorComponent {
1911
1911
  }));
1912
1912
  }
1913
1913
  }
1914
- VisitorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: VisitorComponent, deps: [{ token: i1.BaseUserService }, { token: i1.MissionService }, { token: i2.Router }, { token: i3.TranslateService }, { token: i1.SpaceService }, { token: i1.ZoneService }, { token: i4.NgbModal }, { token: i1.TemplateService }], target: i0.ɵɵFactoryTarget.Component });
1915
- VisitorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: VisitorComponent, selector: "lib-visitor", viewQueries: [{ propertyName: "modal", first: true, predicate: ["deleteUsers"], descendants: true }], ngImport: i0, template: "<div class=\"dashboard-tab\">\n <div class=\"header-dashboard-tab\">\n <h3>{{'Museum Visitors' | translate}}</h3>\n <!-- <app-search-bar [searchable]=\"allZoneTemplatesMap\" objectType=\"TEMPLATE\"\n (searchEvent)=\"applyResultsSearchBar($event)\">\n </app-search-bar> -->\n <hr>\n </div>\n <div class=\"row\">\n <div class=\"col-md-8 col-lg-7\">\n <div class=\"row ml-0 mb-2\">\n <h4 class=\"header-small\">{{'Itineraries' | translate}}</h4>\n </div>\n <div class=\"row ml-0 mb-2\" *ngIf=\"!editing && !creating\">\n <button class=\"btn btn-outline-primary rounded-pill ml-3 add-button\" (click)=\"onCreateTemplate()\"\n data-testid=\"new-museum-template-btn\">\n {{'Create template for new itinerary' | translate}}</button>\n </div>\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\n <lib-loader></lib-loader>\n </div>\n <div *ngIf=\"!editing && !creating\">\n <ul class=\"list-group list-group-flush\" data-testid=\"open-museum-zone-btn\">\n <li class=\"list-group-item\" *ngFor=\"let pair of allZoneTemplatesMapFiltered | keyvalue\">\n <h4>{{pair.key.name}} <span style=\"font-size:0.8em\"> - {{pair.key.space.name}}</span> </h4>\n <div class=\"d-flex justify-content-between align-items-center\"\n (click)=\"onToggleMissionsForZone(pair.key.id)\">\n <ng-container *ngIf=\"pair.value.length <= 1\">\n {{pair.value.length}} {{'visit template found' | translate}}\n </ng-container>\n <ng-container *ngIf=\"pair.value.length > 1\">\n {{pair.value.length}} {{'visit templates found' | translate}}\n </ng-container>\n <lib-chevron [ngClass]=\"[pair.key.name]\" [conditionShowing]=\"detailsForZones.includes(pair.key.id)\"></lib-chevron>\n\n </div>\n <div *ngIf=\"detailsForZones.includes(pair.key.id)\">\n <button class=\"btn btn-outline-primary rounded-pill mt-3 mb-3 ml-2\"\n (click)=\"onAddNewTemplateToZone(pair.key)\">{{'Add new template' | translate}}</button>\n\n <ul class=\"container-fluid list-group list-group-flush\">\n <li class=\"list-group-item\" *ngFor=\"let template of pair.value\">\n <div class=\"d-flex justify-content-between align-items-center\"\n (click)=\"onToggleTemplateDetails(template)\">\n <h5>{{template.title}}</h5>\n <lib-chevron data-testid=\"open-museum-template-btn\" [conditionShowing]=\"templateShowing === template.id\"></lib-chevron>\n </div>\n <div *ngIf=\"templateShowing === template.id\">\n <ul class=\"list-group list-group-flush\">\n <li class=\"list-group-item bg-transparent\">{{'Description' | translate }}:\n {{ template.description}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Language' | translate }}:\n {{ template.locale ? template.locale : ('Not applicable' | translate)}}\n </li>\n <li class=\"list-group-item bg-transparent\"\n *ngIf=\"template.hashtags && template.hashtags.length> 0\">\n {{'Hashtags' | translate}}:\n <ul class=\"keywordsDisplay no-border\">\n <div class=\"keywordsdisplayContainer\"\n *ngIf=\"template.hashtags.length> 0\">\n <li class=\"keywordsItem\"\n *ngFor=\"let hashtag of template.hashtags\">{{\n hashtag | hashtagFromID | async }}</li>\n </div>\n </ul>\n </li>\n <li class=\"list-group-item bg-transparent\">{{'Access level' | translate }}:\n {{ template.level}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Planned at' | translate }} :\n {{ template.startDateTime ? (template.startDateTime |\n timeDateString:\"day_time_zone\" | async) :\n \"No data\" | translate }} -\n {{ template.endDateTime ?\n (template.endDateTime | timeDateString:\"day_time_zone\" | async) : \"No\n data\" |\n translate}}\n </li>\n <li class=\"list-group-item bg-transparent\">\n {{'Effective start/end time ' | translate }}:\n {{ template.realStartedAt ? (template.realStartedAt |\n timeDateString:\"day_time_zone\" | async) : ('No data' | translate)}} /\n {{ template.realEndedAt ? (template.realEndedAt |\n timeDateString:\"day_time_zone\" | async) : ('No data' | translate)}}\n </li>\n <li class=\"list-group-item bg-transparent\"\n *ngIf=\"allTemplateMissionsMap.get(template.id)\">\n {{'Visitors created' |\n translate}}:{{allTemplateMissionsMap.get(template.id).length}}\n <lib-csv-export [headers]=\"csvHeaders\" [title]=\"'Users'\"\n buttonLabel=\"Download users\"\n [rowsInput]=\"generateCSVUsers(template)\">\n </lib-csv-export>\n </li>\n\n </ul>\n <div class=\"action-button-container\">\n <div class=\"d-inline-block mr-2 action-button\" ngbDropdown\n #myDrop=\"ngbDropdown\">\n <button class=\"btn btn-label-file rounded-pill\" id=\"dropdownManual\" data-testid=\"open-dropdownManual-museum-btn\"\n ngbDropdownToggle>{{'Manage users' |\n translate}}</button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownManual\">\n <button (click)=\"onGenerateBatch(template)\" ngbDropdownItem data-testid=\"new-user-template-btn\"> \n {{'Create users from this template' | translate}}</button>\n <button (click)=\"onSendInvitation(template)\" ngbDropdownItem>\n {{'Send invitation to all users' | translate}}\n </button>\n <button (click)=\"onSendUpdate(template)\" ngbDropdownItem>\n {{'Send update to all users' | translate}}\n </button>\n <button (click)=\"onSendSatisfaction(template)\" ngbDropdownItem>\n {{'Send satisfaction mail to all users' | translate}}\n </button>\n <button (click)=\"onDeleteUsers(template)\" ngbDropdownItem>\n {{'Remove users' | translate}}\n </button>\n </div>\n </div>\n <div class=\"d-inline-block mr-2 action-button\" ngbDropdown\n #myDrop2=\"ngbDropdown\">\n <button class=\"btn btn-label-file rounded-pill\" id=\"dropdown2\" data-testid=\"open-dropdown2-museum-template-btn\"\n ngbDropdownToggle>{{'Manage template' |\n translate}}</button>\n <div ngbDropdownMenu aria-labelledby=\"dropdown2\">\n <button (click)=\"onEditTemplate(template)\" ngbDropdownItem data-testid=\"edit-museum-template-btn\">\n {{'Edit template' | translate}}</button>\n <button (click)=\"onCleanTimeTemplate(template)\" ngbDropdownItem>\n {{'Clean effective times' | translate}}\n </button>\n <button (click)=\"onArchiveTemplate(template)\" ngbDropdownItem>\n {{'Archive template' | translate}}\n </button>\n <button (click)=\"onCancelTemplate(template)\" ngbDropdownItem>\n {{'Cancel visit' | translate}}\n </button>\n <button (click)=\"onDuplicateTemplate(template)\" ngbDropdownItem>\n {{'Duplicate' | translate}}\n </button>\n </div>\n </div>\n </div>\n <!-- <button type=\"button\" class=\"btn btn-primary rounded-pill mr-2 ml-auto\"\n (click)=\"onEdit(mis)\">\n {{'Edit' | translate}}</button>\n <button class=\"btn btn-primary rounded-pill mt-3 mb-3 ml-auto\"\n (click)=\"onArchiveTemplate(mis)\">{{'Archive' | translate}}</button> -->\n </div>\n\n </li>\n </ul>\n </div>\n </li>\n </ul>\n </div>\n <div *ngIf=\"editing\">\n <lib-template [editTemplate]=\"templateToEdit\" [currentOrg]=\"currentOrg\"\n (updatedTemplate)=\"onUpdatedTemplate($event)\"></lib-template>\n </div>\n <div *ngIf=\"creating\">\n <lib-template [currentOrg]=\"currentOrg\" [zoneID]=\"zoneIDForNewTemplate\"\n (createdTemplate)=\"onCreatedTemplate($event)\"></lib-template>\n </div>\n </div>\n <div class=\"col-md-4 col-lg-5\" *ngIf=\"isAddingBatch\">\n <lib-create-batch [template]=\"chosenTemplate\" (createdMissions)=\"onUpdatedEvent($event)\"></lib-create-batch>\n </div>\n <ng-template #deleteUsers let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\" id=\"modal-basic-title\">{{\"Delete users\" | translate}}\n </h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"modalRef.close()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"column align-items-center\">\n <div class=\"row\" style=\"padding: 0 1.25rem;\">\n <ul class=\"container-fluid list-group list-group-flush\">\n <li class=\"list-group-item\" *ngFor=\"let object of currentTemplateUsers\">\n <input type=\"checkbox\" [(ngModel)]=\"object.checked\"> {{object.profile.email}}\n </li>\n </ul>\n </div>\n\n <div class=\"row\" style=\"padding: 1.25rem;\">\n <button class=\"btn btn-outline-primary rounded-pill mr-4\" (click)=\"onDeleteChosen()\">{{\"Apply\" |\n translate}}\n </button>\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"modalRef.close()\">{{\"Cancel\" |\n translate}}\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n</div>", styles: [".add-button{width:-moz-fit-content;width:fit-content;margin-left:.5rem}li.ml-4{margin-left:3rem}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px!important}\n"], components: [{ type: i1.LoaderComponent, selector: "lib-loader", inputs: ["useLogo", "color"] }, { type: ChevronComponent, selector: "lib-chevron", inputs: ["conditionShowing"] }, { type: i1.CsvExportComponent, selector: "lib-csv-export", inputs: ["headers", "rowsInput", "getRows", "title", "buttonLabel"] }, { type: TemplateComponent, selector: "lib-template", inputs: ["currentOrg", "editTemplate", "zoneID"], outputs: ["updatedTemplate", "createdTemplate"] }, { type: CreateBatchComponent, selector: "lib-create-batch", inputs: ["template"], outputs: ["createdMissions"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i1$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i3.TranslatePipe, "keyvalue": i5.KeyValuePipe, "async": i5.AsyncPipe, "hashtagFromID": i1.HashtagFromIdPipe, "timeDateString": i1.TimeDateToLocalStringPipe } });
1916
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: VisitorComponent, decorators: [{
1914
+ VisitorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VisitorComponent, deps: [{ token: i1.BaseUserService }, { token: i1.MissionService }, { token: i2.Router }, { token: i3.TranslateService }, { token: i1.SpaceService }, { token: i1.ZoneService }, { token: i4.NgbModal }, { token: i1.TemplateService }], target: i0.ɵɵFactoryTarget.Component });
1915
+ VisitorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: VisitorComponent, selector: "lib-visitor", viewQueries: [{ propertyName: "modal", first: true, predicate: ["deleteUsers"], descendants: true }], ngImport: i0, template: "<div class=\"dashboard-tab\">\r\n <div class=\"header-dashboard-tab\">\r\n <h3>{{'Museum Visitors' | translate}}</h3>\r\n <!-- <app-search-bar [searchable]=\"allZoneTemplatesMap\" objectType=\"TEMPLATE\"\r\n (searchEvent)=\"applyResultsSearchBar($event)\">\r\n </app-search-bar> -->\r\n <hr>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-8 col-lg-7\">\r\n <div class=\"row ml-0 mb-2\">\r\n <h4 class=\"header-small\">{{'Itineraries' | translate}}</h4>\r\n </div>\r\n <div class=\"row ml-0 mb-2\" *ngIf=\"!editing && !creating\">\r\n <button class=\"btn btn-outline-primary rounded-pill ml-3 add-button\" (click)=\"onCreateTemplate()\"\r\n data-testid=\"new-museum-template-btn\">\r\n {{'Create template for new itinerary' | translate}}</button>\r\n </div>\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\r\n <lib-loader></lib-loader>\r\n </div>\r\n <div *ngIf=\"!editing && !creating\">\r\n <ul class=\"list-group list-group-flush\" data-testid=\"open-museum-zone-btn\">\r\n <li class=\"list-group-item\" *ngFor=\"let pair of allZoneTemplatesMapFiltered | keyvalue\">\r\n <h4>{{pair.key.name}} <span style=\"font-size:0.8em\"> - {{pair.key.space.name}}</span> </h4>\r\n <div class=\"d-flex justify-content-between align-items-center\"\r\n (click)=\"onToggleMissionsForZone(pair.key.id)\">\r\n <ng-container *ngIf=\"pair.value.length <= 1\">\r\n {{pair.value.length}} {{'visit template found' | translate}}\r\n </ng-container>\r\n <ng-container *ngIf=\"pair.value.length > 1\">\r\n {{pair.value.length}} {{'visit templates found' | translate}}\r\n </ng-container>\r\n <lib-chevron [ngClass]=\"[pair.key.name]\" [conditionShowing]=\"detailsForZones.includes(pair.key.id)\"></lib-chevron>\r\n\r\n </div>\r\n <div *ngIf=\"detailsForZones.includes(pair.key.id)\">\r\n <button class=\"btn btn-outline-primary rounded-pill mt-3 mb-3 ml-2\"\r\n (click)=\"onAddNewTemplateToZone(pair.key)\">{{'Add new template' | translate}}</button>\r\n\r\n <ul class=\"container-fluid list-group list-group-flush\">\r\n <li class=\"list-group-item\" *ngFor=\"let template of pair.value\">\r\n <div class=\"d-flex justify-content-between align-items-center\"\r\n (click)=\"onToggleTemplateDetails(template)\">\r\n <h5>{{template.title}}</h5>\r\n <lib-chevron data-testid=\"open-museum-template-btn\" [conditionShowing]=\"templateShowing === template.id\"></lib-chevron>\r\n </div>\r\n <div *ngIf=\"templateShowing === template.id\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\">{{'Description' | translate }}:\r\n {{ template.description}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Language' | translate }}:\r\n {{ template.locale ? template.locale : ('Not applicable' | translate)}}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\"\r\n *ngIf=\"template.hashtags && template.hashtags.length> 0\">\r\n {{'Hashtags' | translate}}:\r\n <ul class=\"keywordsDisplay no-border\">\r\n <div class=\"keywordsdisplayContainer\"\r\n *ngIf=\"template.hashtags.length> 0\">\r\n <li class=\"keywordsItem\"\r\n *ngFor=\"let hashtag of template.hashtags\">{{\r\n hashtag | hashtagFromID | async }}</li>\r\n </div>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Access level' | translate }}:\r\n {{ template.level}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Planned at' | translate }} :\r\n {{ template.startDateTime ? (template.startDateTime |\r\n timeDateString:\"day_time_zone\" | async) :\r\n \"No data\" | translate }} -\r\n {{ template.endDateTime ?\r\n (template.endDateTime | timeDateString:\"day_time_zone\" | async) : \"No\r\n data\" |\r\n translate}}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\">\r\n {{'Effective start/end time ' | translate }}:\r\n {{ template.realStartedAt ? (template.realStartedAt |\r\n timeDateString:\"day_time_zone\" | async) : ('No data' | translate)}} /\r\n {{ template.realEndedAt ? (template.realEndedAt |\r\n timeDateString:\"day_time_zone\" | async) : ('No data' | translate)}}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\"\r\n *ngIf=\"allTemplateMissionsMap.get(template.id)\">\r\n {{'Visitors created' |\r\n translate}}:{{allTemplateMissionsMap.get(template.id).length}}\r\n <lib-csv-export [headers]=\"csvHeaders\" [title]=\"'Users'\"\r\n buttonLabel=\"Download users\"\r\n [rowsInput]=\"generateCSVUsers(template)\">\r\n </lib-csv-export>\r\n </li>\r\n\r\n </ul>\r\n <div class=\"action-button-container\">\r\n <div class=\"d-inline-block mr-2 action-button\" ngbDropdown\r\n #myDrop=\"ngbDropdown\">\r\n <button class=\"btn btn-label-file rounded-pill\" id=\"dropdownManual\" data-testid=\"open-dropdownManual-museum-btn\"\r\n ngbDropdownToggle>{{'Manage users' |\r\n translate}}</button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownManual\">\r\n <button (click)=\"onGenerateBatch(template)\" ngbDropdownItem data-testid=\"new-user-template-btn\"> \r\n {{'Create users from this template' | translate}}</button>\r\n <button (click)=\"onSendInvitation(template)\" ngbDropdownItem>\r\n {{'Send invitation to all users' | translate}}\r\n </button>\r\n <button (click)=\"onSendUpdate(template)\" ngbDropdownItem>\r\n {{'Send update to all users' | translate}}\r\n </button>\r\n <button (click)=\"onSendSatisfaction(template)\" ngbDropdownItem>\r\n {{'Send satisfaction mail to all users' | translate}}\r\n </button>\r\n <button (click)=\"onDeleteUsers(template)\" ngbDropdownItem>\r\n {{'Remove users' | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-inline-block mr-2 action-button\" ngbDropdown\r\n #myDrop2=\"ngbDropdown\">\r\n <button class=\"btn btn-label-file rounded-pill\" id=\"dropdown2\" data-testid=\"open-dropdown2-museum-template-btn\"\r\n ngbDropdownToggle>{{'Manage template' |\r\n translate}}</button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdown2\">\r\n <button (click)=\"onEditTemplate(template)\" ngbDropdownItem data-testid=\"edit-museum-template-btn\">\r\n {{'Edit template' | translate}}</button>\r\n <button (click)=\"onCleanTimeTemplate(template)\" ngbDropdownItem>\r\n {{'Clean effective times' | translate}}\r\n </button>\r\n <button (click)=\"onArchiveTemplate(template)\" ngbDropdownItem>\r\n {{'Archive template' | translate}}\r\n </button>\r\n <button (click)=\"onCancelTemplate(template)\" ngbDropdownItem>\r\n {{'Cancel visit' | translate}}\r\n </button>\r\n <button (click)=\"onDuplicateTemplate(template)\" ngbDropdownItem>\r\n {{'Duplicate' | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <button type=\"button\" class=\"btn btn-primary rounded-pill mr-2 ml-auto\"\r\n (click)=\"onEdit(mis)\">\r\n {{'Edit' | translate}}</button>\r\n <button class=\"btn btn-primary rounded-pill mt-3 mb-3 ml-auto\"\r\n (click)=\"onArchiveTemplate(mis)\">{{'Archive' | translate}}</button> -->\r\n </div>\r\n\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n <div *ngIf=\"editing\">\r\n <lib-template [editTemplate]=\"templateToEdit\" [currentOrg]=\"currentOrg\"\r\n (updatedTemplate)=\"onUpdatedTemplate($event)\"></lib-template>\r\n </div>\r\n <div *ngIf=\"creating\">\r\n <lib-template [currentOrg]=\"currentOrg\" [zoneID]=\"zoneIDForNewTemplate\"\r\n (createdTemplate)=\"onCreatedTemplate($event)\"></lib-template>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 col-lg-5\" *ngIf=\"isAddingBatch\">\r\n <lib-create-batch [template]=\"chosenTemplate\" (createdMissions)=\"onUpdatedEvent($event)\"></lib-create-batch>\r\n </div>\r\n <ng-template #deleteUsers let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\" id=\"modal-basic-title\">{{\"Delete users\" | translate}}\r\n </h4>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"modalRef.close()\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"column align-items-center\">\r\n <div class=\"row\" style=\"padding: 0 1.25rem;\">\r\n <ul class=\"container-fluid list-group list-group-flush\">\r\n <li class=\"list-group-item\" *ngFor=\"let object of currentTemplateUsers\">\r\n <input type=\"checkbox\" [(ngModel)]=\"object.checked\"> {{object.profile.email}}\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div class=\"row\" style=\"padding: 1.25rem;\">\r\n <button class=\"btn btn-outline-primary rounded-pill mr-4\" (click)=\"onDeleteChosen()\">{{\"Apply\" |\r\n translate}}\r\n </button>\r\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"modalRef.close()\">{{\"Cancel\" |\r\n translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</div>", styles: [".add-button{width:fit-content;margin-left:.5rem}li.ml-4{margin-left:3rem}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px!important}\n"], components: [{ type: i1.LoaderComponent, selector: "lib-loader", inputs: ["useLogo", "color"] }, { type: ChevronComponent, selector: "lib-chevron", inputs: ["conditionShowing"] }, { type: i1.CsvExportComponent, selector: "lib-csv-export", inputs: ["headers", "rowsInput", "getRows", "title", "buttonLabel"] }, { type: TemplateComponent, selector: "lib-template", inputs: ["currentOrg", "editTemplate", "zoneID"], outputs: ["updatedTemplate", "createdTemplate"] }, { type: CreateBatchComponent, selector: "lib-create-batch", inputs: ["template"], outputs: ["createdMissions"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { type: i4.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["disabled"] }, { type: i1$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i3.TranslatePipe, "keyvalue": i5.KeyValuePipe, "async": i5.AsyncPipe, "hashtagFromID": i1.HashtagFromIdPipe, "timeDateString": i1.TimeDateToLocalStringPipe } });
1916
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VisitorComponent, decorators: [{
1917
1917
  type: Component,
1918
- args: [{ selector: 'lib-visitor', template: "<div class=\"dashboard-tab\">\n <div class=\"header-dashboard-tab\">\n <h3>{{'Museum Visitors' | translate}}</h3>\n <!-- <app-search-bar [searchable]=\"allZoneTemplatesMap\" objectType=\"TEMPLATE\"\n (searchEvent)=\"applyResultsSearchBar($event)\">\n </app-search-bar> -->\n <hr>\n </div>\n <div class=\"row\">\n <div class=\"col-md-8 col-lg-7\">\n <div class=\"row ml-0 mb-2\">\n <h4 class=\"header-small\">{{'Itineraries' | translate}}</h4>\n </div>\n <div class=\"row ml-0 mb-2\" *ngIf=\"!editing && !creating\">\n <button class=\"btn btn-outline-primary rounded-pill ml-3 add-button\" (click)=\"onCreateTemplate()\"\n data-testid=\"new-museum-template-btn\">\n {{'Create template for new itinerary' | translate}}</button>\n </div>\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\n <lib-loader></lib-loader>\n </div>\n <div *ngIf=\"!editing && !creating\">\n <ul class=\"list-group list-group-flush\" data-testid=\"open-museum-zone-btn\">\n <li class=\"list-group-item\" *ngFor=\"let pair of allZoneTemplatesMapFiltered | keyvalue\">\n <h4>{{pair.key.name}} <span style=\"font-size:0.8em\"> - {{pair.key.space.name}}</span> </h4>\n <div class=\"d-flex justify-content-between align-items-center\"\n (click)=\"onToggleMissionsForZone(pair.key.id)\">\n <ng-container *ngIf=\"pair.value.length <= 1\">\n {{pair.value.length}} {{'visit template found' | translate}}\n </ng-container>\n <ng-container *ngIf=\"pair.value.length > 1\">\n {{pair.value.length}} {{'visit templates found' | translate}}\n </ng-container>\n <lib-chevron [ngClass]=\"[pair.key.name]\" [conditionShowing]=\"detailsForZones.includes(pair.key.id)\"></lib-chevron>\n\n </div>\n <div *ngIf=\"detailsForZones.includes(pair.key.id)\">\n <button class=\"btn btn-outline-primary rounded-pill mt-3 mb-3 ml-2\"\n (click)=\"onAddNewTemplateToZone(pair.key)\">{{'Add new template' | translate}}</button>\n\n <ul class=\"container-fluid list-group list-group-flush\">\n <li class=\"list-group-item\" *ngFor=\"let template of pair.value\">\n <div class=\"d-flex justify-content-between align-items-center\"\n (click)=\"onToggleTemplateDetails(template)\">\n <h5>{{template.title}}</h5>\n <lib-chevron data-testid=\"open-museum-template-btn\" [conditionShowing]=\"templateShowing === template.id\"></lib-chevron>\n </div>\n <div *ngIf=\"templateShowing === template.id\">\n <ul class=\"list-group list-group-flush\">\n <li class=\"list-group-item bg-transparent\">{{'Description' | translate }}:\n {{ template.description}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Language' | translate }}:\n {{ template.locale ? template.locale : ('Not applicable' | translate)}}\n </li>\n <li class=\"list-group-item bg-transparent\"\n *ngIf=\"template.hashtags && template.hashtags.length> 0\">\n {{'Hashtags' | translate}}:\n <ul class=\"keywordsDisplay no-border\">\n <div class=\"keywordsdisplayContainer\"\n *ngIf=\"template.hashtags.length> 0\">\n <li class=\"keywordsItem\"\n *ngFor=\"let hashtag of template.hashtags\">{{\n hashtag | hashtagFromID | async }}</li>\n </div>\n </ul>\n </li>\n <li class=\"list-group-item bg-transparent\">{{'Access level' | translate }}:\n {{ template.level}}</li>\n <li class=\"list-group-item bg-transparent\">{{'Planned at' | translate }} :\n {{ template.startDateTime ? (template.startDateTime |\n timeDateString:\"day_time_zone\" | async) :\n \"No data\" | translate }} -\n {{ template.endDateTime ?\n (template.endDateTime | timeDateString:\"day_time_zone\" | async) : \"No\n data\" |\n translate}}\n </li>\n <li class=\"list-group-item bg-transparent\">\n {{'Effective start/end time ' | translate }}:\n {{ template.realStartedAt ? (template.realStartedAt |\n timeDateString:\"day_time_zone\" | async) : ('No data' | translate)}} /\n {{ template.realEndedAt ? (template.realEndedAt |\n timeDateString:\"day_time_zone\" | async) : ('No data' | translate)}}\n </li>\n <li class=\"list-group-item bg-transparent\"\n *ngIf=\"allTemplateMissionsMap.get(template.id)\">\n {{'Visitors created' |\n translate}}:{{allTemplateMissionsMap.get(template.id).length}}\n <lib-csv-export [headers]=\"csvHeaders\" [title]=\"'Users'\"\n buttonLabel=\"Download users\"\n [rowsInput]=\"generateCSVUsers(template)\">\n </lib-csv-export>\n </li>\n\n </ul>\n <div class=\"action-button-container\">\n <div class=\"d-inline-block mr-2 action-button\" ngbDropdown\n #myDrop=\"ngbDropdown\">\n <button class=\"btn btn-label-file rounded-pill\" id=\"dropdownManual\" data-testid=\"open-dropdownManual-museum-btn\"\n ngbDropdownToggle>{{'Manage users' |\n translate}}</button>\n <div ngbDropdownMenu aria-labelledby=\"dropdownManual\">\n <button (click)=\"onGenerateBatch(template)\" ngbDropdownItem data-testid=\"new-user-template-btn\"> \n {{'Create users from this template' | translate}}</button>\n <button (click)=\"onSendInvitation(template)\" ngbDropdownItem>\n {{'Send invitation to all users' | translate}}\n </button>\n <button (click)=\"onSendUpdate(template)\" ngbDropdownItem>\n {{'Send update to all users' | translate}}\n </button>\n <button (click)=\"onSendSatisfaction(template)\" ngbDropdownItem>\n {{'Send satisfaction mail to all users' | translate}}\n </button>\n <button (click)=\"onDeleteUsers(template)\" ngbDropdownItem>\n {{'Remove users' | translate}}\n </button>\n </div>\n </div>\n <div class=\"d-inline-block mr-2 action-button\" ngbDropdown\n #myDrop2=\"ngbDropdown\">\n <button class=\"btn btn-label-file rounded-pill\" id=\"dropdown2\" data-testid=\"open-dropdown2-museum-template-btn\"\n ngbDropdownToggle>{{'Manage template' |\n translate}}</button>\n <div ngbDropdownMenu aria-labelledby=\"dropdown2\">\n <button (click)=\"onEditTemplate(template)\" ngbDropdownItem data-testid=\"edit-museum-template-btn\">\n {{'Edit template' | translate}}</button>\n <button (click)=\"onCleanTimeTemplate(template)\" ngbDropdownItem>\n {{'Clean effective times' | translate}}\n </button>\n <button (click)=\"onArchiveTemplate(template)\" ngbDropdownItem>\n {{'Archive template' | translate}}\n </button>\n <button (click)=\"onCancelTemplate(template)\" ngbDropdownItem>\n {{'Cancel visit' | translate}}\n </button>\n <button (click)=\"onDuplicateTemplate(template)\" ngbDropdownItem>\n {{'Duplicate' | translate}}\n </button>\n </div>\n </div>\n </div>\n <!-- <button type=\"button\" class=\"btn btn-primary rounded-pill mr-2 ml-auto\"\n (click)=\"onEdit(mis)\">\n {{'Edit' | translate}}</button>\n <button class=\"btn btn-primary rounded-pill mt-3 mb-3 ml-auto\"\n (click)=\"onArchiveTemplate(mis)\">{{'Archive' | translate}}</button> -->\n </div>\n\n </li>\n </ul>\n </div>\n </li>\n </ul>\n </div>\n <div *ngIf=\"editing\">\n <lib-template [editTemplate]=\"templateToEdit\" [currentOrg]=\"currentOrg\"\n (updatedTemplate)=\"onUpdatedTemplate($event)\"></lib-template>\n </div>\n <div *ngIf=\"creating\">\n <lib-template [currentOrg]=\"currentOrg\" [zoneID]=\"zoneIDForNewTemplate\"\n (createdTemplate)=\"onCreatedTemplate($event)\"></lib-template>\n </div>\n </div>\n <div class=\"col-md-4 col-lg-5\" *ngIf=\"isAddingBatch\">\n <lib-create-batch [template]=\"chosenTemplate\" (createdMissions)=\"onUpdatedEvent($event)\"></lib-create-batch>\n </div>\n <ng-template #deleteUsers let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\" id=\"modal-basic-title\">{{\"Delete users\" | translate}}\n </h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"modalRef.close()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"column align-items-center\">\n <div class=\"row\" style=\"padding: 0 1.25rem;\">\n <ul class=\"container-fluid list-group list-group-flush\">\n <li class=\"list-group-item\" *ngFor=\"let object of currentTemplateUsers\">\n <input type=\"checkbox\" [(ngModel)]=\"object.checked\"> {{object.profile.email}}\n </li>\n </ul>\n </div>\n\n <div class=\"row\" style=\"padding: 1.25rem;\">\n <button class=\"btn btn-outline-primary rounded-pill mr-4\" (click)=\"onDeleteChosen()\">{{\"Apply\" |\n translate}}\n </button>\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"modalRef.close()\">{{\"Cancel\" |\n translate}}\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n</div>", styles: [".add-button{width:-moz-fit-content;width:fit-content;margin-left:.5rem}li.ml-4{margin-left:3rem}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px!important}\n"] }]
1918
+ args: [{ selector: 'lib-visitor', template: "<div class=\"dashboard-tab\">\r\n <div class=\"header-dashboard-tab\">\r\n <h3>{{'Museum Visitors' | translate}}</h3>\r\n <!-- <app-search-bar [searchable]=\"allZoneTemplatesMap\" objectType=\"TEMPLATE\"\r\n (searchEvent)=\"applyResultsSearchBar($event)\">\r\n </app-search-bar> -->\r\n <hr>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-md-8 col-lg-7\">\r\n <div class=\"row ml-0 mb-2\">\r\n <h4 class=\"header-small\">{{'Itineraries' | translate}}</h4>\r\n </div>\r\n <div class=\"row ml-0 mb-2\" *ngIf=\"!editing && !creating\">\r\n <button class=\"btn btn-outline-primary rounded-pill ml-3 add-button\" (click)=\"onCreateTemplate()\"\r\n data-testid=\"new-museum-template-btn\">\r\n {{'Create template for new itinerary' | translate}}</button>\r\n </div>\r\n <div class=\"d-flex justify-content-center\" *ngIf=\"loading\">\r\n <lib-loader></lib-loader>\r\n </div>\r\n <div *ngIf=\"!editing && !creating\">\r\n <ul class=\"list-group list-group-flush\" data-testid=\"open-museum-zone-btn\">\r\n <li class=\"list-group-item\" *ngFor=\"let pair of allZoneTemplatesMapFiltered | keyvalue\">\r\n <h4>{{pair.key.name}} <span style=\"font-size:0.8em\"> - {{pair.key.space.name}}</span> </h4>\r\n <div class=\"d-flex justify-content-between align-items-center\"\r\n (click)=\"onToggleMissionsForZone(pair.key.id)\">\r\n <ng-container *ngIf=\"pair.value.length <= 1\">\r\n {{pair.value.length}} {{'visit template found' | translate}}\r\n </ng-container>\r\n <ng-container *ngIf=\"pair.value.length > 1\">\r\n {{pair.value.length}} {{'visit templates found' | translate}}\r\n </ng-container>\r\n <lib-chevron [ngClass]=\"[pair.key.name]\" [conditionShowing]=\"detailsForZones.includes(pair.key.id)\"></lib-chevron>\r\n\r\n </div>\r\n <div *ngIf=\"detailsForZones.includes(pair.key.id)\">\r\n <button class=\"btn btn-outline-primary rounded-pill mt-3 mb-3 ml-2\"\r\n (click)=\"onAddNewTemplateToZone(pair.key)\">{{'Add new template' | translate}}</button>\r\n\r\n <ul class=\"container-fluid list-group list-group-flush\">\r\n <li class=\"list-group-item\" *ngFor=\"let template of pair.value\">\r\n <div class=\"d-flex justify-content-between align-items-center\"\r\n (click)=\"onToggleTemplateDetails(template)\">\r\n <h5>{{template.title}}</h5>\r\n <lib-chevron data-testid=\"open-museum-template-btn\" [conditionShowing]=\"templateShowing === template.id\"></lib-chevron>\r\n </div>\r\n <div *ngIf=\"templateShowing === template.id\">\r\n <ul class=\"list-group list-group-flush\">\r\n <li class=\"list-group-item bg-transparent\">{{'Description' | translate }}:\r\n {{ template.description}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Language' | translate }}:\r\n {{ template.locale ? template.locale : ('Not applicable' | translate)}}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\"\r\n *ngIf=\"template.hashtags && template.hashtags.length> 0\">\r\n {{'Hashtags' | translate}}:\r\n <ul class=\"keywordsDisplay no-border\">\r\n <div class=\"keywordsdisplayContainer\"\r\n *ngIf=\"template.hashtags.length> 0\">\r\n <li class=\"keywordsItem\"\r\n *ngFor=\"let hashtag of template.hashtags\">{{\r\n hashtag | hashtagFromID | async }}</li>\r\n </div>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-transparent\">{{'Access level' | translate }}:\r\n {{ template.level}}</li>\r\n <li class=\"list-group-item bg-transparent\">{{'Planned at' | translate }} :\r\n {{ template.startDateTime ? (template.startDateTime |\r\n timeDateString:\"day_time_zone\" | async) :\r\n \"No data\" | translate }} -\r\n {{ template.endDateTime ?\r\n (template.endDateTime | timeDateString:\"day_time_zone\" | async) : \"No\r\n data\" |\r\n translate}}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\">\r\n {{'Effective start/end time ' | translate }}:\r\n {{ template.realStartedAt ? (template.realStartedAt |\r\n timeDateString:\"day_time_zone\" | async) : ('No data' | translate)}} /\r\n {{ template.realEndedAt ? (template.realEndedAt |\r\n timeDateString:\"day_time_zone\" | async) : ('No data' | translate)}}\r\n </li>\r\n <li class=\"list-group-item bg-transparent\"\r\n *ngIf=\"allTemplateMissionsMap.get(template.id)\">\r\n {{'Visitors created' |\r\n translate}}:{{allTemplateMissionsMap.get(template.id).length}}\r\n <lib-csv-export [headers]=\"csvHeaders\" [title]=\"'Users'\"\r\n buttonLabel=\"Download users\"\r\n [rowsInput]=\"generateCSVUsers(template)\">\r\n </lib-csv-export>\r\n </li>\r\n\r\n </ul>\r\n <div class=\"action-button-container\">\r\n <div class=\"d-inline-block mr-2 action-button\" ngbDropdown\r\n #myDrop=\"ngbDropdown\">\r\n <button class=\"btn btn-label-file rounded-pill\" id=\"dropdownManual\" data-testid=\"open-dropdownManual-museum-btn\"\r\n ngbDropdownToggle>{{'Manage users' |\r\n translate}}</button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownManual\">\r\n <button (click)=\"onGenerateBatch(template)\" ngbDropdownItem data-testid=\"new-user-template-btn\"> \r\n {{'Create users from this template' | translate}}</button>\r\n <button (click)=\"onSendInvitation(template)\" ngbDropdownItem>\r\n {{'Send invitation to all users' | translate}}\r\n </button>\r\n <button (click)=\"onSendUpdate(template)\" ngbDropdownItem>\r\n {{'Send update to all users' | translate}}\r\n </button>\r\n <button (click)=\"onSendSatisfaction(template)\" ngbDropdownItem>\r\n {{'Send satisfaction mail to all users' | translate}}\r\n </button>\r\n <button (click)=\"onDeleteUsers(template)\" ngbDropdownItem>\r\n {{'Remove users' | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-inline-block mr-2 action-button\" ngbDropdown\r\n #myDrop2=\"ngbDropdown\">\r\n <button class=\"btn btn-label-file rounded-pill\" id=\"dropdown2\" data-testid=\"open-dropdown2-museum-template-btn\"\r\n ngbDropdownToggle>{{'Manage template' |\r\n translate}}</button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdown2\">\r\n <button (click)=\"onEditTemplate(template)\" ngbDropdownItem data-testid=\"edit-museum-template-btn\">\r\n {{'Edit template' | translate}}</button>\r\n <button (click)=\"onCleanTimeTemplate(template)\" ngbDropdownItem>\r\n {{'Clean effective times' | translate}}\r\n </button>\r\n <button (click)=\"onArchiveTemplate(template)\" ngbDropdownItem>\r\n {{'Archive template' | translate}}\r\n </button>\r\n <button (click)=\"onCancelTemplate(template)\" ngbDropdownItem>\r\n {{'Cancel visit' | translate}}\r\n </button>\r\n <button (click)=\"onDuplicateTemplate(template)\" ngbDropdownItem>\r\n {{'Duplicate' | translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <button type=\"button\" class=\"btn btn-primary rounded-pill mr-2 ml-auto\"\r\n (click)=\"onEdit(mis)\">\r\n {{'Edit' | translate}}</button>\r\n <button class=\"btn btn-primary rounded-pill mt-3 mb-3 ml-auto\"\r\n (click)=\"onArchiveTemplate(mis)\">{{'Archive' | translate}}</button> -->\r\n </div>\r\n\r\n </li>\r\n </ul>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n <div *ngIf=\"editing\">\r\n <lib-template [editTemplate]=\"templateToEdit\" [currentOrg]=\"currentOrg\"\r\n (updatedTemplate)=\"onUpdatedTemplate($event)\"></lib-template>\r\n </div>\r\n <div *ngIf=\"creating\">\r\n <lib-template [currentOrg]=\"currentOrg\" [zoneID]=\"zoneIDForNewTemplate\"\r\n (createdTemplate)=\"onCreatedTemplate($event)\"></lib-template>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4 col-lg-5\" *ngIf=\"isAddingBatch\">\r\n <lib-create-batch [template]=\"chosenTemplate\" (createdMissions)=\"onUpdatedEvent($event)\"></lib-create-batch>\r\n </div>\r\n <ng-template #deleteUsers let-modal>\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\" id=\"modal-basic-title\">{{\"Delete users\" | translate}}\r\n </h4>\r\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"modalRef.close()\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"column align-items-center\">\r\n <div class=\"row\" style=\"padding: 0 1.25rem;\">\r\n <ul class=\"container-fluid list-group list-group-flush\">\r\n <li class=\"list-group-item\" *ngFor=\"let object of currentTemplateUsers\">\r\n <input type=\"checkbox\" [(ngModel)]=\"object.checked\"> {{object.profile.email}}\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div class=\"row\" style=\"padding: 1.25rem;\">\r\n <button class=\"btn btn-outline-primary rounded-pill mr-4\" (click)=\"onDeleteChosen()\">{{\"Apply\" |\r\n translate}}\r\n </button>\r\n <button class=\"btn btn-outline-primary rounded-pill\" (click)=\"modalRef.close()\">{{\"Cancel\" |\r\n translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</div>", styles: [".add-button{width:fit-content;margin-left:.5rem}li.ml-4{margin-left:3rem}.action-button-container{display:flex;justify-content:space-evenly}.action-button-container .action-button{width:145px!important}\n"] }]
1919
1919
  }], ctorParameters: function () { return [{ type: i1.BaseUserService }, { type: i1.MissionService }, { type: i2.Router }, { type: i3.TranslateService }, { type: i1.SpaceService }, { type: i1.ZoneService }, { type: i4.NgbModal }, { type: i1.TemplateService }]; }, propDecorators: { modal: [{
1920
1920
  type: ViewChild,
1921
1921
  args: ["deleteUsers"]
@@ -1941,11 +1941,11 @@ class AdminComponent {
1941
1941
  return `/icons/${path.join("/")}${suffix}.svg`;
1942
1942
  }
1943
1943
  }
1944
- AdminComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AdminComponent, deps: [{ token: i1.BaseUserService }], target: i0.ɵɵFactoryTarget.Component });
1945
- AdminComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: AdminComponent, selector: "lib-admin", ngImport: i0, template: "<div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"d-none col-md-3 col-lg-2 d-md-block sidebar\">\n <ul class=\"nav nav-pills flex-column\">\n <li class=\"nav-item\"><a class=\"nav-link\" routerLink=\"/admin/users\" [routerLinkActive]=\"['active']\"\n #rlaUser=\"routerLinkActive\">\n <img class=\"big-icon\" [src]=\"getIcon(['menu', 'user'], rlaUser.isActive)\" />{{'Users' |\n translate}}</a></li>\n <li class=\"nav-item\" *ngIf=\"isSmarterPlanUser\"><a class=\"nav-link\" routerLink=\"/admin/clients\"\n [routerLinkActive]=\"['active']\" #rlaOrganization=\"routerLinkActive\">\n <img class=\"big-icon\"\n [src]=\"getIcon(['menu', 'organisation'], rlaOrganization.isActive)\" />{{'Clients' |\n translate}}</a></li>\n <li class=\"nav-item\" *ngIf=\"isMuseumModule\" data-testid=\"admin-visitor-btn\"> <a class=\"nav-link\"\n routerLink=\"/admin/visitors\" [routerLinkActive]=\"['active']\" #rlaVisitor=\"routerLinkActive\">\n <img class=\"big-icon\" [src]=\"getIcon(['menu', 'user'], rlaVisitor.isActive)\" />\n {{'Museum Visitors' | translate }}</a></li>\n </ul>\n </div> <!-- ml-sm-auto -->\n <main role=\"main\" class=\"col-12 col-md-9 col-lg-10 px-md-4\">\n <router-outlet></router-outlet>\n </main>\n </div>\n</div>", styles: [""], directives: [{ type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], pipes: { "translate": i3.TranslatePipe } });
1946
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AdminComponent, decorators: [{
1944
+ AdminComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AdminComponent, deps: [{ token: i1.BaseUserService }], target: i0.ɵɵFactoryTarget.Component });
1945
+ AdminComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: AdminComponent, selector: "lib-admin", ngImport: i0, template: "<div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"d-none col-md-3 col-lg-2 d-md-block sidebar\">\r\n <ul class=\"nav nav-pills flex-column\">\r\n <li class=\"nav-item\"><a class=\"nav-link\" routerLink=\"/admin/users\" [routerLinkActive]=\"['active']\"\r\n #rlaUser=\"routerLinkActive\">\r\n <img class=\"big-icon\" [src]=\"getIcon(['menu', 'user'], rlaUser.isActive)\" />{{'Users' |\r\n translate}}</a></li>\r\n <li class=\"nav-item\" *ngIf=\"isSmarterPlanUser\"><a class=\"nav-link\" routerLink=\"/admin/clients\"\r\n [routerLinkActive]=\"['active']\" #rlaOrganization=\"routerLinkActive\">\r\n <img class=\"big-icon\"\r\n [src]=\"getIcon(['menu', 'organisation'], rlaOrganization.isActive)\" />{{'Clients' |\r\n translate}}</a></li>\r\n <li class=\"nav-item\" *ngIf=\"isMuseumModule\" data-testid=\"admin-visitor-btn\"> <a class=\"nav-link\"\r\n routerLink=\"/admin/visitors\" [routerLinkActive]=\"['active']\" #rlaVisitor=\"routerLinkActive\">\r\n <img class=\"big-icon\" [src]=\"getIcon(['menu', 'user'], rlaVisitor.isActive)\" />\r\n {{'Museum Visitors' | translate }}</a></li>\r\n </ul>\r\n </div> <!-- ml-sm-auto -->\r\n <main role=\"main\" class=\"col-12 col-md-9 col-lg-10 px-md-4\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n </div>\r\n</div>", styles: [""], directives: [{ type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], pipes: { "translate": i3.TranslatePipe } });
1946
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AdminComponent, decorators: [{
1947
1947
  type: Component,
1948
- args: [{ selector: 'lib-admin', template: "<div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"d-none col-md-3 col-lg-2 d-md-block sidebar\">\n <ul class=\"nav nav-pills flex-column\">\n <li class=\"nav-item\"><a class=\"nav-link\" routerLink=\"/admin/users\" [routerLinkActive]=\"['active']\"\n #rlaUser=\"routerLinkActive\">\n <img class=\"big-icon\" [src]=\"getIcon(['menu', 'user'], rlaUser.isActive)\" />{{'Users' |\n translate}}</a></li>\n <li class=\"nav-item\" *ngIf=\"isSmarterPlanUser\"><a class=\"nav-link\" routerLink=\"/admin/clients\"\n [routerLinkActive]=\"['active']\" #rlaOrganization=\"routerLinkActive\">\n <img class=\"big-icon\"\n [src]=\"getIcon(['menu', 'organisation'], rlaOrganization.isActive)\" />{{'Clients' |\n translate}}</a></li>\n <li class=\"nav-item\" *ngIf=\"isMuseumModule\" data-testid=\"admin-visitor-btn\"> <a class=\"nav-link\"\n routerLink=\"/admin/visitors\" [routerLinkActive]=\"['active']\" #rlaVisitor=\"routerLinkActive\">\n <img class=\"big-icon\" [src]=\"getIcon(['menu', 'user'], rlaVisitor.isActive)\" />\n {{'Museum Visitors' | translate }}</a></li>\n </ul>\n </div> <!-- ml-sm-auto -->\n <main role=\"main\" class=\"col-12 col-md-9 col-lg-10 px-md-4\">\n <router-outlet></router-outlet>\n </main>\n </div>\n</div>", styles: [""] }]
1948
+ args: [{ selector: 'lib-admin', template: "<div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"d-none col-md-3 col-lg-2 d-md-block sidebar\">\r\n <ul class=\"nav nav-pills flex-column\">\r\n <li class=\"nav-item\"><a class=\"nav-link\" routerLink=\"/admin/users\" [routerLinkActive]=\"['active']\"\r\n #rlaUser=\"routerLinkActive\">\r\n <img class=\"big-icon\" [src]=\"getIcon(['menu', 'user'], rlaUser.isActive)\" />{{'Users' |\r\n translate}}</a></li>\r\n <li class=\"nav-item\" *ngIf=\"isSmarterPlanUser\"><a class=\"nav-link\" routerLink=\"/admin/clients\"\r\n [routerLinkActive]=\"['active']\" #rlaOrganization=\"routerLinkActive\">\r\n <img class=\"big-icon\"\r\n [src]=\"getIcon(['menu', 'organisation'], rlaOrganization.isActive)\" />{{'Clients' |\r\n translate}}</a></li>\r\n <li class=\"nav-item\" *ngIf=\"isMuseumModule\" data-testid=\"admin-visitor-btn\"> <a class=\"nav-link\"\r\n routerLink=\"/admin/visitors\" [routerLinkActive]=\"['active']\" #rlaVisitor=\"routerLinkActive\">\r\n <img class=\"big-icon\" [src]=\"getIcon(['menu', 'user'], rlaVisitor.isActive)\" />\r\n {{'Museum Visitors' | translate }}</a></li>\r\n </ul>\r\n </div> <!-- ml-sm-auto -->\r\n <main role=\"main\" class=\"col-12 col-md-9 col-lg-10 px-md-4\">\r\n <router-outlet></router-outlet>\r\n </main>\r\n </div>\r\n</div>", styles: [""] }]
1949
1949
  }], ctorParameters: function () { return [{ type: i1.BaseUserService }]; } });
1950
1950
 
1951
1951
  class GuideGuard {
@@ -1960,9 +1960,9 @@ class GuideGuard {
1960
1960
  return this.router.parseUrl("/notauthorized");
1961
1961
  }
1962
1962
  }
1963
- GuideGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: GuideGuard, deps: [{ token: i1.BaseUserService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1964
- GuideGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: GuideGuard, providedIn: 'root' });
1965
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: GuideGuard, decorators: [{
1963
+ GuideGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GuideGuard, deps: [{ token: i1.BaseUserService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1964
+ GuideGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GuideGuard, providedIn: 'root' });
1965
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: GuideGuard, decorators: [{
1966
1966
  type: Injectable,
1967
1967
  args: [{
1968
1968
  providedIn: 'root'
@@ -1974,22 +1974,17 @@ class SpAdminGuard {
1974
1974
  this.userService = userService;
1975
1975
  this.router = router;
1976
1976
  }
1977
- canActivate() {
1978
- let canGo = false;
1979
- if (this.userService.cu) {
1980
- canGo = this.userService.isSPAdmin();
1981
- }
1982
- if (canGo) {
1977
+ canActivate(_route, _state) {
1978
+ if (this.userService.cu && this.userService.isSPAdmin()) {
1983
1979
  return true;
1984
1980
  }
1985
1981
  alert("You are not authorised to access this page");
1986
- this.router.navigate([""]);
1987
- return false;
1982
+ return this.router.parseUrl('/');
1988
1983
  }
1989
1984
  }
1990
- SpAdminGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SpAdminGuard, deps: [{ token: i1.BaseUserService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1991
- SpAdminGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SpAdminGuard, providedIn: 'root' });
1992
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: SpAdminGuard, decorators: [{
1985
+ SpAdminGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SpAdminGuard, deps: [{ token: i1.BaseUserService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
1986
+ SpAdminGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SpAdminGuard, providedIn: 'root' });
1987
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SpAdminGuard, decorators: [{
1993
1988
  type: Injectable,
1994
1989
  args: [{
1995
1990
  providedIn: 'root'
@@ -2021,10 +2016,10 @@ const routes = [
2021
2016
  ];
2022
2017
  class AdminRoutingModule {
2023
2018
  }
2024
- AdminRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AdminRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2025
- AdminRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AdminRoutingModule, imports: [i2.RouterModule], exports: [RouterModule] });
2026
- AdminRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AdminRoutingModule, imports: [[RouterModule.forChild(routes)], RouterModule] });
2027
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: AdminRoutingModule, decorators: [{
2019
+ AdminRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AdminRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2020
+ AdminRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AdminRoutingModule, imports: [i2.RouterModule], exports: [RouterModule] });
2021
+ AdminRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AdminRoutingModule, imports: [[RouterModule.forChild(routes)], RouterModule] });
2022
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: AdminRoutingModule, decorators: [{
2028
2023
  type: NgModule,
2029
2024
  args: [{
2030
2025
  imports: [RouterModule.forChild(routes)],
@@ -2049,9 +2044,9 @@ class NameFromIdPipe {
2049
2044
  }
2050
2045
  }
2051
2046
  NameFromIdPipe.cache = {};
2052
- NameFromIdPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NameFromIdPipe, deps: [{ token: i1.BaseUserService }], target: i0.ɵɵFactoryTarget.Pipe });
2053
- NameFromIdPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NameFromIdPipe, name: "nameFromId" });
2054
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NameFromIdPipe, decorators: [{
2047
+ NameFromIdPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NameFromIdPipe, deps: [{ token: i1.BaseUserService }], target: i0.ɵɵFactoryTarget.Pipe });
2048
+ NameFromIdPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NameFromIdPipe, name: "nameFromId" });
2049
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NameFromIdPipe, decorators: [{
2055
2050
  type: Pipe,
2056
2051
  args: [{
2057
2052
  name: 'nameFromId'
@@ -2060,8 +2055,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
2060
2055
 
2061
2056
  class NgxSmarterplanAdminModule {
2062
2057
  }
2063
- NgxSmarterplanAdminModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NgxSmarterplanAdminModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2064
- NgxSmarterplanAdminModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NgxSmarterplanAdminModule, declarations: [AdminComponent,
2058
+ NgxSmarterplanAdminModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NgxSmarterplanAdminModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2059
+ NgxSmarterplanAdminModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NgxSmarterplanAdminModule, declarations: [AdminComponent,
2065
2060
  UserComponent,
2066
2061
  VisitorComponent,
2067
2062
  OrganisationComponent,
@@ -2079,7 +2074,7 @@ NgxSmarterplanAdminModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0
2079
2074
  FormsModule,
2080
2075
  ReactiveFormsModule,
2081
2076
  NgxSmarterplanCoreModule, i3.TranslateModule, AdminRoutingModule] });
2082
- NgxSmarterplanAdminModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NgxSmarterplanAdminModule, imports: [[
2077
+ NgxSmarterplanAdminModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NgxSmarterplanAdminModule, imports: [[
2083
2078
  ClipboardModule,
2084
2079
  NgbModule,
2085
2080
  CommonModule,
@@ -2091,7 +2086,7 @@ NgxSmarterplanAdminModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0
2091
2086
  }),
2092
2087
  AdminRoutingModule
2093
2088
  ]] });
2094
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: NgxSmarterplanAdminModule, decorators: [{
2089
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NgxSmarterplanAdminModule, decorators: [{
2095
2090
  type: NgModule,
2096
2091
  args: [{
2097
2092
  declarations: [