uni-component-tw 2.0.0 → 2.0.1

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.
@@ -5,7 +5,7 @@ import { FaIconComponent } from '@fortawesome/angular-fontawesome';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/common";
7
7
  import * as i2 from "devextreme-angular/ui/button";
8
- export class UniArticleComponent {
8
+ export class UNIArticleComponent {
9
9
  constructor() {
10
10
  /* Inputs */
11
11
  this.color = input.required(); // Colore di base dell'articolo
@@ -30,11 +30,11 @@ export class UniArticleComponent {
30
30
  // Inverte lo stato di apertura/chiusura
31
31
  this.isOpen.update((val) => !val);
32
32
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniArticleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UniArticleComponent, isStandalone: true, selector: "uni-article", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, setIsOpen: { classPropertyName: "setIsOpen", publicName: "setIsOpen", isSignal: true, isRequired: false, transformFunction: null }, headerCloseButton: { classPropertyName: "headerCloseButton", publicName: "headerCloseButton", isSignal: true, isRequired: false, transformFunction: null } }, usesOnChanges: true, ngImport: i0, template: "<article\n class=\"uni_article flex h-full flex-col rounded border-2 p-4\"\n [style.backgroundColor]=\"color() + '26'\"\n [style.borderColor]=\"color() + '33'\">\n <!-- Title -->\n @if (isHeader()) {\n <div class=\"uni_article_header flex items-center gap-4\" [ngClass]=\"{ 'mb-4': isOpen() }\">\n <!-- Icona nella testata, se presente -->\n @if (icon(); as icon) {\n <fa-icon class=\"uni-article-header-icon\" [icon]=\"icon\"></fa-icon>\n }\n\n <!-- Titolo nella testata, se presente -->\n @if (title(); as title) {\n <h5 class=\"uni_article_header_title truncate uppercase\">{{ title }}</h5>\n }\n\n <!-- Bottone per aprire/chiudere l'articolo, se presente -->\n @if (headerCloseButton()) {\n <dx-button\n class=\"uni_article_header_button ml-auto\"\n [icon]=\"isOpen() ? 'close' : 'expandform'\"\n (onClick)=\"toggleIsOpen()\">\n </dx-button>\n }\n </div>\n }\n\n <!-- Contenuto dell'articolo, visibile solo se aperto -->\n @if (isOpen()) {\n <ng-content></ng-content>\n }\n</article>\n\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i2.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNIArticleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UNIArticleComponent, isStandalone: true, selector: "uni-article", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, setIsOpen: { classPropertyName: "setIsOpen", publicName: "setIsOpen", isSignal: true, isRequired: false, transformFunction: null }, headerCloseButton: { classPropertyName: "headerCloseButton", publicName: "headerCloseButton", isSignal: true, isRequired: false, transformFunction: null } }, usesOnChanges: true, ngImport: i0, template: "<article\n class=\"uni_article flex h-full flex-col rounded border-2 p-4\"\n [style.backgroundColor]=\"color() + '26'\"\n [style.borderColor]=\"color() + '33'\">\n <!-- Title -->\n @if (isHeader()) {\n <div class=\"uni_article_header flex items-center gap-4\" [ngClass]=\"{ 'mb-4': isOpen() }\">\n <!-- Icona nella testata, se presente -->\n @if (icon(); as icon) {\n <fa-icon class=\"uni-article-header-icon\" [icon]=\"icon\"></fa-icon>\n }\n\n <!-- Titolo nella testata, se presente -->\n @if (title(); as title) {\n <h5 class=\"uni_article_header_title truncate uppercase\">{{ title }}</h5>\n }\n\n <!-- Bottone per aprire/chiudere l'articolo, se presente -->\n @if (headerCloseButton()) {\n <dx-button\n class=\"uni_article_header_button ml-auto\"\n [icon]=\"isOpen() ? 'close' : 'expandform'\"\n (onClick)=\"toggleIsOpen()\">\n </dx-button>\n }\n </div>\n }\n\n <!-- Contenuto dell'articolo, visibile solo se aperto -->\n @if (isOpen()) {\n <ng-content></ng-content>\n }\n</article>\n\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i2.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniArticleComponent, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNIArticleComponent, decorators: [{
37
37
  type: Component,
38
38
  args: [{ selector: 'uni-article', standalone: true, imports: [CommonModule, DxButtonModule, FaIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<article\n class=\"uni_article flex h-full flex-col rounded border-2 p-4\"\n [style.backgroundColor]=\"color() + '26'\"\n [style.borderColor]=\"color() + '33'\">\n <!-- Title -->\n @if (isHeader()) {\n <div class=\"uni_article_header flex items-center gap-4\" [ngClass]=\"{ 'mb-4': isOpen() }\">\n <!-- Icona nella testata, se presente -->\n @if (icon(); as icon) {\n <fa-icon class=\"uni-article-header-icon\" [icon]=\"icon\"></fa-icon>\n }\n\n <!-- Titolo nella testata, se presente -->\n @if (title(); as title) {\n <h5 class=\"uni_article_header_title truncate uppercase\">{{ title }}</h5>\n }\n\n <!-- Bottone per aprire/chiudere l'articolo, se presente -->\n @if (headerCloseButton()) {\n <dx-button\n class=\"uni_article_header_button ml-auto\"\n [icon]=\"isOpen() ? 'close' : 'expandform'\"\n (onClick)=\"toggleIsOpen()\">\n </dx-button>\n }\n </div>\n }\n\n <!-- Contenuto dell'articolo, visibile solo se aperto -->\n @if (isOpen()) {\n <ng-content></ng-content>\n }\n</article>\n\n", styles: [":host{display:block}\n"] }]
39
39
  }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pLWFydGljbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pLWNvbXBvbmVudC10dy9zcmMvbGliL3VuaS1hcnRpY2xlL3VuaS1hcnRpY2xlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaS1jb21wb25lbnQtdHcvc3JjL2xpYi91bmktYXJ0aWNsZS91bmktYXJ0aWNsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQVduRSxNQUFNLE9BQU8sbUJBQW1CO0lBUmhDO1FBU0UsWUFBWTtRQUNILFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUMsQ0FBQywrQkFBK0I7UUFDakUsVUFBSyxHQUFHLEtBQUssRUFBVSxDQUFDLENBQUMsaUNBQWlDO1FBQzFELFNBQUksR0FBRyxLQUFLLEVBQWtCLENBQUMsQ0FBQyxxQ0FBcUM7UUFDckUsY0FBUyxHQUFHLEtBQUssRUFBdUIsQ0FBQyxDQUFDLDZCQUE2QjtRQUN2RSxzQkFBaUIsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyw2Q0FBNkM7UUFFakcsZUFBZTtRQUNmLFdBQU0sR0FBRyxNQUFNLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDL0IsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7S0FnQnBGO0lBZEMsd0VBQXdFO0lBQ3hFLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQzlCLGtFQUFrRTtRQUNsRSxJQUFJLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoRixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxnRUFBZ0U7SUFDdEQsWUFBWTtRQUNwQix3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs4R0F6QlUsbUJBQW1CO2tHQUFuQixtQkFBbUIsNHVCQ3RCaEMsdWxDQWtDQSwrRURqQlksWUFBWSw0SEFBRSxjQUFjLHMwQkFBRSxlQUFlOzsyRkFLNUMsbUJBQW1CO2tCQVIvQixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQyxtQkFHdkMsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIGNvbXB1dGVkLFxyXG4gIGlucHV0LFxyXG4gIHNpZ25hbCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHhCdXR0b25Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xyXG5pbXBvcnQgeyBJY29uRGVmaW5pdGlvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VuaS1hcnRpY2xlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIER4QnV0dG9uTW9kdWxlLCBGYUljb25Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91bmktYXJ0aWNsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdW5pLWFydGljbGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVuaUFydGljbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIC8qIElucHV0cyAqL1xyXG4gIHJlYWRvbmx5IGNvbG9yID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpOyAvLyBDb2xvcmUgZGkgYmFzZSBkZWxsJ2FydGljb2xvXHJcbiAgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7IC8vIFRpdG9sbyBvcHppb25hbGUgZGVsbCdhcnRpY29sb1xyXG4gIHJlYWRvbmx5IGljb24gPSBpbnB1dDxJY29uRGVmaW5pdGlvbj4oKTsgLy8gSWNvbmEgb3B6aW9uYWxlIHBlciBsJ2ludGVzdGF6aW9uZVxyXG4gIHJlYWRvbmx5IHNldElzT3BlbiA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7IC8vIFN0YXRvIGluaXppYWxlIGRpIGFwZXJ0dXJhXHJcbiAgcmVhZG9ubHkgaGVhZGVyQ2xvc2VCdXR0b24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7IC8vIFNlIG1vc3RyYXJlIGlsIGJ1dHRvbiBwZXIgY2hpdWRlcmUgYXJ0aWNsZVxyXG5cclxuICAvKiBWYXJpYWJsZXMgKi9cclxuICBpc09wZW4gPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgaXNIZWFkZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmljb24oKSB8fCB0aGlzLnRpdGxlKCkgfHwgdGhpcy5oZWFkZXJDbG9zZUJ1dHRvbigpKTtcclxuXHJcbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTGlmZWN5Y2xlIEhvb2sgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBzZXRJc09wZW4gfSA9IGNoYW5nZXM7XHJcbiAgICAvLyBWZXJpZmljYSBzZSAnc2V0SXNPcGVuJyDDqCBjYW1iaWF0byBlIG5vbiDDqCBpbCBwcmltbyBjYW1iaWFtZW50b1xyXG4gICAgaWYgKHNldElzT3BlbiAmJiAhc2V0SXNPcGVuLmZpcnN0Q2hhbmdlICYmIHNldElzT3Blbi5jdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmlzT3Blbi5zZXQoc2V0SXNPcGVuLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNZXRvZGkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgcHJvdGVjdGVkIHRvZ2dsZUlzT3BlbigpOiB2b2lkIHtcclxuICAgIC8vIEludmVydGUgbG8gc3RhdG8gZGkgYXBlcnR1cmEvY2hpdXN1cmFcclxuICAgIHRoaXMuaXNPcGVuLnVwZGF0ZSgodmFsKSA9PiAhdmFsKTtcclxuICB9XHJcbn1cclxuIiwiPGFydGljbGVcbiAgY2xhc3M9XCJ1bmlfYXJ0aWNsZSBmbGV4IGgtZnVsbCBmbGV4LWNvbCByb3VuZGVkIGJvcmRlci0yIHAtNFwiXG4gIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY29sb3IoKSArICcyNidcIlxuICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiY29sb3IoKSArICczMydcIj5cbiAgPCEtLSBUaXRsZSAtLT5cbiAgQGlmIChpc0hlYWRlcigpKSB7XG4gICAgPGRpdiBjbGFzcz1cInVuaV9hcnRpY2xlX2hlYWRlciBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiIFtuZ0NsYXNzXT1cInsgJ21iLTQnOiBpc09wZW4oKSB9XCI+XG4gICAgICA8IS0tIEljb25hIG5lbGxhIHRlc3RhdGEsIHNlIHByZXNlbnRlIC0tPlxuICAgICAgQGlmIChpY29uKCk7IGFzIGljb24pIHtcbiAgICAgICAgPGZhLWljb24gY2xhc3M9XCJ1bmktYXJ0aWNsZS1oZWFkZXItaWNvblwiIFtpY29uXT1cImljb25cIj48L2ZhLWljb24+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gVGl0b2xvIG5lbGxhIHRlc3RhdGEsIHNlIHByZXNlbnRlIC0tPlxuICAgICAgQGlmICh0aXRsZSgpOyBhcyB0aXRsZSkge1xuICAgICAgICA8aDUgY2xhc3M9XCJ1bmlfYXJ0aWNsZV9oZWFkZXJfdGl0bGUgdHJ1bmNhdGUgdXBwZXJjYXNlXCI+e3sgdGl0bGUgfX08L2g1PlxuICAgICAgfVxuXG4gICAgICA8IS0tIEJvdHRvbmUgcGVyIGFwcmlyZS9jaGl1ZGVyZSBsJ2FydGljb2xvLCBzZSBwcmVzZW50ZSAtLT5cbiAgICAgIEBpZiAoaGVhZGVyQ2xvc2VCdXR0b24oKSkge1xuICAgICAgICA8ZHgtYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJ1bmlfYXJ0aWNsZV9oZWFkZXJfYnV0dG9uIG1sLWF1dG9cIlxuICAgICAgICAgIFtpY29uXT1cImlzT3BlbigpID8gJ2Nsb3NlJyA6ICdleHBhbmRmb3JtJ1wiXG4gICAgICAgICAgKG9uQ2xpY2spPVwidG9nZ2xlSXNPcGVuKClcIj5cbiAgICAgICAgPC9keC1idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cblxuICA8IS0tIENvbnRlbnV0byBkZWxsJ2FydGljb2xvLCB2aXNpYmlsZSBzb2xvIHNlIGFwZXJ0byAtLT5cbiAgQGlmIChpc09wZW4oKSkge1xuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgfVxuPC9hcnRpY2xlPlxuXG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pLWFydGljbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdW5pLWNvbXBvbmVudC10dy9zcmMvbGliL3VuaS1hcnRpY2xlL3VuaS1hcnRpY2xlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaS1jb21wb25lbnQtdHcvc3JjL2xpYi91bmktYXJ0aWNsZS91bmktYXJ0aWNsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7OztBQVduRSxNQUFNLE9BQU8sbUJBQW1CO0lBUmhDO1FBU0UsWUFBWTtRQUNILFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUMsQ0FBQywrQkFBK0I7UUFDakUsVUFBSyxHQUFHLEtBQUssRUFBVSxDQUFDLENBQUMsaUNBQWlDO1FBQzFELFNBQUksR0FBRyxLQUFLLEVBQWtCLENBQUMsQ0FBQyxxQ0FBcUM7UUFDckUsY0FBUyxHQUFHLEtBQUssRUFBdUIsQ0FBQyxDQUFDLDZCQUE2QjtRQUN2RSxzQkFBaUIsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyw2Q0FBNkM7UUFFakcsZUFBZTtRQUNmLFdBQU0sR0FBRyxNQUFNLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDL0IsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7S0FnQnBGO0lBZEMsd0VBQXdFO0lBQ3hFLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQzlCLGtFQUFrRTtRQUNsRSxJQUFJLFNBQVMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoRixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsQ0FBQztJQUNILENBQUM7SUFFRCxnRUFBZ0U7SUFDdEQsWUFBWTtRQUNwQix3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQzs4R0F6QlUsbUJBQW1CO2tHQUFuQixtQkFBbUIsNHVCQ3RCaEMsdWxDQWtDQSwrRURqQlksWUFBWSw0SEFBRSxjQUFjLHMwQkFBRSxlQUFlOzsyRkFLNUMsbUJBQW1CO2tCQVIvQixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGVBQWUsQ0FBQyxtQkFHdkMsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIGNvbXB1dGVkLFxyXG4gIGlucHV0LFxyXG4gIHNpZ25hbCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIE9uQ2hhbmdlcyxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHhCdXR0b25Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgRmFJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xyXG5pbXBvcnQgeyBJY29uRGVmaW5pdGlvbiB9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VuaS1hcnRpY2xlJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIER4QnV0dG9uTW9kdWxlLCBGYUljb25Db21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91bmktYXJ0aWNsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdW5pLWFydGljbGUuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFVOSUFydGljbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIC8qIElucHV0cyAqL1xyXG4gIHJlYWRvbmx5IGNvbG9yID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpOyAvLyBDb2xvcmUgZGkgYmFzZSBkZWxsJ2FydGljb2xvXHJcbiAgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7IC8vIFRpdG9sbyBvcHppb25hbGUgZGVsbCdhcnRpY29sb1xyXG4gIHJlYWRvbmx5IGljb24gPSBpbnB1dDxJY29uRGVmaW5pdGlvbj4oKTsgLy8gSWNvbmEgb3B6aW9uYWxlIHBlciBsJ2ludGVzdGF6aW9uZVxyXG4gIHJlYWRvbmx5IHNldElzT3BlbiA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7IC8vIFN0YXRvIGluaXppYWxlIGRpIGFwZXJ0dXJhXHJcbiAgcmVhZG9ubHkgaGVhZGVyQ2xvc2VCdXR0b24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7IC8vIFNlIG1vc3RyYXJlIGlsIGJ1dHRvbiBwZXIgY2hpdWRlcmUgYXJ0aWNsZVxyXG5cclxuICAvKiBWYXJpYWJsZXMgKi9cclxuICBpc09wZW4gPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgaXNIZWFkZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmljb24oKSB8fCB0aGlzLnRpdGxlKCkgfHwgdGhpcy5oZWFkZXJDbG9zZUJ1dHRvbigpKTtcclxuXHJcbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTGlmZWN5Y2xlIEhvb2sgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBzZXRJc09wZW4gfSA9IGNoYW5nZXM7XHJcbiAgICAvLyBWZXJpZmljYSBzZSAnc2V0SXNPcGVuJyDDqCBjYW1iaWF0byBlIG5vbiDDqCBpbCBwcmltbyBjYW1iaWFtZW50b1xyXG4gICAgaWYgKHNldElzT3BlbiAmJiAhc2V0SXNPcGVuLmZpcnN0Q2hhbmdlICYmIHNldElzT3Blbi5jdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmlzT3Blbi5zZXQoc2V0SXNPcGVuLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNZXRvZGkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXHJcbiAgcHJvdGVjdGVkIHRvZ2dsZUlzT3BlbigpOiB2b2lkIHtcclxuICAgIC8vIEludmVydGUgbG8gc3RhdG8gZGkgYXBlcnR1cmEvY2hpdXN1cmFcclxuICAgIHRoaXMuaXNPcGVuLnVwZGF0ZSgodmFsKSA9PiAhdmFsKTtcclxuICB9XHJcbn1cclxuIiwiPGFydGljbGVcbiAgY2xhc3M9XCJ1bmlfYXJ0aWNsZSBmbGV4IGgtZnVsbCBmbGV4LWNvbCByb3VuZGVkIGJvcmRlci0yIHAtNFwiXG4gIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwiY29sb3IoKSArICcyNidcIlxuICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwiY29sb3IoKSArICczMydcIj5cbiAgPCEtLSBUaXRsZSAtLT5cbiAgQGlmIChpc0hlYWRlcigpKSB7XG4gICAgPGRpdiBjbGFzcz1cInVuaV9hcnRpY2xlX2hlYWRlciBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiIFtuZ0NsYXNzXT1cInsgJ21iLTQnOiBpc09wZW4oKSB9XCI+XG4gICAgICA8IS0tIEljb25hIG5lbGxhIHRlc3RhdGEsIHNlIHByZXNlbnRlIC0tPlxuICAgICAgQGlmIChpY29uKCk7IGFzIGljb24pIHtcbiAgICAgICAgPGZhLWljb24gY2xhc3M9XCJ1bmktYXJ0aWNsZS1oZWFkZXItaWNvblwiIFtpY29uXT1cImljb25cIj48L2ZhLWljb24+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gVGl0b2xvIG5lbGxhIHRlc3RhdGEsIHNlIHByZXNlbnRlIC0tPlxuICAgICAgQGlmICh0aXRsZSgpOyBhcyB0aXRsZSkge1xuICAgICAgICA8aDUgY2xhc3M9XCJ1bmlfYXJ0aWNsZV9oZWFkZXJfdGl0bGUgdHJ1bmNhdGUgdXBwZXJjYXNlXCI+e3sgdGl0bGUgfX08L2g1PlxuICAgICAgfVxuXG4gICAgICA8IS0tIEJvdHRvbmUgcGVyIGFwcmlyZS9jaGl1ZGVyZSBsJ2FydGljb2xvLCBzZSBwcmVzZW50ZSAtLT5cbiAgICAgIEBpZiAoaGVhZGVyQ2xvc2VCdXR0b24oKSkge1xuICAgICAgICA8ZHgtYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJ1bmlfYXJ0aWNsZV9oZWFkZXJfYnV0dG9uIG1sLWF1dG9cIlxuICAgICAgICAgIFtpY29uXT1cImlzT3BlbigpID8gJ2Nsb3NlJyA6ICdleHBhbmRmb3JtJ1wiXG4gICAgICAgICAgKG9uQ2xpY2spPVwidG9nZ2xlSXNPcGVuKClcIj5cbiAgICAgICAgPC9keC1idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH1cblxuICA8IS0tIENvbnRlbnV0byBkZWxsJ2FydGljb2xvLCB2aXNpYmlsZSBzb2xvIHNlIGFwZXJ0byAtLT5cbiAgQGlmIChpc09wZW4oKSkge1xuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgfVxuPC9hcnRpY2xlPlxuXG4iXX0=
@@ -3,7 +3,7 @@ import { ChangeDetectionStrategy, Component, input, output } from '@angular/core
3
3
  import { DxButtonModule } from 'devextreme-angular/ui/button';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "devextreme-angular/ui/button";
6
- export class UniHeaderComponent {
6
+ export class UNIHeaderComponent {
7
7
  constructor() {
8
8
  /* Input */
9
9
  this.title = input.required();
@@ -14,11 +14,11 @@ export class UniHeaderComponent {
14
14
  /* Output */
15
15
  this.evtToggleMenu = output();
16
16
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UniHeaderComponent, isStandalone: true, selector: "uni-header", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, version: { classPropertyName: "version", publicName: "version", isSignal: true, isRequired: true, transformFunction: null }, pathBrandLogo: { classPropertyName: "pathBrandLogo", publicName: "pathBrandLogo", isSignal: true, isRequired: true, transformFunction: null }, pathAppLogo: { classPropertyName: "pathAppLogo", publicName: "pathAppLogo", isSignal: true, isRequired: false, transformFunction: null }, sideMenu: { classPropertyName: "sideMenu", publicName: "sideMenu", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { evtToggleMenu: "evtToggleMenu" }, ngImport: i0, template: "<header id=\"uni-header\">\n <div>\n <!-- app logo -->\n @if (pathAppLogo(); as pathAppLogo) {\n <img id=\"header-img-app\" [src]=\"pathAppLogo\" alt=\"App logo\" />\n }\n\n <!-- info -->\n <div id=\"header-info\">\n <p>{{ title() }}</p>\n <p>{{ version() }}</p>\n </div>\n\n <!-- brand logo -->\n <img id=\"header-img-brand\" [src]=\"pathBrandLogo()\" alt=\"Brand logo\" />\n\n <!-- button menu -->\n @if (sideMenu()) {\n <dx-button [icon]=\"'menu'\" (onClick)=\"evtToggleMenu.emit(true)\"></dx-button>\n }\n </div>\n</header>\n\n", styles: [":host{display:block}#uni-header{position:fixed;top:0;left:0;height:calc(60px + var(--padding-m));width:100%;padding:var(--padding-m);background-color:#36363f;overflow:hidden;z-index:999}#uni-header>div{display:grid;grid-template-rows:1fr;grid-template-columns:40px 1fr auto min-content;align-items:center;gap:1rem;padding:calc(var(--padding-m) / 2);background-color:#52525b99;border-radius:.25rem;box-shadow:#00000059 0 5px 5px}#uni-header>div #header-info{display:flex;flex-direction:column;justify-content:center;text-wrap:nowrap}#uni-header>div #header-info p:first-child{font-size:20px;line-height:28px;font-weight:500;text-transform:uppercase}#uni-header>div #header-info p:last-child{font-size:12px;line-height:12px;opacity:.65}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:40px;object-fit:contain}@media (max-resolution: 1dppx){#uni-header>div{grid-template-columns:30px 1fr auto min-content}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:31px}#uni-header>div #header-info p:first-child{font-size:16px;line-height:21px}#uni-header>div #header-info p:last-child{font-size:10px;line-height:10px}}::ng-deep .theme-light #uni-header{background-color:#0284c70d}::ng-deep .theme-light #uni-header>div{background-color:#0284c799!important;box-shadow:#0284c759 0 5px 5px!important}::ng-deep .theme-light #uni-header>div,::ng-deep .theme-light #uni-header>div i:before{color:#fff}:host ::ng-deep .dx-button{height:23px;min-width:23px;background-color:transparent}:host ::ng-deep .dx-button .dx-icon{font-size:23px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i1.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNIHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UNIHeaderComponent, isStandalone: true, selector: "uni-header", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, version: { classPropertyName: "version", publicName: "version", isSignal: true, isRequired: true, transformFunction: null }, pathBrandLogo: { classPropertyName: "pathBrandLogo", publicName: "pathBrandLogo", isSignal: true, isRequired: true, transformFunction: null }, pathAppLogo: { classPropertyName: "pathAppLogo", publicName: "pathAppLogo", isSignal: true, isRequired: false, transformFunction: null }, sideMenu: { classPropertyName: "sideMenu", publicName: "sideMenu", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { evtToggleMenu: "evtToggleMenu" }, ngImport: i0, template: "<header id=\"uni-header\">\n <div>\n <!-- app logo -->\n @if (pathAppLogo(); as pathAppLogo) {\n <img id=\"header-img-app\" [src]=\"pathAppLogo\" alt=\"App logo\" />\n }\n\n <!-- info -->\n <div id=\"header-info\">\n <p>{{ title() }}</p>\n <p>{{ version() }}</p>\n </div>\n\n <!-- brand logo -->\n <img id=\"header-img-brand\" [src]=\"pathBrandLogo()\" alt=\"Brand logo\" />\n\n <!-- button menu -->\n @if (sideMenu()) {\n <dx-button [icon]=\"'menu'\" (onClick)=\"evtToggleMenu.emit(true)\"></dx-button>\n }\n </div>\n</header>\n\n", styles: [":host{display:block}#uni-header{position:fixed;top:0;left:0;height:calc(60px + var(--padding-m));width:100%;padding:var(--padding-m);background-color:#36363f;overflow:hidden;z-index:999}#uni-header>div{display:grid;grid-template-rows:1fr;grid-template-columns:40px 1fr auto min-content;align-items:center;gap:1rem;padding:calc(var(--padding-m) / 2);background-color:#52525b99;border-radius:.25rem;box-shadow:#00000059 0 5px 5px}#uni-header>div #header-info{display:flex;flex-direction:column;justify-content:center;text-wrap:nowrap}#uni-header>div #header-info p:first-child{font-size:20px;line-height:28px;font-weight:500;text-transform:uppercase}#uni-header>div #header-info p:last-child{font-size:12px;line-height:12px;opacity:.65}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:40px;object-fit:contain}@media (max-resolution: 1dppx){#uni-header>div{grid-template-columns:30px 1fr auto min-content}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:31px}#uni-header>div #header-info p:first-child{font-size:16px;line-height:21px}#uni-header>div #header-info p:last-child{font-size:10px;line-height:10px}}::ng-deep .theme-light #uni-header{background-color:#0284c70d}::ng-deep .theme-light #uni-header>div{background-color:#0284c799!important;box-shadow:#0284c759 0 5px 5px!important}::ng-deep .theme-light #uni-header>div,::ng-deep .theme-light #uni-header>div i:before{color:#fff}:host ::ng-deep .dx-button{height:23px;min-width:23px;background-color:transparent}:host ::ng-deep .dx-button .dx-icon{font-size:23px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i1.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniHeaderComponent, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNIHeaderComponent, decorators: [{
21
21
  type: Component,
22
22
  args: [{ selector: 'uni-header', standalone: true, imports: [CommonModule, DxButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<header id=\"uni-header\">\n <div>\n <!-- app logo -->\n @if (pathAppLogo(); as pathAppLogo) {\n <img id=\"header-img-app\" [src]=\"pathAppLogo\" alt=\"App logo\" />\n }\n\n <!-- info -->\n <div id=\"header-info\">\n <p>{{ title() }}</p>\n <p>{{ version() }}</p>\n </div>\n\n <!-- brand logo -->\n <img id=\"header-img-brand\" [src]=\"pathBrandLogo()\" alt=\"Brand logo\" />\n\n <!-- button menu -->\n @if (sideMenu()) {\n <dx-button [icon]=\"'menu'\" (onClick)=\"evtToggleMenu.emit(true)\"></dx-button>\n }\n </div>\n</header>\n\n", styles: [":host{display:block}#uni-header{position:fixed;top:0;left:0;height:calc(60px + var(--padding-m));width:100%;padding:var(--padding-m);background-color:#36363f;overflow:hidden;z-index:999}#uni-header>div{display:grid;grid-template-rows:1fr;grid-template-columns:40px 1fr auto min-content;align-items:center;gap:1rem;padding:calc(var(--padding-m) / 2);background-color:#52525b99;border-radius:.25rem;box-shadow:#00000059 0 5px 5px}#uni-header>div #header-info{display:flex;flex-direction:column;justify-content:center;text-wrap:nowrap}#uni-header>div #header-info p:first-child{font-size:20px;line-height:28px;font-weight:500;text-transform:uppercase}#uni-header>div #header-info p:last-child{font-size:12px;line-height:12px;opacity:.65}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:40px;object-fit:contain}@media (max-resolution: 1dppx){#uni-header>div{grid-template-columns:30px 1fr auto min-content}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:31px}#uni-header>div #header-info p:first-child{font-size:16px;line-height:21px}#uni-header>div #header-info p:last-child{font-size:10px;line-height:10px}}::ng-deep .theme-light #uni-header{background-color:#0284c70d}::ng-deep .theme-light #uni-header>div{background-color:#0284c799!important;box-shadow:#0284c759 0 5px 5px!important}::ng-deep .theme-light #uni-header>div,::ng-deep .theme-light #uni-header>div i:before{color:#fff}:host ::ng-deep .dx-button{height:23px;min-width:23px;background-color:transparent}:host ::ng-deep .dx-button .dx-icon{font-size:23px}\n"] }]
23
23
  }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmktY29tcG9uZW50LXR3L3NyYy9saWIvdW5pLWhlYWRlci91bmktaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaS1jb21wb25lbnQtdHcvc3JjL2xpYi91bmktaGVhZGVyL3VuaS1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQVU5RCxNQUFNLE9BQU8sa0JBQWtCO0lBUi9CO1FBU0UsV0FBVztRQUNYLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDakMsWUFBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUN6QyxnQkFBVyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7UUFDbkQsYUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVqQyxZQUFZO1FBQ1osa0JBQWEsR0FBRyxNQUFNLEVBQVEsQ0FBQztLQUNoQzs4R0FWWSxrQkFBa0I7a0dBQWxCLGtCQUFrQiw2d0JDWi9CLGdsQkF1QkEsd2xERGhCWSxZQUFZLDhCQUFFLGNBQWM7OzJGQUszQixrQkFBa0I7a0JBUjlCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsbUJBR3RCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IER4QnV0dG9uTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL2J1dHRvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VuaS1oZWFkZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHhCdXR0b25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91bmktaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91bmktaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVbmlIZWFkZXJDb21wb25lbnQge1xyXG4gIC8qIElucHV0ICovXHJcbiAgdGl0bGUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcbiAgdmVyc2lvbiA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcclxuICBwYXRoQnJhbmRMb2dvID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xyXG4gIHBhdGhBcHBMb2dvID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIHNpZGVNZW51ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvKiBPdXRwdXQgKi9cclxuICBldnRUb2dnbGVNZW51ID0gb3V0cHV0PHRydWU+KCk7XHJcbn1cclxuIiwiPGhlYWRlciBpZD1cInVuaS1oZWFkZXJcIj5cbiAgPGRpdj5cbiAgICA8IS0tIGFwcCBsb2dvICAtLT5cbiAgICBAaWYgKHBhdGhBcHBMb2dvKCk7IGFzIHBhdGhBcHBMb2dvKSB7XG4gICAgICA8aW1nIGlkPVwiaGVhZGVyLWltZy1hcHBcIiBbc3JjXT1cInBhdGhBcHBMb2dvXCIgYWx0PVwiQXBwIGxvZ29cIiAvPlxuICAgIH1cblxuICAgIDwhLS0gaW5mbyAgLS0+XG4gICAgPGRpdiBpZD1cImhlYWRlci1pbmZvXCI+XG4gICAgICA8cD57eyB0aXRsZSgpIH19PC9wPlxuICAgICAgPHA+e3sgdmVyc2lvbigpIH19PC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBicmFuZCBsb2dvICAtLT5cbiAgICA8aW1nIGlkPVwiaGVhZGVyLWltZy1icmFuZFwiIFtzcmNdPVwicGF0aEJyYW5kTG9nbygpXCIgYWx0PVwiQnJhbmQgbG9nb1wiIC8+XG5cbiAgICA8IS0tIGJ1dHRvbiBtZW51ICAtLT5cbiAgICBAaWYgKHNpZGVNZW51KCkpIHtcbiAgICAgIDxkeC1idXR0b24gW2ljb25dPVwiJ21lbnUnXCIgKG9uQ2xpY2spPVwiZXZ0VG9nZ2xlTWVudS5lbWl0KHRydWUpXCI+PC9keC1idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cbjwvaGVhZGVyPlxuXG4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91bmktY29tcG9uZW50LXR3L3NyYy9saWIvdW5pLWhlYWRlci91bmktaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaS1jb21wb25lbnQtdHcvc3JjL2xpYi91bmktaGVhZGVyL3VuaS1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQVU5RCxNQUFNLE9BQU8sa0JBQWtCO0lBUi9CO1FBU0UsV0FBVztRQUNYLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDakMsWUFBTyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVUsQ0FBQztRQUN6QyxnQkFBVyxHQUFHLEtBQUssQ0FBcUIsU0FBUyxDQUFDLENBQUM7UUFDbkQsYUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVqQyxZQUFZO1FBQ1osa0JBQWEsR0FBRyxNQUFNLEVBQVEsQ0FBQztLQUNoQzs4R0FWWSxrQkFBa0I7a0dBQWxCLGtCQUFrQiw2d0JDWi9CLGdsQkF1QkEsd2xERGhCWSxZQUFZLDhCQUFFLGNBQWM7OzJGQUszQixrQkFBa0I7a0JBUjlCLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsbUJBR3RCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IER4QnV0dG9uTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL2J1dHRvbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3VuaS1oZWFkZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHhCdXR0b25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91bmktaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi91bmktaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBVTklIZWFkZXJDb21wb25lbnQge1xyXG4gIC8qIElucHV0ICovXHJcbiAgdGl0bGUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcbiAgdmVyc2lvbiA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcclxuICBwYXRoQnJhbmRMb2dvID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xyXG4gIHBhdGhBcHBMb2dvID0gaW5wdXQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIHNpZGVNZW51ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICAvKiBPdXRwdXQgKi9cclxuICBldnRUb2dnbGVNZW51ID0gb3V0cHV0PHRydWU+KCk7XHJcbn1cclxuIiwiPGhlYWRlciBpZD1cInVuaS1oZWFkZXJcIj5cbiAgPGRpdj5cbiAgICA8IS0tIGFwcCBsb2dvICAtLT5cbiAgICBAaWYgKHBhdGhBcHBMb2dvKCk7IGFzIHBhdGhBcHBMb2dvKSB7XG4gICAgICA8aW1nIGlkPVwiaGVhZGVyLWltZy1hcHBcIiBbc3JjXT1cInBhdGhBcHBMb2dvXCIgYWx0PVwiQXBwIGxvZ29cIiAvPlxuICAgIH1cblxuICAgIDwhLS0gaW5mbyAgLS0+XG4gICAgPGRpdiBpZD1cImhlYWRlci1pbmZvXCI+XG4gICAgICA8cD57eyB0aXRsZSgpIH19PC9wPlxuICAgICAgPHA+e3sgdmVyc2lvbigpIH19PC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBicmFuZCBsb2dvICAtLT5cbiAgICA8aW1nIGlkPVwiaGVhZGVyLWltZy1icmFuZFwiIFtzcmNdPVwicGF0aEJyYW5kTG9nbygpXCIgYWx0PVwiQnJhbmQgbG9nb1wiIC8+XG5cbiAgICA8IS0tIGJ1dHRvbiBtZW51ICAtLT5cbiAgICBAaWYgKHNpZGVNZW51KCkpIHtcbiAgICAgIDxkeC1idXR0b24gW2ljb25dPVwiJ21lbnUnXCIgKG9uQ2xpY2spPVwiZXZ0VG9nZ2xlTWVudS5lbWl0KHRydWUpXCI+PC9keC1idXR0b24+XG4gICAgfVxuICA8L2Rpdj5cbjwvaGVhZGVyPlxuXG4iXX0=
@@ -11,7 +11,7 @@ import * as i0 from "@angular/core";
11
11
  import * as i1 from "devextreme-angular";
12
12
  import * as i2 from "@angular/forms";
13
13
  import * as i3 from "devextreme-angular/ui/button";
14
- export class UniLoginModalComponent {
14
+ export class UNILoginModalComponent {
15
15
  constructor() {
16
16
  /* Service */
17
17
  this.router = inject(Router);
@@ -43,11 +43,11 @@ export class UniLoginModalComponent {
43
43
  if (this.enableGoBack())
44
44
  this.location.back();
45
45
  }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniLoginModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
47
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UniLoginModalComponent, isStandalone: true, selector: "uni-login-modal", inputs: { visibile: { classPropertyName: "visibile", publicName: "visibile", isSignal: true, isRequired: false, transformFunction: null }, routeHome: { classPropertyName: "routeHome", publicName: "routeHome", isSignal: true, isRequired: false, transformFunction: null }, enableGoBack: { classPropertyName: "enableGoBack", publicName: "enableGoBack", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<dx-popup\n[wrapperAttr]=\"{ id: 'loginPopup' }\"\n[width]=\"'40%'\"\n[minWidth]=\"400\"\n[maxWidth]=\"700\"\n[height]=\"500\"\n[visible]=\"visibile()\"\n[showTitle]=\"true\"\n[title]=\"'Login'\"\n[dragEnabled]=\"false\"\n[showCloseButton]=\"true\"\n[hideOnOutsideClick]=\"false\"\n(onHiding)=\"onHiding()\">\n<section>\n <img src=\"../../../assets/images/logo/logo_trasparente.png\" alt=\"Logo\" />\n <p>UNITEC</p>\n @if (authService.user(); as user) {\n <div>Utente: {{ user.username }}</div>\n <dx-button\n id=\"logoutButton\"\n stylingMode=\"contained\"\n [text]=\"'Logout'\"\n (onClick)=\"logout()\"></dx-button>\n } @else {\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\n <dx-text-box\n [placeholder]=\"'User'\"\n stylingMode=\"outlined\"\n formControlName=\"username\"\n [inputAttr]=\"{ 'aria-label': 'User' }\"></dx-text-box>\n <dx-text-box\n [placeholder]=\"'Password'\"\n mode=\"password\"\n stylingMode=\"outlined\"\n formControlName=\"password\"\n [inputAttr]=\"{ 'aria-label': 'Password' }\"></dx-text-box>\n <dx-button\n id=\"loginSubmitButton\"\n stylingMode=\"contained\"\n [text]=\"'Login'\"\n [useSubmitBehavior]=\"true\"\n [disabled]=\"loginForm.invalid\"></dx-button>\n </form>\n }\n</section>\n</dx-popup>\n", styles: [":host{display:block}::ng-deep #loginPopup .dx-popup-content{display:flex;justify-content:center;align-items:center}section{width:60%;display:flex;align-items:center;flex-direction:column;gap:1.5rem}img{height:8rem}form{width:100%;display:flex;flex-direction:column;gap:1rem}form dx-button{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxPopupModule }, { kind: "component", type: i1.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "enableBodyScroll", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "enableBodyScrollChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: DxTextBoxModule }, { kind: "component", type: i1.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i3.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNILoginModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
47
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UNILoginModalComponent, isStandalone: true, selector: "uni-login-modal", inputs: { visibile: { classPropertyName: "visibile", publicName: "visibile", isSignal: true, isRequired: false, transformFunction: null }, routeHome: { classPropertyName: "routeHome", publicName: "routeHome", isSignal: true, isRequired: false, transformFunction: null }, enableGoBack: { classPropertyName: "enableGoBack", publicName: "enableGoBack", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<dx-popup\n[wrapperAttr]=\"{ id: 'loginPopup' }\"\n[width]=\"'40%'\"\n[minWidth]=\"400\"\n[maxWidth]=\"700\"\n[height]=\"500\"\n[visible]=\"visibile()\"\n[showTitle]=\"true\"\n[title]=\"'Login'\"\n[dragEnabled]=\"false\"\n[showCloseButton]=\"true\"\n[hideOnOutsideClick]=\"false\"\n(onHiding)=\"onHiding()\">\n<section>\n <img src=\"../../../assets/images/logo/logo_trasparente.png\" alt=\"Logo\" />\n <p>UNITEC</p>\n @if (authService.user(); as user) {\n <div>Utente: {{ user.username }}</div>\n <dx-button\n id=\"logoutButton\"\n stylingMode=\"contained\"\n [text]=\"'Logout'\"\n (onClick)=\"logout()\"></dx-button>\n } @else {\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\n <dx-text-box\n [placeholder]=\"'User'\"\n stylingMode=\"outlined\"\n formControlName=\"username\"\n [inputAttr]=\"{ 'aria-label': 'User' }\"></dx-text-box>\n <dx-text-box\n [placeholder]=\"'Password'\"\n mode=\"password\"\n stylingMode=\"outlined\"\n formControlName=\"password\"\n [inputAttr]=\"{ 'aria-label': 'Password' }\"></dx-text-box>\n <dx-button\n id=\"loginSubmitButton\"\n stylingMode=\"contained\"\n [text]=\"'Login'\"\n [useSubmitBehavior]=\"true\"\n [disabled]=\"loginForm.invalid\"></dx-button>\n </form>\n }\n</section>\n</dx-popup>\n", styles: [":host{display:block}::ng-deep #loginPopup .dx-popup-content{display:flex;justify-content:center;align-items:center}section{width:60%;display:flex;align-items:center;flex-direction:column;gap:1.5rem}img{height:8rem}form{width:100%;display:flex;flex-direction:column;gap:1rem}form dx-button{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxPopupModule }, { kind: "component", type: i1.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "enableBodyScroll", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "enableBodyScrollChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: DxTextBoxModule }, { kind: "component", type: i1.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i3.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
48
48
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniLoginModalComponent, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNILoginModalComponent, decorators: [{
50
50
  type: Component,
51
51
  args: [{ selector: 'uni-login-modal', standalone: true, imports: [CommonModule, DxPopupModule, ReactiveFormsModule, DxTextBoxModule, DxButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<dx-popup\n[wrapperAttr]=\"{ id: 'loginPopup' }\"\n[width]=\"'40%'\"\n[minWidth]=\"400\"\n[maxWidth]=\"700\"\n[height]=\"500\"\n[visible]=\"visibile()\"\n[showTitle]=\"true\"\n[title]=\"'Login'\"\n[dragEnabled]=\"false\"\n[showCloseButton]=\"true\"\n[hideOnOutsideClick]=\"false\"\n(onHiding)=\"onHiding()\">\n<section>\n <img src=\"../../../assets/images/logo/logo_trasparente.png\" alt=\"Logo\" />\n <p>UNITEC</p>\n @if (authService.user(); as user) {\n <div>Utente: {{ user.username }}</div>\n <dx-button\n id=\"logoutButton\"\n stylingMode=\"contained\"\n [text]=\"'Logout'\"\n (onClick)=\"logout()\"></dx-button>\n } @else {\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\n <dx-text-box\n [placeholder]=\"'User'\"\n stylingMode=\"outlined\"\n formControlName=\"username\"\n [inputAttr]=\"{ 'aria-label': 'User' }\"></dx-text-box>\n <dx-text-box\n [placeholder]=\"'Password'\"\n mode=\"password\"\n stylingMode=\"outlined\"\n formControlName=\"password\"\n [inputAttr]=\"{ 'aria-label': 'Password' }\"></dx-text-box>\n <dx-button\n id=\"loginSubmitButton\"\n stylingMode=\"contained\"\n [text]=\"'Login'\"\n [useSubmitBehavior]=\"true\"\n [disabled]=\"loginForm.invalid\"></dx-button>\n </form>\n }\n</section>\n</dx-popup>\n", styles: [":host{display:block}::ng-deep #loginPopup .dx-popup-content{display:flex;justify-content:center;align-items:center}section{width:60%;display:flex;align-items:center;flex-direction:column;gap:1.5rem}img{height:8rem}form{width:100%;display:flex;flex-direction:column;gap:1rem}form dx-button{width:100%}\n"] }]
52
52
  }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pLWxvZ2luLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaS1jb21wb25lbnQtdHcvc3JjL2xpYi91bmktbG9naW4tbW9kYWwvdW5pLWxvZ2luLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaS1jb21wb25lbnQtdHcvc3JjL2xpYi91bmktbG9naW4tbW9kYWwvdW5pLWxvZ2luLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7OztBQWU1RCxNQUFNLE9BQU8sc0JBQXNCO0lBUm5DO1FBU0UsYUFBYTtRQUNKLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUV4RCxvQkFBb0I7UUFDcEIsYUFBUSxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUNoQyxjQUFTLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDNUIsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7UUFFekMsVUFBVTtRQUNNLGNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBd0Q7WUFDL0YsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyRixRQUFRLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3RGLENBQUMsQ0FBQztLQWdCSjtJQWRDLCtEQUErRDtJQUN4RCxLQUFLO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbkUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hELENBQUM7OEdBaENVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLHdlQ3ZCbkMsZzNDQThDQSx1V0Q1QlksWUFBWSw4QkFBRSxhQUFhLDZuREFBRSxtQkFBbUIsNHJCQUFFLGVBQWUsNnNEQUFFLGNBQWM7OzJGQUtoRixzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLG1CQUczRSx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IER4QnV0dG9uTW9kdWxlLCBEeFBvcHVwTW9kdWxlLCBEeFRleHRCb3hNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBVTklBdXRoU2VydmljZSB9IGZyb20gJ3VuaS1zZXJ2aWNlL2F1dGgnO1xyXG5pbXBvcnQgeyBVTklUb2FzdFNlcnZpY2UgfSBmcm9tICd1bmktc2VydmljZS90b2FzdCc7XHJcbmltcG9ydCB7IFVOSVRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICd1bmktc2VydmljZS90cmFuc2xhdGUnO1xyXG5cclxuZXhwb3J0IHR5cGUgTG9naW5Gb3JtID0ge1xyXG4gIHVzZXJuYW1lOiBzdHJpbmc7XHJcbiAgcGFzc3dvcmQ6IHN0cmluZztcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndW5pLWxvZ2luLW1vZGFsJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIER4UG9wdXBNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIER4VGV4dEJveE1vZHVsZSwgRHhCdXR0b25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91bmktbG9naW4tbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VuaS1sb2dpbi1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVW5pTG9naW5Nb2RhbENvbXBvbmVudCB7XHJcbiAgLyogU2VydmljZSAqL1xyXG4gIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gIHJlYWRvbmx5IGxvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcclxuICByZWFkb25seSBhdXRoU2VydmljZSA9IGluamVjdChVTklBdXRoU2VydmljZSk7XHJcbiAgcmVhZG9ubHkgdG9hc3RTZXJ2aWNlID0gaW5qZWN0KFVOSVRvYXN0U2VydmljZSk7XHJcbiAgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChVTklUcmFuc2xhdGVTZXJ2aWNlKTtcclxuXHJcbiAgLyogSW5wdXQgJiBvdXRwdXQgKi9cclxuICB2aXNpYmlsZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHJvdXRlSG9tZSA9IGlucHV0PHN0cmluZz4oKTtcclxuICBlbmFibGVHb0JhY2sgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xyXG5cclxuICAvKiBGb3JtICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGxvZ2luRm9ybSA9IG5ldyBGb3JtR3JvdXA8eyBbSyBpbiBrZXlvZiBMb2dpbkZvcm1dOiBGb3JtQ29udHJvbDxMb2dpbkZvcm1bS10+IH0+KHtcclxuICAgIHVzZXJuYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUsIHZhbGlkYXRvcnM6IFZhbGlkYXRvcnMucmVxdWlyZWQgfSksXHJcbiAgICBwYXNzd29yZDogbmV3IEZvcm1Db250cm9sKCcnLCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JzLnJlcXVpcmVkIH0pLFxyXG4gIH0pO1xyXG5cclxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuICBwdWJsaWMgbG9naW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ2luJCh0aGlzLmxvZ2luRm9ybS5nZXRSYXdWYWx1ZSgpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5yb3V0ZUhvbWUoKSkgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucm91dGVIb21lXSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ291dCQoKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkhpZGluZygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmVuYWJsZUdvQmFjaygpKSB0aGlzLmxvY2F0aW9uLmJhY2soKTtcclxuICB9XHJcbn1cclxuIiwiPGR4LXBvcHVwXG5bd3JhcHBlckF0dHJdPVwieyBpZDogJ2xvZ2luUG9wdXAnIH1cIlxuW3dpZHRoXT1cIic0MCUnXCJcblttaW5XaWR0aF09XCI0MDBcIlxuW21heFdpZHRoXT1cIjcwMFwiXG5baGVpZ2h0XT1cIjUwMFwiXG5bdmlzaWJsZV09XCJ2aXNpYmlsZSgpXCJcbltzaG93VGl0bGVdPVwidHJ1ZVwiXG5bdGl0bGVdPVwiJ0xvZ2luJ1wiXG5bZHJhZ0VuYWJsZWRdPVwiZmFsc2VcIlxuW3Nob3dDbG9zZUJ1dHRvbl09XCJ0cnVlXCJcbltoaWRlT25PdXRzaWRlQ2xpY2tdPVwiZmFsc2VcIlxuKG9uSGlkaW5nKT1cIm9uSGlkaW5nKClcIj5cbjxzZWN0aW9uPlxuICA8aW1nIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvbG9nby9sb2dvX3RyYXNwYXJlbnRlLnBuZ1wiIGFsdD1cIkxvZ29cIiAvPlxuICA8cD5VTklURUM8L3A+XG4gIEBpZiAoYXV0aFNlcnZpY2UudXNlcigpOyBhcyB1c2VyKSB7XG4gICAgPGRpdj5VdGVudGU6IHt7IHVzZXIudXNlcm5hbWUgfX08L2Rpdj5cbiAgICA8ZHgtYnV0dG9uXG4gICAgICBpZD1cImxvZ291dEJ1dHRvblwiXG4gICAgICBzdHlsaW5nTW9kZT1cImNvbnRhaW5lZFwiXG4gICAgICBbdGV4dF09XCInTG9nb3V0J1wiXG4gICAgICAob25DbGljayk9XCJsb2dvdXQoKVwiPjwvZHgtYnV0dG9uPlxuICB9IEBlbHNlIHtcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImxvZ2luRm9ybVwiIChuZ1N1Ym1pdCk9XCJsb2dpbigpXCI+XG4gICAgICA8ZHgtdGV4dC1ib3hcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidVc2VyJ1wiXG4gICAgICAgIHN0eWxpbmdNb2RlPVwib3V0bGluZWRcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1c2VybmFtZVwiXG4gICAgICAgIFtpbnB1dEF0dHJdPVwieyAnYXJpYS1sYWJlbCc6ICdVc2VyJyB9XCI+PC9keC10ZXh0LWJveD5cbiAgICAgIDxkeC10ZXh0LWJveFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1Bhc3N3b3JkJ1wiXG4gICAgICAgIG1vZGU9XCJwYXNzd29yZFwiXG4gICAgICAgIHN0eWxpbmdNb2RlPVwib3V0bGluZWRcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiXG4gICAgICAgIFtpbnB1dEF0dHJdPVwieyAnYXJpYS1sYWJlbCc6ICdQYXNzd29yZCcgfVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICA8ZHgtYnV0dG9uXG4gICAgICAgIGlkPVwibG9naW5TdWJtaXRCdXR0b25cIlxuICAgICAgICBzdHlsaW5nTW9kZT1cImNvbnRhaW5lZFwiXG4gICAgICAgIFt0ZXh0XT1cIidMb2dpbidcIlxuICAgICAgICBbdXNlU3VibWl0QmVoYXZpb3JdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJsb2dpbkZvcm0uaW52YWxpZFwiPjwvZHgtYnV0dG9uPlxuICAgIDwvZm9ybT5cbiAgfVxuPC9zZWN0aW9uPlxuPC9keC1wb3B1cD5cbiJdfQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pLWxvZ2luLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaS1jb21wb25lbnQtdHcvc3JjL2xpYi91bmktbG9naW4tbW9kYWwvdW5pLWxvZ2luLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VuaS1jb21wb25lbnQtdHcvc3JjL2xpYi91bmktbG9naW4tbW9kYWwvdW5pLWxvZ2luLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7OztBQWU1RCxNQUFNLE9BQU8sc0JBQXNCO0lBUm5DO1FBU0UsYUFBYTtRQUNKLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUV4RCxvQkFBb0I7UUFDcEIsYUFBUSxHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUNoQyxjQUFTLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDNUIsaUJBQVksR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFXLENBQUM7UUFFekMsVUFBVTtRQUNNLGNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBd0Q7WUFDL0YsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyRixRQUFRLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3RGLENBQUMsQ0FBQztLQWdCSjtJQWRDLCtEQUErRDtJQUN4RCxLQUFLO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbkUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hELENBQUM7OEdBaENVLHNCQUFzQjtrR0FBdEIsc0JBQXNCLHdlQ3ZCbkMsZzNDQThDQSx1V0Q1QlksWUFBWSw4QkFBRSxhQUFhLDZuREFBRSxtQkFBbUIsNHJCQUFFLGVBQWUsNnNEQUFFLGNBQWM7OzJGQUtoRixzQkFBc0I7a0JBUmxDLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLG1CQUczRSx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IER4QnV0dG9uTW9kdWxlLCBEeFBvcHVwTW9kdWxlLCBEeFRleHRCb3hNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBVTklBdXRoU2VydmljZSB9IGZyb20gJ3VuaS1zZXJ2aWNlL2F1dGgnO1xyXG5pbXBvcnQgeyBVTklUb2FzdFNlcnZpY2UgfSBmcm9tICd1bmktc2VydmljZS90b2FzdCc7XHJcbmltcG9ydCB7IFVOSVRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICd1bmktc2VydmljZS90cmFuc2xhdGUnO1xyXG5cclxuZXhwb3J0IHR5cGUgTG9naW5Gb3JtID0ge1xyXG4gIHVzZXJuYW1lOiBzdHJpbmc7XHJcbiAgcGFzc3dvcmQ6IHN0cmluZztcclxufTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndW5pLWxvZ2luLW1vZGFsJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIER4UG9wdXBNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIER4VGV4dEJveE1vZHVsZSwgRHhCdXR0b25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi91bmktbG9naW4tbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3VuaS1sb2dpbi1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVU5JTG9naW5Nb2RhbENvbXBvbmVudCB7XHJcbiAgLyogU2VydmljZSAqL1xyXG4gIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG4gIHJlYWRvbmx5IGxvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcclxuICByZWFkb25seSBhdXRoU2VydmljZSA9IGluamVjdChVTklBdXRoU2VydmljZSk7XHJcbiAgcmVhZG9ubHkgdG9hc3RTZXJ2aWNlID0gaW5qZWN0KFVOSVRvYXN0U2VydmljZSk7XHJcbiAgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChVTklUcmFuc2xhdGVTZXJ2aWNlKTtcclxuXHJcbiAgLyogSW5wdXQgJiBvdXRwdXQgKi9cclxuICB2aXNpYmlsZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG4gIHJvdXRlSG9tZSA9IGlucHV0PHN0cmluZz4oKTtcclxuICBlbmFibGVHb0JhY2sgPSBpbnB1dC5yZXF1aXJlZDxib29sZWFuPigpO1xyXG5cclxuICAvKiBGb3JtICovXHJcbiAgcHVibGljIHJlYWRvbmx5IGxvZ2luRm9ybSA9IG5ldyBGb3JtR3JvdXA8eyBbSyBpbiBrZXlvZiBMb2dpbkZvcm1dOiBGb3JtQ29udHJvbDxMb2dpbkZvcm1bS10+IH0+KHtcclxuICAgIHVzZXJuYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIHsgbm9uTnVsbGFibGU6IHRydWUsIHZhbGlkYXRvcnM6IFZhbGlkYXRvcnMucmVxdWlyZWQgfSksXHJcbiAgICBwYXNzd29yZDogbmV3IEZvcm1Db250cm9sKCcnLCB7IG5vbk51bGxhYmxlOiB0cnVlLCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JzLnJlcXVpcmVkIH0pLFxyXG4gIH0pO1xyXG5cclxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuICBwdWJsaWMgbG9naW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ2luJCh0aGlzLmxvZ2luRm9ybS5nZXRSYXdWYWx1ZSgpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5yb3V0ZUhvbWUoKSkgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucm91dGVIb21lXSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmF1dGhTZXJ2aWNlLmxvZ291dCQoKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkhpZGluZygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmVuYWJsZUdvQmFjaygpKSB0aGlzLmxvY2F0aW9uLmJhY2soKTtcclxuICB9XHJcbn1cclxuIiwiPGR4LXBvcHVwXG5bd3JhcHBlckF0dHJdPVwieyBpZDogJ2xvZ2luUG9wdXAnIH1cIlxuW3dpZHRoXT1cIic0MCUnXCJcblttaW5XaWR0aF09XCI0MDBcIlxuW21heFdpZHRoXT1cIjcwMFwiXG5baGVpZ2h0XT1cIjUwMFwiXG5bdmlzaWJsZV09XCJ2aXNpYmlsZSgpXCJcbltzaG93VGl0bGVdPVwidHJ1ZVwiXG5bdGl0bGVdPVwiJ0xvZ2luJ1wiXG5bZHJhZ0VuYWJsZWRdPVwiZmFsc2VcIlxuW3Nob3dDbG9zZUJ1dHRvbl09XCJ0cnVlXCJcbltoaWRlT25PdXRzaWRlQ2xpY2tdPVwiZmFsc2VcIlxuKG9uSGlkaW5nKT1cIm9uSGlkaW5nKClcIj5cbjxzZWN0aW9uPlxuICA8aW1nIHNyYz1cIi4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvbG9nby9sb2dvX3RyYXNwYXJlbnRlLnBuZ1wiIGFsdD1cIkxvZ29cIiAvPlxuICA8cD5VTklURUM8L3A+XG4gIEBpZiAoYXV0aFNlcnZpY2UudXNlcigpOyBhcyB1c2VyKSB7XG4gICAgPGRpdj5VdGVudGU6IHt7IHVzZXIudXNlcm5hbWUgfX08L2Rpdj5cbiAgICA8ZHgtYnV0dG9uXG4gICAgICBpZD1cImxvZ291dEJ1dHRvblwiXG4gICAgICBzdHlsaW5nTW9kZT1cImNvbnRhaW5lZFwiXG4gICAgICBbdGV4dF09XCInTG9nb3V0J1wiXG4gICAgICAob25DbGljayk9XCJsb2dvdXQoKVwiPjwvZHgtYnV0dG9uPlxuICB9IEBlbHNlIHtcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImxvZ2luRm9ybVwiIChuZ1N1Ym1pdCk9XCJsb2dpbigpXCI+XG4gICAgICA8ZHgtdGV4dC1ib3hcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidVc2VyJ1wiXG4gICAgICAgIHN0eWxpbmdNb2RlPVwib3V0bGluZWRcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ1c2VybmFtZVwiXG4gICAgICAgIFtpbnB1dEF0dHJdPVwieyAnYXJpYS1sYWJlbCc6ICdVc2VyJyB9XCI+PC9keC10ZXh0LWJveD5cbiAgICAgIDxkeC10ZXh0LWJveFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1Bhc3N3b3JkJ1wiXG4gICAgICAgIG1vZGU9XCJwYXNzd29yZFwiXG4gICAgICAgIHN0eWxpbmdNb2RlPVwib3V0bGluZWRcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwYXNzd29yZFwiXG4gICAgICAgIFtpbnB1dEF0dHJdPVwieyAnYXJpYS1sYWJlbCc6ICdQYXNzd29yZCcgfVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICA8ZHgtYnV0dG9uXG4gICAgICAgIGlkPVwibG9naW5TdWJtaXRCdXR0b25cIlxuICAgICAgICBzdHlsaW5nTW9kZT1cImNvbnRhaW5lZFwiXG4gICAgICAgIFt0ZXh0XT1cIidMb2dpbidcIlxuICAgICAgICBbdXNlU3VibWl0QmVoYXZpb3JdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJsb2dpbkZvcm0uaW52YWxpZFwiPjwvZHgtYnV0dG9uPlxuICAgIDwvZm9ybT5cbiAgfVxuPC9zZWN0aW9uPlxuPC9keC1wb3B1cD5cbiJdfQ==
@@ -22,7 +22,7 @@ import * as i4 from 'devextreme-angular/ui/switch';
22
22
  import { DxSwitchModule } from 'devextreme-angular/ui/switch';
23
23
  import { faUser, faArrowRightToBracket, faArrowRightFromBracket, faSun, faMoon, faLanguage } from '@fortawesome/free-solid-svg-icons';
24
24
 
25
- class UniArticleComponent {
25
+ class UNIArticleComponent {
26
26
  constructor() {
27
27
  /* Inputs */
28
28
  this.color = input.required(); // Colore di base dell'articolo
@@ -47,15 +47,15 @@ class UniArticleComponent {
47
47
  // Inverte lo stato di apertura/chiusura
48
48
  this.isOpen.update((val) => !val);
49
49
  }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniArticleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UniArticleComponent, isStandalone: true, selector: "uni-article", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, setIsOpen: { classPropertyName: "setIsOpen", publicName: "setIsOpen", isSignal: true, isRequired: false, transformFunction: null }, headerCloseButton: { classPropertyName: "headerCloseButton", publicName: "headerCloseButton", isSignal: true, isRequired: false, transformFunction: null } }, usesOnChanges: true, ngImport: i0, template: "<article\n class=\"uni_article flex h-full flex-col rounded border-2 p-4\"\n [style.backgroundColor]=\"color() + '26'\"\n [style.borderColor]=\"color() + '33'\">\n <!-- Title -->\n @if (isHeader()) {\n <div class=\"uni_article_header flex items-center gap-4\" [ngClass]=\"{ 'mb-4': isOpen() }\">\n <!-- Icona nella testata, se presente -->\n @if (icon(); as icon) {\n <fa-icon class=\"uni-article-header-icon\" [icon]=\"icon\"></fa-icon>\n }\n\n <!-- Titolo nella testata, se presente -->\n @if (title(); as title) {\n <h5 class=\"uni_article_header_title truncate uppercase\">{{ title }}</h5>\n }\n\n <!-- Bottone per aprire/chiudere l'articolo, se presente -->\n @if (headerCloseButton()) {\n <dx-button\n class=\"uni_article_header_button ml-auto\"\n [icon]=\"isOpen() ? 'close' : 'expandform'\"\n (onClick)=\"toggleIsOpen()\">\n </dx-button>\n }\n </div>\n }\n\n <!-- Contenuto dell'articolo, visibile solo se aperto -->\n @if (isOpen()) {\n <ng-content></ng-content>\n }\n</article>\n\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i2.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNIArticleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UNIArticleComponent, isStandalone: true, selector: "uni-article", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, setIsOpen: { classPropertyName: "setIsOpen", publicName: "setIsOpen", isSignal: true, isRequired: false, transformFunction: null }, headerCloseButton: { classPropertyName: "headerCloseButton", publicName: "headerCloseButton", isSignal: true, isRequired: false, transformFunction: null } }, usesOnChanges: true, ngImport: i0, template: "<article\n class=\"uni_article flex h-full flex-col rounded border-2 p-4\"\n [style.backgroundColor]=\"color() + '26'\"\n [style.borderColor]=\"color() + '33'\">\n <!-- Title -->\n @if (isHeader()) {\n <div class=\"uni_article_header flex items-center gap-4\" [ngClass]=\"{ 'mb-4': isOpen() }\">\n <!-- Icona nella testata, se presente -->\n @if (icon(); as icon) {\n <fa-icon class=\"uni-article-header-icon\" [icon]=\"icon\"></fa-icon>\n }\n\n <!-- Titolo nella testata, se presente -->\n @if (title(); as title) {\n <h5 class=\"uni_article_header_title truncate uppercase\">{{ title }}</h5>\n }\n\n <!-- Bottone per aprire/chiudere l'articolo, se presente -->\n @if (headerCloseButton()) {\n <dx-button\n class=\"uni_article_header_button ml-auto\"\n [icon]=\"isOpen() ? 'close' : 'expandform'\"\n (onClick)=\"toggleIsOpen()\">\n </dx-button>\n }\n </div>\n }\n\n <!-- Contenuto dell'articolo, visibile solo se aperto -->\n @if (isOpen()) {\n <ng-content></ng-content>\n }\n</article>\n\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i2.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
52
52
  }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniArticleComponent, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNIArticleComponent, decorators: [{
54
54
  type: Component,
55
55
  args: [{ selector: 'uni-article', standalone: true, imports: [CommonModule, DxButtonModule, FaIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<article\n class=\"uni_article flex h-full flex-col rounded border-2 p-4\"\n [style.backgroundColor]=\"color() + '26'\"\n [style.borderColor]=\"color() + '33'\">\n <!-- Title -->\n @if (isHeader()) {\n <div class=\"uni_article_header flex items-center gap-4\" [ngClass]=\"{ 'mb-4': isOpen() }\">\n <!-- Icona nella testata, se presente -->\n @if (icon(); as icon) {\n <fa-icon class=\"uni-article-header-icon\" [icon]=\"icon\"></fa-icon>\n }\n\n <!-- Titolo nella testata, se presente -->\n @if (title(); as title) {\n <h5 class=\"uni_article_header_title truncate uppercase\">{{ title }}</h5>\n }\n\n <!-- Bottone per aprire/chiudere l'articolo, se presente -->\n @if (headerCloseButton()) {\n <dx-button\n class=\"uni_article_header_button ml-auto\"\n [icon]=\"isOpen() ? 'close' : 'expandform'\"\n (onClick)=\"toggleIsOpen()\">\n </dx-button>\n }\n </div>\n }\n\n <!-- Contenuto dell'articolo, visibile solo se aperto -->\n @if (isOpen()) {\n <ng-content></ng-content>\n }\n</article>\n\n", styles: [":host{display:block}\n"] }]
56
56
  }] });
57
57
 
58
- class UniHeaderComponent {
58
+ class UNIHeaderComponent {
59
59
  constructor() {
60
60
  /* Input */
61
61
  this.title = input.required();
@@ -66,15 +66,15 @@ class UniHeaderComponent {
66
66
  /* Output */
67
67
  this.evtToggleMenu = output();
68
68
  }
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
70
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UniHeaderComponent, isStandalone: true, selector: "uni-header", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, version: { classPropertyName: "version", publicName: "version", isSignal: true, isRequired: true, transformFunction: null }, pathBrandLogo: { classPropertyName: "pathBrandLogo", publicName: "pathBrandLogo", isSignal: true, isRequired: true, transformFunction: null }, pathAppLogo: { classPropertyName: "pathAppLogo", publicName: "pathAppLogo", isSignal: true, isRequired: false, transformFunction: null }, sideMenu: { classPropertyName: "sideMenu", publicName: "sideMenu", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { evtToggleMenu: "evtToggleMenu" }, ngImport: i0, template: "<header id=\"uni-header\">\n <div>\n <!-- app logo -->\n @if (pathAppLogo(); as pathAppLogo) {\n <img id=\"header-img-app\" [src]=\"pathAppLogo\" alt=\"App logo\" />\n }\n\n <!-- info -->\n <div id=\"header-info\">\n <p>{{ title() }}</p>\n <p>{{ version() }}</p>\n </div>\n\n <!-- brand logo -->\n <img id=\"header-img-brand\" [src]=\"pathBrandLogo()\" alt=\"Brand logo\" />\n\n <!-- button menu -->\n @if (sideMenu()) {\n <dx-button [icon]=\"'menu'\" (onClick)=\"evtToggleMenu.emit(true)\"></dx-button>\n }\n </div>\n</header>\n\n", styles: [":host{display:block}#uni-header{position:fixed;top:0;left:0;height:calc(60px + var(--padding-m));width:100%;padding:var(--padding-m);background-color:#36363f;overflow:hidden;z-index:999}#uni-header>div{display:grid;grid-template-rows:1fr;grid-template-columns:40px 1fr auto min-content;align-items:center;gap:1rem;padding:calc(var(--padding-m) / 2);background-color:#52525b99;border-radius:.25rem;box-shadow:#00000059 0 5px 5px}#uni-header>div #header-info{display:flex;flex-direction:column;justify-content:center;text-wrap:nowrap}#uni-header>div #header-info p:first-child{font-size:20px;line-height:28px;font-weight:500;text-transform:uppercase}#uni-header>div #header-info p:last-child{font-size:12px;line-height:12px;opacity:.65}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:40px;object-fit:contain}@media (max-resolution: 1dppx){#uni-header>div{grid-template-columns:30px 1fr auto min-content}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:31px}#uni-header>div #header-info p:first-child{font-size:16px;line-height:21px}#uni-header>div #header-info p:last-child{font-size:10px;line-height:10px}}::ng-deep .theme-light #uni-header{background-color:#0284c70d}::ng-deep .theme-light #uni-header>div{background-color:#0284c799!important;box-shadow:#0284c759 0 5px 5px!important}::ng-deep .theme-light #uni-header>div,::ng-deep .theme-light #uni-header>div i:before{color:#fff}:host ::ng-deep .dx-button{height:23px;min-width:23px;background-color:transparent}:host ::ng-deep .dx-button .dx-icon{font-size:23px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i2.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNIHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
70
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UNIHeaderComponent, isStandalone: true, selector: "uni-header", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, version: { classPropertyName: "version", publicName: "version", isSignal: true, isRequired: true, transformFunction: null }, pathBrandLogo: { classPropertyName: "pathBrandLogo", publicName: "pathBrandLogo", isSignal: true, isRequired: true, transformFunction: null }, pathAppLogo: { classPropertyName: "pathAppLogo", publicName: "pathAppLogo", isSignal: true, isRequired: false, transformFunction: null }, sideMenu: { classPropertyName: "sideMenu", publicName: "sideMenu", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { evtToggleMenu: "evtToggleMenu" }, ngImport: i0, template: "<header id=\"uni-header\">\n <div>\n <!-- app logo -->\n @if (pathAppLogo(); as pathAppLogo) {\n <img id=\"header-img-app\" [src]=\"pathAppLogo\" alt=\"App logo\" />\n }\n\n <!-- info -->\n <div id=\"header-info\">\n <p>{{ title() }}</p>\n <p>{{ version() }}</p>\n </div>\n\n <!-- brand logo -->\n <img id=\"header-img-brand\" [src]=\"pathBrandLogo()\" alt=\"Brand logo\" />\n\n <!-- button menu -->\n @if (sideMenu()) {\n <dx-button [icon]=\"'menu'\" (onClick)=\"evtToggleMenu.emit(true)\"></dx-button>\n }\n </div>\n</header>\n\n", styles: [":host{display:block}#uni-header{position:fixed;top:0;left:0;height:calc(60px + var(--padding-m));width:100%;padding:var(--padding-m);background-color:#36363f;overflow:hidden;z-index:999}#uni-header>div{display:grid;grid-template-rows:1fr;grid-template-columns:40px 1fr auto min-content;align-items:center;gap:1rem;padding:calc(var(--padding-m) / 2);background-color:#52525b99;border-radius:.25rem;box-shadow:#00000059 0 5px 5px}#uni-header>div #header-info{display:flex;flex-direction:column;justify-content:center;text-wrap:nowrap}#uni-header>div #header-info p:first-child{font-size:20px;line-height:28px;font-weight:500;text-transform:uppercase}#uni-header>div #header-info p:last-child{font-size:12px;line-height:12px;opacity:.65}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:40px;object-fit:contain}@media (max-resolution: 1dppx){#uni-header>div{grid-template-columns:30px 1fr auto min-content}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:31px}#uni-header>div #header-info p:first-child{font-size:16px;line-height:21px}#uni-header>div #header-info p:last-child{font-size:10px;line-height:10px}}::ng-deep .theme-light #uni-header{background-color:#0284c70d}::ng-deep .theme-light #uni-header>div{background-color:#0284c799!important;box-shadow:#0284c759 0 5px 5px!important}::ng-deep .theme-light #uni-header>div,::ng-deep .theme-light #uni-header>div i:before{color:#fff}:host ::ng-deep .dx-button{height:23px;min-width:23px;background-color:transparent}:host ::ng-deep .dx-button .dx-icon{font-size:23px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxButtonModule }, { kind: "component", type: i2.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
71
71
  }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniHeaderComponent, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNIHeaderComponent, decorators: [{
73
73
  type: Component,
74
74
  args: [{ selector: 'uni-header', standalone: true, imports: [CommonModule, DxButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<header id=\"uni-header\">\n <div>\n <!-- app logo -->\n @if (pathAppLogo(); as pathAppLogo) {\n <img id=\"header-img-app\" [src]=\"pathAppLogo\" alt=\"App logo\" />\n }\n\n <!-- info -->\n <div id=\"header-info\">\n <p>{{ title() }}</p>\n <p>{{ version() }}</p>\n </div>\n\n <!-- brand logo -->\n <img id=\"header-img-brand\" [src]=\"pathBrandLogo()\" alt=\"Brand logo\" />\n\n <!-- button menu -->\n @if (sideMenu()) {\n <dx-button [icon]=\"'menu'\" (onClick)=\"evtToggleMenu.emit(true)\"></dx-button>\n }\n </div>\n</header>\n\n", styles: [":host{display:block}#uni-header{position:fixed;top:0;left:0;height:calc(60px + var(--padding-m));width:100%;padding:var(--padding-m);background-color:#36363f;overflow:hidden;z-index:999}#uni-header>div{display:grid;grid-template-rows:1fr;grid-template-columns:40px 1fr auto min-content;align-items:center;gap:1rem;padding:calc(var(--padding-m) / 2);background-color:#52525b99;border-radius:.25rem;box-shadow:#00000059 0 5px 5px}#uni-header>div #header-info{display:flex;flex-direction:column;justify-content:center;text-wrap:nowrap}#uni-header>div #header-info p:first-child{font-size:20px;line-height:28px;font-weight:500;text-transform:uppercase}#uni-header>div #header-info p:last-child{font-size:12px;line-height:12px;opacity:.65}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:40px;object-fit:contain}@media (max-resolution: 1dppx){#uni-header>div{grid-template-columns:30px 1fr auto min-content}#uni-header>div #header-img-app,#uni-header>div #header-img-brand{height:31px}#uni-header>div #header-info p:first-child{font-size:16px;line-height:21px}#uni-header>div #header-info p:last-child{font-size:10px;line-height:10px}}::ng-deep .theme-light #uni-header{background-color:#0284c70d}::ng-deep .theme-light #uni-header>div{background-color:#0284c799!important;box-shadow:#0284c759 0 5px 5px!important}::ng-deep .theme-light #uni-header>div,::ng-deep .theme-light #uni-header>div i:before{color:#fff}:host ::ng-deep .dx-button{height:23px;min-width:23px;background-color:transparent}:host ::ng-deep .dx-button .dx-icon{font-size:23px}\n"] }]
75
75
  }] });
76
76
 
77
- class UniLoginModalComponent {
77
+ class UNILoginModalComponent {
78
78
  constructor() {
79
79
  /* Service */
80
80
  this.router = inject(Router);
@@ -106,10 +106,10 @@ class UniLoginModalComponent {
106
106
  if (this.enableGoBack())
107
107
  this.location.back();
108
108
  }
109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniLoginModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
110
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UniLoginModalComponent, isStandalone: true, selector: "uni-login-modal", inputs: { visibile: { classPropertyName: "visibile", publicName: "visibile", isSignal: true, isRequired: false, transformFunction: null }, routeHome: { classPropertyName: "routeHome", publicName: "routeHome", isSignal: true, isRequired: false, transformFunction: null }, enableGoBack: { classPropertyName: "enableGoBack", publicName: "enableGoBack", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<dx-popup\n[wrapperAttr]=\"{ id: 'loginPopup' }\"\n[width]=\"'40%'\"\n[minWidth]=\"400\"\n[maxWidth]=\"700\"\n[height]=\"500\"\n[visible]=\"visibile()\"\n[showTitle]=\"true\"\n[title]=\"'Login'\"\n[dragEnabled]=\"false\"\n[showCloseButton]=\"true\"\n[hideOnOutsideClick]=\"false\"\n(onHiding)=\"onHiding()\">\n<section>\n <img src=\"../../../assets/images/logo/logo_trasparente.png\" alt=\"Logo\" />\n <p>UNITEC</p>\n @if (authService.user(); as user) {\n <div>Utente: {{ user.username }}</div>\n <dx-button\n id=\"logoutButton\"\n stylingMode=\"contained\"\n [text]=\"'Logout'\"\n (onClick)=\"logout()\"></dx-button>\n } @else {\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\n <dx-text-box\n [placeholder]=\"'User'\"\n stylingMode=\"outlined\"\n formControlName=\"username\"\n [inputAttr]=\"{ 'aria-label': 'User' }\"></dx-text-box>\n <dx-text-box\n [placeholder]=\"'Password'\"\n mode=\"password\"\n stylingMode=\"outlined\"\n formControlName=\"password\"\n [inputAttr]=\"{ 'aria-label': 'Password' }\"></dx-text-box>\n <dx-button\n id=\"loginSubmitButton\"\n stylingMode=\"contained\"\n [text]=\"'Login'\"\n [useSubmitBehavior]=\"true\"\n [disabled]=\"loginForm.invalid\"></dx-button>\n </form>\n }\n</section>\n</dx-popup>\n", styles: [":host{display:block}::ng-deep #loginPopup .dx-popup-content{display:flex;justify-content:center;align-items:center}section{width:60%;display:flex;align-items:center;flex-direction:column;gap:1.5rem}img{height:8rem}form{width:100%;display:flex;flex-direction:column;gap:1rem}form dx-button{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxPopupModule }, { kind: "component", type: i1$1.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "enableBodyScroll", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "enableBodyScrollChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: DxTextBoxModule }, { kind: "component", type: i1$1.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "ngmodule", type: DxButtonModule$1 }, { kind: "component", type: i2.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
109
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNILoginModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
110
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.3", type: UNILoginModalComponent, isStandalone: true, selector: "uni-login-modal", inputs: { visibile: { classPropertyName: "visibile", publicName: "visibile", isSignal: true, isRequired: false, transformFunction: null }, routeHome: { classPropertyName: "routeHome", publicName: "routeHome", isSignal: true, isRequired: false, transformFunction: null }, enableGoBack: { classPropertyName: "enableGoBack", publicName: "enableGoBack", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<dx-popup\n[wrapperAttr]=\"{ id: 'loginPopup' }\"\n[width]=\"'40%'\"\n[minWidth]=\"400\"\n[maxWidth]=\"700\"\n[height]=\"500\"\n[visible]=\"visibile()\"\n[showTitle]=\"true\"\n[title]=\"'Login'\"\n[dragEnabled]=\"false\"\n[showCloseButton]=\"true\"\n[hideOnOutsideClick]=\"false\"\n(onHiding)=\"onHiding()\">\n<section>\n <img src=\"../../../assets/images/logo/logo_trasparente.png\" alt=\"Logo\" />\n <p>UNITEC</p>\n @if (authService.user(); as user) {\n <div>Utente: {{ user.username }}</div>\n <dx-button\n id=\"logoutButton\"\n stylingMode=\"contained\"\n [text]=\"'Logout'\"\n (onClick)=\"logout()\"></dx-button>\n } @else {\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\n <dx-text-box\n [placeholder]=\"'User'\"\n stylingMode=\"outlined\"\n formControlName=\"username\"\n [inputAttr]=\"{ 'aria-label': 'User' }\"></dx-text-box>\n <dx-text-box\n [placeholder]=\"'Password'\"\n mode=\"password\"\n stylingMode=\"outlined\"\n formControlName=\"password\"\n [inputAttr]=\"{ 'aria-label': 'Password' }\"></dx-text-box>\n <dx-button\n id=\"loginSubmitButton\"\n stylingMode=\"contained\"\n [text]=\"'Login'\"\n [useSubmitBehavior]=\"true\"\n [disabled]=\"loginForm.invalid\"></dx-button>\n </form>\n }\n</section>\n</dx-popup>\n", styles: [":host{display:block}::ng-deep #loginPopup .dx-popup-content{display:flex;justify-content:center;align-items:center}section{width:60%;display:flex;align-items:center;flex-direction:column;gap:1.5rem}img{height:8rem}form{width:100%;display:flex;flex-direction:column;gap:1rem}form dx-button{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: DxPopupModule }, { kind: "component", type: i1$1.DxPopupComponent, selector: "dx-popup", inputs: ["accessKey", "animation", "closeOnOutsideClick", "container", "contentTemplate", "deferRendering", "disabled", "dragAndResizeArea", "dragEnabled", "dragOutsideBoundary", "enableBodyScroll", "focusStateEnabled", "fullScreen", "height", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "resizeEnabled", "restorePosition", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showTitle", "tabIndex", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onResize", "onResizeEnd", "onResizeStart", "onShowing", "onShown", "onTitleRendered", "accessKeyChange", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "deferRenderingChange", "disabledChange", "dragAndResizeAreaChange", "dragEnabledChange", "dragOutsideBoundaryChange", "enableBodyScrollChange", "focusStateEnabledChange", "fullScreenChange", "heightChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "resizeEnabledChange", "restorePositionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showTitleChange", "tabIndexChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: DxTextBoxModule }, { kind: "component", type: i1$1.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "ngmodule", type: DxButtonModule$1 }, { kind: "component", type: i2.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
111
111
  }
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UniLoginModalComponent, decorators: [{
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImport: i0, type: UNILoginModalComponent, decorators: [{
113
113
  type: Component,
114
114
  args: [{ selector: 'uni-login-modal', standalone: true, imports: [CommonModule, DxPopupModule, ReactiveFormsModule, DxTextBoxModule, DxButtonModule$1], changeDetection: ChangeDetectionStrategy.OnPush, template: "<dx-popup\n[wrapperAttr]=\"{ id: 'loginPopup' }\"\n[width]=\"'40%'\"\n[minWidth]=\"400\"\n[maxWidth]=\"700\"\n[height]=\"500\"\n[visible]=\"visibile()\"\n[showTitle]=\"true\"\n[title]=\"'Login'\"\n[dragEnabled]=\"false\"\n[showCloseButton]=\"true\"\n[hideOnOutsideClick]=\"false\"\n(onHiding)=\"onHiding()\">\n<section>\n <img src=\"../../../assets/images/logo/logo_trasparente.png\" alt=\"Logo\" />\n <p>UNITEC</p>\n @if (authService.user(); as user) {\n <div>Utente: {{ user.username }}</div>\n <dx-button\n id=\"logoutButton\"\n stylingMode=\"contained\"\n [text]=\"'Logout'\"\n (onClick)=\"logout()\"></dx-button>\n } @else {\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\n <dx-text-box\n [placeholder]=\"'User'\"\n stylingMode=\"outlined\"\n formControlName=\"username\"\n [inputAttr]=\"{ 'aria-label': 'User' }\"></dx-text-box>\n <dx-text-box\n [placeholder]=\"'Password'\"\n mode=\"password\"\n stylingMode=\"outlined\"\n formControlName=\"password\"\n [inputAttr]=\"{ 'aria-label': 'Password' }\"></dx-text-box>\n <dx-button\n id=\"loginSubmitButton\"\n stylingMode=\"contained\"\n [text]=\"'Login'\"\n [useSubmitBehavior]=\"true\"\n [disabled]=\"loginForm.invalid\"></dx-button>\n </form>\n }\n</section>\n</dx-popup>\n", styles: [":host{display:block}::ng-deep #loginPopup .dx-popup-content{display:flex;justify-content:center;align-items:center}section{width:60%;display:flex;align-items:center;flex-direction:column;gap:1.5rem}img{height:8rem}form{width:100%;display:flex;flex-direction:column;gap:1rem}form dx-button{width:100%}\n"] }]
115
115
  }] });
@@ -241,5 +241,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
241
241
  * Generated bundle index. Do not edit.
242
242
  */
243
243
 
244
- export { UNIPieChartComponent, UNISideMenuComponent, UniArticleComponent, UniHeaderComponent, UniLoginModalComponent };
244
+ export { UNIArticleComponent, UNIHeaderComponent, UNILoginModalComponent, UNIPieChartComponent, UNISideMenuComponent };
245
245
  //# sourceMappingURL=uni-component-tw.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"uni-component-tw.mjs","sources":["../../../projects/uni-component-tw/src/lib/uni-article/uni-article.component.ts","../../../projects/uni-component-tw/src/lib/uni-article/uni-article.component.html","../../../projects/uni-component-tw/src/lib/uni-header/uni-header.component.ts","../../../projects/uni-component-tw/src/lib/uni-header/uni-header.component.html","../../../projects/uni-component-tw/src/lib/uni-login-modal/uni-login-modal.component.ts","../../../projects/uni-component-tw/src/lib/uni-login-modal/uni-login-modal.component.html","../../../projects/uni-component-tw/src/lib/uni-pie-chart/uni-pie-chart.component.ts","../../../projects/uni-component-tw/src/lib/uni-pie-chart/uni-pie-chart.component.html","../../../projects/uni-component-tw/src/lib/uni-side-menu/uni-side-menu.component.ts","../../../projects/uni-component-tw/src/lib/uni-side-menu/uni-side-menu.component.html","../../../projects/uni-component-tw/src/public-api.ts","../../../projects/uni-component-tw/src/uni-component-tw.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n signal,\r\n SimpleChanges,\r\n OnChanges,\r\n} from '@angular/core';\r\nimport { DxButtonModule } from 'devextreme-angular/ui/button';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { IconDefinition } from '@fortawesome/free-solid-svg-icons';\r\n\r\n@Component({\r\n selector: 'uni-article',\r\n standalone: true,\r\n imports: [CommonModule, DxButtonModule, FaIconComponent],\r\n templateUrl: './uni-article.component.html',\r\n styleUrls: ['./uni-article.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UniArticleComponent implements OnChanges {\r\n /* Inputs */\r\n readonly color = input.required<string>(); // Colore di base dell'articolo\r\n readonly title = input<string>(); // Titolo opzionale dell'articolo\r\n readonly icon = input<IconDefinition>(); // Icona opzionale per l'intestazione\r\n readonly setIsOpen = input<boolean | undefined>(); // Stato iniziale di apertura\r\n readonly headerCloseButton = input<boolean>(false); // Se mostrare il button per chiudere article\r\n\r\n /* Variables */\r\n isOpen = signal<boolean>(true);\r\n isHeader = computed(() => this.icon() || this.title() || this.headerCloseButton());\r\n\r\n /* ----------------------- Lifecycle Hook --------------------------- */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { setIsOpen } = changes;\r\n // Verifica se 'setIsOpen' è cambiato e non è il primo cambiamento\r\n if (setIsOpen && !setIsOpen.firstChange && setIsOpen.currentValue !== undefined) {\r\n this.isOpen.set(setIsOpen.currentValue);\r\n }\r\n }\r\n\r\n /* ----------------------- Metodi --------------------------- */\r\n protected toggleIsOpen(): void {\r\n // Inverte lo stato di apertura/chiusura\r\n this.isOpen.update((val) => !val);\r\n }\r\n}\r\n","<article\n class=\"uni_article flex h-full flex-col rounded border-2 p-4\"\n [style.backgroundColor]=\"color() + '26'\"\n [style.borderColor]=\"color() + '33'\">\n <!-- Title -->\n @if (isHeader()) {\n <div class=\"uni_article_header flex items-center gap-4\" [ngClass]=\"{ 'mb-4': isOpen() }\">\n <!-- Icona nella testata, se presente -->\n @if (icon(); as icon) {\n <fa-icon class=\"uni-article-header-icon\" [icon]=\"icon\"></fa-icon>\n }\n\n <!-- Titolo nella testata, se presente -->\n @if (title(); as title) {\n <h5 class=\"uni_article_header_title truncate uppercase\">{{ title }}</h5>\n }\n\n <!-- Bottone per aprire/chiudere l'articolo, se presente -->\n @if (headerCloseButton()) {\n <dx-button\n class=\"uni_article_header_button ml-auto\"\n [icon]=\"isOpen() ? 'close' : 'expandform'\"\n (onClick)=\"toggleIsOpen()\">\n </dx-button>\n }\n </div>\n }\n\n <!-- Contenuto dell'articolo, visibile solo se aperto -->\n @if (isOpen()) {\n <ng-content></ng-content>\n }\n</article>\n\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\r\nimport { DxButtonModule } from 'devextreme-angular/ui/button';\r\n\r\n@Component({\r\n selector: 'uni-header',\r\n standalone: true,\r\n imports: [CommonModule, DxButtonModule],\r\n templateUrl: './uni-header.component.html',\r\n styleUrls: ['./uni-header.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UniHeaderComponent {\r\n /* Input */\r\n title = input.required<string>();\r\n version = input.required<string>();\r\n pathBrandLogo = input.required<string>();\r\n pathAppLogo = input<string | undefined>(undefined);\r\n sideMenu = input<boolean>(false);\r\n\r\n /* Output */\r\n evtToggleMenu = output<true>();\r\n}\r\n","<header id=\"uni-header\">\n <div>\n <!-- app logo -->\n @if (pathAppLogo(); as pathAppLogo) {\n <img id=\"header-img-app\" [src]=\"pathAppLogo\" alt=\"App logo\" />\n }\n\n <!-- info -->\n <div id=\"header-info\">\n <p>{{ title() }}</p>\n <p>{{ version() }}</p>\n </div>\n\n <!-- brand logo -->\n <img id=\"header-img-brand\" [src]=\"pathBrandLogo()\" alt=\"Brand logo\" />\n\n <!-- button menu -->\n @if (sideMenu()) {\n <dx-button [icon]=\"'menu'\" (onClick)=\"evtToggleMenu.emit(true)\"></dx-button>\n }\n </div>\n</header>\n\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { Router } from '@angular/router';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { DxButtonModule, DxPopupModule, DxTextBoxModule } from 'devextreme-angular';\r\nimport { UNIAuthService } from 'uni-service/auth';\r\nimport { UNIToastService } from 'uni-service/toast';\r\nimport { UNITranslateService } from 'uni-service/translate';\r\n\r\nexport type LoginForm = {\r\n username: string;\r\n password: string;\r\n};\r\n\r\n@Component({\r\n selector: 'uni-login-modal',\r\n standalone: true,\r\n imports: [CommonModule, DxPopupModule, ReactiveFormsModule, DxTextBoxModule, DxButtonModule],\r\n templateUrl: './uni-login-modal.component.html',\r\n styleUrls: ['./uni-login-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UniLoginModalComponent {\r\n /* Service */\r\n readonly router = inject(Router);\r\n readonly location = inject(Location);\r\n readonly authService = inject(UNIAuthService);\r\n readonly toastService = inject(UNIToastService);\r\n readonly translateService = inject(UNITranslateService);\r\n\r\n /* Input & output */\r\n visibile = input<boolean>(true);\r\n routeHome = input<string>();\r\n enableGoBack = input.required<boolean>();\r\n\r\n /* Form */\r\n public readonly loginForm = new FormGroup<{ [K in keyof LoginForm]: FormControl<LoginForm[K]> }>({\r\n username: new FormControl('', { nonNullable: true, validators: Validators.required }),\r\n password: new FormControl('', { nonNullable: true, validators: Validators.required }),\r\n });\r\n\r\n /* ------------------------ Methods ------------------------ */\r\n public login(): void {\r\n this.authService.login$(this.loginForm.getRawValue()).subscribe(() => {\r\n if (this.routeHome()) this.router.navigate([this.routeHome]);\r\n });\r\n }\r\n\r\n public logout(): void {\r\n this.authService.logout$().subscribe();\r\n }\r\n\r\n public onHiding(): void {\r\n if (this.enableGoBack()) this.location.back();\r\n }\r\n}\r\n","<dx-popup\n[wrapperAttr]=\"{ id: 'loginPopup' }\"\n[width]=\"'40%'\"\n[minWidth]=\"400\"\n[maxWidth]=\"700\"\n[height]=\"500\"\n[visible]=\"visibile()\"\n[showTitle]=\"true\"\n[title]=\"'Login'\"\n[dragEnabled]=\"false\"\n[showCloseButton]=\"true\"\n[hideOnOutsideClick]=\"false\"\n(onHiding)=\"onHiding()\">\n<section>\n <img src=\"../../../assets/images/logo/logo_trasparente.png\" alt=\"Logo\" />\n <p>UNITEC</p>\n @if (authService.user(); as user) {\n <div>Utente: {{ user.username }}</div>\n <dx-button\n id=\"logoutButton\"\n stylingMode=\"contained\"\n [text]=\"'Logout'\"\n (onClick)=\"logout()\"></dx-button>\n } @else {\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\n <dx-text-box\n [placeholder]=\"'User'\"\n stylingMode=\"outlined\"\n formControlName=\"username\"\n [inputAttr]=\"{ 'aria-label': 'User' }\"></dx-text-box>\n <dx-text-box\n [placeholder]=\"'Password'\"\n mode=\"password\"\n stylingMode=\"outlined\"\n formControlName=\"password\"\n [inputAttr]=\"{ 'aria-label': 'Password' }\"></dx-text-box>\n <dx-button\n id=\"loginSubmitButton\"\n stylingMode=\"contained\"\n [text]=\"'Login'\"\n [useSubmitBehavior]=\"true\"\n [disabled]=\"loginForm.invalid\"></dx-button>\n </form>\n }\n</section>\n</dx-popup>\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { DxPieChartModule } from 'devextreme-angular/ui/pie-chart';\r\nimport { PieChartType } from 'devextreme/viz/pie_chart_types';\r\n\r\nexport type ChartDataSource = {\r\n name: string;\r\n value: number | undefined;\r\n color: string;\r\n};\r\n\r\n@Component({\r\n selector: 'uni-pie-chart',\r\n standalone: true,\r\n imports: [CommonModule, DxPieChartModule],\r\n templateUrl: './uni-pie-chart.component.html',\r\n styleUrls: ['./uni-pie-chart.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNIPieChartComponent {\r\n /* Input & output */\r\n chartDataSource = input.required<ChartDataSource[]>();\r\n chartPercentage = input<number | undefined>(undefined);\r\n chartType = input<PieChartType>('pie');\r\n chartDiameter = input<number>(1);\r\n chartInnerRadius = input<number>(0.7);\r\n tooltipIsEnabled = input<boolean>(true);\r\n legendPosition = input<'right' | 'left' | 'top' | 'bottom' | 'none'>('none');\r\n legendWithValue = input<boolean>(false);\r\n legendGap = input<string>('12px');\r\n uom = input<string>('');\r\n\r\n /* Variables */\r\n paletteColor = computed(() => this.chartDataSource().map((data) => data.color));\r\n gridColumn = computed(() => {\r\n switch (this.legendPosition()) {\r\n case 'right':\r\n return '1fr min-content';\r\n case 'left':\r\n return 'min-content 1fr';\r\n default:\r\n return '1fr';\r\n }\r\n });\r\n gridRow = computed(() => {\r\n switch (this.legendPosition()) {\r\n case 'top':\r\n return 'min-content 1fr';\r\n case 'bottom':\r\n return '1fr min-content';\r\n default:\r\n return '1fr';\r\n }\r\n });\r\n\r\n /* ----------------------- Constructor & lifecycle --------------------------- */\r\n constructor() {\r\n this.customizeTooltip = this.customizeTooltip.bind(this);\r\n }\r\n\r\n /* -----------------------Methods--------------------------- */\r\n /* Funzione usata per personalizzare i tooltips del grafico */\r\n public customizeTooltip(pointInfo: { argumentText: string; valueText: string }) {\r\n const { argumentText, valueText } = pointInfo;\r\n return {\r\n text: `${argumentText}<br/>${valueText} ${this.uom()}`,\r\n color: 'rgba(149, 157, 165, 0.5)',\r\n };\r\n }\r\n}\r\n","<div\n class=\"container-pie-chart\"\n [style.display]=\"legendPosition() === 'none' ? 'block' : 'grid'\"\n [style.gridTemplateRows]=\"gridRow()\"\n [style.gridTemplateColumns]=\"gridColumn()\">\n <dx-pie-chart\n [style.order]=\"legendPosition() === 'top' || legendPosition() === 'left' ? 1 : 0\"\n style=\"height: 100%; width: 100%; overflow: hidden\"\n [type]=\"chartType()\"\n [dataSource]=\"chartDataSource()\"\n resolveLabelOverlapping=\"shift\"\n [palette]=\"paletteColor()\"\n [diameter]=\"chartDiameter()\"\n [innerRadius]=\"chartInnerRadius()\"\n [redrawOnResize]=\"true\"\n [centerTemplate]=\"chartPercentage() !== undefined ? 'centerTemplate' : undefined\"\n [series]=\"{\n argumentField: 'name',\n format: 'fixedPoint',\n valueField: 'value',\n hoverStyle: 'none',\n label: { visible: false },\n }\"\n [legend]=\"{ visible: false }\"\n [tooltip]=\"{ enabled: tooltipIsEnabled(), customizeTooltip: customizeTooltip }\">\n <svg *dxTemplate=\"let pieChart of 'centerTemplate'\">\n <text text-anchor=\"middle\" style=\"font-size: 28px\" x=\"100\" y=\"120\" fill=\"#fff\">\n {{ chartPercentage() }}%\n </text>\n </svg>\n </dx-pie-chart>\n\n @if (legendPosition() !== 'none') {\n <ul\n class=\"container-legend\"\n [style.flexDirection]=\"\n legendPosition() === 'top' || legendPosition() === 'bottom' ? 'row' : 'column'\n \"\n [style.gap]=\"legendGap()\">\n @for (item of chartDataSource(); track $index) {\n <li>\n <span class=\"square\" [style.backgroundColor]=\"item.color\"></span>\n {{ legendWithValue() ? item.name + ' ' + item.value + ' ' + uom() : item.name }}\n </li>\n }\n </ul>\n }\n</div>\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input, output, signal } from '@angular/core';\r\nimport { Router, RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { DxButtonModule } from 'devextreme-angular/ui/button';\r\nimport { DxSelectBoxModule } from 'devextreme-angular/ui/select-box';\r\nimport { DxSwitchModule } from 'devextreme-angular/ui/switch';\r\nimport { ValueChangedEvent as SelectBoxValueChangedEvent } from 'devextreme/ui/select_box_types';\r\nimport { ValueChangedEvent as SwitchValueChangedEvent } from 'devextreme/ui/switch_types';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport {\r\n faArrowRightFromBracket,\r\n faArrowRightToBracket,\r\n faLanguage,\r\n faMoon,\r\n faSun,\r\n faUser,\r\n} from '@fortawesome/free-solid-svg-icons';\r\nimport { UNIAuthService, User } from 'uni-service/auth';\r\nimport { UNITranslatePipe, UNITranslateService } from 'uni-service/translate';\r\n\r\nexport type Combo = {\r\n id: number;\r\n code: string;\r\n description: string;\r\n};\r\n\r\nexport type MenuItem = {\r\n id: number;\r\n icon: IconDefinition;\r\n label: string;\r\n path: string;\r\n visible: boolean;\r\n disabled: boolean;\r\n};\r\n\r\nexport type MenuInteraction = {\r\n id: number;\r\n data:\r\n | { type: 'button'; icon: IconDefinition }\r\n | { type: 'select'; combos: Combo[]; value: number | null };\r\n label: string;\r\n class: string;\r\n fun: (...args: any) => void;\r\n visible: boolean;\r\n disabled: boolean;\r\n};\r\n\r\n@Component({\r\n selector: 'uni-side-menu',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterLink,\r\n RouterLinkActive,\r\n DxButtonModule,\r\n DxSelectBoxModule,\r\n DxSwitchModule,\r\n UNITranslatePipe,\r\n FaIconComponent,\r\n NgOptimizedImage,\r\n ],\r\n templateUrl: './uni-side-menu.component.html',\r\n styleUrls: ['./uni-side-menu.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNISideMenuComponent {\r\n /* Service */\r\n readonly router = inject(Router);\r\n readonly authService = inject(UNIAuthService);\r\n readonly translateService = inject(UNITranslateService);\r\n\r\n /* Input */\r\n pathBrandLogo = input.required<string>();\r\n menuItems = input<MenuItem[]>([]);\r\n menuInteractions = input<MenuInteraction[]>([]);\r\n user = input.required<User | null | undefined>();\r\n\r\n /* Output */\r\n evtToggleMenu = output<false>();\r\n\r\n /* Variables */\r\n darkMode = signal<boolean>(localStorage.getItem('uni-theme') === 'dark');\r\n\r\n /* Icons */\r\n readonly ICON = {\r\n USER: faUser,\r\n LOGIN: faArrowRightToBracket,\r\n LOGOUT: faArrowRightFromBracket,\r\n LIGHT_MODE: faSun,\r\n DARK_MODE: faMoon,\r\n LANGUAGE: faLanguage,\r\n };\r\n\r\n /* ---------------------- Methods ---------------------- */\r\n protected updateTheme(e: SwitchValueChangedEvent): void {\r\n localStorage.setItem('uni-theme', e.value ? 'dark' : 'light');\r\n window.location.reload();\r\n }\r\n\r\n protected updateLanguage(e: SelectBoxValueChangedEvent): void {\r\n this.translateService.setLanguage(e.value);\r\n window.location.reload();\r\n }\r\n\r\n protected goToLogin(): void {\r\n this.evtToggleMenu.emit(false);\r\n this.router.navigate(['login']);\r\n }\r\n\r\n protected logout(): void {\r\n this.authService.logout$().subscribe(() => {\r\n const firstItem = this.menuItems().find((item) => item.visible && !item.disabled);\r\n this.evtToggleMenu.emit(false);\r\n this.router.navigate([firstItem?.path ?? 'login']);\r\n });\r\n }\r\n}\r\n","<aside\n class=\"flex h-screen w-[250px] flex-col gap-4 overflow-hidden rounded bg-zinc-800/60 p-4 shadow backdrop-blur-xl\">\n <!-- user -->\n <div class=\"flex w-full items-center gap-4\">\n <div class=\"flex flex-1 gap-2\">\n @if (user(); as user) {\n <fa-icon [icon]=\"ICON.USER\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ user.username }}</span>\n }\n </div>\n <dx-button [icon]=\"'close'\" (onClick)=\"evtToggleMenu.emit(false)\"></dx-button>\n </div>\n\n <!-- menu -->\n @if (menuItems().length) {\n <nav class=\"mt-8\">\n <ul class=\"flex flex-col gap-2\">\n @for (item of menuItems(); track item.id) {\n @if (item.visible) {\n <li>\n <a\n class=\"flex gap-2 rounded p-2 !text-white\"\n [ngClass]=\"{\n 'hover:bg-zinc-600/60': !item.disabled,\n 'cursor-auto !opacity-25': item.disabled,\n }\"\n [routerLink]=\"item.disabled ? null : item.path\"\n routerLinkActive=\"bg-zinc-600/60\"\n (click)=\"evtToggleMenu.emit(false)\">\n <fa-icon class=\"basis-6\" [icon]=\"item.icon\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n </a>\n </li>\n }\n }\n </ul>\n </nav>\n }\n\n @if (menuInteractions().length) {\n <hr class=\"my-4 h-px border-0 bg-gray-600\" />\n\n <ul class=\"flex flex-col gap-2\">\n @for (item of menuInteractions(); track item.id) {\n @if (item.data.type === 'button') {\n <li class=\"item-setting-button\">\n <button\n type=\"button\"\n class=\"dx-theme-material-typography flex h-12 w-full items-center gap-2 rounded p-4\"\n [class]=\"item.class\"\n (click)=\"item.fun()\">\n <fa-icon class=\"basis-6\" [icon]=\"item.data.icon\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n </button>\n </li>\n } @else if (item.data.type === 'select') {\n <li class=\"flex h-12 items-center gap-4 rounded bg-zinc-600/60 p-3 shadow\">\n <span class=\"truncate\">{{ item.label }}</span>\n <dx-select-box\n class=\"flex-1 basis-24\"\n valueExpr=\"id\"\n displayExpr=\"description\"\n [items]=\"item.data.combos\"\n [value]=\"item.data.value\"\n stylingMode=\"underlined\"\n placeholder=\"\"\n (onValueChanged)=\"item.fun($event)\"></dx-select-box>\n </li>\n }\n }\n </ul>\n }\n\n <!-- setting -->\n <hr class=\"my-4 h-px border-0 bg-gray-600\" />\n\n <ul class=\"flex flex-col gap-2\">\n <li class=\"flex h-12 items-center gap-2 rounded bg-zinc-600/60 p-4 text-white shadow\">\n <fa-icon class=\"basis-6\" [icon]=\"darkMode() ? ICON.DARK_MODE : ICON.LIGHT_MODE\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ 'lblDarkMode' | translate }}</span>\n <dx-switch [value]=\"darkMode()\" (onValueChanged)=\"updateTheme($event)\"></dx-switch>\n </li>\n <li class=\"flex h-12 items-center gap-2 rounded bg-zinc-600/60 p-4 text-white shadow\">\n <fa-icon class=\"basis-6\" [icon]=\"ICON.LANGUAGE\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ 'lblLanguage' | translate }}</span>\n <dx-select-box\n class=\"basis-12\"\n [items]=\"translateService.translateInfo().languagesSupported\"\n [value]=\"translateService.translateInfo().language\"\n stylingMode=\"underlined\"\n (onValueChanged)=\"updateLanguage($event)\"></dx-select-box>\n </li>\n <!-- User | null | undefined -->\n @if (user() !== undefined) {\n <li>\n <button\n class=\"flex w-full items-center gap-2 rounded border border-white p-4 text-white shadow transition duration-300 ease-in-out hover:bg-white hover:text-gray-800\"\n (click)=\"user() ? logout() : goToLogin()\">\n <fa-icon [icon]=\"user() ? ICON.LOGOUT : ICON.LOGIN\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ (user() ? 'lblLogout' : 'lblLogin') | translate }}</span>\n </button>\n </li>\n }\n </ul>\n\n <!-- logo -->\n <div class=\"mt-auto flex content-end border-b border-white\">\n <img\n class=\"ml-auto h-12\"\n [ngSrc]=\"pathBrandLogo()\"\n alt=\"Brand logo\"\n [height]=\"30\"\n [width]=\"125\"\n priority />\n </div>\n</aside>\n\n","/*\r\n * Public API Surface of uni-component-tw\r\n */\r\n\r\nexport * from './lib/uni-article/uni-article.component';\r\nexport * from './lib/uni-header/uni-header.component';\r\nexport * from './lib/uni-login-modal/uni-login-modal.component';\r\nexport * from './lib/uni-pie-chart/uni-pie-chart.component';\r\nexport * from './lib/uni-side-menu/uni-side-menu.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","DxButtonModule","i3"],"mappings":"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"}
1
+ {"version":3,"file":"uni-component-tw.mjs","sources":["../../../projects/uni-component-tw/src/lib/uni-article/uni-article.component.ts","../../../projects/uni-component-tw/src/lib/uni-article/uni-article.component.html","../../../projects/uni-component-tw/src/lib/uni-header/uni-header.component.ts","../../../projects/uni-component-tw/src/lib/uni-header/uni-header.component.html","../../../projects/uni-component-tw/src/lib/uni-login-modal/uni-login-modal.component.ts","../../../projects/uni-component-tw/src/lib/uni-login-modal/uni-login-modal.component.html","../../../projects/uni-component-tw/src/lib/uni-pie-chart/uni-pie-chart.component.ts","../../../projects/uni-component-tw/src/lib/uni-pie-chart/uni-pie-chart.component.html","../../../projects/uni-component-tw/src/lib/uni-side-menu/uni-side-menu.component.ts","../../../projects/uni-component-tw/src/lib/uni-side-menu/uni-side-menu.component.html","../../../projects/uni-component-tw/src/public-api.ts","../../../projects/uni-component-tw/src/uni-component-tw.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n signal,\r\n SimpleChanges,\r\n OnChanges,\r\n} from '@angular/core';\r\nimport { DxButtonModule } from 'devextreme-angular/ui/button';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { IconDefinition } from '@fortawesome/free-solid-svg-icons';\r\n\r\n@Component({\r\n selector: 'uni-article',\r\n standalone: true,\r\n imports: [CommonModule, DxButtonModule, FaIconComponent],\r\n templateUrl: './uni-article.component.html',\r\n styleUrls: ['./uni-article.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNIArticleComponent implements OnChanges {\r\n /* Inputs */\r\n readonly color = input.required<string>(); // Colore di base dell'articolo\r\n readonly title = input<string>(); // Titolo opzionale dell'articolo\r\n readonly icon = input<IconDefinition>(); // Icona opzionale per l'intestazione\r\n readonly setIsOpen = input<boolean | undefined>(); // Stato iniziale di apertura\r\n readonly headerCloseButton = input<boolean>(false); // Se mostrare il button per chiudere article\r\n\r\n /* Variables */\r\n isOpen = signal<boolean>(true);\r\n isHeader = computed(() => this.icon() || this.title() || this.headerCloseButton());\r\n\r\n /* ----------------------- Lifecycle Hook --------------------------- */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { setIsOpen } = changes;\r\n // Verifica se 'setIsOpen' è cambiato e non è il primo cambiamento\r\n if (setIsOpen && !setIsOpen.firstChange && setIsOpen.currentValue !== undefined) {\r\n this.isOpen.set(setIsOpen.currentValue);\r\n }\r\n }\r\n\r\n /* ----------------------- Metodi --------------------------- */\r\n protected toggleIsOpen(): void {\r\n // Inverte lo stato di apertura/chiusura\r\n this.isOpen.update((val) => !val);\r\n }\r\n}\r\n","<article\n class=\"uni_article flex h-full flex-col rounded border-2 p-4\"\n [style.backgroundColor]=\"color() + '26'\"\n [style.borderColor]=\"color() + '33'\">\n <!-- Title -->\n @if (isHeader()) {\n <div class=\"uni_article_header flex items-center gap-4\" [ngClass]=\"{ 'mb-4': isOpen() }\">\n <!-- Icona nella testata, se presente -->\n @if (icon(); as icon) {\n <fa-icon class=\"uni-article-header-icon\" [icon]=\"icon\"></fa-icon>\n }\n\n <!-- Titolo nella testata, se presente -->\n @if (title(); as title) {\n <h5 class=\"uni_article_header_title truncate uppercase\">{{ title }}</h5>\n }\n\n <!-- Bottone per aprire/chiudere l'articolo, se presente -->\n @if (headerCloseButton()) {\n <dx-button\n class=\"uni_article_header_button ml-auto\"\n [icon]=\"isOpen() ? 'close' : 'expandform'\"\n (onClick)=\"toggleIsOpen()\">\n </dx-button>\n }\n </div>\n }\n\n <!-- Contenuto dell'articolo, visibile solo se aperto -->\n @if (isOpen()) {\n <ng-content></ng-content>\n }\n</article>\n\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\r\nimport { DxButtonModule } from 'devextreme-angular/ui/button';\r\n\r\n@Component({\r\n selector: 'uni-header',\r\n standalone: true,\r\n imports: [CommonModule, DxButtonModule],\r\n templateUrl: './uni-header.component.html',\r\n styleUrls: ['./uni-header.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNIHeaderComponent {\r\n /* Input */\r\n title = input.required<string>();\r\n version = input.required<string>();\r\n pathBrandLogo = input.required<string>();\r\n pathAppLogo = input<string | undefined>(undefined);\r\n sideMenu = input<boolean>(false);\r\n\r\n /* Output */\r\n evtToggleMenu = output<true>();\r\n}\r\n","<header id=\"uni-header\">\n <div>\n <!-- app logo -->\n @if (pathAppLogo(); as pathAppLogo) {\n <img id=\"header-img-app\" [src]=\"pathAppLogo\" alt=\"App logo\" />\n }\n\n <!-- info -->\n <div id=\"header-info\">\n <p>{{ title() }}</p>\n <p>{{ version() }}</p>\n </div>\n\n <!-- brand logo -->\n <img id=\"header-img-brand\" [src]=\"pathBrandLogo()\" alt=\"Brand logo\" />\n\n <!-- button menu -->\n @if (sideMenu()) {\n <dx-button [icon]=\"'menu'\" (onClick)=\"evtToggleMenu.emit(true)\"></dx-button>\n }\n </div>\n</header>\n\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { Router } from '@angular/router';\r\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { DxButtonModule, DxPopupModule, DxTextBoxModule } from 'devextreme-angular';\r\nimport { UNIAuthService } from 'uni-service/auth';\r\nimport { UNIToastService } from 'uni-service/toast';\r\nimport { UNITranslateService } from 'uni-service/translate';\r\n\r\nexport type LoginForm = {\r\n username: string;\r\n password: string;\r\n};\r\n\r\n@Component({\r\n selector: 'uni-login-modal',\r\n standalone: true,\r\n imports: [CommonModule, DxPopupModule, ReactiveFormsModule, DxTextBoxModule, DxButtonModule],\r\n templateUrl: './uni-login-modal.component.html',\r\n styleUrls: ['./uni-login-modal.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNILoginModalComponent {\r\n /* Service */\r\n readonly router = inject(Router);\r\n readonly location = inject(Location);\r\n readonly authService = inject(UNIAuthService);\r\n readonly toastService = inject(UNIToastService);\r\n readonly translateService = inject(UNITranslateService);\r\n\r\n /* Input & output */\r\n visibile = input<boolean>(true);\r\n routeHome = input<string>();\r\n enableGoBack = input.required<boolean>();\r\n\r\n /* Form */\r\n public readonly loginForm = new FormGroup<{ [K in keyof LoginForm]: FormControl<LoginForm[K]> }>({\r\n username: new FormControl('', { nonNullable: true, validators: Validators.required }),\r\n password: new FormControl('', { nonNullable: true, validators: Validators.required }),\r\n });\r\n\r\n /* ------------------------ Methods ------------------------ */\r\n public login(): void {\r\n this.authService.login$(this.loginForm.getRawValue()).subscribe(() => {\r\n if (this.routeHome()) this.router.navigate([this.routeHome]);\r\n });\r\n }\r\n\r\n public logout(): void {\r\n this.authService.logout$().subscribe();\r\n }\r\n\r\n public onHiding(): void {\r\n if (this.enableGoBack()) this.location.back();\r\n }\r\n}\r\n","<dx-popup\n[wrapperAttr]=\"{ id: 'loginPopup' }\"\n[width]=\"'40%'\"\n[minWidth]=\"400\"\n[maxWidth]=\"700\"\n[height]=\"500\"\n[visible]=\"visibile()\"\n[showTitle]=\"true\"\n[title]=\"'Login'\"\n[dragEnabled]=\"false\"\n[showCloseButton]=\"true\"\n[hideOnOutsideClick]=\"false\"\n(onHiding)=\"onHiding()\">\n<section>\n <img src=\"../../../assets/images/logo/logo_trasparente.png\" alt=\"Logo\" />\n <p>UNITEC</p>\n @if (authService.user(); as user) {\n <div>Utente: {{ user.username }}</div>\n <dx-button\n id=\"logoutButton\"\n stylingMode=\"contained\"\n [text]=\"'Logout'\"\n (onClick)=\"logout()\"></dx-button>\n } @else {\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\n <dx-text-box\n [placeholder]=\"'User'\"\n stylingMode=\"outlined\"\n formControlName=\"username\"\n [inputAttr]=\"{ 'aria-label': 'User' }\"></dx-text-box>\n <dx-text-box\n [placeholder]=\"'Password'\"\n mode=\"password\"\n stylingMode=\"outlined\"\n formControlName=\"password\"\n [inputAttr]=\"{ 'aria-label': 'Password' }\"></dx-text-box>\n <dx-button\n id=\"loginSubmitButton\"\n stylingMode=\"contained\"\n [text]=\"'Login'\"\n [useSubmitBehavior]=\"true\"\n [disabled]=\"loginForm.invalid\"></dx-button>\n </form>\n }\n</section>\n</dx-popup>\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { DxPieChartModule } from 'devextreme-angular/ui/pie-chart';\r\nimport { PieChartType } from 'devextreme/viz/pie_chart_types';\r\n\r\nexport type ChartDataSource = {\r\n name: string;\r\n value: number | undefined;\r\n color: string;\r\n};\r\n\r\n@Component({\r\n selector: 'uni-pie-chart',\r\n standalone: true,\r\n imports: [CommonModule, DxPieChartModule],\r\n templateUrl: './uni-pie-chart.component.html',\r\n styleUrls: ['./uni-pie-chart.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNIPieChartComponent {\r\n /* Input & output */\r\n chartDataSource = input.required<ChartDataSource[]>();\r\n chartPercentage = input<number | undefined>(undefined);\r\n chartType = input<PieChartType>('pie');\r\n chartDiameter = input<number>(1);\r\n chartInnerRadius = input<number>(0.7);\r\n tooltipIsEnabled = input<boolean>(true);\r\n legendPosition = input<'right' | 'left' | 'top' | 'bottom' | 'none'>('none');\r\n legendWithValue = input<boolean>(false);\r\n legendGap = input<string>('12px');\r\n uom = input<string>('');\r\n\r\n /* Variables */\r\n paletteColor = computed(() => this.chartDataSource().map((data) => data.color));\r\n gridColumn = computed(() => {\r\n switch (this.legendPosition()) {\r\n case 'right':\r\n return '1fr min-content';\r\n case 'left':\r\n return 'min-content 1fr';\r\n default:\r\n return '1fr';\r\n }\r\n });\r\n gridRow = computed(() => {\r\n switch (this.legendPosition()) {\r\n case 'top':\r\n return 'min-content 1fr';\r\n case 'bottom':\r\n return '1fr min-content';\r\n default:\r\n return '1fr';\r\n }\r\n });\r\n\r\n /* ----------------------- Constructor & lifecycle --------------------------- */\r\n constructor() {\r\n this.customizeTooltip = this.customizeTooltip.bind(this);\r\n }\r\n\r\n /* -----------------------Methods--------------------------- */\r\n /* Funzione usata per personalizzare i tooltips del grafico */\r\n public customizeTooltip(pointInfo: { argumentText: string; valueText: string }) {\r\n const { argumentText, valueText } = pointInfo;\r\n return {\r\n text: `${argumentText}<br/>${valueText} ${this.uom()}`,\r\n color: 'rgba(149, 157, 165, 0.5)',\r\n };\r\n }\r\n}\r\n","<div\n class=\"container-pie-chart\"\n [style.display]=\"legendPosition() === 'none' ? 'block' : 'grid'\"\n [style.gridTemplateRows]=\"gridRow()\"\n [style.gridTemplateColumns]=\"gridColumn()\">\n <dx-pie-chart\n [style.order]=\"legendPosition() === 'top' || legendPosition() === 'left' ? 1 : 0\"\n style=\"height: 100%; width: 100%; overflow: hidden\"\n [type]=\"chartType()\"\n [dataSource]=\"chartDataSource()\"\n resolveLabelOverlapping=\"shift\"\n [palette]=\"paletteColor()\"\n [diameter]=\"chartDiameter()\"\n [innerRadius]=\"chartInnerRadius()\"\n [redrawOnResize]=\"true\"\n [centerTemplate]=\"chartPercentage() !== undefined ? 'centerTemplate' : undefined\"\n [series]=\"{\n argumentField: 'name',\n format: 'fixedPoint',\n valueField: 'value',\n hoverStyle: 'none',\n label: { visible: false },\n }\"\n [legend]=\"{ visible: false }\"\n [tooltip]=\"{ enabled: tooltipIsEnabled(), customizeTooltip: customizeTooltip }\">\n <svg *dxTemplate=\"let pieChart of 'centerTemplate'\">\n <text text-anchor=\"middle\" style=\"font-size: 28px\" x=\"100\" y=\"120\" fill=\"#fff\">\n {{ chartPercentage() }}%\n </text>\n </svg>\n </dx-pie-chart>\n\n @if (legendPosition() !== 'none') {\n <ul\n class=\"container-legend\"\n [style.flexDirection]=\"\n legendPosition() === 'top' || legendPosition() === 'bottom' ? 'row' : 'column'\n \"\n [style.gap]=\"legendGap()\">\n @for (item of chartDataSource(); track $index) {\n <li>\n <span class=\"square\" [style.backgroundColor]=\"item.color\"></span>\n {{ legendWithValue() ? item.name + ' ' + item.value + ' ' + uom() : item.name }}\n </li>\n }\n </ul>\n }\n</div>\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { CommonModule, NgOptimizedImage } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, inject, input, output, signal } from '@angular/core';\r\nimport { Router, RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { DxButtonModule } from 'devextreme-angular/ui/button';\r\nimport { DxSelectBoxModule } from 'devextreme-angular/ui/select-box';\r\nimport { DxSwitchModule } from 'devextreme-angular/ui/switch';\r\nimport { ValueChangedEvent as SelectBoxValueChangedEvent } from 'devextreme/ui/select_box_types';\r\nimport { ValueChangedEvent as SwitchValueChangedEvent } from 'devextreme/ui/switch_types';\r\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport {\r\n faArrowRightFromBracket,\r\n faArrowRightToBracket,\r\n faLanguage,\r\n faMoon,\r\n faSun,\r\n faUser,\r\n} from '@fortawesome/free-solid-svg-icons';\r\nimport { UNIAuthService, User } from 'uni-service/auth';\r\nimport { UNITranslatePipe, UNITranslateService } from 'uni-service/translate';\r\n\r\nexport type Combo = {\r\n id: number;\r\n code: string;\r\n description: string;\r\n};\r\n\r\nexport type MenuItem = {\r\n id: number;\r\n icon: IconDefinition;\r\n label: string;\r\n path: string;\r\n visible: boolean;\r\n disabled: boolean;\r\n};\r\n\r\nexport type MenuInteraction = {\r\n id: number;\r\n data:\r\n | { type: 'button'; icon: IconDefinition }\r\n | { type: 'select'; combos: Combo[]; value: number | null };\r\n label: string;\r\n class: string;\r\n fun: (...args: any) => void;\r\n visible: boolean;\r\n disabled: boolean;\r\n};\r\n\r\n@Component({\r\n selector: 'uni-side-menu',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterLink,\r\n RouterLinkActive,\r\n DxButtonModule,\r\n DxSelectBoxModule,\r\n DxSwitchModule,\r\n UNITranslatePipe,\r\n FaIconComponent,\r\n NgOptimizedImage,\r\n ],\r\n templateUrl: './uni-side-menu.component.html',\r\n styleUrls: ['./uni-side-menu.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class UNISideMenuComponent {\r\n /* Service */\r\n readonly router = inject(Router);\r\n readonly authService = inject(UNIAuthService);\r\n readonly translateService = inject(UNITranslateService);\r\n\r\n /* Input */\r\n pathBrandLogo = input.required<string>();\r\n menuItems = input<MenuItem[]>([]);\r\n menuInteractions = input<MenuInteraction[]>([]);\r\n user = input.required<User | null | undefined>();\r\n\r\n /* Output */\r\n evtToggleMenu = output<false>();\r\n\r\n /* Variables */\r\n darkMode = signal<boolean>(localStorage.getItem('uni-theme') === 'dark');\r\n\r\n /* Icons */\r\n readonly ICON = {\r\n USER: faUser,\r\n LOGIN: faArrowRightToBracket,\r\n LOGOUT: faArrowRightFromBracket,\r\n LIGHT_MODE: faSun,\r\n DARK_MODE: faMoon,\r\n LANGUAGE: faLanguage,\r\n };\r\n\r\n /* ---------------------- Methods ---------------------- */\r\n protected updateTheme(e: SwitchValueChangedEvent): void {\r\n localStorage.setItem('uni-theme', e.value ? 'dark' : 'light');\r\n window.location.reload();\r\n }\r\n\r\n protected updateLanguage(e: SelectBoxValueChangedEvent): void {\r\n this.translateService.setLanguage(e.value);\r\n window.location.reload();\r\n }\r\n\r\n protected goToLogin(): void {\r\n this.evtToggleMenu.emit(false);\r\n this.router.navigate(['login']);\r\n }\r\n\r\n protected logout(): void {\r\n this.authService.logout$().subscribe(() => {\r\n const firstItem = this.menuItems().find((item) => item.visible && !item.disabled);\r\n this.evtToggleMenu.emit(false);\r\n this.router.navigate([firstItem?.path ?? 'login']);\r\n });\r\n }\r\n}\r\n","<aside\n class=\"flex h-screen w-[250px] flex-col gap-4 overflow-hidden rounded bg-zinc-800/60 p-4 shadow backdrop-blur-xl\">\n <!-- user -->\n <div class=\"flex w-full items-center gap-4\">\n <div class=\"flex flex-1 gap-2\">\n @if (user(); as user) {\n <fa-icon [icon]=\"ICON.USER\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ user.username }}</span>\n }\n </div>\n <dx-button [icon]=\"'close'\" (onClick)=\"evtToggleMenu.emit(false)\"></dx-button>\n </div>\n\n <!-- menu -->\n @if (menuItems().length) {\n <nav class=\"mt-8\">\n <ul class=\"flex flex-col gap-2\">\n @for (item of menuItems(); track item.id) {\n @if (item.visible) {\n <li>\n <a\n class=\"flex gap-2 rounded p-2 !text-white\"\n [ngClass]=\"{\n 'hover:bg-zinc-600/60': !item.disabled,\n 'cursor-auto !opacity-25': item.disabled,\n }\"\n [routerLink]=\"item.disabled ? null : item.path\"\n routerLinkActive=\"bg-zinc-600/60\"\n (click)=\"evtToggleMenu.emit(false)\">\n <fa-icon class=\"basis-6\" [icon]=\"item.icon\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n </a>\n </li>\n }\n }\n </ul>\n </nav>\n }\n\n @if (menuInteractions().length) {\n <hr class=\"my-4 h-px border-0 bg-gray-600\" />\n\n <ul class=\"flex flex-col gap-2\">\n @for (item of menuInteractions(); track item.id) {\n @if (item.data.type === 'button') {\n <li class=\"item-setting-button\">\n <button\n type=\"button\"\n class=\"dx-theme-material-typography flex h-12 w-full items-center gap-2 rounded p-4\"\n [class]=\"item.class\"\n (click)=\"item.fun()\">\n <fa-icon class=\"basis-6\" [icon]=\"item.data.icon\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ item.label }}</span>\n </button>\n </li>\n } @else if (item.data.type === 'select') {\n <li class=\"flex h-12 items-center gap-4 rounded bg-zinc-600/60 p-3 shadow\">\n <span class=\"truncate\">{{ item.label }}</span>\n <dx-select-box\n class=\"flex-1 basis-24\"\n valueExpr=\"id\"\n displayExpr=\"description\"\n [items]=\"item.data.combos\"\n [value]=\"item.data.value\"\n stylingMode=\"underlined\"\n placeholder=\"\"\n (onValueChanged)=\"item.fun($event)\"></dx-select-box>\n </li>\n }\n }\n </ul>\n }\n\n <!-- setting -->\n <hr class=\"my-4 h-px border-0 bg-gray-600\" />\n\n <ul class=\"flex flex-col gap-2\">\n <li class=\"flex h-12 items-center gap-2 rounded bg-zinc-600/60 p-4 text-white shadow\">\n <fa-icon class=\"basis-6\" [icon]=\"darkMode() ? ICON.DARK_MODE : ICON.LIGHT_MODE\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ 'lblDarkMode' | translate }}</span>\n <dx-switch [value]=\"darkMode()\" (onValueChanged)=\"updateTheme($event)\"></dx-switch>\n </li>\n <li class=\"flex h-12 items-center gap-2 rounded bg-zinc-600/60 p-4 text-white shadow\">\n <fa-icon class=\"basis-6\" [icon]=\"ICON.LANGUAGE\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ 'lblLanguage' | translate }}</span>\n <dx-select-box\n class=\"basis-12\"\n [items]=\"translateService.translateInfo().languagesSupported\"\n [value]=\"translateService.translateInfo().language\"\n stylingMode=\"underlined\"\n (onValueChanged)=\"updateLanguage($event)\"></dx-select-box>\n </li>\n <!-- User | null | undefined -->\n @if (user() !== undefined) {\n <li>\n <button\n class=\"flex w-full items-center gap-2 rounded border border-white p-4 text-white shadow transition duration-300 ease-in-out hover:bg-white hover:text-gray-800\"\n (click)=\"user() ? logout() : goToLogin()\">\n <fa-icon [icon]=\"user() ? ICON.LOGOUT : ICON.LOGIN\"></fa-icon>\n <span class=\"flex-1 truncate\">{{ (user() ? 'lblLogout' : 'lblLogin') | translate }}</span>\n </button>\n </li>\n }\n </ul>\n\n <!-- logo -->\n <div class=\"mt-auto flex content-end border-b border-white\">\n <img\n class=\"ml-auto h-12\"\n [ngSrc]=\"pathBrandLogo()\"\n alt=\"Brand logo\"\n [height]=\"30\"\n [width]=\"125\"\n priority />\n </div>\n</aside>\n\n","/*\r\n * Public API Surface of uni-component-tw\r\n */\r\n\r\nexport * from './lib/uni-article/uni-article.component';\r\nexport * from './lib/uni-header/uni-header.component';\r\nexport * from './lib/uni-login-modal/uni-login-modal.component';\r\nexport * from './lib/uni-pie-chart/uni-pie-chart.component';\r\nexport * from './lib/uni-side-menu/uni-side-menu.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","DxButtonModule","i3"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { SimpleChanges, OnChanges } from '@angular/core';
2
2
  import { IconDefinition } from '@fortawesome/free-solid-svg-icons';
3
3
  import * as i0 from "@angular/core";
4
- export declare class UniArticleComponent implements OnChanges {
4
+ export declare class UNIArticleComponent implements OnChanges {
5
5
  readonly color: import("@angular/core").InputSignal<string>;
6
6
  readonly title: import("@angular/core").InputSignal<string | undefined>;
7
7
  readonly icon: import("@angular/core").InputSignal<IconDefinition | undefined>;
@@ -11,6 +11,6 @@ export declare class UniArticleComponent implements OnChanges {
11
11
  isHeader: import("@angular/core").Signal<string | boolean | IconDefinition>;
12
12
  ngOnChanges(changes: SimpleChanges): void;
13
13
  protected toggleIsOpen(): void;
14
- static ɵfac: i0.ɵɵFactoryDeclaration<UniArticleComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<UniArticleComponent, "uni-article", never, { "color": { "alias": "color"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "setIsOpen": { "alias": "setIsOpen"; "required": false; "isSignal": true; }; "headerCloseButton": { "alias": "headerCloseButton"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<UNIArticleComponent, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<UNIArticleComponent, "uni-article", never, { "color": { "alias": "color"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "setIsOpen": { "alias": "setIsOpen"; "required": false; "isSignal": true; }; "headerCloseButton": { "alias": "headerCloseButton"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
16
16
  }
@@ -1,11 +1,11 @@
1
1
  import * as i0 from "@angular/core";
2
- export declare class UniHeaderComponent {
2
+ export declare class UNIHeaderComponent {
3
3
  title: import("@angular/core").InputSignal<string>;
4
4
  version: import("@angular/core").InputSignal<string>;
5
5
  pathBrandLogo: import("@angular/core").InputSignal<string>;
6
6
  pathAppLogo: import("@angular/core").InputSignal<string | undefined>;
7
7
  sideMenu: import("@angular/core").InputSignal<boolean>;
8
8
  evtToggleMenu: import("@angular/core").OutputEmitterRef<true>;
9
- static ɵfac: i0.ɵɵFactoryDeclaration<UniHeaderComponent, never>;
10
- static ɵcmp: i0.ɵɵComponentDeclaration<UniHeaderComponent, "uni-header", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "version": { "alias": "version"; "required": true; "isSignal": true; }; "pathBrandLogo": { "alias": "pathBrandLogo"; "required": true; "isSignal": true; }; "pathAppLogo": { "alias": "pathAppLogo"; "required": false; "isSignal": true; }; "sideMenu": { "alias": "sideMenu"; "required": false; "isSignal": true; }; }, { "evtToggleMenu": "evtToggleMenu"; }, never, never, true, never>;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<UNIHeaderComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<UNIHeaderComponent, "uni-header", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "version": { "alias": "version"; "required": true; "isSignal": true; }; "pathBrandLogo": { "alias": "pathBrandLogo"; "required": true; "isSignal": true; }; "pathAppLogo": { "alias": "pathAppLogo"; "required": false; "isSignal": true; }; "sideMenu": { "alias": "sideMenu"; "required": false; "isSignal": true; }; }, { "evtToggleMenu": "evtToggleMenu"; }, never, never, true, never>;
11
11
  }
@@ -9,7 +9,7 @@ export type LoginForm = {
9
9
  username: string;
10
10
  password: string;
11
11
  };
12
- export declare class UniLoginModalComponent {
12
+ export declare class UNILoginModalComponent {
13
13
  readonly router: Router;
14
14
  readonly location: Location;
15
15
  readonly authService: UNIAuthService;
@@ -25,6 +25,6 @@ export declare class UniLoginModalComponent {
25
25
  login(): void;
26
26
  logout(): void;
27
27
  onHiding(): void;
28
- static ɵfac: i0.ɵɵFactoryDeclaration<UniLoginModalComponent, never>;
29
- static ɵcmp: i0.ɵɵComponentDeclaration<UniLoginModalComponent, "uni-login-modal", never, { "visibile": { "alias": "visibile"; "required": false; "isSignal": true; }; "routeHome": { "alias": "routeHome"; "required": false; "isSignal": true; }; "enableGoBack": { "alias": "enableGoBack"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<UNILoginModalComponent, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<UNILoginModalComponent, "uni-login-modal", never, { "visibile": { "alias": "visibile"; "required": false; "isSignal": true; }; "routeHome": { "alias": "routeHome"; "required": false; "isSignal": true; }; "enableGoBack": { "alias": "enableGoBack"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
30
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uni-component-tw",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.0.0",
6
6
  "@angular/core": "^18.0.0"