UNPKG

angular-bootstrap-italia

Version:

<p align="center"> <h1 align="center">Bootstrap Italia + Angular 9</h1>

483 lines (470 loc) 119 kB
import { __decorate } from 'tslib'; import { EventEmitter, Input, Output, Component, Injectable, ChangeDetectionStrategy, ɵɵdefineInjectable, ɵɵinject, ViewChild, NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterModule } from '@angular/router'; import { FormControl, Validators, FormGroup, ReactiveFormsModule, FormsModule } from '@angular/forms'; import { debounceTime, distinctUntilChanged, tap, switchMap, finalize } from 'rxjs/operators'; import { Subject } from 'rxjs/internal/Subject'; import { EMPTY } from 'rxjs/internal/observable/empty'; import { HttpClient } from '@angular/common/http'; import { FeatureGroup, icon, map, tileLayer, control, Control, Draw, geoJSON, marker } from 'leaflet'; import 'leaflet-draw'; import drawLocales from 'leaflet-draw-locales'; let HeaderComponent = class HeaderComponent { constructor() { this.logout = new EventEmitter(); } onLogout(event) { this.logout.emit(event); } }; __decorate([ Input() ], HeaderComponent.prototype, "owner", void 0); __decorate([ Input() ], HeaderComponent.prototype, "appName", void 0); __decorate([ Input() ], HeaderComponent.prototype, "isAuthenticated", void 0); __decorate([ Input() ], HeaderComponent.prototype, "menuItems", void 0); __decorate([ Input() ], HeaderComponent.prototype, "loginRoute", void 0); __decorate([ Input() ], HeaderComponent.prototype, "userName", void 0); __decorate([ Output() ], HeaderComponent.prototype, "logout", void 0); HeaderComponent = __decorate([ Component({ selector: 'lib-header', template: "<div class=\"it-header-wrapper\">\r\n\r\n <div class=\"it-header-slim-wrapper\">\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"it-header-slim-wrapper-content\">\r\n <a class=\"d-lg-block navbar-brand\" href=\"http://www.protezionecivile.gov.it/\">{{ owner }}</a>\r\n <div class=\"it-header-slim-right-zone\">\r\n <div class=\"nav-item dropdown\">\r\n <a class=\"nav-link dropdown-toggle\" href=\"#\" data-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <span>ITA</span>\r\n <svg class=\"icon d-none d-lg-block\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-expand\"></use>\r\n </svg>\r\n </a>\r\n <div class=\"dropdown-menu\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"link-list-wrapper\">\r\n <ul class=\"link-list\">\r\n <li>\r\n <a class=\"list-item\" href=\"#\"><span>ITA</span></a>\r\n </li>\r\n <li>\r\n <a class=\"list-item\" href=\"#\"><span>ENG</span></a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <a [routerLink]=\"[loginRoute]\" class=\"btn btn-primary btn-icon btn-full\"\r\n *ngIf=\"!isAuthenticated; else elseBlock\">\r\n <span class=\"rounded-icon\">\r\n <svg class=\"icon icon-primary\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-user\"></use>\r\n </svg>\r\n </span>\r\n <span class=\"d-none d-lg-block\">Accedi</span>\r\n </a>\r\n <ng-template #elseBlock>\r\n <div class=\"dropdown\">\r\n <a class=\"btn btn-primary btn-icon btn-full\" href=\"#\" role=\"button\" id=\"dropdownMenuLink\"\r\n data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n <span class=\"rounded-icon\">\r\n <svg class=\"icon icon-primary\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-user\"></use>\r\n </svg>\r\n </span>\r\n <span class=\"d-none d-lg-block\">{{ userName }}</span>\r\n </a>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownMenuLink\">\r\n <div class=\"link-list-wrapper\">\r\n <ul class=\"link-list\">\r\n <li><a class=\"list-item\" href=\"#\" (click)=\"onLogout($event)\"><span>Logout</span></a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"it-nav-wrapper\">\r\n <div class=\"it-header-center-wrapper\">\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"it-header-center-content-wrapper\">\r\n <div class=\"it-brand-wrapper\">\r\n <a href=\"#\">\r\n <svg class=\"icon\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-code-circle\"></use>\r\n </svg>\r\n <div class=\"it-brand-text\">\r\n <h2 class=\"no_toc\">{{ appName }}</h2>\r\n <h3 class=\"no_toc d-none d-md-block\">Inserire qui la tag line</h3>\r\n </div>\r\n </a>\r\n </div>\r\n <div class=\"it-right-zone\">\r\n <div class=\"it-socials d-none d-md-flex\">\r\n <span>Seguici su</span>\r\n <ul>\r\n <li>\r\n <a href=\"#\" aria-label=\"Facebook\" target=\"_blank\">\r\n <svg class=\"icon\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-facebook\"></use>\r\n </svg>\r\n </a>\r\n </li>\r\n <li>\r\n <a href=\"#\" aria-label=\"Github\" target=\"_blank\">\r\n <svg class=\"icon\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-github\"></use>\r\n </svg>\r\n </a>\r\n </li>\r\n <li>\r\n <a href=\"#\" target=\"_blank\" aria-label=\"Twitter\">\r\n <svg class=\"icon\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-twitter\"></use>\r\n </svg>\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"it-search-wrapper\" *ngIf=\"isAuthenticated\">\r\n <span class=\"d-none d-md-block\">Cerca</span>\r\n <a class=\"search-link rounded-icon\" href=\"#\" aria-label=\"Cerca\" data-toggle=\"modal\"\r\n data-target=\"#modalSearchFullScreen\" data-backdrop=\"false\">\r\n <svg class=\"icon\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-search\"></use>\r\n </svg>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <lib-header-navbar [menuItems]=\"menuItems\" *ngIf=\"isAuthenticated\"></lib-header-navbar>\r\n <lib-search-modal *ngIf=\"isAuthenticated\"></lib-search-modal>\r\n </div>\r\n</div>\r\n" }) ], HeaderComponent); let FooterComponent = class FooterComponent { constructor() { } }; __decorate([ Input() ], FooterComponent.prototype, "owner", void 0); __decorate([ Input() ], FooterComponent.prototype, "appName", void 0); FooterComponent = __decorate([ Component({ selector: 'lib-footer', template: "<footer class=\"it-footer\">\r\n <div class=\"it-footer-main\">\r\n <div class=\"container-fluid\">\r\n <section>\r\n <div class=\"row clearfix\">\r\n <div class=\"col-sm-12\">\r\n <div class=\"it-brand-wrapper\">\r\n <a href=\"#\">\r\n <svg class=\"icon\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-code-circle\"></use>\r\n </svg>\r\n <div class=\"it-brand-text\">\r\n <h2 class=\"no_toc\">{{ appName }}</h2>\r\n <h3 class=\"no_toc d-none d-md-block\">Inserire qui la tag line</h3>\r\n </div>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <section>\r\n <div class=\"row\">\r\n <div class=\"col-lg-3 col-md-3 col-sm-6 pb-2\">\r\n <h4>\r\n <a href=\"#\" title=\"Vai alla pagina: Amministrazione\">Amministrazione</a>\r\n </h4>\r\n <div class=\"link-list-wrapper\">\r\n <ul class=\"footer-list link-list clearfix\">\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Giunta e consiglio\">Giunta e consiglio</a>\r\n </li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Aree di competenza\">Aree di competenza</a>\r\n </li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Dipendenti\">Dipendenti</a></li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Luoghi\">Luoghi</a></li>\r\n <li><a class=\"list-item\" href=\"#\"\r\n title=\"Vai alla pagina: Associazioni e societ\u00E0 partecipate\">Associazioni e societ\u00E0 partecipate</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-3 col-sm-6 pb-2\">\r\n <h4>\r\n <a href=\"#\" title=\"Vai alla pagina: Servizi\">Servizi</a>\r\n </h4>\r\n <div class=\"link-list-wrapper\">\r\n <ul class=\"footer-list link-list clearfix\">\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Pagamenti\">Pagamenti</a></li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Sostegno\">Sostegno</a></li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Domande e iscrizioni\">Domande e iscrizioni</a>\r\n </li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Segnalazioni\">Segnalazioni</a></li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Autorizzazioni e concessioni\">Autorizzazioni e\r\n concessioni</a></li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Certificati e dichiarazioni\">Certificati e\r\n dichiarazioni</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-3 col-sm-6 pb-2\">\r\n <h4>\r\n <a href=\"#\" title=\"Vai alla pagina: Novit\u00E0\">Novit\u00E0</a>\r\n </h4>\r\n <div class=\"link-list-wrapper\">\r\n <ul class=\"footer-list link-list clearfix\">\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Notizie\">Notizie</a></li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Eventi\">Eventi</a></li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Comunicati stampa\">Comunicati stampa</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-3 col-md-3 col-sm-6\">\r\n <h4>\r\n <a href=\"#\" title=\"Vai alla pagina: Documenti\">Documenti</a>\r\n </h4>\r\n <div class=\"link-list-wrapper\">\r\n <ul class=\"footer-list link-list clearfix\">\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Progetti e attivit\u00E0\">Progetti e attivit\u00E0</a>\r\n </li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Delibere, determine e ordinanze\">Delibere,\r\n determine e ordinanze</a></li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Bandi\">Bandi</a></li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Concorsi\">Concorsi</a></li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Albo pretorio\">Albo pretorio</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <section class=\"py-4 border-white border-top\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-4 col-md-4 pb-2\">\r\n <h4><a href=\"#\" title=\"Vai alla pagina: Contatti\">Contatti</a></h4>\r\n <p>\r\n <strong>Comune di Lorem Ipsum</strong><br> Via Roma 0 - 00000 Lorem Ipsum Codice fiscale / P. IVA:\r\n 000000000\r\n </p>\r\n <div class=\"link-list-wrapper\">\r\n <ul class=\"footer-list link-list clearfix\">\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: Posta Elettronica Certificata\">Posta\r\n Elettronica Certificata</a></li>\r\n <li><a class=\"list-item\" href=\"#\" title=\"Vai alla pagina: URP - Ufficio Relazioni con il Pubblico\">URP -\r\n Ufficio Relazioni con il Pubblico</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-4 col-md-4 pb-2\">\r\n <h4><a href=\"#\" title=\"Vai alla pagina: Lorem Ipsum\">Lorem Ipsum</a></h4>\r\n </div>\r\n <div class=\"col-lg-4 col-md-4 pb-2\">\r\n <div class=\"pb-2\">\r\n <h4><a href=\"#\" title=\"Vai alla pagina: Seguici su\">Seguici su</a></h4>\r\n <ul class=\"list-inline text-left social\">\r\n <li class=\"list-inline-item\"><a class=\"p-2 text-white\" href=\"#\" target=\"_blank\"><svg\r\n class=\"icon icon-sm icon-white align-top\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-designers-italia\"></use>\r\n </svg><span class=\"sr-only\">Designers Italia</span></a></li>\r\n <li class=\"list-inline-item\"><a class=\"p-2 text-white\" href=\"#\" target=\"_blank\"><svg\r\n class=\"icon icon-sm icon-white align-top\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-twitter\"></use>\r\n </svg><span class=\"sr-only\">Twitter</span></a></li>\r\n <li class=\"list-inline-item\"><a class=\"p-2 text-white\" href=\"#\" target=\"_blank\"><svg\r\n class=\"icon icon-sm icon-white align-top\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-medium\"></use>\r\n </svg><span class=\"sr-only\">Medium</span></a></li>\r\n <li class=\"list-inline-item\"><a class=\"p-2 text-white\" href=\"#\" target=\"_blank\"><svg\r\n class=\"icon icon-sm icon-white align-top\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-behance\"></use>\r\n </svg><span class=\"sr-only\">Behance</span></a></li>\r\n </ul>\r\n </div>\r\n <div class=\"pb-2\">\r\n <h4><a href=\"#\" title=\"Vai alla pagina: Newsletter\">Newsletter</a></h4>\r\n <p>Form Newsletter</p>\r\n <!--<form action=\"#\" method=\"post\">\r\n <label for=\"input-newsletter\" class=\"active\">Iscriviti per riceverla</label>\r\n <div class=\"input-group\">\r\n <div class=\"input-group-prepend\">\r\n <div class=\"input-group-text\">@</div>\r\n </div>\r\n <input type=\"text\" class=\"form-control\" id=\"input-newsletter\" name=\"input-newsletter\" placeholder=\"Scrivi il tuo indirizzo email\" >\r\n <div class=\"input-group-append\">\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" id=\"button-addon2\">Button</button>\r\n </div>\r\n </div>\r\n <button class=\"btn btn-default pull-right\" type=\"submit\">Iscriviti</button>\r\n </form>-->\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n <div class=\"it-footer-small-prints clearfix\">\r\n <div class=\"container-fluid\">\r\n <h3 class=\"sr-only\">Sezione Link Utili</h3>\r\n <ul class=\"it-footer-small-prints-list list-inline mb-0 d-flex flex-column flex-md-row\">\r\n <li class=\"list-inline-item\"><a href=\"#\" title=\"Note Legali\">Media policy</a></li>\r\n <li class=\"list-inline-item\"><a href=\"#\" title=\"Note Legali\">Note legali</a></li>\r\n <li class=\"list-inline-item\"><a href=\"#\" title=\"Privacy-Cookies\">Privacy policy</a></li>\r\n <li class=\"list-inline-item\"><a href=\"#\" title=\"Mappa del sito\">Mappa del sito</a> </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</footer>\r\n" }) ], FooterComponent); let HeaderNavbarComponent = class HeaderNavbarComponent { constructor() { } }; __decorate([ Input() ], HeaderNavbarComponent.prototype, "menuItems", void 0); HeaderNavbarComponent = __decorate([ Component({ selector: 'lib-header-navbar', template: "<div class=\"it-header-navbar-wrapper\">\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n\r\n <nav class=\"navbar navbar-expand-lg has-megamenu\">\r\n <button class=\"custom-navbar-toggler\" type=\"button\" aria-controls=\"nav10\" aria-expanded=\"false\"\r\n aria-label=\"Toggle navigation\" data-target=\"#nav10\">\r\n <svg class=\"icon\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-burger\"></use>\r\n </svg>\r\n </button>\r\n <div class=\"navbar-collapsable\" id=\"nav10\">\r\n <div class=\"overlay\"></div>\r\n <div class=\"close-div sr-only\">\r\n <button class=\"btn close-menu\" type=\"button\"><span class=\"it-close\"></span>close</button>\r\n </div>\r\n <div class=\"menu-wrapper\">\r\n\r\n <ul class=\"navbar-nav\">\r\n\r\n <ng-template ngFor let-item [ngForOf]=\"menuItems\">\r\n <ng-container [ngSwitch]=\"item.type\">\r\n\r\n <li *ngSwitchCase=\"'link'\" class=\"nav-item\" routerLinkActive=\"active\"\r\n [routerLinkActiveOptions]=\"{exact: true}\">\r\n\r\n <a *ngIf=\"!item.disabled; else elseBlock\" class=\"nav-link\" [routerLink]=\"[item.href]\"\r\n routerLinkActive=\"active\" [routerLinkActiveOptions]=\"{exact: true}\" #rla=\"routerLinkActive\">\r\n <span>{{ item.title }}</span>\r\n <span *ngIf=\"rla.isActive\" class=\"sr-only\"> attivo</span>\r\n </a>\r\n\r\n <ng-template #elseBlock>\r\n <a class=\"nav-link disabled\" [routerLink]=\"[item.href]\"><span>{{ item.title }}</span></a>\r\n </ng-template>\r\n\r\n </li>\r\n\r\n <li class=\"nav-item dropdown\" *ngSwitchCase=\"'dropdown'\">\r\n <lib-dropdown *ngSwitchCase=\"'dropdown'\" [title]=\"item.title\" [heading]=\"item.payload.heading\"\r\n [items]=\"item.payload.elements\"></lib-dropdown>\r\n </li>\r\n\r\n </ng-container>\r\n </ng-template>\r\n\r\n </ul>\r\n </div>\r\n\r\n </div>\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""] }) ], HeaderNavbarComponent); let HeaderNavbarDropdownComponent = class HeaderNavbarDropdownComponent { constructor() { } }; __decorate([ Input() ], HeaderNavbarDropdownComponent.prototype, "title", void 0); __decorate([ Input() ], HeaderNavbarDropdownComponent.prototype, "heading", void 0); __decorate([ Input() ], HeaderNavbarDropdownComponent.prototype, "items", void 0); HeaderNavbarDropdownComponent = __decorate([ Component({ selector: 'lib-dropdown', template: "<a class=\"nav-link dropdown-toggle\" href=\"#\" data-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <span>{{ title }}</span>\r\n <svg class=\"icon icon-xs\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-expand\"></use>\r\n </svg>\r\n</a>\r\n<div class=\"dropdown-menu\">\r\n <div class=\"link-list-wrapper\">\r\n <ul class=\"link-list\">\r\n <li>\r\n <h3 class=\"no_toc\" id=\"heading\">{{ heading }}</h3>\r\n </li>\r\n\r\n <li *ngFor=\"let item of items\">\r\n <a *ngIf=\"!item.isDivider && item.disabled==true\" class=\"list-item disabled\"\r\n aria-disabled=\"true\"><span>ciao</span></a>\r\n\r\n <a *ngIf=\"!item.isDivider && !item.disabled\" class=\"'list-item\" [routerLink]=\"[item.href]\"\r\n routerLinkActive=\"active\" [routerLinkActiveOptions]=\"{exact: true}\" #rla=\"routerLinkActive\">\r\n <span>{{ item.title }}</span>\r\n <span *ngIf=\"rla.isActive\" class=\"sr-only\">active</span>\r\n </a>\r\n\r\n <span *ngIf=\"item.isDivider\" class=\"divider\"></span>\r\n </li>\r\n\r\n </ul>\r\n </div>\r\n</div>\r\n", styles: [""] }) ], HeaderNavbarDropdownComponent); let BlankPageComponent = class BlankPageComponent { constructor() { } ngOnInit() { } }; BlankPageComponent = __decorate([ Component({ selector: 'lib-blank-page', template: "<div class=\"container-fluid my-4 px-4\">\r\n <ng-content></ng-content>\r\n</div>\r\n" }) ], BlankPageComponent); let LoginPageComponent = class LoginPageComponent { constructor() { this.formSubmit = new EventEmitter(); } onSubmit(form) { if (!form.valid) { return; } const email = form.value.email; const password = form.value.password; this.formSubmit.emit({ email, password }); form.reset(); } }; __decorate([ Input() ], LoginPageComponent.prototype, "isLoading", void 0); __decorate([ Output() ], LoginPageComponent.prototype, "formSubmit", void 0); LoginPageComponent = __decorate([ Component({ selector: 'lib-login-page', template: "<div id=\"content\" class=\"container py-5\">\r\n <div class=\"wrapper\">\r\n\r\n <section class=\"container\" style=\"max-width: 40em\">\r\n <h1 class=\"pb-5\">Log in</h1>\r\n\r\n <form class=\"login\" #authForm=\"ngForm\" (ngSubmit)=\"onSubmit(authForm)\" *ngIf=\"!isLoading\">\r\n\r\n <div class=\"form-group\">\r\n <input type=\"text\" name=\"email\" class=\"form-control \" id=\"email\" ngModel required email>\r\n <label for=\"email\">Email</label>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <input type=\"password\" name=\"password\" class=\"form-control input-password\" id=\"password\" ngModel required minlength=\"14\">\r\n <label for=\"password\">Password</label>\r\n <span class=\"password-icon bg-transparent\" aria-hidden=\"true\">\r\n <svg class=\"password-icon-visible icon icon-sm\">\r\n <use\r\n xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-password-visible\">\r\n </use>\r\n </svg>\r\n <svg class=\"password-icon-invisible icon icon-sm d-none\">\r\n <use\r\n xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-password-invisible\">\r\n </use>\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"form-check\">\r\n <input id=\"remember\" name=\"remember\" type=\"checkbox\">\r\n <label for=\"remember\">Ricordami</label>\r\n </div>\r\n\r\n <div class=\"py-4 login_buttons\">\r\n <button class=\"btn btn-primary\" type=\"submit\" [disabled]=\"!authForm.valid\">Log in</button>\r\n </div>\r\n\r\n <!-- <p>Se non hai ancora creato un account, <a [routerLink]=\"['/']\" >registrati</a> adesso.</p> -->\r\n\r\n <p>Se invece hai dimenticato la password, puoi <a [routerLink]=\"['/reset-password']\">reimpostarla</a>.</p>\r\n\r\n </form>\r\n\r\n </section>\r\n\r\n </div>\r\n</div>\r\n", styles: [".form-group{margin-bottom:1.5rem}"] }) ], LoginPageComponent); let ResetPasswordPageComponent = class ResetPasswordPageComponent { constructor() { } }; ResetPasswordPageComponent = __decorate([ Component({ selector: 'lib-reset-password-page', template: "<div id=\"content\" class=\"container py-5\">\r\n <div class=\"wrapper\">\r\n\r\n <section class=\"container\" style=\"max-width: 40em\">\r\n <h1>Re-imposta la Password</h1>\r\n\r\n <p>Hai dimenticato la tua password? Inserisci qui sotto l'indirizzo e-mail con cui ti sei registrato, ti invieremo\r\n una mail con un link per re-impostarla.</p>\r\n\r\n <form method=\"POST\" action=\"/accounts/password/reset/\" class=\"password_reset\">\r\n\r\n <div class=\"form-group\">\r\n <input type=\"email\" class=\"form-control\" id=\"id_email\" name=\"email\">\r\n <label for=\"id_email\">E-mail</label>\r\n </div>\r\n\r\n <button class=\"btn btn-primary\" type=\"submit\">Re-imposta la mia Password</button>\r\n </form>\r\n </section>\r\n\r\n </div>\r\n</div>\r\n", styles: [".form-group{margin-bottom:1.5rem}"] }) ], ResetPasswordPageComponent); let TableComponent = class TableComponent { constructor() { this.paginationChange = new EventEmitter(); this.detailSelected = new EventEmitter(); } ngOnInit() { // start loading this.loading = true; // check result this.loadingSub = this.$rows.subscribe(newValue => { if (newValue) { this.loading = false; } }); } ngOnChanges(changes) { if (changes.pagination) { this.loading = false; } } ngOnDestroy() { if (this.loadingSub) { this.loadingSub.unsubscribe(); } } emitNewPagination(newPagination) { this.loading = true; this.paginationChange.emit(newPagination); } getElemKeys(elem) { return Object.keys(elem); } onDetail(rowElem) { this.detailSelected.emit(rowElem); } }; __decorate([ Input() ], TableComponent.prototype, "columns", void 0); __decorate([ Input() ], TableComponent.prototype, "detailUpdate", void 0); __decorate([ Input() ], TableComponent.prototype, "$rows", void 0); __decorate([ Input() ], TableComponent.prototype, "pagination", void 0); __decorate([ Output() ], TableComponent.prototype, "paginationChange", void 0); __decorate([ Output() ], TableComponent.prototype, "detailSelected", void 0); TableComponent = __decorate([ Component({ selector: 'lib-table', template: "<div class=\"table-responsive my-5 shadow\">\r\n <table class=\"table mb-0 bg-white\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\" *ngFor=\"let colItem of columns\">\r\n <span>{{ colItem.label }}</span>\r\n <!-- <svg class=\"icon icon-xs\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-expand\">\r\n </use>\r\n </svg> -->\r\n </th>\r\n <th scope=\"col\" *ngIf=\"detailUpdate\">\r\n <span> Azione </span>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngIf=\"loading\">\r\n <td [attr.colspan]=\"detailUpdate ? columns.length + 1 : columns.length\">\r\n <div class=\"progress progress-indeterminate\" style=\"width: 100%;\">\r\n <span class=\"sr-only\">In elaborazione...</span>\r\n <div class=\"progress-bar\" role=\"progressbar\"></div>\r\n </div>\r\n </td>\r\n </tr>\r\n\r\n <tr *ngFor=\"let item of $rows | async\">\r\n <td class=\"align-middle\" *ngFor=\"let column of columns\">\r\n {{ item[column.key] }}\r\n </td>\r\n <td class=\"align-middle\" *ngIf=\"detailUpdate\">\r\n <a href=\"javascript:void(0);\" class=\"btn btn-secondary btn-xs btn-icon\" role=\"button\" aria-disabled=\"true\" (click)=\"onDetail(item)\">\r\n <svg class=\"icon icon-white\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-search\">\r\n </use>\r\n </svg>\r\n <span>Dettagli</span>\r\n </a>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n<lib-table-pagination *ngIf=\"pagination\" [currentPagination]=\"pagination\"\r\n (paginationChange)=\"emitNewPagination($event)\"></lib-table-pagination>\r\n", styles: [""] }) ], TableComponent); let SearchModalComponent = class SearchModalComponent { constructor() { } ngOnInit() { } }; SearchModalComponent = __decorate([ Component({ selector: 'lib-search-modal', template: "<div class=\"modal sfs-modal fade show\" tabindex=\"-1\" role=\"dialog\" id=\"modalSearchFullScreen\">\r\n <div class=\"modal-dialog\" role=\"document\">\r\n <div class=\"modal-content\">\r\n <div class=\"container\">\r\n <!-- Header -->\r\n <div class=\"row mt-5 mb-5\">\r\n <div class=\"col-12 d-flex justify-content-between align-items-center\">\r\n <h1 class=\"text-secondary\">Cerca</h1>\r\n <button class=\"close\" type=\"button\" data-dismiss=\"modal\" aria-label=\"Close\">\r\n <svg class=\"icon icon-lg\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-close\"></use>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Input -->\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <form id=\"autocompleteSearchForm\" autocomplete=\"off\">\r\n <div class=\"form-group autocomplete-wrapper-big\">\r\n <input\r\n autocomplete=\"off\"\r\n type=\"search\"\r\n class=\"autocomplete\"\r\n placeholder=\"Cerca eventi, bollettini o per tag\"\r\n id=\"autocompleteSearchFullScreen\"\r\n name=\"autocompleteSearchFullScreen\">\r\n <span class=\"autocomplete-icon\" aria-hidden=\"true\">\r\n <svg class=\"icon icon-sm\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-search\"></use>\r\n </svg>\r\n </span>\r\n <ul class=\"autocomplete-list\" id=\"autocompleteListSearchFullScreen\"></ul>\r\n <label for=\"autocompleteSearchFullScreen\" class=\"sr-only\">Cerca nel sito</label>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n\r\n <!-- Filters -->\r\n <div id=\"autocompleteFilters\" class=\"row\">\r\n <div class=\"col-12 sfs-modal-tags-container\">\r\n <button type=\"button\" class=\"btn btn-xs sfs-btn-tag btn-primary\" data-filter=\"\">Tutto</button>\r\n <button type=\"button\" class=\"btn btn-xs sfs-btn-tag btn-icon btn-outline-secondary\" data-filter=\"progetto\">\r\n <svg class=\"icon icon-secondary\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-map-marker-circle\"></use>\r\n </svg>\r\n <span>Eventi</span>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-xs sfs-btn-tag btn-icon btn-outline-secondary\" data-filter=\"documento\">\r\n <svg class=\"icon icon-secondary\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-note\"></use>\r\n </svg>\r\n <span>Bollettini</span>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-xs sfs-btn-tag btn-icon btn-outline-secondary\" data-filter=\"amministrazione\">\r\n <svg class=\"icon icon-secondary\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-star-outline\"></use>\r\n </svg>\r\n <span>Coau</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".form-group{margin-bottom:1.5rem}.sfs-modal-button{background:0 0;border:none;color:#fff}.sfs-modal-button span{display:none;font-size:16px}.sfs-modal-button .sfs-modal-button-icon-bg{background:0 0;border-radius:44px;height:auto;width:auto;margin-left:0;flex:0 0 44px}.sfs-modal-button .sfs-modal-button-icon-bg .icon-primary{fill:#fff!important}@media (min-width:576px){.sfs-modal-button span{display:block;margin-bottom:1px}.sfs-modal-button .sfs-modal-button-icon-bg{background:#fff;height:44px;width:44px;margin-left:10px}.sfs-modal-button .sfs-modal-button-icon-bg .icon-primary{fill:#06c!important}}.sfs-modal.modal{height:100%;height:calc(100% - 48px);top:48px;bottom:0;left:0;right:0;border:none;background:#fff;border-radius:0;padding:0;z-index:1072;padding-right:0!important}@media (min-width:576px){.sfs-modal.modal{height:calc(100% - 54px);top:54px}}@media (min-width:992px){.sfs-modal.modal{height:calc(100% - 48px);top:48px}}.sfs-modal.modal .modal-dialog{background:#fff;margin:0;max-width:none;height:100%}.sfs-modal.modal .modal-dialog .modal-content{min-height:100%;box-shadow:none}.sfs-modal.modal .modal-dialog .modal-content .autocomplete-wrapper-big .autocomplete{padding-left:65px}.sfs-modal.modal .modal-dialog .modal-content .autocomplete-wrapper-big .autocomplete-list{z-index:1}.sfs-modal.modal .modal-dialog .modal-content .autocomplete-wrapper-big .autocomplete-list .autocomplete-list-freesearch a{font-size:16px;font-weight:600;color:#06c}.sfs-modal.modal .modal-dialog .modal-content .autocomplete-wrapper-big .autocomplete-list .autocomplete-list-freesearch a .search-icon{margin-top:1px}.sfs-modal.modal .modal-dialog .modal-content .autocomplete-wrapper-big .autocomplete-list .autocomplete-list-freesearch a .right-arrow-icon{margin-top:2px}.sfs-modal.modal .sfs-modal-tags-container .sfs-btn-tag{margin-right:10px;margin-bottom:10px}.sfs-modal.modal .sfs-modal-tags-container .btn-outline-secondary{box-shadow:inset 0 0 0 1px #5f7285}"] }) ], SearchModalComponent); let TablePaginationComponent = class TablePaginationComponent { constructor() { this.paginationChange = new EventEmitter(); this.pages = []; this.currentPageRound = []; } ngOnInit() { this.setPageRound(1); } ngOnChanges(changes) { if (changes.currentPagination) { this.setPageRound(this.currentPagination.currentPage); } } setPage(page) { this.currentPagination.currentPage = page; this.setPageRound(page); this.paginationChange.emit({ page: this.currentPagination.currentPage, pageSize: this.currentPagination.pageSize }); } nextPage() { const newCurrentPage = this.currentPagination.currentPage + 1; if (this.pages.find(elem => elem.page === newCurrentPage)) { this.currentPagination.currentPage = newCurrentPage; this.setPageRound(newCurrentPage); this.paginationChange.emit({ page: this.currentPagination.currentPage, pageSize: this.currentPagination.pageSize }); } } previousPage() { const newCurrentPage = this.currentPagination.currentPage - 1; if (this.pages.find(elem => elem.page === newCurrentPage)) { this.currentPagination.currentPage = newCurrentPage; this.setPageRound(newCurrentPage); this.paginationChange.emit({ page: this.currentPagination.currentPage, pageSize: this.currentPagination.pageSize }); } } changePageSize(newPageSizeValue) { this.currentPagination.pageSize = newPageSizeValue; this.paginationChange.emit({ page: 1, pageSize: this.currentPagination.pageSize }); } setPageRound(currentPage) { this.pages = []; if (this.currentPagination.totalPages > 7) { const lower = currentPage - 2 > 1 ? currentPage - 2 : 2; const max = currentPage + 2 < this.currentPagination.totalPages ? currentPage + 2 : this.currentPagination.totalPages - 1; // Inserisci primo elemento this.pages.push({ separator: false, page: 1 }); // Seprator if (lower > 2) { this.pages.push({ separator: true }); } // Round const minNext = currentPage > this.currentPagination.totalPages - 4 ? this.currentPagination.totalPages - 4 : lower; const maxNext = lower > 2 ? max : lower + 3; for (let i = minNext; i <= maxNext; i++) { this.pages.push({ separator: false, page: i }); } // Seprator if (max < this.currentPagination.totalPages - 1) { this.pages.push({ separator: true }); } // Inserisci ultimo elemento this.pages.push({ separator: false, page: this.currentPagination.totalPages }); } else { for (let i = 1; i <= this.currentPagination.totalPages; i++) { this.pages.push({ separator: false, page: i }); } } } }; __decorate([ Input() ], TablePaginationComponent.prototype, "currentPagination", void 0); __decorate([ Output() ], TablePaginationComponent.prototype, "paginationChange", void 0); TablePaginationComponent = __decorate([ Component({ selector: 'lib-table-pagination', template: "<div class=\"row\">\r\n <div class=\"col\">\r\n <nav class=\"pagination-wrapper justify-content-center\" aria-label=\"Esempio di navigazione della pagina\">\r\n <ul class=\"pagination\">\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" href=\"javascript:void(0);\" (click)=\"previousPage()\">\r\n <svg class=\"icon icon-primary\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-chevron-left\">\r\n </use>\r\n </svg>\r\n <span class=\"sr-only\">Pagina precedente</span>\r\n </a>\r\n </li>\r\n\r\n <li class=\"page-item\" *ngFor=\"let elem of pages\">\r\n\r\n <a class=\"page-link\" href=\"javascript:void(0);\" aria-current=\"page\"\r\n *ngIf=\"!elem.separator && elem.page === currentPagination.currentPage\" (click)=\"setPage(elem.page)\">\r\n {{ elem.page }}\r\n </a>\r\n\r\n <a class=\"page-link\" href=\"javascript:void(0);\" (click)=\"setPage(elem.page)\"\r\n *ngIf=\"!elem.separator && elem.page !== currentPagination.currentPage;\">{{ elem.page }}</a>\r\n\r\n <span class=\"page-link\" *ngIf=\"elem.separator\">...</span>\r\n\r\n </li>\r\n\r\n <li class=\"page-item\">\r\n <a class=\"page-link\" href=\"javascript:void(0);\" (click)=\"nextPage()\">\r\n <span class=\"sr-only\">Pagina successiva</span>\r\n <svg class=\"icon icon-primary\">\r\n <use xlink:href=\"./assets/bootstrap-italia/svg/sprite.svg#it-chevron-right\">\r\n </use>\r\n </svg>\r\n </a>\r\n </li>\r\n </ul>\r\n\r\n <div class=\"dropdown\">\r\n <a class=\"btn btn-dropdown dropdown-toggle\" href=\"javascript:void(0);\" role=\"button\" id=\"pagerChanger\"\r\n data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-label=\"Salta alla pagina\">pag. {{ currentPagination.pageSize }}</a>\r\n <div class=\"dropdown-menu\" aria-labelledby=\"pagerChanger\">\r\n <div class=\"link-list-wrapper\">\r\n <ul class=\"link-list\">\r\n <li><a class=\"list-item\" href=\"javascript:void(0);\" (click)=\"changePageSize(10)\"><span>pag. 10</span></a></li>\r\n <li><a class=\"list-item\" href=\"javascript:void(0);\" (click)=\"changePageSize(20)\"><span>pag. 20</span></a></li>\r\n <li><a class=\"list-item\" href=\"javascript:void(0);\" (click)=\"changePageSize(30)\"><span>pag. 30</span></a></li>\r\n <li><a class=\"list-item\" href=\"javascript:void(0);\" (click)=\"changePageSize(40)\"><span>pag. 40</span></a></li>\r\n <li><a class=\"list-item\" href=\"javascript:void(0);\" (click)=\"changePageSize(50)\"><span>pag. 50</span></a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </nav>\r\n </div>\r\n</div>\r\n", styles: [""] }) ], TablePaginationComponent); let DynamicFormControlService = class DynamicFormControlService { constructor() { } toFormGroup(fields, defaultState = null) { const group = {}; fields.forEach(field => { let defaultValue; if (typeof field.value === 'boolean') { defaultValue = false; } else { defaultValue = ''; } if (defaultState) { defaultValue = defaultState[field.key]; } group[field.key] = field.required ? new FormControl({ value: field.value || defaultValue, disabled: field.disabled }, Validators.required) : new FormControl({ value: field.value || defaultValue, disabled: field.disabled }); }); return new FormGroup(group); } }; DynamicFormControlService = __decorate([ Injectable() ], DynamicFormControlService); let StepperComponent = class StepperComponent { constructor(qcs) { this.qcs = qcs; this.fromValueChange = new EventEmitter(); this.submitedEvent = new EventEmitter(); this.latitude = 42.50; this.longitude = 12.50; } ngOnInit() { var _a, _b, _c, _d; this.widthExp = 100 / this.stepElements.length; // step a 1 this.currentStepIndex = 1; this.validSteps = []; this.touchedSteps = []; this.formRows = [].concat(...this.stepElements.map(e => e.fromRows)); const elements = [].concat(...this.formRows.map(e => e.items)); this.stepForm = this.qcs.toFormGroup(elements); this.mapId = this.getMapId(); const mapFormRows = this.stepElements.find(elem => elem.mapId).fromRows; this.mapFormFields = [].concat(...mapFormRows.map(e => e.items)); // Form Latiture (_a = this.stepForm.controls.latitude) === null || _a === void 0 ? void 0 : _a.setValue(42.50); this.latSub = (_b = this.stepForm.controls.latitude) === null || _b === void 0 ? void 0 : _b.valueChanges.pipe(debounceTime(500), distinctUntilChanged()).subscribe(newVal => { this.latitude = newVal; }); // Form Longitude (_c = this.stepForm.controls.longitude) === null || _c === void 0 ? void 0 : _c.setValue(12.50); this.lngSub = (_d = this.stepForm.controls.longitude) === null || _d === void 0 ? void 0 : _d.valueChanges.pipe(debounceTime(500), distinctUntilChanged()).subscribe(newVal => { this.longitude = newVal; }); this.formStateSubscription = this.stepForm.valueChanges .subscribe(newValue => { var _a; const mapFieldsKeys = this.mapFormFields.map(e => e.key); const mapBoxingValues = []; mapFieldsKeys.forEach(key => { const fieldValue = this.stepForm.value[key]; if (typeof fieldValue === 'object') { mapBoxingValues.push(this.stepForm.value[key]); } if (fieldValue === null || fieldValue === void 0 ? void 0 : fieldValue.shapelight) { // TODO: Fix name this.mapShapePolygon = fieldValue.shapelight; } }); if ((mapBoxingValues === null || mapBoxingValues === void 0 ? void 0 : mapBoxingValues.length) > 0) { this.mapBboxPolygon = (_a = mapBoxingValues[mapBoxingValues.length - 1]) === null || _a === void 0 ? void 0 : _a.boundingbox; // TODO: Fix Name } this.fromValueChange.emit(newValue); }); } ngOnDestroy() { if (this.formStateSubscription) { this.formStateSubscription.unsubscribe(); } if (this.latSub) { this.latSub.unsubscribe(); } if (this.lngSub) { this.lngSub.unsubscribe(); } } get stepRows() { const rows = this.stepElements.find(e => e.index === this.currentStepIndex).fromRows; return rows; } getItems(formRow) { const items = formRow.items.filter(item => { var _a, _b, _c, _d, _e, _f, _g; let showCondition = false; // Se tipo semplice if (((_a = item.parentShowCondition) === null || _a === void 0 ? void 0 : _a.parentKey) && ((_b = item.parentShowCondition) === null || _b === void 0 ? void 0 : _b.parentValue) === this.stepForm.get(item.parentShowCondition.parentKey).value) { showCondition = true; } // Se oggetto if (((_c = item.parentShowCondition) === null || _c === void 0 ? void 0 : _c.parentKey) && typeof ((_d = item.parentShowCondition) === null || _d === void 0 ? void 0 : _d.parentValue) === 'object' // tslint:disable-next-line: max-line-length && JSON.stringify((_e = item.parentShowCondition) === null || _e === void 0 ? void 0 : _e.parentValue) === JSON.stringify(this.stepForm.get(item.parentShowCondition.parentKey).value)) { showCondition = true; } if (!item.parentShowCondition || showCondition) { (_f = this.stepForm.get(item.key)) === null || _f === void 0 ? void 0 : _f.setValidators(Validators.required); return item; } else { (_g = this.stepForm.get(item.key)) === null || _g === void 0 ? void 0 : _g.setValidators(null); } }); return items; } getPratentField(itemKey) { const elements = [].concat(...this.formRows.map(e => e.items)); return elements.find(e => e.parentFieldKey === itemKey); } isValidStep(stepIndex) { const step = this.validSteps.find(e => e === stepIndex); if (step) { return true; } return false; } setValidStep(stepIndex) { // ritorna true se tutti campi di quello step sono validi altrimenti false // prendi le chiavi dei campi di quel particolare step const rowsItems = this.stepElements .find(e => e.index === stepIndex).fromRows .map(e => e.items); const rowsElements = [].concat(...rowsItems); const fieldsKeys = rowsElements.map(e => e.key); const controls = this.stepForm.controls; const filtered = Object.keys(controls) .filter(key => fieldsKeys.includes(key) && controls[key].valid) .reduce((obj, key) => { obj[key] = controls[key]; return obj; }, {}); if (arraysEqual(fieldsKeys, Object.keys(filtered))) { const index = this.validSteps.indexOf(stepIndex, 0); if (index === -1) { this.validSteps.push(stepIndex); } } else { const index = this.validSteps.indexOf(stepIndex, 0); if (index > -1) { this.validSteps.splice(index, 1); } } } isTouchedStep(stepIndex) { const step = this.touchedSteps.find(e => e === stepIndex); if (step) { return true; } return false; } prevStep() { this.stepForm.updateValueAndValidity(); this.setValidStep(this.currentStepIndex); this.touchedSteps.push(this.currentStepIndex);