gentera-rdnd 0.1.7 → 0.1.9

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.
@@ -75,7 +75,7 @@ export class RdndInput {
75
75
  this.onBlur.emit(event);
76
76
  }
77
77
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RdndInput, deps: [{ token: i1.InputService }], target: i0.ɵɵFactoryTarget.Component });
78
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RdndInput, isStandalone: true, selector: "rdnd-input", inputs: { id: "id", name: "name", type: "type", placeholder: "placeholder", value: "value", validators: "validators", disabled: "disabled" }, outputs: { valueChange: "valueChange", onKeyDown: "onKeyDown", onPaste: "onPaste", onFocus: "onFocus", onBlur: "onBlur" }, ngImport: i0, template: "<div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\r\n <!-- \u00CDcono de error que aparece por encima del campo si hay error -->\r\n <span *ngIf=\"hasError()\" class=\"error-icon\" (click)=\"toggleErrorDisplay()\">&#9432;</span>\r\n\r\n <!-- Bot\u00F3n de mostrar/ocultar contrase\u00F1a centrado verticalmente -->\r\n <button *ngIf=\"type === 'password'\" type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\">\r\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword\"></fa-icon>\r\n </button>\r\n\r\n <!-- Input que cambia de borde si tiene error -->\r\n <input\r\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (paste)=\"handlePaste($event)\"\r\n (focus)=\"handleFocus($event)\"\r\n (blur)=\"handleBlur($event)\"\r\n [ngClass]=\"{ 'error-border': hasError() }\"\r\n />\r\n\r\n <!-- Mensaje de error que aparece solo cuando se clickea en el \u00EDcono de error -->\r\n <div *ngIf=\"control.invalid && control.dirty && showError\" class=\"error-message\">\r\n {{ getErrorMessage() }}\r\n </div>\r\n</div>\r\n", styles: [".input-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}input{position:relative;width:100%;min-width:100%;padding:7px 35px 7px 8px;border-radius:3px;font-family:Poppins,sans-serif;height:40px;font-size:16px;border:1px solid #ccc;outline:none;box-sizing:border-box;transition:all .3s ease;background-color:#fff!important;appearance:none;-moz-appearance:textfield;-webkit-appearance:textfield}input:-webkit-autofill{background-color:#fff!important}input.error-border{border-color:red}input:focus{border:1px solid blue}.error-icon{position:absolute;right:8px;top:1px;bottom:1px;font-size:24px;color:red;cursor:pointer;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:3;background-color:#fff}.error-message{position:absolute;bottom:0;left:0;color:red;padding:0 0 0 8px;border-radius:4px;font-size:12px;font-family:sans-serif;white-space:nowrap}.toggle-button{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:transparent;border:none;cursor:pointer;z-index:2}.icon{transition:opacity .3s ease}.icon.active{opacity:.5}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
78
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RdndInput, isStandalone: true, selector: "rdnd-input", inputs: { id: "id", name: "name", type: "type", placeholder: "placeholder", value: "value", validators: "validators", disabled: "disabled" }, outputs: { valueChange: "valueChange", onKeyDown: "onKeyDown", onPaste: "onPaste", onFocus: "onFocus", onBlur: "onBlur" }, ngImport: i0, template: " <div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\r\n <!-- \u00CDcono de error que aparece por encima del campo si hay error -->\r\n <span *ngIf=\"hasError()\" class=\"error-icon\" (click)=\"toggleErrorDisplay()\">&#9432;</span>\r\n\r\n <!-- Bot\u00F3n de mostrar/ocultar contrase\u00F1a centrado verticalmente -->\r\n <button *ngIf=\"type === 'password'\" type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\">\r\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword\"></fa-icon>\r\n </button>\r\n\r\n <!-- Input que cambia de borde si tiene error -->\r\n <input\r\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (paste)=\"handlePaste($event)\"\r\n (focus)=\"handleFocus($event)\"\r\n (blur)=\"handleBlur($event)\"\r\n [ngClass]=\"{ 'error-border': hasError() }\"\r\n />\r\n\r\n <!-- Mensaje de error que aparece solo cuando se clickea en el \u00EDcono de error -->\r\n <div *ngIf=\"control.invalid && control.dirty && showError\" class=\"error-message\">\r\n {{ getErrorMessage() }}\r\n </div>\r\n </div>\r\n", styles: [".input-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}input{position:relative;width:100%;min-width:100%;padding:7px 35px 7px 8px;border-radius:3px;font-family:Poppins,sans-serif;height:40px;font-size:16px;border:1px solid #ccc;outline:none;box-sizing:border-box;transition:all .3s ease;background-color:#fff!important;appearance:none;-moz-appearance:textfield;-webkit-appearance:textfield}input:-webkit-autofill{background-color:#fff!important}input.error-border{border-color:red}input:focus{border:1px solid blue}.error-icon{position:absolute;right:8px;top:1px;bottom:1px;font-size:24px;color:red;cursor:pointer;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:3;background-color:#fff}.error-message{position:absolute;bottom:0;left:0;color:red;padding:0 0 0 8px;border-radius:4px;font-size:12px;font-family:sans-serif;white-space:nowrap}.toggle-button{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:transparent;border:none;cursor:pointer;z-index:2}.icon{transition:opacity .3s ease}.icon.active{opacity:.5}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
79
79
  }
80
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RdndInput, decorators: [{
81
81
  type: Component,
@@ -84,7 +84,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
84
84
  NgClass,
85
85
  FontAwesomeModule,
86
86
  ReactiveFormsModule
87
- ], template: "<div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\r\n <!-- \u00CDcono de error que aparece por encima del campo si hay error -->\r\n <span *ngIf=\"hasError()\" class=\"error-icon\" (click)=\"toggleErrorDisplay()\">&#9432;</span>\r\n\r\n <!-- Bot\u00F3n de mostrar/ocultar contrase\u00F1a centrado verticalmente -->\r\n <button *ngIf=\"type === 'password'\" type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\">\r\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword\"></fa-icon>\r\n </button>\r\n\r\n <!-- Input que cambia de borde si tiene error -->\r\n <input\r\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (paste)=\"handlePaste($event)\"\r\n (focus)=\"handleFocus($event)\"\r\n (blur)=\"handleBlur($event)\"\r\n [ngClass]=\"{ 'error-border': hasError() }\"\r\n />\r\n\r\n <!-- Mensaje de error que aparece solo cuando se clickea en el \u00EDcono de error -->\r\n <div *ngIf=\"control.invalid && control.dirty && showError\" class=\"error-message\">\r\n {{ getErrorMessage() }}\r\n </div>\r\n</div>\r\n", styles: [".input-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}input{position:relative;width:100%;min-width:100%;padding:7px 35px 7px 8px;border-radius:3px;font-family:Poppins,sans-serif;height:40px;font-size:16px;border:1px solid #ccc;outline:none;box-sizing:border-box;transition:all .3s ease;background-color:#fff!important;appearance:none;-moz-appearance:textfield;-webkit-appearance:textfield}input:-webkit-autofill{background-color:#fff!important}input.error-border{border-color:red}input:focus{border:1px solid blue}.error-icon{position:absolute;right:8px;top:1px;bottom:1px;font-size:24px;color:red;cursor:pointer;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:3;background-color:#fff}.error-message{position:absolute;bottom:0;left:0;color:red;padding:0 0 0 8px;border-radius:4px;font-size:12px;font-family:sans-serif;white-space:nowrap}.toggle-button{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:transparent;border:none;cursor:pointer;z-index:2}.icon{transition:opacity .3s ease}.icon.active{opacity:.5}\n"] }]
87
+ ], template: " <div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\r\n <!-- \u00CDcono de error que aparece por encima del campo si hay error -->\r\n <span *ngIf=\"hasError()\" class=\"error-icon\" (click)=\"toggleErrorDisplay()\">&#9432;</span>\r\n\r\n <!-- Bot\u00F3n de mostrar/ocultar contrase\u00F1a centrado verticalmente -->\r\n <button *ngIf=\"type === 'password'\" type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\">\r\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword\"></fa-icon>\r\n </button>\r\n\r\n <!-- Input que cambia de borde si tiene error -->\r\n <input\r\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (paste)=\"handlePaste($event)\"\r\n (focus)=\"handleFocus($event)\"\r\n (blur)=\"handleBlur($event)\"\r\n [ngClass]=\"{ 'error-border': hasError() }\"\r\n />\r\n\r\n <!-- Mensaje de error que aparece solo cuando se clickea en el \u00EDcono de error -->\r\n <div *ngIf=\"control.invalid && control.dirty && showError\" class=\"error-message\">\r\n {{ getErrorMessage() }}\r\n </div>\r\n </div>\r\n", styles: [".input-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}input{position:relative;width:100%;min-width:100%;padding:7px 35px 7px 8px;border-radius:3px;font-family:Poppins,sans-serif;height:40px;font-size:16px;border:1px solid #ccc;outline:none;box-sizing:border-box;transition:all .3s ease;background-color:#fff!important;appearance:none;-moz-appearance:textfield;-webkit-appearance:textfield}input:-webkit-autofill{background-color:#fff!important}input.error-border{border-color:red}input:focus{border:1px solid blue}.error-icon{position:absolute;right:8px;top:1px;bottom:1px;font-size:24px;color:red;cursor:pointer;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:3;background-color:#fff}.error-message{position:absolute;bottom:0;left:0;color:red;padding:0 0 0 8px;border-radius:4px;font-size:12px;font-family:sans-serif;white-space:nowrap}.toggle-button{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:transparent;border:none;cursor:pointer;z-index:2}.icon{transition:opacity .3s ease}.icon.active{opacity:.5}\n"] }]
88
88
  }], ctorParameters: () => [{ type: i1.InputService }], propDecorators: { id: [{
89
89
  type: Input
90
90
  }], name: [{
@@ -110,4 +110,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
110
110
  }], onBlur: [{
111
111
  type: Output
112
112
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VudGVyYS1yZG5kL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW50ZXJhLXJkbmQvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBNEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDN0QsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7QUFnQm5FLE1BQU0sT0FBTyxTQUFTO0lBb0JBO0lBbkJYLEVBQUUsQ0FBVTtJQUNaLElBQUksQ0FBVTtJQUNkLElBQUksR0FBbUMsTUFBTSxDQUFDO0lBQzlDLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixVQUFVLEdBQWtCLEVBQUUsQ0FBQztJQUMvQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBRXpCLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQ3pDLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztJQUM5QyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7SUFDN0MsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFDekMsTUFBTSxHQUFHLElBQUksWUFBWSxF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O0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFxQjtRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBaUI7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQzt3R0FuRlUsU0FBUzs0RkFBVCxTQUFTLCtVQ3BCdEIsMHZDQTJCQSxxcENEZEksSUFBSSw2RkFDSixPQUFPLG1GQUNQLGlCQUFpQiw0UEFDakIsbUJBQW1COzs0RkFJVixTQUFTO2tCQVpyQixTQUFTOytCQUNFLFlBQVksY0FFVixJQUFJLFdBQ1A7d0JBQ1AsSUFBSTt3QkFDSixPQUFPO3dCQUNQLGlCQUFpQjt3QkFDakIsbUJBQW1CO3FCQUNwQjtpRkFJUSxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge2ZhRXllU2xhc2h9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtGb250QXdlc29tZU1vZHVsZX0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xyXG5pbXBvcnQge0lucHV0U2VydmljZX0gZnJvbSBcIi4uLy4uL2hvb2tzL2lucHV0LnNlcnZpY2VcIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3JkbmQtaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIEZvbnRBd2Vzb21lTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmRuZElucHV0IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBpZCE6IHN0cmluZztcclxuICBASW5wdXQoKSBuYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHR5cGU6ICd0ZXh0JyB8ICdwYXNzd29yZCcgfCAnbnVtYmVyJyA9ICd0ZXh0JztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgb25LZXlEb3duID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBvblBhc3RlID0gbmV3IEV2ZW50RW1pdHRlcjxDbGlwYm9hcmRFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgb25Gb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgb25CbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xyXG5cclxuICBjb250cm9sITogRm9ybUNvbnRyb2w7XHJcbiAgZmFFeWVTbGFzaCA9IGZhRXllU2xhc2g7XHJcbiAgc2hvd1Bhc3N3b3JkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0Vycm9yOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5wdXRTZXJ2aWNlOiBJbnB1dFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jb250cm9sID0gbmV3IEZvcm1Db250cm9sKHRoaXMudmFsdWUsIHRoaXMudmFsaWRhdG9ycyk7XHJcblxyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgdGhpcy5pbnB1dFNlcnZpY2UudXBkYXRlSW5wdXRTdGF0ZSh0aGlzLmNvbnRyb2wsIHRoaXMuaWQpO1xyXG5cclxuICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gICAgICB0aGlzLmlucHV0U2VydmljZS51cGRhdGVJbnB1dFN0YXRlKHRoaXMuY29udHJvbCwgdGhpcy5pZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBpZiAodGhpcy5jb250cm9sICYmIHRoaXMuY29udHJvbC5lcnJvcnMpIHtcclxuICAgICAgY29uc3QgZXJyb3JLZXlzID0gT2JqZWN0LmtleXModGhpcy5jb250cm9sLmVycm9ycyk7XHJcbiAgICAgIGlmIChlcnJvcktleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IGZpcnN0RXJyb3JLZXkgPSBlcnJvcktleXNbMF07XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLmNvbnRyb2wuZXJyb3JzIGFzIFZhbGlkYXRpb25FcnJvcnMpW2ZpcnN0RXJyb3JLZXldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUVycm9yRGlzcGxheSgpIHtcclxuICAgIHRoaXMuc2hvd0Vycm9yID0gIXRoaXMuc2hvd0Vycm9yO1xyXG4gIH1cclxuXHJcbiAgaGFzRXJyb3IoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sLmludmFsaWQgJiYgKHRoaXMuY29udHJvbC5kaXJ0eSB8fCB0aGlzLmNvbnRyb2wudG91Y2hlZCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVUb2dnbGVQYXNzd29yZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Bhc3N3b3JkID0gIXRoaXMuc2hvd1Bhc3N3b3JkO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgYWxsb3dSZWdleCA9IC9eW2EtekEtWiFAIyQlXiYqKClfK1xcLT1cXFtcXF17fTsnOlwiXFxcXHwsLjw+XFwvP10qJC9cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMudHlwZSA9PT0gJ251bWJlcicgJiYgIShcclxuICAgICAgICBbJ0JhY2tzcGFjZScsICdTaGlmdCcsICdBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCcsICdBcnJvd1VwJywgJ0Fycm93RG93biddLmluY2x1ZGVzKGV2ZW50LmtleSlcclxuICAgICAgKSAmJiAhKGV2ZW50LmFsdEtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuc2hpZnRLZXkpXHJcbiAgICApIHtcclxuICAgICAgZXZlbnQua2V5Lm1hdGNoKGFsbG93UmVnZXgpID8gZXZlbnQucHJldmVudERlZmF1bHQoKSA6IHRoaXMub25LZXlEb3duLmVtaXQoZXZlbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vbktleURvd24uZW1pdChldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVQYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMub25QYXN0ZS5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZvY3VzKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVCbHVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBbbmdDbGFzc109XCJ7ICdkaXNhYmxlZCc6IGRpc2FibGVkIH1cIiBjbGFzcz1cImlucHV0LWNvbnRhaW5lclwiPlxyXG4gIDwhLS0gw41jb25vIGRlIGVycm9yIHF1ZSBhcGFyZWNlIHBvciBlbmNpbWEgZGVsIGNhbXBvIHNpIGhheSBlcnJvciAtLT5cclxuICA8c3BhbiAqbmdJZj1cImhhc0Vycm9yKClcIiBjbGFzcz1cImVycm9yLWljb25cIiAoY2xpY2spPVwidG9nZ2xlRXJyb3JEaXNwbGF5KClcIj4mIzk0MzI7PC9zcGFuPlxyXG5cclxuICA8IS0tIEJvdMOzbiBkZSBtb3N0cmFyL29jdWx0YXIgY29udHJhc2XDsWEgY2VudHJhZG8gdmVydGljYWxtZW50ZSAtLT5cclxuICA8YnV0dG9uICpuZ0lmPVwidHlwZSA9PT0gJ3Bhc3N3b3JkJ1wiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiaGFuZGxlVG9nZ2xlUGFzc3dvcmQoKVwiIGNsYXNzPVwidG9nZ2xlLWJ1dHRvblwiPlxyXG4gICAgPGZhLWljb24gW2ljb25dPVwiZmFFeWVTbGFzaFwiIGNsYXNzPVwiaWNvblwiIFtjbGFzcy5hY3RpdmVdPVwic2hvd1Bhc3N3b3JkXCI+PC9mYS1pY29uPlxyXG4gIDwvYnV0dG9uPlxyXG5cclxuICA8IS0tIElucHV0IHF1ZSBjYW1iaWEgZGUgYm9yZGUgc2kgdGllbmUgZXJyb3IgLS0+XHJcbiAgPGlucHV0XHJcbiAgICBbdHlwZV09XCJ0eXBlID09PSAncGFzc3dvcmQnICYmIHNob3dQYXNzd29yZCA/ICd0ZXh0JyA6IHR5cGVcIlxyXG4gICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIlxyXG4gICAgKHBhc3RlKT1cImhhbmRsZVBhc3RlKCRldmVudClcIlxyXG4gICAgKGZvY3VzKT1cImhhbmRsZUZvY3VzKCRldmVudClcIlxyXG4gICAgKGJsdXIpPVwiaGFuZGxlQmx1cigkZXZlbnQpXCJcclxuICAgIFtuZ0NsYXNzXT1cInsgJ2Vycm9yLWJvcmRlcic6IGhhc0Vycm9yKCkgfVwiXHJcbiAgLz5cclxuXHJcbiAgPCEtLSBNZW5zYWplIGRlIGVycm9yIHF1ZSBhcGFyZWNlIHNvbG8gY3VhbmRvIHNlIGNsaWNrZWEgZW4gZWwgw61jb25vIGRlIGVycm9yIC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJjb250cm9sLmludmFsaWQgJiYgY29udHJvbC5kaXJ0eSAmJiBzaG93RXJyb3JcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cclxuICAgIHt7IGdldEVycm9yTWVzc2FnZSgpIH19XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VudGVyYS1yZG5kL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW50ZXJhLXJkbmQvc3JjL2xpYi9jb21wb25lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBNEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDN0QsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7QUFnQm5FLE1BQU0sT0FBTyxTQUFTO0lBb0JBO0lBbkJYLEVBQUUsQ0FBVTtJQUNaLElBQUksQ0FBVTtJQUNkLElBQUksR0FBbUMsTUFBTSxDQUFDO0lBQzlDLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixVQUFVLEdBQWtCLEVBQUUsQ0FBQztJQUMvQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBRXpCLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQ3pDLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztJQUM5QyxPQUFPLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7SUFDN0MsT0FBTyxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFDekMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7SUFFbEQsT0FBTyxDQUFlO0lBQ3RCLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDeEIsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUM5QixTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTNCLFlBQW9CLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQzlDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU1RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkQsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN6QixNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLE9BQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUEyQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUN6QyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQW9CO1FBQ2hDLE1BQU0sVUFBVSxHQUFHLGdEQUFnRCxDQUFBO1FBRW5FLElBQ0UsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxDQUN6QixDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FDOUYsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUN4RSxDQUFDO1lBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEYsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFxQjtRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBaUI7UUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQzt3R0FuRlUsU0FBUzs0RkFBVCxTQUFTLCtVQ3BCdEIsMHlDQTJCQSxxcENEZEksSUFBSSw2RkFDSixPQUFPLG1GQUNQLGlCQUFpQiw0UEFDakIsbUJBQW1COzs0RkFJVixTQUFTO2tCQVpyQixTQUFTOytCQUNFLFlBQVksY0FFVixJQUFJLFdBQ1A7d0JBQ1AsSUFBSTt3QkFDSixPQUFPO3dCQUNQLGlCQUFpQjt3QkFDakIsbUJBQW1CO3FCQUNwQjtpRkFJUSxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge2ZhRXllU2xhc2h9IGZyb20gJ0Bmb3J0YXdlc29tZS9mcmVlLXNvbGlkLXN2Zy1pY29ucyc7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtGb250QXdlc29tZU1vZHVsZX0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xyXG5pbXBvcnQge0lucHV0U2VydmljZX0gZnJvbSBcIi4uLy4uL2hvb2tzL2lucHV0LnNlcnZpY2VcIjtcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3JkbmQtaW5wdXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbnB1dC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIEZvbnRBd2Vzb21lTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW5wdXQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmRuZElucHV0IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBpZCE6IHN0cmluZztcclxuICBASW5wdXQoKSBuYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHR5cGU6ICd0ZXh0JyB8ICdwYXNzd29yZCcgfCAnbnVtYmVyJyA9ICd0ZXh0JztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgb25LZXlEb3duID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBvblBhc3RlID0gbmV3IEV2ZW50RW1pdHRlcjxDbGlwYm9hcmRFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgb25Gb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgb25CbHVyID0gbmV3IEV2ZW50RW1pdHRlcjxGb2N1c0V2ZW50PigpO1xyXG5cclxuICBjb250cm9sITogRm9ybUNvbnRyb2w7XHJcbiAgZmFFeWVTbGFzaCA9IGZhRXllU2xhc2g7XHJcbiAgc2hvd1Bhc3N3b3JkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd0Vycm9yOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5wdXRTZXJ2aWNlOiBJbnB1dFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5jb250cm9sID0gbmV3IEZvcm1Db250cm9sKHRoaXMudmFsdWUsIHRoaXMudmFsaWRhdG9ycyk7XHJcblxyXG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgdGhpcy5pbnB1dFNlcnZpY2UudXBkYXRlSW5wdXRTdGF0ZSh0aGlzLmNvbnRyb2wsIHRoaXMuaWQpO1xyXG5cclxuICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gICAgICB0aGlzLmlucHV0U2VydmljZS51cGRhdGVJbnB1dFN0YXRlKHRoaXMuY29udHJvbCwgdGhpcy5pZCk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBpZiAodGhpcy5jb250cm9sICYmIHRoaXMuY29udHJvbC5lcnJvcnMpIHtcclxuICAgICAgY29uc3QgZXJyb3JLZXlzID0gT2JqZWN0LmtleXModGhpcy5jb250cm9sLmVycm9ycyk7XHJcbiAgICAgIGlmIChlcnJvcktleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IGZpcnN0RXJyb3JLZXkgPSBlcnJvcktleXNbMF07XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLmNvbnRyb2wuZXJyb3JzIGFzIFZhbGlkYXRpb25FcnJvcnMpW2ZpcnN0RXJyb3JLZXldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUVycm9yRGlzcGxheSgpIHtcclxuICAgIHRoaXMuc2hvd0Vycm9yID0gIXRoaXMuc2hvd0Vycm9yO1xyXG4gIH1cclxuXHJcbiAgaGFzRXJyb3IoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250cm9sLmludmFsaWQgJiYgKHRoaXMuY29udHJvbC5kaXJ0eSB8fCB0aGlzLmNvbnRyb2wudG91Y2hlZCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVUb2dnbGVQYXNzd29yZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1Bhc3N3b3JkID0gIXRoaXMuc2hvd1Bhc3N3b3JkO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgYWxsb3dSZWdleCA9IC9eW2EtekEtWiFAIyQlXiYqKClfK1xcLT1cXFtcXF17fTsnOlwiXFxcXHwsLjw+XFwvP10qJC9cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMudHlwZSA9PT0gJ251bWJlcicgJiYgIShcclxuICAgICAgICBbJ0JhY2tzcGFjZScsICdTaGlmdCcsICdBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCcsICdBcnJvd1VwJywgJ0Fycm93RG93biddLmluY2x1ZGVzKGV2ZW50LmtleSlcclxuICAgICAgKSAmJiAhKGV2ZW50LmFsdEtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuc2hpZnRLZXkpXHJcbiAgICApIHtcclxuICAgICAgZXZlbnQua2V5Lm1hdGNoKGFsbG93UmVnZXgpID8gZXZlbnQucHJldmVudERlZmF1bHQoKSA6IHRoaXMub25LZXlEb3duLmVtaXQoZXZlbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vbktleURvd24uZW1pdChldmVudCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVQYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMub25QYXN0ZS5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZvY3VzKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uRm9jdXMuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVCbHVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQmx1ci5lbWl0KGV2ZW50KTtcclxuICB9XHJcbn1cclxuIiwiICA8ZGl2IFtuZ0NsYXNzXT1cInsgJ2Rpc2FibGVkJzogZGlzYWJsZWQgfVwiIGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICA8IS0tIMONY29ubyBkZSBlcnJvciBxdWUgYXBhcmVjZSBwb3IgZW5jaW1hIGRlbCBjYW1wbyBzaSBoYXkgZXJyb3IgLS0+XHJcbiAgICA8c3BhbiAqbmdJZj1cImhhc0Vycm9yKClcIiBjbGFzcz1cImVycm9yLWljb25cIiAoY2xpY2spPVwidG9nZ2xlRXJyb3JEaXNwbGF5KClcIj4mIzk0MzI7PC9zcGFuPlxyXG5cclxuICAgIDwhLS0gQm90w7NuIGRlIG1vc3RyYXIvb2N1bHRhciBjb250cmFzZcOxYSBjZW50cmFkbyB2ZXJ0aWNhbG1lbnRlIC0tPlxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cInR5cGUgPT09ICdwYXNzd29yZCdcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImhhbmRsZVRvZ2dsZVBhc3N3b3JkKClcIiBjbGFzcz1cInRvZ2dsZS1idXR0b25cIj5cclxuICAgICAgPGZhLWljb24gW2ljb25dPVwiZmFFeWVTbGFzaFwiIGNsYXNzPVwiaWNvblwiIFtjbGFzcy5hY3RpdmVdPVwic2hvd1Bhc3N3b3JkXCI+PC9mYS1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPCEtLSBJbnB1dCBxdWUgY2FtYmlhIGRlIGJvcmRlIHNpIHRpZW5lIGVycm9yIC0tPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIFt0eXBlXT1cInR5cGUgPT09ICdwYXNzd29yZCcgJiYgc2hvd1Bhc3N3b3JkID8gJ3RleHQnIDogdHlwZVwiXHJcbiAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCJcclxuICAgICAgKHBhc3RlKT1cImhhbmRsZVBhc3RlKCRldmVudClcIlxyXG4gICAgICAoZm9jdXMpPVwiaGFuZGxlRm9jdXMoJGV2ZW50KVwiXHJcbiAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoJGV2ZW50KVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2Vycm9yLWJvcmRlcic6IGhhc0Vycm9yKCkgfVwiXHJcbiAgICAvPlxyXG5cclxuICAgIDwhLS0gTWVuc2FqZSBkZSBlcnJvciBxdWUgYXBhcmVjZSBzb2xvIGN1YW5kbyBzZSBjbGlja2VhIGVuIGVsIMOtY29ubyBkZSBlcnJvciAtLT5cclxuICAgIDxkaXYgKm5nSWY9XCJjb250cm9sLmludmFsaWQgJiYgY29udHJvbC5kaXJ0eSAmJiBzaG93RXJyb3JcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cclxuICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlKCkgfX1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4iXX0=
@@ -1,32 +1,44 @@
1
1
  import { Component, Input, output } from '@angular/core';
2
- import { FaIconComponent } from "@fortawesome/angular-fontawesome";
3
- import { faArrowRight, } from "@fortawesome/free-solid-svg-icons";
4
- import { NgClass, NgStyle } from "@angular/common";
5
- import { RouterLink } from "@angular/router";
2
+ import { FaIconComponent } from '@fortawesome/angular-fontawesome';
3
+ import { faArrowRight, faChevronDown, faChevronUp, } from '@fortawesome/free-solid-svg-icons';
4
+ import { NgClass, NgStyle, NgIf, NgFor, NgTemplateOutlet } from '@angular/common';
5
+ import { RouterLink } from '@angular/router';
6
6
  import * as i0 from "@angular/core";
7
7
  export class RdndSidebar {
8
- // Icons
9
- faArrowRight = faArrowRight;
10
- // Inputs & Outputs
11
8
  show = false;
12
9
  entries = [];
13
- backgroundStart = "#C2185B";
14
- backgroundEnd = "#7E0083";
10
+ backgroundStart = '#C2185B';
11
+ backgroundEnd = '#7E0083';
15
12
  onClickEntry = output();
13
+ faArrowRight = faArrowRight;
14
+ faChevronDown = faChevronDown;
15
+ faChevronUp = faChevronUp;
16
+ openSections = new Set();
16
17
  handleClick = () => {
17
18
  this.onClickEntry.emit();
18
19
  };
20
+ toggleSection(name) {
21
+ this.openSections.has(name)
22
+ ? this.openSections.delete(name)
23
+ : this.openSections.add(name);
24
+ }
25
+ isSectionOpen(name) {
26
+ return this.openSections.has(name);
27
+ }
19
28
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RdndSidebar, deps: [], target: i0.ɵɵFactoryTarget.Component });
20
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RdndSidebar, isStandalone: true, selector: "rdnd-sidebar", inputs: { show: "show", entries: "entries", backgroundStart: "backgroundStart", backgroundEnd: "backgroundEnd" }, outputs: { onClickEntry: "onClickEntry" }, ngImport: i0, template: "@if (show) {\r\n <div class=\"background-overlay\" (click)=\"handleClick()\" [ngClass]=\"show ? 'open' : 'closed' \"></div>\r\n}\r\n\r\n<aside\r\n id=\"sidebar\"\r\n class=\"sidebar\"\r\n [ngClass]=\"show ? 'open' : 'closed' \"\r\n [ngStyle]=\"{'background': 'linear-gradient(to bottom, ' + backgroundStart + ', ' + backgroundEnd + ')'}\"\r\n>\r\n\r\n <ul class=\"entries\">\r\n\r\n<!-- <li class=\"section-name\">\r\n M\u00F3dulos\r\n </li>-->\r\n\r\n @for (entry of entries; track entry.name) {\r\n <li>\r\n <a [routerLink]=\"[entry.url]\" class=\"entry\" (click)=\"handleClick()\">\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ entry.name }}\r\n </a>\r\n </li>\r\n }\r\n\r\n </ul>\r\n\r\n</aside>\r\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1;display:flex}to{opacity:0;display:none}}div.background-overlay{position:fixed;top:40px;left:0;width:100%;height:calc(100% - 40px);background-color:#000c;transition:all .3s ease-in-out;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:89}div.background-overlay.closed{opacity:0;visibility:hidden;animation:fadeOut .3s ease-in-out}div.background-overlay.open{opacity:1;visibility:visible;animation:fadeIn .3s ease-in-out}aside.sidebar{border-top:1px solid white;position:fixed;top:40px;height:calc(100% - 40px);overflow-y:auto;width:100%;max-width:400px;padding:40px 0 16px;display:grid;grid-template-rows:auto 1fr auto;gap:10px;box-sizing:border-box;transition:left .3s ease-in-out;box-shadow:-2px 0 55px #0000004d;z-index:90}aside.sidebar.open{left:0}aside.sidebar.closed{left:-100%}aside.sidebar .entries{width:100%;box-sizing:border-box;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:0}aside.sidebar .entries li{width:100%;box-sizing:border-box}aside.sidebar .entries li.section-name{width:100%;margin:0;padding:14px 20px;color:#fff}aside.sidebar .entries li .entry{width:100%;margin:0;padding:14px 20px;box-sizing:border-box;background-color:transparent;transition:all .3s ease;color:#fff;text-decoration:none;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px}aside.sidebar .entries li .entry:hover{background-color:#0000004d}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
29
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RdndSidebar, isStandalone: true, selector: "rdnd-sidebar", inputs: { show: "show", entries: "entries", backgroundStart: "backgroundStart", backgroundEnd: "backgroundEnd" }, outputs: { onClickEntry: "onClickEntry" }, ngImport: i0, template: "@if (show) {\r\n <div\r\n class=\"background-overlay\"\r\n (click)=\"handleClick()\"\r\n [ngClass]=\"show ? 'open' : 'closed'\">\r\n </div>\r\n}\r\n\r\n<aside\r\n id=\"sidebar\"\r\n class=\"sidebar\"\r\n [ngClass]=\"show ? 'open' : 'closed'\"\r\n [ngStyle]=\"{\r\n 'background': 'linear-gradient(to bottom, ' + backgroundStart + ', ' + backgroundEnd + ')'\r\n }\"\r\n>\r\n <ul class=\"entries\">\r\n @for (item of entries; track item.name) {\r\n @if (item.type === 'ENTRY') {\r\n <li>\r\n <a [routerLink]=\"[item.url]\" class=\"entry\" (click)=\"handleClick()\">\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ item.name }}\r\n </a>\r\n </li>\r\n } @else if (item.type === 'SECTION') {\r\n <li class=\"section\">\r\n <div class=\"section-title\" (click)=\"toggleSection(item.name)\">\r\n <fa-icon\r\n [icon]=\"isSectionOpen(item.name) ? faChevronUp : faChevronDown\"\r\n class=\"chevron\"\r\n />\r\n <span>{{ item.name }}</span>\r\n </div>\r\n\r\n @if (isSectionOpen(item.name)) {\r\n <ul class=\"section-entries\">\r\n @for (entry of item.entries; track entry.name) {\r\n <li>\r\n <a\r\n [routerLink]=\"[item.url + '/' + entry.url]\"\r\n class=\"entry\"\r\n (click)=\"handleClick()\"\r\n >\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ entry.name }}\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n }\r\n\r\n </ul>\r\n</aside>\r\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1;display:flex}to{opacity:0;display:none}}div.background-overlay{position:fixed;top:40px;left:0;width:100%;height:calc(100% - 40px);background-color:#000c;transition:all .3s ease-in-out;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:89}div.background-overlay.closed{opacity:0;visibility:hidden;animation:fadeOut .3s ease-in-out}div.background-overlay.open{opacity:1;visibility:visible;animation:fadeIn .3s ease-in-out}aside.sidebar{border-top:1px solid white;position:fixed;top:40px;height:calc(100% - 40px);overflow-y:auto;width:100%;max-width:400px;padding:40px 0 16px;display:grid;grid-template-rows:auto 1fr auto;gap:10px;box-sizing:border-box;transition:left .3s ease-in-out;box-shadow:-2px 0 55px #0000004d;z-index:90}aside.sidebar.open{left:0}aside.sidebar.closed{left:-100%}aside.sidebar .entries{width:100%;box-sizing:border-box;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:0}aside.sidebar .entries li{width:100%;box-sizing:border-box}aside.sidebar .entries li .entry{width:100%;margin:0;padding:14px 20px;box-sizing:border-box;background-color:transparent;transition:all .3s ease;color:#fff;text-decoration:none;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px}aside.sidebar .entries li .entry:hover{background-color:#0000004d}aside.sidebar .entries li.section{width:100%;box-sizing:border-box}aside.sidebar .entries li.section .section-title{width:100%;margin:0;padding:14px 20px;color:#fff;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px;-webkit-user-select:none;user-select:none;cursor:pointer}aside.sidebar .entries li.section .section-title .chevron{font-size:14px}aside.sidebar .entries li.section .section-title:hover{background-color:#ffffff0d}aside.sidebar .entries li.section .section-entries{border-bottom:1px solid rgba(255,255,255,.5);animation:fadeIn .3s ease-in-out}aside.sidebar .entries li.section .section-entries .entry{padding:14px 20px 14px 30px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] });
21
30
  }
22
31
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RdndSidebar, decorators: [{
23
32
  type: Component,
24
33
  args: [{ selector: 'rdnd-sidebar', standalone: true, imports: [
25
34
  NgClass,
35
+ NgStyle,
36
+ NgIf,
37
+ NgFor,
38
+ NgTemplateOutlet,
26
39
  RouterLink,
27
40
  FaIconComponent,
28
- NgStyle
29
- ], template: "@if (show) {\r\n <div class=\"background-overlay\" (click)=\"handleClick()\" [ngClass]=\"show ? 'open' : 'closed' \"></div>\r\n}\r\n\r\n<aside\r\n id=\"sidebar\"\r\n class=\"sidebar\"\r\n [ngClass]=\"show ? 'open' : 'closed' \"\r\n [ngStyle]=\"{'background': 'linear-gradient(to bottom, ' + backgroundStart + ', ' + backgroundEnd + ')'}\"\r\n>\r\n\r\n <ul class=\"entries\">\r\n\r\n<!-- <li class=\"section-name\">\r\n M\u00F3dulos\r\n </li>-->\r\n\r\n @for (entry of entries; track entry.name) {\r\n <li>\r\n <a [routerLink]=\"[entry.url]\" class=\"entry\" (click)=\"handleClick()\">\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ entry.name }}\r\n </a>\r\n </li>\r\n }\r\n\r\n </ul>\r\n\r\n</aside>\r\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1;display:flex}to{opacity:0;display:none}}div.background-overlay{position:fixed;top:40px;left:0;width:100%;height:calc(100% - 40px);background-color:#000c;transition:all .3s ease-in-out;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:89}div.background-overlay.closed{opacity:0;visibility:hidden;animation:fadeOut .3s ease-in-out}div.background-overlay.open{opacity:1;visibility:visible;animation:fadeIn .3s ease-in-out}aside.sidebar{border-top:1px solid white;position:fixed;top:40px;height:calc(100% - 40px);overflow-y:auto;width:100%;max-width:400px;padding:40px 0 16px;display:grid;grid-template-rows:auto 1fr auto;gap:10px;box-sizing:border-box;transition:left .3s ease-in-out;box-shadow:-2px 0 55px #0000004d;z-index:90}aside.sidebar.open{left:0}aside.sidebar.closed{left:-100%}aside.sidebar .entries{width:100%;box-sizing:border-box;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:0}aside.sidebar .entries li{width:100%;box-sizing:border-box}aside.sidebar .entries li.section-name{width:100%;margin:0;padding:14px 20px;color:#fff}aside.sidebar .entries li .entry{width:100%;margin:0;padding:14px 20px;box-sizing:border-box;background-color:transparent;transition:all .3s ease;color:#fff;text-decoration:none;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px}aside.sidebar .entries li .entry:hover{background-color:#0000004d}\n"] }]
41
+ ], template: "@if (show) {\r\n <div\r\n class=\"background-overlay\"\r\n (click)=\"handleClick()\"\r\n [ngClass]=\"show ? 'open' : 'closed'\">\r\n </div>\r\n}\r\n\r\n<aside\r\n id=\"sidebar\"\r\n class=\"sidebar\"\r\n [ngClass]=\"show ? 'open' : 'closed'\"\r\n [ngStyle]=\"{\r\n 'background': 'linear-gradient(to bottom, ' + backgroundStart + ', ' + backgroundEnd + ')'\r\n }\"\r\n>\r\n <ul class=\"entries\">\r\n @for (item of entries; track item.name) {\r\n @if (item.type === 'ENTRY') {\r\n <li>\r\n <a [routerLink]=\"[item.url]\" class=\"entry\" (click)=\"handleClick()\">\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ item.name }}\r\n </a>\r\n </li>\r\n } @else if (item.type === 'SECTION') {\r\n <li class=\"section\">\r\n <div class=\"section-title\" (click)=\"toggleSection(item.name)\">\r\n <fa-icon\r\n [icon]=\"isSectionOpen(item.name) ? faChevronUp : faChevronDown\"\r\n class=\"chevron\"\r\n />\r\n <span>{{ item.name }}</span>\r\n </div>\r\n\r\n @if (isSectionOpen(item.name)) {\r\n <ul class=\"section-entries\">\r\n @for (entry of item.entries; track entry.name) {\r\n <li>\r\n <a\r\n [routerLink]=\"[item.url + '/' + entry.url]\"\r\n class=\"entry\"\r\n (click)=\"handleClick()\"\r\n >\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ entry.name }}\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n }\r\n\r\n </ul>\r\n</aside>\r\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1;display:flex}to{opacity:0;display:none}}div.background-overlay{position:fixed;top:40px;left:0;width:100%;height:calc(100% - 40px);background-color:#000c;transition:all .3s ease-in-out;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:89}div.background-overlay.closed{opacity:0;visibility:hidden;animation:fadeOut .3s ease-in-out}div.background-overlay.open{opacity:1;visibility:visible;animation:fadeIn .3s ease-in-out}aside.sidebar{border-top:1px solid white;position:fixed;top:40px;height:calc(100% - 40px);overflow-y:auto;width:100%;max-width:400px;padding:40px 0 16px;display:grid;grid-template-rows:auto 1fr auto;gap:10px;box-sizing:border-box;transition:left .3s ease-in-out;box-shadow:-2px 0 55px #0000004d;z-index:90}aside.sidebar.open{left:0}aside.sidebar.closed{left:-100%}aside.sidebar .entries{width:100%;box-sizing:border-box;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:0}aside.sidebar .entries li{width:100%;box-sizing:border-box}aside.sidebar .entries li .entry{width:100%;margin:0;padding:14px 20px;box-sizing:border-box;background-color:transparent;transition:all .3s ease;color:#fff;text-decoration:none;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px}aside.sidebar .entries li .entry:hover{background-color:#0000004d}aside.sidebar .entries li.section{width:100%;box-sizing:border-box}aside.sidebar .entries li.section .section-title{width:100%;margin:0;padding:14px 20px;color:#fff;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px;-webkit-user-select:none;user-select:none;cursor:pointer}aside.sidebar .entries li.section .section-title .chevron{font-size:14px}aside.sidebar .entries li.section .section-title:hover{background-color:#ffffff0d}aside.sidebar .entries li.section .section-entries{border-bottom:1px solid rgba(255,255,255,.5);animation:fadeIn .3s ease-in-out}aside.sidebar .entries li.section .section-entries .entry{padding:14px 20px 14px 30px}\n"] }]
30
42
  }], propDecorators: { show: [{
31
43
  type: Input
32
44
  }], entries: [{
@@ -36,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
36
48
  }], backgroundEnd: [{
37
49
  type: Input
38
50
  }] } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRuZC1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlbnRlcmEtcmRuZC9zcmMvbGliL2NvbXBvbmVudHMvcmRuZC1zaWRlYmFyL3JkbmQtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW50ZXJhLXJkbmQvc3JjL2xpYi9jb21wb25lbnRzL3JkbmQtc2lkZWJhci9yZG5kLXNpZGViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsWUFBWSxHQUNiLE1BQU0sbUNBQW1DLENBQUM7QUFDM0MsT0FBTyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7O0FBYzNDLE1BQU0sT0FBTyxXQUFXO0lBRXRCLFFBQVE7SUFDVyxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBRS9DLG1CQUFtQjtJQUNWLElBQUksR0FBWSxLQUFLLENBQUM7SUFDdEIsT0FBTyxHQUF3QixFQUFFLENBQUM7SUFDbEMsZUFBZSxHQUFXLFNBQVMsQ0FBQztJQUNwQyxhQUFhLEdBQVcsU0FBUyxDQUFDO0lBRTNDLFlBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUV4QixXQUFXLEdBQUcsR0FBRyxFQUFFO1FBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQyxDQUFBO3dHQWZVLFdBQVc7NEZBQVgsV0FBVyxxT0N0QnhCLG13QkE2QkEsK2hERGZJLE9BQU8sb0ZBQ1AsVUFBVSxvT0FDVixlQUFlLDRNQUNmLE9BQU87OzRGQUtFLFdBQVc7a0JBWnZCLFNBQVM7K0JBQ0UsY0FBYyxjQUNaLElBQUksV0FDUDt3QkFDUCxPQUFPO3dCQUNQLFVBQVU7d0JBQ1YsZUFBZTt3QkFDZixPQUFPO3FCQUNSOzhCQVVRLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBvdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1JkbmRTaWRlYmFyRW50cnl9IGZyb20gXCIuLi8uLi90eXBlcy9TaWRlYmFyLnR5cGVzXCI7XHJcbmltcG9ydCB7b3V0cHV0QXN0fSBmcm9tIFwiQGFuZ3VsYXIvY29tcGlsZXJcIjtcclxuaW1wb3J0IHtGYUljb25Db21wb25lbnR9IGZyb20gXCJAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZVwiO1xyXG5pbXBvcnQge1xyXG4gIGZhQXJyb3dSaWdodCxcclxufSBmcm9tIFwiQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zXCI7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdTdHlsZX0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge1JvdXRlckxpbmt9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncmRuZC1zaWRlYmFyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBSb3V0ZXJMaW5rLFxyXG4gICAgRmFJY29uQ29tcG9uZW50LFxyXG4gICAgTmdTdHlsZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JkbmQtc2lkZWJhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3JkbmQtc2lkZWJhci5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFJkbmRTaWRlYmFyIHtcclxuXHJcbiAgLy8gSWNvbnNcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFBcnJvd1JpZ2h0ID0gZmFBcnJvd1JpZ2h0O1xyXG5cclxuICAvLyBJbnB1dHMgJiBPdXRwdXRzXHJcbiAgQElucHV0KCkgc2hvdzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVudHJpZXMgOiBSZG5kU2lkZWJhckVudHJ5W10gPSBbXTtcclxuICBASW5wdXQoKSBiYWNrZ3JvdW5kU3RhcnQ6IHN0cmluZyA9IFwiI0MyMTg1QlwiO1xyXG4gIEBJbnB1dCgpIGJhY2tncm91bmRFbmQ6IHN0cmluZyA9IFwiIzdFMDA4M1wiO1xyXG5cclxuICBvbkNsaWNrRW50cnkgPSBvdXRwdXQoKTtcclxuXHJcbiAgaGFuZGxlQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm9uQ2xpY2tFbnRyeS5lbWl0KCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCJAaWYgKHNob3cpIHtcclxuICA8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZC1vdmVybGF5XCIgKGNsaWNrKT1cImhhbmRsZUNsaWNrKClcIiBbbmdDbGFzc109XCJzaG93ID8gJ29wZW4nIDogJ2Nsb3NlZCcgXCI+PC9kaXY+XHJcbn1cclxuXHJcbjxhc2lkZVxyXG4gIGlkPVwic2lkZWJhclwiXHJcbiAgY2xhc3M9XCJzaWRlYmFyXCJcclxuICBbbmdDbGFzc109XCJzaG93ID8gJ29wZW4nIDogJ2Nsb3NlZCcgXCJcclxuICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQnOiAnbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgJyArIGJhY2tncm91bmRTdGFydCArICcsICcgKyBiYWNrZ3JvdW5kRW5kICsgJyknfVwiXHJcbj5cclxuXHJcbiAgPHVsIGNsYXNzPVwiZW50cmllc1wiPlxyXG5cclxuPCEtLSAgICA8bGkgY2xhc3M9XCJzZWN0aW9uLW5hbWVcIj5cclxuICAgICAgTcOzZHVsb3NcclxuICAgIDwvbGk+LS0+XHJcblxyXG4gICAgQGZvciAoZW50cnkgb2YgZW50cmllczsgdHJhY2sgZW50cnkubmFtZSkge1xyXG4gICAgICA8bGk+XHJcbiAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwiW2VudHJ5LnVybF1cIiBjbGFzcz1cImVudHJ5XCIgKGNsaWNrKT1cImhhbmRsZUNsaWNrKClcIj5cclxuICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhQXJyb3dSaWdodFwiLz5cclxuICAgICAgICAgIHt7IGVudHJ5Lm5hbWUgfX1cclxuICAgICAgICA8L2E+XHJcbiAgICAgIDwvbGk+XHJcbiAgICB9XHJcblxyXG4gIDwvdWw+XHJcblxyXG48L2FzaWRlPlxyXG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRuZC1zaWRlYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlbnRlcmEtcmRuZC9zcmMvbGliL2NvbXBvbmVudHMvcmRuZC1zaWRlYmFyL3JkbmQtc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW50ZXJhLXJkbmQvc3JjL2xpYi9jb21wb25lbnRzL3JkbmQtc2lkZWJhci9yZG5kLXNpZGViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsWUFBWSxFQUNaLGFBQWEsRUFDYixXQUFXLEdBQ1osTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDaEYsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlCQUFpQixDQUFDOztBQWtCM0MsTUFBTSxPQUFPLFdBQVc7SUFDYixJQUFJLEdBQVksS0FBSyxDQUFDO0lBQ3RCLE9BQU8sR0FBc0IsRUFBRSxDQUFDO0lBQ2hDLGVBQWUsR0FBVyxTQUFTLENBQUM7SUFDcEMsYUFBYSxHQUFXLFNBQVMsQ0FBQztJQUUzQyxZQUFZLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFFTCxZQUFZLEdBQUcsWUFBWSxDQUFDO0lBQzVCLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDOUIsV0FBVyxHQUFHLFdBQVcsQ0FBQztJQUU3QyxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUVqQyxXQUFXLEdBQUcsR0FBRyxFQUFFO1FBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0lBRUYsYUFBYSxDQUFDLElBQVk7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDaEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBWTtRQUN4QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7d0dBMUJVLFdBQVc7NEZBQVgsV0FBVyxxT0MxQnhCLDR1REF5REEsOG1FRDFDSSxPQUFPLG9GQUNQLE9BQU8sMkVBSVAsVUFBVSxvT0FDVixlQUFlOzs0RkFLTixXQUFXO2tCQWZ2QixTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLElBQUk7d0JBQ0osS0FBSzt3QkFDTCxnQkFBZ0I7d0JBQ2hCLFVBQVU7d0JBQ1YsZUFBZTtxQkFDaEI7OEJBS1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIG91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RmFJY29uQ29tcG9uZW50fSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XHJcbmltcG9ydCB7XHJcbiAgZmFBcnJvd1JpZ2h0LFxyXG4gIGZhQ2hldnJvbkRvd24sXHJcbiAgZmFDaGV2cm9uVXAsXHJcbn0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcclxuaW1wb3J0IHtOZ0NsYXNzLCBOZ1N0eWxlLCBOZ0lmLCBOZ0ZvciwgTmdUZW1wbGF0ZU91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtSb3V0ZXJMaW5rfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQge1JkbmRTaWRlYmFySXRlbX0gZnJvbSBcIi4uLy4uL3R5cGVzL1NpZGViYXIudHlwZXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncmRuZC1zaWRlYmFyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBOZ1N0eWxlLFxyXG4gICAgTmdJZixcclxuICAgIE5nRm9yLFxyXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcclxuICAgIFJvdXRlckxpbmssXHJcbiAgICBGYUljb25Db21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmRuZC1zaWRlYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vcmRuZC1zaWRlYmFyLmNvbXBvbmVudC5zY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJkbmRTaWRlYmFyIHtcclxuICBASW5wdXQoKSBzaG93OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZW50cmllczogUmRuZFNpZGViYXJJdGVtW10gPSBbXTtcclxuICBASW5wdXQoKSBiYWNrZ3JvdW5kU3RhcnQ6IHN0cmluZyA9ICcjQzIxODVCJztcclxuICBASW5wdXQoKSBiYWNrZ3JvdW5kRW5kOiBzdHJpbmcgPSAnIzdFMDA4Myc7XHJcblxyXG4gIG9uQ2xpY2tFbnRyeSA9IG91dHB1dCgpO1xyXG5cclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFBcnJvd1JpZ2h0ID0gZmFBcnJvd1JpZ2h0O1xyXG4gIHByb3RlY3RlZCByZWFkb25seSBmYUNoZXZyb25Eb3duID0gZmFDaGV2cm9uRG93bjtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmFDaGV2cm9uVXAgPSBmYUNoZXZyb25VcDtcclxuXHJcbiAgb3BlblNlY3Rpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XHJcblxyXG4gIGhhbmRsZUNsaWNrID0gKCkgPT4ge1xyXG4gICAgdGhpcy5vbkNsaWNrRW50cnkuZW1pdCgpO1xyXG4gIH07XHJcblxyXG4gIHRvZ2dsZVNlY3Rpb24obmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLm9wZW5TZWN0aW9ucy5oYXMobmFtZSlcclxuICAgICAgPyB0aGlzLm9wZW5TZWN0aW9ucy5kZWxldGUobmFtZSlcclxuICAgICAgOiB0aGlzLm9wZW5TZWN0aW9ucy5hZGQobmFtZSk7XHJcbiAgfVxyXG5cclxuICBpc1NlY3Rpb25PcGVuKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMub3BlblNlY3Rpb25zLmhhcyhuYW1lKTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChzaG93KSB7XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJiYWNrZ3JvdW5kLW92ZXJsYXlcIlxyXG4gICAgKGNsaWNrKT1cImhhbmRsZUNsaWNrKClcIlxyXG4gICAgW25nQ2xhc3NdPVwic2hvdyA/ICdvcGVuJyA6ICdjbG9zZWQnXCI+XHJcbiAgPC9kaXY+XHJcbn1cclxuXHJcbjxhc2lkZVxyXG4gIGlkPVwic2lkZWJhclwiXHJcbiAgY2xhc3M9XCJzaWRlYmFyXCJcclxuICBbbmdDbGFzc109XCJzaG93ID8gJ29wZW4nIDogJ2Nsb3NlZCdcIlxyXG4gIFtuZ1N0eWxlXT1cIntcclxuICAgICdiYWNrZ3JvdW5kJzogJ2xpbmVhci1ncmFkaWVudCh0byBib3R0b20sICcgKyBiYWNrZ3JvdW5kU3RhcnQgKyAnLCAnICsgYmFja2dyb3VuZEVuZCArICcpJ1xyXG4gIH1cIlxyXG4+XHJcbiAgPHVsIGNsYXNzPVwiZW50cmllc1wiPlxyXG4gICAgQGZvciAoaXRlbSBvZiBlbnRyaWVzOyB0cmFjayBpdGVtLm5hbWUpIHtcclxuICAgICAgQGlmIChpdGVtLnR5cGUgPT09ICdFTlRSWScpIHtcclxuICAgICAgICA8bGk+XHJcbiAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbaXRlbS51cmxdXCIgY2xhc3M9XCJlbnRyeVwiIChjbGljayk9XCJoYW5kbGVDbGljaygpXCI+XHJcbiAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhQXJyb3dSaWdodFwiLz5cclxuICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XHJcbiAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgfSBAZWxzZSBpZiAoaXRlbS50eXBlID09PSAnU0VDVElPTicpIHtcclxuICAgICAgICA8bGkgY2xhc3M9XCJzZWN0aW9uXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi10aXRsZVwiIChjbGljayk9XCJ0b2dnbGVTZWN0aW9uKGl0ZW0ubmFtZSlcIj5cclxuICAgICAgICAgICAgPGZhLWljb25cclxuICAgICAgICAgICAgICBbaWNvbl09XCJpc1NlY3Rpb25PcGVuKGl0ZW0ubmFtZSkgPyBmYUNoZXZyb25VcCA6IGZhQ2hldnJvbkRvd25cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hldnJvblwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIEBpZiAoaXNTZWN0aW9uT3BlbihpdGVtLm5hbWUpKSB7XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInNlY3Rpb24tZW50cmllc1wiPlxyXG4gICAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIGl0ZW0uZW50cmllczsgdHJhY2sgZW50cnkubmFtZSkge1xyXG4gICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICA8YVxyXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIltpdGVtLnVybCArICcvJyArIGVudHJ5LnVybF1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZW50cnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbGljaygpXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImZhQXJyb3dSaWdodFwiLz5cclxuICAgICAgICAgICAgICAgICAgICB7eyBlbnRyeS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgPC91bD5cclxuPC9hc2lkZT5cclxuIl19
@@ -0,0 +1,34 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class StorageService {
4
+ constructor() {
5
+ }
6
+ save(key, value) {
7
+ sessionStorage.setItem(key, JSON.stringify(value));
8
+ }
9
+ ;
10
+ get(key) {
11
+ const data = sessionStorage.getItem(key);
12
+ if (data !== null) {
13
+ return JSON.parse(data);
14
+ }
15
+ else {
16
+ return null;
17
+ }
18
+ }
19
+ delete(key) {
20
+ sessionStorage.removeItem(key);
21
+ }
22
+ wipe() {
23
+ sessionStorage.clear();
24
+ }
25
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
26
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageService, providedIn: 'root' });
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageService, decorators: [{
29
+ type: Injectable,
30
+ args: [{
31
+ providedIn: 'root'
32
+ }]
33
+ }], ctorParameters: () => [] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VudGVyYS1yZG5kL3NyYy9saWIvc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBS3pDLE1BQU0sT0FBTyxjQUFjO0lBRXpCO0lBQ0EsQ0FBQztJQUVNLElBQUksQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUNqQyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUFBLENBQUM7SUFFSyxHQUFHLENBQUMsR0FBVztRQUNwQixNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsR0FBVztRQUN2QixjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFDTSxJQUFJO1FBQ1QsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7d0dBdkJVLGNBQWM7NEdBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZShrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XHJcbiAgfTtcclxuXHJcbiAgcHVibGljIGdldChrZXk6IHN0cmluZyk6IEpTT04gfCBudWxsIHtcclxuICAgIGNvbnN0IGRhdGEgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGtleSk7XHJcbiAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZShrZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xyXG4gIH1cclxuICBwdWJsaWMgd2lwZSgpOiB2b2lkIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lkZWJhci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlbnRlcmEtcmRuZC9zcmMvbGliL3R5cGVzL1NpZGViYXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUmRuZFNpZGViYXJFbnRyeSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIHVybDogc3RyaW5nO1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lkZWJhci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlbnRlcmEtcmRuZC9zcmMvbGliL3R5cGVzL1NpZGViYXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUmRuZFNpZGViYXJJdGVtIHtcclxuICB0eXBlOiAnRU5UUlknIHwgJ1NFQ1RJT04nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB1cmw6IHN0cmluZztcclxuICBlbnRyaWVzPzogUmRuZFNpZGViYXJJdGVtW107XHJcbn1cclxuIl19
@@ -4,12 +4,15 @@
4
4
  export * from './lib/components/screen-title/screen-title.component';
5
5
  export * from "./lib/components/rdnd-navbar/rdnd-navbar.component";
6
6
  export * from "./lib/components/rdnd-sidebar/rdnd-sidebar.component";
7
+ // Components with its corresponding service handlers
7
8
  export * from './lib/components/button/button.component';
8
- export * from './lib/components/input/input.component';
9
- export * from './lib/components/modal/modal.component';
10
9
  export * from './lib/hooks/button.service';
10
+ export * from './lib/components/input/input.component';
11
11
  export * from './lib/hooks/input.service';
12
+ export * from './lib/components/modal/modal.component';
12
13
  export * from './lib/hooks/modal.service';
14
+ // Export services
15
+ export * from './lib/services/storage.service';
13
16
  // Export utils
14
17
  export { themes as rdndThemes } from './lib/styles/themes';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2dlbnRlcmEtcmRuZC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLHNEQUFzRCxDQUFDO0FBRXJFLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHdDQUF3QyxDQUFDO0FBRXZELGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDJCQUEyQixDQUFDO0FBRTFDLGVBQWU7QUFDZixPQUFPLEVBQUMsTUFBTSxJQUFJLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGdlbnRlcmEtcmRuZFxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2NyZWVuLXRpdGxlL3NjcmVlbi10aXRsZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tIFwiLi9saWIvY29tcG9uZW50cy9yZG5kLW5hdmJhci9yZG5kLW5hdmJhci5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvcmRuZC1zaWRlYmFyL3JkbmQtc2lkZWJhci5jb21wb25lbnRcIjtcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuY29tcG9uZW50JztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hvb2tzL2J1dHRvbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaG9va3MvaW5wdXQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hvb2tzL21vZGFsLnNlcnZpY2UnO1xyXG5cclxuLy8gRXhwb3J0IHV0aWxzXHJcbmV4cG9ydCB7dGhlbWVzIGFzIHJkbmRUaGVtZXN9IGZyb20gJy4vbGliL3N0eWxlcy90aGVtZXMnO1xyXG5cclxuXHJcbi8vIEV4cG9ydCB0eXBlc1xyXG5leHBvcnQge1JkbmRTaWRlYmFyRW50cnl9IGZyb20gXCIuL2xpYi90eXBlcy9TaWRlYmFyLnR5cGVzXCI7XHJcbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2dlbnRlcmEtcmRuZC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLHNEQUFzRCxDQUFDO0FBRXJFLHFEQUFxRDtBQUNyRCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsNEJBQTRCLENBQUM7QUFFM0MsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJCQUEyQixDQUFDO0FBRTFDLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxrQkFBa0I7QUFDbEIsY0FBYyxnQ0FBZ0MsQ0FBQztBQUUvQyxlQUFlO0FBQ2YsT0FBTyxFQUFDLE1BQU0sSUFBSSxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBnZW50ZXJhLXJkbmRcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NjcmVlbi10aXRsZS9zY3JlZW4tdGl0bGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSBcIi4vbGliL2NvbXBvbmVudHMvcmRuZC1uYXZiYXIvcmRuZC1uYXZiYXIuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9jb21wb25lbnRzL3JkbmQtc2lkZWJhci9yZG5kLXNpZGViYXIuY29tcG9uZW50XCI7XHJcblxyXG4vLyBDb21wb25lbnRzIHdpdGggaXRzIGNvcnJlc3BvbmRpbmcgc2VydmljZSBoYW5kbGVyc1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaG9va3MvYnV0dG9uLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ob29rcy9pbnB1dC5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvaG9va3MvbW9kYWwuc2VydmljZSc7XHJcblxyXG4vLyBFeHBvcnQgc2VydmljZXNcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuXHJcbi8vIEV4cG9ydCB1dGlsc1xyXG5leHBvcnQge3RoZW1lcyBhcyByZG5kVGhlbWVzfSBmcm9tICcuL2xpYi9zdHlsZXMvdGhlbWVzJztcclxuXHJcblxyXG4vLyBFeHBvcnQgdHlwZXNcclxuZXhwb3J0IHtSZG5kU2lkZWJhckl0ZW19IGZyb20gXCIuL2xpYi90eXBlcy9TaWRlYmFyLnR5cGVzXCI7XHJcbiJdfQ==
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, Input, output, Injectable, EventEmitter, Output } from '@angular/core';
3
- import { NgStyle, NgClass, NgIf, CommonModule } from '@angular/common';
3
+ import { NgStyle, NgClass, NgIf, NgFor, NgTemplateOutlet, CommonModule } from '@angular/common';
4
4
  import * as i2 from '@fortawesome/angular-fontawesome';
5
5
  import { FaIconComponent, FontAwesomeModule } from '@fortawesome/angular-fontawesome';
6
- import { faBarsStaggered, faSignOut, faTimes, faArrowRight, faEyeSlash, faCircleCheck, faCircleQuestion } from '@fortawesome/free-solid-svg-icons';
6
+ import { faBarsStaggered, faSignOut, faTimes, faArrowRight, faChevronDown, faChevronUp, faEyeSlash, faCircleCheck, faCircleQuestion } from '@fortawesome/free-solid-svg-icons';
7
7
  import { RouterLink } from '@angular/router';
8
8
  import { BehaviorSubject, Subscription } from 'rxjs';
9
9
  import * as i3 from '@angular/forms';
@@ -128,28 +128,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
128
128
  }] } });
129
129
 
130
130
  class RdndSidebar {
131
- // Icons
132
- faArrowRight = faArrowRight;
133
- // Inputs & Outputs
134
131
  show = false;
135
132
  entries = [];
136
- backgroundStart = "#C2185B";
137
- backgroundEnd = "#7E0083";
133
+ backgroundStart = '#C2185B';
134
+ backgroundEnd = '#7E0083';
138
135
  onClickEntry = output();
136
+ faArrowRight = faArrowRight;
137
+ faChevronDown = faChevronDown;
138
+ faChevronUp = faChevronUp;
139
+ openSections = new Set();
139
140
  handleClick = () => {
140
141
  this.onClickEntry.emit();
141
142
  };
143
+ toggleSection(name) {
144
+ this.openSections.has(name)
145
+ ? this.openSections.delete(name)
146
+ : this.openSections.add(name);
147
+ }
148
+ isSectionOpen(name) {
149
+ return this.openSections.has(name);
150
+ }
142
151
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RdndSidebar, deps: [], target: i0.ɵɵFactoryTarget.Component });
143
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RdndSidebar, isStandalone: true, selector: "rdnd-sidebar", inputs: { show: "show", entries: "entries", backgroundStart: "backgroundStart", backgroundEnd: "backgroundEnd" }, outputs: { onClickEntry: "onClickEntry" }, ngImport: i0, template: "@if (show) {\r\n <div class=\"background-overlay\" (click)=\"handleClick()\" [ngClass]=\"show ? 'open' : 'closed' \"></div>\r\n}\r\n\r\n<aside\r\n id=\"sidebar\"\r\n class=\"sidebar\"\r\n [ngClass]=\"show ? 'open' : 'closed' \"\r\n [ngStyle]=\"{'background': 'linear-gradient(to bottom, ' + backgroundStart + ', ' + backgroundEnd + ')'}\"\r\n>\r\n\r\n <ul class=\"entries\">\r\n\r\n<!-- <li class=\"section-name\">\r\n M\u00F3dulos\r\n </li>-->\r\n\r\n @for (entry of entries; track entry.name) {\r\n <li>\r\n <a [routerLink]=\"[entry.url]\" class=\"entry\" (click)=\"handleClick()\">\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ entry.name }}\r\n </a>\r\n </li>\r\n }\r\n\r\n </ul>\r\n\r\n</aside>\r\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1;display:flex}to{opacity:0;display:none}}div.background-overlay{position:fixed;top:40px;left:0;width:100%;height:calc(100% - 40px);background-color:#000c;transition:all .3s ease-in-out;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:89}div.background-overlay.closed{opacity:0;visibility:hidden;animation:fadeOut .3s ease-in-out}div.background-overlay.open{opacity:1;visibility:visible;animation:fadeIn .3s ease-in-out}aside.sidebar{border-top:1px solid white;position:fixed;top:40px;height:calc(100% - 40px);overflow-y:auto;width:100%;max-width:400px;padding:40px 0 16px;display:grid;grid-template-rows:auto 1fr auto;gap:10px;box-sizing:border-box;transition:left .3s ease-in-out;box-shadow:-2px 0 55px #0000004d;z-index:90}aside.sidebar.open{left:0}aside.sidebar.closed{left:-100%}aside.sidebar .entries{width:100%;box-sizing:border-box;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:0}aside.sidebar .entries li{width:100%;box-sizing:border-box}aside.sidebar .entries li.section-name{width:100%;margin:0;padding:14px 20px;color:#fff}aside.sidebar .entries li .entry{width:100%;margin:0;padding:14px 20px;box-sizing:border-box;background-color:transparent;transition:all .3s ease;color:#fff;text-decoration:none;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px}aside.sidebar .entries li .entry:hover{background-color:#0000004d}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
152
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RdndSidebar, isStandalone: true, selector: "rdnd-sidebar", inputs: { show: "show", entries: "entries", backgroundStart: "backgroundStart", backgroundEnd: "backgroundEnd" }, outputs: { onClickEntry: "onClickEntry" }, ngImport: i0, template: "@if (show) {\r\n <div\r\n class=\"background-overlay\"\r\n (click)=\"handleClick()\"\r\n [ngClass]=\"show ? 'open' : 'closed'\">\r\n </div>\r\n}\r\n\r\n<aside\r\n id=\"sidebar\"\r\n class=\"sidebar\"\r\n [ngClass]=\"show ? 'open' : 'closed'\"\r\n [ngStyle]=\"{\r\n 'background': 'linear-gradient(to bottom, ' + backgroundStart + ', ' + backgroundEnd + ')'\r\n }\"\r\n>\r\n <ul class=\"entries\">\r\n @for (item of entries; track item.name) {\r\n @if (item.type === 'ENTRY') {\r\n <li>\r\n <a [routerLink]=\"[item.url]\" class=\"entry\" (click)=\"handleClick()\">\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ item.name }}\r\n </a>\r\n </li>\r\n } @else if (item.type === 'SECTION') {\r\n <li class=\"section\">\r\n <div class=\"section-title\" (click)=\"toggleSection(item.name)\">\r\n <fa-icon\r\n [icon]=\"isSectionOpen(item.name) ? faChevronUp : faChevronDown\"\r\n class=\"chevron\"\r\n />\r\n <span>{{ item.name }}</span>\r\n </div>\r\n\r\n @if (isSectionOpen(item.name)) {\r\n <ul class=\"section-entries\">\r\n @for (entry of item.entries; track entry.name) {\r\n <li>\r\n <a\r\n [routerLink]=\"[item.url + '/' + entry.url]\"\r\n class=\"entry\"\r\n (click)=\"handleClick()\"\r\n >\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ entry.name }}\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n }\r\n\r\n </ul>\r\n</aside>\r\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1;display:flex}to{opacity:0;display:none}}div.background-overlay{position:fixed;top:40px;left:0;width:100%;height:calc(100% - 40px);background-color:#000c;transition:all .3s ease-in-out;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:89}div.background-overlay.closed{opacity:0;visibility:hidden;animation:fadeOut .3s ease-in-out}div.background-overlay.open{opacity:1;visibility:visible;animation:fadeIn .3s ease-in-out}aside.sidebar{border-top:1px solid white;position:fixed;top:40px;height:calc(100% - 40px);overflow-y:auto;width:100%;max-width:400px;padding:40px 0 16px;display:grid;grid-template-rows:auto 1fr auto;gap:10px;box-sizing:border-box;transition:left .3s ease-in-out;box-shadow:-2px 0 55px #0000004d;z-index:90}aside.sidebar.open{left:0}aside.sidebar.closed{left:-100%}aside.sidebar .entries{width:100%;box-sizing:border-box;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:0}aside.sidebar .entries li{width:100%;box-sizing:border-box}aside.sidebar .entries li .entry{width:100%;margin:0;padding:14px 20px;box-sizing:border-box;background-color:transparent;transition:all .3s ease;color:#fff;text-decoration:none;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px}aside.sidebar .entries li .entry:hover{background-color:#0000004d}aside.sidebar .entries li.section{width:100%;box-sizing:border-box}aside.sidebar .entries li.section .section-title{width:100%;margin:0;padding:14px 20px;color:#fff;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px;-webkit-user-select:none;user-select:none;cursor:pointer}aside.sidebar .entries li.section .section-title .chevron{font-size:14px}aside.sidebar .entries li.section .section-title:hover{background-color:#ffffff0d}aside.sidebar .entries li.section .section-entries{border-bottom:1px solid rgba(255,255,255,.5);animation:fadeIn .3s ease-in-out}aside.sidebar .entries li.section .section-entries .entry{padding:14px 20px 14px 30px}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }] });
144
153
  }
145
154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RdndSidebar, decorators: [{
146
155
  type: Component,
147
156
  args: [{ selector: 'rdnd-sidebar', standalone: true, imports: [
148
157
  NgClass,
158
+ NgStyle,
159
+ NgIf,
160
+ NgFor,
161
+ NgTemplateOutlet,
149
162
  RouterLink,
150
163
  FaIconComponent,
151
- NgStyle
152
- ], template: "@if (show) {\r\n <div class=\"background-overlay\" (click)=\"handleClick()\" [ngClass]=\"show ? 'open' : 'closed' \"></div>\r\n}\r\n\r\n<aside\r\n id=\"sidebar\"\r\n class=\"sidebar\"\r\n [ngClass]=\"show ? 'open' : 'closed' \"\r\n [ngStyle]=\"{'background': 'linear-gradient(to bottom, ' + backgroundStart + ', ' + backgroundEnd + ')'}\"\r\n>\r\n\r\n <ul class=\"entries\">\r\n\r\n<!-- <li class=\"section-name\">\r\n M\u00F3dulos\r\n </li>-->\r\n\r\n @for (entry of entries; track entry.name) {\r\n <li>\r\n <a [routerLink]=\"[entry.url]\" class=\"entry\" (click)=\"handleClick()\">\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ entry.name }}\r\n </a>\r\n </li>\r\n }\r\n\r\n </ul>\r\n\r\n</aside>\r\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1;display:flex}to{opacity:0;display:none}}div.background-overlay{position:fixed;top:40px;left:0;width:100%;height:calc(100% - 40px);background-color:#000c;transition:all .3s ease-in-out;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:89}div.background-overlay.closed{opacity:0;visibility:hidden;animation:fadeOut .3s ease-in-out}div.background-overlay.open{opacity:1;visibility:visible;animation:fadeIn .3s ease-in-out}aside.sidebar{border-top:1px solid white;position:fixed;top:40px;height:calc(100% - 40px);overflow-y:auto;width:100%;max-width:400px;padding:40px 0 16px;display:grid;grid-template-rows:auto 1fr auto;gap:10px;box-sizing:border-box;transition:left .3s ease-in-out;box-shadow:-2px 0 55px #0000004d;z-index:90}aside.sidebar.open{left:0}aside.sidebar.closed{left:-100%}aside.sidebar .entries{width:100%;box-sizing:border-box;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:0}aside.sidebar .entries li{width:100%;box-sizing:border-box}aside.sidebar .entries li.section-name{width:100%;margin:0;padding:14px 20px;color:#fff}aside.sidebar .entries li .entry{width:100%;margin:0;padding:14px 20px;box-sizing:border-box;background-color:transparent;transition:all .3s ease;color:#fff;text-decoration:none;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px}aside.sidebar .entries li .entry:hover{background-color:#0000004d}\n"] }]
164
+ ], template: "@if (show) {\r\n <div\r\n class=\"background-overlay\"\r\n (click)=\"handleClick()\"\r\n [ngClass]=\"show ? 'open' : 'closed'\">\r\n </div>\r\n}\r\n\r\n<aside\r\n id=\"sidebar\"\r\n class=\"sidebar\"\r\n [ngClass]=\"show ? 'open' : 'closed'\"\r\n [ngStyle]=\"{\r\n 'background': 'linear-gradient(to bottom, ' + backgroundStart + ', ' + backgroundEnd + ')'\r\n }\"\r\n>\r\n <ul class=\"entries\">\r\n @for (item of entries; track item.name) {\r\n @if (item.type === 'ENTRY') {\r\n <li>\r\n <a [routerLink]=\"[item.url]\" class=\"entry\" (click)=\"handleClick()\">\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ item.name }}\r\n </a>\r\n </li>\r\n } @else if (item.type === 'SECTION') {\r\n <li class=\"section\">\r\n <div class=\"section-title\" (click)=\"toggleSection(item.name)\">\r\n <fa-icon\r\n [icon]=\"isSectionOpen(item.name) ? faChevronUp : faChevronDown\"\r\n class=\"chevron\"\r\n />\r\n <span>{{ item.name }}</span>\r\n </div>\r\n\r\n @if (isSectionOpen(item.name)) {\r\n <ul class=\"section-entries\">\r\n @for (entry of item.entries; track entry.name) {\r\n <li>\r\n <a\r\n [routerLink]=\"[item.url + '/' + entry.url]\"\r\n class=\"entry\"\r\n (click)=\"handleClick()\"\r\n >\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ entry.name }}\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n }\r\n\r\n </ul>\r\n</aside>\r\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1;display:flex}to{opacity:0;display:none}}div.background-overlay{position:fixed;top:40px;left:0;width:100%;height:calc(100% - 40px);background-color:#000c;transition:all .3s ease-in-out;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:89}div.background-overlay.closed{opacity:0;visibility:hidden;animation:fadeOut .3s ease-in-out}div.background-overlay.open{opacity:1;visibility:visible;animation:fadeIn .3s ease-in-out}aside.sidebar{border-top:1px solid white;position:fixed;top:40px;height:calc(100% - 40px);overflow-y:auto;width:100%;max-width:400px;padding:40px 0 16px;display:grid;grid-template-rows:auto 1fr auto;gap:10px;box-sizing:border-box;transition:left .3s ease-in-out;box-shadow:-2px 0 55px #0000004d;z-index:90}aside.sidebar.open{left:0}aside.sidebar.closed{left:-100%}aside.sidebar .entries{width:100%;box-sizing:border-box;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding:0}aside.sidebar .entries li{width:100%;box-sizing:border-box}aside.sidebar .entries li .entry{width:100%;margin:0;padding:14px 20px;box-sizing:border-box;background-color:transparent;transition:all .3s ease;color:#fff;text-decoration:none;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px}aside.sidebar .entries li .entry:hover{background-color:#0000004d}aside.sidebar .entries li.section{width:100%;box-sizing:border-box}aside.sidebar .entries li.section .section-title{width:100%;margin:0;padding:14px 20px;color:#fff;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px;-webkit-user-select:none;user-select:none;cursor:pointer}aside.sidebar .entries li.section .section-title .chevron{font-size:14px}aside.sidebar .entries li.section .section-title:hover{background-color:#ffffff0d}aside.sidebar .entries li.section .section-entries{border-bottom:1px solid rgba(255,255,255,.5);animation:fadeIn .3s ease-in-out}aside.sidebar .entries li.section .section-entries .entry{padding:14px 20px 14px 30px}\n"] }]
153
165
  }], propDecorators: { show: [{
154
166
  type: Input
155
167
  }], entries: [{
@@ -481,7 +493,7 @@ class RdndInput {
481
493
  this.onBlur.emit(event);
482
494
  }
483
495
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RdndInput, deps: [{ token: InputService }], target: i0.ɵɵFactoryTarget.Component });
484
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RdndInput, isStandalone: true, selector: "rdnd-input", inputs: { id: "id", name: "name", type: "type", placeholder: "placeholder", value: "value", validators: "validators", disabled: "disabled" }, outputs: { valueChange: "valueChange", onKeyDown: "onKeyDown", onPaste: "onPaste", onFocus: "onFocus", onBlur: "onBlur" }, ngImport: i0, template: "<div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\r\n <!-- \u00CDcono de error que aparece por encima del campo si hay error -->\r\n <span *ngIf=\"hasError()\" class=\"error-icon\" (click)=\"toggleErrorDisplay()\">&#9432;</span>\r\n\r\n <!-- Bot\u00F3n de mostrar/ocultar contrase\u00F1a centrado verticalmente -->\r\n <button *ngIf=\"type === 'password'\" type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\">\r\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword\"></fa-icon>\r\n </button>\r\n\r\n <!-- Input que cambia de borde si tiene error -->\r\n <input\r\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (paste)=\"handlePaste($event)\"\r\n (focus)=\"handleFocus($event)\"\r\n (blur)=\"handleBlur($event)\"\r\n [ngClass]=\"{ 'error-border': hasError() }\"\r\n />\r\n\r\n <!-- Mensaje de error que aparece solo cuando se clickea en el \u00EDcono de error -->\r\n <div *ngIf=\"control.invalid && control.dirty && showError\" class=\"error-message\">\r\n {{ getErrorMessage() }}\r\n </div>\r\n</div>\r\n", styles: [".input-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}input{position:relative;width:100%;min-width:100%;padding:7px 35px 7px 8px;border-radius:3px;font-family:Poppins,sans-serif;height:40px;font-size:16px;border:1px solid #ccc;outline:none;box-sizing:border-box;transition:all .3s ease;background-color:#fff!important;appearance:none;-moz-appearance:textfield;-webkit-appearance:textfield}input:-webkit-autofill{background-color:#fff!important}input.error-border{border-color:red}input:focus{border:1px solid blue}.error-icon{position:absolute;right:8px;top:1px;bottom:1px;font-size:24px;color:red;cursor:pointer;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:3;background-color:#fff}.error-message{position:absolute;bottom:0;left:0;color:red;padding:0 0 0 8px;border-radius:4px;font-size:12px;font-family:sans-serif;white-space:nowrap}.toggle-button{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:transparent;border:none;cursor:pointer;z-index:2}.icon{transition:opacity .3s ease}.icon.active{opacity:.5}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
496
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RdndInput, isStandalone: true, selector: "rdnd-input", inputs: { id: "id", name: "name", type: "type", placeholder: "placeholder", value: "value", validators: "validators", disabled: "disabled" }, outputs: { valueChange: "valueChange", onKeyDown: "onKeyDown", onPaste: "onPaste", onFocus: "onFocus", onBlur: "onBlur" }, ngImport: i0, template: " <div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\r\n <!-- \u00CDcono de error que aparece por encima del campo si hay error -->\r\n <span *ngIf=\"hasError()\" class=\"error-icon\" (click)=\"toggleErrorDisplay()\">&#9432;</span>\r\n\r\n <!-- Bot\u00F3n de mostrar/ocultar contrase\u00F1a centrado verticalmente -->\r\n <button *ngIf=\"type === 'password'\" type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\">\r\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword\"></fa-icon>\r\n </button>\r\n\r\n <!-- Input que cambia de borde si tiene error -->\r\n <input\r\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (paste)=\"handlePaste($event)\"\r\n (focus)=\"handleFocus($event)\"\r\n (blur)=\"handleBlur($event)\"\r\n [ngClass]=\"{ 'error-border': hasError() }\"\r\n />\r\n\r\n <!-- Mensaje de error que aparece solo cuando se clickea en el \u00EDcono de error -->\r\n <div *ngIf=\"control.invalid && control.dirty && showError\" class=\"error-message\">\r\n {{ getErrorMessage() }}\r\n </div>\r\n </div>\r\n", styles: [".input-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}input{position:relative;width:100%;min-width:100%;padding:7px 35px 7px 8px;border-radius:3px;font-family:Poppins,sans-serif;height:40px;font-size:16px;border:1px solid #ccc;outline:none;box-sizing:border-box;transition:all .3s ease;background-color:#fff!important;appearance:none;-moz-appearance:textfield;-webkit-appearance:textfield}input:-webkit-autofill{background-color:#fff!important}input.error-border{border-color:red}input:focus{border:1px solid blue}.error-icon{position:absolute;right:8px;top:1px;bottom:1px;font-size:24px;color:red;cursor:pointer;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:3;background-color:#fff}.error-message{position:absolute;bottom:0;left:0;color:red;padding:0 0 0 8px;border-radius:4px;font-size:12px;font-family:sans-serif;white-space:nowrap}.toggle-button{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:transparent;border:none;cursor:pointer;z-index:2}.icon{transition:opacity .3s ease}.icon.active{opacity:.5}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
485
497
  }
486
498
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RdndInput, decorators: [{
487
499
  type: Component,
@@ -490,7 +502,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
490
502
  NgClass,
491
503
  FontAwesomeModule,
492
504
  ReactiveFormsModule
493
- ], template: "<div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\r\n <!-- \u00CDcono de error que aparece por encima del campo si hay error -->\r\n <span *ngIf=\"hasError()\" class=\"error-icon\" (click)=\"toggleErrorDisplay()\">&#9432;</span>\r\n\r\n <!-- Bot\u00F3n de mostrar/ocultar contrase\u00F1a centrado verticalmente -->\r\n <button *ngIf=\"type === 'password'\" type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\">\r\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword\"></fa-icon>\r\n </button>\r\n\r\n <!-- Input que cambia de borde si tiene error -->\r\n <input\r\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (paste)=\"handlePaste($event)\"\r\n (focus)=\"handleFocus($event)\"\r\n (blur)=\"handleBlur($event)\"\r\n [ngClass]=\"{ 'error-border': hasError() }\"\r\n />\r\n\r\n <!-- Mensaje de error que aparece solo cuando se clickea en el \u00EDcono de error -->\r\n <div *ngIf=\"control.invalid && control.dirty && showError\" class=\"error-message\">\r\n {{ getErrorMessage() }}\r\n </div>\r\n</div>\r\n", styles: [".input-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}input{position:relative;width:100%;min-width:100%;padding:7px 35px 7px 8px;border-radius:3px;font-family:Poppins,sans-serif;height:40px;font-size:16px;border:1px solid #ccc;outline:none;box-sizing:border-box;transition:all .3s ease;background-color:#fff!important;appearance:none;-moz-appearance:textfield;-webkit-appearance:textfield}input:-webkit-autofill{background-color:#fff!important}input.error-border{border-color:red}input:focus{border:1px solid blue}.error-icon{position:absolute;right:8px;top:1px;bottom:1px;font-size:24px;color:red;cursor:pointer;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:3;background-color:#fff}.error-message{position:absolute;bottom:0;left:0;color:red;padding:0 0 0 8px;border-radius:4px;font-size:12px;font-family:sans-serif;white-space:nowrap}.toggle-button{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:transparent;border:none;cursor:pointer;z-index:2}.icon{transition:opacity .3s ease}.icon.active{opacity:.5}\n"] }]
505
+ ], template: " <div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\r\n <!-- \u00CDcono de error que aparece por encima del campo si hay error -->\r\n <span *ngIf=\"hasError()\" class=\"error-icon\" (click)=\"toggleErrorDisplay()\">&#9432;</span>\r\n\r\n <!-- Bot\u00F3n de mostrar/ocultar contrase\u00F1a centrado verticalmente -->\r\n <button *ngIf=\"type === 'password'\" type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\">\r\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword\"></fa-icon>\r\n </button>\r\n\r\n <!-- Input que cambia de borde si tiene error -->\r\n <input\r\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (paste)=\"handlePaste($event)\"\r\n (focus)=\"handleFocus($event)\"\r\n (blur)=\"handleBlur($event)\"\r\n [ngClass]=\"{ 'error-border': hasError() }\"\r\n />\r\n\r\n <!-- Mensaje de error que aparece solo cuando se clickea en el \u00EDcono de error -->\r\n <div *ngIf=\"control.invalid && control.dirty && showError\" class=\"error-message\">\r\n {{ getErrorMessage() }}\r\n </div>\r\n </div>\r\n", styles: [".input-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}input{position:relative;width:100%;min-width:100%;padding:7px 35px 7px 8px;border-radius:3px;font-family:Poppins,sans-serif;height:40px;font-size:16px;border:1px solid #ccc;outline:none;box-sizing:border-box;transition:all .3s ease;background-color:#fff!important;appearance:none;-moz-appearance:textfield;-webkit-appearance:textfield}input:-webkit-autofill{background-color:#fff!important}input.error-border{border-color:red}input:focus{border:1px solid blue}.error-icon{position:absolute;right:8px;top:1px;bottom:1px;font-size:24px;color:red;cursor:pointer;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:3;background-color:#fff}.error-message{position:absolute;bottom:0;left:0;color:red;padding:0 0 0 8px;border-radius:4px;font-size:12px;font-family:sans-serif;white-space:nowrap}.toggle-button{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:transparent;border:none;cursor:pointer;z-index:2}.icon{transition:opacity .3s ease}.icon.active{opacity:.5}\n"] }]
494
506
  }], ctorParameters: () => [{ type: InputService }], propDecorators: { id: [{
495
507
  type: Input
496
508
  }], name: [{
@@ -633,6 +645,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
633
645
  args: [{ providedIn: 'root' }]
634
646
  }], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }] });
635
647
 
648
+ class StorageService {
649
+ constructor() {
650
+ }
651
+ save(key, value) {
652
+ sessionStorage.setItem(key, JSON.stringify(value));
653
+ }
654
+ ;
655
+ get(key) {
656
+ const data = sessionStorage.getItem(key);
657
+ if (data !== null) {
658
+ return JSON.parse(data);
659
+ }
660
+ else {
661
+ return null;
662
+ }
663
+ }
664
+ delete(key) {
665
+ sessionStorage.removeItem(key);
666
+ }
667
+ wipe() {
668
+ sessionStorage.clear();
669
+ }
670
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
671
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageService, providedIn: 'root' });
672
+ }
673
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StorageService, decorators: [{
674
+ type: Injectable,
675
+ args: [{
676
+ providedIn: 'root'
677
+ }]
678
+ }], ctorParameters: () => [] });
679
+
636
680
  /*
637
681
  * Public API Surface of gentera-rdnd
638
682
  */
@@ -641,5 +685,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
641
685
  * Generated bundle index. Do not edit.
642
686
  */
643
687
 
644
- export { ButtonService, InputService, ModalService, RdndButton, RdndInput, RdndModal, RdndNavbar, RdndScreenTitle, RdndSidebar, themes as rdndThemes };
688
+ export { ButtonService, InputService, ModalService, RdndButton, RdndInput, RdndModal, RdndNavbar, RdndScreenTitle, RdndSidebar, StorageService, themes as rdndThemes };
645
689
  //# sourceMappingURL=gentera-rdnd.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"gentera-rdnd.mjs","sources":["../../../projects/gentera-rdnd/src/lib/styles/colors.ts","../../../projects/gentera-rdnd/src/lib/components/screen-title/screen-title.component.ts","../../../projects/gentera-rdnd/src/lib/components/screen-title/screen-title.component.html","../../../projects/gentera-rdnd/src/lib/components/rdnd-navbar/rdnd-navbar.component.ts","../../../projects/gentera-rdnd/src/lib/components/rdnd-navbar/rdnd-navbar.component.html","../../../projects/gentera-rdnd/src/lib/components/rdnd-sidebar/rdnd-sidebar.component.ts","../../../projects/gentera-rdnd/src/lib/components/rdnd-sidebar/rdnd-sidebar.component.html","../../../projects/gentera-rdnd/src/lib/styles/themes.ts","../../../projects/gentera-rdnd/src/lib/hooks/button.service.ts","../../../projects/gentera-rdnd/src/lib/components/button/button.component.ts","../../../projects/gentera-rdnd/src/lib/components/button/button.component.html","../../../projects/gentera-rdnd/src/lib/hooks/input.service.ts","../../../projects/gentera-rdnd/src/lib/components/input/input.component.ts","../../../projects/gentera-rdnd/src/lib/components/input/input.component.html","../../../projects/gentera-rdnd/src/lib/components/modal/modal.component.ts","../../../projects/gentera-rdnd/src/lib/components/modal/modal.component.html","../../../projects/gentera-rdnd/src/lib/hooks/modal.service.ts","../../../projects/gentera-rdnd/src/public-api.ts","../../../projects/gentera-rdnd/src/gentera-rdnd.ts"],"sourcesContent":["export const colors = {\r\n black: '#171717',\r\n 'black-light': '#343434',\r\n 'black-dark': '#000000',\r\n 'black-navy': '#191a21',\r\n\r\n 'xs-dark-gray': '#5A5A5A',\r\n 'dark-gray': '#9E9E9E',\r\n 'medium-gray': '#AFAFAF',\r\n gray: '#C4C4C4',\r\n 'light-gray': '#C6C6C6',\r\n 'xs-light-gray': '#DFDFDF',\r\n 'xxs-light-gray': '#F2F2F2',\r\n 'soft-white': '#EEEEEE',\r\n\r\n green: '#28a746',\r\n 'green-medium': '#208B6A',\r\n 'green-dark': '#156a29',\r\n 'green-xs-dark': 'rgb(33, 97, 90)',\r\n 'green-1': '#009F74',\r\n 'green-2': '#00B987',\r\n 'green-3': '#19C496',\r\n 'green-light': '#84ce94',\r\n 'green-4': '#50D8B3',\r\n 'green-5': '#83E6B8',\r\n\r\n \"blue-info\": '#7390EC',\r\n blue: '#3360fa',\r\n 'blue-dark': '#1a389e',\r\n 'blue-light': '#3390fa',\r\n 'blue-gray-soft': '#E5EAEDFF',\r\n 'blue-gray-light': 'rgb(244,247,250)',\r\n\r\n orange: '#F77C00',\r\n 'orange-light': '#F7B500',\r\n\r\n yellow: '#F09D00',\r\n \"yellow-normal\": '#FFBC57',\r\n 'yellow-light': '#FFC400',\r\n\r\n purple: '#6459be',\r\n 'purple-light': 'rgb(149, 138, 242)',\r\n\r\n red: '#E60018',\r\n 'red-light': '#e74364',\r\n 'red-medium': '#c51628',\r\n\r\n \"white\": \"#FFFFFF\",\r\n \"magentaStart\": \"#C2185B\",\r\n \"magentaEnd\": \"#7E0083\",\r\n 'magenta-normal': '#B41364',\r\n\r\n disabled: '#C6C6C6',\r\n \"disabledText\": \"#9E9E9E\",\r\n};\r\n","import {Component, Input} from '@angular/core';\r\nimport {NgClass, NgStyle} from \"@angular/common\";\r\nimport {colors} from \"../../styles/colors\";\r\n\r\n@Component({\r\n selector: 'rdnd-screen-title',\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n NgStyle\r\n ],\r\n templateUrl: './screen-title.component.html',\r\n styleUrl: './screen-title.component.scss'\r\n})\r\nexport class RdndScreenTitle {\r\n @Input() title!: string;\r\n @Input() align: 'LEFT' | 'CENTER' = 'CENTER';\r\n @Input() color = colors[\"magentaEnd\"];\r\n\r\n}\r\n","<h1 [class]=\" 'align-' + align \" [ngStyle]=\"{\r\n color: color\r\n}\">\r\n {{ title }}\r\n</h1>\r\n","import {Component, Input, output} from '@angular/core';\r\n\r\n// Icons\r\nimport {FaIconComponent} from \"@fortawesome/angular-fontawesome\";\r\nimport {\r\n faBarsStaggered,\r\n faCircle,\r\n faSignOut,\r\n faTimes\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {NgStyle} from \"@angular/common\";\r\nimport {RouterLink} from \"@angular/router\";\r\n\r\n@Component({\r\n selector: 'rdnd-navbar',\r\n standalone: true,\r\n imports: [\r\n FaIconComponent,\r\n NgStyle,\r\n RouterLink\r\n ],\r\n templateUrl: './rdnd-navbar.component.html',\r\n styleUrl: './rdnd-navbar.component.scss'\r\n})\r\nexport class RdndNavbar {\r\n\r\n // Icons\r\n protected readonly faBarsStaggered = faBarsStaggered;\r\n protected readonly faSignOut = faSignOut;\r\n protected readonly faTimes = faTimes;\r\n\r\n // States\r\n showLoader = false;\r\n\r\n // Inputs & Outputs\r\n @Input() userName: string = \"\";\r\n @Input() imageUrl: string = \"\";\r\n @Input() backgroundStart: string = \"#C2185B\";\r\n @Input() backgroundEnd: string = \"#7E0083\";\r\n @Input() showSidebar = false;\r\n onSignOut = output();\r\n onToggleSidebar = output();\r\n\r\n // Functions\r\n toggleMenu = () => {\r\n this.showSidebar = !this.showSidebar;\r\n this.onToggleSidebar.emit();\r\n }\r\n\r\n closeMenu = () => {\r\n this.showSidebar = false;\r\n }\r\n\r\n handleSignOut = () => {\r\n this.onSignOut.emit();\r\n }\r\n\r\n\r\n}\r\n","<nav [ngStyle]=\"{'background': 'linear-gradient(to right, ' + backgroundStart + ', ' + backgroundEnd + ')'}\">\r\n\r\n <div class=\"rdnd-nav-container\">\r\n <button (click)=\"toggleMenu()\" >\r\n <fa-icon [icon]=\"showSidebar ? faTimes : faBarsStaggered\"></fa-icon>\r\n </button>\r\n\r\n @if (imageUrl) {\r\n <a [routerLink]=\"['/']\">\r\n <img src=\"{{imageUrl}}\" alt=\"\">\r\n </a>\r\n }\r\n\r\n <button (click)=\"handleSignOut()\">\r\n <fa-icon [icon]=\"faSignOut\"></fa-icon>\r\n </button>\r\n </div>\r\n\r\n</nav>\r\n","import {Component, Input, output} from '@angular/core';\r\nimport {RdndSidebarEntry} from \"../../types/Sidebar.types\";\r\nimport {outputAst} from \"@angular/compiler\";\r\nimport {FaIconComponent} from \"@fortawesome/angular-fontawesome\";\r\nimport {\r\n faArrowRight,\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {NgClass, NgStyle} from \"@angular/common\";\r\nimport {RouterLink} from \"@angular/router\";\r\n\r\n@Component({\r\n selector: 'rdnd-sidebar',\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n RouterLink,\r\n FaIconComponent,\r\n NgStyle\r\n ],\r\n templateUrl: './rdnd-sidebar.component.html',\r\n styleUrl: './rdnd-sidebar.component.scss'\r\n})\r\nexport class RdndSidebar {\r\n\r\n // Icons\r\n protected readonly faArrowRight = faArrowRight;\r\n\r\n // Inputs & Outputs\r\n @Input() show: boolean = false;\r\n @Input() entries : RdndSidebarEntry[] = [];\r\n @Input() backgroundStart: string = \"#C2185B\";\r\n @Input() backgroundEnd: string = \"#7E0083\";\r\n\r\n onClickEntry = output();\r\n\r\n handleClick = () => {\r\n this.onClickEntry.emit();\r\n }\r\n\r\n}\r\n","@if (show) {\r\n <div class=\"background-overlay\" (click)=\"handleClick()\" [ngClass]=\"show ? 'open' : 'closed' \"></div>\r\n}\r\n\r\n<aside\r\n id=\"sidebar\"\r\n class=\"sidebar\"\r\n [ngClass]=\"show ? 'open' : 'closed' \"\r\n [ngStyle]=\"{'background': 'linear-gradient(to bottom, ' + backgroundStart + ', ' + backgroundEnd + ')'}\"\r\n>\r\n\r\n <ul class=\"entries\">\r\n\r\n<!-- <li class=\"section-name\">\r\n Módulos\r\n </li>-->\r\n\r\n @for (entry of entries; track entry.name) {\r\n <li>\r\n <a [routerLink]=\"[entry.url]\" class=\"entry\" (click)=\"handleClick()\">\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ entry.name }}\r\n </a>\r\n </li>\r\n }\r\n\r\n </ul>\r\n\r\n</aside>\r\n","import {colors} from './colors';\r\n\r\nexport const themes = {\r\n disabled: {\r\n default: colors.disabled,\r\n hover: colors.disabled,\r\n border: 'transparent',\r\n active: colors.disabled,\r\n fontColor: colors.disabledText,\r\n },\r\n magenta: {\r\n default: `linear-gradient(to right, ${colors.magentaStart}, ${colors.magentaEnd})`,\r\n hover: `linear-gradient(to right, ${colors.magentaEnd}, ${colors.magentaStart})`,\r\n //default: `${colors.magentaStart}`,\r\n border: 'transparent',\r\n active: colors.magentaStart, // Color al hacer clic\r\n fontColor: colors.white, // Texto en blanco\r\n },\r\n magentaSolid: {\r\n default: `${colors.magentaStart}`,\r\n hover: `${colors.magentaEnd}`,\r\n border: 'transparent',\r\n active: colors.magentaStart, // Color al hacer clic\r\n fontColor: colors.white, // Texto en blanco\r\n },\r\n magentaNormal: {\r\n default: `${colors[\"magenta-normal\"]}`,\r\n hover: `${colors.magentaEnd}`,\r\n border: 'transparent',\r\n active: colors[\"magenta-normal\"], // Color al hacer clic\r\n fontColor: colors.white, // Texto en blanco\r\n },\r\n gray: {\r\n default: `${colors[\"light-gray\"]}`,\r\n hover: `linear-gradient(to right, ${colors.magentaEnd}, ${colors.magentaStart})`,\r\n //default: `${colors.magentaStart}`,\r\n border: 'transparent',\r\n active: colors.magentaStart, // Color al hacer clic\r\n fontColor: colors.white, // Texto en blanco\r\n },\r\n green: {\r\n default: `${colors[\"green-medium\"]}`,\r\n hover: colors.green,\r\n border: 'transparent',\r\n active: colors[\"green-xs-dark\"],\r\n fontColor: colors.white,\r\n },\r\n red: {\r\n default: `${colors[\"red-medium\"]}`,\r\n hover: colors.red,\r\n border: 'transparent',\r\n active: colors[\"red\"],\r\n fontColor: colors.white,\r\n },\r\n bordered: {\r\n default: 'transparent',\r\n hover: 'transparent',\r\n border: colors.magentaStart,\r\n active: 'transparent',\r\n fontColor: colors.magentaStart\r\n },\r\n borderedWhite: {\r\n default: 'white',\r\n hover: 'white',\r\n border: colors.magentaStart,\r\n active: 'white',\r\n fontColor: colors.magentaStart\r\n },\r\n transparent: {\r\n default: 'transparent',\r\n hover: 'transparent',\r\n border: 'transparent',\r\n active: 'transparent',\r\n fontColor: colors.magentaStart\r\n },\r\n purple: {\r\n default: `${colors['blue-info']}`,\r\n hover: colors[\"purple-light\"],\r\n border: 'transparent',\r\n active: colors.purple,\r\n fontColor: colors.white,\r\n },\r\n yellow: {\r\n default: `${colors['yellow-normal']}`,\r\n hover: colors[\"yellow\"],\r\n border: 'transparent',\r\n active: colors[\"yellow-light\"],\r\n fontColor: colors.white,\r\n },\r\n blue: {\r\n default: `${colors['yellow-normal']}`,\r\n hover: colors[\"yellow\"],\r\n border: 'transparent',\r\n active: colors[\"yellow-light\"],\r\n fontColor: colors.white,\r\n }\r\n\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\nexport interface ButtonServiceType {\r\n enable: () => void;\r\n disable: () => void;\r\n disabled$: Observable<boolean>\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ButtonService {\r\n private buttonsState: { [id: string]: BehaviorSubject<boolean> } = {};\r\n\r\n private ensureButtonExists(id: string): void {\r\n if (!this.buttonsState[id]) {\r\n this.buttonsState[id] = new BehaviorSubject<boolean>(false);\r\n }\r\n }\r\n\r\n useButton(id: string): ButtonServiceType {\r\n this.ensureButtonExists(id);\r\n\r\n return {\r\n disabled$: this.buttonsState[id].asObservable(),\r\n enable: () => this.buttonsState[id].next(false),\r\n disable: () => this.buttonsState[id].next(true),\r\n };\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core';\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport {Observable, Subscription} from 'rxjs';\r\nimport {FaIconComponent} from \"@fortawesome/angular-fontawesome\";\r\nimport {NgClass, NgIf} from \"@angular/common\";\r\n// @ts-ignore\r\nimport {themes} from \"../../styles/themes\";\r\nimport {ButtonService, ButtonServiceType} from \"../../hooks/button.service\";\r\n// @ts-ignore\r\n\r\n\r\n\r\n@Component({\r\n selector: 'rdnd-button',\r\n templateUrl: './button.component.html',\r\n standalone: true,\r\n imports: [\r\n FaIconComponent,\r\n NgIf,\r\n NgClass\r\n ],\r\n styleUrls: ['./button.component.scss']\r\n})\r\nexport class RdndButton implements OnInit, OnDestroy {\r\n @Input() id!: string;\r\n @Input() icon?: IconDefinition;\r\n @Input() text: string = 'Enviar';\r\n @Input() theme: any = themes.magenta;\r\n @Input() size: 'contained' | 'full' = 'full';\r\n @Input() type: 'button' | 'submit' | 'reset' = 'submit';\r\n @Input() borders: boolean = true;\r\n @Input() disabled: boolean = false;\r\n\r\n @Output() callback: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n protected readonly themes = themes;\r\n private subscription!: Subscription;\r\n hoverBackgroundColor: string = this.theme.default;\r\n\r\n buttonControl!: ButtonServiceType ;\r\n\r\n constructor(private buttonService: ButtonService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.buttonControl = this.buttonService.useButton(this.id);\r\n\r\n this.subscription = new Subscription( () =>\r\n this.buttonControl.disabled$.subscribe((isDisabled: boolean) => {\r\n this.disabled = isDisabled;\r\n })\r\n )\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if(this.subscription){\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n handleClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (!this.disabled && this.type !== 'submit') {\r\n this.callback.emit();\r\n }\r\n }\r\n\r\n onMouseEnter() {\r\n if (!this.disabled) {\r\n this.hoverBackgroundColor = this.theme.hover;\r\n }\r\n }\r\n\r\n onMouseLeave() {\r\n if (!this.disabled) {\r\n this.hoverBackgroundColor = this.theme.default;\r\n }\r\n }\r\n\r\n protected readonly event = event;\r\n}\r\n","<button\r\n [ngClass]=\"{\r\n 'full': size === 'full',\r\n 'contained': size === 'contained',\r\n 'bordered': borders,\r\n 'disabled': disabled\r\n }\"\r\n [style.background]=\"disabled ? themes.disabled.default : theme.default\"\r\n [style.color]=\"theme.fontColor\"\r\n [style.border]=\"borders ? '1px solid ' + theme.border : 'none'\"\r\n [style.cursor]=\"disabled ? 'not-allowed' : 'pointer'\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"disabled\"\r\n\r\n (mouseleave)=\"onMouseLeave()\"\r\n (click)=\"handleClick($event)\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n>\r\n <fa-icon *ngIf=\"icon\" [icon]=\"icon\" class=\"icon\"></fa-icon>\r\n {{ text }}\r\n</button>\r\n","import { Injectable } from '@angular/core';\r\nimport {BehaviorSubject, Observable} from 'rxjs';\r\nimport { FormControl, ValidationErrors } from '@angular/forms';\r\n\r\nexport type InputStateType = {\r\n isValid: BehaviorSubject<boolean>;\r\n valid: Observable<boolean>;\r\n errorMessage: Observable<string | null>;\r\n setValid: (isValid: boolean) => void;\r\n setErrorMessage: (message: string | null) => void;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class InputService {\r\n\r\n private inputState: {\r\n [id: string]: {\r\n valid$: BehaviorSubject<boolean>;\r\n errorMessage$: BehaviorSubject<string | null>;\r\n };\r\n } = {};\r\n\r\n private ensureInputExists(id: string): void {\r\n if (!this.inputState[id]) {\r\n this.inputState[id] = {\r\n valid$: new BehaviorSubject<boolean>(false),\r\n errorMessage$: new BehaviorSubject<string | null>(null),\r\n };\r\n }\r\n }\r\n\r\n useInput(id: string): InputStateType {\r\n this.ensureInputExists(id);\r\n\r\n return {\r\n isValid: this.inputState[id].valid$,\r\n valid: this.inputState[id].valid$.asObservable(),\r\n errorMessage: this.inputState[id].errorMessage$.asObservable(),\r\n setValid: (isValid: boolean) => this.inputState[id].valid$.next(isValid),\r\n setErrorMessage: (message: string | null) =>\r\n this.inputState[id].errorMessage$.next(message),\r\n };\r\n }\r\n\r\n updateInputState(control: FormControl, id: string): void {\r\n this.ensureInputExists(id);\r\n\r\n const errors: ValidationErrors | null = control.errors;\r\n\r\n if (control.valid) {\r\n this.inputState[id].valid$.next(true);\r\n this.inputState[id].errorMessage$.next(null);\r\n } else {\r\n this.inputState[id].valid$.next(false);\r\n this.inputState[id].errorMessage$.next(this.getErrorMessage(errors));\r\n }\r\n }\r\n\r\n private getErrorMessage(errors: ValidationErrors | null): string | null {\r\n if (!errors) return null;\r\n\r\n if (errors['required']) return 'Este campo es obligatorio';\r\n if (errors['minlength'])\r\n return `Mínimo ${errors['minlength'].requiredLength} caracteres requeridos`;\r\n if (errors['maxlength'])\r\n return `Máximo ${errors['maxlength'].requiredLength} caracteres permitidos`;\r\n if (errors['email']) return 'Formato de correo inválido';\r\n\r\n return null;\r\n }\r\n}\r\n","import {Component, Input, Output, EventEmitter, OnInit} from '@angular/core';\r\nimport {FormControl, ReactiveFormsModule, ValidationErrors, ValidatorFn, Validators} from '@angular/forms';\r\nimport {faEyeSlash} from '@fortawesome/free-solid-svg-icons';\r\nimport {NgClass, NgIf} from '@angular/common';\r\nimport {FontAwesomeModule} from '@fortawesome/angular-fontawesome';\r\nimport {InputService} from \"../../hooks/input.service\";\r\n\r\n\r\n@Component({\r\n selector: 'rdnd-input',\r\n templateUrl: './input.component.html',\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n NgClass,\r\n FontAwesomeModule,\r\n ReactiveFormsModule\r\n ],\r\n styleUrls: ['./input.component.scss']\r\n})\r\nexport class RdndInput implements OnInit {\r\n @Input() id!: string;\r\n @Input() name!: string;\r\n @Input() type: 'text' | 'password' | 'number' = 'text';\r\n @Input() placeholder: string = '';\r\n @Input() value: string = '';\r\n @Input() validators: ValidatorFn[] = [];\r\n @Input() disabled: boolean = false;\r\n\r\n @Output() valueChange = new EventEmitter<string>();\r\n @Output() onKeyDown = new EventEmitter<KeyboardEvent>();\r\n @Output() onPaste = new EventEmitter<ClipboardEvent>();\r\n @Output() onFocus = new EventEmitter<FocusEvent>();\r\n @Output() onBlur = new EventEmitter<FocusEvent>();\r\n\r\n control!: FormControl;\r\n faEyeSlash = faEyeSlash;\r\n showPassword: boolean = false;\r\n showError: boolean = false;\r\n\r\n constructor(private inputService: InputService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.control = new FormControl(this.value, this.validators);\r\n\r\n this.valueChange.emit(this.value);\r\n this.inputService.updateInputState(this.control, this.id);\r\n\r\n this.control.valueChanges.subscribe((value) => {\r\n this.valueChange.emit(value);\r\n this.inputService.updateInputState(this.control, this.id);\r\n });\r\n\r\n }\r\n\r\n getErrorMessage(): string | null {\r\n if (this.control && this.control.errors) {\r\n const errorKeys = Object.keys(this.control.errors);\r\n if (errorKeys.length > 0) {\r\n const firstErrorKey = errorKeys[0];\r\n return (this.control.errors as ValidationErrors)[firstErrorKey];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n toggleErrorDisplay() {\r\n this.showError = !this.showError;\r\n }\r\n\r\n hasError(): boolean {\r\n return this.control.invalid && (this.control.dirty || this.control.touched);\r\n }\r\n\r\n handleTogglePassword(): void {\r\n this.showPassword = !this.showPassword;\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent): void {\r\n const allowRegex = /^[a-zA-Z!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]*$/\r\n\r\n if (\r\n this.type === 'number' && !(\r\n ['Backspace', 'Shift', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(event.key)\r\n ) && !(event.altKey || event.ctrlKey || event.metaKey || event.shiftKey)\r\n ) {\r\n event.key.match(allowRegex) ? event.preventDefault() : this.onKeyDown.emit(event);\r\n } else {\r\n this.onKeyDown.emit(event);\r\n }\r\n }\r\n\r\n handlePaste(event: ClipboardEvent): void {\r\n this.onPaste.emit(event);\r\n }\r\n\r\n handleFocus(event: FocusEvent): void {\r\n this.onFocus.emit(event);\r\n }\r\n\r\n handleBlur(event: FocusEvent): void {\r\n this.onBlur.emit(event);\r\n }\r\n}\r\n","<div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\r\n <!-- Ícono de error que aparece por encima del campo si hay error -->\r\n <span *ngIf=\"hasError()\" class=\"error-icon\" (click)=\"toggleErrorDisplay()\">&#9432;</span>\r\n\r\n <!-- Botón de mostrar/ocultar contraseña centrado verticalmente -->\r\n <button *ngIf=\"type === 'password'\" type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\">\r\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword\"></fa-icon>\r\n </button>\r\n\r\n <!-- Input que cambia de borde si tiene error -->\r\n <input\r\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (paste)=\"handlePaste($event)\"\r\n (focus)=\"handleFocus($event)\"\r\n (blur)=\"handleBlur($event)\"\r\n [ngClass]=\"{ 'error-border': hasError() }\"\r\n />\r\n\r\n <!-- Mensaje de error que aparece solo cuando se clickea en el ícono de error -->\r\n <div *ngIf=\"control.invalid && control.dirty && showError\" class=\"error-message\">\r\n {{ getErrorMessage() }}\r\n </div>\r\n</div>\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {IconDefinition} from '@fortawesome/free-solid-svg-icons';\r\nimport {themes} from \"../../styles/themes\";\r\nimport {FontAwesomeModule} from '@fortawesome/angular-fontawesome';\r\nimport {RdndButton} from \"../button/button.component\";\r\nimport {RdndScreenTitle} from \"../screen-title/screen-title.component\";\r\n\r\n@Component({\r\n selector: 'rdnd-modal',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n RdndButton,\r\n RdndScreenTitle,\r\n ],\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss'\r\n})\r\nexport class RdndModal {\r\n @Input() title: string = '';\r\n @Input() type: 'success' | 'error' | 'question' | 'warning' | 'info' = 'success';\r\n @Input() theme: any = themes.magenta;\r\n @Input() confirmText: string = '';\r\n @Input() cancelText: string = '';\r\n @Output() close = new EventEmitter<boolean>();\r\n\r\n protected readonly themes = themes;\r\n\r\n icon?: IconDefinition;\r\n content: string = '';\r\n\r\n closeModal(result: boolean) {\r\n this.close.emit(result);\r\n }\r\n\r\n constructor() {\r\n }\r\n\r\n}\r\n","<div class=\"modal-wrapper\">\r\n\r\n <div class=\"container\" (click)=\"$event.stopPropagation()\">\r\n\r\n <div class=\"content\">\r\n\r\n @if (icon) {\r\n <fa-icon [icon]=\"icon\" class=\"icon\" [style.color]=\"theme.default\"\r\n />\r\n }\r\n\r\n <span class=\"subtitle align-center\">{{ title }}</span>\r\n\r\n <div class=\"text align-center\" [innerHTML]=\"content\">\r\n </div>\r\n\r\n\r\n @if (type !== 'question') {\r\n <rdnd-button\r\n [id]=\"'btn-modal'\"\r\n [type]=\"'button'\"\r\n (callback)=\"closeModal(true)\"\r\n [text]=\"'Aceptar'\"\r\n [theme]=\"theme\"\r\n [size]=\"'full'\"\r\n />\r\n } @else {\r\n <rdnd-button\r\n [id]=\"'btn-modal-accept'\"\r\n [type]=\"'button'\"\r\n (callback)=\"closeModal(true)\"\r\n [text]=\"confirmText\"\r\n [theme]=\"theme\"\r\n [size]=\"'full'\"\r\n />\r\n <rdnd-button\r\n [id]=\"'btn-modal-cancel'\"\r\n [type]=\"'button'\"\r\n (callback)=\"closeModal(false)\"\r\n [text]=\"cancelText\"\r\n [theme]=\"themes.bordered\"\r\n [size]=\"'full'\"\r\n />\r\n }\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n</div>\r\n\r\n","import {Injectable, ComponentRef} from '@angular/core';\r\nimport {ApplicationRef, ComponentFactoryResolver, Injector} from '@angular/core';\r\nimport {faCircleCheck, faCircleQuestion, IconDefinition} from '@fortawesome/free-solid-svg-icons';\r\nimport {faTriangleExclamation} from \"@fortawesome/free-solid-svg-icons/faTriangleExclamation\";\r\nimport {themes} from \"../styles/themes\";\r\nimport {faTable} from \"@fortawesome/free-solid-svg-icons/faTable\";\r\nimport {RdndModal} from \"../components/modal/modal.component\";\r\n\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class ModalService {\r\n private modalRef: ComponentRef<RdndModal> | null = null;\r\n\r\n constructor(\r\n private appRef: ApplicationRef,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private injector: Injector\r\n ) {\r\n }\r\n\r\n openModal(title: string, content: string, type: 'success' | 'error' | 'question' | 'warning' | 'info' = 'success', confirmText = 'Continuar', cancelText = 'Cancelar'): Promise<boolean> {\r\n if (this.modalRef) return Promise.resolve(false);\r\n\r\n const factory = this.componentFactoryResolver.resolveComponentFactory(RdndModal);\r\n this.modalRef = factory.create(this.injector);\r\n\r\n this.modalRef.instance.title = title;\r\n this.modalRef.instance.type = type;\r\n this.modalRef.instance.theme = this.getStyleTheme(type);\r\n this.modalRef.instance.content = content;\r\n this.modalRef.instance.icon = this.getIcon(type);\r\n this.modalRef.instance.confirmText = confirmText;\r\n this.modalRef.instance.cancelText = cancelText;\r\n\r\n const result = new Promise<boolean>((resolve) => {\r\n this.modalRef!.instance.close.subscribe((res: boolean) => {\r\n this.closeModal();\r\n resolve(res);\r\n });\r\n });\r\n\r\n this.appRef.attachView(this.modalRef.hostView);\r\n const domElem = (this.modalRef.hostView as any).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n\r\n return result;\r\n }\r\n\r\n getStyleTheme = (theme: 'success' | 'error' | 'question' | 'warning' | 'info') => {\r\n switch (theme) {\r\n case \"success\":\r\n return themes.green;\r\n case 'error':\r\n return themes.magentaNormal;\r\n case 'question':\r\n return themes.purple\r\n case 'warning':\r\n return themes.yellow\r\n case 'info':\r\n return themes.purple\r\n }\r\n }\r\n\r\n closeModal(): void {\r\n if (this.modalRef) {\r\n this.appRef.detachView(this.modalRef.hostView);\r\n this.modalRef.destroy();\r\n this.modalRef = null;\r\n }\r\n }\r\n\r\n getIcon(theme: 'success' | 'error' | 'question' | 'warning' | 'info'): IconDefinition {\r\n switch (theme) {\r\n case 'error':\r\n return faTriangleExclamation;\r\n case 'question':\r\n return faCircleQuestion\r\n case \"success\":\r\n return faCircleCheck\r\n case \"warning\":\r\n return faTriangleExclamation;\r\n case \"info\":\r\n return faTable;\r\n }\r\n\r\n }\r\n}\r\n","/*\r\n * Public API Surface of gentera-rdnd\r\n */\r\n\r\nexport * from './lib/components/screen-title/screen-title.component';\r\nexport * from \"./lib/components/rdnd-navbar/rdnd-navbar.component\";\r\nexport * from \"./lib/components/rdnd-sidebar/rdnd-sidebar.component\";\r\n\r\nexport * from './lib/components/button/button.component';\r\nexport * from './lib/components/input/input.component';\r\nexport * from './lib/components/modal/modal.component';\r\n\r\nexport * from './lib/hooks/button.service';\r\nexport * from './lib/hooks/input.service';\r\nexport * from './lib/hooks/modal.service';\r\n\r\n// Export utils\r\nexport {themes as rdndThemes} from './lib/styles/themes';\r\n\r\n\r\n// Export types\r\nexport {RdndSidebarEntry} from \"./lib/types/Sidebar.types\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ButtonService","i1.InputService"],"mappings":"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"}
1
+ {"version":3,"file":"gentera-rdnd.mjs","sources":["../../../projects/gentera-rdnd/src/lib/styles/colors.ts","../../../projects/gentera-rdnd/src/lib/components/screen-title/screen-title.component.ts","../../../projects/gentera-rdnd/src/lib/components/screen-title/screen-title.component.html","../../../projects/gentera-rdnd/src/lib/components/rdnd-navbar/rdnd-navbar.component.ts","../../../projects/gentera-rdnd/src/lib/components/rdnd-navbar/rdnd-navbar.component.html","../../../projects/gentera-rdnd/src/lib/components/rdnd-sidebar/rdnd-sidebar.component.ts","../../../projects/gentera-rdnd/src/lib/components/rdnd-sidebar/rdnd-sidebar.component.html","../../../projects/gentera-rdnd/src/lib/styles/themes.ts","../../../projects/gentera-rdnd/src/lib/hooks/button.service.ts","../../../projects/gentera-rdnd/src/lib/components/button/button.component.ts","../../../projects/gentera-rdnd/src/lib/components/button/button.component.html","../../../projects/gentera-rdnd/src/lib/hooks/input.service.ts","../../../projects/gentera-rdnd/src/lib/components/input/input.component.ts","../../../projects/gentera-rdnd/src/lib/components/input/input.component.html","../../../projects/gentera-rdnd/src/lib/components/modal/modal.component.ts","../../../projects/gentera-rdnd/src/lib/components/modal/modal.component.html","../../../projects/gentera-rdnd/src/lib/hooks/modal.service.ts","../../../projects/gentera-rdnd/src/lib/services/storage.service.ts","../../../projects/gentera-rdnd/src/public-api.ts","../../../projects/gentera-rdnd/src/gentera-rdnd.ts"],"sourcesContent":["export const colors = {\r\n black: '#171717',\r\n 'black-light': '#343434',\r\n 'black-dark': '#000000',\r\n 'black-navy': '#191a21',\r\n\r\n 'xs-dark-gray': '#5A5A5A',\r\n 'dark-gray': '#9E9E9E',\r\n 'medium-gray': '#AFAFAF',\r\n gray: '#C4C4C4',\r\n 'light-gray': '#C6C6C6',\r\n 'xs-light-gray': '#DFDFDF',\r\n 'xxs-light-gray': '#F2F2F2',\r\n 'soft-white': '#EEEEEE',\r\n\r\n green: '#28a746',\r\n 'green-medium': '#208B6A',\r\n 'green-dark': '#156a29',\r\n 'green-xs-dark': 'rgb(33, 97, 90)',\r\n 'green-1': '#009F74',\r\n 'green-2': '#00B987',\r\n 'green-3': '#19C496',\r\n 'green-light': '#84ce94',\r\n 'green-4': '#50D8B3',\r\n 'green-5': '#83E6B8',\r\n\r\n \"blue-info\": '#7390EC',\r\n blue: '#3360fa',\r\n 'blue-dark': '#1a389e',\r\n 'blue-light': '#3390fa',\r\n 'blue-gray-soft': '#E5EAEDFF',\r\n 'blue-gray-light': 'rgb(244,247,250)',\r\n\r\n orange: '#F77C00',\r\n 'orange-light': '#F7B500',\r\n\r\n yellow: '#F09D00',\r\n \"yellow-normal\": '#FFBC57',\r\n 'yellow-light': '#FFC400',\r\n\r\n purple: '#6459be',\r\n 'purple-light': 'rgb(149, 138, 242)',\r\n\r\n red: '#E60018',\r\n 'red-light': '#e74364',\r\n 'red-medium': '#c51628',\r\n\r\n \"white\": \"#FFFFFF\",\r\n \"magentaStart\": \"#C2185B\",\r\n \"magentaEnd\": \"#7E0083\",\r\n 'magenta-normal': '#B41364',\r\n\r\n disabled: '#C6C6C6',\r\n \"disabledText\": \"#9E9E9E\",\r\n};\r\n","import {Component, Input} from '@angular/core';\r\nimport {NgClass, NgStyle} from \"@angular/common\";\r\nimport {colors} from \"../../styles/colors\";\r\n\r\n@Component({\r\n selector: 'rdnd-screen-title',\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n NgStyle\r\n ],\r\n templateUrl: './screen-title.component.html',\r\n styleUrl: './screen-title.component.scss'\r\n})\r\nexport class RdndScreenTitle {\r\n @Input() title!: string;\r\n @Input() align: 'LEFT' | 'CENTER' = 'CENTER';\r\n @Input() color = colors[\"magentaEnd\"];\r\n\r\n}\r\n","<h1 [class]=\" 'align-' + align \" [ngStyle]=\"{\r\n color: color\r\n}\">\r\n {{ title }}\r\n</h1>\r\n","import {Component, Input, output} from '@angular/core';\r\n\r\n// Icons\r\nimport {FaIconComponent} from \"@fortawesome/angular-fontawesome\";\r\nimport {\r\n faBarsStaggered,\r\n faCircle,\r\n faSignOut,\r\n faTimes\r\n} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {NgStyle} from \"@angular/common\";\r\nimport {RouterLink} from \"@angular/router\";\r\n\r\n@Component({\r\n selector: 'rdnd-navbar',\r\n standalone: true,\r\n imports: [\r\n FaIconComponent,\r\n NgStyle,\r\n RouterLink\r\n ],\r\n templateUrl: './rdnd-navbar.component.html',\r\n styleUrl: './rdnd-navbar.component.scss'\r\n})\r\nexport class RdndNavbar {\r\n\r\n // Icons\r\n protected readonly faBarsStaggered = faBarsStaggered;\r\n protected readonly faSignOut = faSignOut;\r\n protected readonly faTimes = faTimes;\r\n\r\n // States\r\n showLoader = false;\r\n\r\n // Inputs & Outputs\r\n @Input() userName: string = \"\";\r\n @Input() imageUrl: string = \"\";\r\n @Input() backgroundStart: string = \"#C2185B\";\r\n @Input() backgroundEnd: string = \"#7E0083\";\r\n @Input() showSidebar = false;\r\n onSignOut = output();\r\n onToggleSidebar = output();\r\n\r\n // Functions\r\n toggleMenu = () => {\r\n this.showSidebar = !this.showSidebar;\r\n this.onToggleSidebar.emit();\r\n }\r\n\r\n closeMenu = () => {\r\n this.showSidebar = false;\r\n }\r\n\r\n handleSignOut = () => {\r\n this.onSignOut.emit();\r\n }\r\n\r\n\r\n}\r\n","<nav [ngStyle]=\"{'background': 'linear-gradient(to right, ' + backgroundStart + ', ' + backgroundEnd + ')'}\">\r\n\r\n <div class=\"rdnd-nav-container\">\r\n <button (click)=\"toggleMenu()\" >\r\n <fa-icon [icon]=\"showSidebar ? faTimes : faBarsStaggered\"></fa-icon>\r\n </button>\r\n\r\n @if (imageUrl) {\r\n <a [routerLink]=\"['/']\">\r\n <img src=\"{{imageUrl}}\" alt=\"\">\r\n </a>\r\n }\r\n\r\n <button (click)=\"handleSignOut()\">\r\n <fa-icon [icon]=\"faSignOut\"></fa-icon>\r\n </button>\r\n </div>\r\n\r\n</nav>\r\n","import {Component, Input, output} from '@angular/core';\r\nimport {FaIconComponent} from '@fortawesome/angular-fontawesome';\r\nimport {\r\n faArrowRight,\r\n faChevronDown,\r\n faChevronUp,\r\n} from '@fortawesome/free-solid-svg-icons';\r\nimport {NgClass, NgStyle, NgIf, NgFor, NgTemplateOutlet} from '@angular/common';\r\nimport {RouterLink} from '@angular/router';\r\nimport {RdndSidebarItem} from \"../../types/Sidebar.types\";\r\n\r\n@Component({\r\n selector: 'rdnd-sidebar',\r\n standalone: true,\r\n imports: [\r\n NgClass,\r\n NgStyle,\r\n NgIf,\r\n NgFor,\r\n NgTemplateOutlet,\r\n RouterLink,\r\n FaIconComponent,\r\n ],\r\n templateUrl: './rdnd-sidebar.component.html',\r\n styleUrl: './rdnd-sidebar.component.scss',\r\n})\r\nexport class RdndSidebar {\r\n @Input() show: boolean = false;\r\n @Input() entries: RdndSidebarItem[] = [];\r\n @Input() backgroundStart: string = '#C2185B';\r\n @Input() backgroundEnd: string = '#7E0083';\r\n\r\n onClickEntry = output();\r\n\r\n protected readonly faArrowRight = faArrowRight;\r\n protected readonly faChevronDown = faChevronDown;\r\n protected readonly faChevronUp = faChevronUp;\r\n\r\n openSections = new Set<string>();\r\n\r\n handleClick = () => {\r\n this.onClickEntry.emit();\r\n };\r\n\r\n toggleSection(name: string) {\r\n this.openSections.has(name)\r\n ? this.openSections.delete(name)\r\n : this.openSections.add(name);\r\n }\r\n\r\n isSectionOpen(name: string): boolean {\r\n return this.openSections.has(name);\r\n }\r\n}\r\n","@if (show) {\r\n <div\r\n class=\"background-overlay\"\r\n (click)=\"handleClick()\"\r\n [ngClass]=\"show ? 'open' : 'closed'\">\r\n </div>\r\n}\r\n\r\n<aside\r\n id=\"sidebar\"\r\n class=\"sidebar\"\r\n [ngClass]=\"show ? 'open' : 'closed'\"\r\n [ngStyle]=\"{\r\n 'background': 'linear-gradient(to bottom, ' + backgroundStart + ', ' + backgroundEnd + ')'\r\n }\"\r\n>\r\n <ul class=\"entries\">\r\n @for (item of entries; track item.name) {\r\n @if (item.type === 'ENTRY') {\r\n <li>\r\n <a [routerLink]=\"[item.url]\" class=\"entry\" (click)=\"handleClick()\">\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ item.name }}\r\n </a>\r\n </li>\r\n } @else if (item.type === 'SECTION') {\r\n <li class=\"section\">\r\n <div class=\"section-title\" (click)=\"toggleSection(item.name)\">\r\n <fa-icon\r\n [icon]=\"isSectionOpen(item.name) ? faChevronUp : faChevronDown\"\r\n class=\"chevron\"\r\n />\r\n <span>{{ item.name }}</span>\r\n </div>\r\n\r\n @if (isSectionOpen(item.name)) {\r\n <ul class=\"section-entries\">\r\n @for (entry of item.entries; track entry.name) {\r\n <li>\r\n <a\r\n [routerLink]=\"[item.url + '/' + entry.url]\"\r\n class=\"entry\"\r\n (click)=\"handleClick()\"\r\n >\r\n <fa-icon [icon]=\"faArrowRight\"/>\r\n {{ entry.name }}\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n }\r\n\r\n </ul>\r\n</aside>\r\n","import {colors} from './colors';\r\n\r\nexport const themes = {\r\n disabled: {\r\n default: colors.disabled,\r\n hover: colors.disabled,\r\n border: 'transparent',\r\n active: colors.disabled,\r\n fontColor: colors.disabledText,\r\n },\r\n magenta: {\r\n default: `linear-gradient(to right, ${colors.magentaStart}, ${colors.magentaEnd})`,\r\n hover: `linear-gradient(to right, ${colors.magentaEnd}, ${colors.magentaStart})`,\r\n //default: `${colors.magentaStart}`,\r\n border: 'transparent',\r\n active: colors.magentaStart, // Color al hacer clic\r\n fontColor: colors.white, // Texto en blanco\r\n },\r\n magentaSolid: {\r\n default: `${colors.magentaStart}`,\r\n hover: `${colors.magentaEnd}`,\r\n border: 'transparent',\r\n active: colors.magentaStart, // Color al hacer clic\r\n fontColor: colors.white, // Texto en blanco\r\n },\r\n magentaNormal: {\r\n default: `${colors[\"magenta-normal\"]}`,\r\n hover: `${colors.magentaEnd}`,\r\n border: 'transparent',\r\n active: colors[\"magenta-normal\"], // Color al hacer clic\r\n fontColor: colors.white, // Texto en blanco\r\n },\r\n gray: {\r\n default: `${colors[\"light-gray\"]}`,\r\n hover: `linear-gradient(to right, ${colors.magentaEnd}, ${colors.magentaStart})`,\r\n //default: `${colors.magentaStart}`,\r\n border: 'transparent',\r\n active: colors.magentaStart, // Color al hacer clic\r\n fontColor: colors.white, // Texto en blanco\r\n },\r\n green: {\r\n default: `${colors[\"green-medium\"]}`,\r\n hover: colors.green,\r\n border: 'transparent',\r\n active: colors[\"green-xs-dark\"],\r\n fontColor: colors.white,\r\n },\r\n red: {\r\n default: `${colors[\"red-medium\"]}`,\r\n hover: colors.red,\r\n border: 'transparent',\r\n active: colors[\"red\"],\r\n fontColor: colors.white,\r\n },\r\n bordered: {\r\n default: 'transparent',\r\n hover: 'transparent',\r\n border: colors.magentaStart,\r\n active: 'transparent',\r\n fontColor: colors.magentaStart\r\n },\r\n borderedWhite: {\r\n default: 'white',\r\n hover: 'white',\r\n border: colors.magentaStart,\r\n active: 'white',\r\n fontColor: colors.magentaStart\r\n },\r\n transparent: {\r\n default: 'transparent',\r\n hover: 'transparent',\r\n border: 'transparent',\r\n active: 'transparent',\r\n fontColor: colors.magentaStart\r\n },\r\n purple: {\r\n default: `${colors['blue-info']}`,\r\n hover: colors[\"purple-light\"],\r\n border: 'transparent',\r\n active: colors.purple,\r\n fontColor: colors.white,\r\n },\r\n yellow: {\r\n default: `${colors['yellow-normal']}`,\r\n hover: colors[\"yellow\"],\r\n border: 'transparent',\r\n active: colors[\"yellow-light\"],\r\n fontColor: colors.white,\r\n },\r\n blue: {\r\n default: `${colors['yellow-normal']}`,\r\n hover: colors[\"yellow\"],\r\n border: 'transparent',\r\n active: colors[\"yellow-light\"],\r\n fontColor: colors.white,\r\n }\r\n\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\n\r\nexport interface ButtonServiceType {\r\n enable: () => void;\r\n disable: () => void;\r\n disabled$: Observable<boolean>\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ButtonService {\r\n private buttonsState: { [id: string]: BehaviorSubject<boolean> } = {};\r\n\r\n private ensureButtonExists(id: string): void {\r\n if (!this.buttonsState[id]) {\r\n this.buttonsState[id] = new BehaviorSubject<boolean>(false);\r\n }\r\n }\r\n\r\n useButton(id: string): ButtonServiceType {\r\n this.ensureButtonExists(id);\r\n\r\n return {\r\n disabled$: this.buttonsState[id].asObservable(),\r\n enable: () => this.buttonsState[id].next(false),\r\n disable: () => this.buttonsState[id].next(true),\r\n };\r\n }\r\n}\r\n","import { Component, Input, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core';\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport {Observable, Subscription} from 'rxjs';\r\nimport {FaIconComponent} from \"@fortawesome/angular-fontawesome\";\r\nimport {NgClass, NgIf} from \"@angular/common\";\r\n// @ts-ignore\r\nimport {themes} from \"../../styles/themes\";\r\nimport {ButtonService, ButtonServiceType} from \"../../hooks/button.service\";\r\n// @ts-ignore\r\n\r\n\r\n\r\n@Component({\r\n selector: 'rdnd-button',\r\n templateUrl: './button.component.html',\r\n standalone: true,\r\n imports: [\r\n FaIconComponent,\r\n NgIf,\r\n NgClass\r\n ],\r\n styleUrls: ['./button.component.scss']\r\n})\r\nexport class RdndButton implements OnInit, OnDestroy {\r\n @Input() id!: string;\r\n @Input() icon?: IconDefinition;\r\n @Input() text: string = 'Enviar';\r\n @Input() theme: any = themes.magenta;\r\n @Input() size: 'contained' | 'full' = 'full';\r\n @Input() type: 'button' | 'submit' | 'reset' = 'submit';\r\n @Input() borders: boolean = true;\r\n @Input() disabled: boolean = false;\r\n\r\n @Output() callback: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n protected readonly themes = themes;\r\n private subscription!: Subscription;\r\n hoverBackgroundColor: string = this.theme.default;\r\n\r\n buttonControl!: ButtonServiceType ;\r\n\r\n constructor(private buttonService: ButtonService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.buttonControl = this.buttonService.useButton(this.id);\r\n\r\n this.subscription = new Subscription( () =>\r\n this.buttonControl.disabled$.subscribe((isDisabled: boolean) => {\r\n this.disabled = isDisabled;\r\n })\r\n )\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if(this.subscription){\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n handleClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n if (!this.disabled && this.type !== 'submit') {\r\n this.callback.emit();\r\n }\r\n }\r\n\r\n onMouseEnter() {\r\n if (!this.disabled) {\r\n this.hoverBackgroundColor = this.theme.hover;\r\n }\r\n }\r\n\r\n onMouseLeave() {\r\n if (!this.disabled) {\r\n this.hoverBackgroundColor = this.theme.default;\r\n }\r\n }\r\n\r\n protected readonly event = event;\r\n}\r\n","<button\r\n [ngClass]=\"{\r\n 'full': size === 'full',\r\n 'contained': size === 'contained',\r\n 'bordered': borders,\r\n 'disabled': disabled\r\n }\"\r\n [style.background]=\"disabled ? themes.disabled.default : theme.default\"\r\n [style.color]=\"theme.fontColor\"\r\n [style.border]=\"borders ? '1px solid ' + theme.border : 'none'\"\r\n [style.cursor]=\"disabled ? 'not-allowed' : 'pointer'\"\r\n [attr.type]=\"type\"\r\n [disabled]=\"disabled\"\r\n\r\n (mouseleave)=\"onMouseLeave()\"\r\n (click)=\"handleClick($event)\"\r\n (mouseenter)=\"onMouseEnter()\"\r\n>\r\n <fa-icon *ngIf=\"icon\" [icon]=\"icon\" class=\"icon\"></fa-icon>\r\n {{ text }}\r\n</button>\r\n","import { Injectable } from '@angular/core';\r\nimport {BehaviorSubject, Observable} from 'rxjs';\r\nimport { FormControl, ValidationErrors } from '@angular/forms';\r\n\r\nexport type InputStateType = {\r\n isValid: BehaviorSubject<boolean>;\r\n valid: Observable<boolean>;\r\n errorMessage: Observable<string | null>;\r\n setValid: (isValid: boolean) => void;\r\n setErrorMessage: (message: string | null) => void;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class InputService {\r\n\r\n private inputState: {\r\n [id: string]: {\r\n valid$: BehaviorSubject<boolean>;\r\n errorMessage$: BehaviorSubject<string | null>;\r\n };\r\n } = {};\r\n\r\n private ensureInputExists(id: string): void {\r\n if (!this.inputState[id]) {\r\n this.inputState[id] = {\r\n valid$: new BehaviorSubject<boolean>(false),\r\n errorMessage$: new BehaviorSubject<string | null>(null),\r\n };\r\n }\r\n }\r\n\r\n useInput(id: string): InputStateType {\r\n this.ensureInputExists(id);\r\n\r\n return {\r\n isValid: this.inputState[id].valid$,\r\n valid: this.inputState[id].valid$.asObservable(),\r\n errorMessage: this.inputState[id].errorMessage$.asObservable(),\r\n setValid: (isValid: boolean) => this.inputState[id].valid$.next(isValid),\r\n setErrorMessage: (message: string | null) =>\r\n this.inputState[id].errorMessage$.next(message),\r\n };\r\n }\r\n\r\n updateInputState(control: FormControl, id: string): void {\r\n this.ensureInputExists(id);\r\n\r\n const errors: ValidationErrors | null = control.errors;\r\n\r\n if (control.valid) {\r\n this.inputState[id].valid$.next(true);\r\n this.inputState[id].errorMessage$.next(null);\r\n } else {\r\n this.inputState[id].valid$.next(false);\r\n this.inputState[id].errorMessage$.next(this.getErrorMessage(errors));\r\n }\r\n }\r\n\r\n private getErrorMessage(errors: ValidationErrors | null): string | null {\r\n if (!errors) return null;\r\n\r\n if (errors['required']) return 'Este campo es obligatorio';\r\n if (errors['minlength'])\r\n return `Mínimo ${errors['minlength'].requiredLength} caracteres requeridos`;\r\n if (errors['maxlength'])\r\n return `Máximo ${errors['maxlength'].requiredLength} caracteres permitidos`;\r\n if (errors['email']) return 'Formato de correo inválido';\r\n\r\n return null;\r\n }\r\n}\r\n","import {Component, Input, Output, EventEmitter, OnInit} from '@angular/core';\r\nimport {FormControl, ReactiveFormsModule, ValidationErrors, ValidatorFn, Validators} from '@angular/forms';\r\nimport {faEyeSlash} from '@fortawesome/free-solid-svg-icons';\r\nimport {NgClass, NgIf} from '@angular/common';\r\nimport {FontAwesomeModule} from '@fortawesome/angular-fontawesome';\r\nimport {InputService} from \"../../hooks/input.service\";\r\n\r\n\r\n@Component({\r\n selector: 'rdnd-input',\r\n templateUrl: './input.component.html',\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n NgClass,\r\n FontAwesomeModule,\r\n ReactiveFormsModule\r\n ],\r\n styleUrls: ['./input.component.scss']\r\n})\r\nexport class RdndInput implements OnInit {\r\n @Input() id!: string;\r\n @Input() name!: string;\r\n @Input() type: 'text' | 'password' | 'number' = 'text';\r\n @Input() placeholder: string = '';\r\n @Input() value: string = '';\r\n @Input() validators: ValidatorFn[] = [];\r\n @Input() disabled: boolean = false;\r\n\r\n @Output() valueChange = new EventEmitter<string>();\r\n @Output() onKeyDown = new EventEmitter<KeyboardEvent>();\r\n @Output() onPaste = new EventEmitter<ClipboardEvent>();\r\n @Output() onFocus = new EventEmitter<FocusEvent>();\r\n @Output() onBlur = new EventEmitter<FocusEvent>();\r\n\r\n control!: FormControl;\r\n faEyeSlash = faEyeSlash;\r\n showPassword: boolean = false;\r\n showError: boolean = false;\r\n\r\n constructor(private inputService: InputService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.control = new FormControl(this.value, this.validators);\r\n\r\n this.valueChange.emit(this.value);\r\n this.inputService.updateInputState(this.control, this.id);\r\n\r\n this.control.valueChanges.subscribe((value) => {\r\n this.valueChange.emit(value);\r\n this.inputService.updateInputState(this.control, this.id);\r\n });\r\n\r\n }\r\n\r\n getErrorMessage(): string | null {\r\n if (this.control && this.control.errors) {\r\n const errorKeys = Object.keys(this.control.errors);\r\n if (errorKeys.length > 0) {\r\n const firstErrorKey = errorKeys[0];\r\n return (this.control.errors as ValidationErrors)[firstErrorKey];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n toggleErrorDisplay() {\r\n this.showError = !this.showError;\r\n }\r\n\r\n hasError(): boolean {\r\n return this.control.invalid && (this.control.dirty || this.control.touched);\r\n }\r\n\r\n handleTogglePassword(): void {\r\n this.showPassword = !this.showPassword;\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent): void {\r\n const allowRegex = /^[a-zA-Z!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]*$/\r\n\r\n if (\r\n this.type === 'number' && !(\r\n ['Backspace', 'Shift', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(event.key)\r\n ) && !(event.altKey || event.ctrlKey || event.metaKey || event.shiftKey)\r\n ) {\r\n event.key.match(allowRegex) ? event.preventDefault() : this.onKeyDown.emit(event);\r\n } else {\r\n this.onKeyDown.emit(event);\r\n }\r\n }\r\n\r\n handlePaste(event: ClipboardEvent): void {\r\n this.onPaste.emit(event);\r\n }\r\n\r\n handleFocus(event: FocusEvent): void {\r\n this.onFocus.emit(event);\r\n }\r\n\r\n handleBlur(event: FocusEvent): void {\r\n this.onBlur.emit(event);\r\n }\r\n}\r\n"," <div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\r\n <!-- Ícono de error que aparece por encima del campo si hay error -->\r\n <span *ngIf=\"hasError()\" class=\"error-icon\" (click)=\"toggleErrorDisplay()\">&#9432;</span>\r\n\r\n <!-- Botón de mostrar/ocultar contraseña centrado verticalmente -->\r\n <button *ngIf=\"type === 'password'\" type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\">\r\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword\"></fa-icon>\r\n </button>\r\n\r\n <!-- Input que cambia de borde si tiene error -->\r\n <input\r\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\r\n [formControl]=\"control\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"disabled\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (paste)=\"handlePaste($event)\"\r\n (focus)=\"handleFocus($event)\"\r\n (blur)=\"handleBlur($event)\"\r\n [ngClass]=\"{ 'error-border': hasError() }\"\r\n />\r\n\r\n <!-- Mensaje de error que aparece solo cuando se clickea en el ícono de error -->\r\n <div *ngIf=\"control.invalid && control.dirty && showError\" class=\"error-message\">\r\n {{ getErrorMessage() }}\r\n </div>\r\n </div>\r\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {IconDefinition} from '@fortawesome/free-solid-svg-icons';\r\nimport {themes} from \"../../styles/themes\";\r\nimport {FontAwesomeModule} from '@fortawesome/angular-fontawesome';\r\nimport {RdndButton} from \"../button/button.component\";\r\nimport {RdndScreenTitle} from \"../screen-title/screen-title.component\";\r\n\r\n@Component({\r\n selector: 'rdnd-modal',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n RdndButton,\r\n RdndScreenTitle,\r\n ],\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss'\r\n})\r\nexport class RdndModal {\r\n @Input() title: string = '';\r\n @Input() type: 'success' | 'error' | 'question' | 'warning' | 'info' = 'success';\r\n @Input() theme: any = themes.magenta;\r\n @Input() confirmText: string = '';\r\n @Input() cancelText: string = '';\r\n @Output() close = new EventEmitter<boolean>();\r\n\r\n protected readonly themes = themes;\r\n\r\n icon?: IconDefinition;\r\n content: string = '';\r\n\r\n closeModal(result: boolean) {\r\n this.close.emit(result);\r\n }\r\n\r\n constructor() {\r\n }\r\n\r\n}\r\n","<div class=\"modal-wrapper\">\r\n\r\n <div class=\"container\" (click)=\"$event.stopPropagation()\">\r\n\r\n <div class=\"content\">\r\n\r\n @if (icon) {\r\n <fa-icon [icon]=\"icon\" class=\"icon\" [style.color]=\"theme.default\"\r\n />\r\n }\r\n\r\n <span class=\"subtitle align-center\">{{ title }}</span>\r\n\r\n <div class=\"text align-center\" [innerHTML]=\"content\">\r\n </div>\r\n\r\n\r\n @if (type !== 'question') {\r\n <rdnd-button\r\n [id]=\"'btn-modal'\"\r\n [type]=\"'button'\"\r\n (callback)=\"closeModal(true)\"\r\n [text]=\"'Aceptar'\"\r\n [theme]=\"theme\"\r\n [size]=\"'full'\"\r\n />\r\n } @else {\r\n <rdnd-button\r\n [id]=\"'btn-modal-accept'\"\r\n [type]=\"'button'\"\r\n (callback)=\"closeModal(true)\"\r\n [text]=\"confirmText\"\r\n [theme]=\"theme\"\r\n [size]=\"'full'\"\r\n />\r\n <rdnd-button\r\n [id]=\"'btn-modal-cancel'\"\r\n [type]=\"'button'\"\r\n (callback)=\"closeModal(false)\"\r\n [text]=\"cancelText\"\r\n [theme]=\"themes.bordered\"\r\n [size]=\"'full'\"\r\n />\r\n }\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n</div>\r\n\r\n","import {Injectable, ComponentRef} from '@angular/core';\r\nimport {ApplicationRef, ComponentFactoryResolver, Injector} from '@angular/core';\r\nimport {faCircleCheck, faCircleQuestion, IconDefinition} from '@fortawesome/free-solid-svg-icons';\r\nimport {faTriangleExclamation} from \"@fortawesome/free-solid-svg-icons/faTriangleExclamation\";\r\nimport {themes} from \"../styles/themes\";\r\nimport {faTable} from \"@fortawesome/free-solid-svg-icons/faTable\";\r\nimport {RdndModal} from \"../components/modal/modal.component\";\r\n\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class ModalService {\r\n private modalRef: ComponentRef<RdndModal> | null = null;\r\n\r\n constructor(\r\n private appRef: ApplicationRef,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private injector: Injector\r\n ) {\r\n }\r\n\r\n openModal(title: string, content: string, type: 'success' | 'error' | 'question' | 'warning' | 'info' = 'success', confirmText = 'Continuar', cancelText = 'Cancelar'): Promise<boolean> {\r\n if (this.modalRef) return Promise.resolve(false);\r\n\r\n const factory = this.componentFactoryResolver.resolveComponentFactory(RdndModal);\r\n this.modalRef = factory.create(this.injector);\r\n\r\n this.modalRef.instance.title = title;\r\n this.modalRef.instance.type = type;\r\n this.modalRef.instance.theme = this.getStyleTheme(type);\r\n this.modalRef.instance.content = content;\r\n this.modalRef.instance.icon = this.getIcon(type);\r\n this.modalRef.instance.confirmText = confirmText;\r\n this.modalRef.instance.cancelText = cancelText;\r\n\r\n const result = new Promise<boolean>((resolve) => {\r\n this.modalRef!.instance.close.subscribe((res: boolean) => {\r\n this.closeModal();\r\n resolve(res);\r\n });\r\n });\r\n\r\n this.appRef.attachView(this.modalRef.hostView);\r\n const domElem = (this.modalRef.hostView as any).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElem);\r\n\r\n return result;\r\n }\r\n\r\n getStyleTheme = (theme: 'success' | 'error' | 'question' | 'warning' | 'info') => {\r\n switch (theme) {\r\n case \"success\":\r\n return themes.green;\r\n case 'error':\r\n return themes.magentaNormal;\r\n case 'question':\r\n return themes.purple\r\n case 'warning':\r\n return themes.yellow\r\n case 'info':\r\n return themes.purple\r\n }\r\n }\r\n\r\n closeModal(): void {\r\n if (this.modalRef) {\r\n this.appRef.detachView(this.modalRef.hostView);\r\n this.modalRef.destroy();\r\n this.modalRef = null;\r\n }\r\n }\r\n\r\n getIcon(theme: 'success' | 'error' | 'question' | 'warning' | 'info'): IconDefinition {\r\n switch (theme) {\r\n case 'error':\r\n return faTriangleExclamation;\r\n case 'question':\r\n return faCircleQuestion\r\n case \"success\":\r\n return faCircleCheck\r\n case \"warning\":\r\n return faTriangleExclamation;\r\n case \"info\":\r\n return faTable;\r\n }\r\n\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n\r\n constructor() {\r\n }\r\n\r\n public save(key: string, value: any) {\r\n sessionStorage.setItem(key, JSON.stringify(value));\r\n };\r\n\r\n public get(key: string): JSON | null {\r\n const data = sessionStorage.getItem(key);\r\n if (data !== null) {\r\n return JSON.parse(data);\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public delete(key: string): void {\r\n sessionStorage.removeItem(key);\r\n }\r\n public wipe(): void {\r\n sessionStorage.clear();\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of gentera-rdnd\r\n */\r\n\r\nexport * from './lib/components/screen-title/screen-title.component';\r\nexport * from \"./lib/components/rdnd-navbar/rdnd-navbar.component\";\r\nexport * from \"./lib/components/rdnd-sidebar/rdnd-sidebar.component\";\r\n\r\n// Components with its corresponding service handlers\r\nexport * from './lib/components/button/button.component';\r\nexport * from './lib/hooks/button.service';\r\n\r\nexport * from './lib/components/input/input.component';\r\nexport * from './lib/hooks/input.service';\r\n\r\nexport * from './lib/components/modal/modal.component';\r\nexport * from './lib/hooks/modal.service';\r\n\r\n// Export services\r\nexport * from './lib/services/storage.service';\r\n\r\n// Export utils\r\nexport {themes as rdndThemes} from './lib/styles/themes';\r\n\r\n\r\n// Export types\r\nexport {RdndSidebarItem} from \"./lib/types/Sidebar.types\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ButtonService","i1.InputService"],"mappings":"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"}
@@ -1,13 +1,18 @@
1
- import { RdndSidebarEntry } from "../../types/Sidebar.types";
1
+ import { RdndSidebarItem } from "../../types/Sidebar.types";
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class RdndSidebar {
4
- protected readonly faArrowRight: import("@fortawesome/fontawesome-common-types").IconDefinition;
5
4
  show: boolean;
6
- entries: RdndSidebarEntry[];
5
+ entries: RdndSidebarItem[];
7
6
  backgroundStart: string;
8
7
  backgroundEnd: string;
9
8
  onClickEntry: import("@angular/core").OutputEmitterRef<void>;
9
+ protected readonly faArrowRight: import("@fortawesome/fontawesome-common-types").IconDefinition;
10
+ protected readonly faChevronDown: import("@fortawesome/fontawesome-common-types").IconDefinition;
11
+ protected readonly faChevronUp: import("@fortawesome/fontawesome-common-types").IconDefinition;
12
+ openSections: Set<string>;
10
13
  handleClick: () => void;
14
+ toggleSection(name: string): void;
15
+ isSectionOpen(name: string): boolean;
11
16
  static ɵfac: i0.ɵɵFactoryDeclaration<RdndSidebar, never>;
12
17
  static ɵcmp: i0.ɵɵComponentDeclaration<RdndSidebar, "rdnd-sidebar", never, { "show": { "alias": "show"; "required": false; }; "entries": { "alias": "entries"; "required": false; }; "backgroundStart": { "alias": "backgroundStart"; "required": false; }; "backgroundEnd": { "alias": "backgroundEnd"; "required": false; }; }, { "onClickEntry": "onClickEntry"; }, never, never, true, never>;
13
18
  }
@@ -0,0 +1,10 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class StorageService {
3
+ constructor();
4
+ save(key: string, value: any): void;
5
+ get(key: string): JSON | null;
6
+ delete(key: string): void;
7
+ wipe(): void;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<StorageService, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<StorageService>;
10
+ }
@@ -1,4 +1,6 @@
1
- export interface RdndSidebarEntry {
1
+ export interface RdndSidebarItem {
2
+ type: 'ENTRY' | 'SECTION';
2
3
  name: string;
3
4
  url: string;
5
+ entries?: RdndSidebarItem[];
4
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gentera-rdnd",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0",
package/public-api.d.ts CHANGED
@@ -2,10 +2,11 @@ export * from './lib/components/screen-title/screen-title.component';
2
2
  export * from "./lib/components/rdnd-navbar/rdnd-navbar.component";
3
3
  export * from "./lib/components/rdnd-sidebar/rdnd-sidebar.component";
4
4
  export * from './lib/components/button/button.component';
5
- export * from './lib/components/input/input.component';
6
- export * from './lib/components/modal/modal.component';
7
5
  export * from './lib/hooks/button.service';
6
+ export * from './lib/components/input/input.component';
8
7
  export * from './lib/hooks/input.service';
8
+ export * from './lib/components/modal/modal.component';
9
9
  export * from './lib/hooks/modal.service';
10
+ export * from './lib/services/storage.service';
10
11
  export { themes as rdndThemes } from './lib/styles/themes';
11
- export { RdndSidebarEntry } from "./lib/types/Sidebar.types";
12
+ export { RdndSidebarItem } from "./lib/types/Sidebar.types";