gentera-rdnd 2.0.3 → 2.0.5

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.
@@ -1,12 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Input, Component, output, InjectionToken, Optional, Inject, EventEmitter, Output, Injectable } from '@angular/core';
2
+ import { Input, Component, output, InjectionToken, Optional, Inject, EventEmitter, signal, Output, Injectable, computed, effect } from '@angular/core';
3
3
  import { NgStyle, NgClass } from '@angular/common';
4
4
  import * as i1 from '@fortawesome/angular-fontawesome';
5
5
  import { FaIconComponent, FontAwesomeModule } from '@fortawesome/angular-fontawesome';
6
6
  import { faBarsStaggered, faSignOut, faTimes, faArrowRight, faChevronDown, faChevronUp, faCircle, faEyeSlash, faCircleInfo, faCircleCheck, faCircleQuestion } from '@fortawesome/free-solid-svg-icons';
7
7
  import { RouterLink } from '@angular/router';
8
8
  import { BehaviorSubject, Subscription } from 'rxjs';
9
- import * as i3 from '@angular/forms';
10
9
  import { FormControl, ReactiveFormsModule } from '@angular/forms';
11
10
  import { faTriangleExclamation } from '@fortawesome/free-solid-svg-icons/faTriangleExclamation';
12
11
 
@@ -230,6 +229,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
230
229
  }] } });
231
230
 
232
231
  class RdndSelect {
232
+ elementRef;
233
233
  id;
234
234
  name;
235
235
  label = '';
@@ -242,8 +242,14 @@ class RdndSelect {
242
242
  onFocus = new EventEmitter();
243
243
  onBlur = new EventEmitter();
244
244
  faChevronDown = faChevronDown;
245
- isOpen = false;
245
+ isOpen = signal(false, /* @ts-ignore */
246
+ ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
246
247
  selectedOption = null;
248
+ dropdownDirection = signal('down', /* @ts-ignore */
249
+ ...(ngDevMode ? [{ debugName: "dropdownDirection" }] : /* istanbul ignore next */ []));
250
+ constructor(elementRef) {
251
+ this.elementRef = elementRef;
252
+ }
247
253
  ngOnInit() {
248
254
  if (this.value && this.options.length > 0) {
249
255
  this.selectedOption = this.options.find(opt => opt.key === this.value) || null;
@@ -251,14 +257,38 @@ class RdndSelect {
251
257
  }
252
258
  toggleDropdown() {
253
259
  if (!this.disabled) {
254
- this.isOpen = !this.isOpen;
260
+ this.isOpen.update(v => !v);
261
+ if (this.isOpen()) {
262
+ this.calculateDropdownDirection();
263
+ }
255
264
  }
256
265
  }
266
+ calculateDropdownDirection() {
267
+ setTimeout(() => {
268
+ const element = this.elementRef.nativeElement.querySelector('.select-display');
269
+ if (element) {
270
+ const rect = element.getBoundingClientRect();
271
+ const viewportHeight = window.innerHeight;
272
+ const spaceBelow = viewportHeight - rect.bottom;
273
+ const spaceAbove = rect.top;
274
+ const dropdownHeight = 200;
275
+ if (spaceBelow < dropdownHeight && spaceAbove > spaceBelow) {
276
+ this.dropdownDirection.set('up');
277
+ }
278
+ else if (spaceBelow < dropdownHeight) {
279
+ this.dropdownDirection.set('up');
280
+ }
281
+ else {
282
+ this.dropdownDirection.set('down');
283
+ }
284
+ }
285
+ }, 0);
286
+ }
257
287
  selectOption(option) {
258
288
  this.selectedOption = option;
259
289
  this.value = option.key;
260
290
  this.valueChange.emit(option);
261
- this.isOpen = false;
291
+ this.isOpen.set(false);
262
292
  }
263
293
  handleFocus(event) {
264
294
  this.onFocus.emit(event);
@@ -266,22 +296,22 @@ class RdndSelect {
266
296
  handleBlur(event) {
267
297
  this.onBlur.emit(event);
268
298
  setTimeout(() => {
269
- this.isOpen = false;
299
+ this.isOpen.set(false);
270
300
  }, 200);
271
301
  }
272
302
  get displayValue() {
273
303
  return this.selectedOption?.value || '';
274
304
  }
275
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RdndSelect, deps: [], target: i0.ɵɵFactoryTarget.Component });
276
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RdndSelect, isStandalone: true, selector: "rdnd-select", inputs: { id: "id", name: "name", label: "label", placeholder: "placeholder", options: "options", showLabel: "showLabel", disabled: "disabled", value: "value" }, outputs: { valueChange: "valueChange", onFocus: "onFocus", onBlur: "onBlur" }, ngImport: i0, template: "<div [ngClass]=\"{ 'disabled': disabled }\" class=\"select-container\" (click)=\"toggleDropdown()\">\n\n <!-- Label flotante que interrumpe el borde -->\n @if (showLabel && label) {\n <label class=\"border-label\">{{ label }}</label>\n }\n\n <div class=\"select-wrapper\">\n <div\n class=\"select-display\"\n [class.open]=\"isOpen\"\n [class.has-value]=\"selectedOption\"\n tabindex=\"0\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n >\n @if (selectedOption) {\n <span class=\"selected-value\">{{ selectedOption.value }}</span>\n } @else {\n <span class=\"placeholder-text\">{{ placeholder }}</span>\n }\n <fa-icon [icon]=\"faChevronDown\" class=\"chevron-icon\" [class.open]=\"isOpen\"></fa-icon>\n </div>\n\n @if (isOpen) {\n <div class=\"dropdown-options\">\n @for (option of options; track option.key) {\n <div\n class=\"option-item\"\n [class.selected]=\"selectedOption?.key === option.key\"\n (click)=\"selectOption(option); $event.stopPropagation()\"\n >\n {{ option.value }}\n </div>\n }\n </div>\n }\n </div>\n</div>\n", styles: [".select-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}.select-container.disabled{pointer-events:none}.select-container.disabled .select-display{background-color:#f8f8f8!important;color:#9e9e9e}.select-container.disabled .select-display .placeholder-text,.select-container.disabled .select-display .selected-value{color:#707070}.select-container.disabled .select-display .chevron-icon,.select-container.disabled .border-label{color:#bdbdbd}.border-label{position:absolute;top:-5px;left:12px;font-size:10px;color:#707070;background-color:#fff;padding:0 4px;z-index:5;font-family:Poppins,sans-serif;pointer-events:none;line-height:1}.select-wrapper{position:relative;width:100%}.select-display{position:relative;width:100%;height:40px;padding:10px 40px 10px 12px;border-radius:6px;font-family:Poppins,sans-serif;font-size:14px;border:1px solid #DEDEDE;background-color:#fff;cursor:pointer;box-sizing:border-box;transition:border-color .3s ease;display:flex;align-items:center}.select-display:focus{outline:none;border-color:#577cb7}.select-display.open{border-color:#577cb7}.select-display.has-value .placeholder-text{display:none}.select-display .placeholder-text{color:#999}.select-display .selected-value{color:#171717}.select-display .chevron-icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:12px;color:#707070;transition:transform .3s ease}.select-display .chevron-icon.open{transform:translateY(-50%) rotate(180deg)}.dropdown-options{position:absolute;top:calc(100% + 4px);left:0;right:0;background-color:#fff;border:1px solid #DEDEDE;border-radius:6px;box-shadow:0 4px 12px #0000001a;z-index:10;max-height:200px;overflow-y:auto;animation:fadeIn .2s ease}.dropdown-options .option-item{padding:10px 12px;font-family:Poppins,sans-serif;font-size:14px;cursor:pointer;transition:background-color .2s ease}.dropdown-options .option-item:hover{background-color:#f5f5f5}.dropdown-options .option-item.selected{background-color:#f0f0f0;color:#577cb7}.dropdown-options .option-item:not(:last-child){border-bottom:1px solid #f0f0f0}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }] });
305
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RdndSelect, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
306
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RdndSelect, isStandalone: true, selector: "rdnd-select", inputs: { id: "id", name: "name", label: "label", placeholder: "placeholder", options: "options", showLabel: "showLabel", disabled: "disabled", value: "value" }, outputs: { valueChange: "valueChange", onFocus: "onFocus", onBlur: "onBlur" }, ngImport: i0, template: "<div [ngClass]=\"{ 'disabled': disabled }\" class=\"select-container\" (click)=\"toggleDropdown()\">\n\n <!-- Label flotante que interrumpe el borde -->\n @if (showLabel && label) {\n <label class=\"border-label\">{{ label }}</label>\n }\n\n <div class=\"select-wrapper\">\n <div\n class=\"select-display\"\n [class.open]=\"isOpen()\"\n [class.has-value]=\"selectedOption\"\n [class.direction-up]=\"dropdownDirection() === 'up'\"\n tabindex=\"0\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n >\n @if (selectedOption) {\n <span class=\"selected-value\">{{ selectedOption.value }}</span>\n } @else {\n <span class=\"placeholder-text\">{{ placeholder }}</span>\n }\n <fa-icon [icon]=\"faChevronDown\" class=\"chevron-icon\" [class.open]=\"isOpen()\"></fa-icon>\n </div>\n\n @if (isOpen()) {\n <div class=\"dropdown-options\" [class.direction-up]=\"dropdownDirection() === 'up'\">\n @for (option of options; track option.key) {\n <div\n class=\"option-item\"\n [class.selected]=\"selectedOption?.key === option.key\"\n (click)=\"selectOption(option); $event.stopPropagation()\"\n >\n {{ option.value }}\n </div>\n }\n </div>\n }\n </div>\n</div>\n", styles: [".select-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}.select-container.disabled{pointer-events:none}.select-container.disabled .select-display{background-color:#f8f8f8!important;color:#9e9e9e}.select-container.disabled .select-display .placeholder-text,.select-container.disabled .select-display .selected-value{color:#707070}.select-container.disabled .select-display .chevron-icon,.select-container.disabled .border-label{color:#bdbdbd}.border-label{position:absolute;top:-5px;left:12px;font-size:10px;color:#707070;background-color:#fff;padding:0 4px;z-index:5;font-family:Poppins,sans-serif;pointer-events:none;line-height:1}.select-wrapper{position:relative;width:100%}.select-display{position:relative;width:100%;height:40px;padding:10px 40px 10px 12px;border-radius:6px;font-family:Poppins,sans-serif;font-size:14px;border:1px solid #DEDEDE;background-color:#fff;cursor:pointer;box-sizing:border-box;transition:border-color .3s ease;display:flex;align-items:center}.select-display:focus{outline:none;border-color:#577cb7}.select-display.open{border-color:#577cb7}.select-display.has-value .placeholder-text{display:none}.select-display .placeholder-text{color:#999}.select-display .selected-value{color:#171717}.select-display .chevron-icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:12px;color:#707070;transition:transform .3s ease}.select-display .chevron-icon.open{transform:translateY(-50%) rotate(180deg)}.dropdown-options{position:absolute;left:0;right:0;background-color:#fff;border:1px solid #DEDEDE;border-radius:6px;box-shadow:0 4px 12px #0000001a;z-index:10;max-height:200px;overflow-y:auto;animation:fadeInDown .2s ease}.dropdown-options.direction-up{bottom:calc(100% + 4px);top:auto;animation:fadeInUp .2s ease}.dropdown-options .option-item{padding:10px 12px;font-family:Poppins,sans-serif;font-size:14px;cursor:pointer;transition:background-color .2s ease}.dropdown-options .option-item:hover{background-color:#f5f5f5}.dropdown-options .option-item.selected{background-color:#f0f0f0;color:#577cb7}.dropdown-options .option-item:not(:last-child){border-bottom:1px solid #f0f0f0}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }] });
277
307
  }
278
308
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RdndSelect, decorators: [{
279
309
  type: Component,
280
310
  args: [{ selector: 'rdnd-select', standalone: true, imports: [
281
311
  NgClass,
282
312
  FontAwesomeModule
283
- ], template: "<div [ngClass]=\"{ 'disabled': disabled }\" class=\"select-container\" (click)=\"toggleDropdown()\">\n\n <!-- Label flotante que interrumpe el borde -->\n @if (showLabel && label) {\n <label class=\"border-label\">{{ label }}</label>\n }\n\n <div class=\"select-wrapper\">\n <div\n class=\"select-display\"\n [class.open]=\"isOpen\"\n [class.has-value]=\"selectedOption\"\n tabindex=\"0\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n >\n @if (selectedOption) {\n <span class=\"selected-value\">{{ selectedOption.value }}</span>\n } @else {\n <span class=\"placeholder-text\">{{ placeholder }}</span>\n }\n <fa-icon [icon]=\"faChevronDown\" class=\"chevron-icon\" [class.open]=\"isOpen\"></fa-icon>\n </div>\n\n @if (isOpen) {\n <div class=\"dropdown-options\">\n @for (option of options; track option.key) {\n <div\n class=\"option-item\"\n [class.selected]=\"selectedOption?.key === option.key\"\n (click)=\"selectOption(option); $event.stopPropagation()\"\n >\n {{ option.value }}\n </div>\n }\n </div>\n }\n </div>\n</div>\n", styles: [".select-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}.select-container.disabled{pointer-events:none}.select-container.disabled .select-display{background-color:#f8f8f8!important;color:#9e9e9e}.select-container.disabled .select-display .placeholder-text,.select-container.disabled .select-display .selected-value{color:#707070}.select-container.disabled .select-display .chevron-icon,.select-container.disabled .border-label{color:#bdbdbd}.border-label{position:absolute;top:-5px;left:12px;font-size:10px;color:#707070;background-color:#fff;padding:0 4px;z-index:5;font-family:Poppins,sans-serif;pointer-events:none;line-height:1}.select-wrapper{position:relative;width:100%}.select-display{position:relative;width:100%;height:40px;padding:10px 40px 10px 12px;border-radius:6px;font-family:Poppins,sans-serif;font-size:14px;border:1px solid #DEDEDE;background-color:#fff;cursor:pointer;box-sizing:border-box;transition:border-color .3s ease;display:flex;align-items:center}.select-display:focus{outline:none;border-color:#577cb7}.select-display.open{border-color:#577cb7}.select-display.has-value .placeholder-text{display:none}.select-display .placeholder-text{color:#999}.select-display .selected-value{color:#171717}.select-display .chevron-icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:12px;color:#707070;transition:transform .3s ease}.select-display .chevron-icon.open{transform:translateY(-50%) rotate(180deg)}.dropdown-options{position:absolute;top:calc(100% + 4px);left:0;right:0;background-color:#fff;border:1px solid #DEDEDE;border-radius:6px;box-shadow:0 4px 12px #0000001a;z-index:10;max-height:200px;overflow-y:auto;animation:fadeIn .2s ease}.dropdown-options .option-item{padding:10px 12px;font-family:Poppins,sans-serif;font-size:14px;cursor:pointer;transition:background-color .2s ease}.dropdown-options .option-item:hover{background-color:#f5f5f5}.dropdown-options .option-item.selected{background-color:#f0f0f0;color:#577cb7}.dropdown-options .option-item:not(:last-child){border-bottom:1px solid #f0f0f0}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}\n"] }]
284
- }], propDecorators: { id: [{
313
+ ], template: "<div [ngClass]=\"{ 'disabled': disabled }\" class=\"select-container\" (click)=\"toggleDropdown()\">\n\n <!-- Label flotante que interrumpe el borde -->\n @if (showLabel && label) {\n <label class=\"border-label\">{{ label }}</label>\n }\n\n <div class=\"select-wrapper\">\n <div\n class=\"select-display\"\n [class.open]=\"isOpen()\"\n [class.has-value]=\"selectedOption\"\n [class.direction-up]=\"dropdownDirection() === 'up'\"\n tabindex=\"0\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n >\n @if (selectedOption) {\n <span class=\"selected-value\">{{ selectedOption.value }}</span>\n } @else {\n <span class=\"placeholder-text\">{{ placeholder }}</span>\n }\n <fa-icon [icon]=\"faChevronDown\" class=\"chevron-icon\" [class.open]=\"isOpen()\"></fa-icon>\n </div>\n\n @if (isOpen()) {\n <div class=\"dropdown-options\" [class.direction-up]=\"dropdownDirection() === 'up'\">\n @for (option of options; track option.key) {\n <div\n class=\"option-item\"\n [class.selected]=\"selectedOption?.key === option.key\"\n (click)=\"selectOption(option); $event.stopPropagation()\"\n >\n {{ option.value }}\n </div>\n }\n </div>\n }\n </div>\n</div>\n", styles: [".select-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}.select-container.disabled{pointer-events:none}.select-container.disabled .select-display{background-color:#f8f8f8!important;color:#9e9e9e}.select-container.disabled .select-display .placeholder-text,.select-container.disabled .select-display .selected-value{color:#707070}.select-container.disabled .select-display .chevron-icon,.select-container.disabled .border-label{color:#bdbdbd}.border-label{position:absolute;top:-5px;left:12px;font-size:10px;color:#707070;background-color:#fff;padding:0 4px;z-index:5;font-family:Poppins,sans-serif;pointer-events:none;line-height:1}.select-wrapper{position:relative;width:100%}.select-display{position:relative;width:100%;height:40px;padding:10px 40px 10px 12px;border-radius:6px;font-family:Poppins,sans-serif;font-size:14px;border:1px solid #DEDEDE;background-color:#fff;cursor:pointer;box-sizing:border-box;transition:border-color .3s ease;display:flex;align-items:center}.select-display:focus{outline:none;border-color:#577cb7}.select-display.open{border-color:#577cb7}.select-display.has-value .placeholder-text{display:none}.select-display .placeholder-text{color:#999}.select-display .selected-value{color:#171717}.select-display .chevron-icon{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:12px;color:#707070;transition:transform .3s ease}.select-display .chevron-icon.open{transform:translateY(-50%) rotate(180deg)}.dropdown-options{position:absolute;left:0;right:0;background-color:#fff;border:1px solid #DEDEDE;border-radius:6px;box-shadow:0 4px 12px #0000001a;z-index:10;max-height:200px;overflow-y:auto;animation:fadeInDown .2s ease}.dropdown-options.direction-up{bottom:calc(100% + 4px);top:auto;animation:fadeInUp .2s ease}.dropdown-options .option-item{padding:10px 12px;font-family:Poppins,sans-serif;font-size:14px;cursor:pointer;transition:background-color .2s ease}.dropdown-options .option-item:hover{background-color:#f5f5f5}.dropdown-options .option-item.selected{background-color:#f0f0f0;color:#577cb7}.dropdown-options .option-item:not(:last-child){border-bottom:1px solid #f0f0f0}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}\n"] }]
314
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { id: [{
285
315
  type: Input
286
316
  }], name: [{
287
317
  type: Input
@@ -632,77 +662,97 @@ class RdndInput {
632
662
  label = '';
633
663
  placeholder = '';
634
664
  showLabel = false;
635
- control;
636
- value = '';
637
665
  validators = [];
638
666
  disabled = false;
667
+ // Input para valor inicial
668
+ set value(val) {
669
+ this.internalValue.set(val);
670
+ const ctrl = this.internalControl();
671
+ if (ctrl && val !== undefined) {
672
+ ctrl.setValue(val);
673
+ }
674
+ }
675
+ // Output para valueChange (two-way binding compatible)
639
676
  valueChange = new EventEmitter();
677
+ // Outputs adicionales
640
678
  onKeyDown = new EventEmitter();
641
679
  onPaste = new EventEmitter();
642
680
  onFocus = new EventEmitter();
643
681
  onBlur = new EventEmitter();
682
+ // Internal signals
683
+ internalValue = signal('', /* @ts-ignore */
684
+ ...(ngDevMode ? [{ debugName: "internalValue" }] : /* istanbul ignore next */ []));
644
685
  faEyeSlash = faEyeSlash;
645
- showPassword = false;
646
- showError = false;
686
+ showPassword = signal(false, /* @ts-ignore */
687
+ ...(ngDevMode ? [{ debugName: "showPassword" }] : /* istanbul ignore next */ []));
688
+ showError = signal(false, /* @ts-ignore */
689
+ ...(ngDevMode ? [{ debugName: "showError" }] : /* istanbul ignore next */ []));
690
+ touched = signal(false, /* @ts-ignore */
691
+ ...(ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []));
692
+ internalControl = signal(null, /* @ts-ignore */
693
+ ...(ngDevMode ? [{ debugName: "internalControl" }] : /* istanbul ignore next */ []));
694
+ hasError = computed(() => {
695
+ const ctrl = this.internalControl();
696
+ return !!ctrl && ctrl.invalid && (ctrl.dirty || this.touched());
697
+ }, /* @ts-ignore */
698
+ ...(ngDevMode ? [{ debugName: "hasError" }] : /* istanbul ignore next */ []));
699
+ shouldShowErrorMessage = computed(() => {
700
+ const ctrl = this.internalControl();
701
+ return !!ctrl && ctrl.invalid && ctrl.dirty && this.showError();
702
+ }, /* @ts-ignore */
703
+ ...(ngDevMode ? [{ debugName: "shouldShowErrorMessage" }] : /* istanbul ignore next */ []));
704
+ errorMessage = computed(() => {
705
+ const ctrl = this.internalControl();
706
+ if (ctrl && ctrl.errors) {
707
+ const errorKeys = Object.keys(ctrl.errors);
708
+ if (errorKeys.length > 0) {
709
+ return this.getErrorMessageText(ctrl.errors);
710
+ }
711
+ }
712
+ return null;
713
+ }, /* @ts-ignore */
714
+ ...(ngDevMode ? [{ debugName: "errorMessage" }] : /* istanbul ignore next */ []));
647
715
  constructor(inputService) {
648
716
  this.inputService = inputService;
717
+ effect(() => {
718
+ const ctrl = this.internalControl();
719
+ if (ctrl) {
720
+ ctrl.valueChanges.subscribe((value) => {
721
+ this.internalValue.set(value ?? '');
722
+ this.valueChange.emit(value ?? '');
723
+ this.inputService.updateInputState(ctrl, this.id);
724
+ });
725
+ }
726
+ });
649
727
  }
650
728
  ngOnInit() {
651
- if (this.control) {
652
- this.control.addValidators(this.validators);
653
- this.control.valueChanges.subscribe((value) => {
654
- this.valueChange.emit(value);
655
- this.inputService.updateInputState(this.control, this.id);
656
- });
657
- }
658
- else {
659
- this.control = new FormControl(this.value, this.validators);
660
- this.control.valueChanges.subscribe((value) => {
661
- this.valueChange.emit(value);
662
- this.inputService.updateInputState(this.control, this.id);
663
- });
664
- }
665
- }
666
- ngOnChanges(changes) {
667
- if (this.control) {
668
- this.control.addValidators(this.validators);
669
- this.control.valueChanges.subscribe((value) => {
670
- this.valueChange.emit(value);
671
- this.inputService.updateInputState(this.control, this.id);
672
- });
673
- }
674
- else {
675
- this.control = new FormControl(this.value, this.validators);
676
- this.control.valueChanges.subscribe((value) => {
677
- this.valueChange.emit(value);
678
- this.inputService.updateInputState(this.control, this.id);
679
- });
680
- }
729
+ const ctrl = new FormControl(this.internalValue(), this.validators);
730
+ this.internalControl.set(ctrl);
681
731
  }
682
- getErrorMessage() {
683
- if (this.control && this.control.errors) {
684
- const errorKeys = Object.keys(this.control.errors);
685
- if (errorKeys.length > 0) {
686
- const firstErrorKey = errorKeys[0];
687
- return this.control.errors[firstErrorKey];
688
- }
689
- }
732
+ getErrorMessageText(errors) {
733
+ if (errors['required'])
734
+ return 'Este campo es obligatorio';
735
+ if (errors['minlength'])
736
+ return `Mínimo ${errors['minlength'].requiredLength} caracteres requeridos`;
737
+ if (errors['maxlength'])
738
+ return `Máximo ${errors['maxlength'].requiredLength} caracteres permitidos`;
739
+ if (errors['email'])
740
+ return 'Formato de correo inválido';
690
741
  return null;
691
742
  }
692
743
  toggleErrorDisplay() {
693
- this.showError = !this.showError;
694
- }
695
- hasError() {
696
- return !!this.control && this.control.invalid && (this.control.dirty || this.control.touched);
697
- }
698
- shouldShowErrorMessage() {
699
- return !!this.control && this.control.invalid && this.control.dirty && this.showError;
744
+ this.showError.update(v => !v);
700
745
  }
701
746
  handleTogglePassword() {
702
- this.showPassword = !this.showPassword;
747
+ this.showPassword.update(v => !v);
703
748
  }
704
749
  handleChange(event) {
705
750
  const e = event.target;
751
+ this.internalValue.set(e.value);
752
+ const ctrl = this.internalControl();
753
+ if (ctrl) {
754
+ ctrl.setValue(e.value);
755
+ }
706
756
  this.valueChange.emit(e.value);
707
757
  }
708
758
  handleKeyDown(event) {
@@ -721,10 +771,11 @@ class RdndInput {
721
771
  this.onFocus.emit(event);
722
772
  }
723
773
  handleBlur(event) {
774
+ this.touched.set(true);
724
775
  this.onBlur.emit(event);
725
776
  }
726
777
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RdndInput, deps: [{ token: InputService }], target: i0.ɵɵFactoryTarget.Component });
727
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RdndInput, isStandalone: true, selector: "rdnd-input", inputs: { id: "id", name: "name", type: "type", label: "label", placeholder: "placeholder", showLabel: "showLabel", control: "control", value: "value", validators: "validators", disabled: "disabled" }, outputs: { valueChange: "valueChange", onKeyDown: "onKeyDown", onPaste: "onPaste", onFocus: "onFocus", onBlur: "onBlur" }, usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\n\n <!-- \u00CDcono de error que aparece por encima del campo si hay error -->\n @if (hasError()) {\n <span class=\"error-icon\" (click)=\"toggleErrorDisplay()\" tabindex=\"4\">&#9432;</span>\n }\n\n <!-- Bot\u00F3n de mostrar/ocultar contrase\u00F1a centrado verticalmente -->\n @if (type == 'password') {\n <button type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\" tabindex=\"4\">\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword\"></fa-icon>\n </button>\n }\n\n <!-- Label flotante que interrumpe el borde -->\n @if (showLabel && label) {\n <label class=\"border-label\">{{ label }}</label>\n }\n\n @if (control) {\n <!-- Input compatible con FormControl -->\n <input\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\n [formControl]=\"control!\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keydown)=\"handleKeyDown($event)\"\n (paste)=\"handlePaste($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [ngClass]=\"{ 'error-border': hasError() }\"\n tabindex=\"1\"\n />\n } @else {\n <!-- Input para signals -->\n <input\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (input)=\"handleChange($event)\"\n (keydown)=\"handleKeyDown($event)\"\n (paste)=\"handlePaste($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [ngClass]=\"{ 'error-border': false }\"\n tabindex=\"1\"\n />\n }\n\n <!-- Mensaje de error que aparece solo cuando se clickea en el \u00EDcono de error -->\n @if (shouldShowErrorMessage()) {\n <div class=\"error-message\">\n {{ getErrorMessage() }}\n </div>\n }\n</div>\n", styles: [".input-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}.input-container.disabled{pointer-events:none}.input-container.disabled input{color:#707070!important;background-color:#f8f8f8!important}.input-container.disabled .border-label{color:#bdbdbd}.border-label{position:absolute;top:-7px;left:12px;font-size:11px;color:#707070;background-color:#fff;padding:0 4px;z-index:5;font-family:Poppins,sans-serif;pointer-events:none;line-height:1}input{position:relative;width:100%;min-width:100%;padding:10px 40px 10px 12px;border-radius:6px;font-family:Poppins,sans-serif;height:40px;font-size:14px;border:1px solid #DEDEDE;outline:none;box-sizing:border-box;transition:border-color .3s ease;background-color:#fff!important;appearance:none;-moz-appearance:textfield;-webkit-appearance:textfield}input::placeholder{font-size:11px}input:-webkit-autofill{background-color:#fff!important}input.error-border{border-color:red}input:focus{border-color:#577cb7}.error-icon{position:absolute;right:40px;top:50%;transform:translateY(-50%);font-size:20px;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:-20px;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:12px;top:50%;transform:translateY(-50%);background:transparent;border:none;cursor:pointer;z-index:2;padding:0;display:flex;align-items:center;justify-content:center;height:100%}.icon{transition:opacity .3s ease;font-size:16px}.icon.active{opacity:.5}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[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"] }] });
778
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RdndInput, isStandalone: true, selector: "rdnd-input", inputs: { id: "id", name: "name", type: "type", label: "label", placeholder: "placeholder", showLabel: "showLabel", validators: "validators", disabled: "disabled", value: "value" }, outputs: { valueChange: "valueChange", onKeyDown: "onKeyDown", onPaste: "onPaste", onFocus: "onFocus", onBlur: "onBlur" }, ngImport: i0, template: "<div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\n\n <!-- \u00CDcono de error que aparece por encima del campo si hay error -->\n @if (hasError()) {\n <span class=\"error-icon\" (click)=\"toggleErrorDisplay()\" tabindex=\"4\">&#9432;</span>\n }\n\n <!-- Bot\u00F3n de mostrar/ocultar contrase\u00F1a centrado verticalmente -->\n @if (type == 'password') {\n <button type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\" tabindex=\"4\">\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword()\"></fa-icon>\n </button>\n }\n\n <!-- Label flotante que interrumpe el borde -->\n @if (showLabel && label) {\n <label class=\"border-label\">{{ label }}</label>\n }\n\n <input\n [type]=\"type === 'password' && showPassword() ? 'text' : type\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (input)=\"handleChange($event)\"\n (keydown)=\"handleKeyDown($event)\"\n (paste)=\"handlePaste($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [ngClass]=\"{ 'error-border': hasError() }\"\n tabindex=\"1\"\n />\n\n <!-- Mensaje de error que aparece solo cuando se clickea en el \u00EDcono de error -->\n @if (shouldShowErrorMessage()) {\n <div class=\"error-message\">\n {{ errorMessage() }}\n </div>\n }\n</div>\n", styles: [".input-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}.input-container.disabled{pointer-events:none}.input-container.disabled input{color:#707070!important;background-color:#f8f8f8!important}.input-container.disabled .border-label{color:#bdbdbd}.border-label{position:absolute;top:-7px;left:12px;font-size:11px;color:#707070;background-color:#fff;padding:0 4px;z-index:5;font-family:Poppins,sans-serif;pointer-events:none;line-height:1}input{position:relative;width:100%;min-width:100%;padding:10px 40px 10px 12px;border-radius:6px;font-family:Poppins,sans-serif;height:40px;font-size:14px;border:1px solid #DEDEDE;outline:none;box-sizing:border-box;transition:border-color .3s ease;background-color:#fff!important;appearance:none;-moz-appearance:textfield;-webkit-appearance:textfield}input::placeholder{font-size:11px}input:-webkit-autofill{background-color:#fff!important}input.error-border{border-color:red}input:focus{border-color:#577cb7}.error-icon{position:absolute;right:40px;top:50%;transform:translateY(-50%);font-size:20px;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:-20px;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:12px;top:50%;transform:translateY(-50%);background:transparent;border:none;cursor:pointer;z-index:2;padding:0;display:flex;align-items:center;justify-content:center;height:100%}.icon{transition:opacity .3s ease;font-size:16px}.icon.active{opacity:.5}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "mask", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "transform", "a11yRole"], outputs: ["iconChange", "titleChange", "animationChange", "maskChange", "flipChange", "sizeChange", "pullChange", "borderChange", "inverseChange", "symbolChange", "rotateChange", "fixedWidthChange", "transformChange", "a11yRoleChange"] }, { kind: "ngmodule", type: ReactiveFormsModule }] });
728
779
  }
729
780
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RdndInput, decorators: [{
730
781
  type: Component,
@@ -732,7 +783,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
732
783
  NgClass,
733
784
  FontAwesomeModule,
734
785
  ReactiveFormsModule
735
- ], template: "<div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\n\n <!-- \u00CDcono de error que aparece por encima del campo si hay error -->\n @if (hasError()) {\n <span class=\"error-icon\" (click)=\"toggleErrorDisplay()\" tabindex=\"4\">&#9432;</span>\n }\n\n <!-- Bot\u00F3n de mostrar/ocultar contrase\u00F1a centrado verticalmente -->\n @if (type == 'password') {\n <button type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\" tabindex=\"4\">\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword\"></fa-icon>\n </button>\n }\n\n <!-- Label flotante que interrumpe el borde -->\n @if (showLabel && label) {\n <label class=\"border-label\">{{ label }}</label>\n }\n\n @if (control) {\n <!-- Input compatible con FormControl -->\n <input\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\n [formControl]=\"control!\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keydown)=\"handleKeyDown($event)\"\n (paste)=\"handlePaste($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [ngClass]=\"{ 'error-border': hasError() }\"\n tabindex=\"1\"\n />\n } @else {\n <!-- Input para signals -->\n <input\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (input)=\"handleChange($event)\"\n (keydown)=\"handleKeyDown($event)\"\n (paste)=\"handlePaste($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [ngClass]=\"{ 'error-border': false }\"\n tabindex=\"1\"\n />\n }\n\n <!-- Mensaje de error que aparece solo cuando se clickea en el \u00EDcono de error -->\n @if (shouldShowErrorMessage()) {\n <div class=\"error-message\">\n {{ getErrorMessage() }}\n </div>\n }\n</div>\n", styles: [".input-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}.input-container.disabled{pointer-events:none}.input-container.disabled input{color:#707070!important;background-color:#f8f8f8!important}.input-container.disabled .border-label{color:#bdbdbd}.border-label{position:absolute;top:-7px;left:12px;font-size:11px;color:#707070;background-color:#fff;padding:0 4px;z-index:5;font-family:Poppins,sans-serif;pointer-events:none;line-height:1}input{position:relative;width:100%;min-width:100%;padding:10px 40px 10px 12px;border-radius:6px;font-family:Poppins,sans-serif;height:40px;font-size:14px;border:1px solid #DEDEDE;outline:none;box-sizing:border-box;transition:border-color .3s ease;background-color:#fff!important;appearance:none;-moz-appearance:textfield;-webkit-appearance:textfield}input::placeholder{font-size:11px}input:-webkit-autofill{background-color:#fff!important}input.error-border{border-color:red}input:focus{border-color:#577cb7}.error-icon{position:absolute;right:40px;top:50%;transform:translateY(-50%);font-size:20px;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:-20px;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:12px;top:50%;transform:translateY(-50%);background:transparent;border:none;cursor:pointer;z-index:2;padding:0;display:flex;align-items:center;justify-content:center;height:100%}.icon{transition:opacity .3s ease;font-size:16px}.icon.active{opacity:.5}\n"] }]
786
+ ], template: "<div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\n\n <!-- \u00CDcono de error que aparece por encima del campo si hay error -->\n @if (hasError()) {\n <span class=\"error-icon\" (click)=\"toggleErrorDisplay()\" tabindex=\"4\">&#9432;</span>\n }\n\n <!-- Bot\u00F3n de mostrar/ocultar contrase\u00F1a centrado verticalmente -->\n @if (type == 'password') {\n <button type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\" tabindex=\"4\">\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword()\"></fa-icon>\n </button>\n }\n\n <!-- Label flotante que interrumpe el borde -->\n @if (showLabel && label) {\n <label class=\"border-label\">{{ label }}</label>\n }\n\n <input\n [type]=\"type === 'password' && showPassword() ? 'text' : type\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (input)=\"handleChange($event)\"\n (keydown)=\"handleKeyDown($event)\"\n (paste)=\"handlePaste($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [ngClass]=\"{ 'error-border': hasError() }\"\n tabindex=\"1\"\n />\n\n <!-- Mensaje de error que aparece solo cuando se clickea en el \u00EDcono de error -->\n @if (shouldShowErrorMessage()) {\n <div class=\"error-message\">\n {{ errorMessage() }}\n </div>\n }\n</div>\n", styles: [".input-container{width:100%;min-width:100%;box-sizing:border-box;position:relative;display:block}.input-container.disabled{pointer-events:none}.input-container.disabled input{color:#707070!important;background-color:#f8f8f8!important}.input-container.disabled .border-label{color:#bdbdbd}.border-label{position:absolute;top:-7px;left:12px;font-size:11px;color:#707070;background-color:#fff;padding:0 4px;z-index:5;font-family:Poppins,sans-serif;pointer-events:none;line-height:1}input{position:relative;width:100%;min-width:100%;padding:10px 40px 10px 12px;border-radius:6px;font-family:Poppins,sans-serif;height:40px;font-size:14px;border:1px solid #DEDEDE;outline:none;box-sizing:border-box;transition:border-color .3s ease;background-color:#fff!important;appearance:none;-moz-appearance:textfield;-webkit-appearance:textfield}input::placeholder{font-size:11px}input:-webkit-autofill{background-color:#fff!important}input.error-border{border-color:red}input:focus{border-color:#577cb7}.error-icon{position:absolute;right:40px;top:50%;transform:translateY(-50%);font-size:20px;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:-20px;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:12px;top:50%;transform:translateY(-50%);background:transparent;border:none;cursor:pointer;z-index:2;padding:0;display:flex;align-items:center;justify-content:center;height:100%}.icon{transition:opacity .3s ease;font-size:16px}.icon.active{opacity:.5}\n"] }]
736
787
  }], ctorParameters: () => [{ type: InputService }], propDecorators: { id: [{
737
788
  type: Input
738
789
  }], name: [{
@@ -745,14 +796,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
745
796
  type: Input
746
797
  }], showLabel: [{
747
798
  type: Input
748
- }], control: [{
749
- type: Input
750
- }], value: [{
751
- type: Input
752
799
  }], validators: [{
753
800
  type: Input
754
801
  }], disabled: [{
755
802
  type: Input
803
+ }], value: [{
804
+ type: Input
756
805
  }], valueChange: [{
757
806
  type: Output
758
807
  }], onKeyDown: [{
@@ -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/config/rdnd-config.token.ts","../../../projects/gentera-rdnd/src/lib/components/rdnd-loader/rdnd-loader.component.ts","../../../projects/gentera-rdnd/src/lib/components/rdnd-loader/rdnd-loader.component.html","../../../projects/gentera-rdnd/src/lib/components/rdnd-active-indicator/rdnd-active-indicator.component.ts","../../../projects/gentera-rdnd/src/lib/components/rdnd-active-indicator/rdnd-active-indicator.component.html","../../../projects/gentera-rdnd/src/lib/components/rdnd-select/rdnd-select.component.ts","../../../projects/gentera-rdnd/src/lib/components/rdnd-select/rdnd-select.component.html","../../../projects/gentera-rdnd/src/lib/components/rdnd-question/question.component.ts","../../../projects/gentera-rdnd/src/lib/components/rdnd-question/question.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': '#57B774',\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: '#577CB7',\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';\nimport {NgStyle} from \"@angular/common\";\nimport {colors} from \"../../styles/colors\";\n\n@Component({\n selector: 'rdnd-screen-title',\n standalone: true,\n imports: [\n NgStyle\n ],\n templateUrl: './screen-title.component.html',\n styleUrl: './screen-title.component.scss'\n})\nexport class RdndScreenTitle {\n @Input() title!: string;\n @Input() align: 'LEFT' | 'CENTER' = 'CENTER';\n @Input() color = colors[\"magentaEnd\"];\n\n}\n","<h1 [class]=\" 'align-' + align \" [ngStyle]=\"{\n color: color\n}\">\n {{ title }}\n</h1>\n","import {Component, Input, output} from '@angular/core';\n\n// Icons\nimport {FaIconComponent} from \"@fortawesome/angular-fontawesome\";\nimport {\n faBarsStaggered,\n faCircle,\n faSignOut,\n faTimes\n} from \"@fortawesome/free-solid-svg-icons\";\nimport {NgStyle} from \"@angular/common\";\nimport {RouterLink} from \"@angular/router\";\n\n@Component({\n selector: 'rdnd-navbar',\n standalone: true,\n imports: [\n FaIconComponent,\n NgStyle,\n RouterLink\n ],\n templateUrl: './rdnd-navbar.component.html',\n styleUrl: './rdnd-navbar.component.scss'\n})\nexport class RdndNavbar {\n\n // Icons\n protected readonly faBarsStaggered = faBarsStaggered;\n protected readonly faSignOut = faSignOut;\n protected readonly faTimes = faTimes;\n\n // States\n showLoader = false;\n\n // Inputs & Outputs\n @Input() userName: string = \"\";\n @Input() imageUrl: string = \"\";\n @Input() backgroundStart: string = \"#C2185B\";\n @Input() backgroundEnd: string = \"#7E0083\";\n @Input() showSidebar = false;\n onSignOut = output();\n onToggleSidebar = output();\n\n // Functions\n toggleMenu = () => {\n this.showSidebar = !this.showSidebar;\n this.onToggleSidebar.emit();\n }\n\n closeMenu = () => {\n this.showSidebar = false;\n }\n\n handleSignOut = () => {\n this.onSignOut.emit();\n }\n\n\n}\n","<nav [ngStyle]=\"{'background': 'linear-gradient(to right, ' + backgroundStart + ', ' + backgroundEnd + ')'}\">\n\n <div class=\"rdnd-nav-container\">\n <button (click)=\"toggleMenu()\" >\n <fa-icon [icon]=\"showSidebar ? faTimes : faBarsStaggered\"></fa-icon>\n </button>\n\n @if (imageUrl) {\n <a [routerLink]=\"['/']\">\n <img src=\"{{imageUrl}}\" alt=\"\">\n </a>\n }\n\n <button (click)=\"handleSignOut()\">\n <fa-icon [icon]=\"faSignOut\"></fa-icon>\n </button>\n </div>\n\n</nav>\n","import {Component, Input, output} from '@angular/core';\nimport {NgClass, NgStyle} from '@angular/common';\nimport {RouterLink} from '@angular/router';\n// Icons\nimport {FaIconComponent} from '@fortawesome/angular-fontawesome';\nimport {\n faArrowRight,\n faChevronDown,\n faChevronUp,\n faCircle\n} from '@fortawesome/free-solid-svg-icons';\n// Components\nimport {RdndSidebarItem} from \"../../types/Sidebar.types\";\n\n@Component({\n selector: 'rdnd-sidebar',\n standalone: true,\n imports: [\n NgClass,\n NgStyle,\n RouterLink,\n FaIconComponent,\n ],\n templateUrl: './rdnd-sidebar.component.html',\n styleUrl: './rdnd-sidebar.component.scss',\n})\nexport class RdndSidebar {\n // Inputs\n @Input() show: boolean = false;\n @Input() user?: { name: string; email: string; photo?: string };\n @Input() entries: RdndSidebarItem[] = [];\n @Input() backgroundStart: string = '#C2185B';\n @Input() backgroundEnd: string = '#7E0083';\n @Input() activeRoute?: string = '/';\n\n // Outputs\n onClickEntry = output();\n\n protected readonly faArrowRight = faArrowRight;\n protected readonly faChevronDown = faChevronDown;\n protected readonly faChevronUp = faChevronUp;\n protected readonly faCircle = faCircle;\n\n openSections = new Set<string>();\n\n handleClick = () => {\n this.onClickEntry.emit();\n };\n\n toggleSection(name: string) {\n this.openSections.has(name)\n ? this.openSections.delete(name)\n : this.openSections.add(name);\n }\n\n isSectionOpen(section: RdndSidebarItem): boolean {\n const hasActiveChild = section.entries?.some(entry => this.activeRoute === `/${section.url}${entry.url}`);\n return hasActiveChild || this.openSections.has(section.name);\n }\n\n isActiveRoute(itemRoute: string): boolean {\n return this.activeRoute === itemRoute;\n }\n\n}\n","@if (show) {\n <div\n class=\"background-overlay\"\n (click)=\"handleClick()\"\n [ngClass]=\"show ? 'open' : 'closed'\">\n </div>\n}\n\n<aside\n id=\"sidebar\"\n class=\"sidebar\"\n [ngClass]=\"show ? 'open' : 'closed'\"\n [ngStyle]=\"{\n 'background': 'linear-gradient(to bottom, ' + backgroundStart + ', ' + backgroundEnd + ')'\n }\"\n>\n\n @if (user) {\n\n <div class=\"user-details\">\n @if (user.photo) {\n <img src=\"{{user.photo}}\" alt='{{user.name}}' class=\"user-image\">\n } @else {\n <div class=\"user-image\">\n <svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\" y=\"0px\"\n viewBox=\"0 0 554 481\" style=\"enable-background:new 0 0 554 481;\" xml:space=\"preserve\">\n<style type=\"text/css\">\n\t.st0 {\n fill: none;\n }\n\n .st1 {\n fill: #E85E16;\n }\n\n .st2 {\n fill: #9D0046;\n }\n\n .st3 {\n fill: #592275;\n }\n\n .st4 {\n fill: #CD0058;\n }\n\n .st5 {\n fill: #00587F;\n }\n\n .st6 {\n fill: #229B7D;\n }\n</style>\n <rect class=\"st0\" width=\"554\" height=\"481\"/>\n <g>\n\t<path id=\"naranja\" class=\"st1\" d=\"M277.4,128.4c74.7-40.1,146.4-40,154.5-40c8.1,48,13.7,67-7.9,121.3\n\t\tc-24.2,43.8-169.9,71.1-169.9,71.1l0,0c2.7-5.3-3.7-67.7-3.7-67.7S248.6,141.8,277.4,128.4\"/>\n <path id=\"roja\" class=\"st2\" d=\"M449.8,205.7c-2.6,16-11.6,58-43.6,101.2s-99.9,85.5-138,96s-35.3,8-51.6,8\n\t\tc-10-28.6-11.3-33.9-4.9-81.3s22.9-61.8,56.5-80c24.4-10.7,48.7-17.3,73.1-25.3C379.4,213.7,417.4,208.3,449.8,205.7\"/>\n <path id=\"morada\" class=\"st3\" d=\"M236.8,95.1c18.8-8.3,43.1-16.7,70-25.2c-7.8,18.8-10.1,42.8-15.2,66.9\n\t\tc-6.6,43.2-12.8,104.4-40.2,136.6C217.9,313,127.3,348.2,127,347.6l-2.5,0c-14.4-50.4-20.6-93-15.7-125\n\t\tC116,166.4,150.6,131.2,236.8,95.1L236.8,95.1\"/>\n <path id=\"fushia\" class=\"st4\" d=\"M425.5,246h13.6c-13.5,37.3-31.4,76.2-72,105.6c-69,48.9-98.8,50.7-98.8,50.7S341.4,254,425.5,246\n\t\t\"/>\n <path id=\"azul\" class=\"st5\" d=\"M122.5,344.1L122.5,344.1c13.6,45.3,48.8,69.3,100.3,66.6c24.4-48,44-108.8,52.1-164.7\n\t\tC218,272.7,165.9,312.1,122.5,344.1\"/>\n <path id=\"verde\" class=\"st6\" d=\"M277,232.3c5.4-37.3,10.8-72,16.2-103.9C206.5,171,144.2,251,122.5,344.3\n\t\tc43.4-32,95.2-70.3,152.1-97\"/>\n</g>\n</svg>\n </div>\n }\n\n <div class=\"data\">\n <span>\n <fa-icon [icon]=\"faCircle\" class=\"icon\"></fa-icon>\n {{ user.name }}\n </span>\n <span class=\"email\">\n {{ user.email }}\n </span>\n </div>\n\n </div>\n\n }\n\n <ul class=\"entries\">\n @for (item of entries; track item.name) {\n\n @if (item.type === 'ENTRY') {\n <li>\n <a\n [routerLink]=\"[item.url]\"\n class=\"entry\"\n (click)=\"handleClick()\"\n [ngClass]=\"{\n activeRoute: activeRoute === item.url\n }\"\n >\n <fa-icon [icon]=\"faArrowRight\"/>\n {{ item.name }}\n </a>\n </li>\n } @else if (item.type === 'SECTION') {\n <li class=\"section\">\n\n <div class=\"section-title\" (click)=\"toggleSection(item.name)\">\n <fa-icon\n [icon]=\"isSectionOpen(item) ? faChevronUp : faChevronDown\"\n class=\"chevron\"\n />\n <span>{{ item.name }}</span>\n </div>\n\n @if (isSectionOpen(item)) {\n <ul class=\"section-entries\">\n @for (entry of item.entries; track entry.name) {\n <li>\n <a\n [routerLink]=\"[item.url + entry.url]\"\n (click)=\"handleClick()\"\n class=\"entry\"\n [ngClass]=\"{\n activeRoute: isActiveRoute('/' + item.url + entry.url)\n }\"\n >\n <fa-icon [icon]=\"faArrowRight\" class=\"icon\"/>\n {{ entry.name }}\n </a>\n </li>\n }\n <hr/>\n </ul>\n }\n </li>\n }\n }\n\n </ul>\n</aside>\n","// src/lib/config/rdnd-config.token.ts\nimport { InjectionToken } from '@angular/core';\n// @ts-ignore\nimport { LoaderConfig } from '../types/loader-config';\n\nexport const RDND_CONFIG = new InjectionToken<LoaderConfig>('RDND_CONFIG');\n","import {Component, Inject, Input, Optional} from '@angular/core';\r\nimport { RDND_CONFIG } from '../../config/rdnd-config.token';\r\nimport {LoaderConfig, LoaderType} from \"../../types/Loader-config.types\";\r\n\r\n@Component({\r\n selector: 'rdnd-loader',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './rdnd-loader.component.html',\r\n styleUrl: './rdnd-loader.component.scss'\r\n})\r\nexport class RdndLoaderComponent {\r\n\r\n @Input() show: boolean = false;\r\n\r\n @Input() loaderType: LoaderType = 'gentera';\r\n\r\n constructor(@Optional() @Inject(RDND_CONFIG) config: LoaderConfig | null) {\r\n const type = config?.loader?.loaderType;\r\n if (type === 'gentera' || type === 'compartamos') {\r\n this.loaderType = type;\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n","@if (show) {\n <div class=\"loader\">\n @if (loaderType === 'compartamos') {\n <div class=\"svg-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" xmlns:cc=\"http://creativecommons.org/ns#\"\n xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\"\n xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:svg=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 1629.3 720\">\n <defs>\n <style>\n .cls-1 {\n fill: #fff;\n }\n\n .cls-2 {\n fill: #8d104b;\n }\n\n .cls-3 {\n fill: #f7961c;\n }\n </style>\n </defs>\n <!-- Generator: Adobe Illustrator 28.7.1, SVG Export Plug-In . SVG Version: 1.2.0 Build 142) -->\n <g>\n <g id=\"Capa_1\">\n <path id=\"path16\" class=\"cls-3\"\n d=\"M664.5,84.3c-7,1.3-43.6-10.4-43.6-10.4,0,0,26.2,19.3,28.4,22.7,2.2,3.5-7.9,33-7.9,33,0,0,19.3-22.3,26.6-29,4.4-4,14.6-2.1,19.5-.9,4.9,1.2,53.4,14.5,101.8-14.4,31.6-18.9,31.5-23,31.5-23,0,0-26.5-21.5-69.6-16.6-43.2,5-79.8,37.1-86.8,38.4\"/>\n <path id=\"path18\" class=\"cls-2\"\n d=\"M507.7,668.9c-8.4,2.3-52.7,1.7-52.7,1.7,0,0,31,14,33.5,17,2.4,2.9-10.4,32.4-10.4,32.4,0,0,20.7-21.3,29.6-28.8,5.4-4.5,17.1-5.9,26.7-6.7,5.9-.5,63.8,5.2,122.8-29.6,38.5-22.7,38.5-26.6,38.5-26.6,0,0-37.8-20.3-89.8-8.8-51.9,11.5-89.7,47.1-98.1,49.5\"/>\n <path id=\"path20\" class=\"cls-3\"\n d=\"M1368.2,125.5c-11.8,2.3-72.1-3.5-72.1-3.5,0,0,40.7,22.6,43.8,26.9,3,4.2-17.9,43.1-17.9,43.1,0,0,30.6-26.8,43.7-35.9,7.9-5.6,24.1-6.1,37.1-6.1s86.5,14.3,171-26.6c55.2-26.8,55.5-32.1,55.5-32.1,0,0-49.3-32-121.6-22.2-72.2,9.9-127.7,54.2-139.5,56.5\"/>\n <path id=\"path22\" class=\"cls-3\"\n d=\"M77.2,575.8c-12.3,2.6-77.2-17-77.2-17,0,0,46.9,33.2,50.8,39.3,3.8,6.1-13,58.5-13,58.5,0,0,33.4-39.9,46.1-51.8,7.7-7.3,25.8-4.1,34.4-2.1,8.7,1.9,94.7,24,179.3-28.3,55.2-34.1,54.9-41.4,54.9-41.4,0,0-47.3-37.2-123.3-27.2-76,10-139.7,67.8-152.1,70.3\"/>\n <path id=\"path24\" class=\"cls-2\"\n d=\"M1194.7,50.2c-7.7,1.5-45.8-10.6-45.8-10.6,0,0,27.1,19.3,28.4,23,1.5,4.1-10.4,31.9-10.4,31.9,0,0,22.4-22,30.8-28.6,5.1-4,16.2-2.5,21.5-1.5,5.4,1,59.2,12.3,113.8-17.2,32.8-17.7,34.9-22.9,34.9-22.9,0,0-27.9-19.8-75.7-13.6-47.7,6.1-89.7,38.1-97.5,39.6\"/>\n <path id=\"path26\" class=\"cls-1\"\n d=\"M1062.8,620.1c0,38.8-36.7,62.4-79.1,62.4s-31.5-2.1-50.6-2.1l31.5-198.2c20.9,0,26.7-2.6,46.7-2.6,37.1,0,54.7,19.4,54.7,43.5s-19.4,43.2-44.7,49.1c23,5,41.5,26.1,41.5,47.9M1040.8,620.7c0-19.1-13.8-38.3-56.4-38.3s-11.2.3-17.7.9l-11.8,74.1c-.9,5.6,7.4,8,29.7,8s56.2-17.1,56.2-44.8M1044.6,525.4c0-16.8-12.1-29.5-36.8-29.5s-26.2,2.4-27.3,8.2c-4.4,22.1-8.8,48.3-11.2,62.1h11.2c46.7-1.2,64.1-18,64.1-40.9\"/>\n <path id=\"path28\" class=\"cls-1\"\n d=\"M1171.1,680.4c-2.3-9.4-2.3-17.7-1.5-27.3-9.7,14.1-25,30.2-47.4,30.2s-38.5-20.8-38.5-45.8c0-41.5,32.6-95.6,79.1-95.6s20,4.7,39.4,4.7c-10.3,49.7-16.8,97.6-16.8,118.5s.5,12.4,1.2,15.3h-15.6.1ZM1162,557.4c-31.8,0-58.5,39.7-58.5,78.2s8,31.3,22,31.3c25.3,0,44.1-32.1,49.5-63.3l5.9-34.1c.9-6.7-3.2-12-18.8-12\"/>\n <path id=\"path30\" class=\"cls-1\"\n d=\"M1247.1,574.5l-16.8,105.8h-17.6l20.9-131.1c25.9,0,32.4-7.4,52.7-7.4s40.5,9.1,40.5,34.4-.3,7-.9,10.9l-14.6,93.2h-17.7l14.1-88.8c.6-3.5.9-6.8.9-9.7,0-17.1-7.3-24.4-26.7-24.4s-33.5,9.4-34.7,17.1\"/>\n <path id=\"path32\" class=\"cls-1\"\n d=\"M1418.6,557.7c-33.2,0-56.2,28.2-56.2,72.7s15,38.5,37.4,38.5,17-.8,24.1-2.6l-2.3,15.6c-7.6,1.7-15,2.6-21.7,2.6-35,0-57.2-17.9-57.2-53.8s32.1-88.8,78.9-88.8,14.7.5,21.7,1.8l-2.6,17.3c-7.3-2.3-15-3.2-22-3.2\"/>\n <path id=\"path34\" class=\"cls-1\"\n d=\"M1560.5,593.9c0,46.8-27.1,90.6-68.9,90.6s-45-18.8-45-52.1c0-47.1,27.6-90.6,68.8-90.6s45.1,19.1,45.1,52M1465.7,631.2c0,26.1,9.5,37.9,28.2,37.9s47.3-32.6,47.3-73.5-8.5-38.2-27.6-38.2c-27.1,0-48,33-48,73.8\"/>\n <path id=\"path36\" class=\"cls-1\"\n d=\"M179.3,400.2c-12.4,5.9-27.1,8.9-41.2,8.9-54.4,0-101.3-28.8-101.3-102.7s48.3-104.9,102.8-104.9,28,1.8,39.8,5.3v34.5c-12-5-25.4-8-40-8-38.3,0-65.7,19.4-65.7,72.2s29.7,71.6,65.9,71.6,27.4-2.4,39.8-7.7v30.9\"/>\n <path id=\"path38\" class=\"cls-1\"\n d=\"M228.5,335.5c0,29.7,12.9,44.4,29.1,44.4s28-13.5,28-44.4-13-44.2-29.5-44.2-27.6,13.2-27.6,44.2M320.3,335.5c0,43.2-25,73.3-63.6,73.3s-63.3-30.1-63.3-73.3,25.3-72.7,63.3-72.7,63.6,28.8,63.6,72.7\"/>\n <path id=\"path40\" class=\"cls-1\"\n d=\"M522.5,404.6h-32.5v-88c0-18.2-7-25-21.7-25s-21.2,3.5-21.2,10.2c.3,3.2.9,7.4.9,11.8v91h-32.4v-88c0-18.5-7.4-25-20-25s-21.8,2.9-21.8,12.9v100.1h-32.4v-134.9c28.6,0,37.7-6.5,58.9-6.5s26.8,4.4,33.8,10.6c10.6-6.8,24.1-10.6,41.5-10.6,28,0,46.9,12.7,46.9,48.9v92.5\"/>\n <path id=\"path42\" class=\"cls-1\"\n d=\"M597.2,290.4c-10.8,0-17.8,4.7-17.8,9.5v70.6c0,5,7.8,9.4,17.8,9.4,20.5,0,32.3-13.5,32.3-44.2s-11.8-45.3-32.3-45.3M546.3,477.9c.6-30.9,1.2-61.5,1.2-100.1v-110.4c20,0,32.7-4.7,52.3-4.7,35.7,0,65.4,25.6,65.4,73.6s-31.8,71.5-61.2,71.5-20-3-24.5-6.2v76.2h-33.2\"/>\n <path id=\"path44\" class=\"cls-1\"\n d=\"M753,337.8c-26.8.8-40.6,9.1-40.6,24.7s8.3,18,20.9,18,17.4-3.2,18.6-7.4c.9-4.4,1.1-17.6,1.1-35.3M753,313.7v-5.3c0-11.2-7.6-17.9-21.4-17.9s-28.3,2.7-43,9.4v-30.3c15.3-4.4,29.1-6.7,45.6-6.7,31.8,0,51.5,12.9,51.5,45.3s-.9,42.4-.9,64.2.6,24.2,1.5,31.5c-23.6,0-36.2,3.8-56.2,3.8-34.1,0-51.2-15.8-51.2-42.6s22.4-49.8,74.1-51.2\"/>\n <path id=\"path46\" class=\"cls-1\"\n d=\"M810.8,404.6v-137.8h30.6v13c8.2-13,22.1-17.4,35.6-17.4s10.5.6,15,1.2v34.1c-5.6-2.6-14.5-3.8-22.7-3.8-13.2,0-25,5.3-25.7,16.8-.6,23.2-.6,58.8-.6,93.9h-32.4\"/>\n <path id=\"path48\" class=\"cls-1\"\n d=\"M937.9,266.8h39.7v28.3h-39.7c0,29.1-.3,49.2-.3,70.7s6.2,14.4,17.1,14.4,15.9-1.5,22.9-5.3v28.5c-9.7,3.6-19.7,5.3-31.5,5.3-23.5,0-40.9-10.9-40.9-36.5v-130.4l32.7-19.4v44.4\"/>\n <path id=\"path50\" class=\"cls-1\"\n d=\"M1068.6,337.8c-26.8.8-40.6,9.1-40.6,24.7s8.2,18,20.9,18,17.3-3.2,18.5-7.4c.9-4.4,1.2-17.6,1.2-35.3M1068.6,313.7v-5.3c0-11.2-7.7-17.9-21.5-17.9s-28.3,2.7-43,9.4v-30.3c15.3-4.4,29-6.7,45.6-6.7,31.8,0,51.5,12.9,51.5,45.3s-.9,42.4-.9,64.2.6,24.2,1.5,31.5c-23.5,0-36.2,3.8-56.3,3.8-34.1,0-51.2-15.8-51.2-42.6s22.4-49.8,74.2-51.2\"/>\n <path id=\"path52\" class=\"cls-1\"\n d=\"M1307.8,404.6h-32.4v-88c0-18.2-7.1-25-21.8-25s-21.2,3.5-21.2,10.2c.2,3.2.9,7.4.9,11.8v91h-32.4v-88c0-18.5-7.4-25-20-25s-21.8,2.9-21.8,12.9v100.1h-32.3v-134.9c28.5,0,37.7-6.5,58.8-6.5s26.8,4.4,33.9,10.6c10.6-6.8,24.1-10.6,41.5-10.6,28,0,46.8,12.7,46.8,48.9v92.5\"/>\n <path id=\"path54\" class=\"cls-1\"\n d=\"M1363,335.5c0,29.7,13,44.4,29.2,44.4s27.9-13.5,27.9-44.4-12.9-44.2-29.4-44.2-27.8,13.2-27.8,44.2M1454.9,335.5c0,43.2-25,73.3-63.6,73.3s-63.3-30.1-63.3-73.3,25.4-72.7,63.3-72.7,63.6,28.8,63.6,72.7\"/>\n <path id=\"path56\" class=\"cls-1\"\n d=\"M1522.2,262.7c10.9,0,20,.8,31.8,4.1v30.7c-13.8-5.6-23.6-7.1-33-7.1s-18.2,4.7-18.2,11.8c0,21.2,57.6,19.1,57.6,61.5s-16.5,45-54.7,45-24.4-1.2-35.9-4.7v-28.8c11.2,3.8,24.4,5.6,33.8,5.6,15.6,0,23.5-5.9,23.5-15,0-23.3-58-19.7-58-60.1s20.1-43,53-43\"/>\n </g>\n </g>\n </svg>\n </div>\n } @else {\n <div class=\"svg-wrapper\">\n <svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\" y=\"0px\"\n viewBox=\"0 0 554 481\" style=\"enable-background:new 0 0 554 481;\" xml:space=\"preserve\">\n<style type=\"text/css\">\n\t.st0 {\n fill: none;\n }\n\n .st1 {\n fill: #E85E16;\n }\n\n .st2 {\n fill: #9D0046;\n }\n\n .st3 {\n fill: #592275;\n }\n\n .st4 {\n fill: #CD0058;\n }\n\n .st5 {\n fill: #00587F;\n }\n\n .st6 {\n fill: #229B7D;\n }\n</style>\n <rect class=\"st0\" width=\"554\" height=\"481\"/>\n <g>\n\t<path id=\"naranja\" class=\"st1\" d=\"M277.4,128.4c74.7-40.1,146.4-40,154.5-40c8.1,48,13.7,67-7.9,121.3\n\t\tc-24.2,43.8-169.9,71.1-169.9,71.1l0,0c2.7-5.3-3.7-67.7-3.7-67.7S248.6,141.8,277.4,128.4\"/>\n <path id=\"roja\" class=\"st2\" d=\"M449.8,205.7c-2.6,16-11.6,58-43.6,101.2s-99.9,85.5-138,96s-35.3,8-51.6,8\n\t\tc-10-28.6-11.3-33.9-4.9-81.3s22.9-61.8,56.5-80c24.4-10.7,48.7-17.3,73.1-25.3C379.4,213.7,417.4,208.3,449.8,205.7\"/>\n <path id=\"morada\" class=\"st3\" d=\"M236.8,95.1c18.8-8.3,43.1-16.7,70-25.2c-7.8,18.8-10.1,42.8-15.2,66.9\n\t\tc-6.6,43.2-12.8,104.4-40.2,136.6C217.9,313,127.3,348.2,127,347.6l-2.5,0c-14.4-50.4-20.6-93-15.7-125\n\t\tC116,166.4,150.6,131.2,236.8,95.1L236.8,95.1\"/>\n <path id=\"fushia\" class=\"st4\" d=\"M425.5,246h13.6c-13.5,37.3-31.4,76.2-72,105.6c-69,48.9-98.8,50.7-98.8,50.7S341.4,254,425.5,246\n\t\t\"/>\n <path id=\"azul\" class=\"st5\" d=\"M122.5,344.1L122.5,344.1c13.6,45.3,48.8,69.3,100.3,66.6c24.4-48,44-108.8,52.1-164.7\n\t\tC218,272.7,165.9,312.1,122.5,344.1\"/>\n <path id=\"verde\" class=\"st6\" d=\"M277,232.3c5.4-37.3,10.8-72,16.2-103.9C206.5,171,144.2,251,122.5,344.3\n\t\tc43.4-32,95.2-70.3,152.1-97\"/>\n</g>\n</svg>\n\n </div>\n }\n </div>\n}\n","import {Component, Input} from '@angular/core';\nimport {NgClass} from \"@angular/common\";\n\n@Component({\n selector: 'rdnd-active-indicator',\n standalone: true,\n imports: [\n NgClass\n ],\n templateUrl: './rdnd-active-indicator.component.html',\n styleUrl: './rdnd-active-indicator.component.css'\n})\nexport class RdndActiveIndicator {\n @Input() isActive: boolean = false;\n @Input() activeDisplay?: string = \"Activo\";\n @Input() inactiveDisplay?: string = \"Inactivo\";\n\n}\n","<div class=\"rdnd-active-indicator-wrapper\" [ngClass]=\"{\n active: isActive,\n inactive: !isActive\n}\">\n <span>\n @if (isActive) {\n {{ activeDisplay }}\n } @else {\n {{ inactiveDisplay }}\n }\n </span>\n</div>\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { SelectOption } from '../../types/Select-option.types';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'rdnd-select',\n standalone: true,\n imports: [\n NgClass,\n FontAwesomeModule\n ],\n templateUrl: './rdnd-select.component.html',\n styleUrl: './rdnd-select.component.scss'\n})\nexport class RdndSelect implements OnInit {\n @Input() id!: string;\n @Input() name!: string;\n @Input() label: string = '';\n @Input() placeholder: string = 'Selecciona una opción';\n @Input() options: SelectOption[] = [];\n @Input() showLabel: boolean = false;\n @Input() disabled: boolean = false;\n @Input() value: string = '';\n\n @Output() valueChange = new EventEmitter<SelectOption>();\n @Output() onFocus = new EventEmitter<FocusEvent>();\n @Output() onBlur = new EventEmitter<FocusEvent>();\n\n faChevronDown = faChevronDown;\n isOpen: boolean = false;\n selectedOption: SelectOption | null = null;\n\n ngOnInit() {\n if (this.value && this.options.length > 0) {\n this.selectedOption = this.options.find(opt => opt.key === this.value) || null;\n }\n }\n\n toggleDropdown() {\n if (!this.disabled) {\n this.isOpen = !this.isOpen;\n }\n }\n\n selectOption(option: SelectOption) {\n this.selectedOption = option;\n this.value = option.key;\n this.valueChange.emit(option);\n this.isOpen = false;\n }\n\n handleFocus(event: FocusEvent) {\n this.onFocus.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this.onBlur.emit(event);\n setTimeout(() => {\n this.isOpen = false;\n }, 200);\n }\n\n get displayValue(): string {\n return this.selectedOption?.value || '';\n }\n}\n","<div [ngClass]=\"{ 'disabled': disabled }\" class=\"select-container\" (click)=\"toggleDropdown()\">\n\n <!-- Label flotante que interrumpe el borde -->\n @if (showLabel && label) {\n <label class=\"border-label\">{{ label }}</label>\n }\n\n <div class=\"select-wrapper\">\n <div\n class=\"select-display\"\n [class.open]=\"isOpen\"\n [class.has-value]=\"selectedOption\"\n tabindex=\"0\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n >\n @if (selectedOption) {\n <span class=\"selected-value\">{{ selectedOption.value }}</span>\n } @else {\n <span class=\"placeholder-text\">{{ placeholder }}</span>\n }\n <fa-icon [icon]=\"faChevronDown\" class=\"chevron-icon\" [class.open]=\"isOpen\"></fa-icon>\n </div>\n\n @if (isOpen) {\n <div class=\"dropdown-options\">\n @for (option of options; track option.key) {\n <div\n class=\"option-item\"\n [class.selected]=\"selectedOption?.key === option.key\"\n (click)=\"selectOption(option); $event.stopPropagation()\"\n >\n {{ option.value }}\n </div>\n }\n </div>\n }\n </div>\n</div>\n","import {Component, Input, Output, EventEmitter} from '@angular/core';\r\nimport {NgClass} from \"@angular/common\";\r\n\r\n@Component({\r\n selector: 'rdnd-question',\r\n standalone: true,\r\n imports: [\r\n NgClass\r\n ],\r\n templateUrl: './question.component.html',\r\n styleUrl: './question.component.css',\r\n})\r\nexport class QuestionComponent {\r\n\r\n @Input() question: string = '';\r\n @Input() questionType?: 'small' | 'normal' = 'normal';\r\n @Output() onChange = new EventEmitter<boolean>();\r\n\r\n selected: boolean = true;\r\n\r\n handleChange(value: boolean) {\r\n this.onChange.emit(value);\r\n this.selected = value;\r\n }\r\n}\r\n","<div class=\"question-wrapper\">\r\n <p [ngClass]=\"{\r\n small: questionType === 'small'\r\n }\">{{ question }}</p>\r\n\r\n <div class=\"container\">\r\n <div\r\n class=\"question-chip\"\r\n (click)=\"handleChange(true)\"\r\n [ngClass]=\"{\r\n selected: selected\r\n }\"\r\n >Sí\r\n </div>\r\n <div\r\n class=\"question-chip\"\r\n (click)=\"handleChange(false)\"\r\n [ngClass]=\"{\r\n selected: !selected\r\n }\"\r\n >No\r\n </div>\r\n </div>\r\n\r\n</div>\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 pastel: {\r\n default: \"#FFD396\",\r\n hover: \"#efd5b1\",\r\n border: 'transparent',\r\n active: \"#eab16e\",\r\n fontColor: \"#707070\",\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 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[\"blue\"]}`,\r\n hover: colors[\"blue-light\"],\r\n border: 'transparent',\r\n active: colors[\"blue-dark\"],\r\n fontColor: colors.white,\r\n },\r\n\r\n borderedMagenta: {\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 borderedBlack: {\r\n default: 'white',\r\n hover: 'white',\r\n border: colors.black,\r\n active: 'white',\r\n fontColor: colors.black\r\n },\r\n borderedGray: {\r\n default: 'white',\r\n hover: 'white',\r\n border: \"#707070\",\r\n active: 'white',\r\n fontColor: \"#707070\"\r\n },\r\n borderedBlue: {\r\n default: 'white',\r\n hover: 'white',\r\n border: colors.blue,\r\n active: 'white',\r\n fontColor: colors.blue\r\n },\r\n borderedRed: {\r\n default: 'white',\r\n hover: 'white',\r\n border: \"#F44C24\",\r\n active: 'white',\r\n fontColor: \"#F44C24\"\r\n },\r\n transparentMagenta: {\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 transparentBlack: {\r\n default: 'transparent',\r\n hover: 'transparent',\r\n border: 'transparent',\r\n active: 'transparent',\r\n fontColor: colors.black\r\n },\r\n transparentGreen: {\r\n default: 'transparent',\r\n hover: 'transparent',\r\n border: 'transparent',\r\n active: 'transparent',\r\n fontColor: colors[\"green-medium\"]\r\n },\r\n\r\n};\r\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport interface ButtonServiceType {\n enable: () => void;\n disable: () => void;\n disabled$: Observable<boolean>\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ButtonService {\n private buttonsState: { [id: string]: BehaviorSubject<boolean> } = {};\n\n private ensureButtonExists(id: string): void {\n if (!this.buttonsState[id]) {\n this.buttonsState[id] = new BehaviorSubject<boolean>(false);\n }\n }\n\n useButton(id: string): ButtonServiceType {\n this.ensureButtonExists(id);\n\n return {\n disabled$: this.buttonsState[id].asObservable(),\n enable: () => this.buttonsState[id].next(false),\n disable: () => this.buttonsState[id].next(true),\n };\n }\n}\n","import { Component, Input, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core';\nimport { IconDefinition } from '@fortawesome/angular-fontawesome';\nimport {Observable, Subscription} from 'rxjs';\nimport {FaIconComponent} from \"@fortawesome/angular-fontawesome\";\nimport { NgClass } from \"@angular/common\";\n// @ts-ignore\nimport {themes} from \"../../styles/themes\";\nimport {ButtonService, ButtonServiceType} from \"../../hooks/button.service\";\n// @ts-ignore\n\n\n\n@Component({\n selector: 'rdnd-button',\n templateUrl: './button.component.html',\n standalone: true,\n imports: [\n FaIconComponent,\n NgClass\n],\n styleUrls: ['./button.component.scss']\n})\nexport class RdndButton implements OnInit, OnDestroy {\n @Input() id!: string;\n @Input() icon?: IconDefinition;\n @Input() text: string = 'Enviar';\n @Input() theme: any = themes.magenta;\n @Input() size: 'contained' | 'full' = 'full';\n @Input() type: 'button' | 'submit' | 'reset' = 'submit';\n @Input() borders: boolean = true;\n @Input() disabled: boolean = false;\n\n @Output() callback: EventEmitter<void> = new EventEmitter<void>();\n\n protected readonly themes = themes;\n private subscription!: Subscription;\n hoverBackgroundColor: string = this.theme.default;\n\n buttonControl!: ButtonServiceType ;\n\n constructor(private buttonService: ButtonService) {\n }\n\n ngOnInit(): void {\n this.buttonControl = this.buttonService.useButton(this.id);\n\n this.subscription = new Subscription( () =>\n this.buttonControl.disabled$.subscribe((isDisabled: boolean) => {\n this.disabled = isDisabled;\n })\n )\n\n }\n\n ngOnDestroy(): void {\n if(this.subscription){\n this.subscription.unsubscribe();\n }\n }\n\n handleClick(event: MouseEvent): void {\n event.stopPropagation();\n if (!this.disabled && this.type !== 'submit') {\n this.callback.emit();\n }\n }\n\n onMouseEnter() {\n if (!this.disabled) {\n this.hoverBackgroundColor = this.theme.hover;\n }\n }\n\n onMouseLeave() {\n if (!this.disabled) {\n this.hoverBackgroundColor = this.theme.default;\n }\n }\n\n protected readonly event = event;\n}\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 {{ text }}\r\n\r\n @if (icon) {\r\n <fa-icon [icon]=\"icon\" class=\"icon\"></fa-icon>\r\n }\r\n</button>\r\n","import { Injectable } from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport { FormControl, ValidationErrors } from '@angular/forms';\n\nexport type InputStateType = {\n isValid: BehaviorSubject<boolean>;\n valid: Observable<boolean>;\n errorMessage: Observable<string | null>;\n setValid: (isValid: boolean) => void;\n setErrorMessage: (message: string | null) => void;\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InputService {\n\n private inputState: {\n [id: string]: {\n valid$: BehaviorSubject<boolean>;\n errorMessage$: BehaviorSubject<string | null>;\n };\n } = {};\n\n private ensureInputExists(id: string): void {\n if (!this.inputState[id]) {\n this.inputState[id] = {\n valid$: new BehaviorSubject<boolean>(false),\n errorMessage$: new BehaviorSubject<string | null>(null),\n };\n }\n }\n\n useInput(id: string): InputStateType {\n this.ensureInputExists(id);\n\n return {\n isValid: this.inputState[id].valid$,\n valid: this.inputState[id].valid$.asObservable(),\n errorMessage: this.inputState[id].errorMessage$.asObservable(),\n setValid: (isValid: boolean) => this.inputState[id].valid$.next(isValid),\n setErrorMessage: (message: string | null) =>\n this.inputState[id].errorMessage$.next(message),\n };\n }\n\n updateInputState(control: FormControl, id: string): void {\n this.ensureInputExists(id);\n\n const errors: ValidationErrors | null = control.errors;\n\n if (control.valid) {\n this.inputState[id].valid$.next(true);\n this.inputState[id].errorMessage$.next(null);\n } else {\n this.inputState[id].valid$.next(false);\n this.inputState[id].errorMessage$.next(this.getErrorMessage(errors));\n }\n }\n\n private getErrorMessage(errors: ValidationErrors | null): string | null {\n if (!errors) return null;\n\n if (errors['required']) return 'Este campo es obligatorio';\n if (errors['minlength'])\n return `Mínimo ${errors['minlength'].requiredLength} caracteres requeridos`;\n if (errors['maxlength'])\n return `Máximo ${errors['maxlength'].requiredLength} caracteres permitidos`;\n if (errors['email']) return 'Formato de correo inválido';\n\n return null;\n }\n}\n","import {Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges} 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 } 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: [\n NgClass,\n FontAwesomeModule,\n ReactiveFormsModule\n],\r\n styleUrls: ['./input.component.scss']\r\n})\r\nexport class RdndInput implements OnInit, OnChanges {\r\n @Input() id!: string;\r\n @Input() name!: string;\r\n @Input() type: 'text' | 'password' | 'number' | 'date' = 'text';\r\n @Input() label: string = '';\r\n @Input() placeholder: string = '';\r\n @Input() showLabel: boolean = false;\r\n @Input() control?: FormControl;\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 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\r\n ngOnInit() {\r\n if (this.control) {\r\n this.control.addValidators(this.validators);\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 } else {\r\n this.control = new FormControl(this.value, this.validators);\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 ngOnChanges(changes: SimpleChanges) {\r\n if (this.control) {\r\n this.control.addValidators(this.validators);\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 } else {\r\n this.control = new FormControl(this.value, this.validators);\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\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 && this.control.invalid && (this.control.dirty || this.control.touched);\r\n }\r\n\r\n shouldShowErrorMessage(): boolean {\r\n return !!this.control && this.control.invalid && this.control.dirty && this.showError;\r\n }\r\n\r\n handleTogglePassword(): void {\r\n this.showPassword = !this.showPassword;\r\n }\r\n\r\n handleChange(event: Event) {\r\n const e = event.target as HTMLInputElement\r\n this.valueChange.emit(e.value);\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\">\n\n <!-- Ícono de error que aparece por encima del campo si hay error -->\n @if (hasError()) {\n <span class=\"error-icon\" (click)=\"toggleErrorDisplay()\" tabindex=\"4\">&#9432;</span>\n }\n\n <!-- Botón de mostrar/ocultar contraseña centrado verticalmente -->\n @if (type == 'password') {\n <button type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\" tabindex=\"4\">\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword\"></fa-icon>\n </button>\n }\n\n <!-- Label flotante que interrumpe el borde -->\n @if (showLabel && label) {\n <label class=\"border-label\">{{ label }}</label>\n }\n\n @if (control) {\n <!-- Input compatible con FormControl -->\n <input\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\n [formControl]=\"control!\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (keydown)=\"handleKeyDown($event)\"\n (paste)=\"handlePaste($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [ngClass]=\"{ 'error-border': hasError() }\"\n tabindex=\"1\"\n />\n } @else {\n <!-- Input para signals -->\n <input\n [type]=\"type === 'password' && showPassword ? 'text' : type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (input)=\"handleChange($event)\"\n (keydown)=\"handleKeyDown($event)\"\n (paste)=\"handlePaste($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [ngClass]=\"{ 'error-border': false }\"\n tabindex=\"1\"\n />\n }\n\n <!-- Mensaje de error que aparece solo cuando se clickea en el ícono de error -->\n @if (shouldShowErrorMessage()) {\n <div class=\"error-message\">\n {{ getErrorMessage() }}\n </div>\n }\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\nimport {IconDefinition} from '@fortawesome/angular-fontawesome';\nimport {themes} from \"../../styles/themes\";\nimport {FontAwesomeModule} from '@fortawesome/angular-fontawesome';\nimport {RdndButton} from \"../button/button.component\";\n\n@Component({\n selector: 'rdnd-modal',\n standalone: true,\n imports: [\n FontAwesomeModule,\n RdndButton\n ],\n templateUrl: './modal.component.html',\n styleUrl: './modal.component.scss'\n})\nexport class RdndModal {\n @Input() title: string = '';\n @Input() type: 'success' | 'error' | 'question' | 'warning' | 'info' = 'success';\n @Input() theme: any = themes.magenta;\n @Input() confirmText: string = '';\n @Input() cancelText: string = '';\n @Output() close = new EventEmitter<boolean>();\n\n protected readonly themes = themes;\n\n icon?: IconDefinition;\n content: string = '';\n\n closeModal(result: boolean) {\n this.close.emit(result);\n }\n\n constructor() {\n }\n\n}\n","<div class=\"modal-wrapper\">\n\n <div class=\"container\" (click)=\"$event.stopPropagation()\">\n\n <div class=\"content\">\n\n @if (icon != undefined) {\n <fa-icon [icon]=\"icon\" class=\"icon\" [style.color]=\"theme.default\"\n />\n }\n\n <span class=\"subtitle align-center\">{{ title }}</span>\n\n <div class=\"text align-center\" [innerHTML]=\"content\">\n </div>\n\n\n @if (type !== 'question') {\n <rdnd-button\n [id]=\"'btn-modal'\"\n [type]=\"'button'\"\n (callback)=\"closeModal(true)\"\n [text]=\"'Aceptar'\"\n [theme]=\"theme\"\n [size]=\"'full'\"\n />\n } @else {\n <rdnd-button\n [id]=\"'btn-modal-accept'\"\n [type]=\"'button'\"\n (callback)=\"closeModal(true)\"\n [text]=\"confirmText\"\n [theme]=\"theme\"\n [size]=\"'full'\"\n />\n <rdnd-button\n [id]=\"'btn-modal-cancel'\"\n [type]=\"'button'\"\n (callback)=\"closeModal(false)\"\n [text]=\"cancelText\"\n [theme]=\"themes.borderedMagenta\"\n [size]=\"'full'\"\n />\n }\n\n </div>\n\n\n </div>\n</div>\n\n","import {\n Injectable,\n ComponentRef,\n ApplicationRef,\n Injector,\n ViewContainerRef\n} from '@angular/core';\nimport {RdndModal} from \"../components/modal/modal.component\";\nimport {\n faCircleCheck,\n faCircleInfo,\n faCircleQuestion,\n faCircleXmark,\n IconDefinition\n} from '@fortawesome/free-solid-svg-icons';\nimport {faTriangleExclamation} from \"@fortawesome/free-solid-svg-icons/faTriangleExclamation\";\nimport {rdndThemes} from \"../../public-api\";\nimport {faQuestion} from \"@fortawesome/free-solid-svg-icons/faQuestion\";\nimport {faTable} from \"@fortawesome/free-solid-svg-icons/faTable\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalService {\n\n private modalRef: ComponentRef<RdndModal> | null = null;\n private viewContainerRef!: ViewContainerRef\n\n constructor(\n private appRef: ApplicationRef,\n private injector: Injector\n ) { }\n\n\n setViewContainerRef(vcr: ViewContainerRef) {\n this.viewContainerRef = vcr;\n }\n\n\n openModal(\n title: string,\n content: string,\n type: 'success' | 'error' | 'question' | 'warning' | 'info' = 'success',\n confirmText = 'Continuar',\n cancelText = 'Cancelar'\n ): Promise<boolean> {\n if (this.modalRef || !this.viewContainerRef) return Promise.resolve(false);\n\n this.modalRef = this.viewContainerRef.createComponent(RdndModal);\n\n this.modalRef.instance.title = title;\n this.modalRef.instance.type = type;\n this.modalRef.instance.theme = this.getStyleTheme(type);\n this.modalRef.instance.content = content;\n this.modalRef.instance.icon = this.getIcon(type);\n this.modalRef.instance.confirmText = confirmText;\n this.modalRef.instance.cancelText = cancelText;\n\n const result = new Promise<boolean>((resolve) => {\n this.modalRef!.instance.close.subscribe((res: boolean) => {\n this.closeModal();\n resolve(res);\n });\n });\n\n this.appRef.attachView(this.modalRef.hostView);\n const domElem = (this.modalRef.hostView as any).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n\n return result;\n }\n\n getStyleTheme = (theme: 'success' | 'error' | 'question' | 'warning' | 'info') => {\n switch (theme) {\n case \"success\":\n return rdndThemes.green;\n case 'error':\n return rdndThemes.magentaNormal;\n case 'question':\n return rdndThemes.purple\n case 'warning':\n return rdndThemes.yellow\n case 'info':\n return rdndThemes.purple\n }\n }\n\n closeModal(): void {\n if (this.modalRef) {\n this.appRef.detachView(this.modalRef.hostView);\n this.modalRef.destroy();\n this.modalRef = null;\n }\n }\n\n getIcon(theme: 'success' | 'error' | 'question' | 'warning' | 'info'): IconDefinition {\n switch (theme) {\n case 'error':\n return faTriangleExclamation;\n case 'question':\n return faCircleQuestion\n case \"success\":\n return faCircleCheck\n case \"warning\":\n return faTriangleExclamation;\n case \"info\":\n return faCircleInfo;\n }\n\n }\n\n}\n","import {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StorageService {\n\n constructor() {\n }\n\n public save(key: string, value: any) {\n sessionStorage.setItem(key, JSON.stringify(value));\n };\n\n public get(key: string): JSON | null {\n const data = sessionStorage.getItem(key);\n if (data !== null) {\n return JSON.parse(data);\n } else {\n return null;\n }\n }\n\n public delete(key: string): void {\n sessionStorage.removeItem(key);\n }\n public wipe(): void {\n sessionStorage.clear();\n }\n\n}\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\nexport * from \"./lib/components/rdnd-loader/rdnd-loader.component\";\r\nexport * from \"./lib/components/rdnd-active-indicator/rdnd-active-indicator.component\";\r\nexport * from \"./lib/components/rdnd-select/rdnd-select.component\";\r\nexport * from \"./lib/components/rdnd-question/question.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\nexport {colors} from './lib/styles/colors';\r\nexport {RDND_CONFIG} from \"./lib/config/rdnd-config.token\";\r\n\r\n\r\n// Export types\r\nexport {RdndSidebarItem} from \"./lib/types/Sidebar.types\";\r\nexport {LoaderConfig} from \"./lib/types/Loader-config.types\";\r\nexport {SelectOption} from \"./lib/types/Select-option.types\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ButtonService","i1.InputService","rdndThemes"],"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/config/rdnd-config.token.ts","../../../projects/gentera-rdnd/src/lib/components/rdnd-loader/rdnd-loader.component.ts","../../../projects/gentera-rdnd/src/lib/components/rdnd-loader/rdnd-loader.component.html","../../../projects/gentera-rdnd/src/lib/components/rdnd-active-indicator/rdnd-active-indicator.component.ts","../../../projects/gentera-rdnd/src/lib/components/rdnd-active-indicator/rdnd-active-indicator.component.html","../../../projects/gentera-rdnd/src/lib/components/rdnd-select/rdnd-select.component.ts","../../../projects/gentera-rdnd/src/lib/components/rdnd-select/rdnd-select.component.html","../../../projects/gentera-rdnd/src/lib/components/rdnd-question/question.component.ts","../../../projects/gentera-rdnd/src/lib/components/rdnd-question/question.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': '#57B774',\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: '#577CB7',\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';\nimport {NgStyle} from \"@angular/common\";\nimport {colors} from \"../../styles/colors\";\n\n@Component({\n selector: 'rdnd-screen-title',\n standalone: true,\n imports: [\n NgStyle\n ],\n templateUrl: './screen-title.component.html',\n styleUrl: './screen-title.component.scss'\n})\nexport class RdndScreenTitle {\n @Input() title!: string;\n @Input() align: 'LEFT' | 'CENTER' = 'CENTER';\n @Input() color = colors[\"magentaEnd\"];\n\n}\n","<h1 [class]=\" 'align-' + align \" [ngStyle]=\"{\n color: color\n}\">\n {{ title }}\n</h1>\n","import {Component, Input, output} from '@angular/core';\n\n// Icons\nimport {FaIconComponent} from \"@fortawesome/angular-fontawesome\";\nimport {\n faBarsStaggered,\n faCircle,\n faSignOut,\n faTimes\n} from \"@fortawesome/free-solid-svg-icons\";\nimport {NgStyle} from \"@angular/common\";\nimport {RouterLink} from \"@angular/router\";\n\n@Component({\n selector: 'rdnd-navbar',\n standalone: true,\n imports: [\n FaIconComponent,\n NgStyle,\n RouterLink\n ],\n templateUrl: './rdnd-navbar.component.html',\n styleUrl: './rdnd-navbar.component.scss'\n})\nexport class RdndNavbar {\n\n // Icons\n protected readonly faBarsStaggered = faBarsStaggered;\n protected readonly faSignOut = faSignOut;\n protected readonly faTimes = faTimes;\n\n // States\n showLoader = false;\n\n // Inputs & Outputs\n @Input() userName: string = \"\";\n @Input() imageUrl: string = \"\";\n @Input() backgroundStart: string = \"#C2185B\";\n @Input() backgroundEnd: string = \"#7E0083\";\n @Input() showSidebar = false;\n onSignOut = output();\n onToggleSidebar = output();\n\n // Functions\n toggleMenu = () => {\n this.showSidebar = !this.showSidebar;\n this.onToggleSidebar.emit();\n }\n\n closeMenu = () => {\n this.showSidebar = false;\n }\n\n handleSignOut = () => {\n this.onSignOut.emit();\n }\n\n\n}\n","<nav [ngStyle]=\"{'background': 'linear-gradient(to right, ' + backgroundStart + ', ' + backgroundEnd + ')'}\">\n\n <div class=\"rdnd-nav-container\">\n <button (click)=\"toggleMenu()\" >\n <fa-icon [icon]=\"showSidebar ? faTimes : faBarsStaggered\"></fa-icon>\n </button>\n\n @if (imageUrl) {\n <a [routerLink]=\"['/']\">\n <img src=\"{{imageUrl}}\" alt=\"\">\n </a>\n }\n\n <button (click)=\"handleSignOut()\">\n <fa-icon [icon]=\"faSignOut\"></fa-icon>\n </button>\n </div>\n\n</nav>\n","import {Component, Input, output} from '@angular/core';\nimport {NgClass, NgStyle} from '@angular/common';\nimport {RouterLink} from '@angular/router';\n// Icons\nimport {FaIconComponent} from '@fortawesome/angular-fontawesome';\nimport {\n faArrowRight,\n faChevronDown,\n faChevronUp,\n faCircle\n} from '@fortawesome/free-solid-svg-icons';\n// Components\nimport {RdndSidebarItem} from \"../../types/Sidebar.types\";\n\n@Component({\n selector: 'rdnd-sidebar',\n standalone: true,\n imports: [\n NgClass,\n NgStyle,\n RouterLink,\n FaIconComponent,\n ],\n templateUrl: './rdnd-sidebar.component.html',\n styleUrl: './rdnd-sidebar.component.scss',\n})\nexport class RdndSidebar {\n // Inputs\n @Input() show: boolean = false;\n @Input() user?: { name: string; email: string; photo?: string };\n @Input() entries: RdndSidebarItem[] = [];\n @Input() backgroundStart: string = '#C2185B';\n @Input() backgroundEnd: string = '#7E0083';\n @Input() activeRoute?: string = '/';\n\n // Outputs\n onClickEntry = output();\n\n protected readonly faArrowRight = faArrowRight;\n protected readonly faChevronDown = faChevronDown;\n protected readonly faChevronUp = faChevronUp;\n protected readonly faCircle = faCircle;\n\n openSections = new Set<string>();\n\n handleClick = () => {\n this.onClickEntry.emit();\n };\n\n toggleSection(name: string) {\n this.openSections.has(name)\n ? this.openSections.delete(name)\n : this.openSections.add(name);\n }\n\n isSectionOpen(section: RdndSidebarItem): boolean {\n const hasActiveChild = section.entries?.some(entry => this.activeRoute === `/${section.url}${entry.url}`);\n return hasActiveChild || this.openSections.has(section.name);\n }\n\n isActiveRoute(itemRoute: string): boolean {\n return this.activeRoute === itemRoute;\n }\n\n}\n","@if (show) {\n <div\n class=\"background-overlay\"\n (click)=\"handleClick()\"\n [ngClass]=\"show ? 'open' : 'closed'\">\n </div>\n}\n\n<aside\n id=\"sidebar\"\n class=\"sidebar\"\n [ngClass]=\"show ? 'open' : 'closed'\"\n [ngStyle]=\"{\n 'background': 'linear-gradient(to bottom, ' + backgroundStart + ', ' + backgroundEnd + ')'\n }\"\n>\n\n @if (user) {\n\n <div class=\"user-details\">\n @if (user.photo) {\n <img src=\"{{user.photo}}\" alt='{{user.name}}' class=\"user-image\">\n } @else {\n <div class=\"user-image\">\n <svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\" y=\"0px\"\n viewBox=\"0 0 554 481\" style=\"enable-background:new 0 0 554 481;\" xml:space=\"preserve\">\n<style type=\"text/css\">\n\t.st0 {\n fill: none;\n }\n\n .st1 {\n fill: #E85E16;\n }\n\n .st2 {\n fill: #9D0046;\n }\n\n .st3 {\n fill: #592275;\n }\n\n .st4 {\n fill: #CD0058;\n }\n\n .st5 {\n fill: #00587F;\n }\n\n .st6 {\n fill: #229B7D;\n }\n</style>\n <rect class=\"st0\" width=\"554\" height=\"481\"/>\n <g>\n\t<path id=\"naranja\" class=\"st1\" d=\"M277.4,128.4c74.7-40.1,146.4-40,154.5-40c8.1,48,13.7,67-7.9,121.3\n\t\tc-24.2,43.8-169.9,71.1-169.9,71.1l0,0c2.7-5.3-3.7-67.7-3.7-67.7S248.6,141.8,277.4,128.4\"/>\n <path id=\"roja\" class=\"st2\" d=\"M449.8,205.7c-2.6,16-11.6,58-43.6,101.2s-99.9,85.5-138,96s-35.3,8-51.6,8\n\t\tc-10-28.6-11.3-33.9-4.9-81.3s22.9-61.8,56.5-80c24.4-10.7,48.7-17.3,73.1-25.3C379.4,213.7,417.4,208.3,449.8,205.7\"/>\n <path id=\"morada\" class=\"st3\" d=\"M236.8,95.1c18.8-8.3,43.1-16.7,70-25.2c-7.8,18.8-10.1,42.8-15.2,66.9\n\t\tc-6.6,43.2-12.8,104.4-40.2,136.6C217.9,313,127.3,348.2,127,347.6l-2.5,0c-14.4-50.4-20.6-93-15.7-125\n\t\tC116,166.4,150.6,131.2,236.8,95.1L236.8,95.1\"/>\n <path id=\"fushia\" class=\"st4\" d=\"M425.5,246h13.6c-13.5,37.3-31.4,76.2-72,105.6c-69,48.9-98.8,50.7-98.8,50.7S341.4,254,425.5,246\n\t\t\"/>\n <path id=\"azul\" class=\"st5\" d=\"M122.5,344.1L122.5,344.1c13.6,45.3,48.8,69.3,100.3,66.6c24.4-48,44-108.8,52.1-164.7\n\t\tC218,272.7,165.9,312.1,122.5,344.1\"/>\n <path id=\"verde\" class=\"st6\" d=\"M277,232.3c5.4-37.3,10.8-72,16.2-103.9C206.5,171,144.2,251,122.5,344.3\n\t\tc43.4-32,95.2-70.3,152.1-97\"/>\n</g>\n</svg>\n </div>\n }\n\n <div class=\"data\">\n <span>\n <fa-icon [icon]=\"faCircle\" class=\"icon\"></fa-icon>\n {{ user.name }}\n </span>\n <span class=\"email\">\n {{ user.email }}\n </span>\n </div>\n\n </div>\n\n }\n\n <ul class=\"entries\">\n @for (item of entries; track item.name) {\n\n @if (item.type === 'ENTRY') {\n <li>\n <a\n [routerLink]=\"[item.url]\"\n class=\"entry\"\n (click)=\"handleClick()\"\n [ngClass]=\"{\n activeRoute: activeRoute === item.url\n }\"\n >\n <fa-icon [icon]=\"faArrowRight\"/>\n {{ item.name }}\n </a>\n </li>\n } @else if (item.type === 'SECTION') {\n <li class=\"section\">\n\n <div class=\"section-title\" (click)=\"toggleSection(item.name)\">\n <fa-icon\n [icon]=\"isSectionOpen(item) ? faChevronUp : faChevronDown\"\n class=\"chevron\"\n />\n <span>{{ item.name }}</span>\n </div>\n\n @if (isSectionOpen(item)) {\n <ul class=\"section-entries\">\n @for (entry of item.entries; track entry.name) {\n <li>\n <a\n [routerLink]=\"[item.url + entry.url]\"\n (click)=\"handleClick()\"\n class=\"entry\"\n [ngClass]=\"{\n activeRoute: isActiveRoute('/' + item.url + entry.url)\n }\"\n >\n <fa-icon [icon]=\"faArrowRight\" class=\"icon\"/>\n {{ entry.name }}\n </a>\n </li>\n }\n <hr/>\n </ul>\n }\n </li>\n }\n }\n\n </ul>\n</aside>\n","// src/lib/config/rdnd-config.token.ts\nimport { InjectionToken } from '@angular/core';\n// @ts-ignore\nimport { LoaderConfig } from '../types/loader-config';\n\nexport const RDND_CONFIG = new InjectionToken<LoaderConfig>('RDND_CONFIG');\n","import {Component, Inject, Input, Optional} from '@angular/core';\r\nimport { RDND_CONFIG } from '../../config/rdnd-config.token';\r\nimport {LoaderConfig, LoaderType} from \"../../types/Loader-config.types\";\r\n\r\n@Component({\r\n selector: 'rdnd-loader',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './rdnd-loader.component.html',\r\n styleUrl: './rdnd-loader.component.scss'\r\n})\r\nexport class RdndLoaderComponent {\r\n\r\n @Input() show: boolean = false;\r\n\r\n @Input() loaderType: LoaderType = 'gentera';\r\n\r\n constructor(@Optional() @Inject(RDND_CONFIG) config: LoaderConfig | null) {\r\n const type = config?.loader?.loaderType;\r\n if (type === 'gentera' || type === 'compartamos') {\r\n this.loaderType = type;\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n","@if (show) {\n <div class=\"loader\">\n @if (loaderType === 'compartamos') {\n <div class=\"svg-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" xmlns:cc=\"http://creativecommons.org/ns#\"\n xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\"\n xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\" xmlns:svg=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 1629.3 720\">\n <defs>\n <style>\n .cls-1 {\n fill: #fff;\n }\n\n .cls-2 {\n fill: #8d104b;\n }\n\n .cls-3 {\n fill: #f7961c;\n }\n </style>\n </defs>\n <!-- Generator: Adobe Illustrator 28.7.1, SVG Export Plug-In . SVG Version: 1.2.0 Build 142) -->\n <g>\n <g id=\"Capa_1\">\n <path id=\"path16\" class=\"cls-3\"\n d=\"M664.5,84.3c-7,1.3-43.6-10.4-43.6-10.4,0,0,26.2,19.3,28.4,22.7,2.2,3.5-7.9,33-7.9,33,0,0,19.3-22.3,26.6-29,4.4-4,14.6-2.1,19.5-.9,4.9,1.2,53.4,14.5,101.8-14.4,31.6-18.9,31.5-23,31.5-23,0,0-26.5-21.5-69.6-16.6-43.2,5-79.8,37.1-86.8,38.4\"/>\n <path id=\"path18\" class=\"cls-2\"\n d=\"M507.7,668.9c-8.4,2.3-52.7,1.7-52.7,1.7,0,0,31,14,33.5,17,2.4,2.9-10.4,32.4-10.4,32.4,0,0,20.7-21.3,29.6-28.8,5.4-4.5,17.1-5.9,26.7-6.7,5.9-.5,63.8,5.2,122.8-29.6,38.5-22.7,38.5-26.6,38.5-26.6,0,0-37.8-20.3-89.8-8.8-51.9,11.5-89.7,47.1-98.1,49.5\"/>\n <path id=\"path20\" class=\"cls-3\"\n d=\"M1368.2,125.5c-11.8,2.3-72.1-3.5-72.1-3.5,0,0,40.7,22.6,43.8,26.9,3,4.2-17.9,43.1-17.9,43.1,0,0,30.6-26.8,43.7-35.9,7.9-5.6,24.1-6.1,37.1-6.1s86.5,14.3,171-26.6c55.2-26.8,55.5-32.1,55.5-32.1,0,0-49.3-32-121.6-22.2-72.2,9.9-127.7,54.2-139.5,56.5\"/>\n <path id=\"path22\" class=\"cls-3\"\n d=\"M77.2,575.8c-12.3,2.6-77.2-17-77.2-17,0,0,46.9,33.2,50.8,39.3,3.8,6.1-13,58.5-13,58.5,0,0,33.4-39.9,46.1-51.8,7.7-7.3,25.8-4.1,34.4-2.1,8.7,1.9,94.7,24,179.3-28.3,55.2-34.1,54.9-41.4,54.9-41.4,0,0-47.3-37.2-123.3-27.2-76,10-139.7,67.8-152.1,70.3\"/>\n <path id=\"path24\" class=\"cls-2\"\n d=\"M1194.7,50.2c-7.7,1.5-45.8-10.6-45.8-10.6,0,0,27.1,19.3,28.4,23,1.5,4.1-10.4,31.9-10.4,31.9,0,0,22.4-22,30.8-28.6,5.1-4,16.2-2.5,21.5-1.5,5.4,1,59.2,12.3,113.8-17.2,32.8-17.7,34.9-22.9,34.9-22.9,0,0-27.9-19.8-75.7-13.6-47.7,6.1-89.7,38.1-97.5,39.6\"/>\n <path id=\"path26\" class=\"cls-1\"\n d=\"M1062.8,620.1c0,38.8-36.7,62.4-79.1,62.4s-31.5-2.1-50.6-2.1l31.5-198.2c20.9,0,26.7-2.6,46.7-2.6,37.1,0,54.7,19.4,54.7,43.5s-19.4,43.2-44.7,49.1c23,5,41.5,26.1,41.5,47.9M1040.8,620.7c0-19.1-13.8-38.3-56.4-38.3s-11.2.3-17.7.9l-11.8,74.1c-.9,5.6,7.4,8,29.7,8s56.2-17.1,56.2-44.8M1044.6,525.4c0-16.8-12.1-29.5-36.8-29.5s-26.2,2.4-27.3,8.2c-4.4,22.1-8.8,48.3-11.2,62.1h11.2c46.7-1.2,64.1-18,64.1-40.9\"/>\n <path id=\"path28\" class=\"cls-1\"\n d=\"M1171.1,680.4c-2.3-9.4-2.3-17.7-1.5-27.3-9.7,14.1-25,30.2-47.4,30.2s-38.5-20.8-38.5-45.8c0-41.5,32.6-95.6,79.1-95.6s20,4.7,39.4,4.7c-10.3,49.7-16.8,97.6-16.8,118.5s.5,12.4,1.2,15.3h-15.6.1ZM1162,557.4c-31.8,0-58.5,39.7-58.5,78.2s8,31.3,22,31.3c25.3,0,44.1-32.1,49.5-63.3l5.9-34.1c.9-6.7-3.2-12-18.8-12\"/>\n <path id=\"path30\" class=\"cls-1\"\n d=\"M1247.1,574.5l-16.8,105.8h-17.6l20.9-131.1c25.9,0,32.4-7.4,52.7-7.4s40.5,9.1,40.5,34.4-.3,7-.9,10.9l-14.6,93.2h-17.7l14.1-88.8c.6-3.5.9-6.8.9-9.7,0-17.1-7.3-24.4-26.7-24.4s-33.5,9.4-34.7,17.1\"/>\n <path id=\"path32\" class=\"cls-1\"\n d=\"M1418.6,557.7c-33.2,0-56.2,28.2-56.2,72.7s15,38.5,37.4,38.5,17-.8,24.1-2.6l-2.3,15.6c-7.6,1.7-15,2.6-21.7,2.6-35,0-57.2-17.9-57.2-53.8s32.1-88.8,78.9-88.8,14.7.5,21.7,1.8l-2.6,17.3c-7.3-2.3-15-3.2-22-3.2\"/>\n <path id=\"path34\" class=\"cls-1\"\n d=\"M1560.5,593.9c0,46.8-27.1,90.6-68.9,90.6s-45-18.8-45-52.1c0-47.1,27.6-90.6,68.8-90.6s45.1,19.1,45.1,52M1465.7,631.2c0,26.1,9.5,37.9,28.2,37.9s47.3-32.6,47.3-73.5-8.5-38.2-27.6-38.2c-27.1,0-48,33-48,73.8\"/>\n <path id=\"path36\" class=\"cls-1\"\n d=\"M179.3,400.2c-12.4,5.9-27.1,8.9-41.2,8.9-54.4,0-101.3-28.8-101.3-102.7s48.3-104.9,102.8-104.9,28,1.8,39.8,5.3v34.5c-12-5-25.4-8-40-8-38.3,0-65.7,19.4-65.7,72.2s29.7,71.6,65.9,71.6,27.4-2.4,39.8-7.7v30.9\"/>\n <path id=\"path38\" class=\"cls-1\"\n d=\"M228.5,335.5c0,29.7,12.9,44.4,29.1,44.4s28-13.5,28-44.4-13-44.2-29.5-44.2-27.6,13.2-27.6,44.2M320.3,335.5c0,43.2-25,73.3-63.6,73.3s-63.3-30.1-63.3-73.3,25.3-72.7,63.3-72.7,63.6,28.8,63.6,72.7\"/>\n <path id=\"path40\" class=\"cls-1\"\n d=\"M522.5,404.6h-32.5v-88c0-18.2-7-25-21.7-25s-21.2,3.5-21.2,10.2c.3,3.2.9,7.4.9,11.8v91h-32.4v-88c0-18.5-7.4-25-20-25s-21.8,2.9-21.8,12.9v100.1h-32.4v-134.9c28.6,0,37.7-6.5,58.9-6.5s26.8,4.4,33.8,10.6c10.6-6.8,24.1-10.6,41.5-10.6,28,0,46.9,12.7,46.9,48.9v92.5\"/>\n <path id=\"path42\" class=\"cls-1\"\n d=\"M597.2,290.4c-10.8,0-17.8,4.7-17.8,9.5v70.6c0,5,7.8,9.4,17.8,9.4,20.5,0,32.3-13.5,32.3-44.2s-11.8-45.3-32.3-45.3M546.3,477.9c.6-30.9,1.2-61.5,1.2-100.1v-110.4c20,0,32.7-4.7,52.3-4.7,35.7,0,65.4,25.6,65.4,73.6s-31.8,71.5-61.2,71.5-20-3-24.5-6.2v76.2h-33.2\"/>\n <path id=\"path44\" class=\"cls-1\"\n d=\"M753,337.8c-26.8.8-40.6,9.1-40.6,24.7s8.3,18,20.9,18,17.4-3.2,18.6-7.4c.9-4.4,1.1-17.6,1.1-35.3M753,313.7v-5.3c0-11.2-7.6-17.9-21.4-17.9s-28.3,2.7-43,9.4v-30.3c15.3-4.4,29.1-6.7,45.6-6.7,31.8,0,51.5,12.9,51.5,45.3s-.9,42.4-.9,64.2.6,24.2,1.5,31.5c-23.6,0-36.2,3.8-56.2,3.8-34.1,0-51.2-15.8-51.2-42.6s22.4-49.8,74.1-51.2\"/>\n <path id=\"path46\" class=\"cls-1\"\n d=\"M810.8,404.6v-137.8h30.6v13c8.2-13,22.1-17.4,35.6-17.4s10.5.6,15,1.2v34.1c-5.6-2.6-14.5-3.8-22.7-3.8-13.2,0-25,5.3-25.7,16.8-.6,23.2-.6,58.8-.6,93.9h-32.4\"/>\n <path id=\"path48\" class=\"cls-1\"\n d=\"M937.9,266.8h39.7v28.3h-39.7c0,29.1-.3,49.2-.3,70.7s6.2,14.4,17.1,14.4,15.9-1.5,22.9-5.3v28.5c-9.7,3.6-19.7,5.3-31.5,5.3-23.5,0-40.9-10.9-40.9-36.5v-130.4l32.7-19.4v44.4\"/>\n <path id=\"path50\" class=\"cls-1\"\n d=\"M1068.6,337.8c-26.8.8-40.6,9.1-40.6,24.7s8.2,18,20.9,18,17.3-3.2,18.5-7.4c.9-4.4,1.2-17.6,1.2-35.3M1068.6,313.7v-5.3c0-11.2-7.7-17.9-21.5-17.9s-28.3,2.7-43,9.4v-30.3c15.3-4.4,29-6.7,45.6-6.7,31.8,0,51.5,12.9,51.5,45.3s-.9,42.4-.9,64.2.6,24.2,1.5,31.5c-23.5,0-36.2,3.8-56.3,3.8-34.1,0-51.2-15.8-51.2-42.6s22.4-49.8,74.2-51.2\"/>\n <path id=\"path52\" class=\"cls-1\"\n d=\"M1307.8,404.6h-32.4v-88c0-18.2-7.1-25-21.8-25s-21.2,3.5-21.2,10.2c.2,3.2.9,7.4.9,11.8v91h-32.4v-88c0-18.5-7.4-25-20-25s-21.8,2.9-21.8,12.9v100.1h-32.3v-134.9c28.5,0,37.7-6.5,58.8-6.5s26.8,4.4,33.9,10.6c10.6-6.8,24.1-10.6,41.5-10.6,28,0,46.8,12.7,46.8,48.9v92.5\"/>\n <path id=\"path54\" class=\"cls-1\"\n d=\"M1363,335.5c0,29.7,13,44.4,29.2,44.4s27.9-13.5,27.9-44.4-12.9-44.2-29.4-44.2-27.8,13.2-27.8,44.2M1454.9,335.5c0,43.2-25,73.3-63.6,73.3s-63.3-30.1-63.3-73.3,25.4-72.7,63.3-72.7,63.6,28.8,63.6,72.7\"/>\n <path id=\"path56\" class=\"cls-1\"\n d=\"M1522.2,262.7c10.9,0,20,.8,31.8,4.1v30.7c-13.8-5.6-23.6-7.1-33-7.1s-18.2,4.7-18.2,11.8c0,21.2,57.6,19.1,57.6,61.5s-16.5,45-54.7,45-24.4-1.2-35.9-4.7v-28.8c11.2,3.8,24.4,5.6,33.8,5.6,15.6,0,23.5-5.9,23.5-15,0-23.3-58-19.7-58-60.1s20.1-43,53-43\"/>\n </g>\n </g>\n </svg>\n </div>\n } @else {\n <div class=\"svg-wrapper\">\n <svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\" y=\"0px\"\n viewBox=\"0 0 554 481\" style=\"enable-background:new 0 0 554 481;\" xml:space=\"preserve\">\n<style type=\"text/css\">\n\t.st0 {\n fill: none;\n }\n\n .st1 {\n fill: #E85E16;\n }\n\n .st2 {\n fill: #9D0046;\n }\n\n .st3 {\n fill: #592275;\n }\n\n .st4 {\n fill: #CD0058;\n }\n\n .st5 {\n fill: #00587F;\n }\n\n .st6 {\n fill: #229B7D;\n }\n</style>\n <rect class=\"st0\" width=\"554\" height=\"481\"/>\n <g>\n\t<path id=\"naranja\" class=\"st1\" d=\"M277.4,128.4c74.7-40.1,146.4-40,154.5-40c8.1,48,13.7,67-7.9,121.3\n\t\tc-24.2,43.8-169.9,71.1-169.9,71.1l0,0c2.7-5.3-3.7-67.7-3.7-67.7S248.6,141.8,277.4,128.4\"/>\n <path id=\"roja\" class=\"st2\" d=\"M449.8,205.7c-2.6,16-11.6,58-43.6,101.2s-99.9,85.5-138,96s-35.3,8-51.6,8\n\t\tc-10-28.6-11.3-33.9-4.9-81.3s22.9-61.8,56.5-80c24.4-10.7,48.7-17.3,73.1-25.3C379.4,213.7,417.4,208.3,449.8,205.7\"/>\n <path id=\"morada\" class=\"st3\" d=\"M236.8,95.1c18.8-8.3,43.1-16.7,70-25.2c-7.8,18.8-10.1,42.8-15.2,66.9\n\t\tc-6.6,43.2-12.8,104.4-40.2,136.6C217.9,313,127.3,348.2,127,347.6l-2.5,0c-14.4-50.4-20.6-93-15.7-125\n\t\tC116,166.4,150.6,131.2,236.8,95.1L236.8,95.1\"/>\n <path id=\"fushia\" class=\"st4\" d=\"M425.5,246h13.6c-13.5,37.3-31.4,76.2-72,105.6c-69,48.9-98.8,50.7-98.8,50.7S341.4,254,425.5,246\n\t\t\"/>\n <path id=\"azul\" class=\"st5\" d=\"M122.5,344.1L122.5,344.1c13.6,45.3,48.8,69.3,100.3,66.6c24.4-48,44-108.8,52.1-164.7\n\t\tC218,272.7,165.9,312.1,122.5,344.1\"/>\n <path id=\"verde\" class=\"st6\" d=\"M277,232.3c5.4-37.3,10.8-72,16.2-103.9C206.5,171,144.2,251,122.5,344.3\n\t\tc43.4-32,95.2-70.3,152.1-97\"/>\n</g>\n</svg>\n\n </div>\n }\n </div>\n}\n","import {Component, Input} from '@angular/core';\nimport {NgClass} from \"@angular/common\";\n\n@Component({\n selector: 'rdnd-active-indicator',\n standalone: true,\n imports: [\n NgClass\n ],\n templateUrl: './rdnd-active-indicator.component.html',\n styleUrl: './rdnd-active-indicator.component.css'\n})\nexport class RdndActiveIndicator {\n @Input() isActive: boolean = false;\n @Input() activeDisplay?: string = \"Activo\";\n @Input() inactiveDisplay?: string = \"Inactivo\";\n\n}\n","<div class=\"rdnd-active-indicator-wrapper\" [ngClass]=\"{\n active: isActive,\n inactive: !isActive\n}\">\n <span>\n @if (isActive) {\n {{ activeDisplay }}\n } @else {\n {{ inactiveDisplay }}\n }\n </span>\n</div>\n","import { Component, Input, Output, EventEmitter, OnInit, signal, HostListener, ElementRef } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { SelectOption } from '../../types/Select-option.types';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'rdnd-select',\n standalone: true,\n imports: [\n NgClass,\n FontAwesomeModule\n ],\n templateUrl: './rdnd-select.component.html',\n styleUrl: './rdnd-select.component.scss'\n})\nexport class RdndSelect implements OnInit {\n @Input() id!: string;\n @Input() name!: string;\n @Input() label: string = '';\n @Input() placeholder: string = 'Selecciona una opción';\n @Input() options: SelectOption[] = [];\n @Input() showLabel: boolean = false;\n @Input() disabled: boolean = false;\n @Input() value: string = '';\n\n @Output() valueChange = new EventEmitter<SelectOption>();\n @Output() onFocus = new EventEmitter<FocusEvent>();\n @Output() onBlur = new EventEmitter<FocusEvent>();\n\n faChevronDown = faChevronDown;\n isOpen = signal(false);\n selectedOption: SelectOption | null = null;\n dropdownDirection = signal<'down' | 'up'>('down');\n\n constructor(private elementRef: ElementRef) {}\n\n ngOnInit() {\n if (this.value && this.options.length > 0) {\n this.selectedOption = this.options.find(opt => opt.key === this.value) || null;\n }\n }\n\n toggleDropdown() {\n if (!this.disabled) {\n this.isOpen.update(v => !v);\n if (this.isOpen()) {\n this.calculateDropdownDirection();\n }\n }\n }\n\n calculateDropdownDirection() {\n setTimeout(() => {\n const element = this.elementRef.nativeElement.querySelector('.select-display');\n if (element) {\n const rect = element.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const spaceBelow = viewportHeight - rect.bottom;\n const spaceAbove = rect.top;\n const dropdownHeight = 200;\n\n if (spaceBelow < dropdownHeight && spaceAbove > spaceBelow) {\n this.dropdownDirection.set('up');\n } else if (spaceBelow < dropdownHeight) {\n this.dropdownDirection.set('up');\n } else {\n this.dropdownDirection.set('down');\n }\n }\n }, 0);\n }\n\n selectOption(option: SelectOption) {\n this.selectedOption = option;\n this.value = option.key;\n this.valueChange.emit(option);\n this.isOpen.set(false);\n }\n\n handleFocus(event: FocusEvent) {\n this.onFocus.emit(event);\n }\n\n handleBlur(event: FocusEvent) {\n this.onBlur.emit(event);\n setTimeout(() => {\n this.isOpen.set(false);\n }, 200);\n }\n\n get displayValue(): string {\n return this.selectedOption?.value || '';\n }\n}\n","<div [ngClass]=\"{ 'disabled': disabled }\" class=\"select-container\" (click)=\"toggleDropdown()\">\n\n <!-- Label flotante que interrumpe el borde -->\n @if (showLabel && label) {\n <label class=\"border-label\">{{ label }}</label>\n }\n\n <div class=\"select-wrapper\">\n <div\n class=\"select-display\"\n [class.open]=\"isOpen()\"\n [class.has-value]=\"selectedOption\"\n [class.direction-up]=\"dropdownDirection() === 'up'\"\n tabindex=\"0\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n >\n @if (selectedOption) {\n <span class=\"selected-value\">{{ selectedOption.value }}</span>\n } @else {\n <span class=\"placeholder-text\">{{ placeholder }}</span>\n }\n <fa-icon [icon]=\"faChevronDown\" class=\"chevron-icon\" [class.open]=\"isOpen()\"></fa-icon>\n </div>\n\n @if (isOpen()) {\n <div class=\"dropdown-options\" [class.direction-up]=\"dropdownDirection() === 'up'\">\n @for (option of options; track option.key) {\n <div\n class=\"option-item\"\n [class.selected]=\"selectedOption?.key === option.key\"\n (click)=\"selectOption(option); $event.stopPropagation()\"\n >\n {{ option.value }}\n </div>\n }\n </div>\n }\n </div>\n</div>\n","import {Component, Input, Output, EventEmitter} from '@angular/core';\r\nimport {NgClass} from \"@angular/common\";\r\n\r\n@Component({\r\n selector: 'rdnd-question',\r\n standalone: true,\r\n imports: [\r\n NgClass\r\n ],\r\n templateUrl: './question.component.html',\r\n styleUrl: './question.component.css',\r\n})\r\nexport class QuestionComponent {\r\n\r\n @Input() question: string = '';\r\n @Input() questionType?: 'small' | 'normal' = 'normal';\r\n @Output() onChange = new EventEmitter<boolean>();\r\n\r\n selected: boolean = true;\r\n\r\n handleChange(value: boolean) {\r\n this.onChange.emit(value);\r\n this.selected = value;\r\n }\r\n}\r\n","<div class=\"question-wrapper\">\r\n <p [ngClass]=\"{\r\n small: questionType === 'small'\r\n }\">{{ question }}</p>\r\n\r\n <div class=\"container\">\r\n <div\r\n class=\"question-chip\"\r\n (click)=\"handleChange(true)\"\r\n [ngClass]=\"{\r\n selected: selected\r\n }\"\r\n >Sí\r\n </div>\r\n <div\r\n class=\"question-chip\"\r\n (click)=\"handleChange(false)\"\r\n [ngClass]=\"{\r\n selected: !selected\r\n }\"\r\n >No\r\n </div>\r\n </div>\r\n\r\n</div>\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 pastel: {\r\n default: \"#FFD396\",\r\n hover: \"#efd5b1\",\r\n border: 'transparent',\r\n active: \"#eab16e\",\r\n fontColor: \"#707070\",\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 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[\"blue\"]}`,\r\n hover: colors[\"blue-light\"],\r\n border: 'transparent',\r\n active: colors[\"blue-dark\"],\r\n fontColor: colors.white,\r\n },\r\n\r\n borderedMagenta: {\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 borderedBlack: {\r\n default: 'white',\r\n hover: 'white',\r\n border: colors.black,\r\n active: 'white',\r\n fontColor: colors.black\r\n },\r\n borderedGray: {\r\n default: 'white',\r\n hover: 'white',\r\n border: \"#707070\",\r\n active: 'white',\r\n fontColor: \"#707070\"\r\n },\r\n borderedBlue: {\r\n default: 'white',\r\n hover: 'white',\r\n border: colors.blue,\r\n active: 'white',\r\n fontColor: colors.blue\r\n },\r\n borderedRed: {\r\n default: 'white',\r\n hover: 'white',\r\n border: \"#F44C24\",\r\n active: 'white',\r\n fontColor: \"#F44C24\"\r\n },\r\n transparentMagenta: {\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 transparentBlack: {\r\n default: 'transparent',\r\n hover: 'transparent',\r\n border: 'transparent',\r\n active: 'transparent',\r\n fontColor: colors.black\r\n },\r\n transparentGreen: {\r\n default: 'transparent',\r\n hover: 'transparent',\r\n border: 'transparent',\r\n active: 'transparent',\r\n fontColor: colors[\"green-medium\"]\r\n },\r\n\r\n};\r\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nexport interface ButtonServiceType {\n enable: () => void;\n disable: () => void;\n disabled$: Observable<boolean>\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ButtonService {\n private buttonsState: { [id: string]: BehaviorSubject<boolean> } = {};\n\n private ensureButtonExists(id: string): void {\n if (!this.buttonsState[id]) {\n this.buttonsState[id] = new BehaviorSubject<boolean>(false);\n }\n }\n\n useButton(id: string): ButtonServiceType {\n this.ensureButtonExists(id);\n\n return {\n disabled$: this.buttonsState[id].asObservable(),\n enable: () => this.buttonsState[id].next(false),\n disable: () => this.buttonsState[id].next(true),\n };\n }\n}\n","import { Component, Input, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core';\nimport { IconDefinition } from '@fortawesome/angular-fontawesome';\nimport {Observable, Subscription} from 'rxjs';\nimport {FaIconComponent} from \"@fortawesome/angular-fontawesome\";\nimport { NgClass } from \"@angular/common\";\n// @ts-ignore\nimport {themes} from \"../../styles/themes\";\nimport {ButtonService, ButtonServiceType} from \"../../hooks/button.service\";\n// @ts-ignore\n\n\n\n@Component({\n selector: 'rdnd-button',\n templateUrl: './button.component.html',\n standalone: true,\n imports: [\n FaIconComponent,\n NgClass\n],\n styleUrls: ['./button.component.scss']\n})\nexport class RdndButton implements OnInit, OnDestroy {\n @Input() id!: string;\n @Input() icon?: IconDefinition;\n @Input() text: string = 'Enviar';\n @Input() theme: any = themes.magenta;\n @Input() size: 'contained' | 'full' = 'full';\n @Input() type: 'button' | 'submit' | 'reset' = 'submit';\n @Input() borders: boolean = true;\n @Input() disabled: boolean = false;\n\n @Output() callback: EventEmitter<void> = new EventEmitter<void>();\n\n protected readonly themes = themes;\n private subscription!: Subscription;\n hoverBackgroundColor: string = this.theme.default;\n\n buttonControl!: ButtonServiceType ;\n\n constructor(private buttonService: ButtonService) {\n }\n\n ngOnInit(): void {\n this.buttonControl = this.buttonService.useButton(this.id);\n\n this.subscription = new Subscription( () =>\n this.buttonControl.disabled$.subscribe((isDisabled: boolean) => {\n this.disabled = isDisabled;\n })\n )\n\n }\n\n ngOnDestroy(): void {\n if(this.subscription){\n this.subscription.unsubscribe();\n }\n }\n\n handleClick(event: MouseEvent): void {\n event.stopPropagation();\n if (!this.disabled && this.type !== 'submit') {\n this.callback.emit();\n }\n }\n\n onMouseEnter() {\n if (!this.disabled) {\n this.hoverBackgroundColor = this.theme.hover;\n }\n }\n\n onMouseLeave() {\n if (!this.disabled) {\n this.hoverBackgroundColor = this.theme.default;\n }\n }\n\n protected readonly event = event;\n}\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 {{ text }}\r\n\r\n @if (icon) {\r\n <fa-icon [icon]=\"icon\" class=\"icon\"></fa-icon>\r\n }\r\n</button>\r\n","import { Injectable } from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport { FormControl, ValidationErrors } from '@angular/forms';\n\nexport type InputStateType = {\n isValid: BehaviorSubject<boolean>;\n valid: Observable<boolean>;\n errorMessage: Observable<string | null>;\n setValid: (isValid: boolean) => void;\n setErrorMessage: (message: string | null) => void;\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class InputService {\n\n private inputState: {\n [id: string]: {\n valid$: BehaviorSubject<boolean>;\n errorMessage$: BehaviorSubject<string | null>;\n };\n } = {};\n\n private ensureInputExists(id: string): void {\n if (!this.inputState[id]) {\n this.inputState[id] = {\n valid$: new BehaviorSubject<boolean>(false),\n errorMessage$: new BehaviorSubject<string | null>(null),\n };\n }\n }\n\n useInput(id: string): InputStateType {\n this.ensureInputExists(id);\n\n return {\n isValid: this.inputState[id].valid$,\n valid: this.inputState[id].valid$.asObservable(),\n errorMessage: this.inputState[id].errorMessage$.asObservable(),\n setValid: (isValid: boolean) => this.inputState[id].valid$.next(isValid),\n setErrorMessage: (message: string | null) =>\n this.inputState[id].errorMessage$.next(message),\n };\n }\n\n updateInputState(control: FormControl, id: string): void {\n this.ensureInputExists(id);\n\n const errors: ValidationErrors | null = control.errors;\n\n if (control.valid) {\n this.inputState[id].valid$.next(true);\n this.inputState[id].errorMessage$.next(null);\n } else {\n this.inputState[id].valid$.next(false);\n this.inputState[id].errorMessage$.next(this.getErrorMessage(errors));\n }\n }\n\n private getErrorMessage(errors: ValidationErrors | null): string | null {\n if (!errors) return null;\n\n if (errors['required']) return 'Este campo es obligatorio';\n if (errors['minlength'])\n return `Mínimo ${errors['minlength'].requiredLength} caracteres requeridos`;\n if (errors['maxlength'])\n return `Máximo ${errors['maxlength'].requiredLength} caracteres permitidos`;\n if (errors['email']) return 'Formato de correo inválido';\n\n return null;\n }\n}\n","import {Component, Input, Output, EventEmitter, OnInit, signal, computed, effect} from '@angular/core';\nimport {FormControl, ReactiveFormsModule, ValidationErrors, ValidatorFn, Validators} from '@angular/forms';\nimport {faEyeSlash} from '@fortawesome/free-solid-svg-icons';\nimport {NgClass} from '@angular/common';\nimport {FontAwesomeModule} from '@fortawesome/angular-fontawesome';\nimport {InputService} from \"../../hooks/input.service\";\n\n\n@Component({\n selector: 'rdnd-input',\n templateUrl: './input.component.html',\n standalone: true,\n imports: [\n NgClass,\n FontAwesomeModule,\n ReactiveFormsModule\n ],\n styleUrls: ['./input.component.scss']\n})\nexport class RdndInput implements OnInit {\n @Input() id!: string;\n @Input() name!: string;\n @Input() type: 'text' | 'password' | 'number' | 'date' = 'text';\n @Input() label: string = '';\n @Input() placeholder: string = '';\n @Input() showLabel: boolean = false;\n @Input() validators: ValidatorFn[] = [];\n @Input() disabled: boolean = false;\n\n // Input para valor inicial\n @Input() set value(val: string) {\n this.internalValue.set(val);\n const ctrl = this.internalControl();\n if (ctrl && val !== undefined) {\n ctrl.setValue(val);\n }\n }\n\n // Output para valueChange (two-way binding compatible)\n @Output() valueChange = new EventEmitter<string>();\n\n // Outputs adicionales\n @Output() onKeyDown = new EventEmitter<KeyboardEvent>();\n @Output() onPaste = new EventEmitter<ClipboardEvent>();\n @Output() onFocus = new EventEmitter<FocusEvent>();\n @Output() onBlur = new EventEmitter<FocusEvent>();\n\n // Internal signals\n internalValue = signal<string>('');\n faEyeSlash = faEyeSlash;\n showPassword = signal(false);\n showError = signal(false);\n touched = signal(false);\n\n internalControl = signal<FormControl | null>(null);\n\n hasError = computed(() => {\n const ctrl = this.internalControl();\n return !!ctrl && ctrl.invalid && (ctrl.dirty || this.touched());\n });\n\n shouldShowErrorMessage = computed(() => {\n const ctrl = this.internalControl();\n return !!ctrl && ctrl.invalid && ctrl.dirty && this.showError();\n });\n\n errorMessage = computed(() => {\n const ctrl = this.internalControl();\n if (ctrl && ctrl.errors) {\n const errorKeys = Object.keys(ctrl.errors);\n if (errorKeys.length > 0) {\n return this.getErrorMessageText(ctrl.errors as ValidationErrors);\n }\n }\n return null;\n });\n\n constructor(private inputService: InputService) {\n effect(() => {\n const ctrl = this.internalControl();\n if (ctrl) {\n ctrl.valueChanges.subscribe((value) => {\n this.internalValue.set(value ?? '');\n this.valueChange.emit(value ?? '');\n this.inputService.updateInputState(ctrl, this.id);\n });\n }\n });\n }\n\n ngOnInit() {\n const ctrl = new FormControl(this.internalValue(), this.validators);\n this.internalControl.set(ctrl);\n }\n\n private getErrorMessageText(errors: ValidationErrors): string | null {\n if (errors['required']) return 'Este campo es obligatorio';\n if (errors['minlength']) return `Mínimo ${errors['minlength'].requiredLength} caracteres requeridos`;\n if (errors['maxlength']) return `Máximo ${errors['maxlength'].requiredLength} caracteres permitidos`;\n if (errors['email']) return 'Formato de correo inválido';\n return null;\n }\n\n toggleErrorDisplay() {\n this.showError.update(v => !v);\n }\n\n handleTogglePassword(): void {\n this.showPassword.update(v => !v);\n }\n\n handleChange(event: Event) {\n const e = event.target as HTMLInputElement;\n this.internalValue.set(e.value);\n const ctrl = this.internalControl();\n if (ctrl) {\n ctrl.setValue(e.value);\n }\n this.valueChange.emit(e.value);\n }\n\n handleKeyDown(event: KeyboardEvent): void {\n const allowRegex = /^[a-zA-Z!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]*$/;\n\n if (\n this.type === 'number' && !(\n ['Backspace', 'Shift', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(event.key)\n ) && !(event.altKey || event.ctrlKey || event.metaKey || event.shiftKey)\n ) {\n event.key.match(allowRegex) ? event.preventDefault() : this.onKeyDown.emit(event);\n } else {\n this.onKeyDown.emit(event);\n }\n }\n\n handlePaste(event: ClipboardEvent): void {\n this.onPaste.emit(event);\n }\n\n handleFocus(event: FocusEvent): void {\n this.onFocus.emit(event);\n }\n\n handleBlur(event: FocusEvent): void {\n this.touched.set(true);\n this.onBlur.emit(event);\n }\n}\n","<div [ngClass]=\"{ 'disabled': disabled }\" class=\"input-container\">\n\n <!-- Ícono de error que aparece por encima del campo si hay error -->\n @if (hasError()) {\n <span class=\"error-icon\" (click)=\"toggleErrorDisplay()\" tabindex=\"4\">&#9432;</span>\n }\n\n <!-- Botón de mostrar/ocultar contraseña centrado verticalmente -->\n @if (type == 'password') {\n <button type=\"button\" (click)=\"handleTogglePassword()\" class=\"toggle-button\" tabindex=\"4\">\n <fa-icon [icon]=\"faEyeSlash\" class=\"icon\" [class.active]=\"showPassword()\"></fa-icon>\n </button>\n }\n\n <!-- Label flotante que interrumpe el borde -->\n @if (showLabel && label) {\n <label class=\"border-label\">{{ label }}</label>\n }\n\n <input\n [type]=\"type === 'password' && showPassword() ? 'text' : type\"\n [value]=\"internalValue()\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n (input)=\"handleChange($event)\"\n (keydown)=\"handleKeyDown($event)\"\n (paste)=\"handlePaste($event)\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n [ngClass]=\"{ 'error-border': hasError() }\"\n tabindex=\"1\"\n />\n\n <!-- Mensaje de error que aparece solo cuando se clickea en el ícono de error -->\n @if (shouldShowErrorMessage()) {\n <div class=\"error-message\">\n {{ errorMessage() }}\n </div>\n }\n</div>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\nimport {IconDefinition} from '@fortawesome/angular-fontawesome';\nimport {themes} from \"../../styles/themes\";\nimport {FontAwesomeModule} from '@fortawesome/angular-fontawesome';\nimport {RdndButton} from \"../button/button.component\";\n\n@Component({\n selector: 'rdnd-modal',\n standalone: true,\n imports: [\n FontAwesomeModule,\n RdndButton\n ],\n templateUrl: './modal.component.html',\n styleUrl: './modal.component.scss'\n})\nexport class RdndModal {\n @Input() title: string = '';\n @Input() type: 'success' | 'error' | 'question' | 'warning' | 'info' = 'success';\n @Input() theme: any = themes.magenta;\n @Input() confirmText: string = '';\n @Input() cancelText: string = '';\n @Output() close = new EventEmitter<boolean>();\n\n protected readonly themes = themes;\n\n icon?: IconDefinition;\n content: string = '';\n\n closeModal(result: boolean) {\n this.close.emit(result);\n }\n\n constructor() {\n }\n\n}\n","<div class=\"modal-wrapper\">\n\n <div class=\"container\" (click)=\"$event.stopPropagation()\">\n\n <div class=\"content\">\n\n @if (icon != undefined) {\n <fa-icon [icon]=\"icon\" class=\"icon\" [style.color]=\"theme.default\"\n />\n }\n\n <span class=\"subtitle align-center\">{{ title }}</span>\n\n <div class=\"text align-center\" [innerHTML]=\"content\">\n </div>\n\n\n @if (type !== 'question') {\n <rdnd-button\n [id]=\"'btn-modal'\"\n [type]=\"'button'\"\n (callback)=\"closeModal(true)\"\n [text]=\"'Aceptar'\"\n [theme]=\"theme\"\n [size]=\"'full'\"\n />\n } @else {\n <rdnd-button\n [id]=\"'btn-modal-accept'\"\n [type]=\"'button'\"\n (callback)=\"closeModal(true)\"\n [text]=\"confirmText\"\n [theme]=\"theme\"\n [size]=\"'full'\"\n />\n <rdnd-button\n [id]=\"'btn-modal-cancel'\"\n [type]=\"'button'\"\n (callback)=\"closeModal(false)\"\n [text]=\"cancelText\"\n [theme]=\"themes.borderedMagenta\"\n [size]=\"'full'\"\n />\n }\n\n </div>\n\n\n </div>\n</div>\n\n","import {\n Injectable,\n ComponentRef,\n ApplicationRef,\n Injector,\n ViewContainerRef\n} from '@angular/core';\nimport {RdndModal} from \"../components/modal/modal.component\";\nimport {\n faCircleCheck,\n faCircleInfo,\n faCircleQuestion,\n faCircleXmark,\n IconDefinition\n} from '@fortawesome/free-solid-svg-icons';\nimport {faTriangleExclamation} from \"@fortawesome/free-solid-svg-icons/faTriangleExclamation\";\nimport {rdndThemes} from \"../../public-api\";\nimport {faQuestion} from \"@fortawesome/free-solid-svg-icons/faQuestion\";\nimport {faTable} from \"@fortawesome/free-solid-svg-icons/faTable\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ModalService {\n\n private modalRef: ComponentRef<RdndModal> | null = null;\n private viewContainerRef!: ViewContainerRef\n\n constructor(\n private appRef: ApplicationRef,\n private injector: Injector\n ) { }\n\n\n setViewContainerRef(vcr: ViewContainerRef) {\n this.viewContainerRef = vcr;\n }\n\n\n openModal(\n title: string,\n content: string,\n type: 'success' | 'error' | 'question' | 'warning' | 'info' = 'success',\n confirmText = 'Continuar',\n cancelText = 'Cancelar'\n ): Promise<boolean> {\n if (this.modalRef || !this.viewContainerRef) return Promise.resolve(false);\n\n this.modalRef = this.viewContainerRef.createComponent(RdndModal);\n\n this.modalRef.instance.title = title;\n this.modalRef.instance.type = type;\n this.modalRef.instance.theme = this.getStyleTheme(type);\n this.modalRef.instance.content = content;\n this.modalRef.instance.icon = this.getIcon(type);\n this.modalRef.instance.confirmText = confirmText;\n this.modalRef.instance.cancelText = cancelText;\n\n const result = new Promise<boolean>((resolve) => {\n this.modalRef!.instance.close.subscribe((res: boolean) => {\n this.closeModal();\n resolve(res);\n });\n });\n\n this.appRef.attachView(this.modalRef.hostView);\n const domElem = (this.modalRef.hostView as any).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n\n return result;\n }\n\n getStyleTheme = (theme: 'success' | 'error' | 'question' | 'warning' | 'info') => {\n switch (theme) {\n case \"success\":\n return rdndThemes.green;\n case 'error':\n return rdndThemes.magentaNormal;\n case 'question':\n return rdndThemes.purple\n case 'warning':\n return rdndThemes.yellow\n case 'info':\n return rdndThemes.purple\n }\n }\n\n closeModal(): void {\n if (this.modalRef) {\n this.appRef.detachView(this.modalRef.hostView);\n this.modalRef.destroy();\n this.modalRef = null;\n }\n }\n\n getIcon(theme: 'success' | 'error' | 'question' | 'warning' | 'info'): IconDefinition {\n switch (theme) {\n case 'error':\n return faTriangleExclamation;\n case 'question':\n return faCircleQuestion\n case \"success\":\n return faCircleCheck\n case \"warning\":\n return faTriangleExclamation;\n case \"info\":\n return faCircleInfo;\n }\n\n }\n\n}\n","import {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StorageService {\n\n constructor() {\n }\n\n public save(key: string, value: any) {\n sessionStorage.setItem(key, JSON.stringify(value));\n };\n\n public get(key: string): JSON | null {\n const data = sessionStorage.getItem(key);\n if (data !== null) {\n return JSON.parse(data);\n } else {\n return null;\n }\n }\n\n public delete(key: string): void {\n sessionStorage.removeItem(key);\n }\n public wipe(): void {\n sessionStorage.clear();\n }\n\n}\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\nexport * from \"./lib/components/rdnd-loader/rdnd-loader.component\";\r\nexport * from \"./lib/components/rdnd-active-indicator/rdnd-active-indicator.component\";\r\nexport * from \"./lib/components/rdnd-select/rdnd-select.component\";\r\nexport * from \"./lib/components/rdnd-question/question.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\nexport {colors} from './lib/styles/colors';\r\nexport {RDND_CONFIG} from \"./lib/config/rdnd-config.token\";\r\n\r\n\r\n// Export types\r\nexport {RdndSidebarItem} from \"./lib/types/Sidebar.types\";\r\nexport {LoaderConfig} from \"./lib/types/Loader-config.types\";\r\nexport {SelectOption} from \"./lib/types/Select-option.types\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ButtonService","i1.InputService","rdndThemes"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gentera-rdnd",
3
- "version": "2.0.3",
3
+ "version": "2.0.5",
4
4
  "license": "MIT",
5
5
  "description": "Librería Angular para componentes reutilizables en Gentera para Angular 22",
6
6
  "author": "Ruben Redondo Barroso",
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnInit, EventEmitter, OnDestroy, OnChanges, SimpleChanges, ApplicationRef, Injector, ViewContainerRef, InjectionToken } from '@angular/core';
2
+ import { OnInit, EventEmitter, ElementRef, OnDestroy, ApplicationRef, Injector, ViewContainerRef, InjectionToken } from '@angular/core';
3
3
  import * as _fortawesome_fontawesome_common_types from '@fortawesome/fontawesome-common-types';
4
4
  import { IconDefinition } from '@fortawesome/angular-fontawesome';
5
5
  import { Observable, BehaviorSubject } from 'rxjs';
@@ -94,6 +94,7 @@ interface SelectOption {
94
94
  }
95
95
 
96
96
  declare class RdndSelect implements OnInit {
97
+ private elementRef;
97
98
  id: string;
98
99
  name: string;
99
100
  label: string;
@@ -106,10 +107,13 @@ declare class RdndSelect implements OnInit {
106
107
  onFocus: EventEmitter<FocusEvent>;
107
108
  onBlur: EventEmitter<FocusEvent>;
108
109
  faChevronDown: _fortawesome_fontawesome_common_types.IconDefinition;
109
- isOpen: boolean;
110
+ isOpen: i0.WritableSignal<boolean>;
110
111
  selectedOption: SelectOption | null;
112
+ dropdownDirection: i0.WritableSignal<"down" | "up">;
113
+ constructor(elementRef: ElementRef);
111
114
  ngOnInit(): void;
112
115
  toggleDropdown(): void;
116
+ calculateDropdownDirection(): void;
113
117
  selectOption(option: SelectOption): void;
114
118
  handleFocus(event: FocusEvent): void;
115
119
  handleBlur(event: FocusEvent): void;
@@ -318,7 +322,7 @@ declare class InputService {
318
322
  static ɵprov: i0.ɵɵInjectableDeclaration<InputService>;
319
323
  }
320
324
 
321
- declare class RdndInput implements OnInit, OnChanges {
325
+ declare class RdndInput implements OnInit {
322
326
  private inputService;
323
327
  id: string;
324
328
  name: string;
@@ -326,25 +330,27 @@ declare class RdndInput implements OnInit, OnChanges {
326
330
  label: string;
327
331
  placeholder: string;
328
332
  showLabel: boolean;
329
- control?: FormControl;
330
- value: string;
331
333
  validators: ValidatorFn[];
332
334
  disabled: boolean;
335
+ set value(val: string);
333
336
  valueChange: EventEmitter<string>;
334
337
  onKeyDown: EventEmitter<KeyboardEvent>;
335
338
  onPaste: EventEmitter<ClipboardEvent>;
336
339
  onFocus: EventEmitter<FocusEvent>;
337
340
  onBlur: EventEmitter<FocusEvent>;
341
+ internalValue: i0.WritableSignal<string>;
338
342
  faEyeSlash: _fortawesome_fontawesome_common_types.IconDefinition;
339
- showPassword: boolean;
340
- showError: boolean;
343
+ showPassword: i0.WritableSignal<boolean>;
344
+ showError: i0.WritableSignal<boolean>;
345
+ touched: i0.WritableSignal<boolean>;
346
+ internalControl: i0.WritableSignal<FormControl<any> | null>;
347
+ hasError: i0.Signal<boolean>;
348
+ shouldShowErrorMessage: i0.Signal<boolean>;
349
+ errorMessage: i0.Signal<string | null>;
341
350
  constructor(inputService: InputService);
342
351
  ngOnInit(): void;
343
- ngOnChanges(changes: SimpleChanges): void;
344
- getErrorMessage(): string | null;
352
+ private getErrorMessageText;
345
353
  toggleErrorDisplay(): void;
346
- hasError(): boolean;
347
- shouldShowErrorMessage(): boolean;
348
354
  handleTogglePassword(): void;
349
355
  handleChange(event: Event): void;
350
356
  handleKeyDown(event: KeyboardEvent): void;
@@ -352,7 +358,7 @@ declare class RdndInput implements OnInit, OnChanges {
352
358
  handleFocus(event: FocusEvent): void;
353
359
  handleBlur(event: FocusEvent): void;
354
360
  static ɵfac: i0.ɵɵFactoryDeclaration<RdndInput, never>;
355
- static ɵcmp: i0.ɵɵComponentDeclaration<RdndInput, "rdnd-input", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "type": { "alias": "type"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "showLabel": { "alias": "showLabel"; "required": false; }; "control": { "alias": "control"; "required": false; }; "value": { "alias": "value"; "required": false; }; "validators": { "alias": "validators"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "valueChange": "valueChange"; "onKeyDown": "onKeyDown"; "onPaste": "onPaste"; "onFocus": "onFocus"; "onBlur": "onBlur"; }, never, never, true, never>;
361
+ static ɵcmp: i0.ɵɵComponentDeclaration<RdndInput, "rdnd-input", never, { "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "type": { "alias": "type"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "showLabel": { "alias": "showLabel"; "required": false; }; "validators": { "alias": "validators"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; "onKeyDown": "onKeyDown"; "onPaste": "onPaste"; "onFocus": "onFocus"; "onBlur": "onBlur"; }, never, never, true, never>;
356
362
  }
357
363
 
358
364
  declare class RdndModal {