ui-core-abv 0.4.7 → 0.4.75
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-core-abv.mjs","sources":["../../../projects/ui-core/src/lib/components/button/button.component.ts","../../../projects/ui-core/src/lib/components/button/button.component.html","../../../projects/ui-core/src/lib/components/dynamic-form/base-value-accessot.ts","../../../projects/ui-core/src/lib/components/inputs/input-wrapper/input-wrapper.component.ts","../../../projects/ui-core/src/lib/components/inputs/input-wrapper/input-wrapper.component.html","../../../projects/ui-core/src/lib/components/inputs/checkbox/checkbox.component.ts","../../../projects/ui-core/src/lib/components/inputs/checkbox/checkbox.component.html","../../../projects/ui-core/src/lib/components/inputs/toggle-button/toggle-button.component.ts","../../../projects/ui-core/src/lib/components/inputs/toggle-button/toggle-button.component.html","../../../projects/ui-core/src/lib/components/inputs/select/select.component.ts","../../../projects/ui-core/src/lib/components/inputs/select/select.component.html","../../../projects/ui-core/src/lib/components/inputs/input/input.component.ts","../../../projects/ui-core/src/lib/components/inputs/input/input.component.html","../../../projects/ui-core/src/lib/components/inputs/ui-radio/ui-radio.component.ts","../../../projects/ui-core/src/lib/components/inputs/ui-radio/ui-radio.component.html","../../../projects/ui-core/src/lib/components/inputs/ui-slider/ui-slider.component.ts","../../../projects/ui-core/src/lib/components/inputs/ui-slider/ui-slider.component.html","../../../projects/ui-core/src/lib/components/inputs/date-picker/date-picker.component.ts","../../../projects/ui-core/src/lib/components/inputs/date-picker/date-picker.component.html","../../../projects/ui-core/src/lib/components/pool-options/pool-options.component.ts","../../../projects/ui-core/src/lib/components/pool-options/pool-options.component.html","../../../projects/ui-core/src/lib/components/inputs/uic-searcher/uic-searcher.component.ts","../../../projects/ui-core/src/lib/components/inputs/uic-searcher/uic-searcher.component.html","../../../projects/ui-core/src/lib/components/inputs/multy-select/multy-select.component.ts","../../../projects/ui-core/src/lib/components/inputs/multy-select/multy-select.component.html","../../../projects/ui-core/src/lib/components/inputs/time-picker/time-picker.component.ts","../../../projects/ui-core/src/lib/components/inputs/time-picker/time-picker.component.html","../../../projects/ui-core/src/lib/components/inputs/phone-input/phone-countries.data.ts","../../../projects/ui-core/src/lib/components/inputs/phone-input/phone-input.component.ts","../../../projects/ui-core/src/lib/components/inputs/phone-input/phone-input.component.html","../../../projects/ui-core/src/lib/components/inputs/file-input/file-input.component.ts","../../../projects/ui-core/src/lib/components/inputs/file-input/file-input.component.html","../../../projects/ui-core/src/lib/components/push-alerts/alert.helpers.ts","../../../projects/ui-core/src/lib/services/push-alert.service.ts","../../../projects/ui-core/src/lib/components/dynamic-form/form/dynamic-form.component.ts","../../../projects/ui-core/src/lib/components/dynamic-form/form/dynamic-form.component.html","../../../projects/ui-core/src/lib/components/skeleton-loader/skeleton-loader.component.ts","../../../projects/ui-core/src/lib/components/skeleton-loader/skeleton-loader.component.html","../../../projects/ui-core/src/lib/components/dynamic-form/form-wrapper/form-wrapper.component.ts","../../../projects/ui-core/src/lib/components/dynamic-form/form-wrapper/form-wrapper.component.html","../../../projects/ui-core/src/lib/components/dynamic-form/steps-form/step-tabs/step-tabs.component.ts","../../../projects/ui-core/src/lib/components/dynamic-form/steps-form/step-tabs/step-tabs.component.html","../../../projects/ui-core/src/lib/components/dynamic-form/steps-form/steps-form.component.ts","../../../projects/ui-core/src/lib/components/dynamic-form/steps-form/steps-form.component.html","../../../projects/ui-core/src/lib/components/inputs/multy-searcher/multy-searcher.component.ts","../../../projects/ui-core/src/lib/components/inputs/multy-searcher/multy-searcher.component.html","../../../projects/ui-core/src/lib/components/dropdown-container/dropdown-container.component.ts","../../../projects/ui-core/src/lib/components/dropdown-container/dropdown-container.component.html","../../../projects/ui-core/src/lib/components/dropdown-container/dropdown-close.directive.ts","../../../projects/ui-core/src/lib/animations/fadeAndRise.animation.ts","../../../projects/ui-core/src/lib/components/tooltip/tooltip.component.ts","../../../projects/ui-core/src/lib/components/tooltip/tooltip.component.html","../../../projects/ui-core/src/lib/directives/tool-tip.directive.ts","../../../projects/ui-core/src/lib/components/table/table-searcher/table-searcher.component.ts","../../../projects/ui-core/src/lib/components/table/table-searcher/table-searcher.component.html","../../../projects/ui-core/src/lib/components/table/table-pagination/table-pagination.component.ts","../../../projects/ui-core/src/lib/components/table/table-pagination/table-pagination.component.html","../../../projects/ui-core/src/lib/animations/highlightRow.animation.ts","../../../projects/ui-core/src/lib/animations/animatedRow.animation.ts","../../../projects/ui-core/src/lib/components/uic-action-button/uic-action-button.component.ts","../../../projects/ui-core/src/lib/components/uic-action-button/uic-action-button.component.html","../../../projects/ui-core/src/lib/components/table/table-list/table-list.component.ts","../../../projects/ui-core/src/lib/components/table/table-list/table-list.component.html","../../../projects/ui-core/src/lib/pipes/name-inits.pipe.ts","../../../projects/ui-core/src/lib/components/table/table-user/table-user.component.ts","../../../projects/ui-core/src/lib/components/table/table-user/table-user.component.html","../../../projects/ui-core/src/lib/components/status-label/status-label.component.ts","../../../projects/ui-core/src/lib/components/status-label/status-label.component.html","../../../projects/ui-core/src/lib/services/modal.constant.ts","../../../projects/ui-core/src/lib/services/modaRef.ts","../../../projects/ui-core/src/lib/components/tiny-alert/tiny-alert.component.ts","../../../projects/ui-core/src/lib/components/tiny-alert/tiny-alert.component.html","../../../projects/ui-core/src/lib/animations/pushTop.animation.ts","../../../projects/ui-core/src/lib/components/modal/floating-modal/modal.component.ts","../../../projects/ui-core/src/lib/components/modal/floating-modal/modal.component.html","../../../projects/ui-core/src/lib/animations/sideModal.animation.ts","../../../projects/ui-core/src/lib/components/modal/side-modal/side-modal.component.ts","../../../projects/ui-core/src/lib/components/modal/side-modal/side-modal.component.html","../../../projects/ui-core/src/lib/services/modal.service.ts","../../../projects/ui-core/src/lib/components/push-alerts/tynyalert.helpers.ts","../../../projects/ui-core/src/lib/services/tiny-alert.service.ts","../../../projects/ui-core/src/lib/components/item-value/item-value.component.ts","../../../projects/ui-core/src/lib/components/item-value/item-value.component.html","../../../projects/ui-core/src/lib/components/uic-portlet-card/uic-portlet-card.component.ts","../../../projects/ui-core/src/lib/components/uic-portlet-card/uic-portlet-card.component.html","../../../projects/ui-core/src/lib/components/short-table/short-table.component.ts","../../../projects/ui-core/src/lib/components/short-table/short-table.component.html","../../../projects/ui-core/src/lib/helpers.ts","../../../projects/ui-core/src/lib/components/table/table.component.ts","../../../projects/ui-core/src/lib/components/table/table.component.html","../../../projects/ui-core/src/lib/components/table/table.models.ts","../../../projects/ui-core/src/lib/components/push-alerts/alert/alert.component.ts","../../../projects/ui-core/src/lib/components/push-alerts/alert/alert.component.html","../../../projects/ui-core/src/lib/components/push-alerts/alert-container/alert-container.component.ts","../../../projects/ui-core/src/lib/components/push-alerts/alert-container/alert-container.component.html","../../../projects/ui-core/src/lib/components/signature-pad/signature-pad.component.ts","../../../projects/ui-core/src/lib/components/signature-pad/signature-pad.component.html","../../../projects/ui-core/src/lib/components/kpi-card/kpi-card.component.ts","../../../projects/ui-core/src/lib/components/kpi-card/kpi-card.component.html","../../../projects/ui-core/src/lib/components/tabs-button/tabs-button.component.ts","../../../projects/ui-core/src/lib/components/tabs-button/tabs-button.component.html","../../../projects/ui-core/src/lib/components/work-panel/work-panel.component.ts","../../../projects/ui-core/src/lib/components/work-panel/work-panel.component.html","../../../projects/ui-core/src/lib/components/overlay-card/overlay-card.component.ts","../../../projects/ui-core/src/lib/components/overlay-card/overlay-card.component.html","../../../projects/ui-core/src/lib/components/accordion/accordion.component.ts","../../../projects/ui-core/src/lib/components/accordion/accordion.component.html","../../../projects/ui-core/src/lib/components/tag-selector/tag-selector.component.ts","../../../projects/ui-core/src/lib/components/tag-selector/tag-selector.component.html","../../../projects/ui-core/src/lib/animations/simpleFade.animation.ts","../../../projects/ui-core/src/lib/pipes/first-capital.pipe.ts","../../../projects/ui-core/src/public-api.ts","../../../projects/ui-core/src/ui-core-abv.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, Input, SimpleChange, SimpleChanges } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-button',\r\n imports: [CommonModule],\r\n templateUrl: './button.component.html',\r\n styleUrl: './button.component.scss'\r\n})\r\nexport class UicButtonComponent {\r\n @Input() text='';\r\n @Input() icon='';\r\n @Input() rightIcon='';\r\n @Input() iconOnly=false;\r\n @Input() disabled=false;\r\n @Input() loading=false; \r\n @Input() size: ButtonSize = 'm';\r\n @Input() type: ButtonType = 'filled'; \r\n @Input() color:ButtonColor = 'primary';\r\n \r\n buttonTypeClass = \"\";\r\n \r\n ngOnInit(){\r\n this.buttonTypeClass = 'btn-' + this.type + ' btn-' + this.color + \"-\" + this.type;\r\n }\r\n\r\n ngOnChange(sc:SimpleChanges){\r\n if ( sc['type'] ){\r\n this.buttonTypeClass = 'btn-' + this.type + ' btn-' + this.color + \"-\" + this.type;\r\n }\r\n }\r\n}\r\nexport type ButtonColor = 'primary'|'secondary'|'red'|'green'|'blue'|'yellow' | 'black' | 'grey' | 'white';\r\nexport type ButtonSize = 't' | 's'|'m'|'l'| 'g';\r\nexport type ButtonType = 'filled' | 'bordered' | 'ghost';","<button\r\n type=\"button\"\r\n [class]=\"'main-btn ' + buttonTypeClass\"\r\n [disabled]=\"disabled\"\r\n [ngClass]=\"{\r\n 'btn-tiny' :size=='t',\r\n 'btn-small' :size=='s', \r\n 'btn-medium' :size=='m',\r\n 'btn-large' :size=='l', \r\n 'btn-gigant' :size=='g'\r\n }\" >\r\n \r\n @if (icon!='' && !loading ) {\r\n <i class=\"{{icon}}\"></i>\r\n }\r\n @if (loading) {\r\n <div class=\"loader-container\"> <div class=\"loader\"></div> </div>\r\n }\r\n @if (!iconOnly) {\r\n <div class=\"btn-text\" [class.norighticon]=\"rightIcon==''\" [class.noicon]=\"icon==''\">\r\n {{text}}\r\n <ng-content ></ng-content>\r\n </div>\r\n }\r\n @if (rightIcon!='' ) {\r\n <i class=\"{{rightIcon}}\"></i>\r\n }\r\n</button>","import { ControlValueAccessor } from '@angular/forms';\r\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nexport function createValueAccessor<T>() {\r\n @Directive()\r\n abstract class BaseValueAccessor implements ControlValueAccessor {\r\n @Input() value!: T;\r\n @Output() valueChange = new EventEmitter<T>();\r\n\r\n onChange: (value: T) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n writeValue(obj: T): void {\r\n this.value = obj;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n (this as any).disabled = isDisabled;\r\n }\r\n\r\n notifyChange(value: T) {\r\n this.value = value;\r\n this.valueChange.emit(value);\r\n this.onChange(value);\r\n this.onTouched();\r\n }\r\n }\r\n\r\n return BaseValueAccessor;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { ButtonColor } from '../../button/button.component';\r\n\r\n@Component({\r\n selector: 'ui-input-wrapper',\r\n imports: [CommonModule],\r\n templateUrl: './input-wrapper.component.html',\r\n styleUrl: '../input.component.scss'\r\n})\r\nexport class InputWrapperComponent {\r\n @Input() icon = ''; \r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n @Input() disabled = false;\r\n}\r\n","<div class=\"input-wrapper\">\r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{iconColor}} {{icon}}\"></i>\r\n }\r\n <div class=\"input-elements\" [style]=\"icon?'max-width: calc(100% - 34px);':''\">\r\n \r\n @if (label) {\r\n <div class=\"label inputlabel\" [class.font-error]=\"error\">\r\n {{label}} \r\n </div>\r\n }\r\n <ng-content></ng-content>\r\n @if (error) {\r\n <div class=\"fakeinput-alert f-red\">{{error}}</div>\r\n }\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n </div>\r\n</div>\r\n","import { Component, forwardRef, Input } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { ButtonColor } from '../../button/button.component';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\nconst base = createValueAccessor<boolean>();\r\n\r\n@Component({\r\n selector: 'ui-checkbox',\r\n imports: [InputWrapperComponent],\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss','../input.component.scss'],\r\n providers:[\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicCheckboxComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicCheckboxComponent extends base{\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() label = '';\r\n @Input() tip = '';\r\n @Input() type: 'checkbox'|'switch' = 'checkbox';\r\n @Input() placeholder = '';\r\n @Input() loading = false;\r\n @Input() noPadding = false;\r\n \r\n @Input() disabled = false;\r\n\r\n toggle() {\r\n if (!this.disabled && !this.loading){\r\n this.notifyChange(!this.value);\r\n }\r\n }\r\n \r\n}\r\n","\r\n<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\"\r\n>\r\n <div [class.check-form-container]=\"!noPadding\">\r\n <div (click)=\"toggle()\" class=\"check-wrapper\">\r\n @if (type=='checkbox') {\r\n <button\r\n type=\"button\"\r\n class=\"checkbox\"\r\n [disabled]=\"disabled\"\r\n [class.checked]=\"value\"\r\n [class.placeholder-space]=\"placeholder!=''\"\r\n [disabled]=\"disabled\"\r\n (keydown.enter)=\"toggle()\"\r\n (keydown.space)=\"toggle()\"\r\n >\r\n <span class=\"icon\">\r\n @if (value) {\r\n ✔\r\n }@else {\r\n −\r\n }\r\n </span>\r\n </button>\r\n }@else{\r\n <button\r\n type=\"button\"\r\n class=\"toggle\"\r\n [class.checked]=\"value\"\r\n [disabled]=\"disabled\"\r\n >\r\n <span class=\"thumb\"></span>\r\n </button>\r\n }\r\n @if (placeholder) {\r\n <span class=\"check-placeholder\">{{placeholder}}</span>\r\n }\r\n \r\n <ng-content></ng-content> \r\n </div>\r\n </div>\r\n</ui-input-wrapper>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-switch',\r\n imports: [],\r\n templateUrl: './toggle-button.component.html',\r\n styleUrls: ['./toggle-button.component.scss','../input.component.scss']\r\n})\r\nexport class UicSwichComponent {\r\n @Input() checked = false;\r\n @Output() checkedChange = new EventEmitter<boolean>();\r\n @Input() disabled = false;\r\n @Input() placeholder = '';\r\n @Input() label = '';\r\n\r\n \r\n\r\n toggle() {\r\n if (this.disabled) return;\r\n this.checked = !this.checked;\r\n this.checkedChange.emit(this.checked);\r\n }\r\n}\r\n","<button\r\n type=\"button\"\r\n class=\"toggle\"\r\n [class.checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n (click)=\"toggle()\"\r\n>\r\n <span class=\"thumb\"></span>\r\n</button>","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, forwardRef, inject, Input, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { ButtonColor } from '../../button/button.component';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\ntype selectId = number|string|null;\r\nconst base = createValueAccessor<selectId>();\r\n\r\n@Component({\r\n selector: 'ui-select',\r\n imports: [InputWrapperComponent, CommonModule],\r\n templateUrl: './select.component.html',\r\n styleUrl: '../input.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicSelectComponent extends base{\r\n \r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() internalIconColor: ButtonColor = 'black'; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXT\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n @Input() showSubtitle = false;\r\n @Input() disabled = false;\r\n @Input() nonSelectedText = '- Seleccionar -';\r\n @Input() noneText = '- Ninguno -';\r\n @Input() emptyText = 'No hay elementos para mostrar';\r\n // FUNCTIONS\r\n @Input() loading = false;\r\n @Input() nullable = false;\r\n @Input() options:AppSelectOption[] = []; \r\n \r\n @ViewChild('dropdownTemplate') dropdownTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n overlayPositions: ConnectedPosition[] =[\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]\r\n \r\n selectedOption: AppSelectOption | null = null;\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['options'] && this.value != null) {\r\n // Resetear valor seleccionado\r\n this.selectedOption = this.options.find(opt => opt.id === this.value) ?? null;\r\n }\r\n }\r\n\r\n // --- Overlay ---\r\n openList(){\r\n if (this.disabled || this.loading) return;\r\n\r\n if (this.overlayRef) {\r\n this.closeList();\r\n }\r\n\r\n const input = this.host.nativeElement.querySelector('.fakeinput');\r\n const width = input.offsetWidth;\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(input)\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(true)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n width,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeList());\r\n }\r\n\r\n selectOption(option:AppSelectOption | null){\r\n this.closeList();\r\n this.selectedOption = option;\r\n this.notifyChange(option?.id??null);\r\n }\r\n \r\n closeList() {\r\n if (this.overlayRef) {\r\n this.onTouched();\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n\r\n override writeValue(value: string | number | null): void {\r\n super.writeValue(value); \r\n this.selectedOption = this.options.find(opt => opt.id === value) ?? null;\r\n }\r\n}\r\n\r\n\r\nexport interface AppSelectOption{\r\n id? : string | number | null;\r\n text : string;\r\n detail? : string;\r\n} ","\r\n<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n <div class=\"fakeinput-wrapp\" > \r\n <!-- INPUT -->\r\n <div (click)=\"openList()\" class=\"fakeinput\" #fakeinput \r\n [ngClass]=\"{'errorinput':error, 'disabledinput':disabled, 'loading-input':loading}\" style=\"cursor: pointer;\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon {{internalIcon}}\" ></i>\r\n }\r\n <div class=\"fakeinput-emptytext\" [class.disabled-placeholder]=\"disabled && !selectedOption?.text\" >{{(selectedOption?.text || nonSelectedText)}}</div>\r\n @if (!disabled && !loading) {\r\n <i class=\"ri-arrow-down-s-line\"></i>\r\n }\r\n </div> \r\n <!-- DESPLEGABLE -->\r\n <ng-template #dropdownTemplate >\r\n <div class=\"input-options\">\r\n <!-- OPCIONES -->\r\n <div class=\"input-option-scroll\">\r\n @if (options.length > 0 && nullable) {\r\n <div (click)=\"selectOption(null)\" class=\"input-option \" style=\"padding: 3px;\" >{{noneText}}</div>\r\n <div class=\"option-divider\"></div>\r\n }\r\n \r\n \r\n @for (option of options; track $index) {\r\n <div (click)=\"selectOption(option)\" class=\"input-option\">\r\n <div style=\"padding: 2px;\" >\r\n <div class=\"f-medium\" >{{option.text }}</div>\r\n <div *ngIf=\"showSubtitle\" class=\"f-extralight\" >\r\n {{option.detail}}\r\n </div>\r\n </div>\r\n </div>\r\n @if ( $index < (options.length - 1) ) {\r\n <span class=\"option-divider\"></span>\r\n }\r\n \r\n }\r\n \r\n @if (options.length == 0) {\r\n <div class=\"fakeinput-alert t-disabled\">{{emptyText}}</div>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n \r\n </div>\r\n</ui-input-wrapper>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonColor } from '../../button/button.component';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\n@Component({\r\n selector: 'ui-input',\r\n imports: [ CommonModule, InputWrapperComponent],\r\n templateUrl: './input.component.html',\r\n styleUrl: '../input.component.scss'\r\n})\r\nexport class UicInputComponent {\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() internalIconColor: ButtonColor = 'black'; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n // FUNCTIONS\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n @Output() clickButton = new EventEmitter<boolean>();\r\n\r\n\r\n disableBtn = false;\r\n disableButton(){\r\n this.clickButton.emit();\r\n this.disableBtn = true;\r\n setTimeout(() => {\r\n this.disableBtn = false;\r\n }, 200);\r\n }\r\n\r\n \r\n}\r\n","\r\n<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\"> \r\n <div class=\"fakeinput\" [ngClass]=\"{'errorinput':error, 'disabledinput':disabled}\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon {{internalIcon}} f-{{internalIconColor}}\" ></i>\r\n }\r\n <div class=\"input-container\" >\r\n <ng-content class=\"myinput\"></ng-content>\r\n </div> \r\n </div>\r\n <span class=\"char-counter\" style=\"padding-top: 1px;\" >\r\n <ng-content select=\"[counter]\"></ng-content>\r\n </span>\r\n</ui-input-wrapper>","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, forwardRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { AppSelectOption } from '../select/select.component';\r\nimport { ButtonColor } from '../../button/button.component';\r\n\r\ntype RadioValue = string | number | null;\r\nconst base = createValueAccessor<RadioValue>();\r\n\r\n@Component({\r\n selector: 'ui-radio',\r\n imports: [CommonModule, InputWrapperComponent],\r\n templateUrl: './ui-radio.component.html',\r\n styleUrls: ['./ui-radio.component.scss', '../input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicRadioComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class UicRadioComponent extends base {\r\n @Input() icon = '';\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n @Input() options: AppSelectOption[] = [];\r\n @Input() emptyText = 'Sin opciones disponibles';\r\n @Input() direction: 'column' | 'row' = 'column';\r\n\r\n \r\n isSelected(option: AppSelectOption): boolean {\r\n return this.getOptionValue(option) === this.value;\r\n }\r\n\r\n selectOption(option: AppSelectOption) {\r\n if (this.disabled || this.loading) return;\r\n const nextValue = this.getOptionValue(option);\r\n if (nextValue === this.value) return;\r\n this.notifyChange(nextValue);\r\n }\r\n\r\n private getOptionValue(option: AppSelectOption): RadioValue {\r\n if (option.id === undefined || option.id === null) {\r\n return option.text ?? null;\r\n }\r\n return option.id;\r\n }\r\n}\r\n","<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [tip]=\"tip\"\r\n [error]=\"error\"\r\n [disabled]=\"disabled\"\r\n>\r\n <div\r\n class=\"radio-group\"\r\n role=\"radiogroup\"\r\n [class.loading-input]=\"loading\"\r\n [class.disabled]=\"disabled || loading\"\r\n [class.direction-row]=\"direction === 'row'\"\r\n [attr.aria-disabled]=\"disabled || loading ? true : null\"\r\n >\r\n @if (options.length) {\r\n @for (option of options; track option.id) {\r\n <button\r\n type=\"button\"\r\n class=\"radio-option\"\r\n [disabled]=\"disabled || loading\"\r\n [class.selected]=\"isSelected(option)\"\r\n [attr.aria-checked]=\"isSelected(option)\"\r\n (click)=\"selectOption(option)\"\r\n (keydown.enter)=\"selectOption(option)\"\r\n (keydown.space)=\"selectOption(option)\"\r\n >\r\n <span class=\"radio-control\" aria-hidden=\"true\">\r\n <span class=\"radio-dot\"></span>\r\n </span>\r\n <span class=\"radio-texts\">\r\n <span class=\"radio-label\">{{ option.text }}</span>\r\n @if (option.detail) {\r\n <span class=\"radio-detail\">{{ option.detail }}</span>\r\n }\r\n </span>\r\n </button>\r\n }\r\n } @else {\r\n <div class=\"radio-empty\">{{ emptyText }}</div>\r\n }\r\n </div>\r\n</ui-input-wrapper>\r\n","import { Component, forwardRef, HostListener, Input } from '@angular/core';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ButtonColor } from '../../button/button.component';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\nconst base = createValueAccessor<number>();\r\n\r\n@Component({\r\n selector: 'ui-slider',\r\n imports: [ InputWrapperComponent ],\r\n templateUrl: './ui-slider.component.html',\r\n styleUrls: ['./ui-slider.component.scss', '../input.component.scss'],\r\n providers:[\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicSliderComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicSliderComponent extends base {\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n\r\n @Input() min = 0;\r\n @Input() max = 100;\r\n @Input() step = 1;\r\n @Input() markerCount = 0;\r\n markers: number[] = [];\r\n \r\n @Input() disabled = false;\r\n \r\n @Input() loading = false;\r\n\r\n\r\n ngOnInit(){\r\n if (this.markerCount > 1) {\r\n const interval = (this.max - this.min) / (this.markerCount - 1);\r\n this.markers = Array.from({ length: this.markerCount }, (_, i) => this.min + i * interval);\r\n }\r\n }\r\n\r\n get percent() {\r\n return ((this.value - this.min) / (this.max - this.min)) * 100;\r\n }\r\n\r\n updateFromClientX(clientX: number, el: HTMLElement) {\r\n if (this.disabled) return;\r\n if (!el ) return;\r\n \r\n const rect = el.getBoundingClientRect();\r\n const relativeX = Math.min(Math.max(clientX - rect.left, 0), rect.width);\r\n const rawValue = this.min + (relativeX / rect.width) * (this.max - this.min);\r\n\r\n // Ajustar al step\r\n const stepped = Math.round(rawValue / this.step) * this.step;\r\n\r\n this.value = (Math.min(this.max, Math.max(this.min, stepped)));\r\n this.notifyChange(this.value);\r\n }\r\n \r\n dragging = false;\r\n private activeTrack?: HTMLElement;\r\n\r\n onMouseDown(event: MouseEvent, track: HTMLElement) {\r\n event.preventDefault();\r\n this.dragging = true;\r\n this.activeTrack = track;\r\n this.updateFromClientX(event.clientX, track);\r\n }\r\n \r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (this.disabled || !(this.dragging && this.activeTrack)) return;\r\n this.updateFromClientX(event.clientX, this.activeTrack);\r\n }\r\n\r\n @HostListener('document:mouseup')\r\n onMouseUp() {\r\n this.dragging = false;\r\n this.activeTrack = undefined;\r\n }\r\n}\r\n","<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n <div class=\"slider-wrapper\">\r\n <div class=\"slider\" #track\r\n (click)=\"updateFromClientX($event.clientX, track)\">\r\n <!-- barra -->\r\n <div class=\"slider-track\"></div>\r\n <div class=\"slider-filled\" [style.width.%]=\"percent\" [class.disabled-bar]=\"disabled\"></div>\r\n \r\n <!-- thumb -->\r\n <div class=\"slider-thumb\"\r\n [style.left.%]=\"percent\"\r\n [class.disabled-thumb]=\"disabled\"\r\n (mousedown)=\"onMouseDown($event, track)\"\r\n #thumb>\r\n <div class=\"slider-thumb-legend\" [class.disabled-legend]=\"disabled\">{{value}}</div>\r\n </div>\r\n \r\n <!-- markers -->\r\n <div class=\"slider-markers\">\r\n @for(m of markers; track $index){\r\n <div class=\"marker\" \r\n [style.left.%]=\"((m - min) / (max - min)) * 100\">\r\n {{ m }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</ui-input-wrapper>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, forwardRef, inject, Input, OnChanges, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport {\r\n Overlay,\r\n OverlayRef,\r\n FlexibleConnectedPositionStrategy,\r\n ConnectedPosition,\r\n} from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { ButtonColor, UicButtonComponent } from '../../button/button.component';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\ntype CalendarView = 'days' | 'months' | 'years';\r\nconst base = createValueAccessor<string>();\r\n\r\n@Component({\r\n selector: 'ui-date-picker',\r\n imports: [CommonModule, UicButtonComponent, InputWrapperComponent],\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss','../input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicDatePickerComponent),\r\n multi: true\r\n }\r\n ],\r\n})\r\nexport class UicDatePickerComponent extends base implements OnChanges {\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() internalIconColor: ButtonColor = 'black'; //Icono interno\r\n @Input() disabled = false;\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n // FUNCTIONS\r\n @Input() max = '';\r\n @Input() min = '';\r\n @Input() justMonth = false;\r\n @Input() monthDay: 'last' | 'first' = 'first';\r\n\r\n @ViewChild('calendarTemplate') calendarTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n\r\n // Fijos\r\n months:string[] = Array.from({ length: 12 }, (_, i) => new Date(2000, i, 1).toLocaleString('default', { month: 'short' }));\r\n today: Date = new Date();\r\n currentYear = +this.today.getFullYear();\r\n maxDate:Date|null= null;\r\n minDate:Date|null=null;\r\n\r\n // Dinámicos\r\n view: CalendarView = 'days';\r\n paintedDate:Date|null = null;\r\n selectedDate = new Date();\r\n selectedYear = this.currentYear;\r\n selectedMonth = null;\r\n monthWeeks:(Date|null)[][] = []; // Arreglo de fechas\r\n decadeRange:number[]=[];\r\n displayValue = '';\r\n\r\n get inputPlaceholder(): string {\r\n return this.justMonth ? 'mm/yyyy' : 'dd/mm/yyyy';\r\n }\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n ngOnInit(){\n this.monthWeeks = this.getWeeks();\n this.minDate = this.parseDateLimits(this.min);\n this.maxDate = this.parseDateLimits(this.max);\n this.applyValue(this.value);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['min'] || changes['max']) {\n this.minDate = this.parseDateLimits(this.min);\n this.maxDate = this.parseDateLimits(this.max);\n\n if (this.paintedDate && !this.isWithinLimits(this.paintedDate)) {\n this.clearValue(true);\n } else if (this.value) {\n this.applyValue(this.value);\n }\n }\n }\n\r\n // --- Overlay ---\r\n overlayPositions: ConnectedPosition[] =[\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]\r\n\r\n openCalendar() {\r\n if ( this.disabled ) return;\r\n\r\n if (this.overlayRef) {\r\n this.closeCalendar();\r\n }\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(this.host.nativeElement.querySelector('.fakeinput'))\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.calendarTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeCalendar());\r\n\r\n this.view = this.justMonth ? 'months' : 'days';\r\n if (this.justMonth) {\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n }\r\n\r\n closeCalendar() {\r\n if (this.overlayRef) {\r\n this.onTouched();\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n\r\n get monthName(): string {\r\n return this.selectedDate.toLocaleString('default', { month: 'long' });\r\n }\r\n \r\n getDecadeRange(): number[] {\r\n const start = Math.floor(this.selectedYear / 20) * 20;\r\n return Array.from({ length: 20 }, (_, i) => start + i);\r\n }\r\n\r\n getWeeks(): (Date | null)[][] {\r\n const weeks: (Date | null)[][] = [];\r\n const firstDay = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n const lastDay = new Date(this.selectedYear, this.selectedDate.getMonth() + 1, 0);\r\n\r\n let current = new Date(firstDay);\r\n current.setDate(current.getDate() - current.getDay());\r\n\r\n while (current <= lastDay || current.getDay() !== 0) {\r\n const week: (Date | null)[] = [];\r\n for (let i = 0; i < 7; i++) {\r\n week.push(\r\n current.getMonth() === this.selectedDate.getMonth()\r\n ? new Date(current)\r\n : null\r\n );\r\n current.setDate(current.getDate() + 1);\r\n }\r\n weeks.push(week);\r\n }\r\n return weeks;\r\n }\r\n\r\n // --- Navegación ---\r\n prev() {\r\n if (this.view === 'days') {\r\n const isJan = this.selectedDate.getMonth() == 0;\r\n const offsetMonth = isJan? -11 : 1;\r\n if ( isJan){\r\n this.selectedYear--;\r\n }\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth() - offsetMonth, 1);\r\n this.monthWeeks = this.getWeeks();\r\n } else if (this.view === 'months') {\r\n this.selectedYear--;\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n } else {\r\n this.selectedYear-=20\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n }\r\n\r\n next() {\r\n if (this.view === 'days') {\r\n const isDec = this.selectedDate.getMonth() == 11;\r\n const offsetMonth = isDec? -11 : 1;\r\n if ( isDec){\r\n this.selectedYear++;\r\n }\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth() + offsetMonth, 1);\r\n this.monthWeeks = this.getWeeks();\r\n } else if (this.view === 'months') {\r\n this.selectedYear++;\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n } else {\r\n this.selectedYear+=20;\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n }\r\n\r\n // --- Cambio de vistas ---\r\n changeView() {\r\n if (this.view === 'days') {\r\n if (!this.justMonth) {\r\n this.view = 'months';\r\n }\r\n } else if (this.view === 'months') {\r\n this.view = 'years';\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n }\r\n selectYear(year: number) {\r\n this.selectedYear = year;\r\n this.selectedDate = new Date(year, this.selectedDate.getMonth(), 1);\r\n this.view = 'months';\r\n }\r\n selectMonth(monthIndex: number) {\r\n if (this.justMonth) {\r\n const monthDate = this.buildMonthDate(this.selectedYear, monthIndex);\r\n if (!this.isWithinLimits(monthDate)) {\r\n return;\r\n }\r\n this.selectedDate = new Date(this.selectedYear, monthIndex, 1);\r\n this.value = this.toIsoString(monthDate);\r\n this.displayValue = this.formatDisplay(monthDate);\r\n this.paintedDate = monthDate;\r\n this.setCurrentViewDate(monthDate);\r\n this.notifyChange(this.value);\r\n this.closeCalendar();\r\n return;\r\n }\r\n this.selectedDate = new Date(this.selectedYear, monthIndex, 1);\r\n this.monthWeeks = this.getWeeks();\r\n this.view = 'days';\r\n }\r\n\r\n selectDate(date: Date) {\r\n if (this.justMonth) {\r\n return;\r\n }\r\n const normalized = this.normalizeDate(date);\r\n this.value = this.toIsoString(normalized);\r\n this.displayValue = this.formatDisplay(normalized);\r\n this.notifyChange(this.value);\r\n this.paintedDate = normalized;\r\n this.setCurrentViewDate(normalized);\r\n this.closeCalendar();\r\n }\r\n\r\n isToday(day:Date|null){\r\n if ( day ){\r\n const dayStr = day?.toISOString().split(\"T\")[0];\r\n const today =(new Date()).toISOString().split(\"T\")[0];\r\n return dayStr == today;\r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n isPainted(day:Date|null){\r\n if ( day && this.paintedDate){\r\n const dayStr = day?.toISOString().split(\"T\")[0];\r\n const today = this.paintedDate.toISOString().split(\"T\")[0];\r\n return dayStr == today;\r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n isThisMonth(m:string){\r\n const monthId = this.months.findIndex(f=>f===m) + 1;\r\n const dayStr = this.selectedYear + \"-\" + monthId;\r\n const thisMonth =(new Date()).toISOString().split(\"T\")[0].substring(0,7).replace(\"-0\",\"-\");\r\n return dayStr == thisMonth;\r\n }\r\n\r\n // MÍNIMO Y MÁXIMO\r\n parseDateLimits(date: string | Date | null | undefined) {\n if (!date) {\n return null;\n }\n\n if (date instanceof Date) {\n return isNaN(date.getTime()) ? null : this.normalizeDate(date);\n }\n\n const trimmed = date.trim();\n if (!trimmed) {\n return null;\n }\n\n const isoMatch = trimmed.match(/^(\\d{4})-(\\d{1,2})-(\\d{1,2})(?:$|[T\\s])/);\n if (isoMatch) {\n const [, year, month, day] = isoMatch;\n const parsed = new Date(+year, +month - 1, +day);\n return isNaN(parsed.getTime()) ? null : this.normalizeDate(parsed);\n }\n\n const isoMonthMatch = trimmed.match(/^(\\d{4})-(\\d{1,2})(?:$|[T\\s])/);\n if (isoMonthMatch) {\n const [, year, month] = isoMonthMatch;\n const baseDay =\n this.monthDay === 'last'\n ? new Date(+year, +month, 0).getDate()\n : 1;\n const parsed = new Date(+year, +month - 1, baseDay);\n return isNaN(parsed.getTime()) ? null : this.normalizeDate(parsed);\n }\n\n const parsed = new Date(trimmed);\n return isNaN(parsed.getTime()) ? null : this.normalizeDate(parsed);\n }\n\r\n cleanInput(){\r\n this.clearValue(true);\r\n this.closeCalendar();\r\n }\r\n pickToday(){\r\n const today = this.normalizeDate(new Date());\r\n const target = this.justMonth ? this.buildMonthDate(today.getFullYear(), today.getMonth()) : today;\r\n this.value = this.toIsoString(target);\r\n this.displayValue = this.formatDisplay(target);\r\n this.notifyChange(this.value);\r\n this.paintedDate = target;\r\n this.setCurrentViewDate(target);\r\n this.closeCalendar();\r\n }\r\n\r\n onInputChange(event: Event) {\r\n this.displayValue = (event.target as HTMLInputElement).value;\r\n }\r\n\r\n onInputBlur() {\r\n this.onTouched();\r\n const trimmed = this.displayValue.trim();\r\n if (!trimmed) {\r\n this.clearValue(true);\r\n return;\r\n }\r\n\r\n const parsed = this.parseDisplay(trimmed);\r\n if (!parsed || !this.isWithinLimits(parsed)) {\r\n this.clearValue(true);\r\n return;\r\n }\r\n\r\n const normalized = this.normalizeDate(parsed);\r\n this.displayValue = this.formatDisplay(normalized);\r\n this.value = this.toIsoString(normalized);\r\n this.paintedDate = normalized;\r\n this.setCurrentViewDate(normalized);\r\n this.notifyChange(this.value);\r\n }\r\n\r\n onInputKeydown(event: KeyboardEvent) {\r\n if (event.key === 'Enter') {\r\n (event.target as HTMLInputElement).blur();\r\n }\r\n }\r\n\r\n override writeValue(value: string | null): void {\r\n super.writeValue(value as any);\r\n this.applyValue(value);\r\n }\r\n\r\n private applyValue(value: string | null | undefined) {\r\n const parsed = this.parseDateLimits(value ?? '');\r\n if (parsed) {\r\n const effective = this.justMonth\r\n ? this.buildMonthDate(parsed.getFullYear(), parsed.getMonth())\r\n : parsed;\r\n if (this.justMonth && value) {\r\n this.value = this.toIsoString(effective);\r\n }\r\n this.displayValue = this.formatDisplay(effective);\r\n this.paintedDate = effective;\r\n this.setCurrentViewDate(effective);\r\n } else {\r\n this.clearValue(false, false);\r\n }\r\n }\r\n\r\n private clearValue(emit = false, resetValue = true) {\r\n this.displayValue = '';\r\n this.paintedDate = null;\r\n if (resetValue) {\r\n this.value = '';\r\n }\r\n if (emit) {\r\n this.notifyChange(this.value);\r\n }\r\n }\r\n\r\n private setCurrentViewDate(date: Date) {\r\n this.selectedYear = date.getFullYear();\r\n this.selectedDate = new Date(date.getFullYear(), date.getMonth(), 1);\r\n this.monthWeeks = this.getWeeks();\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n\r\n private formatDisplay(date: Date): string {\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const year = date.getFullYear();\r\n if (this.justMonth) {\r\n return `${month}/${year}`;\r\n }\r\n const day = String(date.getDate()).padStart(2, '0');\r\n return `${day}/${month}/${year}`;\r\n }\r\n\r\n private parseDisplay(text: string): Date | null {\r\n const normalized = text.trim();\r\n if (this.justMonth) {\r\n const matchMonth = normalized.match(/^(\\d{1,2})[\\/\\-.](\\d{4})$/);\r\n if (!matchMonth) {\r\n return null;\r\n }\r\n const month = parseInt(matchMonth[1], 10);\r\n const year = parseInt(matchMonth[2], 10);\r\n if (month < 1 || month > 12) return null;\r\n return this.buildMonthDate(year, month - 1);\r\n }\r\n\r\n const match = normalized.match(/^(\\d{1,2})[\\/\\-.](\\d{1,2})[\\/\\-.](\\d{4})$/);\r\n if (!match) {\r\n return null;\r\n }\r\n\r\n const day = parseInt(match[1], 10);\r\n const month = parseInt(match[2], 10);\r\n const year = parseInt(match[3], 10);\r\n\r\n if (month < 1 || month > 12) return null;\r\n if (day < 1 || day > 31) return null;\r\n\r\n const candidate = new Date(year, month - 1, day);\r\n if (\r\n candidate.getFullYear() !== year ||\r\n candidate.getMonth() !== month - 1 ||\r\n candidate.getDate() !== day\r\n ) {\r\n return null;\r\n }\r\n\r\n return candidate;\r\n }\r\n\r\n private isWithinLimits(date: Date): boolean {\n const normalized = this.normalizeDate(date);\n if (this.minDate && normalized < this.minDate) {\n return false;\n }\n if (this.maxDate && normalized > this.maxDate) {\n return false;\n }\n return true;\n }\n\r\n private normalizeDate(date: Date): Date {\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n }\r\n\r\n private toIsoString(date: Date): string {\r\n return date.toISOString().split('T')[0];\r\n }\r\n\r\n private buildMonthDate(year: number, monthIndex: number): Date {\r\n const day =\r\n this.monthDay === 'last'\r\n ? new Date(year, monthIndex + 1, 0).getDate()\r\n : 1;\r\n return this.normalizeDate(new Date(year, monthIndex, day));\r\n }\r\n\r\n isMonthDisabled(monthIndex: number): boolean {\r\n if (!this.justMonth) {\r\n return false;\r\n }\r\n const candidate = this.buildMonthDate(this.selectedYear, monthIndex);\r\n return !this.isWithinLimits(candidate);\r\n }\r\n\r\n isSelectedMonth(monthIndex: number): boolean {\r\n if (!this.paintedDate) {\r\n return false;\r\n }\r\n return (\r\n this.paintedDate.getFullYear() === this.selectedYear &&\r\n this.paintedDate.getMonth() === monthIndex\r\n );\r\n }\r\n}\r\n","<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n <div class=\"fakeinput-wrapp \" >\r\n <div class=\"fakeinput \" \r\n [ngClass]=\"{ 'errorinput': error, 'disabledinput': disabled }\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon-m {{ internalIcon }}\"></i>\r\n }\r\n <input\r\n type=\"text\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"inputPlaceholder\"\r\n [value]=\"displayValue\"\r\n inputmode=\"numeric\"\r\n autocomplete=\"off\"\r\n (input)=\"onInputChange($event)\"\r\n (blur)=\"onInputBlur()\"\r\n (keydown)=\"onInputKeydown($event)\"\r\n (click)=\"openCalendar()\"\r\n />\r\n </div>\r\n <!-- Overlay Template -->\r\n <ng-template #calendarTemplate>\r\n <div class=\"calendar\">\r\n <div class=\"calendar-header\">\r\n <span (click)=\"changeView()\">\r\n @if (view === 'days') {\r\n {{ monthName }} de {{ selectedYear }}\r\n } @else if (view === 'months') {\r\n {{ selectedYear }}\r\n } @else {\r\n {{ decadeRange[0] }} - {{ decadeRange[decadeRange.length - 1] }}\r\n }\r\n </span>\r\n <ui-button\r\n size=\"s\"\r\n type=\"ghost\"\r\n [iconOnly]=\"true\"\r\n icon=\"ri-arrow-drop-up-line\"\r\n (click)=\"prev()\"\r\n ><</ui-button\r\n >\r\n <ui-button\r\n size=\"s\"\r\n type=\"ghost\"\r\n [iconOnly]=\"true\"\r\n icon=\"ri-arrow-drop-down-line\"\r\n (click)=\"next()\"\r\n >></ui-button\r\n >\r\n </div>\r\n <!-- Vista Days -->\r\n @if (view === 'days') {\r\n <div class=\"calendar-grid\">\r\n @for (d of ['DO','LU','MA','MI','JU','VI','SA']; track $index) {\r\n <div class=\"weekday\">{{ d }}</div>\r\n } @for (week of monthWeeks; track $index) { @for (day of week;\r\n track $index) {\r\n <button\r\n class=\"day\"\r\n [disabled]=\"\r\n (minDate && day ? day < minDate : false) ||\r\n (maxDate && day ? day > maxDate : false)\r\n \"\r\n [class.today]=\"isToday(day)\"\r\n [class.day-selected]=\"isPainted(day)\"\r\n [class.empty]=\"!day\"\r\n (click)=\"day && selectDate(day)\"\r\n >\r\n {{ day?.getDate() }}\r\n </button>\r\n } }\r\n </div>\r\n }\r\n <!-- Vista Months -->\r\n @if (view === 'months') {\r\n <div class=\"calendar-grid months\">\r\n @for (m of months; let i = $index; track i) {\r\n <button\r\n class=\"day\"\r\n [class.today]=\"isThisMonth(m)\"\r\n [class.day-selected]=\"isSelectedMonth(i)\"\r\n [disabled]=\"isMonthDisabled(i)\"\r\n (click)=\"selectMonth(i)\"\r\n >\r\n {{ m }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n <!-- Vista Years -->\r\n @if (view === 'years') {\r\n <div class=\"calendar-grid years\">\r\n @for (y of decadeRange; track $index) {\r\n <button\r\n class=\"day\"\r\n [class.today]=\"y == currentYear\"\r\n (click)=\"selectYear(y)\"\r\n >\r\n {{ y }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n <div class=\"calendar-footer\">\r\n <ui-button\r\n color=\"red\"\r\n size=\"s\"\r\n type=\"ghost\"\r\n (click)=\"cleanInput()\"\r\n >Limpiar</ui-button\r\n >\r\n <ui-button\r\n color=\"blue\"\r\n size=\"s\"\r\n type=\"ghost\"\r\n (click)=\"pickToday()\"\r\n >Hoy</ui-button\r\n >\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</ui-input-wrapper>","import { Component, forwardRef, Input, SimpleChanges } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../dynamic-form/base-value-accessot';\r\nimport { AppSelectOption } from '../inputs/select/select.component';\r\nimport { UicInputComponent } from '../inputs/input/input.component';\r\n\r\ntype selectId = number|string;\r\ntype selectedDetailed = {id: selectId; detail?: string};\r\nconst base = createValueAccessor<selectedDetailed[]>();\r\n\r\n@Component({\r\n selector: 'ui-pool-options',\r\n imports: [UicInputComponent],\r\n templateUrl: './pool-options.component.html',\r\n styleUrls: ['./pool-options.component.scss','../inputs/input.component.scss'],\r\n providers:[\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicPoolOptionsComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicPoolOptionsComponent extends base{\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: 'primary'|'secondary' = 'primary'; //color de ícono externo\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXT\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n // FUNCTIONS\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n @Input() multy = true;\r\n @Input() enabledListView = false;\r\n @Input() listViewTitle = 'Seleccionados';\r\n @Input() options:AppSelectOption[] = [];\r\n\r\n private selectedItems = new Map<selectId, selectedDetailed>();\r\n\r\n get selectedValues(): selectedDetailed[] {\r\n return Array.from(this.selectedItems.values()).map(item => ({ ...item }));\r\n }\r\n\r\n updateOptions(id:selectId){\r\n if ( this.disabled ) return;\r\n if (this.selectedItems.has(id)) {\r\n this.selectedItems.delete(id);\r\n } else {\r\n if (!this.multy) {\r\n this.selectedItems.clear();\r\n }\r\n this.selectedItems.set(id, { id });\r\n }\r\n this.emitSelectionChange();\r\n }\r\n\r\n updateDetail(id: selectId, detail: string) {\r\n if (!this.selectedItems.has(id)) {\r\n return;\r\n }\r\n const updated: selectedDetailed =\r\n detail?.length ? { id, detail } : { id };\r\n this.selectedItems.set(id, updated);\r\n this.emitSelectionChange();\r\n }\r\n\r\n override writeValue(value: selectedDetailed[] | selectId[] | null = []): void {\r\n const normalized = this.normalizeIncomingValue(value);\r\n super.writeValue(normalized);\r\n this.selectedItems = new Map(normalized.map(item => [item.id, item]));\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['options'] && this.value != null) {\r\n this.selectedItems.clear();\r\n this.emitSelectionChange();\r\n }\r\n }\r\n\r\n isSelected(id: selectId) {\r\n return this.selectedItems.has(id);\r\n }\r\n\r\n getItemName(id:selectId){\r\n return this.options.find(f=>f.id == id)?.text??id;\r\n }\r\n\r\n private emitSelectionChange() {\r\n this.notifyChange(this.selectedValues);\r\n }\r\n\r\n private normalizeIncomingValue(\r\n value: selectedDetailed[] | selectId[] | null | undefined\r\n ): selectedDetailed[] {\r\n if (!Array.isArray(value)) {\r\n return [];\r\n }\r\n\r\n return value\r\n .map(item => {\r\n if (item == null) {\r\n return null;\r\n }\r\n\r\n if (typeof item === 'object' && 'id' in item) {\r\n const normalizedItem = item as selectedDetailed;\r\n const detail = normalizedItem.detail;\r\n return detail?.length ? { id: normalizedItem.id, detail } : { id: normalizedItem.id };\r\n }\r\n\r\n return { id: item as selectId };\r\n })\r\n .filter((entry): entry is selectedDetailed => entry !== null);\r\n }\r\n\r\n}\r\n","<div class=\"input-wrapper \">\r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{iconColor}} {{icon}}\"></i>\r\n }\r\n <div class=\"input-elements\" [style]=\"icon?'max-width: calc(100% - 34px);':''\">\r\n @if (label) {\r\n <div class=\"label inputlabel\" [class.font-error]=\"error\">{{label}} </div>\r\n }\r\n <div>\r\n <div class=\"pool-wrapper\" > \r\n @for (opt of options; track opt.id) {\r\n <div (click)=\"updateOptions(opt.id??'')\" class=\"pool-option\" [class.disabled-opt]=\"disabled\" [class.active-opt]=\"isSelected(opt.id??'')\">{{opt.text}}</div>\r\n }\r\n \r\n </div>\r\n <!-- BLOQUE DE LISTTA DETALLADA -->\r\n @if(enabledListView && selectedValues.length > 0){\r\n <h2 class=\"pool-selected-title\">{{listViewTitle}}</h2>\r\n <div>\r\n @for (item of selectedValues; track item.id) {\r\n <div class=\"pool-selected\"> \r\n <div class=\"pool-selected-label\">{{getItemName(item.id)}} </div>\r\n <div class=\"pool-selected-input\">\r\n <ui-input [disabled]=\"disabled\">\r\n <input [disabled]=\"disabled\" placeholder=\"Detalle\" type=\"text\" [value]=\"item.detail ?? ''\" (input)=\"updateDetail(item.id, $any($event.target).value)\">\r\n </ui-input>\r\n @if (!disabled) {\r\n <div class=\"pool-selected-button\" (click)=\"updateOptions(item.id)\" >\r\n <i class=\"ri-delete-bin-5-line\" ></i>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <!-- ALERTS -->\r\n @if (error) {\r\n <div class=\"fakeinput-alert f-red\">{{error}}</div>\r\n }\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n </div>\r\n</div>\r\n","import { Component, ElementRef, EventEmitter, forwardRef, inject, Input, Output, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { debounceTime, distinctUntilChanged, finalize, Observable, of, Subject, switchMap, tap } from 'rxjs';\r\nimport { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\nconst base = createValueAccessor< Record<string,any>|null>();\r\n\r\n@Component({\r\n selector: 'ui-searcher',\r\n imports: [CommonModule, FormsModule,UicButtonComponent, InputWrapperComponent],\r\n templateUrl: './uic-searcher.component.html',\r\n styleUrls: ['./uic-searcher.component.scss', '../input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicSearcherComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicSearcherComponent extends base {\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: 'primary'|'secondary' = 'primary'; //color de ícono externo\r\n @Input() internalIcon = 'ri-search-2-line'; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = ''; \r\n \r\n @Input() showSubtitle = false;\r\n // FUNCTIONS\r\n @Input() disabled = false; \r\n @Input() loading = false;\r\n @Input() showSelected = true;\r\n @Input() placeholder = 'Buscar...';\r\n \r\n @Input() searchFn?: (query: string) => Observable<any[]>;\r\n @Input() itemDisplayFn?: (item: any) => string = item => String(item);\r\n @Input() itemIsEnabledFn?: (item: any) => boolean = () => true;\r\n \r\n @Input() manualSearch: boolean = false;\r\n @Input() stateless: boolean = false;\r\n @Output() pickedItem = new EventEmitter<Record<string,any>>();\r\n\r\n private readonly searchSubject = new Subject<string>();\r\n results$: Observable<any[]> = this.searchSubject.pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n tap(() => this.watingApi = true),\r\n switchMap( v => {\r\n if (v.length < 3) {\r\n this.watingApi = false;\r\n return of([]);\r\n }\r\n if ( !this.searchFn ) return of([]);\r\n return this.searchFn(v).pipe( finalize(()=>this.watingApi=false) )}\r\n )\r\n );;\r\n selectedOption:Record<string,any>|null = null;\r\n searchText: string = '';\r\n watingApi = false;\r\n\r\n \r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n private resizeObserver?: ResizeObserver;\r\n \r\n onSearchChange(value: string) {\r\n this.searchText = value; \r\n if (!this.manualSearch) {\r\n this.searchSubject.next(value);\r\n }\r\n }\r\n\r\n triggerSearch() {\r\n this.searchSubject.next(this.searchText);\r\n }\r\n\r\n selectItem(item: Record<string,any>) {\r\n if (!this.itemIsEnabledFn ||this.itemIsEnabledFn(item)) {\r\n this.clearSearch();\r\n this.closeList();\r\n if ( this.stateless ){\r\n this.pickedItem.emit(item)\r\n }else{\r\n if (this.showSelected) this.selectedOption = item;\r\n this.notifyChange(item);\r\n }\r\n }\r\n }\r\n\r\n clearSearch() {\r\n this.searchText = '';\r\n this.searchSubject.next('');\r\n }\r\n\r\n unselect(){\r\n this.selectedOption = null;\r\n this.notifyChange(null);\r\n }\r\n\r\n // --- Overlay ---\r\n @ViewChild('dropdownTemplate') dropdownTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n overlayPositions: ConnectedPosition[] =[\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]\r\n openList(){\r\n if (this.disabled || this.loading) return;\r\n\r\n if (this.overlayRef) {\r\n this.closeList();\r\n }\r\n\r\n const input = this.host.nativeElement.querySelector('.fakeinput') as HTMLElement | null;\r\n if (!input) return;\r\n const width = input.offsetWidth;\r\n const preferredPositions = this.getPreferredPositions(input);\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(input)\r\n .withPositions(preferredPositions)\r\n .withFlexibleDimensions(true)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n width,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.observeOverlaySizeChanges();\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeList());\r\n }\r\n closeList() {\r\n if (this.overlayRef) {\r\n this.resizeObserver?.disconnect();\r\n this.resizeObserver = undefined;\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n\r\n private observeOverlaySizeChanges() {\r\n if (!this.overlayRef || typeof ResizeObserver === 'undefined') return;\r\n\r\n this.resizeObserver?.disconnect();\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.overlayRef?.updatePosition();\r\n });\r\n this.resizeObserver.observe(this.overlayRef.overlayElement);\r\n }\r\n\r\n private getPreferredPositions(origin: HTMLElement): ConnectedPosition[] {\r\n if (typeof window === 'undefined') return this.overlayPositions;\r\n const rect = origin.getBoundingClientRect();\r\n const spaceBelow = window.innerHeight - rect.bottom;\r\n const spaceAbove = rect.top;\r\n return spaceBelow >= spaceAbove ? this.overlayPositions : [...this.overlayPositions].reverse();\r\n }\r\n\r\n override writeValue(value: Record<string,any>): void {\r\n super.writeValue(value); \r\n this.selectedOption = value; \r\n }\r\n}\r\n","<ui-input-wrapper\r\n[icon]=\"icon\"\r\n[iconColor]=\"iconColor\"\r\n[label]=\"label\"\r\n[error]=\"error\"\r\n[tip]=\"tip\"\r\n[disabled]=\"disabled\">\r\n@if ( !stateless || (!disabled && stateless)) {\r\n <div class=\"fakeinput-wrapp\" >\r\n <!-- INPUT -->\r\n <div class=\"fakeinput\" #fakeinput \r\n [ngClass]=\"{'errorinput':error, 'disabledinput':disabled, 'loading-input':watingApi||loading}\" style=\"cursor: pointer;\">\r\n @if (selectedOption == null) { \r\n @if (internalIcon) {\r\n <i class=\"input-internalicon {{internalIcon}}\" ></i>\r\n }\r\n <div class=\"input-container\" >\r\n <input\r\n [disabled]=\"disabled\"\r\n (focus)=\"openList()\"\r\n type=\"text\"\r\n (keydown.enter)=\"triggerSearch()\"\r\n (keydown.escape)=\"clearSearch()\"\r\n [(ngModel)]=\"searchText\"\r\n (ngModelChange)=\"onSearchChange($event)\"\r\n [placeholder]=\"placeholder\"\r\n />\r\n </div> \r\n @if (!disabled) {\r\n @if (manualSearch) {\r\n <ui-button tip=\"Limpiar\" (click)=\"triggerSearch()\" size=\"t\" ></ui-button>\r\n }\r\n <ui-button [iconOnly]=\"true\" size=\"s\" type=\"ghost\" icon=\"ri-eraser-line\" (click)=\"clearSearch()\"></ui-button>\r\n }\r\n }@else {\r\n <div class=\"input-container\" >\r\n <div class=\"selected-item\" >\r\n <div class=\"selected-item-text\" [innerHTML]=\"itemDisplayFn?itemDisplayFn(selectedOption):''\"></div> \r\n <ui-button [iconOnly]=\"true\" (click)=\"unselect()\" type=\"ghost\" size=\"t\" icon=\"ri-close-large-line\" color=\"red\"></ui-button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </ui-input-wrapper>\r\n \r\n<ng-template #dropdownTemplate>\r\n @if (results$ | async; as items){\r\n <div class=\"input-options\">\r\n <div class=\"input-option-scroll\">\r\n @for (item of items; track $index) {\r\n <div class=\"input-option\" [class.item-disabled]=\"itemIsEnabledFn?!itemIsEnabledFn(item):false\"\r\n (click)=\"selectItem(item)\" \r\n [innerHTML]=\"itemDisplayFn?itemDisplayFn(item):''\">\r\n </div>\r\n }@empty {\r\n <div class=\"t-disabled\">No hay elementos para mostrar</div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n\r\n\r\n","import { Component, ElementRef, forwardRef, inject, Input, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { AppSelectOption } from '../select/select.component';\r\nimport { UicCheckboxComponent } from '../checkbox/checkbox.component';\r\nimport { ButtonColor } from '../../button/button.component';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\ntype selectId = (number|string)[];\r\nconst base = createValueAccessor<selectId>();\r\n\r\n@Component({\r\n selector: 'ui-multy-select',\r\n imports: [CommonModule, UicCheckboxComponent, FormsModule, InputWrapperComponent],\r\n templateUrl: './multy-select.component.html',\r\n styleUrls: ['../input.component.scss','./multy-select.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicMultySelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicMultySelectComponent extends base{\r\n\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: 'primary'|'secondary' = 'primary'; //color de ícono externo\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() internalIconColor: ButtonColor = 'black'; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXT\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n @Input() showSubtitle = false;\r\n @Input() disabled = false;\r\n emptyText = '- Seleccionar -'\r\n // FUNCTIONS\r\n @Input() loading = false;\r\n @Input() options:AppSelectOption[] = []; \r\n // MULTY\r\n allSelected=false;\r\n selectedSet = new Set<string | number>();\r\n\r\n toggleAll(checked: boolean) {\r\n this.allSelected = checked;\r\n this.selectedSet.clear();\r\n if (checked) {\r\n this.options.forEach(o => {\r\n const key = o.id??o.text;\r\n this.selectedSet.add(key);\r\n });\r\n }\r\n }\r\n\r\n toggleOption(id:number|string){\r\n if (this.selectedSet.has(id)) {\r\n this.selectedSet.delete(id);\r\n } else {\r\n this.selectedSet.add(id);\r\n }\r\n this.updateAllSelected();\r\n }\r\n\r\n updateAllSelected() {\r\n this.allSelected = this.options.length > 0 && this.selectedSet.size === this.options.length;\r\n }\r\n\r\n applySelection() {\r\n let result:(string|number)[] = [];\r\n result = [...this.selectedSet];\r\n this.notifyChange( result )\r\n this.closeList();\r\n }\r\n\r\n\r\n\r\n @ViewChild('dropdownTemplate') dropdownTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n overlayPositions: ConnectedPosition[] =[\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]\r\n \r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['options'] && this.value != null) {\r\n // Resetear valor seleccionado\r\n this.selectedSet = new Set();\r\n }\r\n }\r\n\r\n // --- Overlay ---\r\n openList(){\r\n if (this.disabled || this.loading) return;\r\n\r\n if (this.overlayRef) {\r\n this.closeList();\r\n }\r\n\r\n const input = this.host.nativeElement.querySelector('.fakeinput');\r\n const width = input.offsetWidth;\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(input)\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(true)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n width,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeList());\r\n }\r\n\r\n \r\n closeList() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n\r\n override writeValue(value: (string| number)[]): void {\r\n super.writeValue(value); \r\n this.selectedSet = new Set(value);\r\n }\r\n}\r\n","\r\n<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n <div class=\"fakeinput-wrapp\" > \r\n <!-- INPUT -->\r\n <div (click)=\"openList()\" class=\"fakeinput\" #fakeinput \r\n [ngClass]=\"{'errorinput':error, 'disabledinput':disabled, 'loading-input':loading}\" style=\"cursor: pointer;\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon {{internalIcon}}\" ></i>\r\n }\r\n <div class=\"fakeinput-emptytext\" [class.disabled-placeholder]=\"disabled\" >TEXTO PENDIENTE</div>\r\n @if (!disabled && !loading) {\r\n <i class=\"ri-arrow-down-s-line\"></i>\r\n }\r\n </div> \r\n <!-- DESPLEGABLE -->\r\n <ng-template #dropdownTemplate >\r\n <div class=\"input-options\">\r\n <div class=\"multyoptions-header\">\r\n <ui-checkbox [noPadding]=\"true\"\r\n [ngModel]=\"allSelected\" \r\n (ngModelChange)=\"toggleAll($event)\"\r\n placeholder=\"Todos\"></ui-checkbox>\r\n </div>\r\n <!-- OPCIONES -->\r\n <div class=\"input-option-scroll\"> \r\n @for (option of options; track $index) {\r\n <div (click)=\"toggleOption(option.id??option.text)\" class=\"input-multyoption\">\r\n <ui-checkbox \r\n [ngModel]=\"selectedSet.has(option.id??option.text)\"\r\n [noPadding]=\"true\" \r\n [placeholder]=\"option.text\"></ui-checkbox>\r\n </div> \r\n }\r\n @if (options.length == 0) {\r\n <div class=\"fakeinput-alert t-disabled\">No hay elementos para mostrar</div>\r\n }\r\n </div>\r\n <!-- <div class=\"multyoptions-footer\">\r\n <ui-button (click)=\"closeList()\" color=\"black\" type=\"bordered\" size=\"s\">Cancelar</ui-button>\r\n <ui-button (click)=\"applySelection()\" color=\"black\" size=\"s\">Aplicar</ui-button>\r\n </div> -->\r\n </div>\r\n </ng-template>\r\n </div>\r\n</ui-input-wrapper>","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ElementRef,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewChildren,\r\n ViewContainerRef,\r\n forwardRef,\r\n inject,\r\n Input,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport {\r\n ConnectedPosition,\r\n FlexibleConnectedPositionStrategy,\r\n Overlay,\r\n OverlayRef,\r\n} from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { ButtonColor, UicButtonComponent } from '../../button/button.component';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\nconst base = createValueAccessor<string>();\r\n\r\ntype ParsedTime = { hour12: number; minute: number; meridiem: 'am' | 'pm' };\r\n\r\n@Component({\r\n selector: 'ui-time-picker',\r\n imports: [CommonModule, UicButtonComponent, InputWrapperComponent],\r\n templateUrl: './time-picker.component.html',\r\n styleUrls: ['./time-picker.component.scss', '../input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicTimePickerComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class UicTimePickerComponent extends base {\r\n // Iconos y estado\r\n @Input() icon = '';\r\n @Input() iconColor: 'primary' | 'secondary' = 'primary';\r\n @Input() internalIcon = '';\r\n @Input() internalIconColor: ButtonColor = 'black'; //Icono interno\r\n @Input() disabled = false;\r\n\r\n // Texto\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n\r\n // Configuracion\r\n @Input() interval = 1; // paso de minutos en el overlay\r\n\r\n // Entrada mostrada (12h) y valor (24h)\r\n displayValue = '';\r\n\r\n // Overlay\r\n @ViewChild('overlayTemplate') overlayTemplate!: TemplateRef<any>;\r\n @ViewChildren('hourOption') hourOptions!: QueryList<ElementRef<HTMLElement>>;\r\n @ViewChildren('minuteOption') minuteOptions!: QueryList<ElementRef<HTMLElement>>;\r\n @ViewChildren('meridiemOption') meridiemOptions!: QueryList<ElementRef<HTMLElement>>;\r\n private overlayRef: OverlayRef | null = null;\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n overlayPositions: ConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ];\r\n\r\n // Listas para construir la hora\r\n hours12 = Array.from({ length: 12 }, (_, i) => i + 1); // 1..12\r\n minutes: number[] = [];\r\n meridiems: Array<'am' | 'pm'> = ['am', 'pm'];\r\n\r\n selectedHour12: number | null = null;\r\n selectedMinute: number | null = null;\r\n selectedMeridiem: 'am' | 'pm' | null = null;\r\n\r\n ngOnInit(): void {\r\n this.rebuildMinutes();\r\n this.syncSelectionFromValue();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['interval']) {\r\n this.rebuildMinutes();\r\n this.syncSelectionFromValue();\r\n }\r\n }\r\n\r\n private rebuildMinutes() {\r\n const step = Math.max(1, Math.min(60, Math.floor(this.interval || 1)));\r\n const mins: number[] = [];\r\n for (let m = 0; m < 60; m += step) {\r\n mins.push(m);\r\n }\r\n this.minutes = mins;\r\n }\r\n\r\n private applySelection(parsed: ParsedTime | null) {\r\n if (!parsed) {\r\n this.clearSelection();\r\n return;\r\n }\r\n this.selectedHour12 = parsed.hour12;\r\n this.selectedMinute = this.minutes.includes(parsed.minute) ? parsed.minute : null;\r\n this.selectedMeridiem = parsed.meridiem;\r\n }\r\n\r\n private clearSelection() {\r\n this.selectedHour12 = null;\r\n this.selectedMinute = null;\r\n this.selectedMeridiem = null;\r\n }\r\n\r\n private syncSelectionFromValue() {\r\n const parsed = this.parseValue(this.value) || this.parseDisplay(this.displayValue);\r\n this.applySelection(parsed);\r\n }\r\n\r\n // --- Overlay ---\r\n openOverlay() {\r\n if (this.disabled) return;\r\n\r\n if (this.overlayRef) {\r\n this.closeOverlay();\r\n }\r\n\r\n const inputEl = this.host.nativeElement.querySelector('.fakeinput');\r\n const width = (inputEl as HTMLElement | null)?.clientWidth;\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(inputEl as HTMLElement)\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n width,\r\n });\r\n\r\n const portal = new TemplatePortal(this.overlayTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeOverlay());\r\n\r\n this.syncSelectionFromValue();\r\n setTimeout(() => this.scrollToSelection(), 0);\r\n }\r\n\r\n closeOverlay() {\r\n if (this.overlayRef) {\r\n this.onTouched();\r\n this.overlayRef.dispose();\r\n this.overlayRef = null;\r\n }\r\n }\r\n\r\n // Selecciones desde overlay\r\n pickHour(hour: number) {\r\n this.selectedHour12 = hour;\r\n this.commitOverlaySelection();\r\n }\r\n\r\n pickMinute(minute: number) {\r\n this.selectedMinute = minute;\r\n this.commitOverlaySelection();\r\n }\r\n\r\n pickMeridiem(meridiem: 'am' | 'pm') {\r\n this.selectedMeridiem = meridiem;\r\n this.commitOverlaySelection();\r\n }\r\n\r\n private commitOverlaySelection() {\r\n const base =\r\n this.parseDisplay(this.displayValue) ||\r\n this.parseValue(this.value) || {\r\n hour12: 12,\r\n minute: 0,\r\n meridiem: 'am' as const,\r\n };\r\n\r\n const hour = this.selectedHour12 ?? base.hour12;\r\n const minute = this.selectedMinute ?? base.minute;\r\n const meridiem = this.selectedMeridiem ?? base.meridiem;\r\n\r\n this.displayValue = this.format12(hour, minute, meridiem);\r\n this.notifyChange(this.compose24(hour, minute, meridiem) as any);\r\n }\r\n\r\n // --- Entrada manual ---\r\n onInput(val: string) {\r\n this.displayValue = val;\r\n }\r\n\r\n onBlur() {\r\n const parsed = this.parseDisplay(this.displayValue);\r\n if (parsed) {\r\n this.displayValue = this.format12(parsed.hour12, parsed.minute, parsed.meridiem);\r\n const value24 = this.compose24(parsed.hour12, parsed.minute, parsed.meridiem);\r\n this.notifyChange(value24 as any);\r\n this.applySelection(parsed);\r\n } else {\r\n this.displayValue = '';\r\n this.notifyChange(null as any);\r\n this.clearSelection();\r\n }\r\n }\r\n\r\n onKeydown(event: KeyboardEvent) {\r\n if (event.key === 'Enter') {\r\n (event.target as HTMLInputElement).blur();\r\n }\r\n }\r\n\r\n // --- ControlValueAccessor ---\r\n override writeValue(value: string | null): void {\r\n super.writeValue(value as any);\r\n const parsed = this.parseValue(value || '');\r\n if (parsed) {\r\n this.displayValue = this.format12(parsed.hour12, parsed.minute, parsed.meridiem);\r\n this.applySelection(parsed);\r\n } else {\r\n this.displayValue = '';\r\n this.clearSelection();\r\n }\r\n }\r\n\r\n // --- Helpers de formato ---\r\n private format12(hour12: number, minute: number, meridiem: 'am' | 'pm') {\r\n const hh = String(hour12).padStart(2, '0');\r\n const mm = String(minute).padStart(2, '0');\r\n return `${hh}:${mm} ${meridiem}`;\r\n }\r\n\r\n private compose24(hour12: number, minute: number, meridiem: 'am' | 'pm'): string {\r\n let h24 = hour12 % 12;\r\n if (meridiem === 'pm') h24 += 12;\r\n const hh = String(h24).padStart(2, '0');\r\n const mm = String(minute).padStart(2, '0');\r\n return `${hh}:${mm}`;\r\n }\r\n\r\n private parseDisplay(text: string): ParsedTime | null {\r\n if (!text) return null;\r\n const match = text.trim().match(/^\\s*(\\d{1,2})\\s*:\\s*(\\d{2})(?:\\s*([aApP][mM]))?\\s*$/);\r\n if (!match) return null;\r\n const hour = parseInt(match[1], 10);\r\n const minute = parseInt(match[2], 10);\r\n const meridiem = (match[3] ? match[3].toLowerCase() : 'am') as 'am' | 'pm';\r\n if (hour < 1 || hour > 12) return null;\r\n if (minute < 0 || minute > 59) return null;\r\n return { hour12: hour, minute, meridiem };\r\n }\r\n\r\n private parseValue(value24: string | null | undefined): ParsedTime | null {\r\n if (!value24) return null;\r\n const match = value24.match(/^(\\d{2}):(\\d{2})$/);\r\n if (!match) return null;\r\n const hour24 = parseInt(match[1], 10);\r\n const minute = parseInt(match[2], 10);\r\n if (hour24 < 0 || hour24 > 23) return null;\r\n if (minute < 0 || minute > 59) return null;\r\n const meridiem: 'am' | 'pm' = hour24 < 12 ? 'am' : 'pm';\r\n let hour12 = hour24 % 12;\r\n if (hour12 === 0) hour12 = 12;\r\n return { hour12, minute, meridiem };\r\n }\r\n\r\n private scrollToSelection(retries = 3) {\r\n if (!this.overlayRef || !this.overlayRef.hasAttached()) {\r\n return;\r\n }\r\n\r\n const hourScrolled = this.scrollColumn(this.hourOptions, this.hours12, this.selectedHour12);\r\n const minuteScrolled = this.scrollColumn(this.minuteOptions, this.minutes, this.selectedMinute);\r\n const meridiemScrolled = this.scrollColumn(this.meridiemOptions, this.meridiems, this.selectedMeridiem);\r\n\r\n const hasSelection =\r\n this.selectedHour12 !== null || this.selectedMinute !== null || this.selectedMeridiem !== null;\r\n\r\n if (hasSelection && !(hourScrolled || minuteScrolled || meridiemScrolled) && retries > 0) {\r\n setTimeout(() => this.scrollToSelection(retries - 1), 50);\r\n }\r\n }\r\n\r\n private scrollColumn<T>(\r\n query: QueryList<ElementRef<HTMLElement>>,\r\n values: readonly T[],\r\n selected: T | null,\r\n ): boolean {\r\n if (!query || selected === null) {\r\n return false;\r\n }\r\n const index = values.findIndex((value) => value === selected);\r\n if (index < 0) {\r\n return false;\r\n }\r\n const elements = query.toArray();\r\n const element = elements[index]?.nativeElement;\r\n if (!element) {\r\n return false;\r\n }\r\n try {\r\n element.scrollIntoView({ block: 'center' });\r\n } catch {\r\n element.scrollIntoView();\r\n }\r\n return true;\r\n }\r\n}\r\n","<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n <div class=\"fakeinput-wrapp\">\r\n <div class=\"fakeinput\" [ngClass]=\"{ errorinput: error, disabledinput: disabled }\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon-m {{ internalIcon }}\"></i>\r\n }\r\n <input\r\n type=\"text\"\r\n [disabled]=\"disabled\"\r\n placeholder=\"hh:mm am/pm\"\r\n [value]=\"displayValue\"\r\n #timeInput\r\n (input)=\"onInput(timeInput.value)\"\r\n (blur)=\"onBlur()\"\r\n (keydown)=\"onKeydown($event)\"\r\n />\r\n <ui-button class=\"side-button\" type=\"ghost\" color=\"black\" [iconOnly]=\"true\" size=\"s\" icon=\"ri-arrow-down-wide-line\" [disabled]=\"disabled\" (click)=\"openOverlay()\"></ui-button>\r\n </div>\r\n \r\n <!-- Overlay simple sin estilos: 3 columnas (hora, minuto, am/pm) -->\r\n <ng-template #overlayTemplate>\r\n <div class=\"input-options\">\r\n \r\n <div class=\"time-overlay\">\r\n <div class=\"time-col hours\">\r\n @for (h of hours12; track $index) {\r\n <div\r\n #hourOption\r\n class=\"time-item\"\r\n [class.selected]=\"h === selectedHour12\"\r\n (click)=\"pickHour(h)\"\r\n >\r\n {{ h }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"time-col minutes\">\r\n @for (m of minutes; track $index) {\r\n <div\r\n #minuteOption\r\n class=\"time-item\"\r\n [class.selected]=\"m === selectedMinute\"\r\n (click)=\"pickMinute(m)\"\r\n >\r\n {{ m < 10 ? ('0' + m) : m }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"time-col meridiem\">\r\n @for (md of meridiems; track $index) {\r\n <div\r\n #meridiemOption\r\n class=\"time-item\"\r\n [class.selected]=\"md === selectedMeridiem\"\r\n (click)=\"pickMeridiem(md)\"\r\n >\r\n {{ md }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</ui-input-wrapper>\r\n","export interface PhoneCountry {\n name: string;\n iso2: string;\n dialCode: string;\n priority?: number;\n areaCodes?: string[];\n}\n\nexport const PHONE_COUNTRIES: PhoneCountry[] = [\n { name: 'Argentina', iso2: 'ar', dialCode: '54' },\n { name: 'Australia', iso2: 'au', dialCode: '61' },\n { name: 'Bolivia', iso2: 'bo', dialCode: '591' },\n { name: 'Brazil', iso2: 'br', dialCode: '55' },\n { name: 'Canada', iso2: 'ca', dialCode: '1' },\n { name: 'Chile', iso2: 'cl', dialCode: '56' },\n { name: 'China', iso2: 'cn', dialCode: '86' },\n { name: 'Colombia', iso2: 'co', dialCode: '57' },\n { name: 'Costa Rica', iso2: 'cr', dialCode: '506' },\n { name: 'Dominican Republic', iso2: 'do', dialCode: '1', areaCodes: ['809', '829', '849'] },\n { name: 'Ecuador', iso2: 'ec', dialCode: '593' },\n { name: 'El Salvador', iso2: 'sv', dialCode: '503' },\n { name: 'France', iso2: 'fr', dialCode: '33' },\n { name: 'Germany', iso2: 'de', dialCode: '49' },\n { name: 'Guatemala', iso2: 'gt', dialCode: '502' },\n { name: 'Honduras', iso2: 'hn', dialCode: '504' },\n { name: 'Italy', iso2: 'it', dialCode: '39' },\n { name: 'Japan', iso2: 'jp', dialCode: '81' },\n { name: 'Mexico', iso2: 'mx', dialCode: '52' },\n { name: 'Netherlands', iso2: 'nl', dialCode: '31' },\n { name: 'New Zealand', iso2: 'nz', dialCode: '64' },\n { name: 'Panama', iso2: 'pa', dialCode: '507' },\n { name: 'Paraguay', iso2: 'py', dialCode: '595' },\n { name: 'Peru', iso2: 'pe', dialCode: '51' },\n { name: 'Portugal', iso2: 'pt', dialCode: '351' },\n { name: 'Spain', iso2: 'es', dialCode: '34' },\n { name: 'United Kingdom', iso2: 'gb', dialCode: '44' },\n { name: 'United States', iso2: 'us', dialCode: '1' },\n { name: 'Uruguay', iso2: 'uy', dialCode: '598' },\n { name: 'Venezuela', iso2: 've', dialCode: '58' }\n];\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, Input, OnChanges, OnDestroy, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef, forwardRef, inject } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { ButtonColor } from '../../button/button.component';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { PhoneCountry, PHONE_COUNTRIES } from './phone-countries.data';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\nexport interface UicPhoneInputValue {\r\n countryIso2: string;\r\n dialCode: string;\r\n nationalNumber: string;\r\n internationalNumber: string;\r\n}\r\n\r\ntype PhoneInputModel = UicPhoneInputValue | null;\r\nconst base = createValueAccessor<PhoneInputModel>();\r\n\r\n@Component({\r\n selector: 'ui-phone-input',\r\n imports: [CommonModule, InputWrapperComponent],\r\n templateUrl: './phone-input.component.html',\r\n styleUrls: ['../input.component.scss', './phone-input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicPhoneInputComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicPhoneInputComponent extends base implements OnChanges, OnDestroy {\r\n @Input() icon = '';\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() internalIcon = '';\r\n @Input() internalIconColor: ButtonColor = 'black'; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm';\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n @Input() placeholder = 'Ingresa un numero';\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n @Input() preferredCountries: string[] = ['pe', 'es', 'us'];\r\n @Input() flagPath = 'https://flagcdn.com/{{code}}.svg';\r\n @Input() set countries(value: PhoneCountry[]) {\r\n this._countries = value?.length ? value : PHONE_COUNTRIES;\r\n this.resetCountryLists();\r\n }\r\n get countries(): PhoneCountry[] {\r\n return this._countries;\r\n }\r\n\r\n @ViewChild('searchInput') private readonly searchInput?: ElementRef<HTMLInputElement>;\r\n @ViewChild('dropdownTemplate') private readonly dropdownTemplate?: TemplateRef<any>;\r\n\r\n dropdownOpen = false;\r\n searchTerm = '';\r\n phoneNumber = '';\r\n selectedCountry!: PhoneCountry;\r\n filteredCountries: PhoneCountry[] = [];\r\n readonly dropdownId = `phone-dropdown-${Math.random().toString(36).slice(2, 8)}`;\r\n private pendingNormalizedValue: UicPhoneInputValue | null = null;\r\n private changeRegistered = false;\r\n\r\n private _countries: PhoneCountry[] = PHONE_COUNTRIES;\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private overlayRef?: OverlayRef;\r\n private readonly overlayPositions: ConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' }\r\n ];\r\n\r\n constructor() {\r\n super();\r\n this.resetCountryLists();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['preferredCountries'] && !changes['preferredCountries'].firstChange) {\r\n this.selectedCountry = this.getDefaultCountry();\r\n this.emitValue();\r\n }\r\n\r\n if (changes['disabled'] && this.disabled && this.dropdownOpen) {\r\n this.closeDropdown();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.closeDropdown();\r\n }\r\n\r\n override writeValue(value: PhoneInputModel | string): void {\r\n const normalizedValue: PhoneInputModel = typeof value === 'string' ? this.parseStringValue(value) : value;\r\n this.pendingNormalizedValue = typeof value === 'string' ? normalizedValue : null;\r\n super.writeValue(normalizedValue);\r\n\r\n if (!normalizedValue) {\r\n this.phoneNumber = '';\r\n this.selectedCountry = this.getDefaultCountry();\r\n return;\r\n }\r\n\r\n const matchedCountry =\r\n this.countries.find(country => country.iso2 === normalizedValue.countryIso2) ??\r\n this.countries.find(country => country.dialCode === normalizedValue.dialCode);\r\n\r\n this.selectedCountry = matchedCountry ?? this.getDefaultCountry();\r\n this.phoneNumber = (normalizedValue.nationalNumber ?? '').replace(/\\D/g, '');\r\n\r\n if (typeof value === 'string') {\r\n this.propagateNormalizedValue(normalizedValue);\r\n }\r\n }\r\n\r\n override registerOnChange(fn: any): void {\r\n super.registerOnChange(fn);\r\n this.changeRegistered = true;\r\n if (this.pendingNormalizedValue) {\r\n this.onChange(this.pendingNormalizedValue);\r\n this.pendingNormalizedValue = null;\r\n }\r\n }\r\n\r\n toggleDropdown(): void {\r\n if (this.disabled || this.loading) return;\r\n\r\n if (this.dropdownOpen) {\r\n this.closeDropdown();\r\n } else {\r\n this.openDropdown();\r\n }\r\n }\r\n\r\n selectCountry(country: PhoneCountry): void {\r\n this.selectedCountry = country;\r\n this.closeDropdown();\r\n this.emitValue();\r\n }\r\n\r\n onNumberInput(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n const digits = input.value.replace(/\\D/g, '');\r\n this.phoneNumber = digits;\r\n input.value = digits;\r\n this.emitValue();\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n\r\n onSearchChange(event: Event): void {\r\n const term = (event.target as HTMLInputElement).value.trim().toLowerCase();\r\n this.searchTerm = term;\r\n if (!term) {\r\n this.filteredCountries = [...this.countries];\r\n return;\r\n }\r\n this.filteredCountries = this.countries.filter(country => {\r\n const matchesName = country.name.toLowerCase().includes(term);\r\n const matchesIso = country.iso2.toLowerCase().includes(term);\r\n const matchesDial = country.dialCode.startsWith(term.replace('+', ''));\r\n return matchesName || matchesIso || matchesDial;\r\n });\r\n }\r\n\r\n clearSearch(): void {\r\n this.searchTerm = '';\r\n this.filteredCountries = [...this.countries];\r\n if (this.dropdownOpen) {\r\n this.searchInput?.nativeElement.focus();\r\n }\r\n }\r\n\r\n getFlagUrl(iso: string): string {\r\n const code = iso.toLowerCase();\r\n if (this.flagPath.includes('{{code}}')) {\r\n return this.flagPath.replace('{{code}}', code);\r\n }\r\n const safeBase = this.flagPath.replace(/\\/$/, '');\r\n return `${safeBase}/${code}.svg`;\r\n }\r\n\r\n private emitValue(): void {\r\n if (!this.phoneNumber) {\r\n this.notifyChange(null);\r\n return;\r\n }\r\n\r\n const value: UicPhoneInputValue = {\r\n countryIso2: this.selectedCountry.iso2,\r\n dialCode: this.selectedCountry.dialCode,\r\n nationalNumber: this.phoneNumber,\r\n internationalNumber: `+${this.selectedCountry.dialCode}${this.phoneNumber}`\r\n };\r\n this.notifyChange(value);\r\n }\r\n\r\n private openDropdown(): void {\r\n if (!this.dropdownTemplate) {\r\n return;\r\n }\r\n\r\n const trigger = this.host.nativeElement.querySelector('.fakeinput') as HTMLElement | null;\r\n const width = trigger?.getBoundingClientRect().width ?? undefined;\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(trigger ?? this.host.nativeElement)\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n width,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n });\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.filteredCountries = [...this.countries];\r\n this.dropdownOpen = true;\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeDropdown());\r\n this.overlayRef.keydownEvents().subscribe(event => {\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.closeDropdown();\r\n }\r\n });\r\n\r\n setTimeout(() => this.searchInput?.nativeElement.focus());\r\n }\r\n\r\n private closeDropdown(): void {\r\n this.dropdownOpen = false;\r\n this.resetSearch();\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = undefined;\r\n }\r\n }\r\n\r\n private resetSearch(): void {\r\n this.searchTerm = '';\r\n this.filteredCountries = [...this.countries];\r\n }\r\n\r\n private resetCountryLists(): void {\r\n this.filteredCountries = [...this.countries];\r\n this.selectedCountry = this.getDefaultCountry();\r\n }\r\n\r\n private getDefaultCountry(): PhoneCountry {\r\n const preferred = this.preferredCountries\r\n .map(code => this.countries.find(country => country.iso2 === code))\r\n .find((country): country is PhoneCountry => !!country);\r\n\r\n return preferred ?? this.countries[0];\r\n }\r\n\r\n private parseStringValue(value: string): UicPhoneInputValue | null {\r\n const digits = value.replace(/\\D/g, '');\r\n if (!digits) return null;\r\n\r\n const matchedCountry = this.findCountryByPrefix(digits) ?? this.getDefaultCountry();\r\n const nationalNumber = digits.startsWith(matchedCountry.dialCode)\r\n ? digits.slice(matchedCountry.dialCode.length)\r\n : digits;\r\n\r\n return {\r\n countryIso2: matchedCountry.iso2,\r\n dialCode: matchedCountry.dialCode,\r\n nationalNumber,\r\n internationalNumber: `+${matchedCountry.dialCode}${nationalNumber}`\r\n };\r\n }\r\n\r\n private findCountryByPrefix(number: string): PhoneCountry | undefined {\r\n return this.countries.reduce<PhoneCountry | undefined>((best, country) => {\r\n if (!number.startsWith(country.dialCode)) return best;\r\n if (!best || country.dialCode.length > best.dialCode.length) {\r\n return country;\r\n }\r\n return best;\r\n }, undefined);\r\n }\r\n\r\n private propagateNormalizedValue(value: PhoneInputModel): void {\r\n if (typeof value === 'string') return;\r\n\r\n this.value = value;\r\n this.valueChange.emit(value);\r\n\r\n if (this.changeRegistered) {\r\n this.onChange(value);\r\n this.pendingNormalizedValue = null;\r\n } else {\r\n this.pendingNormalizedValue = value;\r\n }\r\n }\r\n}\r\n","\r\n<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n <div\r\n class=\"fakeinput phone-input\"\r\n [ngClass]=\"{\r\n errorinput: error,\r\n disabledinput: disabled,\r\n 'loading-input': loading,\r\n open: dropdownOpen\r\n }\"\r\n >\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon {{ internalIcon }}\"></i>\r\n }\r\n \r\n <button\r\n type=\"button\"\r\n class=\"phone-input__selector\"\r\n (click)=\"toggleDropdown()\"\r\n [disabled]=\"disabled || loading\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"dropdownOpen\"\r\n [attr.aria-controls]=\"dropdownOpen ? dropdownId : null\"\r\n [attr.aria-label]=\"selectedCountry.name + ' codigo ' + selectedCountry.dialCode\"\r\n >\r\n <img\r\n class=\"phone-input__flag\"\r\n [src]=\"getFlagUrl(selectedCountry.iso2)\"\r\n [alt]=\"selectedCountry.name\"\r\n />\r\n <i class=\"ri-arrow-down-s-line phone-input__chevron\" aria-hidden=\"true\"></i>\r\n </button>\r\n <div class=\"phone-input__divider\" aria-hidden=\"true\"></div>\r\n <div class=\"phone-input__dial\">+{{ selectedCountry.dialCode }}</div>\r\n \r\n \r\n <input\r\n type=\"tel\"\r\n class=\"phone-input__field\"\r\n [attr.placeholder]=\"placeholder\"\r\n [disabled]=\"disabled || loading\"\r\n inputmode=\"tel\"\r\n [value]=\"phoneNumber\"\r\n (input)=\"onNumberInput($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n </div>\r\n</ui-input-wrapper>\r\n\r\n<ng-template #dropdownTemplate>\r\n <datalist class=\"phone-input__dropdown\" [attr.id]=\"dropdownId\">\r\n <div class=\"phone-input__search\">\r\n <i class=\"ri-search-line\"></i>\r\n <input\r\n #searchInput\r\n type=\"text\"\r\n [value]=\"searchTerm\"\r\n (input)=\"onSearchChange($event)\"\r\n placeholder=\"Buscar pais o codigo\"\r\n autocomplete=\"off\"\r\n />\r\n @if (searchTerm) {\r\n <button type=\"button\" class=\"phone-input__clear\" (click)=\"clearSearch()\" aria-label=\"Limpiar busqueda\">\r\n <i class=\"ri-close-line\"></i>\r\n </button>\r\n }\r\n </div>\r\n\r\n <div class=\"phone-input__list\">\r\n @for (country of filteredCountries; track country.iso2) {\r\n <button\r\n type=\"button\"\r\n class=\"phone-input__option\"\r\n (click)=\"selectCountry(country)\"\r\n [attr.aria-selected]=\"country.iso2 === selectedCountry.iso2\"\r\n [attr.data-iso]=\"country.iso2\"\r\n [attr.title]=\"country.name + ' +' + country.dialCode\"\r\n [attr.aria-label]=\"country.name + ' +' + country.dialCode\"\r\n >\r\n <img\r\n class=\"phone-input__flag\"\r\n [src]=\"getFlagUrl(country.iso2)\"\r\n [alt]=\"country.name\"\r\n />\r\n {{country.name}}\r\n <span class=\"phone-input__dial\">(+{{ country.dialCode }})</span>\r\n </button>\r\n }\r\n\r\n @if (filteredCountries.length === 0) {\r\n <div class=\"phone-input__empty\">No se encontraron resultados</div>\r\n }\r\n </div>\r\n </datalist>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, forwardRef, Input, ViewChild } from '@angular/core';\r\nimport { ButtonColor, UicButtonComponent } from '../../button/button.component';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\nexport type UicFileInputValue = { name: string; blob?: Blob, path?:string };\r\n\r\nconst base = createValueAccessor<UicFileInputValue[]>();\r\n\r\n@Component({\r\n selector: 'ui-file-input',\r\n imports: [CommonModule,UicButtonComponent, InputWrapperComponent],\r\n templateUrl: './file-input.component.html',\r\n styleUrls: ['../input.component.scss','./file-input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicFileInputComponent),\r\n multi: true\r\n }\r\n ],\r\n})\r\nexport class UicFileInputComponent extends base {\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() internalIconColor: ButtonColor = 'black'; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n // FUNCTIONS\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n @Input() multy = false;\r\n @Input() fileTypes: string[] | string | null = null;\r\n\r\n @ViewChild('fileInput') private fileInput?: ElementRef<HTMLInputElement>;\r\n\r\n override value: UicFileInputValue[] = [];\r\n files: UicFileInputValue[] = [];\r\n isDragging = false;\r\n\r\n get acceptAttribute(): string | null {\r\n if (!this.fileTypes) {\r\n return null;\r\n }\r\n return Array.isArray(this.fileTypes) ? this.fileTypes.join(',') : this.fileTypes;\r\n }\r\n\r\n openFileBrowser(): void {\r\n if (this.disabled || this.loading) {\r\n return;\r\n }\r\n this.fileInput?.nativeElement.click();\r\n }\r\n\r\n onNativeInputChange(event: Event): void {\r\n const input = event.target as HTMLInputElement | null;\r\n if (!input || !input.files || this.disabled || this.loading) {\r\n return;\r\n }\r\n\r\n const selectedFiles = Array.from(input.files);\r\n this.processIncomingFiles(selectedFiles);\r\n\r\n input.value = '';\r\n }\r\n\r\n removeFile(index: number): void {\r\n if (this.disabled || this.loading) {\r\n return;\r\n }\r\n const updated = this.files.filter((_, i) => i !== index);\r\n this.applyFiles(updated);\r\n }\r\n\r\n onDragOver(event: DragEvent): void {\r\n if (this.disabled || this.loading) {\r\n return;\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (event.dataTransfer) {\r\n event.dataTransfer.dropEffect = 'copy';\r\n }\r\n this.isDragging = true;\r\n }\r\n\r\n onDragLeave(event: DragEvent): void {\r\n if (this.disabled || this.loading) {\r\n return;\r\n }\r\n if (event.target === event.currentTarget) {\r\n this.isDragging = false;\r\n }\r\n }\r\n\r\n getIcon(file: UicFileInputValue): string {\r\n const mime = file.blob?.type?.toLowerCase() ?? '';\r\n const extension = file.name.split('.').pop()?.toLowerCase() ?? '';\r\n\r\n if (mime.startsWith('image/') || ['png', 'jpg', 'jpeg', 'gif', 'bmp', 'webp', 'svg'].includes(extension)) {\r\n return 'ri-file-image-line';\r\n }\r\n\r\n if (this.isExcelType(mime, extension)) {\r\n return 'ri-file-excel-line';\r\n }\r\n\r\n if (this.isWordType(mime, extension)) {\r\n return 'ri-file-word-line';\r\n }\r\n\r\n return 'ri-file-line';\r\n }\r\n\r\n onDrop(event: DragEvent): void {\r\n if (this.disabled || this.loading) {\r\n return;\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDragging = false;\r\n\r\n const files = event.dataTransfer?.files;\r\n if (!files || files.length === 0) {\r\n return;\r\n }\r\n\r\n this.processIncomingFiles(Array.from(files));\r\n }\r\n\r\n override writeValue(value: UicFileInputValue[] | null): void {\r\n const normalized = Array.isArray(value)\r\n ? value\r\n .filter((item): item is UicFileInputValue => !!item && !!item.name && !!item.blob)\r\n .map((item) => ({\r\n name: item.name,\r\n blob: item.blob,\r\n }))\r\n : [];\r\n this.files = normalized;\r\n super.writeValue(normalized as UicFileInputValue[]);\r\n }\r\n\r\n private processIncomingFiles(fileList: File[]): void {\r\n if (!fileList.length) {\r\n return;\r\n }\r\n\r\n const allowedFiles = this.filterAllowedFiles(fileList);\r\n if (!allowedFiles.length) {\r\n return;\r\n }\r\n\r\n const mapped = allowedFiles.map<UicFileInputValue>((file) => ({\r\n name: file.name,\r\n blob: file,\r\n }));\r\n\r\n const updated = this.multy ? this.mergeFiles(mapped) : mapped.slice(0, 1);\r\n this.applyFiles(updated);\r\n }\r\n\r\n private mergeFiles(newFiles: UicFileInputValue[]): UicFileInputValue[] {\r\n return [...this.files, ...newFiles];\r\n }\r\n\r\n private applyFiles(files: UicFileInputValue[], emit = true): void {\r\n this.files = files;\r\n if (emit) {\r\n const payload = files.map((file) => ({\r\n name: file.name,\r\n blob: file.blob,\r\n }));\r\n this.notifyChange(payload);\r\n }\r\n }\r\n\r\n private filterAllowedFiles(files: File[]): File[] {\r\n if (!this.acceptAttribute) {\r\n return files;\r\n }\r\n\r\n const acceptTokens = this.acceptAttribute\r\n .split(',')\r\n .map((token) => token.trim().toLowerCase())\r\n .filter(Boolean);\r\n\r\n if (!acceptTokens.length) {\r\n return files;\r\n }\r\n\r\n return files.filter((file) => this.matchesAcceptTokens(file, acceptTokens));\r\n }\r\n\r\n private matchesAcceptTokens(file: File, tokens: string[]): boolean {\r\n const mime = file.type.toLowerCase();\r\n const extension = file.name.includes('.') ? `.${file.name.split('.').pop()!.toLowerCase()}` : '';\r\n\r\n return tokens.some((token) => {\r\n if (!token) {\r\n return false;\r\n }\r\n\r\n if (token.endsWith('/*')) {\r\n const prefix = token.slice(0, -1);\r\n return mime.startsWith(prefix);\r\n }\r\n\r\n if (token.startsWith('.')) {\r\n return token === extension;\r\n }\r\n\r\n return token === mime;\r\n });\r\n }\r\n\r\n private isExcelType(mime: string, extension: string): boolean {\r\n const normalizedExtensionMatches = ['xls', 'xlsx', 'xlsm', 'xlsb'].includes(extension);\r\n return (\r\n mime === 'application/vnd.ms-excel' ||\r\n mime === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\r\n mime === 'application/vnd.ms-excel.sheet.macroenabled.12' ||\r\n mime === 'application/vnd.ms-excel.sheet.binary.macroenabled.12' ||\r\n mime.includes('spreadsheetml') ||\r\n normalizedExtensionMatches\r\n );\r\n }\r\n\r\n private isWordType(mime: string, extension: string): boolean {\r\n const normalizedExtensionMatches = ['doc', 'docx', 'docm', 'dot', 'dotx'].includes(extension);\r\n return (\r\n mime === 'application/msword' ||\r\n mime === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ||\r\n mime === 'application/vnd.ms-word.document.macroenabled.12' ||\r\n mime.includes('wordprocessingml') ||\r\n normalizedExtensionMatches\r\n );\r\n }\r\n\r\n downloadFile(item:UicFileInputValue){\r\n \r\n }\r\n}\r\n","\r\n<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n <div class=\"fileinput\" [ngClass]=\"{'errorinput':error, 'disabledinput':disabled, 'dragging':isDragging}\">\r\n <input\r\n #fileInput\r\n class=\"fileinput-native\"\r\n type=\"file\"\r\n (change)=\"onNativeInputChange($event)\"\r\n [attr.multiple]=\"multy ? '' : null\"\r\n [attr.accept]=\"acceptAttribute\"\r\n [disabled]=\"disabled || loading\"\r\n />\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon {{internalIcon}}\" ></i>\r\n }\r\n <div class=\"fileinput-content\" >\r\n @if (!disabled && !loading) {\r\n <ui-button\r\n type=\"bordered\"\r\n color=\"black\"\r\n size=\"s\"\r\n (click)=\"openFileBrowser()\"\r\n >Seleccionar</ui-button>\r\n }\r\n <div\r\n class=\"fileinput-reel\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n >\r\n @if (!files.length) {\r\n <div class=\"fileinput-empty\">\r\n Aun no hay archivos\r\n </div>\r\n } @else {\r\n @for (item of files; track $index) {\r\n <div class=\"fileinput-item\">\r\n <i class=\"fileinput-item__icon ri {{ getIcon(item) }}\" aria-hidden=\"true\"></i>\r\n <span (click)=\"downloadFile(item)\" class=\"fileinput-item__name\">{{item.name}}</span>\r\n <ui-button\r\n size=\"s\"\r\n [iconOnly]=\"true\"\r\n type=\"ghost\"\r\n icon=\"ri-close-line\"\r\n (click)=\"removeFile($index)\"\r\n [disabled]=\"disabled || loading\"\r\n ></ui-button>\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</ui-input-wrapper>","import { Alert } from './alert.model';\r\n\r\nlet nextId = 1;\r\n\r\nexport function createSuccessAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n icon:'ri-check-line',\r\n type: 'success',\r\n duration: 3000,\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createErrorAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n type: 'error',\r\n icon:'ri-error-warning-line',\r\n duration: 5000,\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createWarningAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n type: 'warning',\r\n icon:'ri-alarm-warning-line',\r\n duration: 4000,\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createInfoAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n icon:'ri-information-2-line',\r\n type: 'info',\r\n duration: 3000,\r\n ...options,\r\n };\r\n}","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Alert, AlertConfigParams } from '../components/push-alerts/alert.model';\r\nimport { createErrorAlert, createSuccessAlert, createWarningAlert } from '../components/push-alerts/alert.helpers';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UicPushAlertService {\r\n\r\n autoIncId = 0;\r\n private readonly alerts$ = new Subject<Alert>();\r\n\r\n get stream() {\r\n return this.alerts$.asObservable();\r\n }\r\n\r\n show(alertData:AlertConfigParams) {\r\n this.autoIncId++;\r\n const alert: Alert = {...alertData,id:this.autoIncId};\r\n this.alerts$.next( alert );\r\n }\r\n\r\n success(message: string, options?: Partial<Alert>) {\r\n this.show(createSuccessAlert(message, options));\r\n }\r\n\r\n error(message: string, options?: Partial<Alert>) {\r\n this.show(createErrorAlert(message, options));\r\n }\r\n\r\n warning(message: string, options?: Partial<Alert>) {\r\n this.show(createWarningAlert(message, options));\r\n }\r\n\r\n}\r\n","import { Component, Input, SimpleChanges, NgZone, inject } from '@angular/core';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FormField } from '../form.models';\r\nimport { UicSelectComponent } from '../../inputs/select/select.component';\r\nimport { UicInputComponent } from '../../inputs/input/input.component';\r\nimport { UicCheckboxComponent } from '../../inputs/checkbox/checkbox.component';\r\nimport { UicRadioComponent } from '../../inputs/ui-radio/ui-radio.component';\r\nimport { UicSliderComponent } from '../../inputs/ui-slider/ui-slider.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UicDatePickerComponent } from '../../inputs/date-picker/date-picker.component';\r\nimport { UicPoolOptionsComponent } from '../../pool-options/pool-options.component';\r\nimport { UicSearcherComponent } from '../../inputs/uic-searcher/uic-searcher.component';\r\nimport { UicMultySelectComponent } from '../../inputs/multy-select/multy-select.component';\r\nimport { UicTimePickerComponent } from '../../inputs/time-picker/time-picker.component';\r\nimport { UicPhoneInputComponent } from '../../inputs/phone-input/phone-input.component';\r\nimport { UicFileInputComponent } from '../../inputs/file-input/file-input.component';\r\nimport { ButtonColor, UicButtonComponent } from '../../button/button.component';\r\nimport { UicPushAlertService } from '../../../services/push-alert.service';\r\n\r\n@Component({\r\n selector: 'ui-dynamic-form',\r\n imports: [CommonModule, \r\n UicDatePickerComponent,\r\n ReactiveFormsModule, \r\n UicSliderComponent, \r\n UicButtonComponent,\r\n UicPoolOptionsComponent,\r\n UicTimePickerComponent,\r\n UicRadioComponent,\r\n UicSearcherComponent,\r\n UicMultySelectComponent,\r\n UicFileInputComponent,\r\n UicSelectComponent, \r\n UicInputComponent, \r\n UicCheckboxComponent,\r\n UicRadioComponent,\r\n UicPhoneInputComponent,\r\n FormsModule],\r\n templateUrl: './dynamic-form.component.html',\r\n styleUrl: './dynamic-form.component.scss'\r\n})\r\nexport class UicDynamicFormComponent {\r\n @Input() fields: FormField[] = [];\r\n @Input({ required: true }) form!: FormGroup;\r\n @Input() disabled = false;\r\n @Input() voiceToTextSilenceMs = 1000;\r\n\r\n private readonly alertS = inject(UicPushAlertService)\r\n\r\n colorToIcon: Record<string, string> = {\r\n red: 'ri-error-warning-line',\r\n yellow: 'ri-error-warning-line',\r\n green: 'ri-checkbox-circle-line',\r\n };\r\n \r\n flag = false;\r\n @Input() cols = 2;\r\n listeningField: string | null = null;\r\n\r\n constructor(private ngZone: NgZone) {}\r\n\r\n // MANEJO DE ERRORES\r\n getErrorMessages(field: FormField): string[] {\r\n const control = this.form.get(field.name);\r\n if (!control?.errors) return [];\r\n if (!(control.touched || control.dirty)) return [];\r\n\r\n return Object.keys(control.errors).map(errorKey => {\r\n const error = control.errors?.[errorKey];\r\n const mapper = this.errorMessages[errorKey];\r\n return mapper ? mapper(error, field) : `${field.label ?? field.name} es inválido.`;\r\n });\r\n }\r\n\r\n isListening(fieldName: string): boolean {\r\n return this.listeningField === fieldName;\r\n }\r\n\r\n private readonly errorMessages: Record<string, (error: any, field: FormField) => string> = {\r\n required: (_err, field) => `${field.label ?? field.name} es obligatorio.`,\r\n min: (err, field) => `${field.label ?? field.name} debe ser mayor o igual a ${err.min}.`,\r\n max: (err, field) => `${field.label ?? field.name} debe ser menor o igual a ${err.max}.`,\r\n minlength: (err, field) => `${field.label ?? field.name} debe tener al menos ${err.requiredLength} caracteres.`,\r\n maxlength: (err, field) => `${field.label ?? field.name} no puede superar ${err.requiredLength} caracteres.`,\r\n pattern: (_err, field) => `${field.label ?? field.name} no tiene el formato correcto.`\r\n };\r\n\r\n getInputColor(\r\n field: FormField,\r\n value: string\r\n ): ButtonColor {\r\n const scale = field.internalColorScale;\r\n const cv = +value;\r\n const order = field.internalColorScaleOrder??'asc';\r\n\r\n if (!Array.isArray(scale) || scale.length <= 1 || isNaN(cv)) {\r\n return field.internalIconColor || 'black';\r\n }\r\n\r\n const sorted = [...scale].sort((a, b) => a - b);\r\n const len = sorted.length;\r\n\r\n if (len === 2) {\r\n const [min, max] = sorted;\r\n return cv > min && cv <= max ? 'green' : 'red';\r\n }\r\n\r\n const colorSchemes:any = {\r\n asc: {\r\n 3: ['red', 'green'],\r\n 4: ['red', 'yellow', 'green'],\r\n },\r\n desc: {\r\n 3: ['green', 'red'],\r\n 4: ['green', 'yellow', 'red'],\r\n },\r\n } as const;\r\n\r\n const colors = colorSchemes[order][len] || [];\r\n for (let i = 0; i < colors.length; i++) {\r\n if (cv > sorted[i] && cv <= sorted[i + 1]) return colors[i];\r\n }\r\n\r\n return 'black';\r\n }\r\n\r\n getIconByColor(field:FormField, color:string){\r\n if ( !field.internalIcon && field.internalColorScale && field.internalColorScale.length > 1 )\r\n return this.colorToIcon[color];\r\n else return \"\";\r\n }\r\n \r\n private recognition: any = null;\r\n private voiceStopTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n private clearVoiceStopTimer() {\r\n if (this.voiceStopTimer) {\r\n clearTimeout(this.voiceStopTimer);\r\n this.voiceStopTimer = null;\r\n }\r\n }\r\n\r\n private scheduleVoiceStop(recognition: any) {\r\n this.clearVoiceStopTimer();\r\n this.voiceStopTimer = setTimeout(() => recognition.stop?.(), this.voiceToTextSilenceMs);\r\n }\r\n\r\n voiceToText(target: HTMLTextAreaElement, fieldName: string){\r\n if (typeof window === 'undefined') return;\r\n\r\n const SpeechRecognitionCtor =\r\n (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\r\n\r\n if (!SpeechRecognitionCtor) {\r\n this.alertS.show({\r\n type:'warning',\r\n icon: 'ri-bug-line',\r\n title:'Incompatibilidad de navegador',\r\n message:'Este navegador no sorporta esta característica.'\r\n });\r\n return;\r\n }\r\n\r\n if (this.recognition) {\r\n this.recognition.abort?.();\r\n this.recognition = null;\r\n this.listeningField = null;\r\n this.clearVoiceStopTimer();\r\n }\r\n\r\n const recognition = new SpeechRecognitionCtor();\r\n recognition.lang = 'es-ES';\r\n recognition.interimResults = false;\r\n recognition.maxAlternatives = 1;\r\n recognition.continuous = true;\r\n\r\n recognition.onstart = () => {\r\n this.ngZone.run(() => {\r\n this.listeningField = fieldName;\r\n });\r\n this.scheduleVoiceStop(recognition);\r\n };\r\n\r\n recognition.onresult = (event: any) => {\r\n const transcript = event?.results?.[0]?.[0]?.transcript ?? '';\r\n if (!transcript) return;\r\n\r\n const currentValue = target.value ?? '';\r\n const needsSpace =\r\n currentValue.length > 0 &&\r\n !currentValue.endsWith(' ') &&\r\n !transcript.startsWith(' ');\r\n const updatedValue = `${currentValue}${needsSpace ? ' ' : ''}${transcript}`;\r\n\r\n target.value = updatedValue;\r\n target.dispatchEvent(new Event('input', { bubbles: true }));\r\n\r\n const control = this.form.get(fieldName);\r\n if (control) {\r\n this.ngZone.run(() => {\r\n control.setValue(updatedValue);\r\n control.markAsDirty();\r\n control.markAsTouched();\r\n });\r\n }\r\n this.scheduleVoiceStop(recognition);\r\n };\r\n\r\n recognition.onspeechstart = () => {\r\n this.clearVoiceStopTimer();\r\n };\r\n\r\n recognition.onspeechend = () => {\r\n this.scheduleVoiceStop(recognition);\r\n };\r\n\r\n recognition.onerror = (event: any) => {\r\n this.ngZone.run(() => {\r\n console.error('Error al intentar dictado por voz', event);\r\n this.listeningField = null;\r\n });\r\n this.clearVoiceStopTimer();\r\n };\r\n\r\n recognition.onend = () => {\r\n this.ngZone.run(() => {\r\n this.recognition = null;\r\n this.listeningField = null;\r\n });\r\n this.clearVoiceStopTimer();\r\n };\r\n\r\n this.recognition = recognition;\r\n target.focus();\r\n this.ngZone.run(() => {\r\n this.listeningField = fieldName;\r\n });\r\n recognition.start();\r\n }\r\n \r\n}\r\n\r\n","<div class=\"form\" [ngStyle]=\"{'--cols': cols, '--min': '180px'}\" [formGroup]=\"form\">\r\n @for (field of fields; track field.name) {\r\n <div class=\"col-span-{{field.colSpan || 1}}\" [class.new-line]=\"field.newLine\">\r\n \r\n @if ( ['text','number'].includes(field.type) ) {\r\n @let currentValue = form.get(field.name)?.value ?? '';\r\n @let inputColor = getInputColor(field, currentValue);\r\n <ui-input \r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [icon]=\"field.icon??''\"\r\n [disabled]=\"!!form.get(field.name)?.disabled\"\r\n [internalIconColor]=\"inputColor\"\r\n [internalIcon]=\"field.internalIcon || (currentValue != '' ? getIconByColor(field, inputColor) : '')\"\r\n [loading]=\"field.loading??false\"\r\n [tip]=\"field.tip??''\" >\r\n <input #inp\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [type]=\"field.type\"\r\n [step]=\"field.step\"\r\n [minLength]=\"field.minLength||null\"\r\n [maxlength]=\"field.maxLength||null\"\r\n [placeholder]=\"field.placeholder??field.label\"/>\r\n @if (field.maxLength && field.showCounter) {\r\n <span counter> {{inp.value.length}} /{{field.maxLength}}</span>\r\n }\r\n </ui-input>\r\n }\r\n @if ( field.type === 'textarea' ) {\r\n <ui-input \r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [icon]=\"field.icon??''\"\r\n [disabled]=\"!!form.get(field.name)?.disabled\"\r\n [internalIcon]=\"field.internalIcon??''\"\r\n [internalIconColor]=\"field.internalIconColor??'black'\"\r\n [loading]=\"field.loading??false\"\r\n [tip]=\"field.tip??''\" >\r\n <textarea #ta\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n exp\r\n [minLength]=\"field.minLength||null\"\r\n [maxlength]=\"field.maxLength||null\"\r\n [placeholder]=\"field.placeholder??field.label\"\r\n cols=\"4\"\r\n ></textarea>\r\n @if (field.voiceToTextEnabled && !form.get(field.name)?.disabled) {\r\n @let listening = isListening(field.name);\r\n <ui-button\r\n [disabled]=\"listening\"\r\n style=\"margin-bottom: 2px;\"\r\n (click)=\"voiceToText(ta, field.name)\"\r\n [icon]=\"listening?'ri-mic-fill':'ri-mic-line'\"\r\n [type]=\"listening?'filled':'bordered'\"\r\n size=\"s\"\r\n [iconOnly]=\"true\"\r\n ></ui-button>\r\n }\r\n @if (field.maxLength && field.showCounter) {\r\n <span counter> {{ta.value.length}} /{{field.maxLength}}</span>\r\n }\r\n </ui-input>\r\n }\r\n @if ( field.type === 'phone' ) {\r\n <ui-phone-input \r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [icon]=\"field.icon??''\"\r\n [internalIcon]=\"field.internalIcon??''\"\r\n [internalIconColor]=\"field.internalIconColor??'black'\"\r\n [loading]=\"field.loading??false\"\r\n [tip]=\"field.tip??''\" \r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [placeholder]=\"field.placeholder||field.label||''\"\r\n >\r\n </ui-phone-input>\r\n }\r\n @else if (field.type === 'date') {\r\n <ui-date-picker\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [internalIcon]=\"field.internalIcon??''\"\r\n [internalIconColor]=\"field.internalIconColor??'black'\"\r\n [tip]=\"field.tip??''\"\r\n [justMonth]=\"!!field.monthMode\"\r\n [min]=\"field.minDate??''\"\r\n [max]=\"field.maxDate??''\"\r\n [monthDay]=\"field.monthDay||'first'\"\r\n [formControlName]=\"field.name\"\r\n ></ui-date-picker>\r\n }\r\n @else if (field.type === 'time') {\r\n <ui-time-picker\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [internalIcon]=\"field.internalIcon??''\"\r\n [internalIconColor]=\"field.internalIconColor??'black'\"\r\n [tip]=\"field.tip??''\"\r\n [interval]=\"field.timeInterval??5\"\r\n [formControlName]=\"field.name\"\r\n ></ui-time-picker>\r\n }\r\n @else if (field.type === 'select') {\r\n <ui-select\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [internalIcon]=\"field.internalIcon??''\"\r\n [internalIconColor]=\"field.internalIconColor??'black'\"\r\n [loading]=\"field.loading??false\"\r\n [tip]=\"field.tip??''\"\r\n [formControlName]=\"field.name\"\r\n [options]=\"field.options || []\"\r\n ></ui-select>\r\n }\r\n @else if (field.type === 'multyselect') {\r\n <ui-multy-select\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [loading]=\"field.loading??false\"\r\n [internalIcon]=\"field.internalIcon??''\"\r\n [internalIconColor]=\"field.internalIconColor??'black'\"\r\n [tip]=\"field.tip??''\"\r\n [formControlName]=\"field.name\"\r\n [options]=\"field.options || []\"\r\n ></ui-multy-select>\r\n }\r\n @else if (field.type === 'searcher') {\r\n <ui-searcher\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [icon]=\"field.icon??''\"\r\n [loading]=\"field.loading??false\"\r\n [tip]=\"field.tip??''\"\r\n [searchFn]=\"field.searchFn\"\r\n [itemDisplayFn]=\"field.searchDisplayFn\"\r\n [itemIsEnabledFn]=\"field.searchIsEnabledFn\"\r\n [placeholder]=\"field.placeholder??'Buscar...'\"\r\n [error]=\"getErrorMessages(field)[0]\"\r\n ></ui-searcher>\r\n }\r\n @else if (field.type === 'file') {\r\n <ui-file-input\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [loading]=\"field.loading??false\"\r\n [internalIcon]=\"field.internalIcon??''\"\r\n [internalIconColor]=\"field.internalIconColor??'black'\"\r\n [multy]=\"field.multyEnabled??false\"\r\n [tip]=\"field.tip??''\"\r\n [fileTypes]=\"field.fileTypes??null\"\r\n [formControlName]=\"field.name\"\r\n ></ui-file-input>\r\n }\r\n @else if ( ['checkbox','switch'].includes(field.type)) {\r\n <ui-checkbox\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [placeholder]=\"field.placeholder??''\"\r\n [tip]=\"field.tip??''\"\r\n [type]=\"field.type === 'checkbox' ? 'checkbox' : 'switch'\"\r\n ></ui-checkbox>\r\n }\r\n @else if (field.type === 'radio') {\r\n <ui-radio\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [tip]=\"field.tip??''\"\r\n [loading]=\"field.loading??false\"\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [options]=\"field.options || []\"\r\n ></ui-radio>\r\n }\r\n @else if (field.type === 'slider') {\r\n <ui-slider\r\n [min]=\"field.min??0\"\r\n [max]=\"field.max??100\"\r\n [step]=\"field.sliderInterval??1\"\r\n [markerCount]=\"field.sliderMarks??5\"\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [tip]=\"field.tip??''\"\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n ></ui-slider>\r\n }\r\n @else if (field.type === 'pool') {\r\n <ui-pool-options\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [loading]=\"field.loading??false\"\r\n [multy]=\"field.multyEnabled??false\"\r\n [tip]=\"field.tip??''\"\r\n [listViewTitle]=\"field.poolTitle??'Elementos seleccionados'\"\r\n [enabledListView]=\"field.poolEnabledListView||false\"\r\n [formControlName]=\"field.name\"\r\n [options]=\"field.options || []\"\r\n ></ui-pool-options>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-skeleton-loader',\r\n imports: [ CommonModule ],\r\n templateUrl: './skeleton-loader.component.html',\r\n styleUrl: './skeleton-loader.component.scss'\r\n})\r\nexport class UicSkeletonLoaderComponent {\r\n @Input() inputs: number = 3; \r\n @Input() cols: number = 3; \r\n\r\n get gridStyle() {\r\n return {\r\n 'grid-template-columns': `repeat(${this.cols}, 1fr)`\r\n };\r\n }\r\n}\r\n","<div class=\"skeleton-form\" [ngStyle]=\"gridStyle\">\r\n @for (r of [].constructor(inputs); track $index) {\r\n <div class=\"skeleton-input-container\">\r\n <div class=\"skeleton-gradient skeleton-label\"></div>\r\n <div class=\"skeleton-gradient skeleton-input\"></div>\r\n </div>\r\n }\r\n</div>","import { Component, EventEmitter, inject, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { FormBlock, FormField, FormResult, FormSchema, uicFormValuesRecord } from '../form.models';\r\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { UicDynamicFormComponent } from '../form/dynamic-form.component';\r\nimport { UicSkeletonLoaderComponent } from '../../skeleton-loader/skeleton-loader.component';\r\nimport { AppSelectOption } from '../../inputs/select/select.component';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\n\r\n@Component({\r\n selector: 'ui-form-wrapper',\r\n imports: [UicDynamicFormComponent, \r\n UicSkeletonLoaderComponent,\r\n UicButtonComponent,\r\n ReactiveFormsModule],\r\n templateUrl: './form-wrapper.component.html',\r\n styleUrl: './form-wrapper.component.scss'\r\n})\r\nexport class UicFormWrapperComponent implements OnChanges {\r\n \r\n private readonly fb = inject(FormBuilder);\r\n form: FormGroup = this.fb.group({});\r\n currentStep = 0;\r\n \r\n @Input() schema!: FormSchema;\r\n @Input() externalData: Record<string, AppSelectOption[]> = {};\r\n @Input() loading = false;\r\n @Input() disabled = false;\r\n @Input() showButtons = false;\r\n @Input() fillSelects = false;\r\n @Input() initialValues: uicFormValuesRecord = {};\r\n \r\n @Output() formSubmit = new EventEmitter<FormResult>();\r\n @Output() formChange = new EventEmitter<uicFormValuesRecord>();\r\n\r\n private readonly destroy$ = new Subject<void>();\r\n\r\n ngOnInit(){\r\n this.buildForm();\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {;\r\n if (changes['disabled'] && !changes[\"disabled\"].firstChange) {\r\n this.updateDisabledState();\r\n }\r\n if (changes['schema'] && !changes[\"schema\"].firstChange) {\r\n this.buildForm();\r\n this.updateExtenalData();\r\n }\r\n if (changes['externalData'] ) {\r\n this.updateExtenalData(); \r\n }\r\n if (changes['initialValues'] && !changes[\"initialValues\"].firstChange) {\r\n this.buildForm()\r\n this.updateExtenalData(); \r\n }\r\n }\r\n\r\n\r\n private buildForm() {\r\n if (this.form) {\r\n this.form.valueChanges?.subscribe().unsubscribe(); // Desuscribirse de valueChanges anteriores\r\n }\r\n const fields = this.collectAllFields();\r\n const newForm = this.fb.group({});\r\n fields.forEach(f => {\r\n const validators = this.mapValidatorsFromField(f);\r\n let initial = this.initialValues[f.name] ?? null;\r\n if ( ( f.type === 'checkbox' || f.type === 'switch' ) && initial == null ) initial = false; // \r\n if ( f.type === 'slider' && initial == null ) initial = f.min ?? 0;\r\n if ( this.fillSelects && f.type === 'select' && initial == null && f.options && f.options.length>0) initial = f.options[0].id;\r\n const controlState = {\r\n value: initial,\r\n disabled: !!f.disabled \r\n };\r\n newForm.addControl( f.name , this.fb.control( controlState , validators ) );\r\n });\r\n newForm.valueChanges\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => this.handleFormChange());\r\n this.form = newForm;\r\n this.updateDisabledState();\r\n }\r\n \r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private updateDisabledState() {\r\n if (!this.form) return;\r\n Object.keys(this.form.controls).forEach(key => {\r\n const control = this.form.get(key)!;\r\n const field = this.collectAllFields().find(f => f.name === key);\r\n\r\n if (this.disabled) {\r\n control.disable({ emitEvent: false });\r\n } else if (field?.disabled) {\r\n control.disable({ emitEvent: false });\r\n } else {\r\n control.enable({ emitEvent: false });\r\n }\r\n });\r\n }\r\n \r\n\r\n private updateExtenalData() {\r\n if ( !this.externalData || !this.schema?.blocks || Object.keys(this.externalData).length === 0 ) return;\r\n for (const block of this.schema.blocks) {\r\n block.fields = this.updateFieldOptions(block);\r\n }\r\n }\r\n\r\n private mapValidatorsFromField(f: FormField) {\r\n const validators = [];\r\n if (f.required) validators.push(Validators.required);\r\n if (typeof f.min === 'number') validators.push(Validators.min(f.min));\r\n if (typeof f.max === 'number') validators.push(Validators.max(f.max)); \r\n if (typeof f.maxLength === 'number') validators.push(Validators.maxLength(f.maxLength));\r\n if (typeof f.minLength === 'number') validators.push(Validators.minLength(f.minLength));\r\n if (f.pattern instanceof RegExp) validators.push(Validators.pattern(f.pattern));\r\n return validators;\r\n }\r\n\r\n // FUNCIONES INTERNAS \r\n handleSubmit() {\r\n let result:FormResult = {result:false, form:null};\r\n if (this.form.valid) {\r\n result = {result:true, form:this.form.getRawValue()};\r\n } else {\r\n this.form.markAllAsTouched();\r\n }\r\n this.formSubmit.emit(result);\r\n return result;\r\n }\r\n\r\n private handleFormChange() {\r\n this.formChange.emit(this.form.getRawValue());\r\n }\r\n\r\n // UTILITARIOS\r\n private updateFieldOptions(block: FormBlock): FormField[] {\r\n return block.fields.map(f => {\r\n if (f.type === 'select' || f.type == 'pool' || f.type == 'multyselect') {\r\n let options = f.options ?? []; \r\n Object.keys(this.externalData).forEach(key => {\r\n if (key === f.name) {\r\n options = this.externalData[key] ?? [];\r\n }\r\n });\r\n return { ...f, options: options };\r\n\r\n }\r\n return f;\r\n });\r\n }\r\n private collectAllFields(): FormField[] {\r\n if (!this.schema) return [];\r\n\r\n return (this.schema.blocks ?? []).flatMap(b => b.fields ?? []);\r\n }\r\n\r\n\r\n // FUNCIONES PÚBLICAS\r\n // ACTUALIZAR EL VALOR DE UN CAMPO\r\n updateFieldValue(name: string, value: any) {\r\n this.form.get(name)?.patchValue(value, { emitEvent: false });\r\n }\r\n\r\n updateFieldConfig(name:string, config:Omit<FormField,'name'|'type'>){\r\n if (!this.schema?.blocks?.length) return;\r\n\r\n for (const block of this.schema.blocks) {\r\n const index = block.fields.findIndex(field => field.name === name);\r\n if (index === -1) continue;\r\n\r\n const current = block.fields[index];\r\n const restConfig: Partial<FormField> = { ...(config ?? {}) };\r\n delete (restConfig as any).name;\r\n delete (restConfig as any).type;\r\n\r\n const updatedField: FormField = {\r\n ...current,\r\n ...restConfig,\r\n name: current.name,\r\n type: current.type,\r\n };\r\n\r\n block.fields[index] = updatedField;\r\n block.fields = [...block.fields];\r\n this.schema.blocks = [...this.schema.blocks];\r\n\r\n const control = this.form.get(name);\r\n if (control) {\r\n control.setValidators(this.mapValidatorsFromField(updatedField));\r\n control.updateValueAndValidity({ onlySelf: true, emitEvent: false });\r\n }\r\n\r\n return;\r\n }\r\n }\r\n\r\n // ACTUALIZAR EL ESTADO DE DISABLED DE UN CAMPO\r\n updateFieldDisabled(name: string, disabled: boolean): void {\r\n const control = this.form.get(name);\r\n if (!control) return;\r\n\r\n // Actualizar estado del control reactivo\r\n if (disabled) {\r\n control.disable({ emitEvent: false });\r\n } else {\r\n control.enable({ emitEvent: false });\r\n }\r\n \r\n if (this.updateSchemaField(name,{disabled},this.schema.blocks)) return;\r\n \r\n }\r\n \r\n updateFieldLoading(name: string, loading: boolean): void { \r\n const control = this.form.get(name);\r\n if (!control) return;\r\n if (this.updateSchemaField(name,{loading},this.schema.blocks)) return;\r\n }\r\n\r\n submit(){\r\n this.handleSubmit();\r\n }\r\n\r\n clean(hardReset:boolean = false){\r\n if (!this.form) return;\r\n\r\n const fields = this.collectAllFields();\r\n const fieldMap = new Map(fields.map(field => [field.name, field]));\r\n\r\n const resetValues: uicFormValuesRecord = {};\r\n\r\n Object.keys(this.form.controls).forEach(name => {\r\n const field = fieldMap.get(name);\r\n resetValues[name] = this.resolveResetValue(name, field, hardReset);\r\n });\r\n\r\n this.form.reset(resetValues, { emitEvent: false });\r\n this.handleFormChange();\r\n }\r\n\r\n addFieldControl(field: FormField, after?: string) {\r\n if (this.form.contains(field.name)) return; // evitar duplicados\r\n const validators = this.mapValidatorsFromField(field); \r\n\r\n const controlState = { value: this.newFieldInitialValue(field), disabled: !!field.disabled };\r\n this.form.addControl(field.name, this.fb.control(controlState, validators),{emitEvent:false});\r\n this.updateExtenalData();\r\n \r\n if (this.insertField(field,this.schema.blocks,after)) return;\r\n\r\n if (this.schema.blocks?.length) {\r\n this.schema.blocks[0].fields.push(field);\r\n }\r\n }\r\n\r\n removeFieldControl(name: string) {\r\n if (this.form.contains(name)) {\r\n this.form.removeControl(name,{emitEvent:false});\r\n }\r\n\r\n const removeSchemaField = (blocks?: FormBlock[]) => {\r\n if (!blocks) return false;\r\n for (const block of blocks) {\r\n const index = block.fields.findIndex(f => f.name === name);\r\n if (index !== -1) {\r\n block.fields.splice(index, 1);\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n if (removeSchemaField(this.schema.blocks)) return;\r\n }\r\n\r\n \r\n private resolveResetValue(name: string, field: FormField | undefined, hardReset: boolean) {\r\n if (!hardReset && this.initialValues && Object.prototype.hasOwnProperty.call(this.initialValues, name)) {\r\n return this.initialValues[name];\r\n }\r\n return this.blankValue(field);\r\n }\r\n\r\n private blankValue(field?: FormField) {\r\n if (!field) return null;\r\n\r\n switch (field.type) {\r\n case 'text':\r\n case 'textarea':\r\n case 'phone':\r\n return '';\r\n case 'checkbox':\r\n case 'switch':\r\n return false;\r\n case 'multyselect':\r\n return [];\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n private newFieldInitialValue(field: FormField) {\r\n let initial = this.initialValues[field.name] ?? null;\r\n if ((field.type === 'checkbox' || field.type === 'switch') && initial == null) initial = false;\r\n if (field.type === 'slider' && initial == null) initial = field.min ?? 0;\r\n return initial;\r\n }\r\n\r\n private insertField(field: FormField, blocks?: FormBlock[], after?:string){\r\n if (!blocks) return false;\r\n for (const block of blocks) {\r\n const idx = block.fields.findIndex(f => f.name === after);\r\n if (idx !== -1) {\r\n block.fields.splice(idx + 1, 0, field); // insertar después\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n \r\n private updateSchemaField(\r\n name: string,\r\n values: { disabled?: boolean; loading?: boolean },\r\n blocks?: FormBlock[]\r\n ): boolean {\r\n if (!blocks) return false;\r\n\r\n for (const block of blocks) {\r\n const field = block.fields.find(f => f.name === name);\r\n if (field) {\r\n if (values.loading !== undefined) field.loading = values.loading;\r\n if (values.disabled !== undefined) field.disabled = values.disabled;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n\r\n","<form [formGroup]=\"form\" (ngSubmit)=\"handleSubmit()\">\r\n @for (block of schema.blocks; track block.title) {\r\n <section class=\"form-block\">\r\n @if (block.title){\r\n <div class=\"block-title\">{{ block.title }}</div>\r\n }\r\n @if (loading) {\r\n <ui-skeleton-loader\r\n [cols]=\"schema.cols\"\r\n [inputs]=\"block.fields.length\"\r\n ></ui-skeleton-loader>\r\n } @else {\r\n <ui-dynamic-form\r\n [cols]=\"schema.cols\"\r\n [fields]=\"block.fields\"\r\n [form]=\"form\">\r\n </ui-dynamic-form>\r\n }\r\n </section>\r\n }\r\n @if ( showButtons ) {\r\n\r\n <div class=\"form-buttons\">\r\n <ui-button color=\"black\" type=\"bordered\" (click)=\"clean()\">Limpiar</ui-button>\r\n <ui-button color=\"black\" (click)=\"submit()\">Guardar</ui-button>\r\n </div>\r\n }\r\n</form>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-step-tabs',\r\n imports: [],\r\n templateUrl: './step-tabs.component.html',\r\n styleUrl: './step-tabs.component.scss'\r\n})\r\nexport class UicStepTabsComponent {\r\n @Input() tabs:string[] = [];\r\n @Input() currentTab:string = '';\r\n @Input() navigationEnabled = false;\r\n @Input() showStepTitle = true;\r\n @Output() currentTabChange = new EventEmitter<string>();\r\n\r\n currentIndex = 1;\r\n\r\n changeTab(newTab:string){\r\n if ( this.navigationEnabled ){\r\n this.currentIndex = (this.tabs.findIndex(f=>f==newTab)??0) + 1;\r\n this.currentTab = newTab;\r\n this.currentTabChange.emit(newTab)\r\n }\r\n }\r\n}\r\n","<div class=\"tabs-wrapper\">\r\n @for (tab of tabs; track tab) {\r\n <div class=\"form-tab\" \r\n [class.selected-tab]=\"tab == currentTab\" \r\n [class.tab-hover]=\"navigationEnabled && tab != currentTab\"\r\n (click)=\"changeTab(tab)\">\r\n <div class=\"form-tab-title\">{{tab}}</div>\r\n <div class=\"form-tab-bar\"></div>\r\n </div>\r\n }\r\n</div>\r\n@if (showStepTitle) {\r\n <h1 class=\"tab-title\"> {{currentIndex + \". \" + currentTab}} </h1>\r\n}","import { Component, EventEmitter, Input, Output, QueryList, ViewChildren } from '@angular/core';\r\nimport { FormResult, FormStep } from '../form.models';\r\nimport { UicStepTabsComponent } from './step-tabs/step-tabs.component';\r\nimport { ButtonColor, UicButtonComponent } from '../../button/button.component';\r\nimport { UicFormWrapperComponent } from '../form-wrapper/form-wrapper.component';\r\n\r\n@Component({\r\n selector: 'ui-steps-form',\r\n imports: [UicStepTabsComponent, UicButtonComponent, UicFormWrapperComponent],\r\n templateUrl: './steps-form.component.html',\r\n styleUrl: './steps-form.component.scss'\r\n})\r\nexport class UicStepsFormComponent {\r\n @ViewChildren(UicFormWrapperComponent) allForms!: QueryList<UicFormWrapperComponent>;\r\n @Input() steps:FormStep[]=[];\r\n @Input() navigationEnabled = false;\r\n @Input() showStepTitle = true;\r\n @Input() showButtons = true;\r\n @Input() buttonsColor:ButtonColor = 'black';\r\n \r\n @Output() formSubmit = new EventEmitter<FormResult>(); \r\n\r\n\r\n externalData={};\r\n formDisabled=false;\r\n loading=false;\r\n\r\n tabs:string[] = [];\r\n completedForms = new Map<string,Record<string,any>>();\r\n currentTabTitle = '';\r\n\r\n\r\n ngOnInit(){\r\n this.tabs = this.steps.map(p=>p.title);\r\n this.currentTabTitle = this.tabs[0];\r\n }\r\n\r\n private getFormByTitle(title: string): UicFormWrapperComponent | undefined {\r\n return this.allForms.find((form, index) => this.steps[index].title === title);\r\n }\r\n\r\n // CONTROLES DE FORMULARIO\r\n updateFieldValue(step:string,controlName:string, value:string){\r\n const stepForm = this.getFormByTitle(step);\r\n stepForm?.updateFieldValue(controlName,value);\r\n }\r\n\r\n updateFildDisabled(step:string,controlName:string, value:boolean){\r\n const stepForm = this.getFormByTitle(step);\r\n stepForm?.updateFieldDisabled(controlName,value);\r\n }\r\n\r\n updateFildLoading(step:string,controlName:string, value:boolean){\r\n const stepForm = this.getFormByTitle(step);\r\n stepForm?.updateFieldLoading(controlName,value);\r\n }\r\n \r\n // CONTROLES DE MOVIMIENTO\r\n next(){\r\n if (!this.isLast){\r\n if ( this.handleStepSubmit( this.currentTabTitle ) ){\r\n this.currentTabTitle = this.steps[this.currentIdx + 1]?.title??'';\r\n }\r\n }else if ( this.handleStepSubmit( this.currentTabTitle ) ){\r\n this.formSubmit.emit({\r\n result:true,\r\n form: this.getMergedForm()\r\n }); \r\n }\r\n }\r\n\r\n back(){\r\n if (!this.isFirst){\r\n this.currentTabTitle = this.steps[this.currentIdx - 1]?.title??'';\r\n }\r\n }\r\n \r\n\r\n\r\n private handleStepSubmit(title:string):boolean{\r\n const stepForm = this.getFormByTitle(this.currentTabTitle);\r\n const result = stepForm?.handleSubmit();\r\n if ( !result?.result ){\r\n return false;\r\n }else{\r\n this.completedForms.set(title,result.form??{});\r\n return true;\r\n }\r\n }\r\n\r\n private getMergedForm() {\r\n return Object.assign({}, ...Array.from(this.completedForms.values()));\r\n }\r\n\r\n\r\n get currentIdx(): number {\r\n return this.steps.findIndex(f => f.title === this.currentTabTitle);\r\n }\r\n\r\n get isFirst(): boolean {\r\n return this.currentIdx === 0;\r\n }\r\n\r\n get isLast(): boolean {\r\n return this.currentIdx === this.steps.length - 1;\r\n }\r\n}\r\n","<ui-step-tabs \r\n [(currentTab)]=\"currentTabTitle\" \r\n [navigationEnabled]=\"navigationEnabled\"\r\n [showStepTitle]=\"showStepTitle\"\r\n [tabs]=\"tabs\"></ui-step-tabs>\r\n\r\n\r\n<!-- formulario -->\r\n@for (step of steps; track $index) {\r\n <div [class.hidden-form]=\"step.title!==currentTabTitle\" >\r\n <ui-form-wrapper [schema]=\"step.form\" \r\n [externalData]=\"externalData\"\r\n [disabled]=\"formDisabled\"\r\n [loading]=\"loading\"></ui-form-wrapper>\r\n </div>\r\n}\r\n\r\n@if (showButtons) {\r\n <div style=\"display: flex; gap: 10px;\">\r\n <ui-button [color]=\"buttonsColor\" type=\"bordered\" [disabled]=\"isFirst\" (click)=\"back()\" >Volver</ui-button>\r\n <ui-button [color]=\"buttonsColor\" (click)=\"next()\">{{isLast?'Enviar':'Siguiente'}}</ui-button>\r\n </div>\r\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { UicSearcherComponent } from '../uic-searcher/uic-searcher.component';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\n\r\n@Component({\r\n selector: 'ui-multy-searcher',\r\n imports: [UicButtonComponent],\r\n templateUrl: './multy-searcher.component.html',\r\n styleUrl: './multy-searcher.component.scss'\r\n})\r\nexport class UicMultySearcherComponent {\r\n\r\n @Input() itemDisplayFn?: (item: any) => string = item => String(item);\r\n @Input() disabled = false;\r\n @Input() values:any[]=[];\r\n @Output() valuesChange = new EventEmitter<any[]>();\r\n \r\n\r\n removeItem(idx:number){\r\n this.values.splice(idx,1);\r\n this.valuesChange.emit(this.values);\r\n }\r\n}\r\n\r\n\r\n\r\n","<div class=\"search-results\">\r\n @for (item of values; track $index) {\r\n <div class=\"search-result\" [class.disabledresult]=\"disabled\">\r\n <div [innerHTML]=\"itemDisplayFn?itemDisplayFn(item):''\">\r\n </div>\r\n @if ( !disabled ){\r\n <ui-button (click)=\"removeItem($index)\" [iconOnly]=\"true\" icon=\"ri-delete-bin-line\" type=\"ghost\" color=\"red\" size=\"s\"></ui-button>\r\n }\r\n </div>\r\n }\r\n @if (disabled && values.length == 0) {\r\n <div class=\"search-result-empty\">\r\n Sin elementos seleccionados\r\n </div>\r\n }\r\n</div>","import { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { Component, ContentChild, ElementRef, EventEmitter, InjectionToken, Input, OnDestroy, Output, TemplateRef, ViewChild, ViewContainerRef, forwardRef, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport interface DropdownOverlayControls {\n close(): void;\n open(): void;\n toggle(): void;\n readonly isOpen: boolean;\n}\n\nexport const DROPDOWN_OVERLAY_CONTROLS = new InjectionToken<DropdownOverlayControls>('DROPDOWN_OVERLAY_CONTROLS');\n\nconst DEFAULT_POSITIONS: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\n];\n\n@Component({\n selector: 'ui-dropdown-container',\n imports: [CommonModule],\n templateUrl: './dropdown-container.component.html',\n styleUrl: './dropdown-container.component.scss',\n providers: [\n {\n provide: DROPDOWN_OVERLAY_CONTROLS,\n useExisting: forwardRef(() => UicDropdownContainerComponent),\n },\n ],\n})\nexport class UicDropdownContainerComponent implements OnDestroy, DropdownOverlayControls {\n private _disabled = false;\n private readonly host = inject(ElementRef<HTMLElement>);\n\n @Input() buttonLabel = 'Abrir';\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n if (value) {\n this.close();\n }\n }\n @Input() positions: ConnectedPosition[] = DEFAULT_POSITIONS;\n @Input() matchTriggerWidth = true;\n @Input() width?: number | string;\n @Input() minWidth?: number | string;\n @Input() maxWidth?: number | string;\n @Input() backdropClass = 'cdk-overlay-transparent-backdrop';\n @Input() hasBackdrop = true;\n @Input() closeOnBackdropClick = true;\n @Input() closeOnEscape = true;\n @Input() closeOnContentClick = false;\n @Input() offsetX = 0;\n @Input() offsetY = 4;\n @Input() push = false;\n @Input() flexibleDimensions = true;\n @Output() closed = new EventEmitter<void>();\n\n @ViewChild('contentTemplate', { static: true }) contentTemplate?: TemplateRef<unknown>;\n @ContentChild(TemplateRef) projectedTemplate?: TemplateRef<unknown>;\n\n private overlayRef?: OverlayRef;\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private overlaySubscriptions: Subscription = new Subscription();\n private contentClickHandler?: (event: MouseEvent) => void;\n\n get isOpen(): boolean {\n return !!this.overlayRef;\n }\n\n ngOnDestroy(): void {\n this.destroyOverlay();\n }\n\n open(): void {\n if (this.disabled || this.overlayRef) {\n return;\n }\n\n if ( !this.contentTemplate) {\n console.warn('ui-dropdown-container: Falta definir contenido para el dropdown.');\n return;\n }\n\n const origin = this.host.nativeElement.querySelector('.triggerButton') as HTMLElement | null;\n if (!origin) {\n console.warn('ui-dropdown-container: No se encontró el trigger para posicionar el overlay.');\n return;\n }\n const positionStrategy = this.createPositionStrategy(origin);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: this.hasBackdrop,\n backdropClass: this.backdropClass,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: this.resolveDimension(this.width, this.matchTriggerWidth ? origin.offsetWidth : undefined),\n minWidth: this.resolveDimension(this.minWidth),\n maxWidth: this.resolveDimension(this.maxWidth),\n });\n\n const portal = new TemplatePortal(this.contentTemplate, this.vcr);\n this.overlayRef.attach(portal);\n\n this.bindOverlayEvents(this.overlayRef);\n }\n\n close(): void {\n if (!this.overlayRef) return;\n this.destroyOverlay();\n this.closed.emit();\n }\n\n toggle(): void {\n if (this.overlayRef) {\n this.close();\n } else {\n this.open();\n }\n }\n\n onTriggerClick(event: Event): void {\n if (this.disabled && !this.isOpen) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.toggle();\n }\n\n private createPositionStrategy(origin: HTMLElement): FlexibleConnectedPositionStrategy {\n return this.overlay.position()\n .flexibleConnectedTo(origin)\n .withPositions(this.positions)\n .withPush(this.push)\n .withFlexibleDimensions(this.flexibleDimensions)\n .withDefaultOffsetX(this.offsetX)\n .withDefaultOffsetY(this.offsetY);\n }\n\n\n\n private destroyOverlay(): void {\n if (!this.overlayRef) return;\n\n this.overlaySubscriptions.unsubscribe();\n this.overlaySubscriptions = new Subscription();\n\n if (this.contentClickHandler) {\n this.overlayRef.overlayElement.removeEventListener('click', this.contentClickHandler);\n this.contentClickHandler = undefined;\n }\n\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n\n private resolveDimension(value?: number | string, fallback?: number): number | string | undefined {\n if (value === undefined || value === null) {\n return fallback;\n }\n return value;\n }\n\n private bindOverlayEvents(ref: OverlayRef): void {\n this.overlaySubscriptions.unsubscribe();\n this.overlaySubscriptions = new Subscription();\n\n if (this.hasBackdrop && this.closeOnBackdropClick) {\n this.overlaySubscriptions.add(\n ref.backdropClick().subscribe(() => this.close())\n );\n }\n\n if (this.closeOnEscape) {\n this.overlaySubscriptions.add(\n ref.keydownEvents().pipe(filter(event => event.key === 'Escape')).subscribe(() => this.close())\n );\n }\n\n if (this.closeOnContentClick) {\n this.contentClickHandler = () => this.close();\n ref.overlayElement.addEventListener('click', this.contentClickHandler);\n }\n }\n}\n","\n<div #triggerButton class=\"triggerButton\" (click)=\"onTriggerClick($event)\">\n <ng-content select=\"[button]\"></ng-content>\n</div>\n\n<ng-template #contentTemplate >\n <div class=\"ui-dropdown-panel\">\n <ng-content select=\"[content]\"></ng-content>\n </div>\n</ng-template>","import { Directive, HostListener, inject } from '@angular/core';\nimport { UicDropdownContainerComponent } from './dropdown-container.component';\n\n@Directive({\n selector: '[uiDropdownClose]',\n standalone: true,\n})\nexport class UiDropdownCloseDirective {\n private readonly dropdown = inject(UicDropdownContainerComponent);\n\n @HostListener('click', ['$event'])\n handleClick(): void {\n this.dropdown.close();\n }\n}\n","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const fadeAndRise = trigger('fadeAndRise', [\r\n transition(':enter',[style({opacity:0, maxHeight: '0px'}), animate('.3s ease', style({opacity:1,maxHeight: '200px'}))]),\r\n transition(':leave', [animate('.3s ease', style({opacity:0}))])\r\n ]);","import { Component } from '@angular/core';\r\nimport { fadeAndRise } from '../../animations/fadeAndRise.animation';\r\n\r\n@Component({\r\n selector: 'ui-tooltip',\r\n imports: [],\r\n templateUrl: './tooltip.component.html',\r\n styleUrl: './tooltip.component.scss',\r\n animations: [ fadeAndRise ]\r\n})\r\nexport class UicTooltipComponent {\r\n tooltip: string = '';\r\n left: number = 0;\r\n top: number = 0;\r\n placement: 'top' | 'bottom' = 'bottom';\r\n}\r\n","<div @fadeAndRise class=\"tooltip\" \r\n [class.tooltip--top]=\"placement === 'top'\"\r\n [class.tooltip--bottom]=\"placement === 'bottom'\"\r\n [style.left]=\"left + 'px'\" [style.top]=\"top + 'px'\" [innerHTML]=\"tooltip\">\r\n</div>\r\n","import { ApplicationRef, ComponentRef, createComponent, \r\n Directive, ElementRef, EmbeddedViewRef, EnvironmentInjector, HostListener, Input } from '@angular/core';\r\nimport { UicTooltipComponent } from '../components/tooltip/tooltip.component';\r\n\r\n\r\n@Directive({\r\n selector: '[tip]'\r\n})\r\nexport class UicToolTipDirective {\r\n\r\n\r\n @Input() tip = '';\r\n\r\n private componentRef: ComponentRef<any> | null = null;\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef,\r\n private readonly appRef: ApplicationRef, \r\n private readonly injector: EnvironmentInjector) {\r\n }\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n if (this.componentRef === null && this.tip!='' && this.tip!=null) {\r\n this.componentRef = createComponent(UicTooltipComponent, {\r\n environmentInjector: this.injector\r\n });\r\n\r\n this.appRef.attachView(this.componentRef.hostView);\r\n const domElem = \r\n (this.componentRef.hostView as EmbeddedViewRef<any>)\r\n .rootNodes[0] as HTMLElement; \r\n document.body.appendChild(domElem);\r\n this.setTooltipComponentProperties();\r\n }\r\n }\r\n\r\n private setTooltipComponentProperties() {\r\n if (this.componentRef !== null) {\r\n this.componentRef.instance.tooltip = this.tip;\r\n this.componentRef.changeDetectorRef.detectChanges();\r\n requestAnimationFrame(() => {\r\n if (!this.componentRef) {\r\n return;\r\n }\r\n\r\n const tooltipElement = (this.componentRef.hostView as EmbeddedViewRef<any>)\r\n .rootNodes[0] as HTMLElement;\r\n const targetRect = this.elementRef.nativeElement.getBoundingClientRect();\r\n const tooltipRect = tooltipElement.getBoundingClientRect();\r\n const spacing = 8;\r\n const viewportWidth = window.innerWidth;\r\n const viewportHeight = window.innerHeight;\r\n const availableAbove = targetRect.top;\r\n const availableBelow = viewportHeight - targetRect.bottom;\r\n\r\n let placement: 'top' | 'bottom' = 'bottom';\r\n let top = targetRect.bottom + spacing;\r\n\r\n if (availableBelow < tooltipRect.height + spacing && availableAbove > availableBelow) {\r\n placement = 'top';\r\n top = Math.max(spacing, targetRect.top - tooltipRect.height - spacing);\r\n } else {\r\n top = Math.min(top, viewportHeight - tooltipRect.height - spacing);\r\n }\r\n\r\n const centerX = targetRect.left + (targetRect.width / 2);\r\n const maxLeft = viewportWidth - (tooltipRect.width / 2) - spacing;\r\n const minLeft = (tooltipRect.width / 2) + spacing;\r\n const left = Math.min(Math.max(centerX, minLeft), maxLeft);\r\n\r\n this.componentRef.instance.left = left;\r\n this.componentRef.instance.top = top;\r\n this.componentRef.instance.placement = placement;\r\n this.componentRef.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.destroy();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\r\n }\r\n\r\n destroy(): void {\r\n if (this.componentRef !== null) {\r\n this.appRef.detachView(this.componentRef.hostView);\r\n this.componentRef.destroy();\r\n this.componentRef = null;\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { UicToolTipDirective } from '../../../directives/tool-tip.directive';\r\nimport { UicInputComponent } from '../../inputs/input/input.component';\r\n\r\n@Component({\r\n selector: 'uic-table-searcher',\r\n imports: [UicButtonComponent, FormsModule, UicToolTipDirective, UicInputComponent],\r\n templateUrl: './table-searcher.component.html',\r\n styleUrl: './table-searcher.component.scss'\r\n})\r\nexport class UicTableUicSearcherComponent {\r\n @Input() placeholder = '';\r\n @Input() label = 'Buscar';\r\n @Input() searchOnKeydown = false;\r\n @Input() showButtonText = false;\r\n @Input() showSearchButton = false;\r\n @Output() filter = new EventEmitter<string>();\r\n text = \"\";\r\n\r\n reset(){\r\n this.text = '';\r\n this.filter.emit(this.text);\r\n }\r\n\r\n updateText(){\r\n if ( this.searchOnKeydown ){\r\n this.filter.emit(this.text);\r\n }\r\n }\r\n}\r\n","\r\n<div class=\"ui-table-searcher\">\r\n <ui-input [internalIcon]=\"!showSearchButton?'ri-search-line':''\">\r\n <input [(ngModel)]=\"text\" type=\"text\" (ngModelChange)=\"updateText()\" (keydown.enter)=\"filter.emit(text)\" placeholder=\"{{placeholder}}\">\r\n </ui-input>\r\n @if (showSearchButton) {\r\n <ui-button [iconOnly]=\"!showButtonText\" (click)=\"filter.emit(text)\" color=\"black\" type=\"bordered\" rightIcon=\"showSearchButton ri-search-2-line\" size=\"m\">{{showButtonText?'Buscar':''}}</ui-button>\r\n }\r\n <ui-button [iconOnly]=\"!showButtonText\" (click)=\"reset()\" color=\"black\" type=\"bordered\" rightIcon=\"ri-eraser-line\" size=\"m\">{{showButtonText?'Limpiar':''}}</ui-button>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'uic-table-pagination',\r\n imports: [CommonModule, UicButtonComponent, FormsModule],\r\n templateUrl: './table-pagination.component.html',\r\n styleUrl: './table-pagination.component.scss'\r\n})\r\nexport class UicTablePaginationComponent {\r\n @Input() buttonSize: 's'|'m'| 'l' = 'm';\r\n @Input() currentPage = 1;\r\n @Input() totalPages = 1;\r\n @Input() size = 25;\r\n @Input() loading = false;\r\n @Input() showText = true;\r\n @Input() nextButtonText = 'Sig.';\r\n @Input() previousButtonText = 'Ant.';\r\n visiblePages = 3;\r\n pagesInView:number[] = [];\r\n\r\n @Output() pageChange = new EventEmitter<number>();\r\n @Output() sizeChange = new EventEmitter<number>();\r\n\r\n get pages(): (number | string)[] {\r\n const pages: (number | string)[] = [];\r\n const range = Math.floor(this.visiblePages / 2);\r\n let start = Math.max(1, this.currentPage - range);\r\n let end = Math.min(this.totalPages, this.currentPage + range);\r\n\r\n if (end === this.totalPages) {\r\n start = Math.max(1, this.totalPages - (this.visiblePages - 1));\r\n }\r\n if (start === 1) {\r\n end = Math.min(this.totalPages, this.visiblePages);\r\n }\r\n\r\n if (start > 1) {\r\n pages.push(1);\r\n if (start > 2) pages.push('...');\r\n }\r\n\r\n for (let i = start; i <= end; i++) {\r\n pages.push(i);\r\n }\r\n\r\n if (end < this.totalPages) {\r\n if (end < this.totalPages - 1) pages.push('...');\r\n pages.push(this.totalPages);\r\n }\r\n\r\n return pages;\r\n }\r\n\r\n changePage(newPage: number) {\r\n if (newPage >= 1 && newPage <= this.totalPages && newPage !== this.currentPage) {\r\n this.currentPage = newPage;\r\n this.pageChange.emit(this.currentPage);\r\n }\r\n }\r\n}\r\n","\r\n<div class=\"table-page\">\r\n <ui-button \r\n [disabled]=\"loading || currentPage == 1\" \r\n (click)=\"changePage(currentPage - 1)\" \r\n [size]=\"buttonSize\" \r\n color=\"black\" \r\n type=\"bordered\" \r\n [text]=\"showText?previousButtonText:''\"\r\n [iconOnly]=\"!showText\" \r\n icon=\"ri-arrow-left-line\" > \r\n </ui-button> \r\n <div class=\"table-numbers\">\r\n @for (p of pages; track $index) {\r\n @if ( p!= '...' ){\r\n <button [disabled]=\"loading\" (click)=\"changePage(+p)\" [ngClass]=\"{'selected':currentPage==p}\" class=\"number\">{{p}}</button>\r\n } @else {\r\n <div class=\"space\">...</div>\r\n }\r\n }\r\n </div>\r\n <div class=\"current-mobile\"> {{currentPage}} </div>\r\n <ui-button \r\n [disabled]=\"loading || currentPage == totalPages\" \r\n (click)=\"changePage(currentPage + 1)\" \r\n [size]=\"buttonSize\" \r\n color=\"black\" \r\n type=\"bordered\" \r\n [text]=\"showText?nextButtonText:''\"\r\n [iconOnly]=\"!showText\" \r\n rightIcon=\"ri-arrow-right-line\" > \r\n </ui-button>\r\n</div>","import { animate, keyframes, state, style, transition, trigger } from \"@angular/animations\";\r\n\r\nexport const highlightRow = trigger('highlightRow', [\r\n state('highlighted', style({ backgroundColor: '#efe1f5' })),\r\n transition('* => highlighted', [\r\n animate('1000ms ease-in', keyframes([\r\n style({ backgroundColor: '#ffffff', offset: 0 }),\r\n style({ backgroundColor: '#efe1f5', offset: 0.3 }),\r\n style({ backgroundColor: '#ffffff', offset: 1.0 }),\r\n ]))\r\n ])\r\n ]);","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const animatedRow = trigger('animatedRow', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'translateY(-15px)' }),\r\n animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\r\n ]),\r\n transition(':leave', [\r\n animate('300ms ease-in', style({ opacity: 0, height: 0, padding: 0, margin: 0 }))\r\n ]),\r\n ]);","import { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { Component, ElementRef, EventEmitter, inject, Input, Output, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { UicCheckboxComponent } from '../inputs/checkbox/checkbox.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ButtonSize, UicButtonComponent } from '../button/button.component';\r\n\r\n@Component({\r\n selector: 'ui-action-button',\r\n imports: [UicCheckboxComponent, UicButtonComponent, FormsModule],\r\n templateUrl: './uic-action-button.component.html',\r\n styleUrl: './uic-action-button.component.scss'\r\n})\r\nexport class UicActionButtonComponent {\r\n @Input() icon = 'ri-more-2-line';\r\n @Input() options: ActionMenuOption[] = [];\r\n @Input() multiselect = false;\r\n @Input() size:ButtonSize = 's';\r\n\r\n @Output() optionSelected = new EventEmitter<ActionMenuOption>();\r\n @Output() optionsApplied = new EventEmitter<ActionMenuOption[]>();\r\n\r\n @ViewChild('menuTemplate') menuTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n selectedSet = new Set<string | number>();\r\n allSelected = false;\r\n\r\n overlayPositions: ConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\r\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\r\n ];\r\n\r\n openMenu() {\r\n if (this.overlayRef) {\r\n this.closeMenu();\r\n return;\r\n }\r\n\r\n const origin = this.host.nativeElement.querySelector('.action-btn');\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(origin as HTMLElement)\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(false)\r\n .withPush(true);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.menuTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeMenu());\r\n }\r\n\r\n /** SINGLE SELECT MODE */\r\n selectOption(option: ActionMenuOption) {\r\n if (!this.multiselect) {\r\n this.optionSelected.emit(option);\r\n this.closeMenu();\r\n }\r\n }\r\n\r\n /** MULTISELECT MODE */\r\n toggleOption(opt: ActionMenuOption) {\r\n if (this.selectedSet.has(opt.id)) {\r\n this.selectedSet.delete(opt.id);\r\n } else {\r\n this.selectedSet.add(opt.id);\r\n }\r\n this.updateAllSelected();\r\n }\r\n\r\n toggleAll(checked: boolean) {\r\n this.allSelected = checked;\r\n this.selectedSet.clear();\r\n if (checked) {\r\n this.options.forEach(o => this.selectedSet.add(o.id));\r\n }\r\n }\r\n\r\n applySelection() {\r\n const selected = this.options.filter(o => this.selectedSet.has(o.id));\r\n this.optionsApplied.emit(selected);\r\n this.closeMenu();\r\n }\r\n\r\n updateAllSelected() {\r\n this.allSelected = this.options.length > 0 && this.selectedSet.size === this.options.length;\r\n }\r\n\r\n closeMenu() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n}\r\n\r\nexport interface ActionMenuOption {\r\n id: string;\r\n label: string;\r\n icon?: string;\r\n}","<!-- Botón -->\r\n<ui-button class=\"action-btn\" [size]=\"size\" [icon]=\"icon\" color=\"black\" [iconOnly]=\"true\" type=\"ghost\" (click)=\"openMenu()\">\r\n</ui-button>\r\n\r\n<!-- Menú -->\r\n<ng-template #menuTemplate>\r\n <div class=\"action-menu\">\r\n @if (multiselect) {\r\n <div class=\"action-menu-header\">\r\n <ui-checkbox [noPadding]=\"true\" \r\n [ngModel]=\"allSelected\" \r\n (ngModelChange)=\"toggleAll($event)\" placeholder=\"Todos\"></ui-checkbox>\r\n </div>\r\n }\r\n <div class=\"action-menu-body\">\r\n @for (opt of options; track $index) {\r\n <div class=\"action-menu-item\" (click)=\"multiselect ? toggleOption(opt) : selectOption(opt)\">\r\n @if (multiselect) {\r\n <div>\r\n <ui-checkbox [noPadding]=\"true\" [ngModel]=\"selectedSet.has(opt.id)\"></ui-checkbox>\r\n </div>\r\n }\r\n @if (icon) {\r\n <i [class]=\"opt.icon\"></i>\r\n }\r\n <span>{{ opt.label }}</span>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Footer con botón aplicar -->\r\n @if (multiselect) {\r\n <div class=\"action-menu-footer\">\r\n <ui-button type=\"bordered\" color=\"black\" size=\"t\" (click)=\"closeMenu()\">Cerrar</ui-button>\r\n <ui-button color=\"black\" size=\"t\" (click)=\"applySelection()\">Aplicar</ui-button>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { Component, Input } from '@angular/core';\r\nimport { TableList } from '../table.models';\r\n\r\n@Component({\r\n selector: 'uic-table-list',\r\n imports: [],\r\n templateUrl: './table-list.component.html',\r\n styleUrl: './table-list.component.scss'\r\n})\r\nexport class UicTableListComponent {\r\n @Input() list:TableList[]=[];\r\n}\r\n","@for (item of list; track $index) {\r\n <div class=\"list-item\">\r\n <i [class]=\"item.icon??'ri-capsule-fill'\"></i>\r\n <div class=\"list-item-data\">\r\n <div>{{item.text}}</div>\r\n <p>{{item.subtext}}</p>\r\n </div> \r\n </div>\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'nameInitials'\r\n})\r\nexport class UicNameInitsPipe implements PipeTransform {\r\n\r\n transform(value: string): string {\r\n if (!value){\r\n return \"\";\r\n }\r\n const names:string[] = value.split(\" \");\r\n if (names.length > 1){\r\n return names[0].charAt(0) + names[1].charAt(0).toUpperCase(); \r\n }else if ( names[0].length>=2){\r\n return names[0].substring(0,2).toUpperCase();\r\n }else{\r\n return '';\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { TableUser } from '../table.models';\r\nimport { UicNameInitsPipe } from '../../../pipes/name-inits.pipe';\r\n\r\n@Component({\r\n selector: 'uic-table-user',\r\n imports: [UicNameInitsPipe],\r\n templateUrl: './table-user.component.html',\r\n styleUrl: './table-user.component.scss'\r\n})\r\nexport class UicTableUserComponent {\r\n @Input() user:TableUser | undefined;\r\n\r\n}\r\n","@if (user) {\r\n <div class=\"user-row\">\r\n @if (!user.hideAvatar) {\r\n <div class=\"user-inits\" [style]=\"user.photo? 'background-image: url('+ user.photo +')' :'' \">\r\n {{ !user.photo? (user.name | nameInitials) :''}}\r\n </div>\r\n }\r\n <div class=\"user-row-data\">\r\n <div>{{user.name}}</div>\r\n <p>{{user.id}}</p>\r\n </div>\r\n </div>\r\n}@else{\r\n -\r\n}","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-status-label',\r\n imports: [],\r\n templateUrl: './status-label.component.html',\r\n styleUrl: './status-label.component.scss'\r\n})\r\nexport class UicStatusLabelComponent {\r\n @Input() color = 'grey';\r\n @Input() type: 'status'|'tag' = 'status';\r\n @Input() icon = 'ri-circle-fill';\r\n}\r\n","<div [class]=\"'status-label sl-' + type + ' ' + (type == 'status' ? 'slc-' : 'slt-') + color\" >\r\n @if (type == 'status') {\r\n <i [class]=\"icon\"></i>\r\n }\r\n <div class=\"sl-text\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","export const MODAL_DATA = 'MODAL_DATA';\r\nexport const MODAL_COMPONENT = 'MODAL_COMPONENT';\r\nexport const MODAL_CONFIG = 'MODAL_CONFIG';\r\nexport const MODAL_CLOSE_EVENT = 'modalClosed'; \r\nexport const MODAL_CLOSE_REQUEST = 'modalCloserRequested'; ","import { OverlayRef } from \"@angular/cdk/overlay\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { UicModalService } from \"./modal.service\";\r\n\r\nexport class UiModalRef<T = any> {\r\n private readonly _afterClosed = new Subject<{status:boolean, data: T | null}>();\r\n\r\n constructor(\r\n private readonly overlayRef: OverlayRef,\r\n private readonly modalService: UicModalService\r\n ) {}\r\n\r\n close(result: T | null = null): void {\r\n this.modalService.close(this.overlayRef, result);\r\n this._afterClosed.next({status: result!=null, data:result });\r\n this._afterClosed.complete();\r\n }\r\n\r\n closeFloating(result: T | null = null): void {\r\n this.modalService.closeFloating(this.overlayRef, result);\r\n this._afterClosed.next({status: result!=null, data:result });\r\n this._afterClosed.complete();\r\n }\r\n\r\n afterClosed(): Observable<{status:boolean, data: T | null}> {\r\n return this._afterClosed.asObservable();\r\n }\r\n\r\n}","import { Component, Inject } from '@angular/core';\r\nimport { AlertData, AlertResponseData } from './tiny-alert.model';\r\nimport { MODAL_DATA } from '../../services/modal.constant';\r\nimport { UicButtonComponent } from '../button/button.component';\r\nimport { UiModalRef } from '../../services/modaRef';\r\n\r\n@Component({\r\n selector: 'ui-tiny-alert',\r\n imports: [UicButtonComponent],\r\n templateUrl: './tiny-alert.component.html',\r\n styleUrl: './tiny-alert.component.scss'\r\n})\r\nexport class TinyAlertComponent {\r\n data:AlertData;\r\n constructor(\r\n @Inject(MODAL_DATA) inData:{alert:AlertData,editing:boolean},\r\n @Inject(UiModalRef) private readonly modalRef: UiModalRef )\r\n {\r\n this.data = inData.alert;\r\n }\r\n response:AlertResponseData = {};\r\n\r\n\r\n close(value:boolean){\r\n this.modalRef.closeFloating(value?this.response:null);\r\n }\r\n}\r\n","<div class=\"alert-wrapper\">\r\n @if (data.iconPath) {\r\n <img [src]=\"data.iconPath\" alt=\"\"> \r\n }@else{\r\n <i [class]=\"'alert-main-icon icon-'+data.type + ' ' + data.iconChar\" ></i>\r\n }\r\n <div class=\"h3-alert\" [class]=\"'icon-'+data.type\"> {{data.title}} </div>\r\n <div class=\"alert-body\" [innerHTML]=\"data.body\"> </div>\r\n <div class=\"tinyalert-buttons\">\r\n @if (data.showCancelButton) {\r\n <ui-button (click)=\"close(false)\" type=\"bordered\" [color]=\"data.cancelButtonColor??'black'\" size=\"l\"> {{data.cancelButtonText??'Cancelar'}} </ui-button>\r\n }\r\n <ui-button (click)=\"close(true)\" [color]=\"data.okButtonColor??'primary'\" size=\"l\"> {{data.okButtonText??'Continuar'}} </ui-button>\r\n </div>\r\n <button class=\"floating-close\" (click)=\"close(false)\" >\r\n <i class=\"ri-close-line\"></i>\r\n </button>\r\n</div>\r\n","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const pushTop = trigger('pushTop', [\r\n transition(':enter',[style({opacity:0, transform: 'translateY(20px)'}), animate('.3s ease', style({opacity:1, transform: 'translateY(0)'}))]),\r\n transition(':leave', [animate('.3s ease', style({opacity:0, transform: 'translateY(-20px)'}))])\r\n ]);","import { CommonModule } from '@angular/common';\r\nimport { Component, Inject, Injector, Type, ViewChild } from '@angular/core';\r\nimport { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\r\nimport { MODAL_COMPONENT, MODAL_CONFIG, MODAL_DATA } from '../../../services/modal.constant';\r\nimport { ModalConfig } from './modalconfig.model';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { pushTop } from '../../../animations/pushTop.animation';\r\nimport { UiModalRef } from '../../../services/modaRef';\r\n\r\n\r\n@Component({\r\n selector: 'ui-modal',\r\n imports: [CommonModule,PortalModule,UicButtonComponent],\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss',\r\n animations:[pushTop]\r\n})\r\nexport class UicModalComponent {\r\n myConfig:ModalConfig = {};\r\n ready = false;\r\n title='';\r\n @ViewChild(CdkPortalOutlet, { static: true }) portalOutlet!: CdkPortalOutlet;\r\n\r\n constructor(\r\n @Inject(UiModalRef) private readonly modalRef: UiModalRef,\r\n @Inject(MODAL_COMPONENT) private readonly component: Type<any>,\r\n @Inject(MODAL_CONFIG) private readonly congif: ModalConfig,\r\n private readonly injector: Injector\r\n ) {\r\n this.myConfig = congif;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const childInjector = Injector.create({\r\n providers: [\r\n { provide: UiModalRef, useValue: this.modalRef },\r\n { provide: MODAL_DATA, useValue: this.congif.data }\r\n ],\r\n parent: this.injector\r\n });\r\n const portal = new ComponentPortal(this.component, null, childInjector);\r\n this.portalOutlet.attachComponentPortal(portal);\r\n }\r\n\r\n\r\n closeOuside(){\r\n if ( this.congif.preventCloseingOutside === true ) return;\r\n this.modalRef.closeFloating(null);\r\n }\r\n\r\n close() {\r\n this.modalRef.closeFloating(null);\r\n }\r\n}\r\n","<div class=\"backdrop\" (click)=\"closeOuside()\"> \r\n <div @pushTop class=\"modal\" \r\n [class]=\"myConfig.size\"\r\n (click)=\"$event.stopPropagation()\">\r\n \r\n @if ( myConfig.title) {\r\n <div class=\"modal-header\">\r\n {{myConfig.title}}\r\n <ui-button color=\"red\" type=\"ghost\" icon=\"ri-close-large-line\" (click)=\"close()\" [iconOnly]=\"true\"></ui-button>\r\n </div>\r\n }\r\n <div class=\"modal-body\" [class.body-padding]=\"myConfig.title!='' && !myConfig.noPadding\">\r\n <ng-template cdkPortalOutlet></ng-template>\r\n </div>\r\n\r\n </div>\r\n</div>","import { animate, state, style, transition, trigger } from \"@angular/animations\";\r\nexport const sideModal = trigger('sideModal', [\r\n state('visible', style({ transform: 'translateX(0)' })),\r\n state('hidden', style({ transform: 'translateX(100%)' })),\r\n\r\n // animación al CREARSE\r\n transition('void => visible', [\r\n style({ opacity: .8, transform: 'translateX(100%)' }),\r\n animate('.5s ease')\r\n ]),\r\n\r\n // animación al CERRAR\r\n transition('visible => hidden', [\r\n animate('.5s ease')\r\n ])\r\n])\r\n\r\nexport const fadeBackdrop =trigger('fadeBackdrop', [\r\n state('visible', style({ opacity: 1 })),\r\n state('hidden', style({ opacity: 0 })),\r\n transition('void => visible', [\r\n style({ opacity: 0 }),\r\n animate('300ms ease-out')\r\n ]),\r\n transition('visible => hidden', [\r\n animate('300ms ease-in')\r\n ])\r\n ])","import { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\r\nimport { Component, Inject, Injector, Type, ViewChild } from '@angular/core';\r\nimport { MODAL_CLOSE_REQUEST, MODAL_COMPONENT, MODAL_CONFIG, MODAL_DATA } from '../../../services/modal.constant';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport { SideModalConfig } from './sideModalConfig.model';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { fadeBackdrop, sideModal } from '../../../animations/sideModal.animation';\r\nimport { UiModalRef } from '../../../services/modaRef';\r\nimport { UicModalService } from '../../../services/modal.service';\r\n\r\n\r\n@Component({\r\n selector: 'ui-side-modal',\r\n imports: [PortalModule,UicButtonComponent],\r\n templateUrl: './side-modal.component.html',\r\n styleUrl: './side-modal.component.scss',\r\n animations: [ sideModal, fadeBackdrop ]\r\n})\r\nexport class UicSideModalComponent {\r\n overlayRef!: OverlayRef; // lo setea el servicio\r\n state: 'visible' | 'hidden' = 'visible';\r\n show = true;\r\n myConfig:SideModalConfig = {};\r\n ready = false;\r\n @ViewChild(CdkPortalOutlet, { static: true }) portalOutlet!: CdkPortalOutlet;\r\n\r\n constructor(\r\n @Inject(UiModalRef) private readonly modalRef: UiModalRef,\r\n @Inject(MODAL_COMPONENT) private readonly component: Type<any>,\r\n @Inject(MODAL_CONFIG) private readonly congif: SideModalConfig,\r\n private readonly injector: Injector,\r\n private readonly modal:UicModalService\r\n ) {\r\n this.myConfig = congif;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.overlayRef){\r\n this.overlayRef.hostElement.addEventListener(MODAL_CLOSE_REQUEST, () => {\r\n this.close();\r\n });\r\n }\r\n}\r\n\r\n ngAfterViewInit(): void {\r\n const childInjector = Injector.create({\r\n providers: [\r\n { provide: UiModalRef, useValue: this.modalRef },\r\n { provide: MODAL_DATA, useValue: this.congif.data }\r\n ],\r\n parent: this.injector\r\n });\r\n const portal = new ComponentPortal(this.component, null, childInjector);\r\n this.portalOutlet.attachComponentPortal(portal);\r\n }\r\n\r\n\r\n closeOuside(){\r\n if ( this.congif.preventCloseingOutside === true ) return;\r\n this.close();\r\n }\r\n\r\n close() {\r\n this.state = 'hidden';\r\n }\r\n\r\n cancel(){\r\n if ( this.myConfig.preventCloseOnCancel ){\r\n this.modal.triggerSave(false);\r\n }else{\r\n this.close();\r\n }\r\n }\r\n\r\n onAnimationDone(event: any) {\r\n if (event.toState === 'hidden' && event.triggerName === 'sideModal') {\r\n this.overlayRef.dispose();\r\n }\r\n }\r\n\r\n save(){\r\n this.modal.triggerSave();\r\n }\r\n}\r\n","<div [@fadeBackdrop]=\"state\" class=\"backdrop\" (click)=\"closeOuside()\"> \r\n</div>\r\n<div [@sideModal]=\"state\" \r\n (@sideModal.done)=\"onAnimationDone($event)\" \r\n class=\"sidemodal\" \r\n [style.width]=\"myConfig.width??'60%'\" \r\n (click)=\"$event.stopPropagation()\">\r\n @if (myConfig.headerEnabled) {\r\n <div class=\"modal-header\">\r\n <div class=\"modal-header-title\">\r\n <div class=\"f-title\">{{myConfig.title}}</div>\r\n <div class=\"f-subtitle\">{{myConfig.subtitle}}</div>\r\n </div>\r\n <ui-button class=\"close-icon\" (click)=\"close()\" icon=\"ri-close-large-line\" type=\"ghost\" color=\"black\" [iconOnly]=\"true\" size=\"m\"></ui-button>\r\n </div>\r\n }\r\n <div class=\"sidemodal-body\" [class.nopadding]=\"myConfig.noPadding\" >\r\n <ng-template cdkPortalOutlet></ng-template>\r\n </div>\r\n @if (myConfig.footerEnabled) {\r\n <div class=\"sidemodal-footer\">\r\n @if (myConfig.showCancelButton) {\r\n <ui-button (click)=\"cancel()\" color=\"black\" size=\"l\" type=\"bordered\" [icon]=\"myConfig.footerCancelIcon??'ri-close-line'\">{{myConfig.footerCancelButtonText??'Cancelar'}}</ui-button>\r\n }\r\n <ui-button (click)=\"save()\" color=\"black\" size=\"l\" [rightIcon]=\"myConfig.footerOkIcon??'ri-check-line'\">{{myConfig.footerOkButtonText??'Siguiente'}}</ui-button>\r\n </div>\r\n }\r\n</div>","import { EnvironmentInjector, inject, Injectable, Injector, Type } from '@angular/core';\r\nimport { MODAL_CLOSE_EVENT, MODAL_CLOSE_REQUEST, MODAL_COMPONENT, MODAL_CONFIG } from './modal.constant';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { UiModalRef } from './modaRef';\r\nimport { ModalConfig } from '../components/modal/floating-modal/modalconfig.model';\r\nimport { SideModalConfig } from '../components/modal/side-modal/sideModalConfig.model';\r\nimport { UicModalComponent } from '../components/modal/floating-modal/modal.component';\r\nimport { UicSideModalComponent } from '../components/modal/side-modal/side-modal.component';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UicModalService {\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly envInjector = inject(EnvironmentInjector);\r\n\r\n openFloatingModal<TComponent>(\r\n component: Type<TComponent>,\r\n config: ModalConfig = {}\r\n ): UiModalRef {\r\n return this.openModal(component,config,true);\r\n }\r\n\r\n openSideModal<TComponent>(\r\n component: Type<TComponent>,\r\n config: SideModalConfig = {}\r\n ): UiModalRef {\r\n return this.openModal(component,config,false);\r\n }\r\n\r\n private openModal<TComponent>(\r\n component: Type<TComponent>,\r\n config: ModalConfig|SideModalConfig = {},\r\n isFloating = false\r\n ){\r\n const overlayConfig = this.createOverlayConfig(isFloating);\r\n const overlayRef = this.overlay.create(overlayConfig);\r\n const modalRef = new UiModalRef(overlayRef, this);\r\n const injector = this.createModalInjector(overlayRef,modalRef,component,config); \r\n if ( isFloating){\r\n const modalPortal = new ComponentPortal(UicModalComponent, null, injector);\r\n overlayRef.attach(modalPortal);\r\n }else{\r\n const modalPortal = new ComponentPortal( UicSideModalComponent, null, injector);\r\n const componentRef = overlayRef.attach(modalPortal);\r\n componentRef.instance.overlayRef = overlayRef;\r\n }\r\n return modalRef; \r\n }\r\n\r\n close(overlayRef: OverlayRef, result: any = null): void { \r\n overlayRef.hostElement.dispatchEvent(\r\n new CustomEvent(MODAL_CLOSE_REQUEST, { detail: result })\r\n );\r\n } \r\n\r\n closeFloating(overlayRef: OverlayRef, result: any = null){\r\n overlayRef.backdropElement?.dispatchEvent(\r\n new CustomEvent(MODAL_CLOSE_EVENT, { detail: result })\r\n );\r\n overlayRef.dispose();\r\n }\r\n\r\n private readonly _save$ = new Subject<boolean>();\r\n save$ = this._save$.asObservable();\r\n\r\n triggerSave(result=true): void {\r\n this._save$.next(result);\r\n }\r\n\r\n private createOverlayConfig(isFloating: boolean): OverlayConfig {\r\n const positionStrategy = isFloating \r\n ? this.overlay.position().global().left()\r\n : this.overlay.position().global().right();\r\n\r\n return {\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-dark-backdrop',\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n disposeOnNavigation: true, \r\n };\r\n }\r\n\r\n private createModalInjector<TComponent>(\r\n overlayRef: OverlayRef,\r\n modalRef: UiModalRef,\r\n component: Type<TComponent>,\r\n config: ModalConfig | SideModalConfig\r\n ): Injector {\r\n return Injector.create({\r\n providers: [\r\n { provide: OverlayRef, useValue: overlayRef },\r\n { provide: UiModalRef, useValue: modalRef },\r\n { provide: MODAL_COMPONENT, useValue: component },\r\n { provide: MODAL_CONFIG, useValue: config }\r\n ],\r\n parent: this.envInjector,\r\n });\r\n }\r\n}\r\n\r\n","import { AlertData } from '../tiny-alert/tiny-alert.model';\r\nimport { Alert } from './alert.model';\r\n\r\nlet nextId = 1;\r\n\r\nexport function createTinySuccess(\r\n body: string,\r\n options?: Partial<AlertData>\r\n): AlertData {\r\n return {\r\n body,\r\n title:'Operación exitosa',\r\n type: 'success',\r\n iconChar: 'ri-emotion-laugh-line',\r\n okButtonColor:'green',\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createTinyError(\r\n body: string,\r\n options?: Partial<AlertData>\r\n): AlertData {\r\n return {\r\n body,\r\n title:'Se produjo un error',\r\n iconChar:'ri-emotion-unhappy-line',\r\n okButtonColor:'red',\r\n okButtonText:'Cerrar',\r\n type: 'error',\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createTinyDelete(\r\n body: string,\r\n options?: Partial<AlertData>\r\n): AlertData {\r\n return {\r\n body,\r\n title:'Cornfirmación de acción',\r\n iconChar:'ri-delete-bin-line',\r\n okButtonColor:'red',\r\n okButtonText:'Sí, eliminar',\r\n showCancelButton:true,\r\n cancelButtonText:'Cancelar',\r\n type: 'delete',\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createTinyWarning(\r\n body: string,\r\n options?: Partial<AlertData>\r\n): AlertData {\r\n return {\r\n body,\r\n title:'¡Cuidado!',\r\n iconChar:'ri-alarm-warning-line',\r\n okButtonColor:'yellow',\r\n type: 'warning',\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createTinyInfo(\r\n body: string,\r\n options?: Partial<AlertData>\r\n): AlertData {\r\n return {\r\n body,\r\n iconChar:'ri-information-line',\r\n okButtonColor:'black',\r\n type: 'info',\r\n ...options,\r\n };\r\n}","import { inject, Injectable } from '@angular/core';\r\nimport { AlertData, AlertResponse } from '../components/tiny-alert/tiny-alert.model';\r\nimport { TinyAlertComponent } from '../components/tiny-alert/tiny-alert.component';\r\nimport { UicModalService } from './modal.service';\r\nimport { createTinyDelete, createTinyError, createTinyInfo, createTinySuccess, createTinyWarning } from '../components/push-alerts/tynyalert.helpers';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UicTinyAlertService {\r\n\r\n private readonly modal = inject(UicModalService);\r\n\r\n showAlert(data: AlertData): Promise<AlertResponse> {\r\n return new Promise<AlertResponse>((resolve) => {\r\n this.modal.openFloatingModal(TinyAlertComponent, {\r\n data: { alert: data }\r\n }).afterClosed().subscribe(result => {\r\n resolve({\r\n value: result?.status,\r\n data: result?.data\r\n });\r\n });\r\n });\r\n }\r\n\r\n success(message:string,options?: Partial<AlertData>){\r\n return this.showAlert( createTinySuccess(message,options) )\r\n }\r\n\r\n error(message:string,options?: Partial<AlertData>){\r\n return this.showAlert( createTinyError(message,options) )\r\n }\r\n\r\n warning(message:string,options?: Partial<AlertData>){\r\n return this.showAlert( createTinyWarning(message,options) )\r\n }\r\n info(message:string,options?: Partial<AlertData>){\r\n return this.showAlert( createTinyInfo(message,options) )\r\n }\r\n\r\n deleteConfirmation(message:string,options?: Partial<AlertData>){\r\n return this.showAlert( createTinyDelete(message,options) )\r\n }\r\n \r\n}\r\n","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { TableRow, TableRowData } from '../table/table.models';\r\nimport { UicToolTipDirective } from '../../directives/tool-tip.directive';\r\nimport { UicTableListComponent } from '../table/table-list/table-list.component';\r\nimport { UicTableUserComponent } from '../table/table-user/table-user.component';\r\nimport { UicCheckboxComponent } from '../inputs/checkbox/checkbox.component';\r\nimport { UicStatusLabelComponent } from '../status-label/status-label.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { UicSwichComponent } from '../inputs/toggle-button/toggle-button.component';\r\nimport { CurrencyPipe, DatePipe } from '@angular/common';\r\nimport { UicButtonComponent } from '../button/button.component';\r\nimport { UicTinyAlertService } from '../../services/tiny-alert.service';\r\nimport { AlertData } from '../tiny-alert/tiny-alert.model';\r\n\r\n@Component({\r\n selector: 'ui-item-value',\r\n imports: [\r\n UicToolTipDirective,\r\n UicTableUserComponent,\r\n UicSwichComponent,\r\n UicStatusLabelComponent,\r\n UicTableListComponent,\r\n FormsModule,\r\n UicButtonComponent,\r\n CurrencyPipe,\r\n DatePipe\r\n ],\r\n templateUrl: './item-value.component.html',\r\n styleUrl: './item-value.component.scss'\r\n})\r\nexport class ItemValueComponent {\r\n\r\n private readonly alers = inject(UicTinyAlertService);\r\n\r\n @Input() key:string|number = '';\r\n @Input() type = 'text';\r\n @Input() alignment = '';\r\n @Input() row!:TableRow;\r\n @Input() disabled = false;\r\n\r\n @Input() data:TableRowData|null = null;\r\n\r\n @Input() switchValidation:AlertData[] = [];\r\n @Output() switchConfirmed = new EventEmitter<boolean>();\r\n \r\n expanded = false;\r\n checked = false;\r\n\r\n ngOnInit(){\r\n if ( this.row ){\r\n this.data = this.row.data.find(f=>f.key == this.key)??null;\r\n this.checked = this.data?.checked??false;\r\n }\r\n }\r\n switchHandler(rowId:string|number, value:boolean){\r\n if ( this.data && this.switchValidation.length >0 ){\r\n const OK = this.switchValidation[0];\r\n const CANCEL = this.switchValidation[1]??this.switchValidation[0];\r\n\r\n this.alers.showAlert( value? OK : CANCEL ).then(r=>{\r\n if ( r.value ){\r\n this.switchConfirmed.emit(value);\r\n }else{\r\n if ( this.data){\r\n this.data.checked = !value\r\n this.checked = this.data.checked;\r\n }\r\n setTimeout(() => {\r\n }, 100);\r\n }\r\n \r\n });\r\n }else{\r\n this.switchConfirmed.emit(value);\r\n }\r\n }\r\n\r\n expand (click:MouseEvent){\r\n click.stopPropagation();\r\n this.expanded = !this.expanded;\r\n }\r\n copyText(text:string,click:MouseEvent){\r\n click.stopPropagation();\r\n navigator.clipboard.writeText(text)\r\n .then(() => {\r\n console.log('Copiado!');\r\n })\r\n .catch(err => {\r\n console.error('No se pudo copiar: ', err);\r\n }); \r\n }\r\n}\r\n","@if (data) {\r\n @if (type == 'text' || !type) {\r\n @if( data.icon ){ <i [class]=\"data.icon\"></i>}\r\n {{ data.value }} \r\n @if( data.rightIcon ){ <i [class]=\"data.rightIcon\"></i>}\r\n }\r\n @if (type == 'copy') {\r\n <div class=\"copy-div\">\r\n {{ data.value }} \r\n <ui-button (click)=\"copyText((data.value??'').toString(),$event)\" type=\"ghost\" size=\"s\" [iconOnly]=\"true\" icon=\"ri-file-copy-line\"></ui-button>\r\n </div>\r\n }\r\n @if (type == 'money'){\r\n {{ + (data.value??0) | currency: data.currencyCode||''}} \r\n }\r\n @if (type == 'date'){\r\n {{ (data.value??'').toString() | date: 'dd/MM/yyyy'}} \r\n }\r\n @if (type == 'bigtext') {\r\n <div (click)=\"expand($event)\" class=\"expandible-row\" [class.expandedrow]=\"expanded\">\r\n {{ data.value }} \r\n @if( data.value && data.value.toString().length > 0){\r\n <i [class]=\"expanded?'ri-arrow-up-s-line':'ri-arrow-down-s-line'\"></i>\r\n }\r\n @if (!expanded && data.value && data.value.toString().length > 0) {\r\n <div class=\"fade-overlay\"></div>\r\n }\r\n </div>\r\n }\r\n @if (type == 'icon-list') {\r\n @for (alert of data.list; track $index) {\r\n <i [tip]=\"alert.text\" [class]=\"alert.icon + ' ui-alert'\" ></i>\r\n }\r\n }\r\n @else if (type == 'list'){\r\n <uic-table-list [list]=\"data.list??[]\"></uic-table-list> \r\n }\r\n @else if (type == 'user'){\r\n <uic-table-user [user]=\"data.user\"></uic-table-user> \r\n }\r\n @else if (type == 'status'){\r\n @if (data.value) {\r\n <ui-status-label [icon]=\"data.icon??'ri-circle-fill'\" [color]=\"data.color??''\"> {{data.value}} </ui-status-label> \r\n }@else {\r\n -\r\n }\r\n }\r\n @else if (type == 'tag'){\r\n <ui-status-label type=\"tag\" [icon]=\"data.icon??'ri-circle-fill'\" [color]=\"data.color??''\"> {{data.value}} </ui-status-label> \r\n }\r\n @else if (type == 'switch'){\r\n <div (click)=\"$event.stopPropagation()\">\r\n <ui-switch [disabled]=\"disabled\" [(checked)]=\"checked\" (checkedChange)=\"switchHandler(row.id,$event)\"></ui-switch> \r\n </div>\r\n }\r\n\r\n @if( data.subtext ){\r\n <div [class]=\"'subtext ui-alignment-'+alignment\">{{ data.subtext }}</div>\r\n }\r\n}\r\n\r\n","import { Component, Input } from '@angular/core';\r\nimport { UicStatusLabelComponent } from '../status-label/status-label.component';\r\nimport { UicButtonComponent } from '../button/button.component';\r\nimport { CurrencyPipe, DatePipe } from '@angular/common';\r\nimport { BackgroundColors, TableList, TableRowData, TableTextColors, TableUser } from '../table/table.models';\r\nimport { ItemValueComponent } from '../item-value/item-value.component';\r\nimport { AlertData } from '../tiny-alert/tiny-alert.model';\r\n\r\n\r\n@Component({\r\n selector: 'ui-portlet-card',\r\n imports: [\r\n ItemValueComponent\r\n],\r\n templateUrl: './uic-portlet-card.component.html',\r\n styleUrl: './uic-portlet-card.component.scss'\r\n})\r\nexport class UicPortletCardComponent {\r\n\r\n @Input() title = '';\r\n @Input() data: UicPortletData[] = [];\r\n @Input() layout: 'horizontal' | 'vertical' = 'horizontal';\r\n @Input() cols = 1;\r\n @Input() gap = 20;\r\n @Input() labelWeight= 400;\r\n @Input() valueWeight= 500;\r\n @Input() switchValidation:AlertData[] = [];\r\n finalData:TableRowData[]=[];\r\n\r\n ngOnInit(){\r\n this.finalData = this.data.map(p=>({...p,key:p.label??'-'}));\r\n }\r\n\r\n get gridTemplateColumns(): string | null {\r\n if (this.layout !== 'vertical') {\r\n return null;\r\n }\r\n const columns = Math.max(1, Math.floor(this.cols || 1));\r\n return `repeat(${columns}, minmax(0, 1fr))`;\r\n }\r\n\r\n copyText(text:string){\r\n navigator.clipboard.writeText(text)\r\n .then(() => {\r\n console.log('Copiado!');\r\n })\r\n .catch(err => {\r\n console.error('No se pudo copiar: ', err);\r\n }); \r\n }\r\n\r\n switchHandler(key:string,value:boolean){\r\n \r\n }\r\n\r\n}\r\n\r\nexport interface UicPortletData{\r\n value?: string|number;\r\n label?:string;\r\n type?:string;\r\n subtext?: string|number;\r\n checked?:boolean;\r\n list?:TableList[];\r\n user?:TableUser;\r\n icon?: string;\r\n rightIcon?:string;\r\n iconColor?:string;\r\n textColor?: TableTextColors;\r\n color?: BackgroundColors;\r\n expanded?:boolean;\r\n currencyCode?:string;\r\n}\r\n","@if ( title) {\r\n <h2>{{title}}</h2>\r\n}\r\n<div class=\"portlet\" \r\n [class.portlet-vertical]=\"layout === 'vertical'\" \r\n [style.gridTemplateColumns]=\"gridTemplateColumns\"\r\n [style]=\"'gap: ' + gap + 'px;'\" >\r\n @for (item of finalData; track $index) {\r\n <div class=\"portlet-row\" [class.portlet-row-vertical]=\"layout === 'vertical'\">\r\n <div class=\"portlet-row-label\" [style.fontWeight]=\"labelWeight\">{{item.label}}</div>\r\n <div class=\"portlet-row-value\" [style.fontWeight]=\"valueWeight\">\r\n <ui-item-value\r\n [type]=\"item.type??'text'\"\r\n [data]=\"item\"\r\n [switchValidation]=\"switchValidation\"\r\n (switchConfirmed)=\"switchHandler('xx', $event)\"\r\n ></ui-item-value>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { TableColums, TableRow, TableRowData } from '../table/table.models';\r\nimport { UicPortletCardComponent, UicPortletData } from '../uic-portlet-card/uic-portlet-card.component';\r\n\r\n@Component({\r\n selector: 'ui-short-table',\r\n imports: [UicPortletCardComponent],\r\n templateUrl: './short-table.component.html',\r\n styleUrl: './short-table.component.scss'\r\n})\r\nexport class UicShortTableComponent {\r\n \r\n @Input() columns:TableColums[] = [];\r\n @Input() data!:TableRow;\r\n @Input() loading = false;\r\n @Input() disabled = false;\r\n @Input() cols = 2;\r\n\r\n portlet:UicPortletData[] =[];\r\n\r\n ngOnInit(){\r\n this.portlet = this.apTableToPortlets(this.columns,this.data);\r\n }\r\n\r\n apTableToPortlets(\r\n columns: TableColums[],\r\n row: TableRow\r\n ): UicPortletData[] {\r\n return columns.filter(f=> !!f.hideOn )\r\n .map(col => {\r\n const cell = row.data.find(d => d.key === col.key);\r\n if (!cell) return null;\r\n\r\n return {\r\n type: col.type == 'bigtext' ? 'text' : col.type,\r\n label: col.label, \r\n ...cell\r\n } as UicPortletData;\r\n\r\n })\r\n .filter((p): p is UicPortletData => p !== null);\r\n\r\n }\r\n}\r\n","<ui-portlet-card \r\n [gap]=\"20\" \r\n layout=\"vertical\" \r\n [cols]=\"cols\" \r\n [data]=\"portlet\">\r\n</ui-portlet-card>","import { AppSelectOption, FormSchema, TableColums, TableRowData } from \"../public-api\";\r\n\r\n\r\n// Mapea datos a tablas (deben tener el mismo nombre)\r\nexport function helperTableMapDatoToColums(data:Record<string,any>,headers:TableColums[]){\r\n const row:TableRowData[] = [];\r\n headers.forEach( head =>{\r\n if ( head.key in data && head.type=='text'){\r\n row.push({\r\n key: head.key,\r\n value: data[head.key]\r\n });\r\n }\r\n });\r\n return row;\r\n }\r\n\r\n// MAPEA EL RESULTADO DE UN FORMULARIO AL DTO\r\nexport function helperFormMapFormdataToObject<T extends object>(formData: Record<string, any>, defaults: T): T {\r\n return {\r\n ...defaults,\r\n ...Object.fromEntries(\r\n Object.keys(defaults) \r\n .filter(key => key in formData)\r\n .map(key => [key, formData[key]])\r\n )\r\n } as T; \r\n}\r\n\r\n\r\nexport function isMobile(): boolean {\r\n const mobileBP = getComputedStyle(document.documentElement)\r\n .getPropertyValue('--bp-mobile');\r\n return window.matchMedia(`(max-width: ${mobileBP})`).matches;\r\n}","import { Component, ContentChild, ElementRef, EventEmitter, input, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { TableAction, TableColums, TableRow, TableFilters, TableRowData, TableButton } from './table.models';\r\nimport { ButtonColor, UicButtonComponent } from '../button/button.component';\r\nimport { UicTableUicSearcherComponent } from './table-searcher/table-searcher.component';\r\nimport { UicTablePaginationComponent } from './table-pagination/table-pagination.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UicTableListComponent } from './table-list/table-list.component';\r\nimport { UicTableUserComponent } from './table-user/table-user.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { UicToolTipDirective } from '../../directives/tool-tip.directive';\r\nimport { highlightRow } from '../../animations/highlightRow.animation';\r\nimport { animatedRow } from '../../animations/animatedRow.animation';\r\nimport { UicCheckboxComponent } from '../inputs/checkbox/checkbox.component';\r\nimport { UicStatusLabelComponent } from '../status-label/status-label.component';\r\nimport { ActionMenuOption, UicActionButtonComponent } from '../uic-action-button/uic-action-button.component';\r\nimport { UicSwichComponent } from '../inputs/toggle-button/toggle-button.component';\r\nimport { UicShortTableComponent } from '../short-table/short-table.component';\r\nimport { ItemValueComponent } from '../item-value/item-value.component';\r\nimport { isMobile } from '../../helpers'\r\nimport { AlertData } from '../tiny-alert/tiny-alert.model';\r\n\r\n@Component({\r\n selector: 'ui-table',\r\n imports: [CommonModule, \r\n UicButtonComponent, \r\n ItemValueComponent,\r\n UicShortTableComponent,\r\n UicActionButtonComponent,\r\n UicTableUicSearcherComponent, \r\n UicTablePaginationComponent,\r\n UicToolTipDirective,\r\n UicCheckboxComponent, \r\n FormsModule],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n animations: [ highlightRow, animatedRow ]\r\n})\r\nexport class UicTableComponent {\r\n \r\n @Input() columns:TableColums[] = [];\r\n @Input() data:TableRow[] = [];\r\n @Input() loading = false;\r\n @Input() disabled = false;\r\n @Input() rowClickable = false;\r\n @Input() rowExpandible = false;\r\n @Input() pages = 0;\r\n @Input() size = 25;\r\n @Input() squeletonRows = 5;\r\n @Input() buttonSize: 'm'|'l'|'s' = 'm';\r\n @Input() highlightedId: string |number = 0;\r\n @Input() headerText = '';\r\n @Input() totalItems = 0;\r\n @Input() alignment: 'left'|'center' = 'center';\r\n \r\n @Input() searchEnabled = true;\r\n @Input() searchLabel = 'Buscar';\r\n @Input() searchPlaceholder = 'Buscar';\r\n \r\n @Input() headerClass = '';\r\n @Input() headerBackgroundColor:ButtonColor = 'grey';\r\n @Input() striped = false;\r\n @Input() showPagination = true;\r\n @Input() searchOnKeydown = false;\r\n \r\n @Input() showEmptyMessage = true;\r\n @Input() showSearchButton = false;\r\n @Input() showTextPagination = true;\r\n @Input() emptyMessage = 'No hay elementos';\r\n @Input() switchValidation:AlertData[] = [];\r\n @Input() nextButtonText = 'Sig.';\r\n @Input() previousButtonText = 'Ant.';\r\n @Input() mobilePortletCols = 2;\r\n \r\n @Input() searcherShowButtonText = false;\r\n \r\n \r\n \r\n @Output() action = new EventEmitter<TableAction>();\r\n @Output() update = new EventEmitter<TableFilters>();\r\n @Output() checkedChange = new EventEmitter<(string|number)[]>(); \r\n @Output() switchChange = new EventEmitter<{key:string|number,value:boolean,columName:string}>(); \r\n @Output() clickedRow = new EventEmitter<string|number>(); \r\n \r\n allSelected = false;\r\n \r\n checkedIds = new Set<string | number >();\r\n sortKey = '';\r\n sortAsc = true;\r\n filter = '';\r\n page=1;\r\n\r\n fullViewRows:(string|number)[] = [];\r\n\r\n mobileView = false;\r\n\r\n ngOnInit(){\r\n this.mobileView = isMobile();\r\n }\r\n\r\n getValue(data:TableRowData[],key:string):string{\r\n const col = data.find(col => col.key == key);\r\n return col?.value?.toString()??'';\r\n }\r\n\r\n\r\n getMoreActions(actions:TableButton[], row:TableRowData[]):ActionMenuOption[]{\r\n return actions\r\n .filter(f=> this.isValidRule(row, f.rule))\r\n .map(p=>({id:p.key,label:p.text??'',icon:p.icon??''}))\r\n }\r\n\r\n getFontColor(data:TableRowData[],key:string){\r\n const col = data.find(col => col.key == key);\r\n return 'ui-trc-' + (col?.textColor??'black');\r\n }\r\n\r\n isValidRule(data:TableRowData[],key:string[]|undefined):boolean{\r\n if ( !key ) return true;\r\n let valid = true;\r\n\r\n key.forEach(k => {\r\n const col = data.find(col => col.key == k);\r\n valid = valid && !!(col?.value);\r\n });\r\n \r\n return valid;\r\n }\r\n\r\n\r\n sortClick(key:string){\r\n if ( this.sortKey != key ){\r\n this.sortKey = key;\r\n this.sortAsc = true;\r\n }else if ( this.sortAsc ){\r\n this.sortAsc = false;\r\n }else{\r\n this.sortKey = '';\r\n this.sortAsc = true;\r\n }\r\n this.updateData();\r\n }\r\n sizeChabge(newSize:number){\r\n this.size = newSize;\r\n this.updateData(); \r\n }\r\n pageChage(newPage:number){\r\n this.page = newPage;\r\n this.updateData();\r\n }\r\n search(text:string){\r\n this.filter = text;\r\n this.updateData();\r\n }\r\n updateData(){\r\n this.update.emit({\r\n sortBy:this.sortKey,\r\n isSortAscending:this.sortAsc,\r\n pageNumber:this.page,\r\n pageSize:this.size,\r\n filter: this.filter\r\n })\r\n }\r\n \r\n toggleSelection(id: string|number, checked: boolean){\r\n if (checked) {\r\n this.checkedIds.add(id);\r\n } else {\r\n this.checkedIds.delete(id);\r\n }\r\n this.areAllSelected();\r\n this.checkedChange.emit(Array.from(this.checkedIds));\r\n }\r\n \r\n toggleAll(checked: boolean) {\r\n if (checked) {\r\n this.data.forEach(item => this.checkedIds.add(item.id));\r\n } else {\r\n this.checkedIds.clear();\r\n }\r\n this.checkedChange.emit(Array.from(this.checkedIds));\r\n }\r\n areAllSelected() {\r\n this.allSelected = this.checkedIds.size === this.data.length && this.data.length > 0;\r\n }\r\n \r\n ngOnChanges(change:SimpleChanges) {\r\n this.areAllSelected();\r\n }\r\n\r\n doAction(rowId:string|number,key:string,event?: MouseEvent){\r\n event?.stopPropagation();\r\n this.action.emit({rowId,key});\r\n }\r\n\r\n\r\n resetCheckedIds() {\r\n this.checkedIds.clear();\r\n this.checkedChange.emit([]);\r\n }\r\n\r\n switchHandler(key:string|number,value:boolean, columName:string){\r\n this.switchChange.emit({key,value,columName});\r\n }\r\n\r\n\r\n @ContentChild('[actions]') actionsRef?: ElementRef;\r\n\r\n hasActions = false;\r\n\r\n ngAfterContentInit() {\r\n this.hasActions = !!this.actionsRef;\r\n }\r\n\r\n clickRow(id:number|string){\r\n if (this.rowClickable)\r\n this.clickedRow.emit(id);\r\n \r\n\r\n if ( this.rowExpandible && this.mobileView){\r\n if ( this.fullViewRows.includes(id) ) { \r\n this.fullViewRows = this.fullViewRows.filter(f=>f!=id);\r\n }else{\r\n this.fullViewRows.push(id)\r\n }\r\n }\r\n }\r\n}\r\n","@if ( hasActions || searchEnabled){\r\n <div class=\"ui-table-filters\">\r\n @if (searchEnabled) {\r\n <uic-table-searcher \r\n [showSearchButton]=\"showSearchButton\" \r\n [showButtonText]=\"searcherShowButtonText\" \r\n [searchOnKeydown]=\"searchOnKeydown\"\r\n (filter)=\"search($event)\" \r\n [placeholder]=\"searchPlaceholder\" >\r\n </uic-table-searcher>\r\n }\r\n <div class=\"ui-filter-actions\">\r\n <ng-content select=\"[actions]\"></ng-content>\r\n </div>\r\n </div>\r\n}\r\n<ng-content select=\"[filters]\"></ng-content>\r\n<div class=\"ui-table-wrapper\">\r\n @if (headerText) {\r\n <div class=\"ui-table-topbar\"> {{headerText}} <span class=\"hightlited-note\"> {{totalItems}} </span> </div>\r\n }\r\n <div class=\"ui-table-container\"> \r\n <table class=\"ui-table\" [class.ui-striped]=\"striped\">\r\n <thead>\r\n <tr [class]=\" headerClass || 'header-'+headerBackgroundColor\">\r\n @for (header of columns; track $index) {\r\n <th [class.noshow-small]=\"header.hideOn == 'small'\"\r\n [class.noshow-medium]=\"header.hideOn == 'medium'\">\r\n <div [class]=\"'ui-th-wrap ui-alignment-'+alignment\" >\r\n @if (header.type=='checkbox') {\r\n <div>\r\n <ui-checkbox style=\"margin-right: 5px;\" [(ngModel)]=\"allSelected\" (ngModelChange)=\"toggleAll($event)\"></ui-checkbox>\r\n </div>\r\n }\r\n {{header.label.toUpperCase() }} \r\n @if (header.sortEnable) {\r\n <div class=\"ui-sort-arrow\" (click)=\"sortClick(header.key)\" [ngClass]=\"{'ui-sort-active':header.key == sortKey}\">\r\n <i [class]=\"(sortAsc||header.key != sortKey)?'ri-arrow-down-line':'ri-arrow-up-line'\"></i> \r\n </div>\r\n }\r\n </div>\r\n </th> \r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n\r\n @if (loading) {\r\n @for (item of [].constructor(squeletonRows); track $index) {\r\n <tr>\r\n @for (header of columns; track $index) {\r\n <td> <div class=\"ui-row-loader\"></div> </td>\r\n }\r\n </tr> \r\n }\r\n } @else {\r\n @for (row of data; track row.id) {\r\n <tr [@highlightRow]=\"highlightedId === row.id ? 'highlighted' : null\" \r\n [class.ui-tr-highlighted]=\"row.highlighted\"\r\n [class.clickable-row]=\"rowClickable\"\r\n (click)=\"clickRow(row.id)\"\r\n >\r\n @for (header of columns; track $index) {\r\n <!-- TIPOS DE HEADERS -->\r\n <td [class]=\"getFontColor(row.data,header.key)\"\r\n [class.noshow-small]=\"header.hideOn == 'small'\"\r\n [class.noshow-medium]=\"header.hideOn == 'medium'\">\r\n\r\n <div [class]=\"'ui-cell-content ui-alignment-'+alignment\" \r\n [style.justify-content]=\"header.align||null\"\r\n [style.width.px]=\"header.width || null\">\r\n @if (header.type == 'actions') { \r\n <div class=\"ui-centered-cell-content\">\r\n @for (btn of header.actions; track $index) {\r\n @if (isValidRule(row.data,btn.rule)) {\r\n <ui-button \r\n [disabled]=\"loading\"\r\n [tip]=\"btn.tooltip??''\"\r\n size=\"s\"\r\n [disabled]=\"disabled\"\r\n [text]=\"btn.text??''\"\r\n [type]=\"btn.type??'filled'\"\r\n [iconOnly]=\"!btn.text\"\r\n [icon]=\"btn.icon??''\"\r\n [color]=\"btn.color??'black'\"\r\n (click)=\"doAction(row.id,btn.key,$event)\">\r\n </ui-button> \r\n }\r\n } \r\n @if ( header.moreActions && header.moreActions.length>0 ) {\r\n @for (ma of header.moreActions; track $index) {\r\n <ui-action-button [icon]=\"ma.icon??'ri-more-2-line'\" (optionSelected)=\"doAction(row.id,$event.id)\" [options]=\"getMoreActions(ma.actions||[],row.data)\"></ui-action-button>\r\n }\r\n }\r\n </div> \r\n }\r\n @else if (header.type == 'checkbox'){\r\n <ui-checkbox [disabled]=\"disabled\" [ngModel]=\"checkedIds.has(row.id)\" [placeholder]=\"getValue(row.data,header.key)\" (ngModelChange)=\"toggleSelection(row.id,$event)\" ></ui-checkbox> \r\n }\r\n @else {\r\n <ui-item-value\r\n [disabled]=\"disabled\"\r\n [key]=\"header.key\"\r\n [type]=\"header.type??'text'\"\r\n [row]=\"row\"\r\n [alignment]=\"alignment\"\r\n [switchValidation]=\"switchValidation\"\r\n (switchConfirmed)=\"switchHandler(header.key, $event, header.label)\"\r\n ></ui-item-value>\r\n }\r\n </div>\r\n </td>\r\n }\r\n </tr>\r\n @if (fullViewRows.includes(row.id)) {\r\n <tr style=\"border-top: none ;\">\r\n <td [colSpan]=\"columns.length\">\r\n <div class=\"full-space-row\">\r\n <ui-short-table [columns]=\"columns\" [cols]=\"mobilePortletCols\" [data]=\"row\"></ui-short-table>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n }\r\n @empty {\r\n @if (showEmptyMessage) {\r\n <tr> \r\n <td [colSpan]=\"columns.length\">\r\n <div class=\"ui-empty\">{{emptyMessage}} </div>\r\n </td>\r\n </tr>\r\n }\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n \r\n @if (showPagination) {\r\n <uic-table-pagination \r\n [loading]=\"loading\" \r\n [totalPages]=\"pages\" \r\n [showText]=\"showTextPagination\"\r\n [size]=\"size\"\r\n [nextButtonText]=\"nextButtonText\"\r\n [previousButtonText]=\"previousButtonText\"\r\n [buttonSize]=\"buttonSize\"\r\n (sizeChange)=\"sizeChabge($event)\"\r\n (pageChange)=\"pageChage($event)\">\r\n </uic-table-pagination>\r\n }\r\n</div>\r\n","import { ButtonColor, ButtonType } from \"../button/button.component\";\r\nimport { UicPortletData } from \"../uic-portlet-card/uic-portlet-card.component\";\r\n\r\nexport interface TableColums{\r\n key: string;\r\n label: string;\r\n width?:number;\r\n align?: 'flex-start'| 'flex-end'| 'center';\r\n type?: ColumnTypes;\r\n sortEnable?: boolean;\r\n actions?: TableButton[];\r\n hideOn?: 'small' | 'medium';\r\n moreActions?: {icon?:string;actions:TableButton[]}[];\r\n}\r\nexport interface TableButton{\r\n key: string;\r\n color?: ButtonColor;\r\n icon?: string;\r\n text?: string;\r\n type?:ButtonType;\r\n tooltip?: string;\r\n rule?: string[];\r\n}\r\nexport interface TableRow{\r\n id: number|string;\r\n data:TableRowData[];\r\n highlighted?:boolean;\r\n}\r\n\r\nexport interface TableRowData extends UicPortletData{\r\n key: string;\r\n}\r\n\r\nexport interface TableList{text:string; subtext?:string,icon?:string; color?:string};\r\nexport interface TableUser{name:string;id:string;photo?:string,icon?:string,hideAvatar?:boolean};\r\nexport interface TableAction{\r\n rowId: number|string;\r\n key: string;\r\n}\r\nexport type ColumnTypes = 'actions' \r\n| 'text' \r\n| 'list' \r\n| 'money'\r\n| 'copy'\r\n| 'user' \r\n| 'checkbox' \r\n| 'icon-list' \r\n| 'status' \r\n| 'switch' \r\n| 'bigtext' \r\n| 'date' \r\n| 'tag';\r\n\r\nexport type TableTextColors = 'primary' | 'red' | 'green' | 'blue' | 'yellow' | 'black' | 'grey' ;\r\nexport type BackgroundColors = 'primary' | 'secondary' | 'red' | 'green' | 'blue' | 'yellow' | 'black' | 'grey' | 'transparent' | 'white' ;\r\nexport interface TableFilters {\r\n sortBy:string;\r\n isSortAscending:boolean;\r\n pageNumber:number;\r\n pageSize:number;\r\n filter: string;\r\n }","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Alert } from '../alert.model';\r\n\r\n\r\n@Component({\r\n selector: 'ui-alert',\r\n imports: [],\r\n templateUrl: './alert.component.html',\r\n styleUrl: './alert.component.scss'\r\n})\r\nexport class UiAlertComponent implements OnInit{\r\n @Input() alert!: Alert;\r\n @Output() closeAlert = new EventEmitter<number>();\r\n \r\n interval: any;\r\n progressValue = 0;\r\n animationIntevalMs = 100;\r\n pauseAnimation = false;\r\n id = 0;\r\n\r\n\r\n ngOnInit(){\r\n this.id = this.alert.id;\r\n if(this.alert.duration && this.alert.duration > 0){\r\n const duration = this.alert.duration;\r\n let count = 0;\r\n this.interval = setInterval(() => {\r\n count = this.pauseAnimation? count : count + this.animationIntevalMs;\r\n this.progressValue = Math.floor((count / duration)*100);\r\n if (this.progressValue > 100){\r\n this.close();\r\n }\r\n }, this.animationIntevalMs);\r\n\r\n }\r\n }\r\n\r\n close(){\r\n clearInterval( this.interval );\r\n this.closeAlert.emit(this.id);\r\n }\r\n\r\n \r\n}\r\n","<div [class]=\"'alert ' + alert.type + ' ' + (alert.style??'filled')\" >\r\n @if (alert.showProgressBar) {\r\n <div class=\"alert-process\">\r\n <div class=\"alert-process-bar\" [style.width.%]=\"progressValue\"></div>\r\n </div>\r\n }\r\n <div class=\"alert-body\">\r\n <button class=\"close\" (click)=\"close()\"> ✕ </button>\r\n @if (alert.icon) {\r\n <i [class]=\"'highlighted ' + alert.icon\"></i>\r\n }\r\n <div>\r\n <div class=\"toast-title highlighted\">{{alert.title}}</div>\r\n <div class=\"toast-body\">{{alert.message}}</div>\r\n @if ( alert.okButtonText || alert.cancelButtonText){\r\n <div class=\"toast-buttons \">\r\n @if ( alert.okButtonText ) {\r\n <button style=\"font-weight: 500;\">{{alert.okButtonText}}</button>\r\n }\r\n @if ( alert.cancelButtonText ){\r\n <button (click)=\"close()\">{{alert.cancelButtonText}}</button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { Alert } from '../alert.model';\r\nimport { UicPushAlertService } from '../../../services/push-alert.service';\r\nimport { UiAlertComponent } from '../alert/alert.component';\r\n\r\n@Component({\r\n selector: 'ui-alert-container',\r\n imports: [UiAlertComponent],\r\n templateUrl: './alert-container.component.html',\r\n styleUrl: './alert-container.component.scss'\r\n})\r\nexport class UicAlertContainerComponent implements OnInit {\r\n alerts: Alert[] = [];\r\n\r\n constructor(private readonly alertService: UicPushAlertService) {}\r\n\r\n ngOnInit() {\r\n this.alertService.stream.subscribe( alert => {\r\n this.alerts.push(alert);\r\n });\r\n }\r\n\r\n dismis(id:number){\r\n const idx = this.alerts.findIndex(f=>f.id == id);\r\n this.alerts.splice(idx,1);\r\n }\r\n\r\n}\r\n","<div class=\"alert-container\">\r\n @for (alert of alerts; track alert.id){\r\n <ui-alert\r\n (closeAlert)=\"dismis($event)\"\r\n [alert]=\"alert\">\r\n </ui-alert>\r\n } \r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { UicButtonComponent } from '../button/button.component';\nimport { createValueAccessor } from '../dynamic-form/base-value-accessot';\n\nconst base = createValueAccessor<Blob | null>();\n\n@Component({\n selector: 'ui-signature-pad',\n imports: [CommonModule, UicButtonComponent],\n templateUrl: './signature-pad.component.html',\n styleUrls: ['./signature-pad.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UicSignaturePadComponent),\n multi: true,\n },\n ],\n})\nexport class UicSignaturePadComponent extends base implements AfterViewInit {\n @Input() width = 400;\n @Input() height = 200;\n @Input() strokeColor = '#111827';\n @Input() strokeWidth = 2;\n @Input() disabled = false;\n @Output() imageChange = new EventEmitter<Blob | null>();\n\n @ViewChild('canvas', { static: true }) canvasRef!: ElementRef<HTMLCanvasElement>;\n\n private ctx: CanvasRenderingContext2D | null = null;\n private drawing = false;\n\n ngAfterViewInit(): void {\n const canvas = this.canvasRef.nativeElement;\n canvas.width = this.width;\n canvas.height = this.height;\n this.ctx = canvas.getContext('2d');\n if (this.ctx) {\n this.ctx.lineWidth = this.strokeWidth;\n this.ctx.lineCap = 'round';\n this.ctx.lineJoin = 'round';\n this.ctx.strokeStyle = this.strokeColor;\n }\n }\n\n startDraw(event: PointerEvent) {\n if (!this.ctx || this.disabled) return;\n this.drawing = true;\n const { x, y } = this.relativePosition(event);\n this.ctx.beginPath();\n this.ctx.moveTo(x, y);\n this.canvasRef.nativeElement.setPointerCapture(event.pointerId);\n event.preventDefault();\n }\n\n draw(event: PointerEvent) {\n if (!this.drawing || !this.ctx || this.disabled) return;\n const { x, y } = this.relativePosition(event);\n this.ctx.lineTo(x, y);\n this.ctx.stroke();\n event.preventDefault();\n }\n\n endDraw(event: PointerEvent) {\n if (!this.drawing || !this.ctx || this.disabled) return;\n this.ctx.closePath();\n this.drawing = false;\n this.canvasRef.nativeElement.releasePointerCapture(event.pointerId);\n this.emitSignature();\n event.preventDefault();\n }\n\n clear() {\n if (!this.ctx) return;\n this.resetCanvas();\n this.notifyChange(null as any);\n this.imageChange.emit(null);\n }\n\n private emitSignature() {\n if (this.disabled) return;\n const canvas = this.canvasRef.nativeElement;\n canvas.toBlob((blob) => {\n if (!blob) return;\n this.notifyChange(blob as any);\n this.imageChange.emit(blob);\n }, 'image/png');\n }\n\n private relativePosition(event: PointerEvent) {\n const rect = this.canvasRef.nativeElement.getBoundingClientRect();\n return {\n x: event.clientX - rect.left,\n y: event.clientY - rect.top,\n };\n }\n\n override writeValue(value: Blob | null): void {\n super.writeValue(value as any);\n if (!this.ctx) return;\n if (!value) {\n this.resetCanvas();\n return;\n }\n const url = URL.createObjectURL(value);\n const img = new Image();\n img.onload = () => {\n this.resetCanvas();\n this.ctx!.drawImage(img, 0, 0, this.width, this.height);\n URL.revokeObjectURL(url);\n };\n img.src = url;\n }\n\n private resetCanvas() {\n if (this.ctx) {\n this.ctx.clearRect(0, 0, this.width, this.height);\n }\n }\n}\n","<div class=\"signature-pad\" [style.width.px]=\"width\">\n <canvas\n #canvas\n class=\"signature-canvas\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n (pointerdown)=\"startDraw($event)\"\n (pointermove)=\"draw($event)\"\n (pointerup)=\"endDraw($event)\"\n (pointerleave)=\"endDraw($event)\"\n ></canvas>\n <div class=\"signature-actions\">\n <ui-button size=\"s\" type=\"ghost\" icon=\"ri-delete-bin-line\" (click)=\"clear()\">Limpiar</ui-button>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\r\nimport { ButtonColor } from '../button/button.component';\r\n\r\n@Component({\r\n selector: 'ui-kpi-card',\r\n imports: [],\r\n templateUrl: './kpi-card.component.html',\r\n styleUrl: './kpi-card.component.scss'\r\n})\r\nexport class UicKpiCardComponent {\r\n @Input() data!:UicKpiContet;\r\n @Input() loading = false;\r\n\r\n}\r\n\r\nexport interface UicKpiContet{\r\n label: string;\r\n value: string;\r\n icon?: string;\r\n iconColor?: ButtonColor;\r\n textColor?: ButtonColor;\r\n}","@if (data) {\r\n <div class=\"kpi-card\">\r\n <div >\r\n <div class=\"kpi-card-label\">{{data.label}}</div>\r\n @if (loading) {\r\n <div class=\"kpi-card-value-loading\"></div>\r\n }@else {\r\n\r\n <div [class]=\"'kpi-card-value ui-trc-' + data.textColor\">{{data.value}}</div>\r\n }\r\n </div>\r\n <i [class]=\"data.icon + ' ui-trc-' + data.iconColor\"></i>\r\n </div>\r\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-tabs-button',\r\n imports: [],\r\n templateUrl: './tabs-button.component.html',\r\n styleUrl: './tabs-button.component.scss'\r\n})\r\nexport class UicTabsButtonComponent {\r\n\r\n @Input() tabs:UiBtnTab[] = [];\r\n @Input() activeTab = '';\r\n @Output() activeTabChange = new EventEmitter<string>();\r\n\r\n selectTab(tab:string){\r\n this.activeTab = tab;\r\n this.activeTabChange.emit(this.activeTab);\r\n }\r\n}\r\nexport interface UiBtnTab{key:string; text:string; icon?:string, subtitle?:string} ","<div class=\"tabs\">\r\n @for (tab of tabs; track $index) {\r\n <div (click)=\"selectTab(tab.key)\" [class.active-tab]=\"tab.key == activeTab\" class=\"tab\"> \r\n @if (tab.icon) {\r\n <i [class]=\"tab.icon\"></i> \r\n }\r\n {{tab.text}}</div>\r\n }\r\n</div>","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ComponentRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { UicButtonComponent } from '../button/button.component';\r\nimport { UicToolTipDirective } from '../../directives/tool-tip.directive';\r\n\r\nexport interface WorkPanelTabConfig {\r\n id?: string;\r\n label: string;\r\n icon?:string;\r\n componentType: Type<any>;\r\n componentInputs?: Record<string, any>;\r\n}\r\n\r\n@Component({\r\n selector: 'ui-work-panel',\r\n imports: [UicButtonComponent, UicToolTipDirective],\r\n templateUrl: './work-panel.component.html',\r\n styleUrl: './work-panel.component.scss'\r\n})\r\nexport class UicWorkPanelComponent implements AfterViewInit {\r\n @ViewChild('host', { read: ViewContainerRef, static: true })\r\n host!: ViewContainerRef;\r\n\r\n /**\r\n * Compatibilidad con la version previa (un unico componente inicial).\r\n * Si se envia, se crea como primera pestana.\r\n */\r\n @Input() componentType?: Type<any>;\r\n @Input() componentInputs: Record<string, any> = {};\r\n\r\n /**\r\n * Lista inicial de pestanas a renderizar.\r\n */\r\n @Input() tabs: WorkPanelTabConfig[] = [];\r\n\r\n @Output() tabsChange = new EventEmitter<WorkPanelTabConfig[]>();\r\n @Output() tabClosed = new EventEmitter<string>();\r\n @Output() tabSelected = new EventEmitter<string>();\r\n @Output() tabAdded = new EventEmitter<string>();\r\n @Output() addTabRequest = new EventEmitter<void>();\r\n @Output() fullViewChange = new EventEmitter<boolean>();\r\n\r\n @Input() minPosition = 1;\r\n @Input() showAddButton = true;\r\n fullView = false;\r\n isMinimized = false;\r\n\r\n activeTabId?: string;\r\n tabInstances: Array<WorkPanelTabConfig & { id: string; componentRef: ComponentRef<any> }> = [];\r\n private idCounter = 0;\r\n private initialized = false;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit(): void {\r\n this.initialized = true;\r\n this.initializeTabs();\r\n this.renderActiveTab();\r\n // Evita ExpressionChanged en el primer ciclo al crear dinamicamente.\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private initializeTabs() {\r\n if (this.tabs?.length) {\r\n this.tabs.forEach(tab => this.createTab(tab, false));\r\n } else if (this.componentType) {\r\n this.createTab(\r\n {\r\n label: this.componentInputs['title'] ?? 'Panel',\r\n componentType: this.componentType,\r\n componentInputs: this.componentInputs\r\n },\r\n false\r\n );\r\n }\r\n }\r\n\r\n changeSizeBtn(b:boolean){\r\n this.fullView = b;\r\n this.fullViewChange.emit( this.isFullViewActivated() )\r\n\r\n }\r\n\r\n addTab(tabConfig: WorkPanelTabConfig): string {\r\n // Si el host aun no esta listo, guardamos la definicion para crearla luego.\r\n if (!this.initialized || !this.host) {\r\n const id = tabConfig.id ?? `tab-${++this.idCounter}`;\r\n this.tabs.push({ ...tabConfig, id });\r\n this.activeTabId = id;\r\n this.isMinimized = false;\r\n return id;\r\n }\r\n\r\n const instance = this.createTab(tabConfig, true);\r\n this.activeTabId = instance.id;\r\n this.isMinimized = false;\r\n this.renderActiveTab();\r\n this.tabAdded.emit(instance.id);\r\n this.tabSelected.emit(instance.id);\r\n return instance.id;\r\n }\r\n\r\n requestNewTab() {\r\n this.addTabRequest.emit();\r\n }\r\n\r\n selectTab(id: string) {\r\n this.isMinimized = false;\r\n if (this.activeTabId === id) {\r\n this.minimizePanel();\r\n return;\r\n }\r\n this.activeTabId = id;\r\n this.renderActiveTab();\r\n this.tabSelected.emit(id);\r\n }\r\n\r\n closeTab(id: string) {\r\n const index = this.tabInstances.findIndex(tab => tab.id === id);\r\n if (index === -1) {\r\n return;\r\n }\r\n const [tab] = this.tabInstances.splice(index, 1);\r\n\r\n const viewIndex = this.host.indexOf(tab.componentRef.hostView);\r\n if (viewIndex > -1) {\r\n this.host.detach(viewIndex);\r\n }\r\n tab.componentRef.destroy();\r\n\r\n if (this.activeTabId === id) {\r\n const next = this.tabInstances[index] ?? this.tabInstances[index - 1];\r\n this.activeTabId = next?.id;\r\n }\r\n if (!this.activeTabId) {\r\n this.isMinimized = true;\r\n }\r\n this.renderActiveTab();\r\n this.emitTabsChange();\r\n this.tabClosed.emit(id);\r\n this.fullViewChange.emit(this.isFullViewActivated());\r\n }\r\n\r\n close() {\r\n if (this.activeTabId) {\r\n this.closeTab(this.activeTabId);\r\n }\r\n }\r\n\r\n minimizePanel() {\r\n this.isMinimized = true;\r\n this.activeTabId = '';\r\n this.fullViewChange.emit(this.isFullViewActivated()); \r\n }\r\n\r\n private createTab(tabConfig: WorkPanelTabConfig, emitChange = true) {\r\n if (!this.host) {\r\n throw new Error('WorkPanel host ViewContainerRef not ready');\r\n }\r\n const id = tabConfig.id ?? `tab-${++this.idCounter}`;\r\n const componentRef = this.host.createComponent(tabConfig.componentType);\r\n Object.assign(componentRef.instance, tabConfig.componentInputs ?? {});\r\n\r\n const viewIndex = this.host.indexOf(componentRef.hostView);\r\n if (viewIndex > -1) {\r\n this.host.detach(viewIndex);\r\n }\r\n\r\n const instance = { ...tabConfig, id, componentRef };\r\n this.tabInstances.push(instance);\r\n\r\n if (!this.activeTabId) {\r\n this.activeTabId = id;\r\n }\r\n if (emitChange) {\r\n this.emitTabsChange();\r\n }\r\n return instance;\r\n }\r\n\r\n private renderActiveTab() {\r\n while (this.host.length) {\r\n this.host.detach(0);\r\n }\r\n const active = this.tabInstances.find(tab => tab.id === this.activeTabId);\r\n if (active) {\r\n this.host.insert(active.componentRef.hostView);\r\n this.fullViewChange.emit(this.isFullViewActivated())\r\n }\r\n }\r\n\r\n private emitTabsChange() {\r\n const snapshot = this.tabInstances.map(({ componentRef, ...tab }) => ({ ...tab }));\r\n this.tabsChange.emit(snapshot);\r\n }\r\n\r\n private isFullViewActivated(){\r\n return !(this.isMinimized || !this.activeTabId) && this.fullView;\r\n }\r\n}\r\n","<div\r\n [class]=\"fullView ? 'open-panel' : 'mid-panel'\"\r\n [class.panel-hidden]=\"isMinimized || !activeTabId\"\r\n>\r\n <div class=\"panel-header\">\r\n <ui-button class=\"nomob\" (click)=\"minimizePanel()\" size=\"s\" tip=\"Minimizar\" [iconOnly]=\"true\" color=\"black\" type=\"bordered\" rightIcon=\"ri-subtract-fill\"></ui-button>\r\n @if (fullView) {\r\n <ui-button class=\"nomob\" (click)=\"changeSizeBtn(false)\" size=\"s\" tip=\"Reducir\" [iconOnly]=\"true\" color=\"black\" type=\"bordered\" rightIcon=\"ri-collapse-diagonal-fill\"></ui-button>\r\n } @else {\r\n <ui-button class=\"nomob\" (click)=\"changeSizeBtn(true)\" size=\"s\" tip=\"Agrandar\" [iconOnly]=\"true\" color=\"black\" type=\"bordered\" rightIcon=\"ri-expand-diagonal-fill\"></ui-button>\r\n }\r\n <ui-button (click)=\"close()\" size=\"s\" tip=\"Cerrar\" [iconOnly]=\"true\" color=\"black\" type=\"bordered\" rightIcon=\"ri-close-line\"></ui-button>\r\n </div>\r\n <div class=\"panel-overflow\">\r\n <!-- contenido dinamico -->\r\n <ng-container #host></ng-container>\r\n </div>\r\n</div>\r\n@if (tabInstances.length > 0) {\r\n <div class=\"panel-nav-bar\">\r\n <div class=\"panel-tabs\">\r\n @for (tab of tabInstances; track tab.id) {\r\n <div class=\"minimized-panel\" [class.active]=\"tab.id === activeTabId\">\r\n <button class=\"min-btn\" type=\"button\" (click)=\"selectTab(tab.id)\">\r\n <i [class]=\"tab.icon?tab.icon : 'ri-dossier-line'\"></i>\r\n <div class=\"min-text\">{{ tab.label }}</div>\r\n </button>\r\n <i (click)=\"closeTab(tab.id)\" class=\"close-btn ri-close-line\"></i>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { Component, ElementRef, inject, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-overlay-card',\r\n imports: [],\r\n templateUrl: './overlay-card.component.html',\r\n styleUrl: './overlay-card.component.scss'\r\n})\r\nexport class UicOverlayCardComponent {\r\n\r\n @ViewChild('menuTemplate') menuTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n selectedSet = new Set<string | number>();\r\n allSelected = false;\r\n\r\n overlayPositions: ConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\r\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\r\n ];\r\n\r\n openMenu() {\r\n if (this.overlayRef) {\r\n this.close();\r\n return;\r\n }\r\n\r\n const origin = this.host.nativeElement.querySelector('.button-container');\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(origin as HTMLElement)\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(false)\r\n .withPush(true);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.menuTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.close());\r\n }\r\n\r\n\r\n\r\n close() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n}\r\n","<!-- Botón -->\r\n <div (click)=\"openMenu()\" class=\"button-container\">\r\n <ng-content select=\"[button]\"></ng-content>\r\n </div>\r\n\r\n<!-- Menú -->\r\n<ng-template #menuTemplate>\r\n <div class=\"action-menu\">\r\n <ng-content select=\"[content]\"></ng-content>\r\n </div>\r\n</ng-template>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { UiBtnTab } from '../tabs-button/tabs-button.component';\n\n\n@Component({\n selector: 'ui-accordion',\n imports: [],\n templateUrl: './accordion.component.html',\n styleUrl: './accordion.component.scss',\n animations: [\n trigger('accordionBody', [\n transition(':enter', [\n style({\n height: 0,\n opacity: 0,\n paddingTop: 0,\n paddingBottom: 0\n }),\n animate('200ms ease', style({ height: '*', opacity: 1, paddingTop: '*', paddingBottom: '*' }))\n ]),\n transition(':leave', [\n style({ height: '*', opacity: 1, paddingTop: '*', paddingBottom: '*' }),\n animate('200ms ease', style({ height: 0, opacity: 0, paddingTop: 0, paddingBottom: 0 }))\n ])\n ])\n ]\n})\n\nexport class UicAccordionComponent {\n @Input() tabs:UiBtnTab[] = [];\n @Input() activeTab = '';\n @Output() activeTabChange = new EventEmitter<string>();\n\n changeTab(key:string) {\n this.activeTab = key;\n this.activeTabChange.emit(this.activeTab);\n }\n}\n","<div class=\"accordion-reel\">\r\n @for (item of tabs; track $index) {\r\n <div class=\"accordion-item\">\r\n <div class=\"accordion-header\" (click)=\"changeTab(item.key)\">\r\n <div class=\"accordion-header-title\"> \r\n @if (item.icon) {\r\n <i [class]=\"item.icon\"></i> \r\n }\r\n {{item.text}} \r\n </div>\r\n @if (item.subtitle) {\r\n <div class=\"accordion-header-subtitle\">{{item.subtitle}}</div>\r\n }\r\n </div>\r\n @if (activeTab == item.key) {\r\n <div class=\"accordion-body\" [@accordionBody]>\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';\r\nimport { UicOverlayCardComponent } from '../overlay-card/overlay-card.component';\r\nimport { UicInputComponent } from '../inputs/input/input.component';\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ButtonColor, UicButtonComponent } from '../button/button.component';\r\nimport { InputWrapperComponent } from '../inputs/input-wrapper/input-wrapper.component';\r\nimport { createValueAccessor } from '../dynamic-form/base-value-accessot';\r\n\r\ntype selectId = UicTagData[];\r\nconst base = createValueAccessor<selectId>();\r\n\r\n@Component({\r\n selector: 'ui-tag-selector',\r\n imports: [\r\n UicOverlayCardComponent,\r\n UicInputComponent,\r\n FormsModule,\r\n InputWrapperComponent,\r\n UicButtonComponent\r\n],\r\n templateUrl: './tag-selector.component.html',\r\n styleUrl: './tag-selector.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicTagSelectorComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicTagSelectorComponent extends base{\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n\r\n @Input() placeholder = 'Buscar...';\r\n @Input() buttonText = 'Agregar tag';\r\n @Input() predefinedTitle = 'Tags predefinidos';\r\n @Input() newTagTitle = 'Nuevo tag';\r\n \r\n @Input() predefinedLabels:UicTagData[] = [];\r\n\r\n \r\n selectedTags:UicTagData[] = [];\r\n\r\n filterText = '';\r\n newTagLabel = '';\r\n filterArray:UicTagData[] = [...this.predefinedLabels];\r\n\r\n\r\n filter(){\r\n this.filterArray = this.predefinedLabels.filter(f=>f.name.toLocaleLowerCase().includes(this.filterText.toLocaleLowerCase()));\r\n }\r\n select(tag:UicTagData){\r\n const idx = this.selectedTags.findIndex(f=>f.name == tag.name);\r\n if (idx!=-1){\r\n this.selectedTags.splice(idx,1);\r\n }else{\r\n this.selectedTags.push(tag);\r\n }\r\n this.notifyChange(this.selectedTags);\r\n }\r\n \r\n removeTag(tag:UicTagData){\r\n this.select(tag);\r\n }\r\n\r\n createTag(){\r\n const newTag = {\r\n id:0,\r\n color:'blue',\r\n name:this.newTagLabel\r\n };\r\n this.predefinedLabels.push(newTag);\r\n this.filterText = '';\r\n this.filter();\r\n this.select(newTag);\r\n this.newTagLabel = '';\r\n }\r\n\r\n isSelected(name: string): boolean {\r\n return this.selectedTags.some(t => t.name === name);\r\n }\r\n\r\n override writeValue(value: UicTagData[] | null | undefined): void {\n const safeValue = Array.isArray(value) ? value : [];\n super.writeValue(safeValue);\n this.selectedTags = [...safeValue];\n }\n\r\n}\r\n\r\nexport interface UicTagData{\r\n id:number;\r\n name:string;\r\n color:string;\r\n}\n","\r\n<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n<div class=\"tags-reel\">\r\n @for (item of selectedTags; track $index) {\r\n <div [class]=\"'selected-tag lc-'\" ><i class=\"ri-map-pin-3-fill\"></i>{{item.name}} <i (click)=\"removeTag(item)\" class=\"ri-close-line close-icon\"></i> </div>\r\n }\r\n <ui-overlay-card>\r\n <ui-button button type=\"bordered\" color=\"black\" icon=\"ri-add-line\" size=\"s\">{{buttonText}}</ui-button>\r\n <ng-container content >\r\n\r\n <ui-input internalIcon=\"ri-search-line\" internalIconColor=\"blue\">\r\n <input [placeholder]=\"placeholder\" [(ngModel)]=\"filterText\" (ngModelChange)=\"filter()\" >\r\n </ui-input>\r\n <div class=\"tags-overflow\">\r\n <div class=\"tags-title\">{{predefinedTitle}}</div>\r\n @for(item of filterArray; track $index){\r\n <div (click)=\"select(item)\" class=\"tag-option\"> \r\n <i class=\"ri-circle-fill f-grey\"></i> \r\n <div style=\"flex: 1 1;\">{{item.name}}</div> \r\n @if ( isSelected(item.name) ) {\r\n <i class=\"ri-check-line\"></i> \r\n }\r\n </div>\r\n }\r\n <div class=\"new-tag\"> \r\n <div class=\"new-tag-label\">{{newTagTitle}}:</div>\r\n <div class=\"input-tag\">\r\n <input [(ngModel)]=\"newTagLabel\" type=\"text\">\r\n <ui-button (click)=\"createTag()\" size=\"s\" [iconOnly]=\"true\" icon=\"ri-add-line\"></ui-button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ui-overlay-card>\r\n</div> \r\n</ui-input-wrapper>","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const simpleFade = trigger('simpleFade', [\r\n transition(':enter',[style({opacity:0}), animate('.3s ease', style({opacity:1}))]),\r\n transition(':leave', [animate('.3s ease', style({opacity:0}))])\r\n ]);","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'firstCapital'\r\n})\r\nexport class FirstCapitalPipe implements PipeTransform {\r\n\r\n transform(str: string, max = 0): string {\r\n \r\n if (str == null) {\r\n return '-';\r\n }\r\n if ( str.length < 4 ){\r\n return str;\r\n }\r\n if (max != 0 && str.length > max) {\r\n str = str.substring(0, max) + '...';\r\n }\r\n return str.replace(/\\b(\\p{L}+)(\\p{L}*)/gu, (match, firstChar, rest) => {\r\n const capitalizedFirstChar = firstChar.normalize('NFD').charAt(0).toUpperCase() + firstChar.slice(1).toLowerCase();\r\n const lowerRest = rest.toLowerCase();\r\n return capitalizedFirstChar + lowerRest;\r\n });\r\n }\r\n\r\n}\r\n","// COMPONENTS\r\nexport * from './lib/components/button/button.component';\r\nexport * from './lib/components/inputs/checkbox/checkbox.component';\r\nexport * from './lib/components/inputs/toggle-button/toggle-button.component';\r\nexport * from './lib/components/dynamic-form/form-wrapper/form-wrapper.component';\r\nexport * from './lib/components/dynamic-form/steps-form/steps-form.component';\r\nexport * from './lib/components/dynamic-form/steps-form/step-tabs/step-tabs.component';\r\nexport * from './lib/components/inputs/input/input.component';\r\nexport * from './lib/components/inputs/date-picker/date-picker.component';\r\nexport * from './lib/components/inputs/multy-searcher/multy-searcher.component';\r\nexport * from './lib/components/inputs/uic-searcher/uic-searcher.component';\r\nexport * from './lib/components/inputs/file-input/file-input.component';\r\nexport * from './lib/components/inputs/select/select.component';\r\nexport * from './lib/components/inputs/phone-input/phone-input.component';\r\nexport * from './lib/components/inputs/multy-select/multy-select.component';\r\nexport * from './lib/components/inputs/ui-radio/ui-radio.component';\r\nexport * from './lib/components/dropdown-container/dropdown-container.component';\r\nexport * from './lib/components/dropdown-container/dropdown-close.directive';\r\nexport * from './lib/components/inputs/time-picker/time-picker.component';\r\nexport * from './lib/components/table/table.component';\r\nexport * from './lib/components/short-table/short-table.component';\r\nexport * from './lib/components/table/table.models';\r\nexport * from './lib/components/skeleton-loader/skeleton-loader.component';\r\nexport * from './lib/components/push-alerts/alert-container/alert-container.component';\r\nexport * from './lib/components/inputs/ui-slider/ui-slider.component';\r\nexport * from './lib/components/uic-action-button/uic-action-button.component';\r\nexport * from './lib/components/signature-pad/signature-pad.component';\r\nexport * from './lib/components/dropdown-container/dropdown-container.component';\r\nexport * from './lib/components/kpi-card/kpi-card.component';\r\nexport * from './lib/components/uic-portlet-card/uic-portlet-card.component';\r\nexport * from './lib/components/tabs-button/tabs-button.component';\r\nexport * from './lib/components/work-panel/work-panel.component';\r\nexport * from './lib/components/overlay-card/overlay-card.component';\r\nexport * from './lib/components/accordion/accordion.component';\r\nexport * from './lib/components/pool-options/pool-options.component';\r\nexport * from './lib/components/tag-selector/tag-selector.component';\r\n\r\n// ANIMATIONS\r\nexport * from './lib/animations/animatios.index';\r\n\r\n// FORMULARIOS\r\nexport * from './lib/components/dynamic-form/form.models';\r\n\r\n// SERVICIOS\r\nexport * from './lib/services/modal.service';\r\nexport * from './lib/services/modaRef';\r\nexport * from './lib/services/modal.constant';\r\nexport * from './lib/services/tiny-alert.service';\r\nexport * from './lib/components/tiny-alert/tiny-alert.model';\r\nexport * from './lib/services/push-alert.service';\r\n\r\n// PIPES\r\nexport * from './lib/pipes/name-inits.pipe';\r\nexport * from './lib/pipes/first-capital.pipe';\r\n\r\n// DIRECTIVES\r\nexport * from './lib/directives/tool-tip.directive';\r\n\r\n// HELPERS\r\nexport * from './lib/helpers';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["base","nextId","i1","i1.UicModalService","i2","i1.UicPushAlertService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui-core-abv.mjs","sources":["../../../projects/ui-core/src/lib/components/button/button.component.ts","../../../projects/ui-core/src/lib/components/button/button.component.html","../../../projects/ui-core/src/lib/components/dynamic-form/base-value-accessot.ts","../../../projects/ui-core/src/lib/components/inputs/input-wrapper/input-wrapper.component.ts","../../../projects/ui-core/src/lib/components/inputs/input-wrapper/input-wrapper.component.html","../../../projects/ui-core/src/lib/components/inputs/checkbox/checkbox.component.ts","../../../projects/ui-core/src/lib/components/inputs/checkbox/checkbox.component.html","../../../projects/ui-core/src/lib/components/inputs/toggle-button/toggle-button.component.ts","../../../projects/ui-core/src/lib/components/inputs/toggle-button/toggle-button.component.html","../../../projects/ui-core/src/lib/components/inputs/select/select.component.ts","../../../projects/ui-core/src/lib/components/inputs/select/select.component.html","../../../projects/ui-core/src/lib/components/inputs/input/input.component.ts","../../../projects/ui-core/src/lib/components/inputs/input/input.component.html","../../../projects/ui-core/src/lib/components/inputs/ui-radio/ui-radio.component.ts","../../../projects/ui-core/src/lib/components/inputs/ui-radio/ui-radio.component.html","../../../projects/ui-core/src/lib/components/inputs/ui-slider/ui-slider.component.ts","../../../projects/ui-core/src/lib/components/inputs/ui-slider/ui-slider.component.html","../../../projects/ui-core/src/lib/components/inputs/date-picker/date-picker.component.ts","../../../projects/ui-core/src/lib/components/inputs/date-picker/date-picker.component.html","../../../projects/ui-core/src/lib/components/pool-options/pool-options.component.ts","../../../projects/ui-core/src/lib/components/pool-options/pool-options.component.html","../../../projects/ui-core/src/lib/components/inputs/uic-searcher/uic-searcher.component.ts","../../../projects/ui-core/src/lib/components/inputs/uic-searcher/uic-searcher.component.html","../../../projects/ui-core/src/lib/components/inputs/multy-select/multy-select.component.ts","../../../projects/ui-core/src/lib/components/inputs/multy-select/multy-select.component.html","../../../projects/ui-core/src/lib/components/inputs/time-picker/time-picker.component.ts","../../../projects/ui-core/src/lib/components/inputs/time-picker/time-picker.component.html","../../../projects/ui-core/src/lib/components/inputs/phone-input/phone-countries.data.ts","../../../projects/ui-core/src/lib/components/inputs/phone-input/phone-input.component.ts","../../../projects/ui-core/src/lib/components/inputs/phone-input/phone-input.component.html","../../../projects/ui-core/src/lib/components/inputs/file-input/file-input.component.ts","../../../projects/ui-core/src/lib/components/inputs/file-input/file-input.component.html","../../../projects/ui-core/src/lib/components/push-alerts/alert.helpers.ts","../../../projects/ui-core/src/lib/services/push-alert.service.ts","../../../projects/ui-core/src/lib/components/dynamic-form/form/dynamic-form.component.ts","../../../projects/ui-core/src/lib/components/dynamic-form/form/dynamic-form.component.html","../../../projects/ui-core/src/lib/components/skeleton-loader/skeleton-loader.component.ts","../../../projects/ui-core/src/lib/components/skeleton-loader/skeleton-loader.component.html","../../../projects/ui-core/src/lib/components/dynamic-form/form-wrapper/form-wrapper.component.ts","../../../projects/ui-core/src/lib/components/dynamic-form/form-wrapper/form-wrapper.component.html","../../../projects/ui-core/src/lib/components/dynamic-form/steps-form/step-tabs/step-tabs.component.ts","../../../projects/ui-core/src/lib/components/dynamic-form/steps-form/step-tabs/step-tabs.component.html","../../../projects/ui-core/src/lib/components/dynamic-form/steps-form/steps-form.component.ts","../../../projects/ui-core/src/lib/components/dynamic-form/steps-form/steps-form.component.html","../../../projects/ui-core/src/lib/components/inputs/multy-searcher/multy-searcher.component.ts","../../../projects/ui-core/src/lib/components/inputs/multy-searcher/multy-searcher.component.html","../../../projects/ui-core/src/lib/components/dropdown-container/dropdown-container.component.ts","../../../projects/ui-core/src/lib/components/dropdown-container/dropdown-container.component.html","../../../projects/ui-core/src/lib/components/dropdown-container/dropdown-close.directive.ts","../../../projects/ui-core/src/lib/animations/fadeAndRise.animation.ts","../../../projects/ui-core/src/lib/components/tooltip/tooltip.component.ts","../../../projects/ui-core/src/lib/components/tooltip/tooltip.component.html","../../../projects/ui-core/src/lib/directives/tool-tip.directive.ts","../../../projects/ui-core/src/lib/components/table/table-searcher/table-searcher.component.ts","../../../projects/ui-core/src/lib/components/table/table-searcher/table-searcher.component.html","../../../projects/ui-core/src/lib/components/table/table-pagination/table-pagination.component.ts","../../../projects/ui-core/src/lib/components/table/table-pagination/table-pagination.component.html","../../../projects/ui-core/src/lib/animations/highlightRow.animation.ts","../../../projects/ui-core/src/lib/animations/animatedRow.animation.ts","../../../projects/ui-core/src/lib/components/uic-action-button/uic-action-button.component.ts","../../../projects/ui-core/src/lib/components/uic-action-button/uic-action-button.component.html","../../../projects/ui-core/src/lib/components/table/table-list/table-list.component.ts","../../../projects/ui-core/src/lib/components/table/table-list/table-list.component.html","../../../projects/ui-core/src/lib/pipes/name-inits.pipe.ts","../../../projects/ui-core/src/lib/components/table/table-user/table-user.component.ts","../../../projects/ui-core/src/lib/components/table/table-user/table-user.component.html","../../../projects/ui-core/src/lib/components/status-label/status-label.component.ts","../../../projects/ui-core/src/lib/components/status-label/status-label.component.html","../../../projects/ui-core/src/lib/services/modal.constant.ts","../../../projects/ui-core/src/lib/services/modaRef.ts","../../../projects/ui-core/src/lib/components/tiny-alert/tiny-alert.component.ts","../../../projects/ui-core/src/lib/components/tiny-alert/tiny-alert.component.html","../../../projects/ui-core/src/lib/animations/pushTop.animation.ts","../../../projects/ui-core/src/lib/components/modal/floating-modal/modal.component.ts","../../../projects/ui-core/src/lib/components/modal/floating-modal/modal.component.html","../../../projects/ui-core/src/lib/animations/sideModal.animation.ts","../../../projects/ui-core/src/lib/components/modal/side-modal/side-modal.component.ts","../../../projects/ui-core/src/lib/components/modal/side-modal/side-modal.component.html","../../../projects/ui-core/src/lib/services/modal.service.ts","../../../projects/ui-core/src/lib/components/push-alerts/tynyalert.helpers.ts","../../../projects/ui-core/src/lib/services/tiny-alert.service.ts","../../../projects/ui-core/src/lib/components/item-value/item-value.component.ts","../../../projects/ui-core/src/lib/components/item-value/item-value.component.html","../../../projects/ui-core/src/lib/components/uic-portlet-card/uic-portlet-card.component.ts","../../../projects/ui-core/src/lib/components/uic-portlet-card/uic-portlet-card.component.html","../../../projects/ui-core/src/lib/components/short-table/short-table.component.ts","../../../projects/ui-core/src/lib/components/short-table/short-table.component.html","../../../projects/ui-core/src/lib/helpers.ts","../../../projects/ui-core/src/lib/components/table/table.component.ts","../../../projects/ui-core/src/lib/components/table/table.component.html","../../../projects/ui-core/src/lib/components/table/table.models.ts","../../../projects/ui-core/src/lib/components/push-alerts/alert/alert.component.ts","../../../projects/ui-core/src/lib/components/push-alerts/alert/alert.component.html","../../../projects/ui-core/src/lib/components/push-alerts/alert-container/alert-container.component.ts","../../../projects/ui-core/src/lib/components/push-alerts/alert-container/alert-container.component.html","../../../projects/ui-core/src/lib/components/signature-pad/signature-pad.component.ts","../../../projects/ui-core/src/lib/components/signature-pad/signature-pad.component.html","../../../projects/ui-core/src/lib/components/kpi-card/kpi-card.component.ts","../../../projects/ui-core/src/lib/components/kpi-card/kpi-card.component.html","../../../projects/ui-core/src/lib/components/tabs-button/tabs-button.component.ts","../../../projects/ui-core/src/lib/components/tabs-button/tabs-button.component.html","../../../projects/ui-core/src/lib/components/work-panel/work-panel.component.ts","../../../projects/ui-core/src/lib/components/work-panel/work-panel.component.html","../../../projects/ui-core/src/lib/components/overlay-card/overlay-card.component.ts","../../../projects/ui-core/src/lib/components/overlay-card/overlay-card.component.html","../../../projects/ui-core/src/lib/components/accordion/accordion.component.ts","../../../projects/ui-core/src/lib/components/accordion/accordion.component.html","../../../projects/ui-core/src/lib/components/tag-selector/tag-selector.component.ts","../../../projects/ui-core/src/lib/components/tag-selector/tag-selector.component.html","../../../projects/ui-core/src/lib/animations/simpleFade.animation.ts","../../../projects/ui-core/src/lib/pipes/first-capital.pipe.ts","../../../projects/ui-core/src/public-api.ts","../../../projects/ui-core/src/ui-core-abv.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, Input, SimpleChange, SimpleChanges } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-button',\r\n imports: [CommonModule],\r\n templateUrl: './button.component.html',\r\n styleUrl: './button.component.scss'\r\n})\r\nexport class UicButtonComponent {\r\n @Input() text='';\r\n @Input() icon='';\r\n @Input() rightIcon='';\r\n @Input() iconOnly=false;\r\n @Input() disabled=false;\r\n @Input() loading=false; \r\n @Input() size: ButtonSize = 'm';\r\n @Input() type: ButtonType = 'filled'; \r\n @Input() color:ButtonColor = 'primary';\r\n \r\n buttonTypeClass = \"\";\r\n \r\n ngOnInit(){\r\n this.buttonTypeClass = 'btn-' + this.type + ' btn-' + this.color + \"-\" + this.type;\r\n }\r\n\r\n ngOnChange(sc:SimpleChanges){\r\n if ( sc['type'] ){\r\n this.buttonTypeClass = 'btn-' + this.type + ' btn-' + this.color + \"-\" + this.type;\r\n }\r\n }\r\n}\r\nexport type ButtonColor = 'primary'|'secondary'|'red'|'green'|'blue'|'yellow' | 'black' | 'grey' | 'white';\r\nexport type ButtonSize = 't' | 's'|'m'|'l'| 'g';\r\nexport type ButtonType = 'filled' | 'bordered' | 'ghost';","<button\r\n type=\"button\"\r\n [class]=\"'main-btn ' + buttonTypeClass\"\r\n [disabled]=\"disabled\"\r\n [ngClass]=\"{\r\n 'btn-tiny' :size=='t',\r\n 'btn-small' :size=='s', \r\n 'btn-medium' :size=='m',\r\n 'btn-large' :size=='l', \r\n 'btn-gigant' :size=='g'\r\n }\" >\r\n \r\n @if (icon!='' && !loading ) {\r\n <i class=\"{{icon}}\"></i>\r\n }\r\n @if (loading) {\r\n <div class=\"loader-container\"> <div class=\"loader\"></div> </div>\r\n }\r\n @if (!iconOnly) {\r\n <div class=\"btn-text\" [class.norighticon]=\"rightIcon==''\" [class.noicon]=\"icon==''\">\r\n {{text}}\r\n <ng-content ></ng-content>\r\n </div>\r\n }\r\n @if (rightIcon!='' ) {\r\n <i class=\"{{rightIcon}}\"></i>\r\n }\r\n</button>","import { ControlValueAccessor } from '@angular/forms';\r\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nexport function createValueAccessor<T>() {\r\n @Directive()\r\n abstract class BaseValueAccessor implements ControlValueAccessor {\r\n @Input() value!: T;\r\n @Output() valueChange = new EventEmitter<T>();\r\n\r\n onChange: (value: T) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n writeValue(obj: T): void {\r\n this.value = obj;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n (this as any).disabled = isDisabled;\r\n }\r\n\r\n notifyChange(value: T) {\r\n this.value = value;\r\n this.valueChange.emit(value);\r\n this.onChange(value);\r\n this.onTouched();\r\n }\r\n }\r\n\r\n return BaseValueAccessor;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { ButtonColor } from '../../button/button.component';\r\n\r\n@Component({\r\n selector: 'ui-input-wrapper',\r\n imports: [CommonModule],\r\n templateUrl: './input-wrapper.component.html',\r\n styleUrl: '../input.component.scss'\r\n})\r\nexport class InputWrapperComponent {\r\n @Input() icon = ''; \r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n @Input() disabled = false;\r\n}\r\n","<div class=\"input-wrapper\">\r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{iconColor}} {{icon}}\"></i>\r\n }\r\n <div class=\"input-elements\" [style]=\"icon?'max-width: calc(100% - 34px);':''\">\r\n \r\n @if (label) {\r\n <div class=\"label inputlabel\" [class.font-error]=\"error\">\r\n {{label}} \r\n </div>\r\n }\r\n <ng-content></ng-content>\r\n @if (error) {\r\n <div class=\"fakeinput-alert f-red\">{{error}}</div>\r\n }\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n </div>\r\n</div>\r\n","import { Component, forwardRef, Input } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { ButtonColor } from '../../button/button.component';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\nconst base = createValueAccessor<boolean>();\r\n\r\n@Component({\r\n selector: 'ui-checkbox',\r\n imports: [InputWrapperComponent],\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss','../input.component.scss'],\r\n providers:[\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicCheckboxComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicCheckboxComponent extends base{\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() label = '';\r\n @Input() tip = '';\r\n @Input() type: 'checkbox'|'switch' = 'checkbox';\r\n @Input() placeholder = '';\r\n @Input() loading = false;\r\n @Input() noPadding = false;\r\n \r\n @Input() disabled = false;\r\n\r\n toggle() {\r\n if (!this.disabled && !this.loading){\r\n this.notifyChange(!this.value);\r\n }\r\n }\r\n \r\n}\r\n","\r\n<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\"\r\n>\r\n <div [class.check-form-container]=\"!noPadding\">\r\n <div (click)=\"toggle()\" class=\"check-wrapper\">\r\n @if (type=='checkbox') {\r\n <button\r\n type=\"button\"\r\n class=\"checkbox\"\r\n [disabled]=\"disabled\"\r\n [class.checked]=\"value\"\r\n [class.placeholder-space]=\"placeholder!=''\"\r\n [disabled]=\"disabled\"\r\n (keydown.enter)=\"toggle()\"\r\n (keydown.space)=\"toggle()\"\r\n >\r\n <span class=\"icon\">\r\n @if (value) {\r\n ✔\r\n }@else {\r\n −\r\n }\r\n </span>\r\n </button>\r\n }@else{\r\n <button\r\n type=\"button\"\r\n class=\"toggle\"\r\n [class.checked]=\"value\"\r\n [disabled]=\"disabled\"\r\n >\r\n <span class=\"thumb\"></span>\r\n </button>\r\n }\r\n @if (placeholder) {\r\n <span class=\"check-placeholder\">{{placeholder}}</span>\r\n }\r\n \r\n <ng-content></ng-content> \r\n </div>\r\n </div>\r\n</ui-input-wrapper>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-switch',\r\n imports: [],\r\n templateUrl: './toggle-button.component.html',\r\n styleUrls: ['./toggle-button.component.scss','../input.component.scss']\r\n})\r\nexport class UicSwichComponent {\r\n @Input() checked = false;\r\n @Output() checkedChange = new EventEmitter<boolean>();\r\n @Input() disabled = false;\r\n @Input() placeholder = '';\r\n @Input() label = '';\r\n\r\n \r\n\r\n toggle() {\r\n if (this.disabled) return;\r\n this.checked = !this.checked;\r\n this.checkedChange.emit(this.checked);\r\n }\r\n}\r\n","<button\r\n type=\"button\"\r\n class=\"toggle\"\r\n [class.checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n (click)=\"toggle()\"\r\n>\r\n <span class=\"thumb\"></span>\r\n</button>","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, forwardRef, inject, Input, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { ButtonColor } from '../../button/button.component';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\ntype selectId = number|string|null;\r\nconst base = createValueAccessor<selectId>();\r\n\r\n@Component({\r\n selector: 'ui-select',\r\n imports: [InputWrapperComponent, CommonModule],\r\n templateUrl: './select.component.html',\r\n styleUrl: '../input.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicSelectComponent extends base{\r\n \r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() internalIconColor: ButtonColor = 'black'; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXT\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n @Input() showSubtitle = false;\r\n @Input() disabled = false;\r\n @Input() nonSelectedText = '- Seleccionar -';\r\n @Input() noneText = '- Ninguno -';\r\n @Input() emptyText = 'No hay elementos para mostrar';\r\n // FUNCTIONS\r\n @Input() loading = false;\r\n @Input() nullable = false;\r\n @Input() options:AppSelectOption[] = []; \r\n \r\n @ViewChild('dropdownTemplate') dropdownTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n overlayPositions: ConnectedPosition[] =[\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]\r\n \r\n selectedOption: AppSelectOption | null = null;\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['options'] && this.value != null) {\r\n // Resetear valor seleccionado\r\n this.selectedOption = this.options.find(opt => opt.id === this.value) ?? null;\r\n }\r\n }\r\n\r\n // --- Overlay ---\r\n openList(){\r\n if (this.disabled || this.loading) return;\r\n\r\n if (this.overlayRef) {\r\n this.closeList();\r\n }\r\n\r\n const input = this.host.nativeElement.querySelector('.fakeinput');\r\n const width = input.offsetWidth;\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(input)\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(true)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n width,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeList());\r\n }\r\n\r\n selectOption(option:AppSelectOption | null){\r\n this.closeList();\r\n this.selectedOption = option;\r\n this.notifyChange(option?.id??null);\r\n }\r\n \r\n closeList() {\r\n if (this.overlayRef) {\r\n this.onTouched();\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n\r\n override writeValue(value: string | number | null): void {\r\n super.writeValue(value); \r\n this.selectedOption = this.options.find(opt => opt.id === value) ?? null;\r\n }\r\n}\r\n\r\n\r\nexport interface AppSelectOption{\r\n id? : string | number | null;\r\n text : string;\r\n detail? : string;\r\n} ","\r\n<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n <div class=\"fakeinput-wrapp\" > \r\n <!-- INPUT -->\r\n <div (click)=\"openList()\" class=\"fakeinput\" #fakeinput \r\n [ngClass]=\"{'errorinput':error, 'disabledinput':disabled, 'loading-input':loading}\" style=\"cursor: pointer;\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon {{internalIcon}}\" ></i>\r\n }\r\n <div class=\"fakeinput-emptytext\" [class.disabled-placeholder]=\"disabled && !selectedOption?.text\" >{{(selectedOption?.text || nonSelectedText)}}</div>\r\n @if (!disabled && !loading) {\r\n <i class=\"ri-arrow-down-s-line\"></i>\r\n }\r\n </div> \r\n <!-- DESPLEGABLE -->\r\n <ng-template #dropdownTemplate >\r\n <div class=\"input-options\">\r\n <!-- OPCIONES -->\r\n <div class=\"input-option-scroll\">\r\n @if (options.length > 0 && nullable) {\r\n <div (click)=\"selectOption(null)\" class=\"input-option \" style=\"padding: 3px;\" >{{noneText}}</div>\r\n <div class=\"option-divider\"></div>\r\n }\r\n \r\n \r\n @for (option of options; track $index) {\r\n <div (click)=\"selectOption(option)\" class=\"input-option\">\r\n <div style=\"padding: 2px;\" >\r\n <div class=\"f-medium\" >{{option.text }}</div>\r\n <div *ngIf=\"showSubtitle\" class=\"f-extralight\" >\r\n {{option.detail}}\r\n </div>\r\n </div>\r\n </div>\r\n @if ( $index < (options.length - 1) ) {\r\n <span class=\"option-divider\"></span>\r\n }\r\n \r\n }\r\n \r\n @if (options.length == 0) {\r\n <div class=\"fakeinput-alert t-disabled\">{{emptyText}}</div>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n \r\n </div>\r\n</ui-input-wrapper>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonColor } from '../../button/button.component';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\n@Component({\r\n selector: 'ui-input',\r\n imports: [ CommonModule, InputWrapperComponent],\r\n templateUrl: './input.component.html',\r\n styleUrl: '../input.component.scss'\r\n})\r\nexport class UicInputComponent {\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() internalIconColor: ButtonColor = 'black'; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n // FUNCTIONS\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n @Output() clickButton = new EventEmitter<boolean>();\r\n\r\n\r\n disableBtn = false;\r\n disableButton(){\r\n this.clickButton.emit();\r\n this.disableBtn = true;\r\n setTimeout(() => {\r\n this.disableBtn = false;\r\n }, 200);\r\n }\r\n\r\n \r\n}\r\n","\r\n<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\"> \r\n <div class=\"fakeinput\" [ngClass]=\"{'errorinput':error, 'disabledinput':disabled}\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon {{internalIcon}} f-{{internalIconColor}}\" ></i>\r\n }\r\n <div class=\"input-container\" >\r\n <ng-content class=\"myinput\"></ng-content>\r\n </div> \r\n </div>\r\n <span class=\"char-counter\" style=\"padding-top: 1px;\" >\r\n <ng-content select=\"[counter]\"></ng-content>\r\n </span>\r\n</ui-input-wrapper>","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, forwardRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { AppSelectOption } from '../select/select.component';\r\nimport { ButtonColor } from '../../button/button.component';\r\n\r\ntype RadioValue = string | number | null;\r\nconst base = createValueAccessor<RadioValue>();\r\n\r\n@Component({\r\n selector: 'ui-radio',\r\n imports: [CommonModule, InputWrapperComponent],\r\n templateUrl: './ui-radio.component.html',\r\n styleUrls: ['./ui-radio.component.scss', '../input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicRadioComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class UicRadioComponent extends base {\r\n @Input() icon = '';\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n @Input() options: AppSelectOption[] = [];\r\n @Input() emptyText = 'Sin opciones disponibles';\r\n @Input() direction: 'column' | 'row' = 'column';\r\n\r\n \r\n isSelected(option: AppSelectOption): boolean {\r\n return this.getOptionValue(option) === this.value;\r\n }\r\n\r\n selectOption(option: AppSelectOption) {\r\n if (this.disabled || this.loading) return;\r\n const nextValue = this.getOptionValue(option);\r\n if (nextValue === this.value) return;\r\n this.notifyChange(nextValue);\r\n }\r\n\r\n private getOptionValue(option: AppSelectOption): RadioValue {\r\n if (option.id === undefined || option.id === null) {\r\n return option.text ?? null;\r\n }\r\n return option.id;\r\n }\r\n}\r\n","<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [tip]=\"tip\"\r\n [error]=\"error\"\r\n [disabled]=\"disabled\"\r\n>\r\n <div\r\n class=\"radio-group\"\r\n role=\"radiogroup\"\r\n [class.loading-input]=\"loading\"\r\n [class.disabled]=\"disabled || loading\"\r\n [class.direction-row]=\"direction === 'row'\"\r\n [attr.aria-disabled]=\"disabled || loading ? true : null\"\r\n >\r\n @if (options.length) {\r\n @for (option of options; track option.id) {\r\n <button\r\n type=\"button\"\r\n class=\"radio-option\"\r\n [disabled]=\"disabled || loading\"\r\n [class.selected]=\"isSelected(option)\"\r\n [attr.aria-checked]=\"isSelected(option)\"\r\n (click)=\"selectOption(option)\"\r\n (keydown.enter)=\"selectOption(option)\"\r\n (keydown.space)=\"selectOption(option)\"\r\n >\r\n <span class=\"radio-control\" aria-hidden=\"true\">\r\n <span class=\"radio-dot\"></span>\r\n </span>\r\n <span class=\"radio-texts\">\r\n <span class=\"radio-label\">{{ option.text }}</span>\r\n @if (option.detail) {\r\n <span class=\"radio-detail\">{{ option.detail }}</span>\r\n }\r\n </span>\r\n </button>\r\n }\r\n } @else {\r\n <div class=\"radio-empty\">{{ emptyText }}</div>\r\n }\r\n </div>\r\n</ui-input-wrapper>\r\n","import { Component, forwardRef, HostListener, Input } from '@angular/core';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ButtonColor } from '../../button/button.component';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\nconst base = createValueAccessor<number>();\r\n\r\n@Component({\r\n selector: 'ui-slider',\r\n imports: [ InputWrapperComponent ],\r\n templateUrl: './ui-slider.component.html',\r\n styleUrls: ['./ui-slider.component.scss', '../input.component.scss'],\r\n providers:[\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicSliderComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicSliderComponent extends base {\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n\r\n @Input() min = 0;\r\n @Input() max = 100;\r\n @Input() step = 1;\r\n @Input() markerCount = 0;\r\n markers: number[] = [];\r\n \r\n @Input() disabled = false;\r\n \r\n @Input() loading = false;\r\n\r\n\r\n ngOnInit(){\r\n if (this.markerCount > 1) {\r\n const interval = (this.max - this.min) / (this.markerCount - 1);\r\n this.markers = Array.from({ length: this.markerCount }, (_, i) => this.min + i * interval);\r\n }\r\n }\r\n\r\n get percent() {\r\n return ((this.value - this.min) / (this.max - this.min)) * 100;\r\n }\r\n\r\n updateFromClientX(clientX: number, el: HTMLElement) {\r\n if (this.disabled) return;\r\n if (!el ) return;\r\n \r\n const rect = el.getBoundingClientRect();\r\n const relativeX = Math.min(Math.max(clientX - rect.left, 0), rect.width);\r\n const rawValue = this.min + (relativeX / rect.width) * (this.max - this.min);\r\n\r\n // Ajustar al step\r\n const stepped = Math.round(rawValue / this.step) * this.step;\r\n\r\n this.value = (Math.min(this.max, Math.max(this.min, stepped)));\r\n this.notifyChange(this.value);\r\n }\r\n \r\n dragging = false;\r\n private activeTrack?: HTMLElement;\r\n\r\n onMouseDown(event: MouseEvent, track: HTMLElement) {\r\n event.preventDefault();\r\n this.dragging = true;\r\n this.activeTrack = track;\r\n this.updateFromClientX(event.clientX, track);\r\n }\r\n \r\n @HostListener('document:mousemove', ['$event'])\r\n onMouseMove(event: MouseEvent) {\r\n if (this.disabled || !(this.dragging && this.activeTrack)) return;\r\n this.updateFromClientX(event.clientX, this.activeTrack);\r\n }\r\n\r\n @HostListener('document:mouseup')\r\n onMouseUp() {\r\n this.dragging = false;\r\n this.activeTrack = undefined;\r\n }\r\n}\r\n","<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n <div class=\"slider-wrapper\">\r\n <div class=\"slider\" #track\r\n (click)=\"updateFromClientX($event.clientX, track)\">\r\n <!-- barra -->\r\n <div class=\"slider-track\"></div>\r\n <div class=\"slider-filled\" [style.width.%]=\"percent\" [class.disabled-bar]=\"disabled\"></div>\r\n \r\n <!-- thumb -->\r\n <div class=\"slider-thumb\"\r\n [style.left.%]=\"percent\"\r\n [class.disabled-thumb]=\"disabled\"\r\n (mousedown)=\"onMouseDown($event, track)\"\r\n #thumb>\r\n <div class=\"slider-thumb-legend\" [class.disabled-legend]=\"disabled\">{{value}}</div>\r\n </div>\r\n \r\n <!-- markers -->\r\n <div class=\"slider-markers\">\r\n @for(m of markers; track $index){\r\n <div class=\"marker\" \r\n [style.left.%]=\"((m - min) / (max - min)) * 100\">\r\n {{ m }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</ui-input-wrapper>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, forwardRef, inject, Input, OnChanges, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport {\r\n Overlay,\r\n OverlayRef,\r\n FlexibleConnectedPositionStrategy,\r\n ConnectedPosition,\r\n} from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { ButtonColor, UicButtonComponent } from '../../button/button.component';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\ntype CalendarView = 'days' | 'months' | 'years';\r\nconst base = createValueAccessor<string>();\r\n\r\n@Component({\r\n selector: 'ui-date-picker',\r\n imports: [CommonModule, UicButtonComponent, InputWrapperComponent],\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss','../input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicDatePickerComponent),\r\n multi: true\r\n }\r\n ],\r\n})\r\nexport class UicDatePickerComponent extends base implements OnChanges {\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() internalIconColor: ButtonColor = 'black'; //Icono interno\r\n @Input() disabled = false;\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n // FUNCTIONS\r\n @Input() max = '';\r\n @Input() min = '';\r\n @Input() justMonth = false;\r\n @Input() monthDay: 'last' | 'first' = 'first';\r\n\r\n @ViewChild('calendarTemplate') calendarTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n\r\n // Fijos\r\n months:string[] = Array.from({ length: 12 }, (_, i) => new Date(2000, i, 1).toLocaleString('default', { month: 'short' }));\r\n today: Date = new Date();\r\n currentYear = +this.today.getFullYear();\r\n maxDate:Date|null= null;\r\n minDate:Date|null=null;\r\n\r\n // Dinámicos\r\n view: CalendarView = 'days';\r\n paintedDate:Date|null = null;\r\n selectedDate = new Date();\r\n selectedYear = this.currentYear;\r\n selectedMonth = null;\r\n monthWeeks:(Date|null)[][] = []; // Arreglo de fechas\r\n decadeRange:number[]=[];\r\n displayValue = '';\r\n\r\n get inputPlaceholder(): string {\r\n return this.justMonth ? 'mm/yyyy' : 'dd/mm/yyyy';\r\n }\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n ngOnInit(){\n this.monthWeeks = this.getWeeks();\n this.minDate = this.parseDateLimits(this.min);\n this.maxDate = this.parseDateLimits(this.max);\n this.applyValue(this.value);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['min'] || changes['max']) {\n this.minDate = this.parseDateLimits(this.min);\n this.maxDate = this.parseDateLimits(this.max);\n\n if (this.paintedDate && !this.isWithinLimits(this.paintedDate)) {\n this.clearValue(true);\n } else if (this.value) {\n this.applyValue(this.value);\n }\n }\n }\n\r\n // --- Overlay ---\r\n overlayPositions: ConnectedPosition[] =[\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]\r\n\r\n openCalendar() {\r\n if ( this.disabled ) return;\r\n\r\n if (this.overlayRef) {\r\n this.closeCalendar();\r\n }\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(this.host.nativeElement.querySelector('.fakeinput'))\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.calendarTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeCalendar());\r\n\r\n this.view = this.justMonth ? 'months' : 'days';\r\n if (this.justMonth) {\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n }\r\n\r\n closeCalendar() {\r\n if (this.overlayRef) {\r\n this.onTouched();\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n\r\n get monthName(): string {\r\n return this.selectedDate.toLocaleString('default', { month: 'long' });\r\n }\r\n \r\n getDecadeRange(): number[] {\r\n const start = Math.floor(this.selectedYear / 20) * 20;\r\n return Array.from({ length: 20 }, (_, i) => start + i);\r\n }\r\n\r\n getWeeks(): (Date | null)[][] {\r\n const weeks: (Date | null)[][] = [];\r\n const firstDay = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n const lastDay = new Date(this.selectedYear, this.selectedDate.getMonth() + 1, 0);\r\n\r\n let current = new Date(firstDay);\r\n current.setDate(current.getDate() - current.getDay());\r\n\r\n while (current <= lastDay || current.getDay() !== 0) {\r\n const week: (Date | null)[] = [];\r\n for (let i = 0; i < 7; i++) {\r\n week.push(\r\n current.getMonth() === this.selectedDate.getMonth()\r\n ? new Date(current)\r\n : null\r\n );\r\n current.setDate(current.getDate() + 1);\r\n }\r\n weeks.push(week);\r\n }\r\n return weeks;\r\n }\r\n\r\n // --- Navegación ---\r\n prev() {\r\n if (this.view === 'days') {\r\n const isJan = this.selectedDate.getMonth() == 0;\r\n const offsetMonth = isJan? -11 : 1;\r\n if ( isJan){\r\n this.selectedYear--;\r\n }\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth() - offsetMonth, 1);\r\n this.monthWeeks = this.getWeeks();\r\n } else if (this.view === 'months') {\r\n this.selectedYear--;\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n } else {\r\n this.selectedYear-=20\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n }\r\n\r\n next() {\r\n if (this.view === 'days') {\r\n const isDec = this.selectedDate.getMonth() == 11;\r\n const offsetMonth = isDec? -11 : 1;\r\n if ( isDec){\r\n this.selectedYear++;\r\n }\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth() + offsetMonth, 1);\r\n this.monthWeeks = this.getWeeks();\r\n } else if (this.view === 'months') {\r\n this.selectedYear++;\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n } else {\r\n this.selectedYear+=20;\r\n this.selectedDate = new Date(this.selectedYear, this.selectedDate.getMonth(), 1);\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n }\r\n\r\n // --- Cambio de vistas ---\r\n changeView() {\r\n if (this.view === 'days') {\r\n if (!this.justMonth) {\r\n this.view = 'months';\r\n }\r\n } else if (this.view === 'months') {\r\n this.view = 'years';\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n }\r\n selectYear(year: number) {\r\n this.selectedYear = year;\r\n this.selectedDate = new Date(year, this.selectedDate.getMonth(), 1);\r\n this.view = 'months';\r\n }\r\n selectMonth(monthIndex: number) {\r\n if (this.justMonth) {\r\n const monthDate = this.buildMonthDate(this.selectedYear, monthIndex);\r\n if (!this.isWithinLimits(monthDate)) {\r\n return;\r\n }\r\n this.selectedDate = new Date(this.selectedYear, monthIndex, 1);\r\n this.value = this.toIsoString(monthDate);\r\n this.displayValue = this.formatDisplay(monthDate);\r\n this.paintedDate = monthDate;\r\n this.setCurrentViewDate(monthDate);\r\n this.notifyChange(this.value);\r\n this.closeCalendar();\r\n return;\r\n }\r\n this.selectedDate = new Date(this.selectedYear, monthIndex, 1);\r\n this.monthWeeks = this.getWeeks();\r\n this.view = 'days';\r\n }\r\n\r\n selectDate(date: Date) {\r\n if (this.justMonth) {\r\n return;\r\n }\r\n const normalized = this.normalizeDate(date);\r\n this.value = this.toIsoString(normalized);\r\n this.displayValue = this.formatDisplay(normalized);\r\n this.notifyChange(this.value);\r\n this.paintedDate = normalized;\r\n this.setCurrentViewDate(normalized);\r\n this.closeCalendar();\r\n }\r\n\r\n isToday(day:Date|null){\r\n if ( day ){\r\n const dayStr = day?.toISOString().split(\"T\")[0];\r\n const today =(new Date()).toISOString().split(\"T\")[0];\r\n return dayStr == today;\r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n isPainted(day:Date|null){\r\n if ( day && this.paintedDate){\r\n const dayStr = day?.toISOString().split(\"T\")[0];\r\n const today = this.paintedDate.toISOString().split(\"T\")[0];\r\n return dayStr == today;\r\n }else{\r\n return false;\r\n }\r\n }\r\n\r\n isThisMonth(m:string){\r\n const monthId = this.months.findIndex(f=>f===m) + 1;\r\n const dayStr = this.selectedYear + \"-\" + monthId;\r\n const thisMonth =(new Date()).toISOString().split(\"T\")[0].substring(0,7).replace(\"-0\",\"-\");\r\n return dayStr == thisMonth;\r\n }\r\n\r\n // MÍNIMO Y MÁXIMO\r\n parseDateLimits(date: string | Date | null | undefined) {\n if (!date) {\n return null;\n }\n\n if (date instanceof Date) {\n return isNaN(date.getTime()) ? null : this.normalizeDate(date);\n }\n\n const trimmed = date.trim();\n if (!trimmed) {\n return null;\n }\n\n const isoMatch = trimmed.match(/^(\\d{4})-(\\d{1,2})-(\\d{1,2})(?:$|[T\\s])/);\n if (isoMatch) {\n const [, year, month, day] = isoMatch;\n const parsed = new Date(+year, +month - 1, +day);\n return isNaN(parsed.getTime()) ? null : this.normalizeDate(parsed);\n }\n\n const isoMonthMatch = trimmed.match(/^(\\d{4})-(\\d{1,2})(?:$|[T\\s])/);\n if (isoMonthMatch) {\n const [, year, month] = isoMonthMatch;\n const baseDay =\n this.monthDay === 'last'\n ? new Date(+year, +month, 0).getDate()\n : 1;\n const parsed = new Date(+year, +month - 1, baseDay);\n return isNaN(parsed.getTime()) ? null : this.normalizeDate(parsed);\n }\n\n const parsed = new Date(trimmed);\n return isNaN(parsed.getTime()) ? null : this.normalizeDate(parsed);\n }\n\r\n cleanInput(){\r\n this.clearValue(true);\r\n this.closeCalendar();\r\n }\r\n pickToday(){\r\n const today = this.normalizeDate(new Date());\r\n const target = this.justMonth ? this.buildMonthDate(today.getFullYear(), today.getMonth()) : today;\r\n this.value = this.toIsoString(target);\r\n this.displayValue = this.formatDisplay(target);\r\n this.notifyChange(this.value);\r\n this.paintedDate = target;\r\n this.setCurrentViewDate(target);\r\n this.closeCalendar();\r\n }\r\n\r\n onInputChange(event: Event) {\r\n this.displayValue = (event.target as HTMLInputElement).value;\r\n }\r\n\r\n onInputBlur() {\r\n this.onTouched();\r\n const trimmed = this.displayValue.trim();\r\n if (!trimmed) {\r\n this.clearValue(true);\r\n return;\r\n }\r\n\r\n const parsed = this.parseDisplay(trimmed);\r\n if (!parsed || !this.isWithinLimits(parsed)) {\r\n this.clearValue(true);\r\n return;\r\n }\r\n\r\n const normalized = this.normalizeDate(parsed);\r\n this.displayValue = this.formatDisplay(normalized);\r\n this.value = this.toIsoString(normalized);\r\n this.paintedDate = normalized;\r\n this.setCurrentViewDate(normalized);\r\n this.notifyChange(this.value);\r\n }\r\n\r\n onInputKeydown(event: KeyboardEvent) {\r\n if (event.key === 'Enter') {\r\n (event.target as HTMLInputElement).blur();\r\n }\r\n }\r\n\r\n override writeValue(value: string | null): void {\r\n super.writeValue(value as any);\r\n this.applyValue(value);\r\n }\r\n\r\n private applyValue(value: string | null | undefined) {\r\n const parsed = this.parseDateLimits(value ?? '');\r\n if (parsed) {\r\n const effective = this.justMonth\r\n ? this.buildMonthDate(parsed.getFullYear(), parsed.getMonth())\r\n : parsed;\r\n if (this.justMonth && value) {\r\n this.value = this.toIsoString(effective);\r\n }\r\n this.displayValue = this.formatDisplay(effective);\r\n this.paintedDate = effective;\r\n this.setCurrentViewDate(effective);\r\n } else {\r\n this.clearValue(false, false);\r\n }\r\n }\r\n\r\n private clearValue(emit = false, resetValue = true) {\r\n this.displayValue = '';\r\n this.paintedDate = null;\r\n if (resetValue) {\r\n this.value = '';\r\n }\r\n if (emit) {\r\n this.notifyChange(this.value);\r\n }\r\n }\r\n\r\n private setCurrentViewDate(date: Date) {\r\n this.selectedYear = date.getFullYear();\r\n this.selectedDate = new Date(date.getFullYear(), date.getMonth(), 1);\r\n this.monthWeeks = this.getWeeks();\r\n this.decadeRange = this.getDecadeRange();\r\n }\r\n\r\n private formatDisplay(date: Date): string {\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const year = date.getFullYear();\r\n if (this.justMonth) {\r\n return `${month}/${year}`;\r\n }\r\n const day = String(date.getDate()).padStart(2, '0');\r\n return `${day}/${month}/${year}`;\r\n }\r\n\r\n private parseDisplay(text: string): Date | null {\r\n const normalized = text.trim();\r\n if (this.justMonth) {\r\n const matchMonth = normalized.match(/^(\\d{1,2})[\\/\\-.](\\d{4})$/);\r\n if (!matchMonth) {\r\n return null;\r\n }\r\n const month = parseInt(matchMonth[1], 10);\r\n const year = parseInt(matchMonth[2], 10);\r\n if (month < 1 || month > 12) return null;\r\n return this.buildMonthDate(year, month - 1);\r\n }\r\n\r\n const match = normalized.match(/^(\\d{1,2})[\\/\\-.](\\d{1,2})[\\/\\-.](\\d{4})$/);\r\n if (!match) {\r\n return null;\r\n }\r\n\r\n const day = parseInt(match[1], 10);\r\n const month = parseInt(match[2], 10);\r\n const year = parseInt(match[3], 10);\r\n\r\n if (month < 1 || month > 12) return null;\r\n if (day < 1 || day > 31) return null;\r\n\r\n const candidate = new Date(year, month - 1, day);\r\n if (\r\n candidate.getFullYear() !== year ||\r\n candidate.getMonth() !== month - 1 ||\r\n candidate.getDate() !== day\r\n ) {\r\n return null;\r\n }\r\n\r\n return candidate;\r\n }\r\n\r\n private isWithinLimits(date: Date): boolean {\n const normalized = this.normalizeDate(date);\n if (this.minDate && normalized < this.minDate) {\n return false;\n }\n if (this.maxDate && normalized > this.maxDate) {\n return false;\n }\n return true;\n }\n\r\n private normalizeDate(date: Date): Date {\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n }\r\n\r\n private toIsoString(date: Date): string {\r\n return date.toISOString().split('T')[0];\r\n }\r\n\r\n private buildMonthDate(year: number, monthIndex: number): Date {\r\n const day =\r\n this.monthDay === 'last'\r\n ? new Date(year, monthIndex + 1, 0).getDate()\r\n : 1;\r\n return this.normalizeDate(new Date(year, monthIndex, day));\r\n }\r\n\r\n isMonthDisabled(monthIndex: number): boolean {\r\n if (!this.justMonth) {\r\n return false;\r\n }\r\n const candidate = this.buildMonthDate(this.selectedYear, monthIndex);\r\n return !this.isWithinLimits(candidate);\r\n }\r\n\r\n isSelectedMonth(monthIndex: number): boolean {\r\n if (!this.paintedDate) {\r\n return false;\r\n }\r\n return (\r\n this.paintedDate.getFullYear() === this.selectedYear &&\r\n this.paintedDate.getMonth() === monthIndex\r\n );\r\n }\r\n}\r\n","<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n <div class=\"fakeinput-wrapp \" >\r\n <div class=\"fakeinput \" \r\n [ngClass]=\"{ 'errorinput': error, 'disabledinput': disabled }\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon-m {{ internalIcon }}\"></i>\r\n }\r\n <input\r\n type=\"text\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"inputPlaceholder\"\r\n [value]=\"displayValue\"\r\n inputmode=\"numeric\"\r\n autocomplete=\"off\"\r\n (input)=\"onInputChange($event)\"\r\n (blur)=\"onInputBlur()\"\r\n (keydown)=\"onInputKeydown($event)\"\r\n (click)=\"openCalendar()\"\r\n />\r\n </div>\r\n <!-- Overlay Template -->\r\n <ng-template #calendarTemplate>\r\n <div class=\"calendar\">\r\n <div class=\"calendar-header\">\r\n <span (click)=\"changeView()\">\r\n @if (view === 'days') {\r\n {{ monthName }} de {{ selectedYear }}\r\n } @else if (view === 'months') {\r\n {{ selectedYear }}\r\n } @else {\r\n {{ decadeRange[0] }} - {{ decadeRange[decadeRange.length - 1] }}\r\n }\r\n </span>\r\n <ui-button\r\n size=\"s\"\r\n type=\"ghost\"\r\n [iconOnly]=\"true\"\r\n icon=\"ri-arrow-drop-up-line\"\r\n (click)=\"prev()\"\r\n ><</ui-button\r\n >\r\n <ui-button\r\n size=\"s\"\r\n type=\"ghost\"\r\n [iconOnly]=\"true\"\r\n icon=\"ri-arrow-drop-down-line\"\r\n (click)=\"next()\"\r\n >></ui-button\r\n >\r\n </div>\r\n <!-- Vista Days -->\r\n @if (view === 'days') {\r\n <div class=\"calendar-grid\">\r\n @for (d of ['DO','LU','MA','MI','JU','VI','SA']; track $index) {\r\n <div class=\"weekday\">{{ d }}</div>\r\n } @for (week of monthWeeks; track $index) { @for (day of week;\r\n track $index) {\r\n <button\r\n class=\"day\"\r\n [disabled]=\"\r\n (minDate && day ? day < minDate : false) ||\r\n (maxDate && day ? day > maxDate : false)\r\n \"\r\n [class.today]=\"isToday(day)\"\r\n [class.day-selected]=\"isPainted(day)\"\r\n [class.empty]=\"!day\"\r\n (click)=\"day && selectDate(day)\"\r\n >\r\n {{ day?.getDate() }}\r\n </button>\r\n } }\r\n </div>\r\n }\r\n <!-- Vista Months -->\r\n @if (view === 'months') {\r\n <div class=\"calendar-grid months\">\r\n @for (m of months; let i = $index; track i) {\r\n <button\r\n class=\"day\"\r\n [class.today]=\"isThisMonth(m)\"\r\n [class.day-selected]=\"isSelectedMonth(i)\"\r\n [disabled]=\"isMonthDisabled(i)\"\r\n (click)=\"selectMonth(i)\"\r\n >\r\n {{ m }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n <!-- Vista Years -->\r\n @if (view === 'years') {\r\n <div class=\"calendar-grid years\">\r\n @for (y of decadeRange; track $index) {\r\n <button\r\n class=\"day\"\r\n [class.today]=\"y == currentYear\"\r\n (click)=\"selectYear(y)\"\r\n >\r\n {{ y }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n <div class=\"calendar-footer\">\r\n <ui-button\r\n color=\"red\"\r\n size=\"s\"\r\n type=\"ghost\"\r\n (click)=\"cleanInput()\"\r\n >Limpiar</ui-button\r\n >\r\n <ui-button\r\n color=\"blue\"\r\n size=\"s\"\r\n type=\"ghost\"\r\n (click)=\"pickToday()\"\r\n >Hoy</ui-button\r\n >\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</ui-input-wrapper>","import { Component, forwardRef, Input, SimpleChanges } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../dynamic-form/base-value-accessot';\r\nimport { AppSelectOption } from '../inputs/select/select.component';\r\nimport { UicInputComponent } from '../inputs/input/input.component';\r\n\r\ntype selectId = number|string;\r\ntype selectedDetailed = {id: selectId; detail?: string};\r\nconst base = createValueAccessor<selectedDetailed[]>();\r\n\r\n@Component({\r\n selector: 'ui-pool-options',\r\n imports: [UicInputComponent],\r\n templateUrl: './pool-options.component.html',\r\n styleUrls: ['./pool-options.component.scss','../inputs/input.component.scss'],\r\n providers:[\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicPoolOptionsComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicPoolOptionsComponent extends base{\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: 'primary'|'secondary' = 'primary'; //color de ícono externo\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXT\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n // FUNCTIONS\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n @Input() multy = true;\r\n @Input() enabledListView = false;\r\n @Input() listViewTitle = 'Seleccionados';\r\n @Input() options:AppSelectOption[] = [];\r\n\r\n private selectedItems = new Map<selectId, selectedDetailed>();\r\n\r\n get selectedValues(): selectedDetailed[] {\r\n return Array.from(this.selectedItems.values()).map(item => ({ ...item }));\r\n }\r\n\r\n updateOptions(id:selectId){\r\n if ( this.disabled ) return;\r\n if (this.selectedItems.has(id)) {\r\n this.selectedItems.delete(id);\r\n } else {\r\n if (!this.multy) {\r\n this.selectedItems.clear();\r\n }\r\n this.selectedItems.set(id, { id });\r\n }\r\n this.emitSelectionChange();\r\n }\r\n\r\n updateDetail(id: selectId, detail: string) {\r\n if (!this.selectedItems.has(id)) {\r\n return;\r\n }\r\n const updated: selectedDetailed =\r\n detail?.length ? { id, detail } : { id };\r\n this.selectedItems.set(id, updated);\r\n this.emitSelectionChange();\r\n }\r\n\r\n override writeValue(value: selectedDetailed[] | selectId[] | null = []): void {\r\n const normalized = this.normalizeIncomingValue(value);\r\n super.writeValue(normalized);\r\n this.selectedItems = new Map(normalized.map(item => [item.id, item]));\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['options'] && this.value != null) {\r\n this.selectedItems.clear();\r\n this.emitSelectionChange();\r\n }\r\n }\r\n\r\n isSelected(id: selectId) {\r\n return this.selectedItems.has(id);\r\n }\r\n\r\n getItemName(id:selectId){\r\n return this.options.find(f=>f.id == id)?.text??id;\r\n }\r\n\r\n private emitSelectionChange() {\r\n this.notifyChange(this.selectedValues);\r\n }\r\n\r\n private normalizeIncomingValue(\r\n value: selectedDetailed[] | selectId[] | null | undefined\r\n ): selectedDetailed[] {\r\n if (!Array.isArray(value)) {\r\n return [];\r\n }\r\n\r\n return value\r\n .map(item => {\r\n if (item == null) {\r\n return null;\r\n }\r\n\r\n if (typeof item === 'object' && 'id' in item) {\r\n const normalizedItem = item as selectedDetailed;\r\n const detail = normalizedItem.detail;\r\n return detail?.length ? { id: normalizedItem.id, detail } : { id: normalizedItem.id };\r\n }\r\n\r\n return { id: item as selectId };\r\n })\r\n .filter((entry): entry is selectedDetailed => entry !== null);\r\n }\r\n\r\n}\r\n","<div class=\"input-wrapper \">\r\n @if (icon) {\r\n <i class=\"input-externalicon f-{{iconColor}} {{icon}}\"></i>\r\n }\r\n <div class=\"input-elements\" [style]=\"icon?'max-width: calc(100% - 34px);':''\">\r\n @if (label) {\r\n <div class=\"label inputlabel\" [class.font-error]=\"error\">{{label}} </div>\r\n }\r\n <div>\r\n <div class=\"pool-wrapper\" > \r\n @for (opt of options; track opt.id) {\r\n <div (click)=\"updateOptions(opt.id??'')\" class=\"pool-option\" [class.disabled-opt]=\"disabled\" [class.active-opt]=\"isSelected(opt.id??'')\">{{opt.text}}</div>\r\n }\r\n \r\n </div>\r\n <!-- BLOQUE DE LISTTA DETALLADA -->\r\n @if(enabledListView && selectedValues.length > 0){\r\n <h2 class=\"pool-selected-title\">{{listViewTitle}}</h2>\r\n <div>\r\n @for (item of selectedValues; track item.id) {\r\n <div class=\"pool-selected\"> \r\n <div class=\"pool-selected-label\">{{getItemName(item.id)}} </div>\r\n <div class=\"pool-selected-input\">\r\n <ui-input [disabled]=\"disabled\">\r\n <input [disabled]=\"disabled\" placeholder=\"Detalle\" type=\"text\" [value]=\"item.detail ?? ''\" (input)=\"updateDetail(item.id, $any($event.target).value)\">\r\n </ui-input>\r\n @if (!disabled) {\r\n <div class=\"pool-selected-button\" (click)=\"updateOptions(item.id)\" >\r\n <i class=\"ri-delete-bin-5-line\" ></i>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n <!-- ALERTS -->\r\n @if (error) {\r\n <div class=\"fakeinput-alert f-red\">{{error}}</div>\r\n }\r\n @if (tip) {\r\n <div class=\"fakeinput-alert tip\">{{tip}}</div>\r\n }\r\n </div>\r\n</div>\r\n","import { Component, ElementRef, EventEmitter, forwardRef, inject, Input, Output, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { debounceTime, distinctUntilChanged, finalize, Observable, of, Subject, switchMap, tap } from 'rxjs';\r\nimport { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\nconst base = createValueAccessor< Record<string,any>|null>();\r\n\r\n@Component({\r\n selector: 'ui-searcher',\r\n imports: [CommonModule, FormsModule,UicButtonComponent, InputWrapperComponent],\r\n templateUrl: './uic-searcher.component.html',\r\n styleUrls: ['./uic-searcher.component.scss', '../input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicSearcherComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicSearcherComponent extends base {\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: 'primary'|'secondary' = 'primary'; //color de ícono externo\r\n @Input() internalIcon = 'ri-search-2-line'; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = ''; \r\n \r\n @Input() showSubtitle = false;\r\n // FUNCTIONS\r\n @Input() disabled = false; \r\n @Input() loading = false;\r\n @Input() showSelected = true;\r\n @Input() placeholder = 'Buscar...';\r\n \r\n @Input() searchFn?: (query: string) => Observable<any[]>;\r\n @Input() itemDisplayFn?: (item: any) => string = item => String(item);\r\n @Input() itemIsEnabledFn?: (item: any) => boolean = () => true;\r\n \r\n @Input() manualSearch: boolean = false;\r\n @Input() stateless: boolean = false;\r\n @Output() pickedItem = new EventEmitter<Record<string,any>>();\r\n\r\n private readonly searchSubject = new Subject<string>();\r\n results$: Observable<any[]> = this.searchSubject.pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n tap(() => this.watingApi = true),\r\n switchMap( v => {\r\n if (v.length < 3) {\r\n this.watingApi = false;\r\n return of([]);\r\n }\r\n if ( !this.searchFn ) return of([]);\r\n return this.searchFn(v).pipe( finalize(()=>this.watingApi=false) )}\r\n )\r\n );;\r\n selectedOption:Record<string,any>|null = null;\r\n searchText: string = '';\r\n watingApi = false;\r\n\r\n \r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n private resizeObserver?: ResizeObserver;\r\n \r\n onSearchChange(value: string) {\r\n this.searchText = value; \r\n if (!this.manualSearch) {\r\n this.searchSubject.next(value);\r\n }\r\n }\r\n\r\n triggerSearch() {\r\n this.searchSubject.next(this.searchText);\r\n }\r\n\r\n selectItem(item: Record<string,any>) {\r\n if (!this.itemIsEnabledFn ||this.itemIsEnabledFn(item)) {\r\n this.clearSearch();\r\n this.closeList();\r\n if ( this.stateless ){\r\n this.pickedItem.emit(item)\r\n }else{\r\n if (this.showSelected) this.selectedOption = item;\r\n this.notifyChange(item);\r\n }\r\n }\r\n }\r\n\r\n clearSearch() {\r\n this.searchText = '';\r\n this.searchSubject.next('');\r\n }\r\n\r\n unselect(){\r\n this.selectedOption = null;\r\n this.notifyChange(null);\r\n }\r\n\r\n // --- Overlay ---\r\n @ViewChild('dropdownTemplate') dropdownTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n overlayPositions: ConnectedPosition[] =[\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]\r\n openList(){\r\n if (this.disabled || this.loading) return;\r\n\r\n if (this.overlayRef) {\r\n this.closeList();\r\n }\r\n\r\n const input = this.host.nativeElement.querySelector('.fakeinput') as HTMLElement | null;\r\n if (!input) return;\r\n const width = input.offsetWidth;\r\n const preferredPositions = this.getPreferredPositions(input);\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(input)\r\n .withPositions(preferredPositions)\r\n .withFlexibleDimensions(true)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n width,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.observeOverlaySizeChanges();\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeList());\r\n }\r\n closeList() {\r\n if (this.overlayRef) {\r\n this.resizeObserver?.disconnect();\r\n this.resizeObserver = undefined;\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n\r\n private observeOverlaySizeChanges() {\r\n if (!this.overlayRef || typeof ResizeObserver === 'undefined') return;\r\n\r\n this.resizeObserver?.disconnect();\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.overlayRef?.updatePosition();\r\n });\r\n this.resizeObserver.observe(this.overlayRef.overlayElement);\r\n }\r\n\r\n private getPreferredPositions(origin: HTMLElement): ConnectedPosition[] {\r\n if (typeof window === 'undefined') return this.overlayPositions;\r\n const rect = origin.getBoundingClientRect();\r\n const spaceBelow = window.innerHeight - rect.bottom;\r\n const spaceAbove = rect.top;\r\n return spaceBelow >= spaceAbove ? this.overlayPositions : [...this.overlayPositions].reverse();\r\n }\r\n\r\n override writeValue(value: Record<string,any>): void {\r\n super.writeValue(value); \r\n this.selectedOption = value; \r\n }\r\n}\r\n","<ui-input-wrapper\r\n[icon]=\"icon\"\r\n[iconColor]=\"iconColor\"\r\n[label]=\"label\"\r\n[error]=\"error\"\r\n[tip]=\"tip\"\r\n[disabled]=\"disabled\">\r\n@if ( !stateless || (!disabled && stateless)) {\r\n <div class=\"fakeinput-wrapp\" >\r\n <!-- INPUT -->\r\n <div class=\"fakeinput\" #fakeinput \r\n [ngClass]=\"{'errorinput':error, 'disabledinput':disabled, 'loading-input':watingApi||loading}\" style=\"cursor: pointer;\">\r\n @if (selectedOption == null) { \r\n @if (internalIcon) {\r\n <i class=\"input-internalicon {{internalIcon}}\" ></i>\r\n }\r\n <div class=\"input-container\" >\r\n <input\r\n [disabled]=\"disabled\"\r\n (focus)=\"openList()\"\r\n type=\"text\"\r\n (keydown.enter)=\"triggerSearch()\"\r\n (keydown.escape)=\"clearSearch()\"\r\n [(ngModel)]=\"searchText\"\r\n (ngModelChange)=\"onSearchChange($event)\"\r\n [placeholder]=\"placeholder\"\r\n />\r\n </div> \r\n @if (!disabled) {\r\n @if (manualSearch) {\r\n <ui-button tip=\"Limpiar\" (click)=\"triggerSearch()\" size=\"t\" ></ui-button>\r\n }\r\n <ui-button [iconOnly]=\"true\" size=\"s\" type=\"ghost\" icon=\"ri-eraser-line\" (click)=\"clearSearch()\"></ui-button>\r\n }\r\n }@else {\r\n <div class=\"input-container\" >\r\n <div class=\"selected-item\" >\r\n <div class=\"selected-item-text\" [innerHTML]=\"itemDisplayFn?itemDisplayFn(selectedOption):''\"></div> \r\n <ui-button [iconOnly]=\"true\" (click)=\"unselect()\" type=\"ghost\" size=\"t\" icon=\"ri-close-large-line\" color=\"red\"></ui-button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </ui-input-wrapper>\r\n \r\n<ng-template #dropdownTemplate>\r\n @if (results$ | async; as items){\r\n <div class=\"input-options\">\r\n <div class=\"input-option-scroll\">\r\n @for (item of items; track $index) {\r\n <div class=\"input-option\" [class.item-disabled]=\"itemIsEnabledFn?!itemIsEnabledFn(item):false\"\r\n (click)=\"selectItem(item)\" \r\n [innerHTML]=\"itemDisplayFn?itemDisplayFn(item):''\">\r\n </div>\r\n }@empty {\r\n <div class=\"t-disabled\">No hay elementos para mostrar</div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n\r\n\r\n","import { Component, ElementRef, forwardRef, inject, Input, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { AppSelectOption } from '../select/select.component';\r\nimport { UicCheckboxComponent } from '../checkbox/checkbox.component';\r\nimport { ButtonColor } from '../../button/button.component';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\ntype selectId = (number|string)[];\r\nconst base = createValueAccessor<selectId>();\r\n\r\n@Component({\r\n selector: 'ui-multy-select',\r\n imports: [CommonModule, UicCheckboxComponent, FormsModule, InputWrapperComponent],\r\n templateUrl: './multy-select.component.html',\r\n styleUrls: ['../input.component.scss','./multy-select.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicMultySelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicMultySelectComponent extends base{\r\n\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: 'primary'|'secondary' = 'primary'; //color de ícono externo\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() internalIconColor: ButtonColor = 'black'; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXT\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n @Input() showSubtitle = false;\r\n @Input() disabled = false;\r\n emptyText = '- Seleccionar -'\r\n // FUNCTIONS\r\n @Input() loading = false;\r\n @Input() options:AppSelectOption[] = []; \r\n // MULTY\r\n allSelected=false;\r\n selectedSet = new Set<string | number>();\r\n\r\n toggleAll(checked: boolean) {\r\n this.allSelected = checked;\r\n this.selectedSet.clear();\r\n if (checked) {\r\n this.options.forEach(o => {\r\n const key = o.id??o.text;\r\n this.selectedSet.add(key);\r\n });\r\n }\r\n }\r\n\r\n toggleOption(id:number|string){\r\n if (this.selectedSet.has(id)) {\r\n this.selectedSet.delete(id);\r\n } else {\r\n this.selectedSet.add(id);\r\n }\r\n this.updateAllSelected();\r\n }\r\n\r\n updateAllSelected() {\r\n this.allSelected = this.options.length > 0 && this.selectedSet.size === this.options.length;\r\n }\r\n\r\n applySelection() {\r\n let result:(string|number)[] = [];\r\n result = [...this.selectedSet];\r\n this.notifyChange( result )\r\n this.closeList();\r\n }\r\n\r\n\r\n\r\n @ViewChild('dropdownTemplate') dropdownTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n overlayPositions: ConnectedPosition[] =[\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ]\r\n \r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n \r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['options'] && this.value != null) {\r\n // Resetear valor seleccionado\r\n this.selectedSet = new Set();\r\n }\r\n }\r\n\r\n // --- Overlay ---\r\n openList(){\r\n if (this.disabled || this.loading) return;\r\n\r\n if (this.overlayRef) {\r\n this.closeList();\r\n }\r\n\r\n const input = this.host.nativeElement.querySelector('.fakeinput');\r\n const width = input.offsetWidth;\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(input)\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(true)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n width,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeList());\r\n }\r\n\r\n \r\n closeList() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n\r\n override writeValue(value: (string| number)[]): void {\r\n super.writeValue(value); \r\n this.selectedSet = new Set(value);\r\n }\r\n}\r\n","\r\n<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n <div class=\"fakeinput-wrapp\" > \r\n <!-- INPUT -->\r\n <div (click)=\"openList()\" class=\"fakeinput\" #fakeinput \r\n [ngClass]=\"{'errorinput':error, 'disabledinput':disabled, 'loading-input':loading}\" style=\"cursor: pointer;\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon {{internalIcon}}\" ></i>\r\n }\r\n <div class=\"fakeinput-emptytext\" [class.disabled-placeholder]=\"disabled\" >TEXTO PENDIENTE</div>\r\n @if (!disabled && !loading) {\r\n <i class=\"ri-arrow-down-s-line\"></i>\r\n }\r\n </div> \r\n <!-- DESPLEGABLE -->\r\n <ng-template #dropdownTemplate >\r\n <div class=\"input-options\">\r\n <div class=\"multyoptions-header\">\r\n <ui-checkbox [noPadding]=\"true\"\r\n [ngModel]=\"allSelected\" \r\n (ngModelChange)=\"toggleAll($event)\"\r\n placeholder=\"Todos\"></ui-checkbox>\r\n </div>\r\n <!-- OPCIONES -->\r\n <div class=\"input-option-scroll\"> \r\n @for (option of options; track $index) {\r\n <div (click)=\"toggleOption(option.id??option.text)\" class=\"input-multyoption\">\r\n <ui-checkbox \r\n [ngModel]=\"selectedSet.has(option.id??option.text)\"\r\n [noPadding]=\"true\" \r\n [placeholder]=\"option.text\"></ui-checkbox>\r\n </div> \r\n }\r\n @if (options.length == 0) {\r\n <div class=\"fakeinput-alert t-disabled\">No hay elementos para mostrar</div>\r\n }\r\n </div>\r\n <!-- <div class=\"multyoptions-footer\">\r\n <ui-button (click)=\"closeList()\" color=\"black\" type=\"bordered\" size=\"s\">Cancelar</ui-button>\r\n <ui-button (click)=\"applySelection()\" color=\"black\" size=\"s\">Aplicar</ui-button>\r\n </div> -->\r\n </div>\r\n </ng-template>\r\n </div>\r\n</ui-input-wrapper>","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ElementRef,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewChildren,\r\n ViewContainerRef,\r\n forwardRef,\r\n inject,\r\n Input,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport {\r\n ConnectedPosition,\r\n FlexibleConnectedPositionStrategy,\r\n Overlay,\r\n OverlayRef,\r\n} from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { ButtonColor, UicButtonComponent } from '../../button/button.component';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\nconst base = createValueAccessor<string>();\r\n\r\ntype ParsedTime = { hour12: number; minute: number; meridiem: 'am' | 'pm' };\r\n\r\n@Component({\r\n selector: 'ui-time-picker',\r\n imports: [CommonModule, UicButtonComponent, InputWrapperComponent],\r\n templateUrl: './time-picker.component.html',\r\n styleUrls: ['./time-picker.component.scss', '../input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicTimePickerComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class UicTimePickerComponent extends base {\r\n // Iconos y estado\r\n @Input() icon = '';\r\n @Input() iconColor: 'primary' | 'secondary' = 'primary';\r\n @Input() internalIcon = '';\r\n @Input() internalIconColor: ButtonColor = 'black'; //Icono interno\r\n @Input() disabled = false;\r\n\r\n // Texto\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n\r\n // Configuracion\r\n @Input() interval = 1; // paso de minutos en el overlay\r\n\r\n // Entrada mostrada (12h) y valor (24h)\r\n displayValue = '';\r\n\r\n // Overlay\r\n @ViewChild('overlayTemplate') overlayTemplate!: TemplateRef<any>;\r\n @ViewChildren('hourOption') hourOptions!: QueryList<ElementRef<HTMLElement>>;\r\n @ViewChildren('minuteOption') minuteOptions!: QueryList<ElementRef<HTMLElement>>;\r\n @ViewChildren('meridiemOption') meridiemOptions!: QueryList<ElementRef<HTMLElement>>;\r\n private overlayRef: OverlayRef | null = null;\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n overlayPositions: ConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n ];\r\n\r\n // Listas para construir la hora\r\n hours12 = Array.from({ length: 12 }, (_, i) => i + 1); // 1..12\r\n minutes: number[] = [];\r\n meridiems: Array<'am' | 'pm'> = ['am', 'pm'];\r\n\r\n selectedHour12: number | null = null;\r\n selectedMinute: number | null = null;\r\n selectedMeridiem: 'am' | 'pm' | null = null;\r\n\r\n ngOnInit(): void {\r\n this.rebuildMinutes();\r\n this.syncSelectionFromValue();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['interval']) {\r\n this.rebuildMinutes();\r\n this.syncSelectionFromValue();\r\n }\r\n }\r\n\r\n private rebuildMinutes() {\r\n const step = Math.max(1, Math.min(60, Math.floor(this.interval || 1)));\r\n const mins: number[] = [];\r\n for (let m = 0; m < 60; m += step) {\r\n mins.push(m);\r\n }\r\n this.minutes = mins;\r\n }\r\n\r\n private applySelection(parsed: ParsedTime | null) {\r\n if (!parsed) {\r\n this.clearSelection();\r\n return;\r\n }\r\n this.selectedHour12 = parsed.hour12;\r\n this.selectedMinute = this.minutes.includes(parsed.minute) ? parsed.minute : null;\r\n this.selectedMeridiem = parsed.meridiem;\r\n }\r\n\r\n private clearSelection() {\r\n this.selectedHour12 = null;\r\n this.selectedMinute = null;\r\n this.selectedMeridiem = null;\r\n }\r\n\r\n private syncSelectionFromValue() {\r\n const parsed = this.parseValue(this.value) || this.parseDisplay(this.displayValue);\r\n this.applySelection(parsed);\r\n }\r\n\r\n // --- Overlay ---\r\n openOverlay() {\r\n if (this.disabled) return;\r\n\r\n if (this.overlayRef) {\r\n this.closeOverlay();\r\n }\r\n\r\n const inputEl = this.host.nativeElement.querySelector('.fakeinput');\r\n const width = (inputEl as HTMLElement | null)?.clientWidth;\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(inputEl as HTMLElement)\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n width,\r\n });\r\n\r\n const portal = new TemplatePortal(this.overlayTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeOverlay());\r\n\r\n this.syncSelectionFromValue();\r\n setTimeout(() => this.scrollToSelection(), 0);\r\n }\r\n\r\n closeOverlay() {\r\n if (this.overlayRef) {\r\n this.onTouched();\r\n this.overlayRef.dispose();\r\n this.overlayRef = null;\r\n }\r\n }\r\n\r\n // Selecciones desde overlay\r\n pickHour(hour: number) {\r\n this.selectedHour12 = hour;\r\n this.commitOverlaySelection();\r\n }\r\n\r\n pickMinute(minute: number) {\r\n this.selectedMinute = minute;\r\n this.commitOverlaySelection();\r\n }\r\n\r\n pickMeridiem(meridiem: 'am' | 'pm') {\r\n this.selectedMeridiem = meridiem;\r\n this.commitOverlaySelection();\r\n }\r\n\r\n private commitOverlaySelection() {\r\n const base =\r\n this.parseDisplay(this.displayValue) ||\r\n this.parseValue(this.value) || {\r\n hour12: 12,\r\n minute: 0,\r\n meridiem: 'am' as const,\r\n };\r\n\r\n const hour = this.selectedHour12 ?? base.hour12;\r\n const minute = this.selectedMinute ?? base.minute;\r\n const meridiem = this.selectedMeridiem ?? base.meridiem;\r\n\r\n this.displayValue = this.format12(hour, minute, meridiem);\r\n this.notifyChange(this.compose24(hour, minute, meridiem) as any);\r\n }\r\n\r\n // --- Entrada manual ---\r\n onInput(val: string) {\r\n this.displayValue = val;\r\n }\r\n\r\n onBlur() {\r\n const parsed = this.parseDisplay(this.displayValue);\r\n if (parsed) {\r\n this.displayValue = this.format12(parsed.hour12, parsed.minute, parsed.meridiem);\r\n const value24 = this.compose24(parsed.hour12, parsed.minute, parsed.meridiem);\r\n this.notifyChange(value24 as any);\r\n this.applySelection(parsed);\r\n } else {\r\n this.displayValue = '';\r\n this.notifyChange(null as any);\r\n this.clearSelection();\r\n }\r\n }\r\n\r\n onKeydown(event: KeyboardEvent) {\r\n if (event.key === 'Enter') {\r\n (event.target as HTMLInputElement).blur();\r\n }\r\n }\r\n\r\n // --- ControlValueAccessor ---\r\n override writeValue(value: string | null): void {\r\n super.writeValue(value as any);\r\n const parsed = this.parseValue(value || '');\r\n if (parsed) {\r\n this.displayValue = this.format12(parsed.hour12, parsed.minute, parsed.meridiem);\r\n this.applySelection(parsed);\r\n } else {\r\n this.displayValue = '';\r\n this.clearSelection();\r\n }\r\n }\r\n\r\n // --- Helpers de formato ---\r\n private format12(hour12: number, minute: number, meridiem: 'am' | 'pm') {\r\n const hh = String(hour12).padStart(2, '0');\r\n const mm = String(minute).padStart(2, '0');\r\n return `${hh}:${mm} ${meridiem}`;\r\n }\r\n\r\n private compose24(hour12: number, minute: number, meridiem: 'am' | 'pm'): string {\r\n let h24 = hour12 % 12;\r\n if (meridiem === 'pm') h24 += 12;\r\n const hh = String(h24).padStart(2, '0');\r\n const mm = String(minute).padStart(2, '0');\r\n return `${hh}:${mm}`;\r\n }\r\n\r\n private parseDisplay(text: string): ParsedTime | null {\r\n if (!text) return null;\r\n const match = text.trim().match(/^\\s*(\\d{1,2})\\s*:\\s*(\\d{2})(?:\\s*([aApP][mM]))?\\s*$/);\r\n if (!match) return null;\r\n const hour = parseInt(match[1], 10);\r\n const minute = parseInt(match[2], 10);\r\n const meridiem = (match[3] ? match[3].toLowerCase() : 'am') as 'am' | 'pm';\r\n if (hour < 1 || hour > 12) return null;\r\n if (minute < 0 || minute > 59) return null;\r\n return { hour12: hour, minute, meridiem };\r\n }\r\n\r\n private parseValue(value24: string | null | undefined): ParsedTime | null {\r\n if (!value24) return null;\r\n const match = value24.match(/^(\\d{2}):(\\d{2})$/);\r\n if (!match) return null;\r\n const hour24 = parseInt(match[1], 10);\r\n const minute = parseInt(match[2], 10);\r\n if (hour24 < 0 || hour24 > 23) return null;\r\n if (minute < 0 || minute > 59) return null;\r\n const meridiem: 'am' | 'pm' = hour24 < 12 ? 'am' : 'pm';\r\n let hour12 = hour24 % 12;\r\n if (hour12 === 0) hour12 = 12;\r\n return { hour12, minute, meridiem };\r\n }\r\n\r\n private scrollToSelection(retries = 3) {\r\n if (!this.overlayRef || !this.overlayRef.hasAttached()) {\r\n return;\r\n }\r\n\r\n const hourScrolled = this.scrollColumn(this.hourOptions, this.hours12, this.selectedHour12);\r\n const minuteScrolled = this.scrollColumn(this.minuteOptions, this.minutes, this.selectedMinute);\r\n const meridiemScrolled = this.scrollColumn(this.meridiemOptions, this.meridiems, this.selectedMeridiem);\r\n\r\n const hasSelection =\r\n this.selectedHour12 !== null || this.selectedMinute !== null || this.selectedMeridiem !== null;\r\n\r\n if (hasSelection && !(hourScrolled || minuteScrolled || meridiemScrolled) && retries > 0) {\r\n setTimeout(() => this.scrollToSelection(retries - 1), 50);\r\n }\r\n }\r\n\r\n private scrollColumn<T>(\r\n query: QueryList<ElementRef<HTMLElement>>,\r\n values: readonly T[],\r\n selected: T | null,\r\n ): boolean {\r\n if (!query || selected === null) {\r\n return false;\r\n }\r\n const index = values.findIndex((value) => value === selected);\r\n if (index < 0) {\r\n return false;\r\n }\r\n const elements = query.toArray();\r\n const element = elements[index]?.nativeElement;\r\n if (!element) {\r\n return false;\r\n }\r\n try {\r\n element.scrollIntoView({ block: 'center' });\r\n } catch {\r\n element.scrollIntoView();\r\n }\r\n return true;\r\n }\r\n}\r\n","<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n <div class=\"fakeinput-wrapp\">\r\n <div class=\"fakeinput\" [ngClass]=\"{ errorinput: error, disabledinput: disabled }\">\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon-m {{ internalIcon }}\"></i>\r\n }\r\n <input\r\n type=\"text\"\r\n [disabled]=\"disabled\"\r\n placeholder=\"hh:mm am/pm\"\r\n [value]=\"displayValue\"\r\n #timeInput\r\n (input)=\"onInput(timeInput.value)\"\r\n (blur)=\"onBlur()\"\r\n (keydown)=\"onKeydown($event)\"\r\n />\r\n <ui-button class=\"side-button\" type=\"ghost\" color=\"black\" [iconOnly]=\"true\" size=\"s\" icon=\"ri-arrow-down-wide-line\" [disabled]=\"disabled\" (click)=\"openOverlay()\"></ui-button>\r\n </div>\r\n \r\n <!-- Overlay simple sin estilos: 3 columnas (hora, minuto, am/pm) -->\r\n <ng-template #overlayTemplate>\r\n <div class=\"input-options\">\r\n \r\n <div class=\"time-overlay\">\r\n <div class=\"time-col hours\">\r\n @for (h of hours12; track $index) {\r\n <div\r\n #hourOption\r\n class=\"time-item\"\r\n [class.selected]=\"h === selectedHour12\"\r\n (click)=\"pickHour(h)\"\r\n >\r\n {{ h }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"time-col minutes\">\r\n @for (m of minutes; track $index) {\r\n <div\r\n #minuteOption\r\n class=\"time-item\"\r\n [class.selected]=\"m === selectedMinute\"\r\n (click)=\"pickMinute(m)\"\r\n >\r\n {{ m < 10 ? ('0' + m) : m }}\r\n </div>\r\n }\r\n </div>\r\n <div class=\"time-col meridiem\">\r\n @for (md of meridiems; track $index) {\r\n <div\r\n #meridiemOption\r\n class=\"time-item\"\r\n [class.selected]=\"md === selectedMeridiem\"\r\n (click)=\"pickMeridiem(md)\"\r\n >\r\n {{ md }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n</ui-input-wrapper>\r\n","export interface PhoneCountry {\n name: string;\n iso2: string;\n dialCode: string;\n priority?: number;\n areaCodes?: string[];\n}\n\nexport const PHONE_COUNTRIES: PhoneCountry[] = [\n { name: 'Argentina', iso2: 'ar', dialCode: '54' },\n { name: 'Australia', iso2: 'au', dialCode: '61' },\n { name: 'Bolivia', iso2: 'bo', dialCode: '591' },\n { name: 'Brazil', iso2: 'br', dialCode: '55' },\n { name: 'Canada', iso2: 'ca', dialCode: '1' },\n { name: 'Chile', iso2: 'cl', dialCode: '56' },\n { name: 'China', iso2: 'cn', dialCode: '86' },\n { name: 'Colombia', iso2: 'co', dialCode: '57' },\n { name: 'Costa Rica', iso2: 'cr', dialCode: '506' },\n { name: 'Dominican Republic', iso2: 'do', dialCode: '1', areaCodes: ['809', '829', '849'] },\n { name: 'Ecuador', iso2: 'ec', dialCode: '593' },\n { name: 'El Salvador', iso2: 'sv', dialCode: '503' },\n { name: 'France', iso2: 'fr', dialCode: '33' },\n { name: 'Germany', iso2: 'de', dialCode: '49' },\n { name: 'Guatemala', iso2: 'gt', dialCode: '502' },\n { name: 'Honduras', iso2: 'hn', dialCode: '504' },\n { name: 'Italy', iso2: 'it', dialCode: '39' },\n { name: 'Japan', iso2: 'jp', dialCode: '81' },\n { name: 'Mexico', iso2: 'mx', dialCode: '52' },\n { name: 'Netherlands', iso2: 'nl', dialCode: '31' },\n { name: 'New Zealand', iso2: 'nz', dialCode: '64' },\n { name: 'Panama', iso2: 'pa', dialCode: '507' },\n { name: 'Paraguay', iso2: 'py', dialCode: '595' },\n { name: 'Peru', iso2: 'pe', dialCode: '51' },\n { name: 'Portugal', iso2: 'pt', dialCode: '351' },\n { name: 'Spain', iso2: 'es', dialCode: '34' },\n { name: 'United Kingdom', iso2: 'gb', dialCode: '44' },\n { name: 'United States', iso2: 'us', dialCode: '1' },\n { name: 'Uruguay', iso2: 'uy', dialCode: '598' },\n { name: 'Venezuela', iso2: 've', dialCode: '58' }\n];\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, Input, OnChanges, OnDestroy, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef, forwardRef, inject } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { ButtonColor } from '../../button/button.component';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { PhoneCountry, PHONE_COUNTRIES } from './phone-countries.data';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\nexport interface UicPhoneInputValue {\r\n countryIso2: string;\r\n dialCode: string;\r\n nationalNumber: string;\r\n internationalNumber: string;\r\n}\r\n\r\ntype PhoneInputModel = UicPhoneInputValue | null;\r\nconst base = createValueAccessor<PhoneInputModel>();\r\n\r\n@Component({\r\n selector: 'ui-phone-input',\r\n imports: [CommonModule, InputWrapperComponent],\r\n templateUrl: './phone-input.component.html',\r\n styleUrls: ['../input.component.scss', './phone-input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicPhoneInputComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicPhoneInputComponent extends base implements OnChanges, OnDestroy {\r\n @Input() icon = '';\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() internalIcon = '';\r\n @Input() internalIconColor: ButtonColor = 'black'; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm';\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n @Input() placeholder = 'Ingresa un numero';\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n @Input() preferredCountries: string[] = ['pe', 'es', 'us'];\r\n @Input() flagPath = 'https://flagcdn.com/{{code}}.svg';\r\n @Input() set countries(value: PhoneCountry[]) {\r\n this._countries = value?.length ? value : PHONE_COUNTRIES;\r\n this.resetCountryLists();\r\n }\r\n get countries(): PhoneCountry[] {\r\n return this._countries;\r\n }\r\n\r\n @ViewChild('searchInput') private readonly searchInput?: ElementRef<HTMLInputElement>;\r\n @ViewChild('dropdownTemplate') private readonly dropdownTemplate?: TemplateRef<any>;\r\n\r\n dropdownOpen = false;\r\n searchTerm = '';\r\n phoneNumber = '';\r\n selectedCountry!: PhoneCountry;\r\n filteredCountries: PhoneCountry[] = [];\r\n readonly dropdownId = `phone-dropdown-${Math.random().toString(36).slice(2, 8)}`;\r\n private pendingNormalizedValue: UicPhoneInputValue | null = null;\r\n private changeRegistered = false;\r\n\r\n private _countries: PhoneCountry[] = PHONE_COUNTRIES;\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private overlayRef?: OverlayRef;\r\n private readonly overlayPositions: ConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' }\r\n ];\r\n\r\n constructor() {\r\n super();\r\n this.resetCountryLists();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['preferredCountries'] && !changes['preferredCountries'].firstChange) {\r\n this.selectedCountry = this.getDefaultCountry();\r\n this.emitValue();\r\n }\r\n\r\n if (changes['disabled'] && this.disabled && this.dropdownOpen) {\r\n this.closeDropdown();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.closeDropdown();\r\n }\r\n\r\n override writeValue(value: PhoneInputModel | string): void {\r\n const normalizedValue: PhoneInputModel = typeof value === 'string' ? this.parseStringValue(value) : value;\r\n this.pendingNormalizedValue = typeof value === 'string' ? normalizedValue : null;\r\n super.writeValue(normalizedValue);\r\n\r\n if (!normalizedValue) {\r\n this.phoneNumber = '';\r\n this.selectedCountry = this.getDefaultCountry();\r\n return;\r\n }\r\n\r\n const matchedCountry =\r\n this.countries.find(country => country.iso2 === normalizedValue.countryIso2) ??\r\n this.countries.find(country => country.dialCode === normalizedValue.dialCode);\r\n\r\n this.selectedCountry = matchedCountry ?? this.getDefaultCountry();\r\n this.phoneNumber = (normalizedValue.nationalNumber ?? '').replace(/\\D/g, '');\r\n\r\n if (typeof value === 'string') {\r\n this.propagateNormalizedValue(normalizedValue);\r\n }\r\n }\r\n\r\n override registerOnChange(fn: any): void {\r\n super.registerOnChange(fn);\r\n this.changeRegistered = true;\r\n if (this.pendingNormalizedValue) {\r\n this.onChange(this.pendingNormalizedValue);\r\n this.pendingNormalizedValue = null;\r\n }\r\n }\r\n\r\n toggleDropdown(): void {\r\n if (this.disabled || this.loading) return;\r\n\r\n if (this.dropdownOpen) {\r\n this.closeDropdown();\r\n } else {\r\n this.openDropdown();\r\n }\r\n }\r\n\r\n selectCountry(country: PhoneCountry): void {\r\n this.selectedCountry = country;\r\n this.closeDropdown();\r\n this.emitValue();\r\n }\r\n\r\n onNumberInput(event: Event): void {\r\n const input = event.target as HTMLInputElement;\r\n const digits = input.value.replace(/\\D/g, '');\r\n this.phoneNumber = digits;\r\n input.value = digits;\r\n this.emitValue();\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n\r\n onSearchChange(event: Event): void {\r\n const term = (event.target as HTMLInputElement).value.trim().toLowerCase();\r\n this.searchTerm = term;\r\n if (!term) {\r\n this.filteredCountries = [...this.countries];\r\n return;\r\n }\r\n this.filteredCountries = this.countries.filter(country => {\r\n const matchesName = country.name.toLowerCase().includes(term);\r\n const matchesIso = country.iso2.toLowerCase().includes(term);\r\n const matchesDial = country.dialCode.startsWith(term.replace('+', ''));\r\n return matchesName || matchesIso || matchesDial;\r\n });\r\n }\r\n\r\n clearSearch(): void {\r\n this.searchTerm = '';\r\n this.filteredCountries = [...this.countries];\r\n if (this.dropdownOpen) {\r\n this.searchInput?.nativeElement.focus();\r\n }\r\n }\r\n\r\n getFlagUrl(iso: string): string {\r\n const code = iso.toLowerCase();\r\n if (this.flagPath.includes('{{code}}')) {\r\n return this.flagPath.replace('{{code}}', code);\r\n }\r\n const safeBase = this.flagPath.replace(/\\/$/, '');\r\n return `${safeBase}/${code}.svg`;\r\n }\r\n\r\n private emitValue(): void {\r\n if (!this.phoneNumber) {\r\n this.notifyChange(null);\r\n return;\r\n }\r\n\r\n const value: UicPhoneInputValue = {\r\n countryIso2: this.selectedCountry.iso2,\r\n dialCode: this.selectedCountry.dialCode,\r\n nationalNumber: this.phoneNumber,\r\n internationalNumber: `+${this.selectedCountry.dialCode}${this.phoneNumber}`\r\n };\r\n this.notifyChange(value);\r\n }\r\n\r\n private openDropdown(): void {\r\n if (!this.dropdownTemplate) {\r\n return;\r\n }\r\n\r\n const trigger = this.host.nativeElement.querySelector('.fakeinput') as HTMLElement | null;\r\n const width = trigger?.getBoundingClientRect().width ?? undefined;\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(trigger ?? this.host.nativeElement)\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n width,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition()\r\n });\r\n\r\n const portal = new TemplatePortal(this.dropdownTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.filteredCountries = [...this.countries];\r\n this.dropdownOpen = true;\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeDropdown());\r\n this.overlayRef.keydownEvents().subscribe(event => {\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.closeDropdown();\r\n }\r\n });\r\n\r\n setTimeout(() => this.searchInput?.nativeElement.focus());\r\n }\r\n\r\n private closeDropdown(): void {\r\n this.dropdownOpen = false;\r\n this.resetSearch();\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = undefined;\r\n }\r\n }\r\n\r\n private resetSearch(): void {\r\n this.searchTerm = '';\r\n this.filteredCountries = [...this.countries];\r\n }\r\n\r\n private resetCountryLists(): void {\r\n this.filteredCountries = [...this.countries];\r\n this.selectedCountry = this.getDefaultCountry();\r\n }\r\n\r\n private getDefaultCountry(): PhoneCountry {\r\n const preferred = this.preferredCountries\r\n .map(code => this.countries.find(country => country.iso2 === code))\r\n .find((country): country is PhoneCountry => !!country);\r\n\r\n return preferred ?? this.countries[0];\r\n }\r\n\r\n private parseStringValue(value: string): UicPhoneInputValue | null {\r\n const digits = value.replace(/\\D/g, '');\r\n if (!digits) return null;\r\n\r\n const matchedCountry = this.findCountryByPrefix(digits) ?? this.getDefaultCountry();\r\n const nationalNumber = digits.startsWith(matchedCountry.dialCode)\r\n ? digits.slice(matchedCountry.dialCode.length)\r\n : digits;\r\n\r\n return {\r\n countryIso2: matchedCountry.iso2,\r\n dialCode: matchedCountry.dialCode,\r\n nationalNumber,\r\n internationalNumber: `+${matchedCountry.dialCode}${nationalNumber}`\r\n };\r\n }\r\n\r\n private findCountryByPrefix(number: string): PhoneCountry | undefined {\r\n return this.countries.reduce<PhoneCountry | undefined>((best, country) => {\r\n if (!number.startsWith(country.dialCode)) return best;\r\n if (!best || country.dialCode.length > best.dialCode.length) {\r\n return country;\r\n }\r\n return best;\r\n }, undefined);\r\n }\r\n\r\n private propagateNormalizedValue(value: PhoneInputModel): void {\r\n if (typeof value === 'string') return;\r\n\r\n this.value = value;\r\n this.valueChange.emit(value);\r\n\r\n if (this.changeRegistered) {\r\n this.onChange(value);\r\n this.pendingNormalizedValue = null;\r\n } else {\r\n this.pendingNormalizedValue = value;\r\n }\r\n }\r\n}\r\n","\r\n<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n <div\r\n class=\"fakeinput phone-input\"\r\n [ngClass]=\"{\r\n errorinput: error,\r\n disabledinput: disabled,\r\n 'loading-input': loading,\r\n open: dropdownOpen\r\n }\"\r\n >\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon {{ internalIcon }}\"></i>\r\n }\r\n \r\n <button\r\n type=\"button\"\r\n class=\"phone-input__selector\"\r\n (click)=\"toggleDropdown()\"\r\n [disabled]=\"disabled || loading\"\r\n aria-haspopup=\"listbox\"\r\n [attr.aria-expanded]=\"dropdownOpen\"\r\n [attr.aria-controls]=\"dropdownOpen ? dropdownId : null\"\r\n [attr.aria-label]=\"selectedCountry.name + ' codigo ' + selectedCountry.dialCode\"\r\n >\r\n <img\r\n class=\"phone-input__flag\"\r\n [src]=\"getFlagUrl(selectedCountry.iso2)\"\r\n [alt]=\"selectedCountry.name\"\r\n />\r\n <i class=\"ri-arrow-down-s-line phone-input__chevron\" aria-hidden=\"true\"></i>\r\n </button>\r\n <div class=\"phone-input__divider\" aria-hidden=\"true\"></div>\r\n <div class=\"phone-input__dial\">+{{ selectedCountry.dialCode }}</div>\r\n \r\n \r\n <input\r\n type=\"tel\"\r\n class=\"phone-input__field\"\r\n [attr.placeholder]=\"placeholder\"\r\n [disabled]=\"disabled || loading\"\r\n inputmode=\"tel\"\r\n [value]=\"phoneNumber\"\r\n (input)=\"onNumberInput($event)\"\r\n (blur)=\"onBlur()\"\r\n />\r\n </div>\r\n</ui-input-wrapper>\r\n\r\n<ng-template #dropdownTemplate>\r\n <datalist class=\"phone-input__dropdown\" [attr.id]=\"dropdownId\">\r\n <div class=\"phone-input__search\">\r\n <i class=\"ri-search-line\"></i>\r\n <input\r\n #searchInput\r\n type=\"text\"\r\n [value]=\"searchTerm\"\r\n (input)=\"onSearchChange($event)\"\r\n placeholder=\"Buscar pais o codigo\"\r\n autocomplete=\"off\"\r\n />\r\n @if (searchTerm) {\r\n <button type=\"button\" class=\"phone-input__clear\" (click)=\"clearSearch()\" aria-label=\"Limpiar busqueda\">\r\n <i class=\"ri-close-line\"></i>\r\n </button>\r\n }\r\n </div>\r\n\r\n <div class=\"phone-input__list\">\r\n @for (country of filteredCountries; track country.iso2) {\r\n <button\r\n type=\"button\"\r\n class=\"phone-input__option\"\r\n (click)=\"selectCountry(country)\"\r\n [attr.aria-selected]=\"country.iso2 === selectedCountry.iso2\"\r\n [attr.data-iso]=\"country.iso2\"\r\n [attr.title]=\"country.name + ' +' + country.dialCode\"\r\n [attr.aria-label]=\"country.name + ' +' + country.dialCode\"\r\n >\r\n <img\r\n class=\"phone-input__flag\"\r\n [src]=\"getFlagUrl(country.iso2)\"\r\n [alt]=\"country.name\"\r\n />\r\n {{country.name}}\r\n <span class=\"phone-input__dial\">(+{{ country.dialCode }})</span>\r\n </button>\r\n }\r\n\r\n @if (filteredCountries.length === 0) {\r\n <div class=\"phone-input__empty\">No se encontraron resultados</div>\r\n }\r\n </div>\r\n </datalist>\r\n</ng-template>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, forwardRef, Input, ViewChild } from '@angular/core';\r\nimport { ButtonColor, UicButtonComponent } from '../../button/button.component';\r\nimport { createValueAccessor } from '../../dynamic-form/base-value-accessot';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { InputWrapperComponent } from '../input-wrapper/input-wrapper.component';\r\n\r\nexport type UicFileInputValue = { name: string; blob?: Blob, path?:string };\r\n\r\nconst base = createValueAccessor<UicFileInputValue[]>();\r\n\r\n@Component({\r\n selector: 'ui-file-input',\r\n imports: [CommonModule,UicButtonComponent, InputWrapperComponent],\r\n templateUrl: './file-input.component.html',\r\n styleUrls: ['../input.component.scss','./file-input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicFileInputComponent),\r\n multi: true\r\n }\r\n ],\r\n})\r\nexport class UicFileInputComponent extends base {\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n @Input() internalIcon = ''; //Icono interno\r\n @Input() internalIconColor: ButtonColor = 'black'; //Icono interno\r\n @Input() size: 's' | 'm' | 'l' = 'm'; // tamaño general del input\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n // FUNCTIONS\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n @Input() multy = false;\r\n @Input() fileTypes: string[] | string | null = null;\r\n\r\n @ViewChild('fileInput') private fileInput?: ElementRef<HTMLInputElement>;\r\n\r\n override value: UicFileInputValue[] = [];\r\n files: UicFileInputValue[] = [];\r\n isDragging = false;\r\n\r\n get acceptAttribute(): string | null {\r\n if (!this.fileTypes) {\r\n return null;\r\n }\r\n return Array.isArray(this.fileTypes) ? this.fileTypes.join(',') : this.fileTypes;\r\n }\r\n\r\n openFileBrowser(): void {\r\n if (this.disabled || this.loading) {\r\n return;\r\n }\r\n this.fileInput?.nativeElement.click();\r\n }\r\n\r\n onNativeInputChange(event: Event): void {\r\n const input = event.target as HTMLInputElement | null;\r\n if (!input || !input.files || this.disabled || this.loading) {\r\n return;\r\n }\r\n\r\n const selectedFiles = Array.from(input.files);\r\n this.processIncomingFiles(selectedFiles);\r\n\r\n input.value = '';\r\n }\r\n\r\n removeFile(index: number): void {\r\n if (this.disabled || this.loading) {\r\n return;\r\n }\r\n const updated = this.files.filter((_, i) => i !== index);\r\n this.applyFiles(updated);\r\n }\r\n\r\n onDragOver(event: DragEvent): void {\r\n if (this.disabled || this.loading) {\r\n return;\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (event.dataTransfer) {\r\n event.dataTransfer.dropEffect = 'copy';\r\n }\r\n this.isDragging = true;\r\n }\r\n\r\n onDragLeave(event: DragEvent): void {\r\n if (this.disabled || this.loading) {\r\n return;\r\n }\r\n if (event.target === event.currentTarget) {\r\n this.isDragging = false;\r\n }\r\n }\r\n\r\n getIcon(file: UicFileInputValue): string {\r\n const mime = file.blob?.type?.toLowerCase() ?? '';\r\n const extension = file.name.split('.').pop()?.toLowerCase() ?? '';\r\n\r\n if (mime.startsWith('image/') || ['png', 'jpg', 'jpeg', 'gif', 'bmp', 'webp', 'svg'].includes(extension)) {\r\n return 'ri-file-image-line';\r\n }\r\n\r\n if (this.isExcelType(mime, extension)) {\r\n return 'ri-file-excel-line';\r\n }\r\n\r\n if (this.isWordType(mime, extension)) {\r\n return 'ri-file-word-line';\r\n }\r\n\r\n return 'ri-file-line';\r\n }\r\n\r\n onDrop(event: DragEvent): void {\r\n if (this.disabled || this.loading) {\r\n return;\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDragging = false;\r\n\r\n const files = event.dataTransfer?.files;\r\n if (!files || files.length === 0) {\r\n return;\r\n }\r\n\r\n this.processIncomingFiles(Array.from(files));\r\n }\r\n\r\n override writeValue(value: UicFileInputValue[] | null): void {\r\n const normalized = Array.isArray(value)\r\n ? value\r\n .filter((item): item is UicFileInputValue => !!item && !!item.name && !!item.blob)\r\n .map((item) => ({\r\n name: item.name,\r\n blob: item.blob,\r\n }))\r\n : [];\r\n this.files = normalized;\r\n super.writeValue(normalized as UicFileInputValue[]);\r\n }\r\n\r\n private processIncomingFiles(fileList: File[]): void {\r\n if (!fileList.length) {\r\n return;\r\n }\r\n\r\n const allowedFiles = this.filterAllowedFiles(fileList);\r\n if (!allowedFiles.length) {\r\n return;\r\n }\r\n\r\n const mapped = allowedFiles.map<UicFileInputValue>((file) => ({\r\n name: file.name,\r\n blob: file,\r\n }));\r\n\r\n const updated = this.multy ? this.mergeFiles(mapped) : mapped.slice(0, 1);\r\n this.applyFiles(updated);\r\n }\r\n\r\n private mergeFiles(newFiles: UicFileInputValue[]): UicFileInputValue[] {\r\n return [...this.files, ...newFiles];\r\n }\r\n\r\n private applyFiles(files: UicFileInputValue[], emit = true): void {\r\n this.files = files;\r\n if (emit) {\r\n const payload = files.map((file) => ({\r\n name: file.name,\r\n blob: file.blob,\r\n }));\r\n this.notifyChange(payload);\r\n }\r\n }\r\n\r\n private filterAllowedFiles(files: File[]): File[] {\r\n if (!this.acceptAttribute) {\r\n return files;\r\n }\r\n\r\n const acceptTokens = this.acceptAttribute\r\n .split(',')\r\n .map((token) => token.trim().toLowerCase())\r\n .filter(Boolean);\r\n\r\n if (!acceptTokens.length) {\r\n return files;\r\n }\r\n\r\n return files.filter((file) => this.matchesAcceptTokens(file, acceptTokens));\r\n }\r\n\r\n private matchesAcceptTokens(file: File, tokens: string[]): boolean {\r\n const mime = file.type.toLowerCase();\r\n const extension = file.name.includes('.') ? `.${file.name.split('.').pop()!.toLowerCase()}` : '';\r\n\r\n return tokens.some((token) => {\r\n if (!token) {\r\n return false;\r\n }\r\n\r\n if (token.endsWith('/*')) {\r\n const prefix = token.slice(0, -1);\r\n return mime.startsWith(prefix);\r\n }\r\n\r\n if (token.startsWith('.')) {\r\n return token === extension;\r\n }\r\n\r\n return token === mime;\r\n });\r\n }\r\n\r\n private isExcelType(mime: string, extension: string): boolean {\r\n const normalizedExtensionMatches = ['xls', 'xlsx', 'xlsm', 'xlsb'].includes(extension);\r\n return (\r\n mime === 'application/vnd.ms-excel' ||\r\n mime === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ||\r\n mime === 'application/vnd.ms-excel.sheet.macroenabled.12' ||\r\n mime === 'application/vnd.ms-excel.sheet.binary.macroenabled.12' ||\r\n mime.includes('spreadsheetml') ||\r\n normalizedExtensionMatches\r\n );\r\n }\r\n\r\n private isWordType(mime: string, extension: string): boolean {\r\n const normalizedExtensionMatches = ['doc', 'docx', 'docm', 'dot', 'dotx'].includes(extension);\r\n return (\r\n mime === 'application/msword' ||\r\n mime === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' ||\r\n mime === 'application/vnd.ms-word.document.macroenabled.12' ||\r\n mime.includes('wordprocessingml') ||\r\n normalizedExtensionMatches\r\n );\r\n }\r\n\r\n downloadFile(item:UicFileInputValue){\r\n \r\n }\r\n}\r\n","\r\n<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n <div class=\"fileinput\" [ngClass]=\"{'errorinput':error, 'disabledinput':disabled, 'dragging':isDragging}\">\r\n <input\r\n #fileInput\r\n class=\"fileinput-native\"\r\n type=\"file\"\r\n (change)=\"onNativeInputChange($event)\"\r\n [attr.multiple]=\"multy ? '' : null\"\r\n [attr.accept]=\"acceptAttribute\"\r\n [disabled]=\"disabled || loading\"\r\n />\r\n @if (internalIcon) {\r\n <i class=\"input-internalicon {{internalIcon}}\" ></i>\r\n }\r\n <div class=\"fileinput-content\" >\r\n @if (!disabled && !loading) {\r\n <ui-button\r\n type=\"bordered\"\r\n color=\"black\"\r\n size=\"s\"\r\n (click)=\"openFileBrowser()\"\r\n >Seleccionar</ui-button>\r\n }\r\n <div\r\n class=\"fileinput-reel\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n >\r\n @if (!files.length) {\r\n <div class=\"fileinput-empty\">\r\n Aun no hay archivos\r\n </div>\r\n } @else {\r\n @for (item of files; track $index) {\r\n <div class=\"fileinput-item\">\r\n <i class=\"fileinput-item__icon ri {{ getIcon(item) }}\" aria-hidden=\"true\"></i>\r\n <span (click)=\"downloadFile(item)\" class=\"fileinput-item__name\">{{item.name}}</span>\r\n <ui-button\r\n size=\"s\"\r\n [iconOnly]=\"true\"\r\n type=\"ghost\"\r\n icon=\"ri-close-line\"\r\n (click)=\"removeFile($index)\"\r\n [disabled]=\"disabled || loading\"\r\n ></ui-button>\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n</ui-input-wrapper>","import { Alert } from './alert.model';\r\n\r\nlet nextId = 1;\r\n\r\nexport function createSuccessAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n icon:'ri-check-line',\r\n type: 'success',\r\n duration: 3000,\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createErrorAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n type: 'error',\r\n icon:'ri-error-warning-line',\r\n duration: 5000,\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createWarningAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n type: 'warning',\r\n icon:'ri-alarm-warning-line',\r\n duration: 4000,\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createInfoAlert(\r\n message: string,\r\n options?: Partial<Alert>\r\n): Alert {\r\n return {\r\n id: nextId++,\r\n message,\r\n icon:'ri-information-2-line',\r\n type: 'info',\r\n duration: 3000,\r\n ...options,\r\n };\r\n}","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Alert, AlertConfigParams } from '../components/push-alerts/alert.model';\r\nimport { createErrorAlert, createSuccessAlert, createWarningAlert } from '../components/push-alerts/alert.helpers';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UicPushAlertService {\r\n\r\n autoIncId = 0;\r\n private readonly alerts$ = new Subject<Alert>();\r\n\r\n get stream() {\r\n return this.alerts$.asObservable();\r\n }\r\n\r\n show(alertData:AlertConfigParams) {\r\n this.autoIncId++;\r\n const alert: Alert = {...alertData,id:this.autoIncId};\r\n this.alerts$.next( alert );\r\n }\r\n\r\n success(message: string, options?: Partial<Alert>) {\r\n this.show(createSuccessAlert(message, options));\r\n }\r\n\r\n error(message: string, options?: Partial<Alert>) {\r\n this.show(createErrorAlert(message, options));\r\n }\r\n\r\n warning(message: string, options?: Partial<Alert>) {\r\n this.show(createWarningAlert(message, options));\r\n }\r\n\r\n}\r\n","import { Component, Input, SimpleChanges, NgZone, inject } from '@angular/core';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FormField } from '../form.models';\r\nimport { UicSelectComponent } from '../../inputs/select/select.component';\r\nimport { UicInputComponent } from '../../inputs/input/input.component';\r\nimport { UicCheckboxComponent } from '../../inputs/checkbox/checkbox.component';\r\nimport { UicRadioComponent } from '../../inputs/ui-radio/ui-radio.component';\r\nimport { UicSliderComponent } from '../../inputs/ui-slider/ui-slider.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UicDatePickerComponent } from '../../inputs/date-picker/date-picker.component';\r\nimport { UicPoolOptionsComponent } from '../../pool-options/pool-options.component';\r\nimport { UicSearcherComponent } from '../../inputs/uic-searcher/uic-searcher.component';\r\nimport { UicMultySelectComponent } from '../../inputs/multy-select/multy-select.component';\r\nimport { UicTimePickerComponent } from '../../inputs/time-picker/time-picker.component';\r\nimport { UicPhoneInputComponent } from '../../inputs/phone-input/phone-input.component';\r\nimport { UicFileInputComponent } from '../../inputs/file-input/file-input.component';\r\nimport { ButtonColor, UicButtonComponent } from '../../button/button.component';\r\nimport { UicPushAlertService } from '../../../services/push-alert.service';\r\n\r\n@Component({\r\n selector: 'ui-dynamic-form',\r\n imports: [CommonModule, \r\n UicDatePickerComponent,\r\n ReactiveFormsModule, \r\n UicSliderComponent, \r\n UicButtonComponent,\r\n UicPoolOptionsComponent,\r\n UicTimePickerComponent,\r\n UicRadioComponent,\r\n UicSearcherComponent,\r\n UicMultySelectComponent,\r\n UicFileInputComponent,\r\n UicSelectComponent, \r\n UicInputComponent, \r\n UicCheckboxComponent,\r\n UicRadioComponent,\r\n UicPhoneInputComponent,\r\n FormsModule],\r\n templateUrl: './dynamic-form.component.html',\r\n styleUrl: './dynamic-form.component.scss'\r\n})\r\nexport class UicDynamicFormComponent {\r\n @Input() fields: FormField[] = [];\r\n @Input({ required: true }) form!: FormGroup;\r\n @Input() disabled = false;\r\n @Input() voiceToTextSilenceMs = 1000;\r\n\r\n private readonly alertS = inject(UicPushAlertService)\r\n\r\n colorToIcon: Record<string, string> = {\r\n red: 'ri-error-warning-line',\r\n yellow: 'ri-error-warning-line',\r\n green: 'ri-checkbox-circle-line',\r\n };\r\n \r\n flag = false;\r\n @Input() cols = 2;\r\n listeningField: string | null = null;\r\n\r\n constructor(private ngZone: NgZone) {}\r\n\r\n // MANEJO DE ERRORES\r\n getErrorMessages(field: FormField): string[] {\r\n const control = this.form.get(field.name);\r\n if (!control?.errors) return [];\r\n if (!(control.touched || control.dirty)) return [];\r\n\r\n return Object.keys(control.errors).map(errorKey => {\r\n const error = control.errors?.[errorKey];\r\n const mapper = this.errorMessages[errorKey];\r\n return mapper ? mapper(error, field) : `${field.label ?? field.name} es inválido.`;\r\n });\r\n }\r\n\r\n isListening(fieldName: string): boolean {\r\n return this.listeningField === fieldName;\r\n }\r\n\r\n private readonly errorMessages: Record<string, (error: any, field: FormField) => string> = {\r\n required: (_err, field) => `${field.label ?? field.name} es obligatorio.`,\r\n min: (err, field) => `${field.label ?? field.name} debe ser mayor o igual a ${err.min}.`,\r\n max: (err, field) => `${field.label ?? field.name} debe ser menor o igual a ${err.max}.`,\r\n minlength: (err, field) => `${field.label ?? field.name} debe tener al menos ${err.requiredLength} caracteres.`,\r\n maxlength: (err, field) => `${field.label ?? field.name} no puede superar ${err.requiredLength} caracteres.`,\r\n pattern: (_err, field) => `${field.label ?? field.name} no tiene el formato correcto.`\r\n };\r\n\r\n getInputColor(\r\n field: FormField,\r\n value: string\r\n ): ButtonColor {\r\n const scale = field.internalColorScale;\r\n const cv = +value;\r\n const order = field.internalColorScaleOrder??'asc';\r\n\r\n if (!Array.isArray(scale) || scale.length <= 1 || isNaN(cv)) {\r\n return field.internalIconColor || 'black';\r\n }\r\n\r\n const sorted = [...scale].sort((a, b) => a - b);\r\n const len = sorted.length;\r\n\r\n if (len === 2) {\r\n const [min, max] = sorted;\r\n return cv > min && cv <= max ? 'green' : 'red';\r\n }\r\n\r\n const colorSchemes:any = {\r\n asc: {\r\n 3: ['red', 'green'],\r\n 4: ['red', 'yellow', 'green'],\r\n },\r\n desc: {\r\n 3: ['green', 'red'],\r\n 4: ['green', 'yellow', 'red'],\r\n },\r\n } as const;\r\n\r\n const colors = colorSchemes[order][len] || [];\r\n for (let i = 0; i < colors.length; i++) {\r\n if (cv > sorted[i] && cv <= sorted[i + 1]) return colors[i];\r\n }\r\n\r\n return 'black';\r\n }\r\n\r\n getIconByColor(field:FormField, color:string){\r\n if ( !field.internalIcon && field.internalColorScale && field.internalColorScale.length > 1 )\r\n return this.colorToIcon[color];\r\n else return \"\";\r\n }\r\n \r\n private recognition: any = null;\r\n private voiceStopTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n private clearVoiceStopTimer() {\r\n if (this.voiceStopTimer) {\r\n clearTimeout(this.voiceStopTimer);\r\n this.voiceStopTimer = null;\r\n }\r\n }\r\n\r\n private scheduleVoiceStop(recognition: any) {\r\n this.clearVoiceStopTimer();\r\n this.voiceStopTimer = setTimeout(() => recognition.stop?.(), this.voiceToTextSilenceMs);\r\n }\r\n\r\n voiceToText(target: HTMLTextAreaElement, fieldName: string){\r\n if (typeof window === 'undefined') return;\r\n\r\n const SpeechRecognitionCtor =\r\n (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\r\n\r\n if (!SpeechRecognitionCtor) {\r\n this.alertS.show({\r\n type:'warning',\r\n icon: 'ri-bug-line',\r\n title:'Incompatibilidad de navegador',\r\n message:'Este navegador no sorporta esta característica.'\r\n });\r\n return;\r\n }\r\n\r\n if (this.recognition) {\r\n this.recognition.abort?.();\r\n this.recognition = null;\r\n this.listeningField = null;\r\n this.clearVoiceStopTimer();\r\n }\r\n\r\n const recognition = new SpeechRecognitionCtor();\r\n recognition.lang = 'es-ES';\r\n recognition.interimResults = false;\r\n recognition.maxAlternatives = 1;\r\n recognition.continuous = true;\r\n\r\n recognition.onstart = () => {\r\n this.ngZone.run(() => {\r\n this.listeningField = fieldName;\r\n });\r\n this.scheduleVoiceStop(recognition);\r\n };\r\n\r\n recognition.onresult = (event: any) => {\r\n const transcript = event?.results?.[0]?.[0]?.transcript ?? '';\r\n if (!transcript) return;\r\n\r\n const currentValue = target.value ?? '';\r\n const needsSpace =\r\n currentValue.length > 0 &&\r\n !currentValue.endsWith(' ') &&\r\n !transcript.startsWith(' ');\r\n const updatedValue = `${currentValue}${needsSpace ? ' ' : ''}${transcript}`;\r\n\r\n target.value = updatedValue;\r\n target.dispatchEvent(new Event('input', { bubbles: true }));\r\n\r\n const control = this.form.get(fieldName);\r\n if (control) {\r\n this.ngZone.run(() => {\r\n control.setValue(updatedValue);\r\n control.markAsDirty();\r\n control.markAsTouched();\r\n });\r\n }\r\n this.scheduleVoiceStop(recognition);\r\n };\r\n\r\n recognition.onspeechstart = () => {\r\n this.clearVoiceStopTimer();\r\n };\r\n\r\n recognition.onspeechend = () => {\r\n this.scheduleVoiceStop(recognition);\r\n };\r\n\r\n recognition.onerror = (event: any) => {\r\n this.ngZone.run(() => {\r\n console.error('Error al intentar dictado por voz', event);\r\n this.listeningField = null;\r\n });\r\n this.clearVoiceStopTimer();\r\n };\r\n\r\n recognition.onend = () => {\r\n this.ngZone.run(() => {\r\n this.recognition = null;\r\n this.listeningField = null;\r\n });\r\n this.clearVoiceStopTimer();\r\n };\r\n\r\n this.recognition = recognition;\r\n target.focus();\r\n this.ngZone.run(() => {\r\n this.listeningField = fieldName;\r\n });\r\n recognition.start();\r\n }\r\n \r\n}\r\n\r\n","<div class=\"form\" [ngStyle]=\"{'--cols': cols, '--min': '180px'}\" [formGroup]=\"form\">\r\n @for (field of fields; track field.name) {\r\n <div class=\"col-span-{{field.colSpan || 1}}\" [class.new-line]=\"field.newLine\">\r\n \r\n @if ( ['text','number'].includes(field.type) ) {\r\n @let currentValue = form.get(field.name)?.value ?? '';\r\n @let inputColor = getInputColor(field, currentValue);\r\n <ui-input \r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [icon]=\"field.icon??''\"\r\n [disabled]=\"!!form.get(field.name)?.disabled\"\r\n [internalIconColor]=\"inputColor\"\r\n [internalIcon]=\"field.internalIcon || (currentValue != '' ? getIconByColor(field, inputColor) : '')\"\r\n [loading]=\"field.loading??false\"\r\n [tip]=\"field.tip??''\" >\r\n <input #inp\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [type]=\"field.type\"\r\n [step]=\"field.step\"\r\n [minLength]=\"field.minLength||null\"\r\n [maxlength]=\"field.maxLength||null\"\r\n [placeholder]=\"field.placeholder??field.label\"/>\r\n @if (field.maxLength && field.showCounter) {\r\n <span counter> {{inp.value.length}} /{{field.maxLength}}</span>\r\n }\r\n </ui-input>\r\n }\r\n @if ( field.type === 'textarea' ) {\r\n <ui-input \r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [icon]=\"field.icon??''\"\r\n [disabled]=\"!!form.get(field.name)?.disabled\"\r\n [internalIcon]=\"field.internalIcon??''\"\r\n [internalIconColor]=\"field.internalIconColor??'black'\"\r\n [loading]=\"field.loading??false\"\r\n [tip]=\"field.tip??''\" >\r\n <textarea #ta\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n exp\r\n [minLength]=\"field.minLength||null\"\r\n [maxlength]=\"field.maxLength||null\"\r\n [placeholder]=\"field.placeholder??field.label\"\r\n cols=\"4\"\r\n ></textarea>\r\n @if (field.voiceToTextEnabled && !form.get(field.name)?.disabled) {\r\n @let listening = isListening(field.name);\r\n <ui-button\r\n [disabled]=\"listening\"\r\n style=\"margin-bottom: 2px;\"\r\n (click)=\"voiceToText(ta, field.name)\"\r\n [icon]=\"listening?'ri-mic-fill':'ri-mic-line'\"\r\n [type]=\"listening?'filled':'bordered'\"\r\n size=\"s\"\r\n [iconOnly]=\"true\"\r\n ></ui-button>\r\n }\r\n @if (field.maxLength && field.showCounter) {\r\n <span counter> {{ta.value.length}} /{{field.maxLength}}</span>\r\n }\r\n </ui-input>\r\n }\r\n @if ( field.type === 'phone' ) {\r\n <ui-phone-input \r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [icon]=\"field.icon??''\"\r\n [internalIcon]=\"field.internalIcon??''\"\r\n [internalIconColor]=\"field.internalIconColor??'black'\"\r\n [loading]=\"field.loading??false\"\r\n [tip]=\"field.tip??''\" \r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [placeholder]=\"field.placeholder||field.label||''\"\r\n >\r\n </ui-phone-input>\r\n }\r\n @else if (field.type === 'date') {\r\n <ui-date-picker\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [internalIcon]=\"field.internalIcon??''\"\r\n [internalIconColor]=\"field.internalIconColor??'black'\"\r\n [tip]=\"field.tip??''\"\r\n [justMonth]=\"!!field.monthMode\"\r\n [min]=\"field.minDate??''\"\r\n [max]=\"field.maxDate??''\"\r\n [monthDay]=\"field.monthDay||'first'\"\r\n [formControlName]=\"field.name\"\r\n ></ui-date-picker>\r\n }\r\n @else if (field.type === 'time') {\r\n <ui-time-picker\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [internalIcon]=\"field.internalIcon??''\"\r\n [internalIconColor]=\"field.internalIconColor??'black'\"\r\n [tip]=\"field.tip??''\"\r\n [interval]=\"field.timeInterval??5\"\r\n [formControlName]=\"field.name\"\r\n ></ui-time-picker>\r\n }\r\n @else if (field.type === 'select') {\r\n <ui-select\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [internalIcon]=\"field.internalIcon??''\"\r\n [internalIconColor]=\"field.internalIconColor??'black'\"\r\n [loading]=\"field.loading??false\"\r\n [tip]=\"field.tip??''\"\r\n [formControlName]=\"field.name\"\r\n [options]=\"field.options || []\"\r\n ></ui-select>\r\n }\r\n @else if (field.type === 'multyselect') {\r\n <ui-multy-select\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [loading]=\"field.loading??false\"\r\n [internalIcon]=\"field.internalIcon??''\"\r\n [internalIconColor]=\"field.internalIconColor??'black'\"\r\n [tip]=\"field.tip??''\"\r\n [formControlName]=\"field.name\"\r\n [options]=\"field.options || []\"\r\n ></ui-multy-select>\r\n }\r\n @else if (field.type === 'searcher') {\r\n <ui-searcher\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [icon]=\"field.icon??''\"\r\n [loading]=\"field.loading??false\"\r\n [tip]=\"field.tip??''\"\r\n [searchFn]=\"field.searchFn\"\r\n [itemDisplayFn]=\"field.searchDisplayFn\"\r\n [itemIsEnabledFn]=\"field.searchIsEnabledFn\"\r\n [placeholder]=\"field.placeholder??'Buscar...'\"\r\n [error]=\"getErrorMessages(field)[0]\"\r\n ></ui-searcher>\r\n }\r\n @else if (field.type === 'file') {\r\n <ui-file-input\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [loading]=\"field.loading??false\"\r\n [internalIcon]=\"field.internalIcon??''\"\r\n [internalIconColor]=\"field.internalIconColor??'black'\"\r\n [multy]=\"field.multyEnabled??false\"\r\n [tip]=\"field.tip??''\"\r\n [fileTypes]=\"field.fileTypes??null\"\r\n [formControlName]=\"field.name\"\r\n ></ui-file-input>\r\n }\r\n @else if ( ['checkbox','switch'].includes(field.type)) {\r\n <ui-checkbox\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [placeholder]=\"field.placeholder??''\"\r\n [tip]=\"field.tip??''\"\r\n [type]=\"field.type === 'checkbox' ? 'checkbox' : 'switch'\"\r\n ></ui-checkbox>\r\n }\r\n @else if (field.type === 'radio') {\r\n <ui-radio\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [tip]=\"field.tip??''\"\r\n [loading]=\"field.loading??false\"\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [options]=\"field.options || []\"\r\n ></ui-radio>\r\n }\r\n @else if (field.type === 'slider') {\r\n <ui-slider\r\n [min]=\"field.min??0\"\r\n [max]=\"field.max??100\"\r\n [step]=\"field.sliderInterval??1\"\r\n [markerCount]=\"field.sliderMarks??5\"\r\n [id]=\"field.name\"\r\n [formControlName]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [tip]=\"field.tip??''\"\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n ></ui-slider>\r\n }\r\n @else if (field.type === 'pool') {\r\n <ui-pool-options\r\n [error]=\"getErrorMessages(field)[0]\"\r\n [label]=\"field.label + (field.required ? ' *' : '')\"\r\n [id]=\"field.name\"\r\n [icon]=\"field.icon??''\"\r\n [loading]=\"field.loading??false\"\r\n [multy]=\"field.multyEnabled??false\"\r\n [tip]=\"field.tip??''\"\r\n [listViewTitle]=\"field.poolTitle??'Elementos seleccionados'\"\r\n [enabledListView]=\"field.poolEnabledListView||false\"\r\n [formControlName]=\"field.name\"\r\n [options]=\"field.options || []\"\r\n ></ui-pool-options>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-skeleton-loader',\r\n imports: [ CommonModule ],\r\n templateUrl: './skeleton-loader.component.html',\r\n styleUrl: './skeleton-loader.component.scss'\r\n})\r\nexport class UicSkeletonLoaderComponent {\r\n @Input() inputs: number = 3; \r\n @Input() cols: number = 3; \r\n\r\n get gridStyle() {\r\n return {\r\n 'grid-template-columns': `repeat(${this.cols}, 1fr)`\r\n };\r\n }\r\n}\r\n","<div class=\"skeleton-form\" [ngStyle]=\"gridStyle\">\r\n @for (r of [].constructor(inputs); track $index) {\r\n <div class=\"skeleton-input-container\">\r\n <div class=\"skeleton-gradient skeleton-label\"></div>\r\n <div class=\"skeleton-gradient skeleton-input\"></div>\r\n </div>\r\n }\r\n</div>","import { Component, EventEmitter, inject, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { FormBlock, FormField, FormResult, FormSchema, uicFormValuesRecord } from '../form.models';\r\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { UicDynamicFormComponent } from '../form/dynamic-form.component';\r\nimport { UicSkeletonLoaderComponent } from '../../skeleton-loader/skeleton-loader.component';\r\nimport { AppSelectOption } from '../../inputs/select/select.component';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\n\r\n@Component({\r\n selector: 'ui-form-wrapper',\r\n imports: [UicDynamicFormComponent, \r\n UicSkeletonLoaderComponent,\r\n UicButtonComponent,\r\n ReactiveFormsModule],\r\n templateUrl: './form-wrapper.component.html',\r\n styleUrl: './form-wrapper.component.scss'\r\n})\r\nexport class UicFormWrapperComponent implements OnChanges {\r\n \r\n private readonly fb = inject(FormBuilder);\r\n form: FormGroup = this.fb.group({});\r\n currentStep = 0;\r\n \r\n @Input() schema!: FormSchema;\r\n @Input() externalData: Record<string, AppSelectOption[]> = {};\r\n @Input() loading = false;\r\n @Input() disabled = false;\r\n @Input() showButtons = false;\r\n @Input() fillSelects = false;\r\n @Input() initialValues: uicFormValuesRecord = {};\r\n \r\n @Output() formSubmit = new EventEmitter<FormResult>();\r\n @Output() formChange = new EventEmitter<uicFormValuesRecord>();\r\n\r\n private readonly destroy$ = new Subject<void>();\r\n\r\n ngOnInit(){\r\n this.buildForm();\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {;\r\n if (changes['disabled'] && !changes[\"disabled\"].firstChange) {\r\n this.updateDisabledState();\r\n }\r\n if (changes['schema'] && !changes[\"schema\"].firstChange) {\r\n this.buildForm();\r\n this.updateExtenalData();\r\n }\r\n if (changes['externalData'] ) {\r\n this.updateExtenalData(); \r\n }\r\n if (changes['initialValues'] && !changes[\"initialValues\"].firstChange) {\r\n this.buildForm()\r\n this.updateExtenalData(); \r\n }\r\n }\r\n\r\n\r\n private buildForm() {\r\n if (this.form) {\r\n this.form.valueChanges?.subscribe().unsubscribe(); // Desuscribirse de valueChanges anteriores\r\n }\r\n const fields = this.collectAllFields();\r\n const newForm = this.fb.group({});\r\n fields.forEach(f => {\r\n const validators = this.mapValidatorsFromField(f);\r\n let initial = this.initialValues[f.name] ?? null;\r\n if ( ( f.type === 'checkbox' || f.type === 'switch' ) && initial == null ) initial = false; // \r\n if ( f.type === 'slider' && initial == null ) initial = f.min ?? 0;\r\n if ( this.fillSelects && f.type === 'select' && initial == null && f.options && f.options.length>0) initial = f.options[0].id;\r\n const controlState = {\r\n value: initial,\r\n disabled: !!f.disabled \r\n };\r\n newForm.addControl( f.name , this.fb.control( controlState , validators ) );\r\n });\r\n newForm.valueChanges\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => this.handleFormChange());\r\n this.form = newForm;\r\n this.updateDisabledState();\r\n }\r\n \r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n private updateDisabledState() {\r\n if (!this.form) return;\r\n Object.keys(this.form.controls).forEach(key => {\r\n const control = this.form.get(key)!;\r\n const field = this.collectAllFields().find(f => f.name === key);\r\n\r\n if (this.disabled) {\r\n control.disable({ emitEvent: false });\r\n } else if (field?.disabled) {\r\n control.disable({ emitEvent: false });\r\n } else {\r\n control.enable({ emitEvent: false });\r\n }\r\n });\r\n }\r\n \r\n\r\n private updateExtenalData() {\r\n if ( !this.externalData || !this.schema?.blocks || Object.keys(this.externalData).length === 0 ) return;\r\n for (const block of this.schema.blocks) {\r\n block.fields = this.updateFieldOptions(block);\r\n }\r\n }\r\n\r\n private mapValidatorsFromField(f: FormField) {\r\n const validators = [];\r\n if (f.required) validators.push(Validators.required);\r\n if (typeof f.min === 'number') validators.push(Validators.min(f.min));\r\n if (typeof f.max === 'number') validators.push(Validators.max(f.max)); \r\n if (typeof f.maxLength === 'number') validators.push(Validators.maxLength(f.maxLength));\r\n if (typeof f.minLength === 'number') validators.push(Validators.minLength(f.minLength));\r\n if (f.pattern instanceof RegExp) validators.push(Validators.pattern(f.pattern));\r\n return validators;\r\n }\r\n\r\n // FUNCIONES INTERNAS \r\n handleSubmit() {\r\n let result:FormResult = {result:false, form:null};\r\n if (this.form.valid) {\r\n result = {result:true, form:this.form.getRawValue()};\r\n } else {\r\n this.form.markAllAsTouched();\r\n }\r\n this.formSubmit.emit(result);\r\n return result;\r\n }\r\n\r\n private handleFormChange() {\r\n this.formChange.emit(this.form.getRawValue());\r\n }\r\n\r\n // UTILITARIOS\r\n private updateFieldOptions(block: FormBlock): FormField[] {\r\n return block.fields.map(f => {\r\n if (f.type === 'select' || f.type == 'pool' || f.type == 'multyselect') {\r\n let options = f.options ?? []; \r\n Object.keys(this.externalData).forEach(key => {\r\n if (key === f.name) {\r\n options = this.externalData[key] ?? [];\r\n }\r\n });\r\n return { ...f, options: options };\r\n\r\n }\r\n return f;\r\n });\r\n }\r\n private collectAllFields(): FormField[] {\r\n if (!this.schema) return [];\r\n\r\n return (this.schema.blocks ?? []).flatMap(b => b.fields ?? []);\r\n }\r\n\r\n\r\n // FUNCIONES PÚBLICAS\r\n // ACTUALIZAR EL VALOR DE UN CAMPO\r\n updateFieldValue(name: string, value: any) {\r\n this.form.get(name)?.patchValue(value, { emitEvent: false });\r\n }\r\n\r\n updateFieldConfig(name:string, config:Omit<FormField,'name'|'type'>){\r\n if (!this.schema?.blocks?.length) return;\r\n\r\n for (const block of this.schema.blocks) {\r\n const index = block.fields.findIndex(field => field.name === name);\r\n if (index === -1) continue;\r\n\r\n const current = block.fields[index];\r\n const restConfig: Partial<FormField> = { ...(config ?? {}) };\r\n delete (restConfig as any).name;\r\n delete (restConfig as any).type;\r\n\r\n const updatedField: FormField = {\r\n ...current,\r\n ...restConfig,\r\n name: current.name,\r\n type: current.type,\r\n };\r\n\r\n block.fields[index] = updatedField;\r\n block.fields = [...block.fields];\r\n this.schema.blocks = [...this.schema.blocks];\r\n\r\n const control = this.form.get(name);\r\n if (control) {\r\n control.setValidators(this.mapValidatorsFromField(updatedField));\r\n control.updateValueAndValidity({ onlySelf: true, emitEvent: false });\r\n }\r\n\r\n return;\r\n }\r\n }\r\n\r\n // ACTUALIZAR EL ESTADO DE DISABLED DE UN CAMPO\r\n updateFieldDisabled(name: string, disabled: boolean): void {\r\n const control = this.form.get(name);\r\n if (!control) return;\r\n\r\n // Actualizar estado del control reactivo\r\n if (disabled) {\r\n control.disable({ emitEvent: false });\r\n } else {\r\n control.enable({ emitEvent: false });\r\n }\r\n \r\n if (this.updateSchemaField(name,{disabled},this.schema.blocks)) return;\r\n \r\n }\r\n \r\n updateFieldLoading(name: string, loading: boolean): void { \r\n const control = this.form.get(name);\r\n if (!control) return;\r\n if (this.updateSchemaField(name,{loading},this.schema.blocks)) return;\r\n }\r\n\r\n submit(){\r\n this.handleSubmit();\r\n }\r\n\r\n clean(hardReset:boolean = false){\r\n if (!this.form) return;\r\n\r\n const fields = this.collectAllFields();\r\n const fieldMap = new Map(fields.map(field => [field.name, field]));\r\n\r\n const resetValues: uicFormValuesRecord = {};\r\n\r\n Object.keys(this.form.controls).forEach(name => {\r\n const field = fieldMap.get(name);\r\n resetValues[name] = this.resolveResetValue(name, field, hardReset);\r\n });\r\n\r\n this.form.reset(resetValues, { emitEvent: false });\r\n this.handleFormChange();\r\n }\r\n\r\n addFieldControl(field: FormField, after?: string) {\r\n if (this.form.contains(field.name)) return; // evitar duplicados\r\n const validators = this.mapValidatorsFromField(field); \r\n\r\n const controlState = { value: this.newFieldInitialValue(field), disabled: !!field.disabled };\r\n this.form.addControl(field.name, this.fb.control(controlState, validators),{emitEvent:false});\r\n this.updateExtenalData();\r\n \r\n if (this.insertField(field,this.schema.blocks,after)) return;\r\n\r\n if (this.schema.blocks?.length) {\r\n this.schema.blocks[0].fields.push(field);\r\n }\r\n }\r\n\r\n removeFieldControl(name: string) {\r\n if (this.form.contains(name)) {\r\n this.form.removeControl(name,{emitEvent:false});\r\n }\r\n\r\n const removeSchemaField = (blocks?: FormBlock[]) => {\r\n if (!blocks) return false;\r\n for (const block of blocks) {\r\n const index = block.fields.findIndex(f => f.name === name);\r\n if (index !== -1) {\r\n block.fields.splice(index, 1);\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n if (removeSchemaField(this.schema.blocks)) return;\r\n }\r\n\r\n \r\n private resolveResetValue(name: string, field: FormField | undefined, hardReset: boolean) {\r\n if (!hardReset && this.initialValues && Object.prototype.hasOwnProperty.call(this.initialValues, name)) {\r\n return this.initialValues[name];\r\n }\r\n return this.blankValue(field);\r\n }\r\n\r\n private blankValue(field?: FormField) {\r\n if (!field) return null;\r\n\r\n switch (field.type) {\r\n case 'text':\r\n case 'textarea':\r\n case 'phone':\r\n return '';\r\n case 'checkbox':\r\n case 'switch':\r\n return false;\r\n case 'multyselect':\r\n return [];\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n private newFieldInitialValue(field: FormField) {\r\n let initial = this.initialValues[field.name] ?? null;\r\n if ((field.type === 'checkbox' || field.type === 'switch') && initial == null) initial = false;\r\n if (field.type === 'slider' && initial == null) initial = field.min ?? 0;\r\n return initial;\r\n }\r\n\r\n private insertField(field: FormField, blocks?: FormBlock[], after?:string){\r\n if (!blocks) return false;\r\n for (const block of blocks) {\r\n const idx = block.fields.findIndex(f => f.name === after);\r\n if (idx !== -1) {\r\n block.fields.splice(idx + 1, 0, field); // insertar después\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n \r\n private updateSchemaField(\r\n name: string,\r\n values: { disabled?: boolean; loading?: boolean },\r\n blocks?: FormBlock[]\r\n ): boolean {\r\n if (!blocks) return false;\r\n\r\n for (const block of blocks) {\r\n const field = block.fields.find(f => f.name === name);\r\n if (field) {\r\n if (values.loading !== undefined) field.loading = values.loading;\r\n if (values.disabled !== undefined) field.disabled = values.disabled;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n\r\n","<form [formGroup]=\"form\" (ngSubmit)=\"handleSubmit()\">\r\n @for (block of schema.blocks; track block.title) {\r\n <section class=\"form-block\">\r\n @if (block.title){\r\n <div class=\"block-title\">{{ block.title }}</div>\r\n }\r\n @if (loading) {\r\n <ui-skeleton-loader\r\n [cols]=\"schema.cols\"\r\n [inputs]=\"block.fields.length\"\r\n ></ui-skeleton-loader>\r\n } @else {\r\n <ui-dynamic-form\r\n [cols]=\"schema.cols\"\r\n [fields]=\"block.fields\"\r\n [form]=\"form\">\r\n </ui-dynamic-form>\r\n }\r\n </section>\r\n }\r\n @if ( showButtons ) {\r\n\r\n <div class=\"form-buttons\">\r\n <ui-button color=\"black\" type=\"bordered\" (click)=\"clean()\">Limpiar</ui-button>\r\n <ui-button color=\"black\" (click)=\"submit()\">Guardar</ui-button>\r\n </div>\r\n }\r\n</form>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-step-tabs',\r\n imports: [],\r\n templateUrl: './step-tabs.component.html',\r\n styleUrl: './step-tabs.component.scss'\r\n})\r\nexport class UicStepTabsComponent {\r\n @Input() tabs:string[] = [];\r\n @Input() currentTab:string = '';\r\n @Input() navigationEnabled = false;\r\n @Input() showStepTitle = true;\r\n @Output() currentTabChange = new EventEmitter<string>();\r\n\r\n currentIndex = 1;\r\n\r\n changeTab(newTab:string){\r\n if ( this.navigationEnabled ){\r\n this.currentIndex = (this.tabs.findIndex(f=>f==newTab)??0) + 1;\r\n this.currentTab = newTab;\r\n this.currentTabChange.emit(newTab)\r\n }\r\n }\r\n}\r\n","<div class=\"tabs-wrapper\">\r\n @for (tab of tabs; track tab) {\r\n <div class=\"form-tab\" \r\n [class.selected-tab]=\"tab == currentTab\" \r\n [class.tab-hover]=\"navigationEnabled && tab != currentTab\"\r\n (click)=\"changeTab(tab)\">\r\n <div class=\"form-tab-title\">{{tab}}</div>\r\n <div class=\"form-tab-bar\"></div>\r\n </div>\r\n }\r\n</div>\r\n@if (showStepTitle) {\r\n <h1 class=\"tab-title\"> {{currentIndex + \". \" + currentTab}} </h1>\r\n}","import { Component, EventEmitter, Input, Output, QueryList, ViewChildren } from '@angular/core';\r\nimport { FormResult, FormStep } from '../form.models';\r\nimport { UicStepTabsComponent } from './step-tabs/step-tabs.component';\r\nimport { ButtonColor, UicButtonComponent } from '../../button/button.component';\r\nimport { UicFormWrapperComponent } from '../form-wrapper/form-wrapper.component';\r\n\r\n@Component({\r\n selector: 'ui-steps-form',\r\n imports: [UicStepTabsComponent, UicButtonComponent, UicFormWrapperComponent],\r\n templateUrl: './steps-form.component.html',\r\n styleUrl: './steps-form.component.scss'\r\n})\r\nexport class UicStepsFormComponent {\r\n @ViewChildren(UicFormWrapperComponent) allForms!: QueryList<UicFormWrapperComponent>;\r\n @Input() steps:FormStep[]=[];\r\n @Input() navigationEnabled = false;\r\n @Input() showStepTitle = true;\r\n @Input() showButtons = true;\r\n @Input() buttonsColor:ButtonColor = 'black';\r\n \r\n @Output() formSubmit = new EventEmitter<FormResult>(); \r\n\r\n\r\n externalData={};\r\n formDisabled=false;\r\n loading=false;\r\n\r\n tabs:string[] = [];\r\n completedForms = new Map<string,Record<string,any>>();\r\n currentTabTitle = '';\r\n\r\n\r\n ngOnInit(){\r\n this.tabs = this.steps.map(p=>p.title);\r\n this.currentTabTitle = this.tabs[0];\r\n }\r\n\r\n private getFormByTitle(title: string): UicFormWrapperComponent | undefined {\r\n return this.allForms.find((form, index) => this.steps[index].title === title);\r\n }\r\n\r\n // CONTROLES DE FORMULARIO\r\n updateFieldValue(step:string,controlName:string, value:string){\r\n const stepForm = this.getFormByTitle(step);\r\n stepForm?.updateFieldValue(controlName,value);\r\n }\r\n\r\n updateFildDisabled(step:string,controlName:string, value:boolean){\r\n const stepForm = this.getFormByTitle(step);\r\n stepForm?.updateFieldDisabled(controlName,value);\r\n }\r\n\r\n updateFildLoading(step:string,controlName:string, value:boolean){\r\n const stepForm = this.getFormByTitle(step);\r\n stepForm?.updateFieldLoading(controlName,value);\r\n }\r\n \r\n // CONTROLES DE MOVIMIENTO\r\n next(){\r\n if (!this.isLast){\r\n if ( this.handleStepSubmit( this.currentTabTitle ) ){\r\n this.currentTabTitle = this.steps[this.currentIdx + 1]?.title??'';\r\n }\r\n }else if ( this.handleStepSubmit( this.currentTabTitle ) ){\r\n this.formSubmit.emit({\r\n result:true,\r\n form: this.getMergedForm()\r\n }); \r\n }\r\n }\r\n\r\n back(){\r\n if (!this.isFirst){\r\n this.currentTabTitle = this.steps[this.currentIdx - 1]?.title??'';\r\n }\r\n }\r\n \r\n\r\n\r\n private handleStepSubmit(title:string):boolean{\r\n const stepForm = this.getFormByTitle(this.currentTabTitle);\r\n const result = stepForm?.handleSubmit();\r\n if ( !result?.result ){\r\n return false;\r\n }else{\r\n this.completedForms.set(title,result.form??{});\r\n return true;\r\n }\r\n }\r\n\r\n private getMergedForm() {\r\n return Object.assign({}, ...Array.from(this.completedForms.values()));\r\n }\r\n\r\n\r\n get currentIdx(): number {\r\n return this.steps.findIndex(f => f.title === this.currentTabTitle);\r\n }\r\n\r\n get isFirst(): boolean {\r\n return this.currentIdx === 0;\r\n }\r\n\r\n get isLast(): boolean {\r\n return this.currentIdx === this.steps.length - 1;\r\n }\r\n}\r\n","<ui-step-tabs \r\n [(currentTab)]=\"currentTabTitle\" \r\n [navigationEnabled]=\"navigationEnabled\"\r\n [showStepTitle]=\"showStepTitle\"\r\n [tabs]=\"tabs\"></ui-step-tabs>\r\n\r\n\r\n<!-- formulario -->\r\n@for (step of steps; track $index) {\r\n <div [class.hidden-form]=\"step.title!==currentTabTitle\" >\r\n <ui-form-wrapper [schema]=\"step.form\" \r\n [externalData]=\"externalData\"\r\n [disabled]=\"formDisabled\"\r\n [loading]=\"loading\"></ui-form-wrapper>\r\n </div>\r\n}\r\n\r\n@if (showButtons) {\r\n <div style=\"display: flex; gap: 10px;\">\r\n <ui-button [color]=\"buttonsColor\" type=\"bordered\" [disabled]=\"isFirst\" (click)=\"back()\" >Volver</ui-button>\r\n <ui-button [color]=\"buttonsColor\" (click)=\"next()\">{{isLast?'Enviar':'Siguiente'}}</ui-button>\r\n </div>\r\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { UicSearcherComponent } from '../uic-searcher/uic-searcher.component';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\n\r\n@Component({\r\n selector: 'ui-multy-searcher',\r\n imports: [UicButtonComponent],\r\n templateUrl: './multy-searcher.component.html',\r\n styleUrl: './multy-searcher.component.scss'\r\n})\r\nexport class UicMultySearcherComponent {\r\n\r\n @Input() itemDisplayFn?: (item: any) => string = item => String(item);\r\n @Input() disabled = false;\r\n @Input() values:any[]=[];\r\n @Output() valuesChange = new EventEmitter<any[]>();\r\n \r\n\r\n removeItem(idx:number){\r\n this.values.splice(idx,1);\r\n this.valuesChange.emit(this.values);\r\n }\r\n}\r\n\r\n\r\n\r\n","<div class=\"search-results\">\r\n @for (item of values; track $index) {\r\n <div class=\"search-result\" [class.disabledresult]=\"disabled\">\r\n <div [innerHTML]=\"itemDisplayFn?itemDisplayFn(item):''\">\r\n </div>\r\n @if ( !disabled ){\r\n <ui-button (click)=\"removeItem($index)\" [iconOnly]=\"true\" icon=\"ri-delete-bin-line\" type=\"ghost\" color=\"red\" size=\"s\"></ui-button>\r\n }\r\n </div>\r\n }\r\n @if (disabled && values.length == 0) {\r\n <div class=\"search-result-empty\">\r\n Sin elementos seleccionados\r\n </div>\r\n }\r\n</div>","import { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { Component, ContentChild, ElementRef, EventEmitter, InjectionToken, Input, OnDestroy, Output, TemplateRef, ViewChild, ViewContainerRef, forwardRef, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nexport interface DropdownOverlayControls {\n close(): void;\n open(): void;\n toggle(): void;\n readonly isOpen: boolean;\n}\n\nexport const DROPDOWN_OVERLAY_CONTROLS = new InjectionToken<DropdownOverlayControls>('DROPDOWN_OVERLAY_CONTROLS');\n\nconst DEFAULT_POSITIONS: ConnectedPosition[] = [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\n];\n\n@Component({\n selector: 'ui-dropdown-container',\n imports: [CommonModule],\n templateUrl: './dropdown-container.component.html',\n styleUrl: './dropdown-container.component.scss',\n providers: [\n {\n provide: DROPDOWN_OVERLAY_CONTROLS,\n useExisting: forwardRef(() => UicDropdownContainerComponent),\n },\n ],\n})\nexport class UicDropdownContainerComponent implements OnDestroy, DropdownOverlayControls {\n private _disabled = false;\n private readonly host = inject(ElementRef<HTMLElement>);\n\n @Input() buttonLabel = 'Abrir';\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n if (value) {\n this.close();\n }\n }\n @Input() positions: ConnectedPosition[] = DEFAULT_POSITIONS;\n @Input() matchTriggerWidth = true;\n @Input() width?: number | string;\n @Input() minWidth?: number | string;\n @Input() maxWidth?: number | string;\n @Input() backdropClass = 'cdk-overlay-transparent-backdrop';\n @Input() hasBackdrop = true;\n @Input() closeOnBackdropClick = true;\n @Input() closeOnEscape = true;\n @Input() closeOnContentClick = false;\n @Input() offsetX = 0;\n @Input() offsetY = 4;\n @Input() push = false;\n @Input() flexibleDimensions = true;\n @Output() closed = new EventEmitter<void>();\n\n @ViewChild('contentTemplate', { static: true }) contentTemplate?: TemplateRef<unknown>;\n @ContentChild(TemplateRef) projectedTemplate?: TemplateRef<unknown>;\n\n private overlayRef?: OverlayRef;\n private readonly overlay = inject(Overlay);\n private readonly vcr = inject(ViewContainerRef);\n private overlaySubscriptions: Subscription = new Subscription();\n private contentClickHandler?: (event: MouseEvent) => void;\n\n get isOpen(): boolean {\n return !!this.overlayRef;\n }\n\n ngOnDestroy(): void {\n this.destroyOverlay();\n }\n\n open(): void {\n if (this.disabled || this.overlayRef) {\n return;\n }\n\n if ( !this.contentTemplate) {\n console.warn('ui-dropdown-container: Falta definir contenido para el dropdown.');\n return;\n }\n\n const origin = this.host.nativeElement.querySelector('.triggerButton') as HTMLElement | null;\n if (!origin) {\n console.warn('ui-dropdown-container: No se encontró el trigger para posicionar el overlay.');\n return;\n }\n const positionStrategy = this.createPositionStrategy(origin);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: this.hasBackdrop,\n backdropClass: this.backdropClass,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: this.resolveDimension(this.width, this.matchTriggerWidth ? origin.offsetWidth : undefined),\n minWidth: this.resolveDimension(this.minWidth),\n maxWidth: this.resolveDimension(this.maxWidth),\n });\n\n const portal = new TemplatePortal(this.contentTemplate, this.vcr);\n this.overlayRef.attach(portal);\n\n this.bindOverlayEvents(this.overlayRef);\n }\n\n close(): void {\n if (!this.overlayRef) return;\n this.destroyOverlay();\n this.closed.emit();\n }\n\n toggle(): void {\n if (this.overlayRef) {\n this.close();\n } else {\n this.open();\n }\n }\n\n onTriggerClick(event: Event): void {\n if (this.disabled && !this.isOpen) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.toggle();\n }\n\n private createPositionStrategy(origin: HTMLElement): FlexibleConnectedPositionStrategy {\n return this.overlay.position()\n .flexibleConnectedTo(origin)\n .withPositions(this.positions)\n .withPush(this.push)\n .withFlexibleDimensions(this.flexibleDimensions)\n .withDefaultOffsetX(this.offsetX)\n .withDefaultOffsetY(this.offsetY);\n }\n\n\n\n private destroyOverlay(): void {\n if (!this.overlayRef) return;\n\n this.overlaySubscriptions.unsubscribe();\n this.overlaySubscriptions = new Subscription();\n\n if (this.contentClickHandler) {\n this.overlayRef.overlayElement.removeEventListener('click', this.contentClickHandler);\n this.contentClickHandler = undefined;\n }\n\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n\n private resolveDimension(value?: number | string, fallback?: number): number | string | undefined {\n if (value === undefined || value === null) {\n return fallback;\n }\n return value;\n }\n\n private bindOverlayEvents(ref: OverlayRef): void {\n this.overlaySubscriptions.unsubscribe();\n this.overlaySubscriptions = new Subscription();\n\n if (this.hasBackdrop && this.closeOnBackdropClick) {\n this.overlaySubscriptions.add(\n ref.backdropClick().subscribe(() => this.close())\n );\n }\n\n if (this.closeOnEscape) {\n this.overlaySubscriptions.add(\n ref.keydownEvents().pipe(filter(event => event.key === 'Escape')).subscribe(() => this.close())\n );\n }\n\n if (this.closeOnContentClick) {\n this.contentClickHandler = () => this.close();\n ref.overlayElement.addEventListener('click', this.contentClickHandler);\n }\n }\n}\n","\n<div #triggerButton class=\"triggerButton\" (click)=\"onTriggerClick($event)\">\n <ng-content select=\"[button]\"></ng-content>\n</div>\n\n<ng-template #contentTemplate >\n <div class=\"ui-dropdown-panel\">\n <ng-content select=\"[content]\"></ng-content>\n </div>\n</ng-template>","import { Directive, HostListener, inject } from '@angular/core';\nimport { UicDropdownContainerComponent } from './dropdown-container.component';\n\n@Directive({\n selector: '[uiDropdownClose]',\n standalone: true,\n})\nexport class UiDropdownCloseDirective {\n private readonly dropdown = inject(UicDropdownContainerComponent);\n\n @HostListener('click', ['$event'])\n handleClick(): void {\n this.dropdown.close();\n }\n}\n","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const fadeAndRise = trigger('fadeAndRise', [\r\n transition(':enter',[style({opacity:0, maxHeight: '0px'}), animate('.3s ease', style({opacity:1,maxHeight: '200px'}))]),\r\n transition(':leave', [animate('.3s ease', style({opacity:0}))])\r\n ]);","import { Component } from '@angular/core';\r\nimport { fadeAndRise } from '../../animations/fadeAndRise.animation';\r\n\r\n@Component({\r\n selector: 'ui-tooltip',\r\n imports: [],\r\n templateUrl: './tooltip.component.html',\r\n styleUrl: './tooltip.component.scss',\r\n animations: [ fadeAndRise ]\r\n})\r\nexport class UicTooltipComponent {\r\n tooltip: string = '';\r\n left: number = 0;\r\n top: number = 0;\r\n placement: 'top' | 'bottom' = 'bottom';\r\n}\r\n","<div @fadeAndRise class=\"tooltip\" \r\n [class.tooltip--top]=\"placement === 'top'\"\r\n [class.tooltip--bottom]=\"placement === 'bottom'\"\r\n [style.left]=\"left + 'px'\" [style.top]=\"top + 'px'\" [innerHTML]=\"tooltip\">\r\n</div>\r\n","import { ApplicationRef, ComponentRef, createComponent, \r\n Directive, ElementRef, EmbeddedViewRef, EnvironmentInjector, HostListener, Input } from '@angular/core';\r\nimport { UicTooltipComponent } from '../components/tooltip/tooltip.component';\r\n\r\n\r\n@Directive({\r\n selector: '[tip]'\r\n})\r\nexport class UicToolTipDirective {\r\n\r\n\r\n @Input() tip = '';\r\n\r\n private componentRef: ComponentRef<any> | null = null;\r\n\r\n constructor(\r\n private readonly elementRef: ElementRef,\r\n private readonly appRef: ApplicationRef, \r\n private readonly injector: EnvironmentInjector) {\r\n }\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n if (this.componentRef === null && this.tip!='' && this.tip!=null) {\r\n this.componentRef = createComponent(UicTooltipComponent, {\r\n environmentInjector: this.injector\r\n });\r\n\r\n this.appRef.attachView(this.componentRef.hostView);\r\n const domElem = \r\n (this.componentRef.hostView as EmbeddedViewRef<any>)\r\n .rootNodes[0] as HTMLElement; \r\n document.body.appendChild(domElem);\r\n this.setTooltipComponentProperties();\r\n }\r\n }\r\n\r\n private setTooltipComponentProperties() {\r\n if (this.componentRef !== null) {\r\n this.componentRef.instance.tooltip = this.tip;\r\n this.componentRef.changeDetectorRef.detectChanges();\r\n requestAnimationFrame(() => {\r\n if (!this.componentRef) {\r\n return;\r\n }\r\n\r\n const tooltipElement = (this.componentRef.hostView as EmbeddedViewRef<any>)\r\n .rootNodes[0] as HTMLElement;\r\n const targetRect = this.elementRef.nativeElement.getBoundingClientRect();\r\n const tooltipRect = tooltipElement.getBoundingClientRect();\r\n const spacing = 8;\r\n const viewportWidth = window.innerWidth;\r\n const viewportHeight = window.innerHeight;\r\n const availableAbove = targetRect.top;\r\n const availableBelow = viewportHeight - targetRect.bottom;\r\n\r\n let placement: 'top' | 'bottom' = 'bottom';\r\n let top = targetRect.bottom + spacing;\r\n\r\n if (availableBelow < tooltipRect.height + spacing && availableAbove > availableBelow) {\r\n placement = 'top';\r\n top = Math.max(spacing, targetRect.top - tooltipRect.height - spacing);\r\n } else {\r\n top = Math.min(top, viewportHeight - tooltipRect.height - spacing);\r\n }\r\n\r\n const centerX = targetRect.left + (targetRect.width / 2);\r\n const maxLeft = viewportWidth - (tooltipRect.width / 2) - spacing;\r\n const minLeft = (tooltipRect.width / 2) + spacing;\r\n const left = Math.min(Math.max(centerX, minLeft), maxLeft);\r\n\r\n this.componentRef.instance.left = left;\r\n this.componentRef.instance.top = top;\r\n this.componentRef.instance.placement = placement;\r\n this.componentRef.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.destroy();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\r\n }\r\n\r\n destroy(): void {\r\n if (this.componentRef !== null) {\r\n this.appRef.detachView(this.componentRef.hostView);\r\n this.componentRef.destroy();\r\n this.componentRef = null;\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { UicToolTipDirective } from '../../../directives/tool-tip.directive';\r\nimport { UicInputComponent } from '../../inputs/input/input.component';\r\n\r\n@Component({\r\n selector: 'uic-table-searcher',\r\n imports: [UicButtonComponent, FormsModule, UicToolTipDirective, UicInputComponent],\r\n templateUrl: './table-searcher.component.html',\r\n styleUrl: './table-searcher.component.scss'\r\n})\r\nexport class UicTableUicSearcherComponent {\r\n @Input() placeholder = '';\r\n @Input() label = 'Buscar';\r\n @Input() searchOnKeydown = false;\r\n @Input() showButtonText = false;\r\n @Input() showSearchButton = false;\r\n @Output() filter = new EventEmitter<string>();\r\n text = \"\";\r\n\r\n reset(){\r\n this.text = '';\r\n this.filter.emit(this.text);\r\n }\r\n\r\n updateText(){\r\n if ( this.searchOnKeydown ){\r\n this.filter.emit(this.text);\r\n }\r\n }\r\n}\r\n","\r\n<div class=\"ui-table-searcher\">\r\n <ui-input [internalIcon]=\"!showSearchButton?'ri-search-line':''\">\r\n <input [(ngModel)]=\"text\" type=\"text\" (ngModelChange)=\"updateText()\" (keydown.enter)=\"filter.emit(text)\" placeholder=\"{{placeholder}}\">\r\n </ui-input>\r\n @if (showSearchButton) {\r\n <ui-button [iconOnly]=\"!showButtonText\" (click)=\"filter.emit(text)\" color=\"black\" type=\"bordered\" rightIcon=\"showSearchButton ri-search-2-line\" size=\"m\">{{showButtonText?'Buscar':''}}</ui-button>\r\n }\r\n <ui-button [iconOnly]=\"!showButtonText\" (click)=\"reset()\" color=\"black\" type=\"bordered\" rightIcon=\"ri-eraser-line\" size=\"m\">{{showButtonText?'Limpiar':''}}</ui-button>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'uic-table-pagination',\r\n imports: [CommonModule, UicButtonComponent, FormsModule],\r\n templateUrl: './table-pagination.component.html',\r\n styleUrl: './table-pagination.component.scss'\r\n})\r\nexport class UicTablePaginationComponent {\r\n @Input() buttonSize: 's'|'m'| 'l' = 'm';\r\n @Input() currentPage = 1;\r\n @Input() totalPages = 1;\r\n @Input() size = 25;\r\n @Input() loading = false;\r\n @Input() showText = true;\r\n @Input() nextButtonText = 'Sig.';\r\n @Input() previousButtonText = 'Ant.';\r\n visiblePages = 3;\r\n pagesInView:number[] = [];\r\n\r\n @Output() pageChange = new EventEmitter<number>();\r\n @Output() sizeChange = new EventEmitter<number>();\r\n\r\n get pages(): (number | string)[] {\r\n const pages: (number | string)[] = [];\r\n const range = Math.floor(this.visiblePages / 2);\r\n let start = Math.max(1, this.currentPage - range);\r\n let end = Math.min(this.totalPages, this.currentPage + range);\r\n\r\n if (end === this.totalPages) {\r\n start = Math.max(1, this.totalPages - (this.visiblePages - 1));\r\n }\r\n if (start === 1) {\r\n end = Math.min(this.totalPages, this.visiblePages);\r\n }\r\n\r\n if (start > 1) {\r\n pages.push(1);\r\n if (start > 2) pages.push('...');\r\n }\r\n\r\n for (let i = start; i <= end; i++) {\r\n pages.push(i);\r\n }\r\n\r\n if (end < this.totalPages) {\r\n if (end < this.totalPages - 1) pages.push('...');\r\n pages.push(this.totalPages);\r\n }\r\n\r\n return pages;\r\n }\r\n\r\n changePage(newPage: number) {\r\n if (newPage >= 1 && newPage <= this.totalPages && newPage !== this.currentPage) {\r\n this.currentPage = newPage;\r\n this.pageChange.emit(this.currentPage);\r\n }\r\n }\r\n}\r\n","\r\n<div class=\"table-page\">\r\n <ui-button \r\n [disabled]=\"loading || currentPage == 1\" \r\n (click)=\"changePage(currentPage - 1)\" \r\n [size]=\"buttonSize\" \r\n color=\"black\" \r\n type=\"bordered\" \r\n [text]=\"showText?previousButtonText:''\"\r\n [iconOnly]=\"!showText\" \r\n icon=\"ri-arrow-left-line\" > \r\n </ui-button> \r\n <div class=\"table-numbers\">\r\n @for (p of pages; track $index) {\r\n @if ( p!= '...' ){\r\n <button [disabled]=\"loading\" (click)=\"changePage(+p)\" [ngClass]=\"{'selected':currentPage==p}\" class=\"number\">{{p}}</button>\r\n } @else {\r\n <div class=\"space\">...</div>\r\n }\r\n }\r\n </div>\r\n <div class=\"current-mobile\"> {{currentPage}} </div>\r\n <ui-button \r\n [disabled]=\"loading || currentPage == totalPages\" \r\n (click)=\"changePage(currentPage + 1)\" \r\n [size]=\"buttonSize\" \r\n color=\"black\" \r\n type=\"bordered\" \r\n [text]=\"showText?nextButtonText:''\"\r\n [iconOnly]=\"!showText\" \r\n rightIcon=\"ri-arrow-right-line\" > \r\n </ui-button>\r\n</div>","import { animate, keyframes, state, style, transition, trigger } from \"@angular/animations\";\r\n\r\nexport const highlightRow = trigger('highlightRow', [\r\n state('highlighted', style({ backgroundColor: '#efe1f5' })),\r\n transition('* => highlighted', [\r\n animate('1000ms ease-in', keyframes([\r\n style({ backgroundColor: '#ffffff', offset: 0 }),\r\n style({ backgroundColor: '#efe1f5', offset: 0.3 }),\r\n style({ backgroundColor: '#ffffff', offset: 1.0 }),\r\n ]))\r\n ])\r\n ]);","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const animatedRow = trigger('animatedRow', [\r\n transition(':enter', [\r\n style({ opacity: 0, transform: 'translateY(-15px)' }),\r\n animate('300ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),\r\n ]),\r\n transition(':leave', [\r\n animate('300ms ease-in', style({ opacity: 0, height: 0, padding: 0, margin: 0 }))\r\n ]),\r\n ]);","import { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { Component, ElementRef, EventEmitter, inject, Input, Output, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { UicCheckboxComponent } from '../inputs/checkbox/checkbox.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ButtonSize, UicButtonComponent } from '../button/button.component';\r\n\r\n@Component({\r\n selector: 'ui-action-button',\r\n imports: [UicCheckboxComponent, UicButtonComponent, FormsModule],\r\n templateUrl: './uic-action-button.component.html',\r\n styleUrl: './uic-action-button.component.scss'\r\n})\r\nexport class UicActionButtonComponent {\r\n @Input() icon = 'ri-more-2-line';\r\n @Input() options: ActionMenuOption[] = [];\r\n @Input() multiselect = false;\r\n @Input() size:ButtonSize = 's';\r\n\r\n @Output() optionSelected = new EventEmitter<ActionMenuOption>();\r\n @Output() optionsApplied = new EventEmitter<ActionMenuOption[]>();\r\n\r\n @ViewChild('menuTemplate') menuTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n selectedSet = new Set<string | number>();\r\n allSelected = false;\r\n\r\n overlayPositions: ConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\r\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\r\n ];\r\n\r\n openMenu() {\r\n if (this.overlayRef) {\r\n this.closeMenu();\r\n return;\r\n }\r\n\r\n const origin = this.host.nativeElement.querySelector('.action-btn');\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(origin as HTMLElement)\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(false)\r\n .withPush(true);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.menuTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.closeMenu());\r\n }\r\n\r\n /** SINGLE SELECT MODE */\r\n selectOption(option: ActionMenuOption) {\r\n if (!this.multiselect) {\r\n this.optionSelected.emit(option);\r\n this.closeMenu();\r\n }\r\n }\r\n\r\n /** MULTISELECT MODE */\r\n toggleOption(opt: ActionMenuOption) {\r\n if (this.selectedSet.has(opt.id)) {\r\n this.selectedSet.delete(opt.id);\r\n } else {\r\n this.selectedSet.add(opt.id);\r\n }\r\n this.updateAllSelected();\r\n }\r\n\r\n toggleAll(checked: boolean) {\r\n this.allSelected = checked;\r\n this.selectedSet.clear();\r\n if (checked) {\r\n this.options.forEach(o => this.selectedSet.add(o.id));\r\n }\r\n }\r\n\r\n applySelection() {\r\n const selected = this.options.filter(o => this.selectedSet.has(o.id));\r\n this.optionsApplied.emit(selected);\r\n this.closeMenu();\r\n }\r\n\r\n updateAllSelected() {\r\n this.allSelected = this.options.length > 0 && this.selectedSet.size === this.options.length;\r\n }\r\n\r\n closeMenu() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n}\r\n\r\nexport interface ActionMenuOption {\r\n id: string;\r\n label: string;\r\n icon?: string;\r\n}","<!-- Botón -->\r\n<ui-button class=\"action-btn\" [size]=\"size\" [icon]=\"icon\" color=\"black\" [iconOnly]=\"true\" type=\"ghost\" (click)=\"openMenu()\">\r\n</ui-button>\r\n\r\n<!-- Menú -->\r\n<ng-template #menuTemplate>\r\n <div class=\"action-menu\">\r\n @if (multiselect) {\r\n <div class=\"action-menu-header\">\r\n <ui-checkbox [noPadding]=\"true\" \r\n [ngModel]=\"allSelected\" \r\n (ngModelChange)=\"toggleAll($event)\" placeholder=\"Todos\"></ui-checkbox>\r\n </div>\r\n }\r\n <div class=\"action-menu-body\">\r\n @for (opt of options; track $index) {\r\n <div class=\"action-menu-item\" (click)=\"multiselect ? toggleOption(opt) : selectOption(opt)\">\r\n @if (multiselect) {\r\n <div>\r\n <ui-checkbox [noPadding]=\"true\" [ngModel]=\"selectedSet.has(opt.id)\"></ui-checkbox>\r\n </div>\r\n }\r\n @if (icon) {\r\n <i [class]=\"opt.icon\"></i>\r\n }\r\n <span>{{ opt.label }}</span>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Footer con botón aplicar -->\r\n @if (multiselect) {\r\n <div class=\"action-menu-footer\">\r\n <ui-button type=\"bordered\" color=\"black\" size=\"t\" (click)=\"closeMenu()\">Cerrar</ui-button>\r\n <ui-button color=\"black\" size=\"t\" (click)=\"applySelection()\">Aplicar</ui-button>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { Component, Input } from '@angular/core';\r\nimport { TableList } from '../table.models';\r\n\r\n@Component({\r\n selector: 'uic-table-list',\r\n imports: [],\r\n templateUrl: './table-list.component.html',\r\n styleUrl: './table-list.component.scss'\r\n})\r\nexport class UicTableListComponent {\r\n @Input() list:TableList[]=[];\r\n}\r\n","@for (item of list; track $index) {\r\n <div class=\"list-item\">\r\n <i [class]=\"item.icon??'ri-capsule-fill'\"></i>\r\n <div class=\"list-item-data\">\r\n <div>{{item.text}}</div>\r\n <p>{{item.subtext}}</p>\r\n </div> \r\n </div>\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'nameInitials'\r\n})\r\nexport class UicNameInitsPipe implements PipeTransform {\r\n\r\n transform(value: string): string {\r\n if (!value){\r\n return \"\";\r\n }\r\n const names:string[] = value.split(\" \");\r\n if (names.length > 1){\r\n return names[0].charAt(0) + names[1].charAt(0).toUpperCase(); \r\n }else if ( names[0].length>=2){\r\n return names[0].substring(0,2).toUpperCase();\r\n }else{\r\n return '';\r\n }\r\n }\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { TableUser } from '../table.models';\r\nimport { UicNameInitsPipe } from '../../../pipes/name-inits.pipe';\r\n\r\n@Component({\r\n selector: 'uic-table-user',\r\n imports: [UicNameInitsPipe],\r\n templateUrl: './table-user.component.html',\r\n styleUrl: './table-user.component.scss'\r\n})\r\nexport class UicTableUserComponent {\r\n @Input() user:TableUser | undefined;\r\n\r\n}\r\n","@if (user) {\r\n <div class=\"user-row\">\r\n @if (!user.hideAvatar) {\r\n <div class=\"user-inits\" [style]=\"user.photo? 'background-image: url('+ user.photo +')' :'' \">\r\n {{ !user.photo? (user.name | nameInitials) :''}}\r\n </div>\r\n }\r\n <div class=\"user-row-data\">\r\n <div>{{user.name}}</div>\r\n <p>{{user.id}}</p>\r\n </div>\r\n </div>\r\n}@else{\r\n -\r\n}","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-status-label',\r\n imports: [],\r\n templateUrl: './status-label.component.html',\r\n styleUrl: './status-label.component.scss'\r\n})\r\nexport class UicStatusLabelComponent {\r\n @Input() color = 'grey';\r\n @Input() type: 'status'|'tag' = 'status';\r\n @Input() icon = 'ri-circle-fill';\r\n}\r\n","<div [class]=\"'status-label sl-' + type + ' ' + (type == 'status' ? 'slc-' : 'slt-') + color\" >\r\n @if (type == 'status') {\r\n <i [class]=\"icon\"></i>\r\n }\r\n <div class=\"sl-text\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","export const MODAL_DATA = 'MODAL_DATA';\r\nexport const MODAL_COMPONENT = 'MODAL_COMPONENT';\r\nexport const MODAL_CONFIG = 'MODAL_CONFIG';\r\nexport const MODAL_CLOSE_EVENT = 'modalClosed'; \r\nexport const MODAL_CLOSE_REQUEST = 'modalCloserRequested'; ","import { OverlayRef } from \"@angular/cdk/overlay\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { UicModalService } from \"./modal.service\";\r\n\r\nexport class UiModalRef<T = any> {\r\n private readonly _afterClosed = new Subject<{status:boolean, data: T | null}>();\r\n\r\n constructor(\r\n private readonly overlayRef: OverlayRef,\r\n private readonly modalService: UicModalService\r\n ) {}\r\n\r\n close(result: T | null = null): void {\r\n this.modalService.close(this.overlayRef, result);\r\n this._afterClosed.next({status: result!=null, data:result });\r\n this._afterClosed.complete();\r\n }\r\n\r\n closeFloating(result: T | null = null): void {\r\n this.modalService.closeFloating(this.overlayRef, result);\r\n this._afterClosed.next({status: result!=null, data:result });\r\n this._afterClosed.complete();\r\n }\r\n\r\n afterClosed(): Observable<{status:boolean, data: T | null}> {\r\n return this._afterClosed.asObservable();\r\n }\r\n\r\n}","import { Component, Inject } from '@angular/core';\r\nimport { AlertData, AlertResponseData } from './tiny-alert.model';\r\nimport { MODAL_DATA } from '../../services/modal.constant';\r\nimport { UicButtonComponent } from '../button/button.component';\r\nimport { UiModalRef } from '../../services/modaRef';\r\n\r\n@Component({\r\n selector: 'ui-tiny-alert',\r\n imports: [UicButtonComponent],\r\n templateUrl: './tiny-alert.component.html',\r\n styleUrl: './tiny-alert.component.scss'\r\n})\r\nexport class TinyAlertComponent {\r\n data:AlertData;\r\n constructor(\r\n @Inject(MODAL_DATA) inData:{alert:AlertData,editing:boolean},\r\n @Inject(UiModalRef) private readonly modalRef: UiModalRef )\r\n {\r\n this.data = inData.alert;\r\n }\r\n response:AlertResponseData = {};\r\n\r\n\r\n close(value:boolean){\r\n this.modalRef.closeFloating(value?this.response:null);\r\n }\r\n}\r\n","<div class=\"alert-wrapper\">\r\n @if (data.iconPath) {\r\n <img [src]=\"data.iconPath\" alt=\"\"> \r\n }@else{\r\n <i [class]=\"'alert-main-icon icon-'+data.type + ' ' + data.iconChar\" ></i>\r\n }\r\n <div class=\"h3-alert\" [class]=\"'icon-'+data.type\"> {{data.title}} </div>\r\n <div class=\"alert-body\" [innerHTML]=\"data.body\"> </div>\r\n <div class=\"tinyalert-buttons\">\r\n @if (data.showCancelButton) {\r\n <ui-button (click)=\"close(false)\" type=\"bordered\" [color]=\"data.cancelButtonColor??'black'\" size=\"l\"> {{data.cancelButtonText??'Cancelar'}} </ui-button>\r\n }\r\n <ui-button (click)=\"close(true)\" [color]=\"data.okButtonColor??'primary'\" size=\"l\"> {{data.okButtonText??'Continuar'}} </ui-button>\r\n </div>\r\n <button class=\"floating-close\" (click)=\"close(false)\" >\r\n <i class=\"ri-close-line\"></i>\r\n </button>\r\n</div>\r\n","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const pushTop = trigger('pushTop', [\r\n transition(':enter',[style({opacity:0, transform: 'translateY(20px)'}), animate('.3s ease', style({opacity:1, transform: 'translateY(0)'}))]),\r\n transition(':leave', [animate('.3s ease', style({opacity:0, transform: 'translateY(-20px)'}))])\r\n ]);","import { CommonModule } from '@angular/common';\r\nimport { Component, Inject, Injector, Type, ViewChild } from '@angular/core';\r\nimport { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\r\nimport { MODAL_COMPONENT, MODAL_CONFIG, MODAL_DATA } from '../../../services/modal.constant';\r\nimport { ModalConfig } from './modalconfig.model';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { pushTop } from '../../../animations/pushTop.animation';\r\nimport { UiModalRef } from '../../../services/modaRef';\r\n\r\n\r\n@Component({\r\n selector: 'ui-modal',\r\n imports: [CommonModule,PortalModule,UicButtonComponent],\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss',\r\n animations:[pushTop]\r\n})\r\nexport class UicModalComponent {\r\n myConfig:ModalConfig = {};\r\n ready = false;\r\n title='';\r\n @ViewChild(CdkPortalOutlet, { static: true }) portalOutlet!: CdkPortalOutlet;\r\n\r\n constructor(\r\n @Inject(UiModalRef) private readonly modalRef: UiModalRef,\r\n @Inject(MODAL_COMPONENT) private readonly component: Type<any>,\r\n @Inject(MODAL_CONFIG) private readonly congif: ModalConfig,\r\n private readonly injector: Injector\r\n ) {\r\n this.myConfig = congif;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const childInjector = Injector.create({\r\n providers: [\r\n { provide: UiModalRef, useValue: this.modalRef },\r\n { provide: MODAL_DATA, useValue: this.congif.data }\r\n ],\r\n parent: this.injector\r\n });\r\n const portal = new ComponentPortal(this.component, null, childInjector);\r\n this.portalOutlet.attachComponentPortal(portal);\r\n }\r\n\r\n\r\n closeOuside(){\r\n if ( this.congif.preventCloseingOutside === true ) return;\r\n this.modalRef.closeFloating(null);\r\n }\r\n\r\n close() {\r\n this.modalRef.closeFloating(null);\r\n }\r\n}\r\n","<div class=\"uic_backdrop\" (click)=\"closeOuside()\"> \n <div @pushTop class=\"uic_modal\" \n [class]=\"myConfig.size ? 'uic_' + myConfig.size : ''\"\n (click)=\"$event.stopPropagation()\">\n \n @if ( myConfig.title) {\n <div class=\"uic_modal-header\">\n {{myConfig.title}}\n <ui-button color=\"red\" type=\"ghost\" icon=\"ri-close-large-line\" (click)=\"close()\" [iconOnly]=\"true\"></ui-button>\n </div>\n }\n <div class=\"uic_modal-body\" [class.uic_body-padding]=\"myConfig.title!='' && !myConfig.noPadding\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n </div>\n</div>\n","import { animate, state, style, transition, trigger } from \"@angular/animations\";\r\nexport const sideModal = trigger('sideModal', [\r\n state('visible', style({ transform: 'translateX(0)' })),\r\n state('hidden', style({ transform: 'translateX(100%)' })),\r\n\r\n // animación al CREARSE\r\n transition('void => visible', [\r\n style({ opacity: .8, transform: 'translateX(100%)' }),\r\n animate('.5s ease')\r\n ]),\r\n\r\n // animación al CERRAR\r\n transition('visible => hidden', [\r\n animate('.5s ease')\r\n ])\r\n])\r\n\r\nexport const fadeBackdrop =trigger('fadeBackdrop', [\r\n state('visible', style({ opacity: 1 })),\r\n state('hidden', style({ opacity: 0 })),\r\n transition('void => visible', [\r\n style({ opacity: 0 }),\r\n animate('300ms ease-out')\r\n ]),\r\n transition('visible => hidden', [\r\n animate('300ms ease-in')\r\n ])\r\n ])","import { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\r\nimport { Component, Inject, Injector, Type, ViewChild } from '@angular/core';\r\nimport { MODAL_CLOSE_REQUEST, MODAL_COMPONENT, MODAL_CONFIG, MODAL_DATA } from '../../../services/modal.constant';\r\nimport { OverlayRef } from '@angular/cdk/overlay';\r\nimport { SideModalConfig } from './sideModalConfig.model';\r\nimport { UicButtonComponent } from '../../button/button.component';\r\nimport { fadeBackdrop, sideModal } from '../../../animations/sideModal.animation';\r\nimport { UiModalRef } from '../../../services/modaRef';\r\nimport { UicModalService } from '../../../services/modal.service';\r\n\r\n\r\n@Component({\r\n selector: 'ui-side-modal',\r\n imports: [PortalModule,UicButtonComponent],\r\n templateUrl: './side-modal.component.html',\r\n styleUrl: './side-modal.component.scss',\r\n animations: [ sideModal, fadeBackdrop ]\r\n})\r\nexport class UicSideModalComponent {\r\n overlayRef!: OverlayRef; // lo setea el servicio\r\n state: 'visible' | 'hidden' = 'visible';\r\n show = true;\r\n myConfig:SideModalConfig = {};\r\n ready = false;\r\n @ViewChild(CdkPortalOutlet, { static: true }) portalOutlet!: CdkPortalOutlet;\r\n\r\n constructor(\r\n @Inject(UiModalRef) private readonly modalRef: UiModalRef,\r\n @Inject(MODAL_COMPONENT) private readonly component: Type<any>,\r\n @Inject(MODAL_CONFIG) private readonly congif: SideModalConfig,\r\n private readonly injector: Injector,\r\n private readonly modal:UicModalService\r\n ) {\r\n this.myConfig = congif;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.overlayRef){\r\n this.overlayRef.hostElement.addEventListener(MODAL_CLOSE_REQUEST, () => {\r\n this.close();\r\n });\r\n }\r\n}\r\n\r\n ngAfterViewInit(): void {\r\n const childInjector = Injector.create({\r\n providers: [\r\n { provide: UiModalRef, useValue: this.modalRef },\r\n { provide: MODAL_DATA, useValue: this.congif.data }\r\n ],\r\n parent: this.injector\r\n });\r\n const portal = new ComponentPortal(this.component, null, childInjector);\r\n this.portalOutlet.attachComponentPortal(portal);\r\n }\r\n\r\n\r\n closeOuside(){\r\n if ( this.congif.preventCloseingOutside === true ) return;\r\n this.close();\r\n }\r\n\r\n close() {\r\n this.state = 'hidden';\r\n }\r\n\r\n cancel(){\r\n if ( this.myConfig.preventCloseOnCancel ){\r\n this.modal.triggerSave(false);\r\n }else{\r\n this.close();\r\n }\r\n }\r\n\r\n onAnimationDone(event: any) {\r\n if (event.toState === 'hidden' && event.triggerName === 'sideModal') {\r\n this.overlayRef.dispose();\r\n }\r\n }\r\n\r\n save(){\r\n this.modal.triggerSave();\r\n }\r\n}\r\n","<div [@fadeBackdrop]=\"state\" class=\"backdrop\" (click)=\"closeOuside()\"> \r\n</div>\r\n<div [@sideModal]=\"state\" \r\n (@sideModal.done)=\"onAnimationDone($event)\" \r\n class=\"sidemodal\" \r\n [style.width]=\"myConfig.width??'60%'\" \r\n (click)=\"$event.stopPropagation()\">\r\n @if (myConfig.headerEnabled) {\r\n <div class=\"modal-header\">\r\n <div class=\"modal-header-title\">\r\n <div class=\"f-title\">{{myConfig.title}}</div>\r\n <div class=\"f-subtitle\">{{myConfig.subtitle}}</div>\r\n </div>\r\n <ui-button class=\"close-icon\" (click)=\"close()\" icon=\"ri-close-large-line\" type=\"ghost\" color=\"black\" [iconOnly]=\"true\" size=\"m\"></ui-button>\r\n </div>\r\n }\r\n <div class=\"sidemodal-body\" [class.nopadding]=\"myConfig.noPadding\" >\r\n <ng-template cdkPortalOutlet></ng-template>\r\n </div>\r\n @if (myConfig.footerEnabled) {\r\n <div class=\"sidemodal-footer\">\r\n @if (myConfig.showCancelButton) {\r\n <ui-button (click)=\"cancel()\" color=\"black\" size=\"l\" type=\"bordered\" [icon]=\"myConfig.footerCancelIcon??'ri-close-line'\">{{myConfig.footerCancelButtonText??'Cancelar'}}</ui-button>\r\n }\r\n <ui-button (click)=\"save()\" color=\"black\" size=\"l\" [rightIcon]=\"myConfig.footerOkIcon??'ri-check-line'\">{{myConfig.footerOkButtonText??'Siguiente'}}</ui-button>\r\n </div>\r\n }\r\n</div>","import { EnvironmentInjector, inject, Injectable, Injector, Type } from '@angular/core';\r\nimport { MODAL_CLOSE_EVENT, MODAL_CLOSE_REQUEST, MODAL_COMPONENT, MODAL_CONFIG } from './modal.constant';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { UiModalRef } from './modaRef';\r\nimport { ModalConfig } from '../components/modal/floating-modal/modalconfig.model';\r\nimport { SideModalConfig } from '../components/modal/side-modal/sideModalConfig.model';\r\nimport { UicModalComponent } from '../components/modal/floating-modal/modal.component';\r\nimport { UicSideModalComponent } from '../components/modal/side-modal/side-modal.component';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UicModalService {\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly envInjector = inject(EnvironmentInjector);\r\n\r\n openFloatingModal<TComponent>(\r\n component: Type<TComponent>,\r\n config: ModalConfig = {}\r\n ): UiModalRef {\r\n return this.openModal(component,config,true);\r\n }\r\n\r\n openSideModal<TComponent>(\r\n component: Type<TComponent>,\r\n config: SideModalConfig = {}\r\n ): UiModalRef {\r\n return this.openModal(component,config,false);\r\n }\r\n\r\n private openModal<TComponent>(\r\n component: Type<TComponent>,\r\n config: ModalConfig|SideModalConfig = {},\r\n isFloating = false\r\n ){\r\n const overlayConfig = this.createOverlayConfig(isFloating);\r\n const overlayRef = this.overlay.create(overlayConfig);\r\n const modalRef = new UiModalRef(overlayRef, this);\r\n const injector = this.createModalInjector(overlayRef,modalRef,component,config); \r\n if ( isFloating){\r\n const modalPortal = new ComponentPortal(UicModalComponent, null, injector);\r\n overlayRef.attach(modalPortal);\r\n }else{\r\n const modalPortal = new ComponentPortal( UicSideModalComponent, null, injector);\r\n const componentRef = overlayRef.attach(modalPortal);\r\n componentRef.instance.overlayRef = overlayRef;\r\n }\r\n return modalRef; \r\n }\r\n\r\n close(overlayRef: OverlayRef, result: any = null): void { \r\n overlayRef.hostElement.dispatchEvent(\r\n new CustomEvent(MODAL_CLOSE_REQUEST, { detail: result })\r\n );\r\n } \r\n\r\n closeFloating(overlayRef: OverlayRef, result: any = null){\r\n overlayRef.backdropElement?.dispatchEvent(\r\n new CustomEvent(MODAL_CLOSE_EVENT, { detail: result })\r\n );\r\n overlayRef.dispose();\r\n }\r\n\r\n private readonly _save$ = new Subject<boolean>();\r\n save$ = this._save$.asObservable();\r\n\r\n triggerSave(result=true): void {\r\n this._save$.next(result);\r\n }\r\n\r\n private createOverlayConfig(isFloating: boolean): OverlayConfig {\r\n const positionStrategy = isFloating \r\n ? this.overlay.position().global().left()\r\n : this.overlay.position().global().right();\r\n\r\n return {\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-dark-backdrop',\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n disposeOnNavigation: true, \r\n };\r\n }\r\n\r\n private createModalInjector<TComponent>(\r\n overlayRef: OverlayRef,\r\n modalRef: UiModalRef,\r\n component: Type<TComponent>,\r\n config: ModalConfig | SideModalConfig\r\n ): Injector {\r\n return Injector.create({\r\n providers: [\r\n { provide: OverlayRef, useValue: overlayRef },\r\n { provide: UiModalRef, useValue: modalRef },\r\n { provide: MODAL_COMPONENT, useValue: component },\r\n { provide: MODAL_CONFIG, useValue: config }\r\n ],\r\n parent: this.envInjector,\r\n });\r\n }\r\n}\r\n\r\n","import { AlertData } from '../tiny-alert/tiny-alert.model';\r\nimport { Alert } from './alert.model';\r\n\r\nlet nextId = 1;\r\n\r\nexport function createTinySuccess(\r\n body: string,\r\n options?: Partial<AlertData>\r\n): AlertData {\r\n return {\r\n body,\r\n title:'Operación exitosa',\r\n type: 'success',\r\n iconChar: 'ri-emotion-laugh-line',\r\n okButtonColor:'green',\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createTinyError(\r\n body: string,\r\n options?: Partial<AlertData>\r\n): AlertData {\r\n return {\r\n body,\r\n title:'Se produjo un error',\r\n iconChar:'ri-emotion-unhappy-line',\r\n okButtonColor:'red',\r\n okButtonText:'Cerrar',\r\n type: 'error',\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createTinyDelete(\r\n body: string,\r\n options?: Partial<AlertData>\r\n): AlertData {\r\n return {\r\n body,\r\n title:'Cornfirmación de acción',\r\n iconChar:'ri-delete-bin-line',\r\n okButtonColor:'red',\r\n okButtonText:'Sí, eliminar',\r\n showCancelButton:true,\r\n cancelButtonText:'Cancelar',\r\n type: 'delete',\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createTinyWarning(\r\n body: string,\r\n options?: Partial<AlertData>\r\n): AlertData {\r\n return {\r\n body,\r\n title:'¡Cuidado!',\r\n iconChar:'ri-alarm-warning-line',\r\n okButtonColor:'yellow',\r\n type: 'warning',\r\n ...options,\r\n };\r\n}\r\n\r\nexport function createTinyInfo(\r\n body: string,\r\n options?: Partial<AlertData>\r\n): AlertData {\r\n return {\r\n body,\r\n iconChar:'ri-information-line',\r\n okButtonColor:'black',\r\n type: 'info',\r\n ...options,\r\n };\r\n}","import { inject, Injectable } from '@angular/core';\r\nimport { AlertData, AlertResponse } from '../components/tiny-alert/tiny-alert.model';\r\nimport { TinyAlertComponent } from '../components/tiny-alert/tiny-alert.component';\r\nimport { UicModalService } from './modal.service';\r\nimport { createTinyDelete, createTinyError, createTinyInfo, createTinySuccess, createTinyWarning } from '../components/push-alerts/tynyalert.helpers';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UicTinyAlertService {\r\n\r\n private readonly modal = inject(UicModalService);\r\n\r\n showAlert(data: AlertData): Promise<AlertResponse> {\r\n return new Promise<AlertResponse>((resolve) => {\r\n this.modal.openFloatingModal(TinyAlertComponent, {\r\n data: { alert: data }\r\n }).afterClosed().subscribe(result => {\r\n resolve({\r\n value: result?.status,\r\n data: result?.data\r\n });\r\n });\r\n });\r\n }\r\n\r\n success(message:string,options?: Partial<AlertData>){\r\n return this.showAlert( createTinySuccess(message,options) )\r\n }\r\n\r\n error(message:string,options?: Partial<AlertData>){\r\n return this.showAlert( createTinyError(message,options) )\r\n }\r\n\r\n warning(message:string,options?: Partial<AlertData>){\r\n return this.showAlert( createTinyWarning(message,options) )\r\n }\r\n info(message:string,options?: Partial<AlertData>){\r\n return this.showAlert( createTinyInfo(message,options) )\r\n }\r\n\r\n deleteConfirmation(message:string,options?: Partial<AlertData>){\r\n return this.showAlert( createTinyDelete(message,options) )\r\n }\r\n \r\n}\r\n","import { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { TableRow, TableRowData } from '../table/table.models';\r\nimport { UicToolTipDirective } from '../../directives/tool-tip.directive';\r\nimport { UicTableListComponent } from '../table/table-list/table-list.component';\r\nimport { UicTableUserComponent } from '../table/table-user/table-user.component';\r\nimport { UicCheckboxComponent } from '../inputs/checkbox/checkbox.component';\r\nimport { UicStatusLabelComponent } from '../status-label/status-label.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { UicSwichComponent } from '../inputs/toggle-button/toggle-button.component';\r\nimport { CurrencyPipe, DatePipe } from '@angular/common';\r\nimport { UicButtonComponent } from '../button/button.component';\r\nimport { UicTinyAlertService } from '../../services/tiny-alert.service';\r\nimport { AlertData } from '../tiny-alert/tiny-alert.model';\r\n\r\n@Component({\r\n selector: 'ui-item-value',\r\n imports: [\r\n UicToolTipDirective,\r\n UicTableUserComponent,\r\n UicSwichComponent,\r\n UicStatusLabelComponent,\r\n UicTableListComponent,\r\n FormsModule,\r\n UicButtonComponent,\r\n CurrencyPipe,\r\n DatePipe\r\n ],\r\n templateUrl: './item-value.component.html',\r\n styleUrl: './item-value.component.scss'\r\n})\r\nexport class ItemValueComponent {\r\n\r\n private readonly alers = inject(UicTinyAlertService);\r\n\r\n @Input() key:string|number = '';\r\n @Input() type = 'text';\r\n @Input() alignment = '';\r\n @Input() row!:TableRow;\r\n @Input() disabled = false;\r\n\r\n @Input() data:TableRowData|null = null;\r\n\r\n @Input() switchValidation:AlertData[] = [];\r\n @Output() switchConfirmed = new EventEmitter<boolean>();\r\n \r\n expanded = false;\r\n checked = false;\r\n\r\n ngOnInit(){\r\n if ( this.row ){\r\n this.data = this.row.data.find(f=>f.key == this.key)??null;\r\n this.checked = this.data?.checked??false;\r\n }\r\n }\r\n switchHandler(rowId:string|number, value:boolean){\r\n if ( this.data && this.switchValidation.length >0 ){\r\n const OK = this.switchValidation[0];\r\n const CANCEL = this.switchValidation[1]??this.switchValidation[0];\r\n\r\n this.alers.showAlert( value? OK : CANCEL ).then(r=>{\r\n if ( r.value ){\r\n this.switchConfirmed.emit(value);\r\n }else{\r\n if ( this.data){\r\n this.data.checked = !value\r\n this.checked = this.data.checked;\r\n }\r\n setTimeout(() => {\r\n }, 100);\r\n }\r\n \r\n });\r\n }else{\r\n this.switchConfirmed.emit(value);\r\n }\r\n }\r\n\r\n expand (click:MouseEvent){\r\n click.stopPropagation();\r\n this.expanded = !this.expanded;\r\n }\r\n copyText(text:string,click:MouseEvent){\r\n click.stopPropagation();\r\n navigator.clipboard.writeText(text)\r\n .then(() => {\r\n console.log('Copiado!');\r\n })\r\n .catch(err => {\r\n console.error('No se pudo copiar: ', err);\r\n }); \r\n }\r\n}\r\n","@if (data) {\r\n @if (type == 'text' || !type) {\r\n @if( data.icon ){ <i [class]=\"data.icon\"></i>}\r\n {{ data.value }} \r\n @if( data.rightIcon ){ <i [class]=\"data.rightIcon\"></i>}\r\n }\r\n @if (type == 'copy') {\r\n <div class=\"copy-div\">\r\n {{ data.value }} \r\n <ui-button (click)=\"copyText((data.value??'').toString(),$event)\" type=\"ghost\" size=\"s\" [iconOnly]=\"true\" icon=\"ri-file-copy-line\"></ui-button>\r\n </div>\r\n }\r\n @if (type == 'money'){\r\n {{ + (data.value??0) | currency: data.currencyCode||''}} \r\n }\r\n @if (type == 'date'){\r\n {{ (data.value??'').toString() | date: 'dd/MM/yyyy'}} \r\n }\r\n @if (type == 'bigtext') {\r\n <div (click)=\"expand($event)\" class=\"expandible-row\" [class.expandedrow]=\"expanded\">\r\n {{ data.value }} \r\n @if( data.value && data.value.toString().length > 0){\r\n <i [class]=\"expanded?'ri-arrow-up-s-line':'ri-arrow-down-s-line'\"></i>\r\n }\r\n @if (!expanded && data.value && data.value.toString().length > 0) {\r\n <div class=\"fade-overlay\"></div>\r\n }\r\n </div>\r\n }\r\n @if (type == 'icon-list') {\r\n @for (alert of data.list; track $index) {\r\n <i [tip]=\"alert.text\" [class]=\"alert.icon + ' ui-alert'\" ></i>\r\n }\r\n }\r\n @else if (type == 'list'){\r\n <uic-table-list [list]=\"data.list??[]\"></uic-table-list> \r\n }\r\n @else if (type == 'user'){\r\n <uic-table-user [user]=\"data.user\"></uic-table-user> \r\n }\r\n @else if (type == 'status'){\r\n @if (data.value) {\r\n <ui-status-label [icon]=\"data.icon??'ri-circle-fill'\" [color]=\"data.color??''\"> {{data.value}} </ui-status-label> \r\n }@else {\r\n -\r\n }\r\n }\r\n @else if (type == 'tag'){\r\n <ui-status-label type=\"tag\" [icon]=\"data.icon??'ri-circle-fill'\" [color]=\"data.color??''\"> {{data.value}} </ui-status-label> \r\n }\r\n @else if (type == 'switch'){\r\n <div (click)=\"$event.stopPropagation()\">\r\n <ui-switch [disabled]=\"disabled\" [(checked)]=\"checked\" (checkedChange)=\"switchHandler(row.id,$event)\"></ui-switch> \r\n </div>\r\n }\r\n\r\n @if( data.subtext ){\r\n <div [class]=\"'subtext ui-alignment-'+alignment\">{{ data.subtext }}</div>\r\n }\r\n}\r\n\r\n","import { Component, Input } from '@angular/core';\r\nimport { UicStatusLabelComponent } from '../status-label/status-label.component';\r\nimport { UicButtonComponent } from '../button/button.component';\r\nimport { CurrencyPipe, DatePipe } from '@angular/common';\r\nimport { BackgroundColors, TableList, TableRowData, TableTextColors, TableUser } from '../table/table.models';\r\nimport { ItemValueComponent } from '../item-value/item-value.component';\r\nimport { AlertData } from '../tiny-alert/tiny-alert.model';\r\n\r\n\r\n@Component({\r\n selector: 'ui-portlet-card',\r\n imports: [\r\n ItemValueComponent\r\n],\r\n templateUrl: './uic-portlet-card.component.html',\r\n styleUrl: './uic-portlet-card.component.scss'\r\n})\r\nexport class UicPortletCardComponent {\r\n\r\n @Input() title = '';\r\n @Input() data: UicPortletData[] = [];\r\n @Input() layout: 'horizontal' | 'vertical' = 'horizontal';\r\n @Input() cols = 1;\r\n @Input() gap = 20;\r\n @Input() labelWeight= 400;\r\n @Input() valueWeight= 500;\r\n @Input() switchValidation:AlertData[] = [];\r\n finalData:TableRowData[]=[];\r\n\r\n ngOnInit(){\r\n this.finalData = this.data.map(p=>({...p,key:p.label??'-'}));\r\n }\r\n\r\n get gridTemplateColumns(): string | null {\r\n if (this.layout !== 'vertical') {\r\n return null;\r\n }\r\n const columns = Math.max(1, Math.floor(this.cols || 1));\r\n return `repeat(${columns}, minmax(0, 1fr))`;\r\n }\r\n\r\n copyText(text:string){\r\n navigator.clipboard.writeText(text)\r\n .then(() => {\r\n console.log('Copiado!');\r\n })\r\n .catch(err => {\r\n console.error('No se pudo copiar: ', err);\r\n }); \r\n }\r\n\r\n switchHandler(key:string,value:boolean){\r\n \r\n }\r\n\r\n}\r\n\r\nexport interface UicPortletData{\r\n value?: string|number;\r\n label?:string;\r\n type?:string;\r\n subtext?: string|number;\r\n checked?:boolean;\r\n list?:TableList[];\r\n user?:TableUser;\r\n icon?: string;\r\n rightIcon?:string;\r\n iconColor?:string;\r\n textColor?: TableTextColors;\r\n color?: BackgroundColors;\r\n expanded?:boolean;\r\n currencyCode?:string;\r\n}\r\n","@if ( title) {\r\n <h2>{{title}}</h2>\r\n}\r\n<div class=\"portlet\" \r\n [class.portlet-vertical]=\"layout === 'vertical'\" \r\n [style.gridTemplateColumns]=\"gridTemplateColumns\"\r\n [style]=\"'gap: ' + gap + 'px;'\" >\r\n @for (item of finalData; track $index) {\r\n <div class=\"portlet-row\" [class.portlet-row-vertical]=\"layout === 'vertical'\">\r\n <div class=\"portlet-row-label\" [style.fontWeight]=\"labelWeight\">{{item.label}}</div>\r\n <div class=\"portlet-row-value\" [style.fontWeight]=\"valueWeight\">\r\n <ui-item-value\r\n [type]=\"item.type??'text'\"\r\n [data]=\"item\"\r\n [switchValidation]=\"switchValidation\"\r\n (switchConfirmed)=\"switchHandler('xx', $event)\"\r\n ></ui-item-value>\r\n </div>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { TableColums, TableRow, TableRowData } from '../table/table.models';\r\nimport { UicPortletCardComponent, UicPortletData } from '../uic-portlet-card/uic-portlet-card.component';\r\n\r\n@Component({\r\n selector: 'ui-short-table',\r\n imports: [UicPortletCardComponent],\r\n templateUrl: './short-table.component.html',\r\n styleUrl: './short-table.component.scss'\r\n})\r\nexport class UicShortTableComponent {\r\n \r\n @Input() columns:TableColums[] = [];\r\n @Input() data!:TableRow;\r\n @Input() loading = false;\r\n @Input() disabled = false;\r\n @Input() cols = 2;\r\n\r\n portlet:UicPortletData[] =[];\r\n\r\n ngOnInit(){\r\n this.portlet = this.apTableToPortlets(this.columns,this.data);\r\n }\r\n\r\n apTableToPortlets(\r\n columns: TableColums[],\r\n row: TableRow\r\n ): UicPortletData[] {\r\n return columns.filter(f=> !!f.hideOn )\r\n .map(col => {\r\n const cell = row.data.find(d => d.key === col.key);\r\n if (!cell) return null;\r\n\r\n return {\r\n type: col.type == 'bigtext' ? 'text' : col.type,\r\n label: col.label, \r\n ...cell\r\n } as UicPortletData;\r\n\r\n })\r\n .filter((p): p is UicPortletData => p !== null);\r\n\r\n }\r\n}\r\n","<ui-portlet-card \r\n [gap]=\"20\" \r\n layout=\"vertical\" \r\n [cols]=\"cols\" \r\n [data]=\"portlet\">\r\n</ui-portlet-card>","import { AppSelectOption, FormSchema, TableColums, TableRowData } from \"../public-api\";\r\n\r\n\r\n// Mapea datos a tablas (deben tener el mismo nombre)\r\nexport function helperTableMapDatoToColums(data:Record<string,any>,headers:TableColums[]){\r\n const row:TableRowData[] = [];\r\n headers.forEach( head =>{\r\n if ( head.key in data && (head.type=='text' && !head.type)){\r\n row.push({\r\n key: head.key,\r\n value: data[head.key]\r\n });\r\n }\r\n });\r\n return row;\r\n }\r\n\r\n// MAPEA EL RESULTADO DE UN FORMULARIO AL DTO\r\nexport function helperFormMapFormdataToObject<T extends object>(formData: Record<string, any>, defaults: T): T {\r\n return {\r\n ...defaults,\r\n ...Object.fromEntries(\r\n Object.keys(defaults) \r\n .filter(key => key in formData)\r\n .map(key => [key, formData[key]])\r\n )\r\n } as T; \r\n}\r\n\r\n\r\nexport function isMobile(): boolean {\r\n const mobileBP = getComputedStyle(document.documentElement)\r\n .getPropertyValue('--bp-mobile');\r\n return window.matchMedia(`(max-width: ${mobileBP})`).matches;\r\n}","import { Component, ContentChild, ElementRef, EventEmitter, input, Input, Output, SimpleChanges } from '@angular/core';\r\nimport { TableAction, TableColums, TableRow, TableFilters, TableRowData, TableButton } from './table.models';\r\nimport { ButtonColor, UicButtonComponent } from '../button/button.component';\r\nimport { UicTableUicSearcherComponent } from './table-searcher/table-searcher.component';\r\nimport { UicTablePaginationComponent } from './table-pagination/table-pagination.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { UicTableListComponent } from './table-list/table-list.component';\r\nimport { UicTableUserComponent } from './table-user/table-user.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { UicToolTipDirective } from '../../directives/tool-tip.directive';\r\nimport { highlightRow } from '../../animations/highlightRow.animation';\r\nimport { animatedRow } from '../../animations/animatedRow.animation';\r\nimport { UicCheckboxComponent } from '../inputs/checkbox/checkbox.component';\r\nimport { UicStatusLabelComponent } from '../status-label/status-label.component';\r\nimport { ActionMenuOption, UicActionButtonComponent } from '../uic-action-button/uic-action-button.component';\r\nimport { UicSwichComponent } from '../inputs/toggle-button/toggle-button.component';\r\nimport { UicShortTableComponent } from '../short-table/short-table.component';\r\nimport { ItemValueComponent } from '../item-value/item-value.component';\r\nimport { isMobile } from '../../helpers'\r\nimport { AlertData } from '../tiny-alert/tiny-alert.model';\r\n\r\n@Component({\r\n selector: 'ui-table',\r\n imports: [CommonModule, \r\n UicButtonComponent, \r\n ItemValueComponent,\r\n UicShortTableComponent,\r\n UicActionButtonComponent,\r\n UicTableUicSearcherComponent, \r\n UicTablePaginationComponent,\r\n UicToolTipDirective,\r\n UicCheckboxComponent, \r\n FormsModule],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n animations: [ highlightRow, animatedRow ]\r\n})\r\nexport class UicTableComponent {\r\n \r\n @Input() columns:TableColums[] = [];\r\n @Input() data:TableRow[] = [];\r\n @Input() loading = false;\r\n @Input() disabled = false;\r\n @Input() rowClickable = false;\r\n @Input() rowExpandible = false;\r\n @Input() pages = 0;\r\n @Input() size = 25;\r\n @Input() squeletonRows = 5;\r\n @Input() buttonSize: 'm'|'l'|'s' = 'm';\r\n @Input() highlightedId: string |number = 0;\r\n @Input() headerText = '';\r\n @Input() totalItems = 0;\r\n @Input() alignment: 'left'|'center' = 'center';\r\n \r\n @Input() searchEnabled = true;\r\n @Input() searchLabel = 'Buscar';\r\n @Input() searchPlaceholder = 'Buscar';\r\n \r\n @Input() headerClass = '';\r\n @Input() headerBackgroundColor:ButtonColor = 'grey';\r\n @Input() striped = false;\r\n @Input() showPagination = true;\r\n @Input() searchOnKeydown = false;\r\n \r\n @Input() showEmptyMessage = true;\r\n @Input() showSearchButton = false;\r\n @Input() showTextPagination = true;\r\n @Input() emptyMessage = 'No hay elementos';\r\n @Input() switchValidation:AlertData[] = [];\r\n @Input() nextButtonText = 'Sig.';\r\n @Input() previousButtonText = 'Ant.';\r\n @Input() mobilePortletCols = 2;\r\n \r\n @Input() searcherShowButtonText = false;\r\n \r\n \r\n \r\n @Output() action = new EventEmitter<TableAction>();\r\n @Output() update = new EventEmitter<TableFilters>();\r\n @Output() checkedChange = new EventEmitter<(string|number)[]>(); \r\n @Output() switchChange = new EventEmitter<{key:string|number,value:boolean,columName:string}>(); \r\n @Output() clickedRow = new EventEmitter<string|number>(); \r\n \r\n allSelected = false;\r\n \r\n checkedIds = new Set<string | number >();\r\n sortKey = '';\r\n sortAsc = true;\r\n filter = '';\r\n page=1;\r\n\r\n fullViewRows:(string|number)[] = [];\r\n\r\n mobileView = false;\r\n\r\n ngOnInit(){\r\n this.mobileView = isMobile();\r\n }\r\n\r\n getValue(data:TableRowData[],key:string):string{\r\n const col = data.find(col => col.key == key);\r\n return col?.value?.toString()??'';\r\n }\r\n\r\n\r\n getMoreActions(actions:TableButton[], row:TableRowData[]):ActionMenuOption[]{\r\n return actions\r\n .filter(f=> this.isValidRule(row, f.rule))\r\n .map(p=>({id:p.key,label:p.text??'',icon:p.icon??''}))\r\n }\r\n\r\n getFontColor(data:TableRowData[],key:string){\r\n const col = data.find(col => col.key == key);\r\n return 'ui-trc-' + (col?.textColor??'black');\r\n }\r\n\r\n isValidRule(data:TableRowData[],key:string[]|undefined):boolean{\r\n if ( !key ) return true;\r\n let valid = true;\r\n\r\n key.forEach(k => {\r\n const col = data.find(col => col.key == k);\r\n valid = valid && !!(col?.value);\r\n });\r\n \r\n return valid;\r\n }\r\n\r\n\r\n sortClick(key:string){\r\n if ( this.sortKey != key ){\r\n this.sortKey = key;\r\n this.sortAsc = true;\r\n }else if ( this.sortAsc ){\r\n this.sortAsc = false;\r\n }else{\r\n this.sortKey = '';\r\n this.sortAsc = true;\r\n }\r\n this.updateData();\r\n }\r\n sizeChabge(newSize:number){\r\n this.size = newSize;\r\n this.updateData(); \r\n }\r\n pageChage(newPage:number){\r\n this.page = newPage;\r\n this.updateData();\r\n }\r\n search(text:string){\r\n this.filter = text;\r\n this.updateData();\r\n }\r\n updateData(){\r\n this.update.emit({\r\n sortBy:this.sortKey,\r\n isSortAscending:this.sortAsc,\r\n pageNumber:this.page,\r\n pageSize:this.size,\r\n filter: this.filter\r\n })\r\n }\r\n \r\n toggleSelection(id: string|number, checked: boolean){\r\n if (checked) {\r\n this.checkedIds.add(id);\r\n } else {\r\n this.checkedIds.delete(id);\r\n }\r\n this.areAllSelected();\r\n this.checkedChange.emit(Array.from(this.checkedIds));\r\n }\r\n \r\n toggleAll(checked: boolean) {\r\n if (checked) {\r\n this.data.forEach(item => this.checkedIds.add(item.id));\r\n } else {\r\n this.checkedIds.clear();\r\n }\r\n this.checkedChange.emit(Array.from(this.checkedIds));\r\n }\r\n areAllSelected() {\r\n this.allSelected = this.checkedIds.size === this.data.length && this.data.length > 0;\r\n }\r\n \r\n ngOnChanges(change:SimpleChanges) {\r\n this.areAllSelected();\r\n }\r\n\r\n doAction(rowId:string|number,key:string,event?: MouseEvent){\r\n event?.stopPropagation();\r\n this.action.emit({rowId,key});\r\n }\r\n\r\n\r\n resetCheckedIds() {\r\n this.checkedIds.clear();\r\n this.checkedChange.emit([]);\r\n }\r\n\r\n switchHandler(key:string|number,value:boolean, columName:string){\r\n this.switchChange.emit({key,value,columName});\r\n }\r\n\r\n\r\n @ContentChild('[actions]') actionsRef?: ElementRef;\r\n\r\n hasActions = false;\r\n\r\n ngAfterContentInit() {\r\n this.hasActions = !!this.actionsRef;\r\n }\r\n\r\n clickRow(id:number|string){\r\n if (this.rowClickable)\r\n this.clickedRow.emit(id);\r\n \r\n\r\n if ( this.rowExpandible && this.mobileView){\r\n if ( this.fullViewRows.includes(id) ) { \r\n this.fullViewRows = this.fullViewRows.filter(f=>f!=id);\r\n }else{\r\n this.fullViewRows.push(id)\r\n }\r\n }\r\n }\r\n}\r\n","@if ( hasActions || searchEnabled){\r\n <div class=\"ui-table-filters\">\r\n @if (searchEnabled) {\r\n <uic-table-searcher \r\n [showSearchButton]=\"showSearchButton\" \r\n [showButtonText]=\"searcherShowButtonText\" \r\n [searchOnKeydown]=\"searchOnKeydown\"\r\n (filter)=\"search($event)\" \r\n [placeholder]=\"searchPlaceholder\" >\r\n </uic-table-searcher>\r\n }\r\n <div class=\"ui-filter-actions\">\r\n <ng-content select=\"[actions]\"></ng-content>\r\n </div>\r\n </div>\r\n}\r\n<ng-content select=\"[filters]\"></ng-content>\r\n<div class=\"ui-table-wrapper\">\r\n @if (headerText) {\r\n <div class=\"ui-table-topbar\"> {{headerText}} <span class=\"hightlited-note\"> {{totalItems}} </span> </div>\r\n }\r\n <div class=\"ui-table-container\"> \r\n <table class=\"ui-table\" [class.ui-striped]=\"striped\">\r\n <thead>\r\n <tr [class]=\" headerClass || 'header-'+headerBackgroundColor\">\r\n @for (header of columns; track $index) {\r\n <th [class.noshow-small]=\"header.hideOn == 'small'\"\r\n [class.noshow-medium]=\"header.hideOn == 'medium'\">\r\n <div [class]=\"'ui-th-wrap ui-alignment-'+alignment\" >\r\n @if (header.type=='checkbox') {\r\n <div>\r\n <ui-checkbox style=\"margin-right: 5px;\" [(ngModel)]=\"allSelected\" (ngModelChange)=\"toggleAll($event)\"></ui-checkbox>\r\n </div>\r\n }\r\n {{header.label.toUpperCase() }} \r\n @if (header.sortEnable) {\r\n <div class=\"ui-sort-arrow\" (click)=\"sortClick(header.key)\" [ngClass]=\"{'ui-sort-active':header.key == sortKey}\">\r\n <i [class]=\"(sortAsc||header.key != sortKey)?'ri-arrow-down-line':'ri-arrow-up-line'\"></i> \r\n </div>\r\n }\r\n </div>\r\n </th> \r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n\r\n @if (loading) {\r\n @for (item of [].constructor(squeletonRows); track $index) {\r\n <tr>\r\n @for (header of columns; track $index) {\r\n <td> <div class=\"ui-row-loader\"></div> </td>\r\n }\r\n </tr> \r\n }\r\n } @else {\r\n @for (row of data; track row.id) {\r\n <tr [@highlightRow]=\"highlightedId === row.id ? 'highlighted' : null\" \r\n [class.ui-tr-highlighted]=\"row.highlighted\"\r\n [class.clickable-row]=\"rowClickable\"\r\n (click)=\"clickRow(row.id)\"\r\n >\r\n @for (header of columns; track $index) {\r\n <!-- TIPOS DE HEADERS -->\r\n <td [class]=\"getFontColor(row.data,header.key)\"\r\n [class.noshow-small]=\"header.hideOn == 'small'\"\r\n [class.noshow-medium]=\"header.hideOn == 'medium'\">\r\n\r\n <div [class]=\"'ui-cell-content ui-alignment-'+alignment\" \r\n [style.justify-content]=\"header.align||null\"\r\n [style.width.px]=\"header.width || null\">\r\n @if (header.type == 'actions') { \r\n <div class=\"ui-centered-cell-content\">\r\n @for (btn of header.actions; track $index) {\r\n @if (isValidRule(row.data,btn.rule)) {\r\n <ui-button \r\n [disabled]=\"loading\"\r\n [tip]=\"btn.tooltip??''\"\r\n size=\"s\"\r\n [disabled]=\"disabled\"\r\n [text]=\"btn.text??''\"\r\n [type]=\"btn.type??'filled'\"\r\n [iconOnly]=\"!btn.text\"\r\n [icon]=\"btn.icon??''\"\r\n [color]=\"btn.color??'black'\"\r\n (click)=\"doAction(row.id,btn.key,$event)\">\r\n </ui-button> \r\n }\r\n } \r\n @if ( header.moreActions && header.moreActions.length>0 ) {\r\n @for (ma of header.moreActions; track $index) {\r\n <ui-action-button [icon]=\"ma.icon??'ri-more-2-line'\" (optionSelected)=\"doAction(row.id,$event.id)\" [options]=\"getMoreActions(ma.actions||[],row.data)\"></ui-action-button>\r\n }\r\n }\r\n </div> \r\n }\r\n @else if (header.type == 'checkbox'){\r\n <ui-checkbox [disabled]=\"disabled\" [ngModel]=\"checkedIds.has(row.id)\" [placeholder]=\"getValue(row.data,header.key)\" (ngModelChange)=\"toggleSelection(row.id,$event)\" ></ui-checkbox> \r\n }\r\n @else {\r\n <ui-item-value\r\n [disabled]=\"disabled\"\r\n [key]=\"header.key\"\r\n [type]=\"header.type??'text'\"\r\n [row]=\"row\"\r\n [alignment]=\"alignment\"\r\n [switchValidation]=\"switchValidation\"\r\n (switchConfirmed)=\"switchHandler(header.key, $event, header.label)\"\r\n ></ui-item-value>\r\n }\r\n </div>\r\n </td>\r\n }\r\n </tr>\r\n @if (fullViewRows.includes(row.id)) {\r\n <tr style=\"border-top: none ;\">\r\n <td [colSpan]=\"columns.length\">\r\n <div class=\"full-space-row\">\r\n <ui-short-table [columns]=\"columns\" [cols]=\"mobilePortletCols\" [data]=\"row\"></ui-short-table>\r\n </div>\r\n </td>\r\n </tr>\r\n }\r\n }\r\n @empty {\r\n @if (showEmptyMessage) {\r\n <tr> \r\n <td [colSpan]=\"columns.length\">\r\n <div class=\"ui-empty\">{{emptyMessage}} </div>\r\n </td>\r\n </tr>\r\n }\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n \r\n @if (showPagination) {\r\n <uic-table-pagination \r\n [loading]=\"loading\" \r\n [totalPages]=\"pages\" \r\n [showText]=\"showTextPagination\"\r\n [size]=\"size\"\r\n [nextButtonText]=\"nextButtonText\"\r\n [previousButtonText]=\"previousButtonText\"\r\n [buttonSize]=\"buttonSize\"\r\n (sizeChange)=\"sizeChabge($event)\"\r\n (pageChange)=\"pageChage($event)\">\r\n </uic-table-pagination>\r\n }\r\n</div>\r\n","import { ButtonColor, ButtonType } from \"../button/button.component\";\r\nimport { UicPortletData } from \"../uic-portlet-card/uic-portlet-card.component\";\r\n\r\nexport interface TableColums{\r\n key: string;\r\n label: string;\r\n width?:number;\r\n align?: 'flex-start'| 'flex-end'| 'center';\r\n type?: ColumnTypes;\r\n sortEnable?: boolean;\r\n actions?: TableButton[];\r\n hideOn?: 'small' | 'medium';\r\n moreActions?: {icon?:string;actions:TableButton[]}[];\r\n}\r\nexport interface TableButton{\r\n key: string;\r\n color?: ButtonColor;\r\n icon?: string;\r\n text?: string;\r\n type?:ButtonType;\r\n tooltip?: string;\r\n rule?: string[];\r\n}\r\nexport interface TableRow{\r\n id: number|string;\r\n data:TableRowData[];\r\n highlighted?:boolean;\r\n}\r\n\r\nexport interface TableRowData extends UicPortletData{\r\n key: string;\r\n}\r\n\r\nexport interface TableList{text:string; subtext?:string,icon?:string; color?:string};\r\nexport interface TableUser{name:string;id:string;photo?:string,icon?:string,hideAvatar?:boolean};\r\nexport interface TableAction{\r\n rowId: number|string;\r\n key: string;\r\n}\r\nexport type ColumnTypes = 'actions' \r\n| 'text' \r\n| 'list' \r\n| 'money'\r\n| 'copy'\r\n| 'user' \r\n| 'checkbox' \r\n| 'icon-list' \r\n| 'status' \r\n| 'switch' \r\n| 'bigtext' \r\n| 'date' \r\n| 'tag';\r\n\r\nexport type TableTextColors = 'primary' | 'red' | 'green' | 'blue' | 'yellow' | 'black' | 'grey' ;\r\nexport type BackgroundColors = 'primary' | 'secondary' | 'red' | 'green' | 'blue' | 'yellow' | 'black' | 'grey' | 'transparent' | 'white' ;\r\nexport interface TableFilters {\r\n sortBy:string;\r\n isSortAscending:boolean;\r\n pageNumber:number;\r\n pageSize:number;\r\n filter: string;\r\n }","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { Alert } from '../alert.model';\r\n\r\n\r\n@Component({\r\n selector: 'ui-alert',\r\n imports: [],\r\n templateUrl: './alert.component.html',\r\n styleUrl: './alert.component.scss'\r\n})\r\nexport class UiAlertComponent implements OnInit{\r\n @Input() alert!: Alert;\r\n @Output() closeAlert = new EventEmitter<number>();\r\n \r\n interval: any;\r\n progressValue = 0;\r\n animationIntevalMs = 100;\r\n pauseAnimation = false;\r\n id = 0;\r\n\r\n\r\n ngOnInit(){\r\n this.id = this.alert.id;\r\n if(this.alert.duration && this.alert.duration > 0){\r\n const duration = this.alert.duration;\r\n let count = 0;\r\n this.interval = setInterval(() => {\r\n count = this.pauseAnimation? count : count + this.animationIntevalMs;\r\n this.progressValue = Math.floor((count / duration)*100);\r\n if (this.progressValue > 100){\r\n this.close();\r\n }\r\n }, this.animationIntevalMs);\r\n\r\n }\r\n }\r\n\r\n close(){\r\n clearInterval( this.interval );\r\n this.closeAlert.emit(this.id);\r\n }\r\n\r\n \r\n}\r\n","<div [class]=\"'alert ' + alert.type + ' ' + (alert.style??'filled')\" >\r\n @if (alert.showProgressBar) {\r\n <div class=\"alert-process\">\r\n <div class=\"alert-process-bar\" [style.width.%]=\"progressValue\"></div>\r\n </div>\r\n }\r\n <div class=\"alert-body\">\r\n <button class=\"close\" (click)=\"close()\"> ✕ </button>\r\n @if (alert.icon) {\r\n <i [class]=\"'highlighted ' + alert.icon\"></i>\r\n }\r\n <div>\r\n <div class=\"toast-title highlighted\">{{alert.title}}</div>\r\n <div class=\"toast-body\">{{alert.message}}</div>\r\n @if ( alert.okButtonText || alert.cancelButtonText){\r\n <div class=\"toast-buttons \">\r\n @if ( alert.okButtonText ) {\r\n <button style=\"font-weight: 500;\">{{alert.okButtonText}}</button>\r\n }\r\n @if ( alert.cancelButtonText ){\r\n <button (click)=\"close()\">{{alert.cancelButtonText}}</button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { Alert } from '../alert.model';\r\nimport { UicPushAlertService } from '../../../services/push-alert.service';\r\nimport { UiAlertComponent } from '../alert/alert.component';\r\n\r\n@Component({\r\n selector: 'ui-alert-container',\r\n imports: [UiAlertComponent],\r\n templateUrl: './alert-container.component.html',\r\n styleUrl: './alert-container.component.scss'\r\n})\r\nexport class UicAlertContainerComponent implements OnInit {\r\n alerts: Alert[] = [];\r\n\r\n constructor(private readonly alertService: UicPushAlertService) {}\r\n\r\n ngOnInit() {\r\n this.alertService.stream.subscribe( alert => {\r\n this.alerts.push(alert);\r\n });\r\n }\r\n\r\n dismis(id:number){\r\n const idx = this.alerts.findIndex(f=>f.id == id);\r\n this.alerts.splice(idx,1);\r\n }\r\n\r\n}\r\n","<div class=\"alert-container\">\r\n @for (alert of alerts; track alert.id){\r\n <ui-alert\r\n (closeAlert)=\"dismis($event)\"\r\n [alert]=\"alert\">\r\n </ui-alert>\r\n } \r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { UicButtonComponent } from '../button/button.component';\nimport { createValueAccessor } from '../dynamic-form/base-value-accessot';\n\nconst base = createValueAccessor<Blob | null>();\n\n@Component({\n selector: 'ui-signature-pad',\n imports: [CommonModule, UicButtonComponent],\n templateUrl: './signature-pad.component.html',\n styleUrls: ['./signature-pad.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => UicSignaturePadComponent),\n multi: true,\n },\n ],\n})\nexport class UicSignaturePadComponent extends base implements AfterViewInit {\n @Input() width = 400;\n @Input() height = 200;\n @Input() strokeColor = '#111827';\n @Input() strokeWidth = 2;\n @Input() disabled = false;\n @Output() imageChange = new EventEmitter<Blob | null>();\n\n @ViewChild('canvas', { static: true }) canvasRef!: ElementRef<HTMLCanvasElement>;\n\n private ctx: CanvasRenderingContext2D | null = null;\n private drawing = false;\n\n ngAfterViewInit(): void {\n const canvas = this.canvasRef.nativeElement;\n canvas.width = this.width;\n canvas.height = this.height;\n this.ctx = canvas.getContext('2d');\n if (this.ctx) {\n this.ctx.lineWidth = this.strokeWidth;\n this.ctx.lineCap = 'round';\n this.ctx.lineJoin = 'round';\n this.ctx.strokeStyle = this.strokeColor;\n }\n }\n\n startDraw(event: PointerEvent) {\n if (!this.ctx || this.disabled) return;\n this.drawing = true;\n const { x, y } = this.relativePosition(event);\n this.ctx.beginPath();\n this.ctx.moveTo(x, y);\n this.canvasRef.nativeElement.setPointerCapture(event.pointerId);\n event.preventDefault();\n }\n\n draw(event: PointerEvent) {\n if (!this.drawing || !this.ctx || this.disabled) return;\n const { x, y } = this.relativePosition(event);\n this.ctx.lineTo(x, y);\n this.ctx.stroke();\n event.preventDefault();\n }\n\n endDraw(event: PointerEvent) {\n if (!this.drawing || !this.ctx || this.disabled) return;\n this.ctx.closePath();\n this.drawing = false;\n this.canvasRef.nativeElement.releasePointerCapture(event.pointerId);\n this.emitSignature();\n event.preventDefault();\n }\n\n clear() {\n if (!this.ctx) return;\n this.resetCanvas();\n this.notifyChange(null as any);\n this.imageChange.emit(null);\n }\n\n private emitSignature() {\n if (this.disabled) return;\n const canvas = this.canvasRef.nativeElement;\n canvas.toBlob((blob) => {\n if (!blob) return;\n this.notifyChange(blob as any);\n this.imageChange.emit(blob);\n }, 'image/png');\n }\n\n private relativePosition(event: PointerEvent) {\n const rect = this.canvasRef.nativeElement.getBoundingClientRect();\n return {\n x: event.clientX - rect.left,\n y: event.clientY - rect.top,\n };\n }\n\n override writeValue(value: Blob | null): void {\n super.writeValue(value as any);\n if (!this.ctx) return;\n if (!value) {\n this.resetCanvas();\n return;\n }\n const url = URL.createObjectURL(value);\n const img = new Image();\n img.onload = () => {\n this.resetCanvas();\n this.ctx!.drawImage(img, 0, 0, this.width, this.height);\n URL.revokeObjectURL(url);\n };\n img.src = url;\n }\n\n private resetCanvas() {\n if (this.ctx) {\n this.ctx.clearRect(0, 0, this.width, this.height);\n }\n }\n}\n","<div class=\"signature-pad\" [style.width.px]=\"width\">\n <canvas\n #canvas\n class=\"signature-canvas\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n (pointerdown)=\"startDraw($event)\"\n (pointermove)=\"draw($event)\"\n (pointerup)=\"endDraw($event)\"\n (pointerleave)=\"endDraw($event)\"\n ></canvas>\n <div class=\"signature-actions\">\n <ui-button size=\"s\" type=\"ghost\" icon=\"ri-delete-bin-line\" (click)=\"clear()\">Limpiar</ui-button>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\r\nimport { ButtonColor } from '../button/button.component';\r\n\r\n@Component({\r\n selector: 'ui-kpi-card',\r\n imports: [],\r\n templateUrl: './kpi-card.component.html',\r\n styleUrl: './kpi-card.component.scss'\r\n})\r\nexport class UicKpiCardComponent {\r\n @Input() data!:UicKpiContet;\r\n @Input() loading = false;\r\n\r\n}\r\n\r\nexport interface UicKpiContet{\r\n label: string;\r\n value: string;\r\n icon?: string;\r\n iconColor?: ButtonColor;\r\n textColor?: ButtonColor;\r\n}","@if (data) {\r\n <div class=\"kpi-card\">\r\n <div >\r\n <div class=\"kpi-card-label\">{{data.label}}</div>\r\n @if (loading) {\r\n <div class=\"kpi-card-value-loading\"></div>\r\n }@else {\r\n\r\n <div [class]=\"'kpi-card-value ui-trc-' + data.textColor\">{{data.value}}</div>\r\n }\r\n </div>\r\n <i [class]=\"data.icon + ' ui-trc-' + data.iconColor\"></i>\r\n </div>\r\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-tabs-button',\r\n imports: [],\r\n templateUrl: './tabs-button.component.html',\r\n styleUrl: './tabs-button.component.scss'\r\n})\r\nexport class UicTabsButtonComponent {\r\n\r\n @Input() tabs:UiBtnTab[] = [];\r\n @Input() activeTab = '';\r\n @Output() activeTabChange = new EventEmitter<string>();\r\n\r\n selectTab(tab:string){\r\n this.activeTab = tab;\r\n this.activeTabChange.emit(this.activeTab);\r\n }\r\n}\r\nexport interface UiBtnTab{key:string; text:string; icon?:string, subtitle?:string} ","<div class=\"tabs\">\r\n @for (tab of tabs; track $index) {\r\n <div (click)=\"selectTab(tab.key)\" [class.active-tab]=\"tab.key == activeTab\" class=\"tab\"> \r\n @if (tab.icon) {\r\n <i [class]=\"tab.icon\"></i> \r\n }\r\n {{tab.text}}</div>\r\n }\r\n</div>","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ComponentRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { UicButtonComponent } from '../button/button.component';\r\nimport { UicToolTipDirective } from '../../directives/tool-tip.directive';\r\n\r\nexport interface WorkPanelTabConfig {\r\n id?: string;\r\n label: string;\r\n icon?:string;\r\n componentType: Type<any>;\r\n componentInputs?: Record<string, any>;\r\n}\r\n\r\n@Component({\r\n selector: 'ui-work-panel',\r\n imports: [UicButtonComponent, UicToolTipDirective],\r\n templateUrl: './work-panel.component.html',\r\n styleUrl: './work-panel.component.scss'\r\n})\r\nexport class UicWorkPanelComponent implements AfterViewInit {\r\n @ViewChild('host', { read: ViewContainerRef, static: true })\r\n host!: ViewContainerRef;\r\n\r\n @Input() componentType?: Type<any>;\r\n @Input() componentInputs: Record<string, any> = {};\r\n @Input() tabs: WorkPanelTabConfig[] = [];\r\n @Input() width= '50%';\r\n\r\n @Output() tabsChange = new EventEmitter<WorkPanelTabConfig[]>();\r\n @Output() tabClosed = new EventEmitter<string>();\r\n @Output() tabSelected = new EventEmitter<string>();\r\n @Output() tabAdded = new EventEmitter<string>();\r\n @Output() addTabRequest = new EventEmitter<void>();\r\n @Output() fullViewChange = new EventEmitter<boolean>();\r\n\r\n @Input() minPosition = 1;\r\n @Input() showAddButton = true;\r\n fullView = false;\r\n isMinimized = false;\r\n\r\n activeTabId?: string;\r\n tabInstances: Array<WorkPanelTabConfig & { id: string; componentRef: ComponentRef<any> }> = [];\r\n private idCounter = 0;\r\n private initialized = false;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit(): void {\r\n this.initialized = true;\r\n this.initializeTabs();\r\n this.renderActiveTab();\r\n // Evita ExpressionChanged en el primer ciclo al crear dinamicamente.\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private initializeTabs() {\r\n if (this.tabs?.length) {\r\n this.tabs.forEach(tab => this.createTab(tab, false));\r\n } else if (this.componentType) {\r\n this.createTab(\r\n {\r\n label: this.componentInputs['title'] ?? 'Panel',\r\n componentType: this.componentType,\r\n componentInputs: this.componentInputs\r\n },\r\n false\r\n );\r\n }\r\n }\r\n\r\n changeSizeBtn(b:boolean){\r\n this.fullView = b;\r\n this.fullViewChange.emit( this.isFullViewActivated() )\r\n\r\n }\r\n\r\n addTab(tabConfig: WorkPanelTabConfig): string {\r\n // Si el host aun no esta listo, guardamos la definicion para crearla luego.\r\n if (!this.initialized || !this.host) {\r\n const id = tabConfig.id ?? `tab-${++this.idCounter}`;\r\n this.tabs.push({ ...tabConfig, id });\r\n this.activeTabId = id;\r\n this.isMinimized = false;\r\n return id;\r\n }\r\n\r\n const instance = this.createTab(tabConfig, true);\r\n this.activeTabId = instance.id;\r\n this.isMinimized = false;\r\n this.renderActiveTab();\r\n this.tabAdded.emit(instance.id);\r\n this.tabSelected.emit(instance.id);\r\n return instance.id;\r\n }\r\n\r\n requestNewTab() {\r\n this.addTabRequest.emit();\r\n }\r\n\r\n selectTab(id: string) {\r\n this.isMinimized = false;\r\n if (this.activeTabId === id) {\r\n this.minimizePanel();\r\n return;\r\n }\r\n this.activeTabId = id;\r\n this.renderActiveTab();\r\n this.tabSelected.emit(id);\r\n }\r\n\r\n closeTab(id: string) {\r\n const index = this.tabInstances.findIndex(tab => tab.id === id);\r\n if (index === -1) {\r\n return;\r\n }\r\n const [tab] = this.tabInstances.splice(index, 1);\r\n\r\n const viewIndex = this.host.indexOf(tab.componentRef.hostView);\r\n if (viewIndex > -1) {\r\n this.host.detach(viewIndex);\r\n }\r\n tab.componentRef.destroy();\r\n\r\n if (this.activeTabId === id) {\r\n const next = this.tabInstances[index] ?? this.tabInstances[index - 1];\r\n this.activeTabId = next?.id;\r\n }\r\n if (!this.activeTabId) {\r\n this.isMinimized = true;\r\n }\r\n this.renderActiveTab();\r\n this.emitTabsChange();\r\n this.tabClosed.emit(id);\r\n this.fullViewChange.emit(this.isFullViewActivated());\r\n }\r\n\r\n close() {\r\n if (this.activeTabId) {\r\n this.closeTab(this.activeTabId);\r\n }\r\n }\r\n\r\n minimizePanel() {\r\n this.isMinimized = true;\r\n this.activeTabId = '';\r\n this.fullViewChange.emit(this.isFullViewActivated()); \r\n }\r\n\r\n private createTab(tabConfig: WorkPanelTabConfig, emitChange = true) {\r\n if (!this.host) {\r\n throw new Error('WorkPanel host ViewContainerRef not ready');\r\n }\r\n const id = tabConfig.id ?? `tab-${++this.idCounter}`;\r\n const componentRef = this.host.createComponent(tabConfig.componentType);\r\n Object.assign(componentRef.instance, tabConfig.componentInputs ?? {});\r\n\r\n const viewIndex = this.host.indexOf(componentRef.hostView);\r\n if (viewIndex > -1) {\r\n this.host.detach(viewIndex);\r\n }\r\n\r\n const instance = { ...tabConfig, id, componentRef };\r\n this.tabInstances.push(instance);\r\n\r\n if (!this.activeTabId) {\r\n this.activeTabId = id;\r\n }\r\n if (emitChange) {\r\n this.emitTabsChange();\r\n }\r\n return instance;\r\n }\r\n\r\n private renderActiveTab() {\r\n while (this.host.length) {\r\n this.host.detach(0);\r\n }\r\n const active = this.tabInstances.find(tab => tab.id === this.activeTabId);\r\n if (active) {\r\n this.host.insert(active.componentRef.hostView);\r\n this.fullViewChange.emit(this.isFullViewActivated())\r\n }\r\n }\r\n\r\n private emitTabsChange() {\r\n const snapshot = this.tabInstances.map(({ componentRef, ...tab }) => ({ ...tab }));\r\n this.tabsChange.emit(snapshot);\r\n }\r\n\r\n private isFullViewActivated(){\r\n return !(this.isMinimized || !this.activeTabId) && this.fullView;\r\n }\r\n}\r\n","<div\r\n [class]=\"fullView ? 'open-panel' : 'mid-panel'\"\r\n [style]=\"fullView ?'':'width: {{width}};'\"\r\n [class.panel-hidden]=\"isMinimized || !activeTabId\"\r\n>\r\n <div class=\"panel-header\">\r\n <ui-button class=\"nomob\" (click)=\"minimizePanel()\" size=\"s\" tip=\"Minimizar\" [iconOnly]=\"true\" color=\"black\" type=\"bordered\" rightIcon=\"ri-subtract-fill\"></ui-button>\r\n @if (fullView) {\r\n <ui-button class=\"nomob\" (click)=\"changeSizeBtn(false)\" size=\"s\" tip=\"Reducir\" [iconOnly]=\"true\" color=\"black\" type=\"bordered\" rightIcon=\"ri-collapse-diagonal-fill\"></ui-button>\r\n } @else {\r\n <ui-button class=\"nomob\" (click)=\"changeSizeBtn(true)\" size=\"s\" tip=\"Agrandar\" [iconOnly]=\"true\" color=\"black\" type=\"bordered\" rightIcon=\"ri-expand-diagonal-fill\"></ui-button>\r\n }\r\n <ui-button (click)=\"close()\" size=\"s\" tip=\"Cerrar\" [iconOnly]=\"true\" color=\"black\" type=\"bordered\" rightIcon=\"ri-close-line\"></ui-button>\r\n </div>\r\n <div class=\"panel-overflow\">\r\n <!-- contenido dinamico -->\r\n <ng-container #host></ng-container>\r\n </div>\r\n</div>\r\n@if (tabInstances.length > 0) {\r\n <div class=\"panel-nav-bar\">\r\n <div class=\"panel-tabs\">\r\n @for (tab of tabInstances; track tab.id) {\r\n <div class=\"minimized-panel\" [class.active]=\"tab.id === activeTabId\">\r\n <button class=\"min-btn\" type=\"button\" (click)=\"selectTab(tab.id)\">\r\n <i [class]=\"tab.icon?tab.icon : 'ri-dossier-line'\"></i>\r\n <div class=\"min-text\">{{ tab.label }}</div>\r\n </button>\r\n <i (click)=\"closeTab(tab.id)\" class=\"close-btn ri-close-line\"></i>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { Component, ElementRef, inject, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ui-overlay-card',\r\n imports: [],\r\n templateUrl: './overlay-card.component.html',\r\n styleUrl: './overlay-card.component.scss'\r\n})\r\nexport class UicOverlayCardComponent {\r\n\r\n @ViewChild('menuTemplate') menuTemplate!: TemplateRef<any>;\r\n private overlayRef!: OverlayRef;\r\n\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly host = inject(ElementRef<HTMLElement>);\r\n\r\n selectedSet = new Set<string | number>();\r\n allSelected = false;\r\n\r\n overlayPositions: ConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\r\n { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\r\n ];\r\n\r\n openMenu() {\r\n if (this.overlayRef) {\r\n this.close();\r\n return;\r\n }\r\n\r\n const origin = this.host.nativeElement.querySelector('.button-container');\r\n\r\n const positionStrategy: FlexibleConnectedPositionStrategy =\r\n this.overlay.position()\r\n .flexibleConnectedTo(origin as HTMLElement)\r\n .withPositions(this.overlayPositions)\r\n .withFlexibleDimensions(false)\r\n .withPush(true);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\r\n });\r\n\r\n const portal = new TemplatePortal(this.menuTemplate, this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n this.overlayRef.backdropClick().subscribe(() => this.close());\r\n }\r\n\r\n\r\n\r\n close() {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null!;\r\n }\r\n }\r\n}\r\n","<!-- Botón -->\r\n <div (click)=\"openMenu()\" class=\"button-container\">\r\n <ng-content select=\"[button]\"></ng-content>\r\n </div>\r\n\r\n<!-- Menú -->\r\n<ng-template #menuTemplate>\r\n <div class=\"action-menu\">\r\n <ng-content select=\"[content]\"></ng-content>\r\n </div>\r\n</ng-template>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { UiBtnTab } from '../tabs-button/tabs-button.component';\n\n\n@Component({\n selector: 'ui-accordion',\n imports: [],\n templateUrl: './accordion.component.html',\n styleUrl: './accordion.component.scss',\n animations: [\n trigger('accordionBody', [\n transition(':enter', [\n style({\n height: 0,\n opacity: 0,\n paddingTop: 0,\n paddingBottom: 0\n }),\n animate('200ms ease', style({ height: '*', opacity: 1, paddingTop: '*', paddingBottom: '*' }))\n ]),\n transition(':leave', [\n style({ height: '*', opacity: 1, paddingTop: '*', paddingBottom: '*' }),\n animate('200ms ease', style({ height: 0, opacity: 0, paddingTop: 0, paddingBottom: 0 }))\n ])\n ])\n ]\n})\n\nexport class UicAccordionComponent {\n @Input() tabs:UiBtnTab[] = [];\n @Input() activeTab = '';\n @Output() activeTabChange = new EventEmitter<string>();\n\n changeTab(key:string) {\n this.activeTab = key;\n this.activeTabChange.emit(this.activeTab);\n }\n}\n","<div class=\"accordion-reel\">\r\n @for (item of tabs; track $index) {\r\n <div class=\"accordion-item\">\r\n <div class=\"accordion-header\" (click)=\"changeTab(item.key)\">\r\n <div class=\"accordion-header-title\"> \r\n @if (item.icon) {\r\n <i [class]=\"item.icon\"></i> \r\n }\r\n {{item.text}} \r\n </div>\r\n @if (item.subtitle) {\r\n <div class=\"accordion-header-subtitle\">{{item.subtitle}}</div>\r\n }\r\n </div>\r\n @if (activeTab == item.key) {\r\n <div class=\"accordion-body\" [@accordionBody]>\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';\r\nimport { UicOverlayCardComponent } from '../overlay-card/overlay-card.component';\r\nimport { UicInputComponent } from '../inputs/input/input.component';\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ButtonColor, UicButtonComponent } from '../button/button.component';\r\nimport { InputWrapperComponent } from '../inputs/input-wrapper/input-wrapper.component';\r\nimport { createValueAccessor } from '../dynamic-form/base-value-accessot';\r\n\r\ntype selectId = UicTagData[];\r\nconst base = createValueAccessor<selectId>();\r\n\r\n@Component({\r\n selector: 'ui-tag-selector',\r\n imports: [\r\n UicOverlayCardComponent,\r\n UicInputComponent,\r\n FormsModule,\r\n InputWrapperComponent,\r\n UicButtonComponent\r\n],\r\n templateUrl: './tag-selector.component.html',\r\n styleUrl: './tag-selector.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => UicTagSelectorComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class UicTagSelectorComponent extends base{\r\n @Input() icon = ''; // Icono externo\r\n @Input() iconColor: ButtonColor = 'black';\r\n // TEXTO\r\n @Input() label = '';\r\n @Input() error = '';\r\n @Input() tip = '';\r\n @Input() disabled = false;\r\n @Input() loading = false;\r\n\r\n @Input() placeholder = 'Buscar...';\r\n @Input() buttonText = 'Agregar tag';\r\n @Input() predefinedTitle = 'Tags predefinidos';\r\n @Input() newTagTitle = 'Nuevo tag';\r\n \r\n @Input() predefinedLabels:UicTagData[] = [];\r\n\r\n selectedTags:UicTagData[] = [];\r\n \r\n\r\n filterText = '';\r\n newTagLabel = '';\r\n filterArray:UicTagData[] = [];\r\n\r\n ngOnInit(){\r\n this.filter();\r\n }\r\n\r\n\r\n filter(){\r\n this.filterArray = this.predefinedLabels.filter(f=>f.name.toLocaleLowerCase().includes(this.filterText.toLocaleLowerCase()));\r\n }\r\n select(tag:UicTagData){\r\n const idx = this.selectedTags.findIndex(f=>f.name == tag.name);\r\n if (idx!=-1){\r\n this.selectedTags.splice(idx,1);\r\n }else{\r\n this.selectedTags.push(tag);\r\n }\r\n this.notifyChange(this.selectedTags);\r\n }\r\n \r\n removeTag(tag:UicTagData){\r\n this.select(tag);\r\n }\r\n\r\n createTag(){\r\n const newTag = {\r\n id:0,\r\n color:'blue',\r\n name:this.newTagLabel\r\n };\r\n this.predefinedLabels.push(newTag);\r\n this.filterText = '';\r\n this.filter();\r\n this.select(newTag);\r\n this.newTagLabel = '';\r\n }\r\n\r\n isSelected(name: string): boolean {\r\n return this.selectedTags.some(t => t.name === name);\r\n }\r\n\r\n override writeValue(value: UicTagData[] | null | undefined): void {\r\n const safeValue = Array.isArray(value) ? value : [];\r\n super.writeValue(safeValue);\r\n this.selectedTags = [...safeValue];\r\n }\r\n\r\n}\r\n\r\nexport interface UicTagData{\r\n id:number;\r\n name:string;\r\n color:string;\r\n icon?: string;\r\n}\r\n","\r\n<ui-input-wrapper\r\n [icon]=\"icon\"\r\n [iconColor]=\"iconColor\"\r\n [label]=\"label\"\r\n [error]=\"error\"\r\n [tip]=\"tip\"\r\n [disabled]=\"disabled\">\r\n<div class=\"tags-reel\">\r\n @for (item of selectedTags; track $index) {\r\n <div [class]=\"'selected-tag lc-'+item.color\" ><i [class]=\"item.icon??'ri-hashtag'\"></i>{{item.name}} <i (click)=\"removeTag(item)\" class=\"ri-close-large-line close-icon\"></i> </div>\r\n }\r\n <ui-overlay-card>\r\n <ui-button button type=\"bordered\" color=\"black\" icon=\"ri-add-line\" size=\"s\">{{buttonText}}</ui-button>\r\n <ng-container content >\r\n\r\n <ui-input internalIcon=\"ri-search-line\" internalIconColor=\"blue\">\r\n <input [placeholder]=\"placeholder\" [(ngModel)]=\"filterText\" (ngModelChange)=\"filter()\" >\r\n </ui-input>\r\n <div class=\"tags-overflow\">\r\n <div class=\"tags-title\">{{predefinedTitle}}</div>\r\n @for(item of filterArray; track $index){\r\n <div (click)=\"select(item)\" class=\"tag-option\"> \r\n <i class=\"ri-circle-fill f-grey\"></i> \r\n <div style=\"flex: 1 1;\">{{item.name}}</div> \r\n @if ( isSelected(item.name) ) {\r\n <i class=\"ri-check-line\"></i> \r\n }\r\n </div>\r\n }\r\n <div class=\"new-tag\"> \r\n <div class=\"new-tag-label\">{{newTagTitle}}:</div>\r\n <div class=\"input-tag\">\r\n <input [(ngModel)]=\"newTagLabel\" type=\"text\">\r\n <ui-button (click)=\"createTag()\" size=\"s\" [iconOnly]=\"true\" icon=\"ri-add-line\"></ui-button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ui-overlay-card>\r\n</div> \r\n</ui-input-wrapper>","import { animate, style, transition, trigger } from \"@angular/animations\";\r\nexport const simpleFade = trigger('simpleFade', [\r\n transition(':enter',[style({opacity:0}), animate('.3s ease', style({opacity:1}))]),\r\n transition(':leave', [animate('.3s ease', style({opacity:0}))])\r\n ]);","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'firstCapital'\r\n})\r\nexport class FirstCapitalPipe implements PipeTransform {\r\n\r\n transform(str: string, max = 0): string {\r\n \r\n if (str == null) {\r\n return '-';\r\n }\r\n if ( str.length < 4 ){\r\n return str;\r\n }\r\n if (max != 0 && str.length > max) {\r\n str = str.substring(0, max) + '...';\r\n }\r\n return str.replace(/\\b(\\p{L}+)(\\p{L}*)/gu, (match, firstChar, rest) => {\r\n const capitalizedFirstChar = firstChar.normalize('NFD').charAt(0).toUpperCase() + firstChar.slice(1).toLowerCase();\r\n const lowerRest = rest.toLowerCase();\r\n return capitalizedFirstChar + lowerRest;\r\n });\r\n }\r\n\r\n}\r\n","// COMPONENTS\r\nexport * from './lib/components/button/button.component';\r\nexport * from './lib/components/inputs/checkbox/checkbox.component';\r\nexport * from './lib/components/inputs/toggle-button/toggle-button.component';\r\nexport * from './lib/components/dynamic-form/form-wrapper/form-wrapper.component';\r\nexport * from './lib/components/dynamic-form/steps-form/steps-form.component';\r\nexport * from './lib/components/dynamic-form/steps-form/step-tabs/step-tabs.component';\r\nexport * from './lib/components/inputs/input/input.component';\r\nexport * from './lib/components/inputs/date-picker/date-picker.component';\r\nexport * from './lib/components/inputs/multy-searcher/multy-searcher.component';\r\nexport * from './lib/components/inputs/uic-searcher/uic-searcher.component';\r\nexport * from './lib/components/inputs/file-input/file-input.component';\r\nexport * from './lib/components/inputs/select/select.component';\r\nexport * from './lib/components/inputs/phone-input/phone-input.component';\r\nexport * from './lib/components/inputs/multy-select/multy-select.component';\r\nexport * from './lib/components/inputs/ui-radio/ui-radio.component';\r\nexport * from './lib/components/dropdown-container/dropdown-container.component';\r\nexport * from './lib/components/dropdown-container/dropdown-close.directive';\r\nexport * from './lib/components/inputs/time-picker/time-picker.component';\r\nexport * from './lib/components/table/table.component';\r\nexport * from './lib/components/short-table/short-table.component';\r\nexport * from './lib/components/table/table.models';\r\nexport * from './lib/components/skeleton-loader/skeleton-loader.component';\r\nexport * from './lib/components/push-alerts/alert-container/alert-container.component';\r\nexport * from './lib/components/inputs/ui-slider/ui-slider.component';\r\nexport * from './lib/components/uic-action-button/uic-action-button.component';\r\nexport * from './lib/components/signature-pad/signature-pad.component';\r\nexport * from './lib/components/dropdown-container/dropdown-container.component';\r\nexport * from './lib/components/kpi-card/kpi-card.component';\r\nexport * from './lib/components/uic-portlet-card/uic-portlet-card.component';\r\nexport * from './lib/components/tabs-button/tabs-button.component';\r\nexport * from './lib/components/work-panel/work-panel.component';\r\nexport * from './lib/components/overlay-card/overlay-card.component';\r\nexport * from './lib/components/accordion/accordion.component';\r\nexport * from './lib/components/pool-options/pool-options.component';\r\nexport * from './lib/components/tag-selector/tag-selector.component';\r\n\r\n// ANIMATIONS\r\nexport * from './lib/animations/animatios.index';\r\n\r\n// FORMULARIOS\r\nexport * from './lib/components/dynamic-form/form.models';\r\n\r\n// SERVICIOS\r\nexport * from './lib/services/modal.service';\r\nexport * from './lib/services/modaRef';\r\nexport * from './lib/services/modal.constant';\r\nexport * from './lib/services/tiny-alert.service';\r\nexport * from './lib/components/tiny-alert/tiny-alert.model';\r\nexport * from './lib/services/push-alert.service';\r\n\r\n// PIPES\r\nexport * from './lib/pipes/name-inits.pipe';\r\nexport * from './lib/pipes/first-capital.pipe';\r\n\r\n// DIRECTIVES\r\nexport * from './lib/directives/tool-tip.directive';\r\n\r\n// HELPERS\r\nexport * from './lib/helpers';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["base","nextId","i1","i1.UicModalService","i2","i1.UicPushAlertService"],"mappings":"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"}
|