@catarina-ds/angular 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -774,13 +774,14 @@ class Dialog {
|
|
|
774
774
|
// Referencia al overlay creado
|
|
775
775
|
overlayRef;
|
|
776
776
|
variant = 'surface';
|
|
777
|
-
size = '
|
|
777
|
+
size = { width: '300px', height: '200px' };
|
|
778
778
|
customClass = '';
|
|
779
779
|
closs = new EventEmitter();
|
|
780
780
|
// Referencia al template que contiene el ng-content
|
|
781
781
|
dialogTemplate;
|
|
782
782
|
createOverlayConfig() {
|
|
783
|
-
const positionStrategy = this.overlay
|
|
783
|
+
const positionStrategy = this.overlay
|
|
784
|
+
.position()
|
|
784
785
|
.global()
|
|
785
786
|
.centerHorizontally()
|
|
786
787
|
.centerVertically();
|
|
@@ -789,7 +790,7 @@ class Dialog {
|
|
|
789
790
|
scrollStrategy: this.overlay.scrollStrategies.block(),
|
|
790
791
|
hasBackdrop: true,
|
|
791
792
|
backdropClass: 'cdk-overlay-dark-backdrop',
|
|
792
|
-
panelClass: ['cat-dialog-overlay-panel', this.variant, this.
|
|
793
|
+
panelClass: ['cat-dialog-overlay-panel', this.variant, this.customClass],
|
|
793
794
|
};
|
|
794
795
|
}
|
|
795
796
|
openDialog() {
|
|
@@ -803,7 +804,7 @@ class Dialog {
|
|
|
803
804
|
this.closeDialog();
|
|
804
805
|
});
|
|
805
806
|
// Escucha la tecla Escape para cerrar
|
|
806
|
-
this.overlayRef.keydownEvents().subscribe(event => {
|
|
807
|
+
this.overlayRef.keydownEvents().subscribe((event) => {
|
|
807
808
|
if (event.key === 'Escape') {
|
|
808
809
|
this.closeDialog();
|
|
809
810
|
}
|
|
@@ -818,7 +819,7 @@ class Dialog {
|
|
|
818
819
|
}
|
|
819
820
|
}
|
|
820
821
|
get dialogClasses() {
|
|
821
|
-
return `${this.variant}
|
|
822
|
+
return `${this.variant} {this.customClass}`;
|
|
822
823
|
}
|
|
823
824
|
ngOnInit() {
|
|
824
825
|
this.openDialog();
|
|
@@ -827,11 +828,11 @@ class Dialog {
|
|
|
827
828
|
this.closeDialog();
|
|
828
829
|
}
|
|
829
830
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: Dialog, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
830
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: Dialog, isStandalone: true, selector: "cat-dialog", inputs: { variant: "variant", size: "size", customClass: "customClass" }, outputs: { closs: "closs" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true, static: true }], ngImport: i0, template: "<!-- Template que se renderiza dentro del overlay del CDK -->\n<ng-template #dialogTemplate>\n <section CDrag
|
|
831
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: Dialog, isStandalone: true, selector: "cat-dialog", inputs: { variant: "variant", size: "size", customClass: "customClass" }, outputs: { closs: "closs" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true, static: true }], ngImport: i0, template: "<!-- Template que se renderiza dentro del overlay del CDK -->\n<ng-template #dialogTemplate>\n <section\n [style]=\"`height: ${size.height} !important; width: ${size.width} !important;`\"\n CDrag\n [class]=\"dialogClasses\"\n >\n <ng-content></ng-content>\n </section>\n</ng-template>\n", styles: ["section{position:relative;border-radius:18px;overflow:auto;padding:.75rem 1.5rem;box-sizing:border-box;min-width:7em;min-height:7em;cursor:grab;-webkit-user-select:none;user-select:none}.surface{background-color:var(--element-color-4)}.elevated{background-color:var(--neutral-color-0)}.outlined{background-color:var(--element-color-3);border:2px solid var(--neutral-color-9)}\n"], dependencies: [{ kind: "directive", type: Drag, selector: "[CDrag]" }] });
|
|
831
832
|
}
|
|
832
833
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: Dialog, decorators: [{
|
|
833
834
|
type: Component,
|
|
834
|
-
args: [{ selector: 'cat-dialog', imports: [Drag], template: "<!-- Template que se renderiza dentro del overlay del CDK -->\n<ng-template #dialogTemplate>\n <section CDrag
|
|
835
|
+
args: [{ selector: 'cat-dialog', imports: [Drag], template: "<!-- Template que se renderiza dentro del overlay del CDK -->\n<ng-template #dialogTemplate>\n <section\n [style]=\"`height: ${size.height} !important; width: ${size.width} !important;`\"\n CDrag\n [class]=\"dialogClasses\"\n >\n <ng-content></ng-content>\n </section>\n</ng-template>\n", styles: ["section{position:relative;border-radius:18px;overflow:auto;padding:.75rem 1.5rem;box-sizing:border-box;min-width:7em;min-height:7em;cursor:grab;-webkit-user-select:none;user-select:none}.surface{background-color:var(--element-color-4)}.elevated{background-color:var(--neutral-color-0)}.outlined{background-color:var(--element-color-3);border:2px solid var(--neutral-color-9)}\n"] }]
|
|
835
836
|
}], propDecorators: { variant: [{
|
|
836
837
|
type: Input
|
|
837
838
|
}], size: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catarina-ds-angular.mjs","sources":["../../../projects/catarina/src/lib/tokens/icon-provider.token.ts","../../../projects/catarina/src/lib/design-system/icon/icon.ts","../../../projects/catarina/src/lib/design-system/icon/icon.html","../../../projects/catarina/src/lib/design-system/button/button.ts","../../../projects/catarina/src/lib/design-system/button/button.html","../../../projects/catarina/src/lib/design-system/panels/card/card.ts","../../../projects/catarina/src/lib/design-system/panels/card/card.html","../../../projects/catarina/src/lib/design-system/panels/accordion/accordion.ts","../../../projects/catarina/src/lib/design-system/panels/accordion/accordion.html","../../../projects/catarina/src/lib/design-system/panels/accordion-group/accordion-group.ts","../../../projects/catarina/src/lib/design-system/panels/accordion-group/accordion-group.html","../../../projects/catarina/src/lib/design-system/form/cat-input/cat-input.ts","../../../projects/catarina/src/lib/design-system/form/color-input/color-input.ts","../../../projects/catarina/src/lib/design-system/form/color-input/color-input.html","../../../projects/catarina/src/lib/design-system/form/select-input/select-input.ts","../../../projects/catarina/src/lib/design-system/form/select-input/select-input.html","../../../projects/catarina/src/lib/directives/drag.ts","../../../projects/catarina/src/lib/design-system/overlays/dialog/dialog.ts","../../../projects/catarina/src/lib/design-system/overlays/dialog/dialog.html","../../../projects/catarina/src/lib/design-system/overlays/drawer/drawer.ts","../../../projects/catarina/src/lib/design-system/overlays/drawer/drawer.html","../../../projects/catarina/src/lib/design-system/panels/menu/menu.ts","../../../projects/catarina/src/lib/design-system/panels/menu/menu.html","../../../projects/catarina/src/lib/theming/theming.ts","../../../projects/catarina/src/lib/utils/icon-utils.ts","../../../projects/catarina/src/public-api.ts","../../../projects/catarina/src/catarina-ds-angular.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface IconProvider {\n getPath(name: string): string;\n}\n\nexport const ICON_PROVIDER = new InjectionToken<IconProvider>('ICON_PROVIDER', {\n providedIn: 'root',\n factory: () => ({\n // Proporciona un fallback por defecto si no se configura\n getPath: (name: string) => `icons/${name}.svg`\n })\n});\n","import { Component, Input, inject, signal, PLATFORM_ID, OnDestroy } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ICON_PROVIDER } from '../../tokens/icon-provider.token';\n\n@Component({\n selector: 'cat-icon',\n imports: [],\n templateUrl: './icon.html',\n styleUrl: './icon.css',\n})\nexport class Icon implements OnDestroy {\n private sanitizer = inject(DomSanitizer);\n private platformId = inject(PLATFORM_ID);\n private iconProvider = inject(ICON_PROVIDER);\n\n private abortController?: AbortController;\n \n svgContent = signal<SafeHtml>('');\n isLoading = signal<boolean>(false);\n isVisible = signal<boolean>(false);\n\n @Input() size: string = '1em';\n @Input() color = 'currentColor';\n\n ngOnDestroy() {\n this.abortController?.abort();\n }\n\n // Usa el nombre del icono con el provider configurado\n @Input() set name(iconName: string) {\n if (!iconName) {\n this.isVisible.set(false);\n return;\n }\n\n const path = this.iconProvider.getPath(iconName);\n\n // Cancela la petición anterior si existe\n this.abortController?.abort();\n\n // Si el path es el fallback por defecto (icons/), no muestra nada\n if (!path || path.startsWith('icons/')) {\n this.isVisible.set(false);\n return;\n }\n\n this.loadSvg(path);\n }\n\n // Usa el path directo del icono\n @Input() set src(path: string) {\n if (!path) {\n this.isVisible.set(false);\n return;\n }\n \n // Cancela la petición anterior si existe\n this.abortController?.abort();\n this.loadSvg(path);\n }\n\n private loadSvg(path: string) {\n // En SSR, no muestra nada\n if (!isPlatformBrowser(this.platformId)) {\n this.isVisible.set(false);\n return;\n }\n\n // Limpia el contenido y oculta el icono mientras carga\n this.isLoading.set(true);\n this.svgContent.set('');\n this.isVisible.set(false);\n\n // Crea un nuevo AbortController para esta petición\n this.abortController = new AbortController();\n\n fetch(path, { \n signal: this.abortController.signal,\n mode: 'cors',\n cache: 'default'\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n return response.text();\n })\n .then(svg => {\n // Verifica que el contenido sea un SVG válido\n if (!this.isValidSvg(svg)) {\n console.error(`Invalid SVG received from ${path}. Response is not valid SVG.`);\n this.isVisible.set(false);\n return;\n }\n\n const processed = this.processSvg(svg);\n if (processed) {\n this.svgContent.set(this.sanitizer.bypassSecurityTrustHtml(processed));\n this.isVisible.set(true);\n } else {\n this.isVisible.set(false);\n }\n })\n .catch((error) => {\n // Ignora el error de abort\n if (error.name === 'AbortError') {\n return;\n }\n \n console.error(`Error loading icon from ${path}:`, error.message);\n this.isVisible.set(false);\n })\n .finally(() => {\n this.isLoading.set(false);\n });\n }\n\n private isValidSvg(content: string): boolean {\n // Realiza validaciones estrictas para asegurar que sea SVG\n const trimmed = content.trim();\n \n // 1. Verifica que comience con <svg (ignorando espacios y declaraciones XML)\n const svgRegex = /^\\s*(<\\?xml[^>]*>\\s*)?<\\s*svg\\b/i;\n if (!svgRegex.test(trimmed)) {\n return false;\n }\n\n // 2. Verifica que termine con </svg>\n if (!trimmed.includes('</svg>')) {\n return false;\n }\n\n // 3. Verifica que no contenga <html>, <head>, <body> (indicaría HTML completo)\n const htmlTags = ['<html', '<head', '<body', '<!DOCTYPE html'];\n for (const tag of htmlTags) {\n if (trimmed.toLowerCase().includes(tag.toLowerCase())) {\n return false;\n }\n }\n\n // 4. Verifica que tenga un tamaño razonable para un icono (máximo 100KB)\n if (content.length > 100 * 1024) {\n console.warn('SVG file is too large for an icon:', content.length, 'bytes');\n return false;\n }\n\n return true;\n }\n\n private processSvg(svg: string): string | null {\n // Valida el SVG antes de procesarlo\n if (!this.isValidSvg(svg)) {\n return null;\n }\n\n // En SSR, usa procesamiento simple con regex (no hay DOMParser)\n if (!isPlatformBrowser(this.platformId)) {\n return this.processSvgWithRegex(svg);\n }\n\n // En Browser, usa DOMParser para procesamiento robusto\n try {\n const parser = new DOMParser();\n const doc = parser.parseFromString(svg, 'image/svg+xml');\n \n // Verifica que no haya errores de parseo\n const parserError = doc.querySelector('parsererror');\n if (parserError) {\n console.error('SVG parsing error:', parserError.textContent);\n return null;\n }\n\n const svgElement = doc.querySelector('svg');\n if (!svgElement) {\n return null;\n }\n\n // Verifica que sea realmente un elemento SVG\n if (svgElement.tagName.toLowerCase() !== 'svg') {\n return null;\n }\n\n // Modifica solo el elemento <svg> raíz\n svgElement.removeAttribute('width');\n svgElement.removeAttribute('height');\n\n // Cambia fill y stroke solo si no son \"none\"\n const currentFill = svgElement.getAttribute('fill');\n if (currentFill && currentFill !== 'none') {\n svgElement.setAttribute('fill', 'currentColor');\n }\n\n const currentStroke = svgElement.getAttribute('stroke');\n if (currentStroke && currentStroke !== 'none') {\n svgElement.setAttribute('stroke', 'currentColor');\n }\n\n // Asegura el viewBox (requerido para escalado)\n if (!svgElement.hasAttribute('viewBox')) {\n svgElement.setAttribute('viewBox', '0 0 24 24');\n }\n\n // Serializa el SVG de vuelta a string\n return new XMLSerializer().serializeToString(svgElement);\n } catch (error) {\n console.error('Error processing SVG:', error);\n return null;\n }\n }\n\n private processSvgWithRegex(svg: string): string {\n // Realiza procesamiento simple con regex para SSR (donde no hay DOMParser)\n let processed = svg;\n\n // Remueve width y height solo del tag <svg> de apertura\n processed = processed.replace(/(<svg[^>]*?)\\s+width=\"[^\"]*\"/i, '$1');\n processed = processed.replace(/(<svg[^>]*?)\\s+height=\"[^\"]*\"/i, '$1');\n\n // Cambia fill a currentColor si existe y no es \"none\"\n processed = processed.replace(\n /(<svg[^>]*?\\s+fill=\")(?!none)([^\"]*)(\")/i, \n '$1currentColor$3'\n );\n\n // Cambia stroke a currentColor si existe y no es \"none\"\n processed = processed.replace(\n /(<svg[^>]*?\\s+stroke=\")(?!none)([^\"]*)(\")/i, \n '$1currentColor$3'\n );\n\n // Asegura el viewBox si no existe\n if (!/viewBox=/i.test(processed)) {\n processed = processed.replace(\n /(<svg[^>]*?)>/i, \n '$1 viewBox=\"0 0 24 24\">'\n );\n }\n\n return processed;\n }\n}","@if (isVisible()) {\n <span [innerHTML]=\"svgContent()\" [style.width]=\"size\" [style.height]=\"size\" [style.display]=\"'inline-flex'\"\n [style.color]=\"color\" class=\"cat-icon\">\n </span>\n}","import { Component, Input, Output, EventEmitter, HostBinding } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Icon } from '../icon/icon';\n\n@Component({\n selector: 'cat-button',\n imports: [Icon],\n templateUrl: './button.html',\n styleUrl: './button.scss',\n})\nexport class Button {\n @Input() variant: 'primary' | 'secondary' | 'contrast' | 'outline' | 'ghost' = 'primary';\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() disabled = false;\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input() iconLeft?: string;\n @Input() iconCenter?: string;\n @Input() iconRight?: string;\n @Input() customClass = '';\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n get buttonClasses(): string {\n return `cat-button ${this.variant} ${this.size} ${this.customClass}`;\n }\n\n get iconSize(): string {\n const sizes = { sm: '16px', md: '20px', lg: '24px' };\n return sizes[this.size];\n }\n\n @HostBinding('attr.data-button-class') get dataCustomClass() {\n return this.customClass;\n }\n\n handleClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n}\n","<button [class]=\"buttonClasses\" [disabled]=\"disabled\" [type]=\"type\" (click)=\"handleClick($event)\">\n @if (iconLeft) {\n <cat-icon [name]=\"iconLeft\" [size]=\"iconSize\" class=\"icon-left\"> </cat-icon>\n }\n\n <span class=\"button-content\">\n @if (iconCenter) {\n <cat-icon [name]=\"iconCenter\" [size]=\"iconSize\" class=\"icon-center\"> </cat-icon>\n }\n <ng-content></ng-content>\n </span>\n\n @if (iconRight) {\n <cat-icon [name]=\"iconRight\" [size]=\"iconSize\" class=\"icon-right\"> </cat-icon>\n }\n</button>\n","import { Component, Input, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'cat-card',\n templateUrl: './card.html',\n styleUrls: ['./card.css']\n})\nexport class Card {\n @Input() variant: 'surface' | 'outlined' | 'elevated' = 'surface';\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() width: string = 'auto';\n @Input() customClass = '';\n\n // Expone las clases como atributos de datos\n @HostBinding('attr.data-card-variant') get dataVariant() {\n return this.variant;\n }\n \n @HostBinding('attr.data-card-size') get dataSize() {\n return this.size;\n }\n \n @HostBinding('attr.data-card-class') get dataCustomClass() {\n return this.customClass;\n }\n\n /*// También exponer como CSS Custom Properties\n @HostBinding('style.--card-variant') get cssVariant() {\n return this.variant;\n }\n \n @HostBinding('style.--card-custom-class') get cssCustomClass() {\n return this.customClass;\n }\n*/\n get cardClasses(): string {\n return `cat-card ${this.variant} ${this.size} ${this.customClass}`;\n }\n}","<section [class]=\"cardClasses\" [attr.data-class]=\"customClass\" [style]=\"`width: ${width};`\">\n <ng-content></ng-content>\n</section>","import { Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';\nimport { Button as CButton } from '../../button/button';\nimport { NgClass, NgIf } from '@angular/common';\n\n@Component({\n selector: 'cat-accordion',\n imports: [CButton, NgClass, NgIf],\n templateUrl: './accordion.html',\n styleUrl: './accordion.css',\n})\nexport class Accordion {\n @Input() accordionId?: string;\n @Input() status: boolean = false;//false = unactive\n @Input() label: string = 'Accordion Name';\n\n @Input() disabled = false;\n @Input() customClass = '';\n\n // Propiedades del botón\n @Input() buttonVariant: 'primary' | 'secondary' | 'contrast' | 'outline' | 'ghost' = 'secondary';\n @Input() buttonSize: 'sm' | 'md' | 'lg' = 'md';\n @Input() iconLeft: boolean = false;\n @Input() iconCenter: boolean = false;\n @Input() iconRight: boolean = true;\n\n // Propiedades del panel\n @Input() scrolleable: boolean = false;\n @Input() variant: 'surface' | 'outlined' | 'elevated' = 'surface';\n\n @Output() updateAccordionGroupStatusOutput = new EventEmitter<string>();\n\n @ViewChild('buttonRef', { static: false }) buttonRef!: ElementRef;\n buttonWidth: number = 0;\n\n ngAfterViewInit() {\n // Obtiene el ancho del botón después de renderizar\n setTimeout(() => {\n if (this.buttonRef) {\n const button = this.buttonRef.nativeElement.querySelector('button');\n if (button) {\n this.buttonWidth = button.offsetWidth;\n }\n }\n });\n }\n\n // Actualiza cuando cambia el label o otros inputs que afectan el tamaño\n ngOnChanges() {\n if (this.buttonRef) {\n const button = this.buttonRef.nativeElement.querySelector('button');\n if (button) {\n this.buttonWidth = button.offsetWidth;\n }\n }\n }\n updateAccordionGroupStatus() {\n this.status = !this.status;\n this.updateAccordionGroupStatusOutput.emit(this.accordionId!);\n }\n\n forceStatus(newStatus: boolean): void {\n this.status = newStatus;\n };\n\n @HostBinding('attr.data-accordion-class') get dataCustomClass() {\n return this.customClass;\n }\n\n get panelClasses(): string {\n return `${this.variant} ${this.customClass} ${this.scrolleable ? 'scrolleable' : undefined}`;\n }\n}\n","<section class=\"accordion\">\n <div>\n <cat-button [iconLeft]=\"iconLeft ? (status ? 'minus' : 'plus') : undefined\"\n [iconCenter]=\"iconCenter ? (status ? 'minus' : 'plus') : undefined\"\n [iconRight]=\"iconRight && status ? 'minus' : 'plus'\" (clicked)=\"updateAccordionGroupStatus()\"\n [variant]=\"buttonVariant\" [size]=\"buttonSize\" customClass=\"accordion-button\" [disabled]=\"disabled\">\n {{label}}\n </cat-button>\n </div>\n <div [class]=\"panelClasses\" [ngClass]=\"status ? 'accordion-panel-active': 'accordion-panel-unactive'\">\n <ng-content *ngIf=\"status\"></ng-content>\n </div>\n</section>","import { Component, ContentChildren, HostBinding, Input, QueryList } from '@angular/core';\nimport { Accordion as CAccordion } from '../accordion/accordion';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'cat-accordion-group',\n imports: [],\n templateUrl: './accordion-group.html',\n styleUrl: './accordion-group.css',\n})\nexport class AccordionGroup {\n @Input() singleExpand: boolean = true;\n @Input() customClass: string = '';\n\n @ContentChildren(CAccordion) accordions!: QueryList<CAccordion>;\n\n accordionActiveId?: String;\n\n sub?: Subscription | null;\n\n ngAfterContentInit(): void {\n if (this.singleExpand) {\n this.accordions.forEach(acc => {\n this.sub = acc.updateAccordionGroupStatusOutput.subscribe(id => {\n this.handleOpen(id);\n });\n });\n }\n }\n\n handleOpen(id: string) {\n this.accordions.forEach(acc => acc.forceStatus(false));\n const target = this.accordions.find(acc => acc.accordionId === id);\n if (this.accordionActiveId === id) {\n target?.forceStatus(false);\n this.accordionActiveId = undefined;\n } else {\n target?.forceStatus(true);\n this.accordionActiveId = id;\n }\n }\n\n @HostBinding('attr.data-accordion-group-class') get dataCustomClass() {\n return this.customClass;\n }\n\n get accordionGroupClasses() {\n return `${this.customClass}`;\n }\n}\n","<section [class]=\"accordionGroupClasses\">\n <ng-content></ng-content>\n</section>","import { Directive, ElementRef, Renderer2, OnInit, inject, Optional, Self, PLATFORM_ID } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Directive({\n selector: '[catInput]',\n standalone: true,\n host: {\n '[class.cat-input]': 'true',\n '[class.md]': 'true',\n '[class.invalid]': 'isInvalid'\n }\n})\nexport class CatInput implements OnInit {\n private el = inject(ElementRef);\n private platformId = inject(PLATFORM_ID);\n @Optional() @Self() public control: NgControl | null = inject(NgControl, { optional: true, self: true });\n\n private static stylesInjected = false;\n\n ngOnInit(): void {\n if (this.el.nativeElement.tagName.toLowerCase() !== 'input') {\n console.warn('catInput directive can only be used on <input> elements');\n return;\n }\n\n // Inyecta los estilos solo una vez\n if (!CatInput.stylesInjected && isPlatformBrowser(this.platformId)) {\n this.injectStyles();\n CatInput.stylesInjected = true;\n }\n }\n\n private injectStyles(): void {\n const style = document.createElement('style');\n style.textContent = `\n .cat-input {\n border: 1px solid var(--neutral-color-3);\n background-color: var(--neutral-color-0);\n color: var(--neutral-color-9);\n border-radius: 18px;\n outline: none;\n transition: all 0.2s;\n max-width: 100%;\n box-sizing: border-box;\n }\n\n .cat-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .cat-input::placeholder {\n color: var(--neutral-color-6);\n transition: font-size 0.2s;\n }\n\n .cat-input:focus::placeholder {\n font-size: 0.7em;\n }\n\n .cat-input:focus {\n border: 1px solid var(--neutral-color-9);\n color: var(--neutral-color-9);\n -webkit-text-fill-color: var(--neutral-color-9);\n }\n\n .cat-input.invalid,\n .cat-input.ng-invalid.ng-touched {\n border: 1px solid red;\n }\n\n .cat-input.ng-valid.ng-touched {\n border: 1px solid green;\n }\n\n .cat-input:-webkit-autofill,\n .cat-input:-webkit-autofill:hover,\n .cat-input:-webkit-autofill:focus,\n .cat-input:-webkit-autofill:active {\n -webkit-box-shadow: 0 0 0 1000px var(--neutral-color-1) inset;\n box-shadow: 0 0 0 1000px var(--neutral-color-1) inset;\n -webkit-text-fill-color: var(--neutral-color-9);\n }\n\n\n .cat-input.md {\n padding: 0.5rem 1rem;\n font-size: 1rem;\n }\n\n .cat-input.sm {\n padding: 0.25rem 0.75rem;\n font-size: 0.875rem;\n }\n\n .cat-input.lg {\n padding: 0.75rem 1.5rem;\n font-size: 1.125rem;\n }\n `;\n document.head.appendChild(style);\n }\n\n get isInvalid(): boolean {\n return !!(this.control && this.control.invalid && this.control.touched);\n }\n}","import { Component, forwardRef, Input } from '@angular/core';\nimport { Icon as CIcon } from '../../icon/icon';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'cat-color-input',\n imports: [CIcon],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorInput),\n multi: true\n }],\n templateUrl: './color-input.html',\n styleUrl: './color-input.css',\n})\nexport class ColorInput implements ControlValueAccessor {\n value: string = '#000000';\n @Input() icon?: boolean = false;\n @Input() size: string ='2em';\n\n private onChange = (value: any) => { };\n onTouched = () => { };\n\n onInput(event: Event) {\n const newValue = (event.target as HTMLInputElement).value;\n this.value = newValue;\n this.onChange(newValue); // Informa al componente padre del cambio de valor\n }\n\n // Métodos requeridos por ControlValueAccessor\n writeValue(value: any): void {\n this.value = value || '#000000';\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n\n this.onTouched = fn;\n }\n}\n","<style>\n div {\n position: relative;\n aspect-ratio: 1/1;\n }\n\n div:hover {\n cursor: grab;\n }\n input {\n width: 100%;\n aspect-ratio: 1/1;\n top: 0;\n left: 0;\n }\n cat-icon {\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n }\n</style>\n<!-- input-color.html -->\n<div [style.height]=\"size\">\n <input type=\"color\" [style]=\"icon ? 'opacity: 0;' : 'opacity: 100%;'\" [value]=\"value\" (input)=\"onInput($event)\" (blur)=\"onTouched()\">\n @if (icon) {\n <cat-icon [style.height]=\"size\" size=\"100%\" name=\"palette\"></cat-icon> \n }\n</div>","import { NgClass } from '@angular/common';\nimport { Component, ElementRef, forwardRef, HostBinding, HostListener, Input, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CatInput } from \"../cat-input/cat-input\";\nimport { Button } from '../../button/button';\n\n@Component({\n selector: 'cat-select-input',\n imports: [\n CatInput,\n NgClass,\n Button\n ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectInput),\n multi: true\n }],\n templateUrl: './select-input.html',\n styleUrl: './select-input.css',\n})\nexport class SelectInput implements ControlValueAccessor {\n @ViewChild('input') inputEl!: ElementRef<HTMLElement>;\n @ViewChild('optionsContainer', { static: false }) optionsContainer!: ElementRef<HTMLElement>;\n\n @Input() transform?: string; //This option basicly allow to the consumer put the options at the side where he wants\n @Input() options?: string[];\n @Input() placeholder: string = '';\n @Input() type: 'string' | 'number' = 'string';\n\n value: string | number = '';\n active = false;\n isInsideMenu = false;\n\n @Input() variant: 'surface' | 'elevated' | 'outlined' = 'surface';\n @Input() scrolleable: boolean = false;\n @Input() customClass: string = '';\n\n //@Output() selected = new EventEmitter<string>();\n\n // Accesibilidad\n @HostListener('document:click', ['$event'])\n outerClick(event: Event) {\n if (!this.el.nativeElement.contains(event.target)) {\n this.active = false;\n }\n };\n\n toggleActive() {\n this.active = !this.active;\n }\n\n constructor(\n private el: ElementRef,\n ) { }\n\n onChange = (value: any) => { };\n onTouched = () => { };\n\n // Aquí comienzan los eventos de ControlValueAccessor\n writeValue(value: any): void {\n this.value = value;\n };\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n // Aquí terminan los eventos de ControlValueAccessor\n\n choseValue(option: any) {\n this.value = option;\n this.onChange(option);\n this.onTouched();\n this.active = false;\n //this.selected.emit(option);\n };\n\n @HostBinding('attr.data-select-input-class') get dataCustomClass() {\n return this.customClass;\n }\n\n get selectInputClass(): string {\n return `${this.variant} ${this.scrolleable ? 'scrolleable' : ''}`;\n }\n}\n","<section class=\"select-input-container\">\n <input catInput #input [value]=\"value\" [type]=\"type\" readonly id=\"select\" (mousedown)=\"toggleActive()\"\n [placeholder]=\"placeholder\" class=\"select-input\">\n<section #optionsContainer role=\"listbox\" [class]=\"selectInputClass\" class=\"options\"\n [ngClass]=\"active ? 'options-active' : 'options-unactive'\" [style.transform]=\"transform\">\n @if (active) {\n @for (option of options; track $index) {\n <cat-button customClass=\"select-input-option\" (clicked)=\"choseValue(option)\" variant=\"ghost\">{{ option }}</cat-button>\n }\n<!-- <div role=\"option\" *ngFor=\"let option of options\" (mousedown)=\"choseValue(option)\">\n {{ option }}\n </div> -->\n }\n</section>\n</section>","import { AfterViewInit, Directive, DOCUMENT, ElementRef, Inject, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[CDrag]'\n})\nexport class Drag implements AfterViewInit {\n private offsetX = 0;\n private offsetY = 0;\n private dragging = false;\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n @Inject(DOCUMENT) private document: Document\n ) { }\n\n ngAfterViewInit() {\n const el = this.el.nativeElement as HTMLElement;\n\n // Si el elemento no tiene position seteado, establece absolute\n if (typeof window !== 'undefined') {\n const computedStyle = window.getComputedStyle(el);\n if (computedStyle.position === 'static') {\n this.renderer.setStyle(el, 'position', 'absolute');\n }\n }\n\n\n el.addEventListener('mousedown', (e: MouseEvent) => {\n this.dragging = true;\n this.offsetX = e.clientX - el.offsetLeft;\n this.offsetY = e.clientY - el.offsetTop;\n el.style.cursor = 'grabbing';\n });\n\n this.document.addEventListener('mousemove', (e: MouseEvent) => {\n if (this.dragging) {\n el.style.left = e.clientX - this.offsetX + 'px';\n el.style.top = e.clientY - this.offsetY + 'px';\n }\n });\n\n this.document.addEventListener('mouseup', () => {\n this.dragging = false;\n el.style.cursor = 'grab';\n });\n }\n\n}\n","import { Component, EventEmitter, Input, Output, OnDestroy, OnInit, inject, ViewContainerRef, TemplateRef, ViewChild } from '@angular/core';\nimport { Overlay, OverlayRef, OverlayConfig } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Drag } from '../../../directives/drag';\n\n@Component({\n selector: 'cat-dialog',\n imports: [Drag],\n templateUrl: './dialog.html',\n styleUrl: './dialog.css',\n})\nexport class Dialog implements OnInit, OnDestroy {\n // Inyecta el servicio Overlay del CDK\n private overlay = inject(Overlay);\n // ViewContainerRef necesario para crear el TemplatePortal\n private viewContainerRef = inject(ViewContainerRef);\n // Referencia al overlay creado\n private overlayRef?: OverlayRef;\n\n @Input() variant: 'surface' | 'outlined' | 'elevated' = 'surface';\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() customClass = '';\n @Output() closs = new EventEmitter<boolean>();\n\n // Referencia al template que contiene el ng-content\n @ViewChild('dialogTemplate', { static: true }) dialogTemplate!: TemplateRef<any>;\n\n private createOverlayConfig(): OverlayConfig {\n const positionStrategy = this.overlay.position()\n .global()\n .centerHorizontally()\n .centerVertically();\n\n return {\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-dark-backdrop',\n panelClass: ['cat-dialog-overlay-panel', this.variant, this.size, this.customClass],\n };\n }\n\n private openDialog() {\n const config = this.createOverlayConfig();\n \n this.overlayRef = this.overlay.create(config);\n \n // TemplatePortal permite renderizar un template (con ng-content) dentro del overlay\n const portal = new TemplatePortal(this.dialogTemplate, this.viewContainerRef);\n \n this.overlayRef.attach(portal);\n \n // Escucha cuando se hace clic en el backdrop y cierra el dialog\n this.overlayRef.backdropClick().subscribe(() => {\n this.closeDialog();\n });\n \n // Escucha la tecla Escape para cerrar\n this.overlayRef.keydownEvents().subscribe(event => {\n if (event.key === 'Escape') {\n this.closeDialog();\n }\n });\n }\n\n closeDialog() {\n if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n this.closs.emit(false);\n }\n }\n\n get dialogClasses(): string {\n return `${this.variant} ${this.size} ${this.customClass}`;\n }\n\n ngOnInit() {\n this.openDialog();\n }\n\n ngOnDestroy() {\n this.closeDialog();\n }\n}","<!-- Template que se renderiza dentro del overlay del CDK -->\n<ng-template #dialogTemplate>\n <section CDrag [class]=\"dialogClasses\">\n <ng-content></ng-content>\n </section>\n</ng-template>","import { Component, EventEmitter, Input, Output, OnDestroy, OnInit, inject, ViewContainerRef, TemplateRef, ViewChild } from '@angular/core';\nimport { Overlay, OverlayRef, OverlayConfig } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Button } from '../../button/button';\n\n@Component({\n selector: 'cat-drawer',\n imports: [Button],\n templateUrl: './drawer.html',\n styleUrl: './drawer.css',\n})\nexport class Drawer implements OnInit, OnDestroy {\n // Inyecta el servicio Overlay del CDK\n private overlay = inject(Overlay);\n // ViewContainerRef necesario para crear el TemplatePortal\n private viewContainerRef = inject(ViewContainerRef);\n // Referencia al overlay creado\n private overlayRef?: OverlayRef;\n\n @Input() side: 'left' | 'right' | 'top' | 'bottom' = 'left';\n @Input() variant: 'surface' | 'elevated' | 'outlined' = 'surface';\n @Input() customClass: string = '';\n @Output() closs = new EventEmitter<boolean>();\n\n // Referencia al template que contiene el ng-content\n @ViewChild('drawerTemplate', { static: true }) drawerTemplate!: TemplateRef<any>;\n\n private createOverlayConfig(): OverlayConfig {\n // Crea estrategia de posicionamiento global\n const positionStrategy = this.overlay.position().global();\n \n switch (this.side) {\n case 'left':\n positionStrategy.left('0');\n break;\n case 'right':\n positionStrategy.right('0');\n break;\n case 'top':\n positionStrategy.top('0');\n break;\n case 'bottom':\n positionStrategy.bottom('0');\n break;\n }\n\n return {\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-dark-backdrop',\n panelClass: ['cat-drawer-overlay-panel', this.side, this.variant, this.customClass],\n };\n }\n\n private openDrawer() {\n const config = this.createOverlayConfig();\n \n\n this.overlayRef = this.overlay.create(config);\n \n // Crea un portal con el template del drawer\n // TemplatePortal permite renderizar un template (con ng-content) dentro del overlay\n const portal = new TemplatePortal(this.drawerTemplate, this.viewContainerRef);\n \n // Adjunta el portal al overlay, esto renderiza el template dentro del overlay\n this.overlayRef.attach(portal);\n \n // Escucha cuando se hace clic en el backdrop y cierra el drawer\n this.overlayRef.backdropClick().subscribe(() => {\n this.closeDrawer();\n });\n \n // Escucha la tecla Escape para cerrar\n this.overlayRef.keydownEvents().subscribe(event => {\n if (event.key === 'Escape') {\n this.closeDrawer();\n }\n });\n }\n\n closeDrawer() {\n if (this.overlayRef) {\n // Desconecta el portal del overlay\n this.overlayRef.detach();\n // Limpia todos los recursos del overlay\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n // Emite el evento de cierre\n this.closs.emit(false);\n }\n }\n\n get drawerClasses(): string {\n return `${this.variant} ${this.side} ${this.customClass}`;\n }\n\n ngOnInit() {\n this.openDrawer();\n }\n\n ngOnDestroy() {\n this.closeDrawer();\n }\n}","<!-- Template que se renderiza dentro del overlay del CDK -->\n<ng-template #drawerTemplate>\n <section [class]=\"drawerClasses\">\n <cat-button iconCenter=\"x-mark\" variant=\"contrast\" class=\"close-button\" (clicked)=\"closeDrawer()\"></cat-button>\n <ng-content></ng-content>\n </section>\n </ng-template>","import { isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, HostBinding, inject, Input, OnDestroy, PLATFORM_ID, signal, ViewChild } from '@angular/core';\nimport { Icon } from '../../icon/icon';\n\n@Component({\n selector: 'cat-menu',\n imports: [Icon],\n templateUrl: './menu.html',\n styleUrl: './menu.css',\n})\nexport class Menu implements AfterViewInit, OnDestroy {\n /* @Input() variant: 'surface' | 'elevated' | 'outlined' = 'surface';\n @Input() customClass: string = '';\n\n @HostBinding('attr.data-menu-class') get dataCustomClass() {\n return this.customClass;\n }\n\n get menuClasses(): string {\n return `${this.variant} ${this.customClass}`;\n } */\n\n @ViewChild('menuContainer', { static: false }) menuContainer!: ElementRef<HTMLDivElement>;\n @ViewChild('menuContent', { static: false }) menuContent!: ElementRef<HTMLDivElement>;\n @ViewChild('dropdown', { static: false }) dropdown?: ElementRef<HTMLDivElement>;\n\n private platformId = inject(PLATFORM_ID);\n private resizeObserver?: ResizeObserver;\n private mutationObserver?: MutationObserver;\n\n showMoreButton = signal(false);\n isDropdownOpen = signal(false);\n overflowItems = signal<HTMLElement[]>([]);\n\n ngAfterViewInit() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n setTimeout(() => {\n this.checkOverflow();\n this.setupObservers();\n }, 0);\n }\n\n ngOnDestroy() {\n this.resizeObserver?.disconnect();\n this.mutationObserver?.disconnect();\n if (isPlatformBrowser(this.platformId)) {\n document.removeEventListener('click', this.handleOutsideClick);\n }\n }\n\n private setupObservers() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.resizeObserver = new ResizeObserver(() => {\n this.checkOverflow();\n });\n this.resizeObserver.observe(this.menuContent.nativeElement);\n\n document.addEventListener('click', this.handleOutsideClick);\n }\n\n private handleOutsideClick = (event: MouseEvent) => {\n if (!this.isDropdownOpen()) return;\n\n const target = event.target as HTMLElement;\n const clickedInside = this.menuContainer.nativeElement.contains(target) ||\n this.dropdown?.nativeElement.contains(target);\n\n if (!clickedInside) {\n this.isDropdownOpen.set(false);\n }\n };\n\n private checkOverflow() {\n // Si el dropdown está abierto, no recalcula el overflow\n if (this.isDropdownOpen()) {\n const overflowItems = this.overflowItems();\n if (overflowItems.length > 0) {\n this.showMoreButton.set(true);\n setTimeout(() => {\n //this.waitForDropdownAndUpdate();\n this.updateDropdownContent();\n }, 0);\n }\n return;\n }\n\n const container = this.menuContent.nativeElement;\n\n // Restaura todos los elementos que puedan estar en el dropdown\n this.restoreOverflowItems();\n\n const items = Array.from(container.children) as HTMLElement[];\n\n if (items.length === 0) {\n this.showMoreButton.set(false);\n this.overflowItems.set([]);\n return;\n }\n\n const menuItems = items.filter(item =>\n !item.classList.contains('more-button')\n );\n\n if (menuItems.length === 0) {\n this.showMoreButton.set(false);\n this.overflowItems.set([]);\n return;\n }\n\n // Restaura todos los elementos a su estado visible antes de calcular\n menuItems.forEach(item => {\n item.style.display = '';\n });\n\n // Fuerza un reflow para obtener posiciones correctas\n container.offsetHeight;\n\n // Detecta elementos en la primera fila vs elementos en filas adicionales\n const firstItemTop = menuItems[0]?.getBoundingClientRect().top;\n const firstRowItems: HTMLElement[] = [];\n const overflowItems: HTMLElement[] = [];\n\n menuItems.forEach(item => {\n const itemTop = item.getBoundingClientRect().top;\n // Usa tolerancia de 1px para manejar diferencias de redondeo\n if (Math.abs(itemTop - firstItemTop) <= 1) {\n firstRowItems.push(item);\n } else {\n overflowItems.push(item);\n }\n });\n\n // Si hay elementos en overflow, muestra el botón More y oculta los elementos overflow\n const needsMoreButton = overflowItems.length > 0;\n this.showMoreButton.set(needsMoreButton);\n\n // Oculta elementos que están en la segunda fila o más\n overflowItems.forEach(item => {\n item.style.display = 'none';\n });\n\n // Mantiene visibles solo los elementos de la primera fila\n firstRowItems.forEach(item => {\n item.style.display = '';\n });\n\n if (needsMoreButton) {\n this.overflowItems.set(overflowItems);\n } else {\n this.overflowItems.set([]);\n }\n }\n\n private updateDropdownContent() {\n const menuWrapper = this.menuContainer.nativeElement.closest('.menu-wrapper');\n if (!menuWrapper) {\n return;\n }\n\n const dropdown = menuWrapper.querySelector('.dropdown') as HTMLElement;\n if (!dropdown) {\n return;\n }\n\n const dropdownContent = dropdown.querySelector('.dropdown-content');\n if (!dropdownContent) {\n return;\n }\n\n // Limpia el contenido previo del dropdown (por si hay algún elemento)\n this.restoreOverflowItems();\n\n const overflowItems = this.overflowItems();\n\n if (overflowItems.length === 0) {\n return;\n }\n\n //const menuContent = this.menuContent.nativeElement; //No se usa porque los elementos ya están en el dropdown\n\n overflowItems.forEach(item => {\n // Mueve el elemento real al dropdown\n // El elemento ya está oculto (display: none), así que lo hace visible y lo mueve al dropdown\n item.style.display = '';\n item.style.visibility = 'visible';\n\n // Mueve el elemento al dropdown\n dropdownContent.appendChild(item);\n });\n }\n\n // Esta función sirve para mover los elementos del dropdown al menu-content\n // NO los elimina del signal overflowItems, ni del DOM, (por lo que genera sobrecarga de memoria)\n private restoreOverflowItems() {\n const overflowItems = this.overflowItems();\n const menuContent = this.menuContent.nativeElement;\n\n overflowItems.forEach(item => {\n // Si el elemento está en el dropdown, lo mueve de vuelta al menu-content\n const dropdownContent = item.closest('.dropdown-content');\n if (dropdownContent && item.parentElement === dropdownContent) {\n // Oculta el elemento y lo mueve de vuelta al menu-content\n item.style.display = 'none';\n menuContent.appendChild(item);\n }\n });\n }\n\n toggleDropdown() {\n const newState = !this.isDropdownOpen();\n\n if (!newState) {\n // Si se está cerrando, restaura los elementos a su posición original\n this.restoreOverflowItems();\n }\n\n this.isDropdownOpen.set(newState);\n\n if (newState) {\n // Recalcula el overflow antes de abrir el dropdown\n setTimeout(() => {\n this.checkOverflow();\n // Esperar a que el dropdown esté en el DOM antes de actualizar\n //this.waitForDropdownAndUpdate();\n this.updateDropdownContent();\n }, 0);\n }\n }\n}","<div class=\"menu-wrapper\">\n <div class=\"menu\" #menuContainer>\n <div class=\"menu-content\" #menuContent>\n <ng-content></ng-content>\n </div>\n\n @if (showMoreButton()) {\n <button class=\"more-button\" (click)=\"toggleDropdown()\" [attr.aria-expanded]=\"isDropdownOpen()\" type=\"button\">\n <span>More</span>\n @if(isDropdownOpen()){\n <cat-icon size=\"16px\" name=\"chevron-up\"></cat-icon>\n } @else {\n <cat-icon size=\"16px\" name=\"chevron-down\"></cat-icon>\n }\n<!-- <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\"\n [style.transform]=\"isDropdownOpen() ? 'rotate(180deg)' : 'rotate(0deg)'\">\n <path d=\"M4 6l4 4 4-4z\" />\n </svg> -->\n </button>\n }\n </div>\n\n @if (showMoreButton() && isDropdownOpen()) {\n <div class=\"dropdown\" #dropdown>\n <div class=\"dropdown-content\">\n <!-- Aquí se moverán los elementos overflow -->\n </div>\n </div>\n }\n</div>","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\ninterface RGB {\n red: number;\n green: number;\n blue: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Theming {\n //Light Theme = False\n private activeThemeSubject = new BehaviorSubject<boolean>(false);\n public activeTheme$ = this.activeThemeSubject.asObservable();\n\n //Palettes\n private allPalettesSubject = new BehaviorSubject<string[][]>([]);\n public allPalettes$ = this.allPalettesSubject.asObservable();\n\n generatePalettes(color: string, dark: boolean): string[][] {\n this.activeThemeSubject.next(dark);\n\n const primaryColors = this.calculatePrimaryColor(color);\n\n const dynamicPalettes = this.calculateDynamicPalettes(dark);\n\n // Asigna todas las paletas a variables locales\n let allPalettes: string[][] = [primaryColors];\n\n allPalettes = allPalettes.concat([dynamicPalettes.neutral]);\n allPalettes = allPalettes.concat([dynamicPalettes.elements]);\n\n this.allPalettesSubject.next(allPalettes);\n\n // Aplica el tema\n this.applyTheme(allPalettes);\n\n return this.allPalettesSubject.value;\n }\n\n public calculatePrimaryColor(color: string) {\n // Paso 1: Calcula el color\n const colors = this.hexToRgb(color);\n\n // Paso 2: Obtiene la paleta primaria (estática, no cambia con el tema)\n const primaryColors: string[] = this.palette(colors, false, 4); // Always use light theme\n\n const allPalettes = [\n primaryColors, // Keep primary (static)\n this.allPalettesSubject.value[1],\n this.allPalettesSubject.value[2]\n ];\n\n this.allPalettesSubject.next(allPalettes);\n\n this.applyTheme(allPalettes);\n \n return primaryColors;\n }\n\n public calculateDynamicPalettes(dark: boolean): { neutral: string[], elements: string[] } {\n const theme: boolean = dark;\n const contrastTheme: boolean = !dark;\n this.activeThemeSubject.next(dark);\n\n\n // Calcula los colores neutrales (cambian con el tema)\n const neutralColors: string[] = contrastTheme\n ? this.palette({ red: 255, green: 255, blue: 255 }, false, 9)\n : this.palette({ red: 0, green: 0, blue: 0 }, true, 9);\n\n // Calcula los colores de elementos (cambian con el tema)\n const elementsColors: string[] = this.elementsColors(theme, 3, 40);\n\n // Actualiza el array de paletas con valores dinámicos\n const allPalettes = [\n this.allPalettesSubject.value[0], // Keep primary (static)\n neutralColors,\n elementsColors\n ];\n\n this.allPalettesSubject.next(allPalettes);\n\n // Aplica el tema a las variables CSS\n this.applyTheme(allPalettes);\n\n return {\n neutral: neutralColors,\n elements: elementsColors\n };\n }\n\n private palette(colors: { red: number, green: number, blue: number }, dark: boolean, steps: number) {\n //Palette\n const colorsReturn: string[] = [];\n\n const contrastTheme: boolean = !dark;\n const target = contrastTheme ? 0 : 255;\n\n const umbralR = (target - colors.red) / steps;\n const umbralG = (target - colors.green) / steps;\n const umbralB = (target - colors.blue) / steps;\n\n for (let i = 0; i <= steps; i++) {\n const r = Math.round(colors.red + umbralR * i);\n const g = Math.round(colors.green + umbralG * i);\n const b = Math.round(colors.blue + umbralB * i);\n\n colorsReturn.push(`rgb(${r}, ${g}, ${b})`);\n }\n return colorsReturn;\n };\n\n private elementsColors(theme: boolean, iteration: number, amplitude: number) {\n amplitude = amplitude / iteration;\n const colorsReturn: string[] = [];\n for (let i = 0; i < 5; i++) {\n let r = theme ? 0 + ((85 - 0) / (5 - 1) * i) : 0 + ((255 - 0) / (5 - 1) * i);\n let g = theme ? 0 + ((85 - 0) / (5 - 1) * i) : 0 + ((255 - 0) / (5 - 1) * i);\n let b = theme ? 0 + ((85 - 0) / (5 - 1) * i) : 0 + ((255 - 0) / (5 - 1) * i);\n\n if (i <= iteration && theme === false) {\n r = r + amplitude;\n g = g + amplitude;\n b = b + amplitude;\n } else if (theme === false) {\n r = r - amplitude;\n g = g - amplitude;\n b = b - amplitude;\n }\n colorsReturn.push(`rgb(${r}, ${g},${b})`);\n };\n return colorsReturn;\n };\n\n private applyTheme(palettes: string[][]): void {\n if (typeof document === 'undefined') return;\n\n const root = document.documentElement;\n const cssVars = [\n { prefix: '--primary-color-', index: 0 },\n { prefix: '--neutral-color-', index: 1 },\n { prefix: '--element-color-', index: 2 }\n ];\n\n cssVars.forEach(({ prefix, index }) => {\n palettes[index]?.forEach((color, i) => {\n root.style.setProperty(`${prefix}${i}`, color);\n });\n });\n }\n\n private hexToRgb(hex: string): RGB {\n const value = parseInt(hex.replace('#', ''), 16);\n return {\n red: (value >> 16) & 255,\n green: (value >> 8) & 255,\n blue: value & 255,\n };\n }\n}","export const ICON_BASE_PATH = 'safirial-icons';\n\nexport const iconList = [\n 'academic-cap',\n 'adjustments-horizontal',\n 'adjustments-vertical',\n 'archive-box',\n 'archive-box-arrow-down',\n 'archive-box-x-mark',\n 'arrow-down',\n 'arrow-down-circle',\n 'arrow-down-left',\n 'arrow-down-on-square',\n 'arrow-down-on-square-stack',\n 'arrow-down-right',\n 'arrow-down-tray',\n 'arrow-left',\n 'arrow-left-circle',\n 'arrow-left-end-on-rectangle',\n 'arrow-left-start-on-rectangle',\n 'arrow-long-down',\n 'arrow-long-left',\n 'arrow-long-right',\n 'arrow-long-up',\n 'arrow-path',\n 'arrow-path-rounded-square',\n 'arrow-right',\n 'arrow-right-circle',\n 'arrow-right-end-on-rectangle',\n 'arrow-right-start-on-rectangle',\n 'arrow-top-right-on-square',\n 'arrow-trending-down',\n 'arrow-trending-up',\n 'arrow-turn-down-left',\n 'arrow-turn-down-right',\n 'arrow-turn-left-down',\n 'arrow-turn-left-up',\n 'arrow-turn-right-down',\n 'arrow-turn-right-up',\n 'arrow-turn-up-left',\n 'arrow-turn-up-right',\n 'arrow-up',\n 'arrow-up-circle',\n 'arrow-up-left',\n 'arrow-up-on-square',\n 'arrow-up-on-square-stack',\n 'arrow-up-right',\n 'arrow-up-tray',\n 'arrow-uturn-down',\n 'arrow-uturn-left',\n 'arrow-uturn-right',\n 'arrow-uturn-up',\n 'arrows-pointing-in',\n 'arrows-pointing-out',\n 'arrows-right-left',\n 'arrows-up-down',\n 'at-symbol',\n 'backspace',\n 'backward',\n 'banknotes',\n 'bars-2',\n 'bars-3',\n 'bars-3-bottom-left',\n 'bars-3-bottom-right',\n 'bars-3-center-left',\n 'bars-4',\n 'bars-arrow-down',\n 'bars-arrow-up',\n 'battery-0',\n 'battery-100',\n 'battery-50',\n 'beaker',\n 'bell',\n 'bell-alert',\n 'bell-slash',\n 'bell-snooze',\n 'bold',\n 'bolt',\n 'bolt-slash',\n 'book-open',\n 'bookmark',\n 'bookmark-slash',\n 'bookmark-square',\n 'briefcase',\n 'bug-ant',\n 'building-library',\n 'building-office',\n 'building-office-2',\n 'building-storefront',\n 'cake',\n 'calculator',\n 'calendar',\n 'calendar-date-range',\n 'calendar-days',\n 'camera',\n 'chart-bar',\n 'chart-bar-square',\n 'chart-pie',\n 'chat-bubble-bottom-center',\n 'chat-bubble-bottom-center-text',\n 'chat-bubble-left',\n 'chat-bubble-left-ellipsis',\n 'chat-bubble-left-right',\n 'chat-bubble-oval-left',\n 'chat-bubble-oval-left-ellipsis',\n 'check',\n 'check-badge',\n 'check-circle',\n 'chevron-double-down',\n 'chevron-double-left',\n 'chevron-double-right',\n 'chevron-double-up',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'chevron-up-down',\n 'circle-stack',\n 'clipboard',\n 'clipboard-document',\n 'clipboard-document-check',\n 'clipboard-document-list',\n 'clock',\n 'cloud',\n 'cloud-arrow-down',\n 'cloud-arrow-up',\n 'code-bracket',\n 'code-bracket-square',\n 'cog',\n 'cog-6-tooth',\n 'cog-8-tooth',\n 'command-line',\n 'computer-desktop',\n 'cpu-chip',\n 'credit-card',\n 'cube',\n 'cube-transparent',\n 'currency-bangladeshi',\n 'currency-dollar',\n 'currency-euro',\n 'currency-pound',\n 'currency-rupee',\n 'currency-yen',\n 'cursor-arrow-rays',\n 'cursor-arrow-ripple',\n 'device-phone-mobile',\n 'device-tablet',\n 'divide',\n 'document',\n 'document-arrow-down',\n 'document-arrow-up',\n 'document-chart-bar',\n 'document-check',\n 'document-currency-bangladeshi',\n 'document-currency-dollar',\n 'document-currency-euro',\n 'document-currency-pound',\n 'document-currency-rupee',\n 'document-currency-yen',\n 'document-duplicate',\n 'document-magnifying-glass',\n 'document-minus',\n 'document-plus',\n 'document-text',\n 'ellipsis-horizontal',\n 'ellipsis-horizontal-circle',\n 'ellipsis-vertical',\n 'email',\n 'envelope',\n 'envelope-open',\n 'equals',\n 'exclamation-circle',\n 'exclamation-triangle',\n 'eye',\n 'eye-dropper',\n 'eye-slash',\n 'face-frown',\n 'face-smile',\n 'film',\n 'finger-print',\n 'fire',\n 'flag',\n 'folder',\n 'folder-arrow-down',\n 'folder-minus',\n 'folder-open',\n 'folder-plus',\n 'forward',\n 'funnel',\n 'gif',\n 'gift',\n 'gift-top',\n 'github',\n 'globe-alt',\n 'globe-americas',\n 'globe-asia-australia',\n 'globe-europe-africa',\n 'h1',\n 'h2',\n 'h3',\n 'hand-raised',\n 'hand-thumb-down',\n 'hand-thumb-up',\n 'hashtag',\n 'heart',\n 'home',\n 'home-modern',\n 'identification',\n 'inbox',\n 'inbox-arrow-down',\n 'inbox-stack',\n 'information-circle',\n 'italic',\n 'key',\n 'language',\n 'lifebuoy',\n 'light-bulb',\n 'link',\n 'link-slash',\n 'linkedin',\n 'list-bullet',\n 'lock-closed',\n 'lock-open',\n 'magnifying-glass',\n 'magnifying-glass-circle',\n 'magnifying-glass-minus',\n 'magnifying-glass-plus',\n 'map',\n 'map-pin',\n 'megaphone',\n 'microphone',\n 'minus',\n 'minus-circle',\n 'moon',\n 'musical-note',\n 'newspaper',\n 'no-symbol',\n 'numbered-list',\n 'paint-brush',\n 'palette',\n 'paper-airplane',\n 'paper-clip',\n 'pause',\n 'pause-circle',\n 'pencil',\n 'pencil-square',\n 'percent-badge',\n 'phone',\n 'phone-arrow-down-left',\n 'phone-arrow-up-right',\n 'phone-x-mark',\n 'photo',\n 'play',\n 'play-circle',\n 'play-pause',\n 'plus',\n 'plus-circle',\n 'power',\n 'presentation-chart-bar',\n 'presentation-chart-line',\n 'printer',\n 'puzzle-piece',\n 'qr-code',\n 'question-mark-circle',\n 'queue-list',\n 'radio',\n 'receipt-percent',\n 'receipt-refund',\n 'rectangle-group',\n 'rectangle-stack',\n 'rocket-launch',\n 'rss',\n 'scale',\n 'scissors',\n 'server',\n 'server-stack',\n 'share',\n 'shield-check',\n 'shield-exclamation',\n 'shopping-bag',\n 'shopping-cart',\n 'signal',\n 'signal-slash',\n 'slash',\n 'sparkles',\n 'speaker-wave',\n 'speaker-x-mark',\n 'square-2-stack',\n 'square-3-stack-3d',\n 'squares-2x2',\n 'squares-plus',\n 'star',\n 'stop',\n 'stop-circle',\n 'strikethrough',\n 'sun',\n 'swatch',\n 'table-cells',\n 'tag',\n 'ticket',\n 'trash',\n 'trophy',\n 'truck',\n 'tv',\n 'underline',\n 'user',\n 'user-circle',\n 'user-group',\n 'user-minus',\n 'user-plus',\n 'users',\n 'variable',\n 'video-camera',\n 'video-camera-slash',\n 'view-columns',\n 'viewfinder-circle',\n 'wallet',\n 'wifi',\n 'window',\n 'wrench',\n 'wrench-screwdriver',\n 'x-circle',\n 'x-mark',\n] as const;\n\nexport type IconName = typeof iconList[number];\n\nexport function getIconPath(name: IconName): string {\n return `${ICON_BASE_PATH}/${name}.svg`;\n}\n","/*\n * Public API Surface of catarina\n */\n\n// design-system\nexport * from './lib/design-system/icon/icon';\nexport * from './lib/design-system/button/button';\n\n// Panels\nexport * from './lib/design-system/panels/card/card';\nexport * from './lib/design-system/panels/accordion/accordion';\nexport * from './lib/design-system/panels/accordion-group/accordion-group';\n\n//form\nexport * from './lib/design-system/form/cat-input/cat-input';\nexport * from './lib/design-system/form/color-input/color-input';\nexport * from './lib/design-system/form/select-input/select-input';\n\n//Pending https://tecsify.com/blog/input-en-html/\n/*export * from './lib/design-system/form/date-input/date-input';\nexport * from './lib/design-system/form/file-input/file-input';\nexport * from './lib/design-system/form/password-input/password-input';\nexport * from './lib/design-system/form/range-input/range-input';\nexport * from './lib/design-system/form/text-area-input/text-area-input';\nexport * from './lib/design-system/form/time-input/time-input';*/\n/*\nimage, search, telefono, reset, radio button, checkbox, button, email\n*/\n\n//Overlays\n//Pending\nexport * from './lib/design-system/overlays/dialog/dialog';\nexport * from './lib/design-system/overlays/drawer/drawer';\nexport * from './lib/design-system/panels/menu/menu';\n\n\n/*Services and Directives */\n\nexport * from './lib/directives/drag';\nexport * from './lib/theming/theming';\n\n// Tokens\nexport * from './lib/tokens/icon-provider.token';\n\n// Utils\nexport * from './lib/utils/icon-utils';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CButton","CAccordion","CIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catarina-ds-angular.mjs","sources":["../../../projects/catarina/src/lib/tokens/icon-provider.token.ts","../../../projects/catarina/src/lib/design-system/icon/icon.ts","../../../projects/catarina/src/lib/design-system/icon/icon.html","../../../projects/catarina/src/lib/design-system/button/button.ts","../../../projects/catarina/src/lib/design-system/button/button.html","../../../projects/catarina/src/lib/design-system/panels/card/card.ts","../../../projects/catarina/src/lib/design-system/panels/card/card.html","../../../projects/catarina/src/lib/design-system/panels/accordion/accordion.ts","../../../projects/catarina/src/lib/design-system/panels/accordion/accordion.html","../../../projects/catarina/src/lib/design-system/panels/accordion-group/accordion-group.ts","../../../projects/catarina/src/lib/design-system/panels/accordion-group/accordion-group.html","../../../projects/catarina/src/lib/design-system/form/cat-input/cat-input.ts","../../../projects/catarina/src/lib/design-system/form/color-input/color-input.ts","../../../projects/catarina/src/lib/design-system/form/color-input/color-input.html","../../../projects/catarina/src/lib/design-system/form/select-input/select-input.ts","../../../projects/catarina/src/lib/design-system/form/select-input/select-input.html","../../../projects/catarina/src/lib/directives/drag.ts","../../../projects/catarina/src/lib/design-system/overlays/dialog/dialog.ts","../../../projects/catarina/src/lib/design-system/overlays/dialog/dialog.html","../../../projects/catarina/src/lib/design-system/overlays/drawer/drawer.ts","../../../projects/catarina/src/lib/design-system/overlays/drawer/drawer.html","../../../projects/catarina/src/lib/design-system/panels/menu/menu.ts","../../../projects/catarina/src/lib/design-system/panels/menu/menu.html","../../../projects/catarina/src/lib/theming/theming.ts","../../../projects/catarina/src/lib/utils/icon-utils.ts","../../../projects/catarina/src/public-api.ts","../../../projects/catarina/src/catarina-ds-angular.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface IconProvider {\n getPath(name: string): string;\n}\n\nexport const ICON_PROVIDER = new InjectionToken<IconProvider>('ICON_PROVIDER', {\n providedIn: 'root',\n factory: () => ({\n // Proporciona un fallback por defecto si no se configura\n getPath: (name: string) => `icons/${name}.svg`\n })\n});\n","import { Component, Input, inject, signal, PLATFORM_ID, OnDestroy } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { isPlatformBrowser } from '@angular/common';\nimport { ICON_PROVIDER } from '../../tokens/icon-provider.token';\n\n@Component({\n selector: 'cat-icon',\n imports: [],\n templateUrl: './icon.html',\n styleUrl: './icon.css',\n})\nexport class Icon implements OnDestroy {\n private sanitizer = inject(DomSanitizer);\n private platformId = inject(PLATFORM_ID);\n private iconProvider = inject(ICON_PROVIDER);\n\n private abortController?: AbortController;\n \n svgContent = signal<SafeHtml>('');\n isLoading = signal<boolean>(false);\n isVisible = signal<boolean>(false);\n\n @Input() size: string = '1em';\n @Input() color = 'currentColor';\n\n ngOnDestroy() {\n this.abortController?.abort();\n }\n\n // Usa el nombre del icono con el provider configurado\n @Input() set name(iconName: string) {\n if (!iconName) {\n this.isVisible.set(false);\n return;\n }\n\n const path = this.iconProvider.getPath(iconName);\n\n // Cancela la petición anterior si existe\n this.abortController?.abort();\n\n // Si el path es el fallback por defecto (icons/), no muestra nada\n if (!path || path.startsWith('icons/')) {\n this.isVisible.set(false);\n return;\n }\n\n this.loadSvg(path);\n }\n\n // Usa el path directo del icono\n @Input() set src(path: string) {\n if (!path) {\n this.isVisible.set(false);\n return;\n }\n \n // Cancela la petición anterior si existe\n this.abortController?.abort();\n this.loadSvg(path);\n }\n\n private loadSvg(path: string) {\n // En SSR, no muestra nada\n if (!isPlatformBrowser(this.platformId)) {\n this.isVisible.set(false);\n return;\n }\n\n // Limpia el contenido y oculta el icono mientras carga\n this.isLoading.set(true);\n this.svgContent.set('');\n this.isVisible.set(false);\n\n // Crea un nuevo AbortController para esta petición\n this.abortController = new AbortController();\n\n fetch(path, { \n signal: this.abortController.signal,\n mode: 'cors',\n cache: 'default'\n })\n .then(response => {\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n return response.text();\n })\n .then(svg => {\n // Verifica que el contenido sea un SVG válido\n if (!this.isValidSvg(svg)) {\n console.error(`Invalid SVG received from ${path}. Response is not valid SVG.`);\n this.isVisible.set(false);\n return;\n }\n\n const processed = this.processSvg(svg);\n if (processed) {\n this.svgContent.set(this.sanitizer.bypassSecurityTrustHtml(processed));\n this.isVisible.set(true);\n } else {\n this.isVisible.set(false);\n }\n })\n .catch((error) => {\n // Ignora el error de abort\n if (error.name === 'AbortError') {\n return;\n }\n \n console.error(`Error loading icon from ${path}:`, error.message);\n this.isVisible.set(false);\n })\n .finally(() => {\n this.isLoading.set(false);\n });\n }\n\n private isValidSvg(content: string): boolean {\n // Realiza validaciones estrictas para asegurar que sea SVG\n const trimmed = content.trim();\n \n // 1. Verifica que comience con <svg (ignorando espacios y declaraciones XML)\n const svgRegex = /^\\s*(<\\?xml[^>]*>\\s*)?<\\s*svg\\b/i;\n if (!svgRegex.test(trimmed)) {\n return false;\n }\n\n // 2. Verifica que termine con </svg>\n if (!trimmed.includes('</svg>')) {\n return false;\n }\n\n // 3. Verifica que no contenga <html>, <head>, <body> (indicaría HTML completo)\n const htmlTags = ['<html', '<head', '<body', '<!DOCTYPE html'];\n for (const tag of htmlTags) {\n if (trimmed.toLowerCase().includes(tag.toLowerCase())) {\n return false;\n }\n }\n\n // 4. Verifica que tenga un tamaño razonable para un icono (máximo 100KB)\n if (content.length > 100 * 1024) {\n console.warn('SVG file is too large for an icon:', content.length, 'bytes');\n return false;\n }\n\n return true;\n }\n\n private processSvg(svg: string): string | null {\n // Valida el SVG antes de procesarlo\n if (!this.isValidSvg(svg)) {\n return null;\n }\n\n // En SSR, usa procesamiento simple con regex (no hay DOMParser)\n if (!isPlatformBrowser(this.platformId)) {\n return this.processSvgWithRegex(svg);\n }\n\n // En Browser, usa DOMParser para procesamiento robusto\n try {\n const parser = new DOMParser();\n const doc = parser.parseFromString(svg, 'image/svg+xml');\n \n // Verifica que no haya errores de parseo\n const parserError = doc.querySelector('parsererror');\n if (parserError) {\n console.error('SVG parsing error:', parserError.textContent);\n return null;\n }\n\n const svgElement = doc.querySelector('svg');\n if (!svgElement) {\n return null;\n }\n\n // Verifica que sea realmente un elemento SVG\n if (svgElement.tagName.toLowerCase() !== 'svg') {\n return null;\n }\n\n // Modifica solo el elemento <svg> raíz\n svgElement.removeAttribute('width');\n svgElement.removeAttribute('height');\n\n // Cambia fill y stroke solo si no son \"none\"\n const currentFill = svgElement.getAttribute('fill');\n if (currentFill && currentFill !== 'none') {\n svgElement.setAttribute('fill', 'currentColor');\n }\n\n const currentStroke = svgElement.getAttribute('stroke');\n if (currentStroke && currentStroke !== 'none') {\n svgElement.setAttribute('stroke', 'currentColor');\n }\n\n // Asegura el viewBox (requerido para escalado)\n if (!svgElement.hasAttribute('viewBox')) {\n svgElement.setAttribute('viewBox', '0 0 24 24');\n }\n\n // Serializa el SVG de vuelta a string\n return new XMLSerializer().serializeToString(svgElement);\n } catch (error) {\n console.error('Error processing SVG:', error);\n return null;\n }\n }\n\n private processSvgWithRegex(svg: string): string {\n // Realiza procesamiento simple con regex para SSR (donde no hay DOMParser)\n let processed = svg;\n\n // Remueve width y height solo del tag <svg> de apertura\n processed = processed.replace(/(<svg[^>]*?)\\s+width=\"[^\"]*\"/i, '$1');\n processed = processed.replace(/(<svg[^>]*?)\\s+height=\"[^\"]*\"/i, '$1');\n\n // Cambia fill a currentColor si existe y no es \"none\"\n processed = processed.replace(\n /(<svg[^>]*?\\s+fill=\")(?!none)([^\"]*)(\")/i, \n '$1currentColor$3'\n );\n\n // Cambia stroke a currentColor si existe y no es \"none\"\n processed = processed.replace(\n /(<svg[^>]*?\\s+stroke=\")(?!none)([^\"]*)(\")/i, \n '$1currentColor$3'\n );\n\n // Asegura el viewBox si no existe\n if (!/viewBox=/i.test(processed)) {\n processed = processed.replace(\n /(<svg[^>]*?)>/i, \n '$1 viewBox=\"0 0 24 24\">'\n );\n }\n\n return processed;\n }\n}","@if (isVisible()) {\n <span [innerHTML]=\"svgContent()\" [style.width]=\"size\" [style.height]=\"size\" [style.display]=\"'inline-flex'\"\n [style.color]=\"color\" class=\"cat-icon\">\n </span>\n}","import { Component, Input, Output, EventEmitter, HostBinding } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Icon } from '../icon/icon';\n\n@Component({\n selector: 'cat-button',\n imports: [Icon],\n templateUrl: './button.html',\n styleUrl: './button.scss',\n})\nexport class Button {\n @Input() variant: 'primary' | 'secondary' | 'contrast' | 'outline' | 'ghost' = 'primary';\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() disabled = false;\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input() iconLeft?: string;\n @Input() iconCenter?: string;\n @Input() iconRight?: string;\n @Input() customClass = '';\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n get buttonClasses(): string {\n return `cat-button ${this.variant} ${this.size} ${this.customClass}`;\n }\n\n get iconSize(): string {\n const sizes = { sm: '16px', md: '20px', lg: '24px' };\n return sizes[this.size];\n }\n\n @HostBinding('attr.data-button-class') get dataCustomClass() {\n return this.customClass;\n }\n\n handleClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n}\n","<button [class]=\"buttonClasses\" [disabled]=\"disabled\" [type]=\"type\" (click)=\"handleClick($event)\">\n @if (iconLeft) {\n <cat-icon [name]=\"iconLeft\" [size]=\"iconSize\" class=\"icon-left\"> </cat-icon>\n }\n\n <span class=\"button-content\">\n @if (iconCenter) {\n <cat-icon [name]=\"iconCenter\" [size]=\"iconSize\" class=\"icon-center\"> </cat-icon>\n }\n <ng-content></ng-content>\n </span>\n\n @if (iconRight) {\n <cat-icon [name]=\"iconRight\" [size]=\"iconSize\" class=\"icon-right\"> </cat-icon>\n }\n</button>\n","import { Component, Input, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'cat-card',\n templateUrl: './card.html',\n styleUrls: ['./card.css']\n})\nexport class Card {\n @Input() variant: 'surface' | 'outlined' | 'elevated' = 'surface';\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() width: string = 'auto';\n @Input() customClass = '';\n\n // Expone las clases como atributos de datos\n @HostBinding('attr.data-card-variant') get dataVariant() {\n return this.variant;\n }\n \n @HostBinding('attr.data-card-size') get dataSize() {\n return this.size;\n }\n \n @HostBinding('attr.data-card-class') get dataCustomClass() {\n return this.customClass;\n }\n\n /*// También exponer como CSS Custom Properties\n @HostBinding('style.--card-variant') get cssVariant() {\n return this.variant;\n }\n \n @HostBinding('style.--card-custom-class') get cssCustomClass() {\n return this.customClass;\n }\n*/\n get cardClasses(): string {\n return `cat-card ${this.variant} ${this.size} ${this.customClass}`;\n }\n}","<section [class]=\"cardClasses\" [attr.data-class]=\"customClass\" [style]=\"`width: ${width};`\">\n <ng-content></ng-content>\n</section>","import { Component, ElementRef, EventEmitter, HostBinding, Input, Output, ViewChild } from '@angular/core';\nimport { Button as CButton } from '../../button/button';\nimport { NgClass, NgIf } from '@angular/common';\n\n@Component({\n selector: 'cat-accordion',\n imports: [CButton, NgClass, NgIf],\n templateUrl: './accordion.html',\n styleUrl: './accordion.css',\n})\nexport class Accordion {\n @Input() accordionId?: string;\n @Input() status: boolean = false;//false = unactive\n @Input() label: string = 'Accordion Name';\n\n @Input() disabled = false;\n @Input() customClass = '';\n\n // Propiedades del botón\n @Input() buttonVariant: 'primary' | 'secondary' | 'contrast' | 'outline' | 'ghost' = 'secondary';\n @Input() buttonSize: 'sm' | 'md' | 'lg' = 'md';\n @Input() iconLeft: boolean = false;\n @Input() iconCenter: boolean = false;\n @Input() iconRight: boolean = true;\n\n // Propiedades del panel\n @Input() scrolleable: boolean = false;\n @Input() variant: 'surface' | 'outlined' | 'elevated' = 'surface';\n\n @Output() updateAccordionGroupStatusOutput = new EventEmitter<string>();\n\n @ViewChild('buttonRef', { static: false }) buttonRef!: ElementRef;\n buttonWidth: number = 0;\n\n ngAfterViewInit() {\n // Obtiene el ancho del botón después de renderizar\n setTimeout(() => {\n if (this.buttonRef) {\n const button = this.buttonRef.nativeElement.querySelector('button');\n if (button) {\n this.buttonWidth = button.offsetWidth;\n }\n }\n });\n }\n\n // Actualiza cuando cambia el label o otros inputs que afectan el tamaño\n ngOnChanges() {\n if (this.buttonRef) {\n const button = this.buttonRef.nativeElement.querySelector('button');\n if (button) {\n this.buttonWidth = button.offsetWidth;\n }\n }\n }\n updateAccordionGroupStatus() {\n this.status = !this.status;\n this.updateAccordionGroupStatusOutput.emit(this.accordionId!);\n }\n\n forceStatus(newStatus: boolean): void {\n this.status = newStatus;\n };\n\n @HostBinding('attr.data-accordion-class') get dataCustomClass() {\n return this.customClass;\n }\n\n get panelClasses(): string {\n return `${this.variant} ${this.customClass} ${this.scrolleable ? 'scrolleable' : undefined}`;\n }\n}\n","<section class=\"accordion\">\n <div>\n <cat-button [iconLeft]=\"iconLeft ? (status ? 'minus' : 'plus') : undefined\"\n [iconCenter]=\"iconCenter ? (status ? 'minus' : 'plus') : undefined\"\n [iconRight]=\"iconRight && status ? 'minus' : 'plus'\" (clicked)=\"updateAccordionGroupStatus()\"\n [variant]=\"buttonVariant\" [size]=\"buttonSize\" customClass=\"accordion-button\" [disabled]=\"disabled\">\n {{label}}\n </cat-button>\n </div>\n <div [class]=\"panelClasses\" [ngClass]=\"status ? 'accordion-panel-active': 'accordion-panel-unactive'\">\n <ng-content *ngIf=\"status\"></ng-content>\n </div>\n</section>","import { Component, ContentChildren, HostBinding, Input, QueryList } from '@angular/core';\nimport { Accordion as CAccordion } from '../accordion/accordion';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'cat-accordion-group',\n imports: [],\n templateUrl: './accordion-group.html',\n styleUrl: './accordion-group.css',\n})\nexport class AccordionGroup {\n @Input() singleExpand: boolean = true;\n @Input() customClass: string = '';\n\n @ContentChildren(CAccordion) accordions!: QueryList<CAccordion>;\n\n accordionActiveId?: String;\n\n sub?: Subscription | null;\n\n ngAfterContentInit(): void {\n if (this.singleExpand) {\n this.accordions.forEach(acc => {\n this.sub = acc.updateAccordionGroupStatusOutput.subscribe(id => {\n this.handleOpen(id);\n });\n });\n }\n }\n\n handleOpen(id: string) {\n this.accordions.forEach(acc => acc.forceStatus(false));\n const target = this.accordions.find(acc => acc.accordionId === id);\n if (this.accordionActiveId === id) {\n target?.forceStatus(false);\n this.accordionActiveId = undefined;\n } else {\n target?.forceStatus(true);\n this.accordionActiveId = id;\n }\n }\n\n @HostBinding('attr.data-accordion-group-class') get dataCustomClass() {\n return this.customClass;\n }\n\n get accordionGroupClasses() {\n return `${this.customClass}`;\n }\n}\n","<section [class]=\"accordionGroupClasses\">\n <ng-content></ng-content>\n</section>","import { Directive, ElementRef, Renderer2, OnInit, inject, Optional, Self, PLATFORM_ID } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Directive({\n selector: '[catInput]',\n standalone: true,\n host: {\n '[class.cat-input]': 'true',\n '[class.md]': 'true',\n '[class.invalid]': 'isInvalid'\n }\n})\nexport class CatInput implements OnInit {\n private el = inject(ElementRef);\n private platformId = inject(PLATFORM_ID);\n @Optional() @Self() public control: NgControl | null = inject(NgControl, { optional: true, self: true });\n\n private static stylesInjected = false;\n\n ngOnInit(): void {\n if (this.el.nativeElement.tagName.toLowerCase() !== 'input') {\n console.warn('catInput directive can only be used on <input> elements');\n return;\n }\n\n // Inyecta los estilos solo una vez\n if (!CatInput.stylesInjected && isPlatformBrowser(this.platformId)) {\n this.injectStyles();\n CatInput.stylesInjected = true;\n }\n }\n\n private injectStyles(): void {\n const style = document.createElement('style');\n style.textContent = `\n .cat-input {\n border: 1px solid var(--neutral-color-3);\n background-color: var(--neutral-color-0);\n color: var(--neutral-color-9);\n border-radius: 18px;\n outline: none;\n transition: all 0.2s;\n max-width: 100%;\n box-sizing: border-box;\n }\n\n .cat-input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .cat-input::placeholder {\n color: var(--neutral-color-6);\n transition: font-size 0.2s;\n }\n\n .cat-input:focus::placeholder {\n font-size: 0.7em;\n }\n\n .cat-input:focus {\n border: 1px solid var(--neutral-color-9);\n color: var(--neutral-color-9);\n -webkit-text-fill-color: var(--neutral-color-9);\n }\n\n .cat-input.invalid,\n .cat-input.ng-invalid.ng-touched {\n border: 1px solid red;\n }\n\n .cat-input.ng-valid.ng-touched {\n border: 1px solid green;\n }\n\n .cat-input:-webkit-autofill,\n .cat-input:-webkit-autofill:hover,\n .cat-input:-webkit-autofill:focus,\n .cat-input:-webkit-autofill:active {\n -webkit-box-shadow: 0 0 0 1000px var(--neutral-color-1) inset;\n box-shadow: 0 0 0 1000px var(--neutral-color-1) inset;\n -webkit-text-fill-color: var(--neutral-color-9);\n }\n\n\n .cat-input.md {\n padding: 0.5rem 1rem;\n font-size: 1rem;\n }\n\n .cat-input.sm {\n padding: 0.25rem 0.75rem;\n font-size: 0.875rem;\n }\n\n .cat-input.lg {\n padding: 0.75rem 1.5rem;\n font-size: 1.125rem;\n }\n `;\n document.head.appendChild(style);\n }\n\n get isInvalid(): boolean {\n return !!(this.control && this.control.invalid && this.control.touched);\n }\n}","import { Component, forwardRef, Input } from '@angular/core';\nimport { Icon as CIcon } from '../../icon/icon';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'cat-color-input',\n imports: [CIcon],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorInput),\n multi: true\n }],\n templateUrl: './color-input.html',\n styleUrl: './color-input.css',\n})\nexport class ColorInput implements ControlValueAccessor {\n value: string = '#000000';\n @Input() icon?: boolean = false;\n @Input() size: string ='2em';\n\n private onChange = (value: any) => { };\n onTouched = () => { };\n\n onInput(event: Event) {\n const newValue = (event.target as HTMLInputElement).value;\n this.value = newValue;\n this.onChange(newValue); // Informa al componente padre del cambio de valor\n }\n\n // Métodos requeridos por ControlValueAccessor\n writeValue(value: any): void {\n this.value = value || '#000000';\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n\n this.onTouched = fn;\n }\n}\n","<style>\n div {\n position: relative;\n aspect-ratio: 1/1;\n }\n\n div:hover {\n cursor: grab;\n }\n input {\n width: 100%;\n aspect-ratio: 1/1;\n top: 0;\n left: 0;\n }\n cat-icon {\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n }\n</style>\n<!-- input-color.html -->\n<div [style.height]=\"size\">\n <input type=\"color\" [style]=\"icon ? 'opacity: 0;' : 'opacity: 100%;'\" [value]=\"value\" (input)=\"onInput($event)\" (blur)=\"onTouched()\">\n @if (icon) {\n <cat-icon [style.height]=\"size\" size=\"100%\" name=\"palette\"></cat-icon> \n }\n</div>","import { NgClass } from '@angular/common';\nimport { Component, ElementRef, forwardRef, HostBinding, HostListener, Input, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CatInput } from \"../cat-input/cat-input\";\nimport { Button } from '../../button/button';\n\n@Component({\n selector: 'cat-select-input',\n imports: [\n CatInput,\n NgClass,\n Button\n ],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectInput),\n multi: true\n }],\n templateUrl: './select-input.html',\n styleUrl: './select-input.css',\n})\nexport class SelectInput implements ControlValueAccessor {\n @ViewChild('input') inputEl!: ElementRef<HTMLElement>;\n @ViewChild('optionsContainer', { static: false }) optionsContainer!: ElementRef<HTMLElement>;\n\n @Input() transform?: string; //This option basicly allow to the consumer put the options at the side where he wants\n @Input() options?: string[];\n @Input() placeholder: string = '';\n @Input() type: 'string' | 'number' = 'string';\n\n value: string | number = '';\n active = false;\n isInsideMenu = false;\n\n @Input() variant: 'surface' | 'elevated' | 'outlined' = 'surface';\n @Input() scrolleable: boolean = false;\n @Input() customClass: string = '';\n\n //@Output() selected = new EventEmitter<string>();\n\n // Accesibilidad\n @HostListener('document:click', ['$event'])\n outerClick(event: Event) {\n if (!this.el.nativeElement.contains(event.target)) {\n this.active = false;\n }\n };\n\n toggleActive() {\n this.active = !this.active;\n }\n\n constructor(\n private el: ElementRef,\n ) { }\n\n onChange = (value: any) => { };\n onTouched = () => { };\n\n // Aquí comienzan los eventos de ControlValueAccessor\n writeValue(value: any): void {\n this.value = value;\n };\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n // Aquí terminan los eventos de ControlValueAccessor\n\n choseValue(option: any) {\n this.value = option;\n this.onChange(option);\n this.onTouched();\n this.active = false;\n //this.selected.emit(option);\n };\n\n @HostBinding('attr.data-select-input-class') get dataCustomClass() {\n return this.customClass;\n }\n\n get selectInputClass(): string {\n return `${this.variant} ${this.scrolleable ? 'scrolleable' : ''}`;\n }\n}\n","<section class=\"select-input-container\">\n <input catInput #input [value]=\"value\" [type]=\"type\" readonly id=\"select\" (mousedown)=\"toggleActive()\"\n [placeholder]=\"placeholder\" class=\"select-input\">\n<section #optionsContainer role=\"listbox\" [class]=\"selectInputClass\" class=\"options\"\n [ngClass]=\"active ? 'options-active' : 'options-unactive'\" [style.transform]=\"transform\">\n @if (active) {\n @for (option of options; track $index) {\n <cat-button customClass=\"select-input-option\" (clicked)=\"choseValue(option)\" variant=\"ghost\">{{ option }}</cat-button>\n }\n<!-- <div role=\"option\" *ngFor=\"let option of options\" (mousedown)=\"choseValue(option)\">\n {{ option }}\n </div> -->\n }\n</section>\n</section>","import { AfterViewInit, Directive, DOCUMENT, ElementRef, Inject, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[CDrag]'\n})\nexport class Drag implements AfterViewInit {\n private offsetX = 0;\n private offsetY = 0;\n private dragging = false;\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n @Inject(DOCUMENT) private document: Document\n ) { }\n\n ngAfterViewInit() {\n const el = this.el.nativeElement as HTMLElement;\n\n // Si el elemento no tiene position seteado, establece absolute\n if (typeof window !== 'undefined') {\n const computedStyle = window.getComputedStyle(el);\n if (computedStyle.position === 'static') {\n this.renderer.setStyle(el, 'position', 'absolute');\n }\n }\n\n\n el.addEventListener('mousedown', (e: MouseEvent) => {\n this.dragging = true;\n this.offsetX = e.clientX - el.offsetLeft;\n this.offsetY = e.clientY - el.offsetTop;\n el.style.cursor = 'grabbing';\n });\n\n this.document.addEventListener('mousemove', (e: MouseEvent) => {\n if (this.dragging) {\n el.style.left = e.clientX - this.offsetX + 'px';\n el.style.top = e.clientY - this.offsetY + 'px';\n }\n });\n\n this.document.addEventListener('mouseup', () => {\n this.dragging = false;\n el.style.cursor = 'grab';\n });\n }\n\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n OnDestroy,\n OnInit,\n inject,\n ViewContainerRef,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { Overlay, OverlayRef, OverlayConfig } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Drag } from '../../../directives/drag';\n\n@Component({\n selector: 'cat-dialog',\n imports: [Drag],\n templateUrl: './dialog.html',\n styleUrl: './dialog.css',\n})\nexport class Dialog implements OnInit, OnDestroy {\n // Inyecta el servicio Overlay del CDK\n private overlay = inject(Overlay);\n // ViewContainerRef necesario para crear el TemplatePortal\n private viewContainerRef = inject(ViewContainerRef);\n // Referencia al overlay creado\n private overlayRef?: OverlayRef;\n\n @Input() variant: 'surface' | 'outlined' | 'elevated' = 'surface';\n @Input() size: { width: string; height: string } = { width: '300px', height: '200px' };\n @Input() customClass = '';\n @Output() closs = new EventEmitter<boolean>();\n\n // Referencia al template que contiene el ng-content\n @ViewChild('dialogTemplate', { static: true }) dialogTemplate!: TemplateRef<any>;\n\n private createOverlayConfig(): OverlayConfig {\n const positionStrategy = this.overlay\n .position()\n .global()\n .centerHorizontally()\n .centerVertically();\n\n return {\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-dark-backdrop',\n panelClass: ['cat-dialog-overlay-panel', this.variant, this.customClass],\n };\n }\n\n private openDialog() {\n const config = this.createOverlayConfig();\n\n this.overlayRef = this.overlay.create(config);\n\n // TemplatePortal permite renderizar un template (con ng-content) dentro del overlay\n const portal = new TemplatePortal(this.dialogTemplate, this.viewContainerRef);\n\n this.overlayRef.attach(portal);\n\n // Escucha cuando se hace clic en el backdrop y cierra el dialog\n this.overlayRef.backdropClick().subscribe(() => {\n this.closeDialog();\n });\n\n // Escucha la tecla Escape para cerrar\n this.overlayRef.keydownEvents().subscribe((event) => {\n if (event.key === 'Escape') {\n this.closeDialog();\n }\n });\n }\n\n closeDialog() {\n if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n this.closs.emit(false);\n }\n }\n\n get dialogClasses(): string {\n return `${this.variant} {this.customClass}`;\n }\n\n ngOnInit() {\n this.openDialog();\n }\n\n ngOnDestroy() {\n this.closeDialog();\n }\n}\n","<!-- Template que se renderiza dentro del overlay del CDK -->\n<ng-template #dialogTemplate>\n <section\n [style]=\"`height: ${size.height} !important; width: ${size.width} !important;`\"\n CDrag\n [class]=\"dialogClasses\"\n >\n <ng-content></ng-content>\n </section>\n</ng-template>\n","import { Component, EventEmitter, Input, Output, OnDestroy, OnInit, inject, ViewContainerRef, TemplateRef, ViewChild } from '@angular/core';\nimport { Overlay, OverlayRef, OverlayConfig } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Button } from '../../button/button';\n\n@Component({\n selector: 'cat-drawer',\n imports: [Button],\n templateUrl: './drawer.html',\n styleUrl: './drawer.css',\n})\nexport class Drawer implements OnInit, OnDestroy {\n // Inyecta el servicio Overlay del CDK\n private overlay = inject(Overlay);\n // ViewContainerRef necesario para crear el TemplatePortal\n private viewContainerRef = inject(ViewContainerRef);\n // Referencia al overlay creado\n private overlayRef?: OverlayRef;\n\n @Input() side: 'left' | 'right' | 'top' | 'bottom' = 'left';\n @Input() variant: 'surface' | 'elevated' | 'outlined' = 'surface';\n @Input() customClass: string = '';\n @Output() closs = new EventEmitter<boolean>();\n\n // Referencia al template que contiene el ng-content\n @ViewChild('drawerTemplate', { static: true }) drawerTemplate!: TemplateRef<any>;\n\n private createOverlayConfig(): OverlayConfig {\n // Crea estrategia de posicionamiento global\n const positionStrategy = this.overlay.position().global();\n \n switch (this.side) {\n case 'left':\n positionStrategy.left('0');\n break;\n case 'right':\n positionStrategy.right('0');\n break;\n case 'top':\n positionStrategy.top('0');\n break;\n case 'bottom':\n positionStrategy.bottom('0');\n break;\n }\n\n return {\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-dark-backdrop',\n panelClass: ['cat-drawer-overlay-panel', this.side, this.variant, this.customClass],\n };\n }\n\n private openDrawer() {\n const config = this.createOverlayConfig();\n \n\n this.overlayRef = this.overlay.create(config);\n \n // Crea un portal con el template del drawer\n // TemplatePortal permite renderizar un template (con ng-content) dentro del overlay\n const portal = new TemplatePortal(this.drawerTemplate, this.viewContainerRef);\n \n // Adjunta el portal al overlay, esto renderiza el template dentro del overlay\n this.overlayRef.attach(portal);\n \n // Escucha cuando se hace clic en el backdrop y cierra el drawer\n this.overlayRef.backdropClick().subscribe(() => {\n this.closeDrawer();\n });\n \n // Escucha la tecla Escape para cerrar\n this.overlayRef.keydownEvents().subscribe(event => {\n if (event.key === 'Escape') {\n this.closeDrawer();\n }\n });\n }\n\n closeDrawer() {\n if (this.overlayRef) {\n // Desconecta el portal del overlay\n this.overlayRef.detach();\n // Limpia todos los recursos del overlay\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n // Emite el evento de cierre\n this.closs.emit(false);\n }\n }\n\n get drawerClasses(): string {\n return `${this.variant} ${this.side} ${this.customClass}`;\n }\n\n ngOnInit() {\n this.openDrawer();\n }\n\n ngOnDestroy() {\n this.closeDrawer();\n }\n}","<!-- Template que se renderiza dentro del overlay del CDK -->\n<ng-template #drawerTemplate>\n <section [class]=\"drawerClasses\">\n <cat-button iconCenter=\"x-mark\" variant=\"contrast\" class=\"close-button\" (clicked)=\"closeDrawer()\"></cat-button>\n <ng-content></ng-content>\n </section>\n </ng-template>","import { isPlatformBrowser } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, HostBinding, inject, Input, OnDestroy, PLATFORM_ID, signal, ViewChild } from '@angular/core';\nimport { Icon } from '../../icon/icon';\n\n@Component({\n selector: 'cat-menu',\n imports: [Icon],\n templateUrl: './menu.html',\n styleUrl: './menu.css',\n})\nexport class Menu implements AfterViewInit, OnDestroy {\n /* @Input() variant: 'surface' | 'elevated' | 'outlined' = 'surface';\n @Input() customClass: string = '';\n\n @HostBinding('attr.data-menu-class') get dataCustomClass() {\n return this.customClass;\n }\n\n get menuClasses(): string {\n return `${this.variant} ${this.customClass}`;\n } */\n\n @ViewChild('menuContainer', { static: false }) menuContainer!: ElementRef<HTMLDivElement>;\n @ViewChild('menuContent', { static: false }) menuContent!: ElementRef<HTMLDivElement>;\n @ViewChild('dropdown', { static: false }) dropdown?: ElementRef<HTMLDivElement>;\n\n private platformId = inject(PLATFORM_ID);\n private resizeObserver?: ResizeObserver;\n private mutationObserver?: MutationObserver;\n\n showMoreButton = signal(false);\n isDropdownOpen = signal(false);\n overflowItems = signal<HTMLElement[]>([]);\n\n ngAfterViewInit() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n setTimeout(() => {\n this.checkOverflow();\n this.setupObservers();\n }, 0);\n }\n\n ngOnDestroy() {\n this.resizeObserver?.disconnect();\n this.mutationObserver?.disconnect();\n if (isPlatformBrowser(this.platformId)) {\n document.removeEventListener('click', this.handleOutsideClick);\n }\n }\n\n private setupObservers() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.resizeObserver = new ResizeObserver(() => {\n this.checkOverflow();\n });\n this.resizeObserver.observe(this.menuContent.nativeElement);\n\n document.addEventListener('click', this.handleOutsideClick);\n }\n\n private handleOutsideClick = (event: MouseEvent) => {\n if (!this.isDropdownOpen()) return;\n\n const target = event.target as HTMLElement;\n const clickedInside = this.menuContainer.nativeElement.contains(target) ||\n this.dropdown?.nativeElement.contains(target);\n\n if (!clickedInside) {\n this.isDropdownOpen.set(false);\n }\n };\n\n private checkOverflow() {\n // Si el dropdown está abierto, no recalcula el overflow\n if (this.isDropdownOpen()) {\n const overflowItems = this.overflowItems();\n if (overflowItems.length > 0) {\n this.showMoreButton.set(true);\n setTimeout(() => {\n //this.waitForDropdownAndUpdate();\n this.updateDropdownContent();\n }, 0);\n }\n return;\n }\n\n const container = this.menuContent.nativeElement;\n\n // Restaura todos los elementos que puedan estar en el dropdown\n this.restoreOverflowItems();\n\n const items = Array.from(container.children) as HTMLElement[];\n\n if (items.length === 0) {\n this.showMoreButton.set(false);\n this.overflowItems.set([]);\n return;\n }\n\n const menuItems = items.filter(item =>\n !item.classList.contains('more-button')\n );\n\n if (menuItems.length === 0) {\n this.showMoreButton.set(false);\n this.overflowItems.set([]);\n return;\n }\n\n // Restaura todos los elementos a su estado visible antes de calcular\n menuItems.forEach(item => {\n item.style.display = '';\n });\n\n // Fuerza un reflow para obtener posiciones correctas\n container.offsetHeight;\n\n // Detecta elementos en la primera fila vs elementos en filas adicionales\n const firstItemTop = menuItems[0]?.getBoundingClientRect().top;\n const firstRowItems: HTMLElement[] = [];\n const overflowItems: HTMLElement[] = [];\n\n menuItems.forEach(item => {\n const itemTop = item.getBoundingClientRect().top;\n // Usa tolerancia de 1px para manejar diferencias de redondeo\n if (Math.abs(itemTop - firstItemTop) <= 1) {\n firstRowItems.push(item);\n } else {\n overflowItems.push(item);\n }\n });\n\n // Si hay elementos en overflow, muestra el botón More y oculta los elementos overflow\n const needsMoreButton = overflowItems.length > 0;\n this.showMoreButton.set(needsMoreButton);\n\n // Oculta elementos que están en la segunda fila o más\n overflowItems.forEach(item => {\n item.style.display = 'none';\n });\n\n // Mantiene visibles solo los elementos de la primera fila\n firstRowItems.forEach(item => {\n item.style.display = '';\n });\n\n if (needsMoreButton) {\n this.overflowItems.set(overflowItems);\n } else {\n this.overflowItems.set([]);\n }\n }\n\n private updateDropdownContent() {\n const menuWrapper = this.menuContainer.nativeElement.closest('.menu-wrapper');\n if (!menuWrapper) {\n return;\n }\n\n const dropdown = menuWrapper.querySelector('.dropdown') as HTMLElement;\n if (!dropdown) {\n return;\n }\n\n const dropdownContent = dropdown.querySelector('.dropdown-content');\n if (!dropdownContent) {\n return;\n }\n\n // Limpia el contenido previo del dropdown (por si hay algún elemento)\n this.restoreOverflowItems();\n\n const overflowItems = this.overflowItems();\n\n if (overflowItems.length === 0) {\n return;\n }\n\n //const menuContent = this.menuContent.nativeElement; //No se usa porque los elementos ya están en el dropdown\n\n overflowItems.forEach(item => {\n // Mueve el elemento real al dropdown\n // El elemento ya está oculto (display: none), así que lo hace visible y lo mueve al dropdown\n item.style.display = '';\n item.style.visibility = 'visible';\n\n // Mueve el elemento al dropdown\n dropdownContent.appendChild(item);\n });\n }\n\n // Esta función sirve para mover los elementos del dropdown al menu-content\n // NO los elimina del signal overflowItems, ni del DOM, (por lo que genera sobrecarga de memoria)\n private restoreOverflowItems() {\n const overflowItems = this.overflowItems();\n const menuContent = this.menuContent.nativeElement;\n\n overflowItems.forEach(item => {\n // Si el elemento está en el dropdown, lo mueve de vuelta al menu-content\n const dropdownContent = item.closest('.dropdown-content');\n if (dropdownContent && item.parentElement === dropdownContent) {\n // Oculta el elemento y lo mueve de vuelta al menu-content\n item.style.display = 'none';\n menuContent.appendChild(item);\n }\n });\n }\n\n toggleDropdown() {\n const newState = !this.isDropdownOpen();\n\n if (!newState) {\n // Si se está cerrando, restaura los elementos a su posición original\n this.restoreOverflowItems();\n }\n\n this.isDropdownOpen.set(newState);\n\n if (newState) {\n // Recalcula el overflow antes de abrir el dropdown\n setTimeout(() => {\n this.checkOverflow();\n // Esperar a que el dropdown esté en el DOM antes de actualizar\n //this.waitForDropdownAndUpdate();\n this.updateDropdownContent();\n }, 0);\n }\n }\n}","<div class=\"menu-wrapper\">\n <div class=\"menu\" #menuContainer>\n <div class=\"menu-content\" #menuContent>\n <ng-content></ng-content>\n </div>\n\n @if (showMoreButton()) {\n <button class=\"more-button\" (click)=\"toggleDropdown()\" [attr.aria-expanded]=\"isDropdownOpen()\" type=\"button\">\n <span>More</span>\n @if(isDropdownOpen()){\n <cat-icon size=\"16px\" name=\"chevron-up\"></cat-icon>\n } @else {\n <cat-icon size=\"16px\" name=\"chevron-down\"></cat-icon>\n }\n<!-- <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\"\n [style.transform]=\"isDropdownOpen() ? 'rotate(180deg)' : 'rotate(0deg)'\">\n <path d=\"M4 6l4 4 4-4z\" />\n </svg> -->\n </button>\n }\n </div>\n\n @if (showMoreButton() && isDropdownOpen()) {\n <div class=\"dropdown\" #dropdown>\n <div class=\"dropdown-content\">\n <!-- Aquí se moverán los elementos overflow -->\n </div>\n </div>\n }\n</div>","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\ninterface RGB {\n red: number;\n green: number;\n blue: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class Theming {\n //Light Theme = False\n private activeThemeSubject = new BehaviorSubject<boolean>(false);\n public activeTheme$ = this.activeThemeSubject.asObservable();\n\n //Palettes\n private allPalettesSubject = new BehaviorSubject<string[][]>([]);\n public allPalettes$ = this.allPalettesSubject.asObservable();\n\n generatePalettes(color: string, dark: boolean): string[][] {\n this.activeThemeSubject.next(dark);\n\n const primaryColors = this.calculatePrimaryColor(color);\n\n const dynamicPalettes = this.calculateDynamicPalettes(dark);\n\n // Asigna todas las paletas a variables locales\n let allPalettes: string[][] = [primaryColors];\n\n allPalettes = allPalettes.concat([dynamicPalettes.neutral]);\n allPalettes = allPalettes.concat([dynamicPalettes.elements]);\n\n this.allPalettesSubject.next(allPalettes);\n\n // Aplica el tema\n this.applyTheme(allPalettes);\n\n return this.allPalettesSubject.value;\n }\n\n public calculatePrimaryColor(color: string) {\n // Paso 1: Calcula el color\n const colors = this.hexToRgb(color);\n\n // Paso 2: Obtiene la paleta primaria (estática, no cambia con el tema)\n const primaryColors: string[] = this.palette(colors, false, 4); // Always use light theme\n\n const allPalettes = [\n primaryColors, // Keep primary (static)\n this.allPalettesSubject.value[1],\n this.allPalettesSubject.value[2]\n ];\n\n this.allPalettesSubject.next(allPalettes);\n\n this.applyTheme(allPalettes);\n \n return primaryColors;\n }\n\n public calculateDynamicPalettes(dark: boolean): { neutral: string[], elements: string[] } {\n const theme: boolean = dark;\n const contrastTheme: boolean = !dark;\n this.activeThemeSubject.next(dark);\n\n\n // Calcula los colores neutrales (cambian con el tema)\n const neutralColors: string[] = contrastTheme\n ? this.palette({ red: 255, green: 255, blue: 255 }, false, 9)\n : this.palette({ red: 0, green: 0, blue: 0 }, true, 9);\n\n // Calcula los colores de elementos (cambian con el tema)\n const elementsColors: string[] = this.elementsColors(theme, 3, 40);\n\n // Actualiza el array de paletas con valores dinámicos\n const allPalettes = [\n this.allPalettesSubject.value[0], // Keep primary (static)\n neutralColors,\n elementsColors\n ];\n\n this.allPalettesSubject.next(allPalettes);\n\n // Aplica el tema a las variables CSS\n this.applyTheme(allPalettes);\n\n return {\n neutral: neutralColors,\n elements: elementsColors\n };\n }\n\n private palette(colors: { red: number, green: number, blue: number }, dark: boolean, steps: number) {\n //Palette\n const colorsReturn: string[] = [];\n\n const contrastTheme: boolean = !dark;\n const target = contrastTheme ? 0 : 255;\n\n const umbralR = (target - colors.red) / steps;\n const umbralG = (target - colors.green) / steps;\n const umbralB = (target - colors.blue) / steps;\n\n for (let i = 0; i <= steps; i++) {\n const r = Math.round(colors.red + umbralR * i);\n const g = Math.round(colors.green + umbralG * i);\n const b = Math.round(colors.blue + umbralB * i);\n\n colorsReturn.push(`rgb(${r}, ${g}, ${b})`);\n }\n return colorsReturn;\n };\n\n private elementsColors(theme: boolean, iteration: number, amplitude: number) {\n amplitude = amplitude / iteration;\n const colorsReturn: string[] = [];\n for (let i = 0; i < 5; i++) {\n let r = theme ? 0 + ((85 - 0) / (5 - 1) * i) : 0 + ((255 - 0) / (5 - 1) * i);\n let g = theme ? 0 + ((85 - 0) / (5 - 1) * i) : 0 + ((255 - 0) / (5 - 1) * i);\n let b = theme ? 0 + ((85 - 0) / (5 - 1) * i) : 0 + ((255 - 0) / (5 - 1) * i);\n\n if (i <= iteration && theme === false) {\n r = r + amplitude;\n g = g + amplitude;\n b = b + amplitude;\n } else if (theme === false) {\n r = r - amplitude;\n g = g - amplitude;\n b = b - amplitude;\n }\n colorsReturn.push(`rgb(${r}, ${g},${b})`);\n };\n return colorsReturn;\n };\n\n private applyTheme(palettes: string[][]): void {\n if (typeof document === 'undefined') return;\n\n const root = document.documentElement;\n const cssVars = [\n { prefix: '--primary-color-', index: 0 },\n { prefix: '--neutral-color-', index: 1 },\n { prefix: '--element-color-', index: 2 }\n ];\n\n cssVars.forEach(({ prefix, index }) => {\n palettes[index]?.forEach((color, i) => {\n root.style.setProperty(`${prefix}${i}`, color);\n });\n });\n }\n\n private hexToRgb(hex: string): RGB {\n const value = parseInt(hex.replace('#', ''), 16);\n return {\n red: (value >> 16) & 255,\n green: (value >> 8) & 255,\n blue: value & 255,\n };\n }\n}","export const ICON_BASE_PATH = 'safirial-icons';\n\nexport const iconList = [\n 'academic-cap',\n 'adjustments-horizontal',\n 'adjustments-vertical',\n 'archive-box',\n 'archive-box-arrow-down',\n 'archive-box-x-mark',\n 'arrow-down',\n 'arrow-down-circle',\n 'arrow-down-left',\n 'arrow-down-on-square',\n 'arrow-down-on-square-stack',\n 'arrow-down-right',\n 'arrow-down-tray',\n 'arrow-left',\n 'arrow-left-circle',\n 'arrow-left-end-on-rectangle',\n 'arrow-left-start-on-rectangle',\n 'arrow-long-down',\n 'arrow-long-left',\n 'arrow-long-right',\n 'arrow-long-up',\n 'arrow-path',\n 'arrow-path-rounded-square',\n 'arrow-right',\n 'arrow-right-circle',\n 'arrow-right-end-on-rectangle',\n 'arrow-right-start-on-rectangle',\n 'arrow-top-right-on-square',\n 'arrow-trending-down',\n 'arrow-trending-up',\n 'arrow-turn-down-left',\n 'arrow-turn-down-right',\n 'arrow-turn-left-down',\n 'arrow-turn-left-up',\n 'arrow-turn-right-down',\n 'arrow-turn-right-up',\n 'arrow-turn-up-left',\n 'arrow-turn-up-right',\n 'arrow-up',\n 'arrow-up-circle',\n 'arrow-up-left',\n 'arrow-up-on-square',\n 'arrow-up-on-square-stack',\n 'arrow-up-right',\n 'arrow-up-tray',\n 'arrow-uturn-down',\n 'arrow-uturn-left',\n 'arrow-uturn-right',\n 'arrow-uturn-up',\n 'arrows-pointing-in',\n 'arrows-pointing-out',\n 'arrows-right-left',\n 'arrows-up-down',\n 'at-symbol',\n 'backspace',\n 'backward',\n 'banknotes',\n 'bars-2',\n 'bars-3',\n 'bars-3-bottom-left',\n 'bars-3-bottom-right',\n 'bars-3-center-left',\n 'bars-4',\n 'bars-arrow-down',\n 'bars-arrow-up',\n 'battery-0',\n 'battery-100',\n 'battery-50',\n 'beaker',\n 'bell',\n 'bell-alert',\n 'bell-slash',\n 'bell-snooze',\n 'bold',\n 'bolt',\n 'bolt-slash',\n 'book-open',\n 'bookmark',\n 'bookmark-slash',\n 'bookmark-square',\n 'briefcase',\n 'bug-ant',\n 'building-library',\n 'building-office',\n 'building-office-2',\n 'building-storefront',\n 'cake',\n 'calculator',\n 'calendar',\n 'calendar-date-range',\n 'calendar-days',\n 'camera',\n 'chart-bar',\n 'chart-bar-square',\n 'chart-pie',\n 'chat-bubble-bottom-center',\n 'chat-bubble-bottom-center-text',\n 'chat-bubble-left',\n 'chat-bubble-left-ellipsis',\n 'chat-bubble-left-right',\n 'chat-bubble-oval-left',\n 'chat-bubble-oval-left-ellipsis',\n 'check',\n 'check-badge',\n 'check-circle',\n 'chevron-double-down',\n 'chevron-double-left',\n 'chevron-double-right',\n 'chevron-double-up',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'chevron-up-down',\n 'circle-stack',\n 'clipboard',\n 'clipboard-document',\n 'clipboard-document-check',\n 'clipboard-document-list',\n 'clock',\n 'cloud',\n 'cloud-arrow-down',\n 'cloud-arrow-up',\n 'code-bracket',\n 'code-bracket-square',\n 'cog',\n 'cog-6-tooth',\n 'cog-8-tooth',\n 'command-line',\n 'computer-desktop',\n 'cpu-chip',\n 'credit-card',\n 'cube',\n 'cube-transparent',\n 'currency-bangladeshi',\n 'currency-dollar',\n 'currency-euro',\n 'currency-pound',\n 'currency-rupee',\n 'currency-yen',\n 'cursor-arrow-rays',\n 'cursor-arrow-ripple',\n 'device-phone-mobile',\n 'device-tablet',\n 'divide',\n 'document',\n 'document-arrow-down',\n 'document-arrow-up',\n 'document-chart-bar',\n 'document-check',\n 'document-currency-bangladeshi',\n 'document-currency-dollar',\n 'document-currency-euro',\n 'document-currency-pound',\n 'document-currency-rupee',\n 'document-currency-yen',\n 'document-duplicate',\n 'document-magnifying-glass',\n 'document-minus',\n 'document-plus',\n 'document-text',\n 'ellipsis-horizontal',\n 'ellipsis-horizontal-circle',\n 'ellipsis-vertical',\n 'email',\n 'envelope',\n 'envelope-open',\n 'equals',\n 'exclamation-circle',\n 'exclamation-triangle',\n 'eye',\n 'eye-dropper',\n 'eye-slash',\n 'face-frown',\n 'face-smile',\n 'film',\n 'finger-print',\n 'fire',\n 'flag',\n 'folder',\n 'folder-arrow-down',\n 'folder-minus',\n 'folder-open',\n 'folder-plus',\n 'forward',\n 'funnel',\n 'gif',\n 'gift',\n 'gift-top',\n 'github',\n 'globe-alt',\n 'globe-americas',\n 'globe-asia-australia',\n 'globe-europe-africa',\n 'h1',\n 'h2',\n 'h3',\n 'hand-raised',\n 'hand-thumb-down',\n 'hand-thumb-up',\n 'hashtag',\n 'heart',\n 'home',\n 'home-modern',\n 'identification',\n 'inbox',\n 'inbox-arrow-down',\n 'inbox-stack',\n 'information-circle',\n 'italic',\n 'key',\n 'language',\n 'lifebuoy',\n 'light-bulb',\n 'link',\n 'link-slash',\n 'linkedin',\n 'list-bullet',\n 'lock-closed',\n 'lock-open',\n 'magnifying-glass',\n 'magnifying-glass-circle',\n 'magnifying-glass-minus',\n 'magnifying-glass-plus',\n 'map',\n 'map-pin',\n 'megaphone',\n 'microphone',\n 'minus',\n 'minus-circle',\n 'moon',\n 'musical-note',\n 'newspaper',\n 'no-symbol',\n 'numbered-list',\n 'paint-brush',\n 'palette',\n 'paper-airplane',\n 'paper-clip',\n 'pause',\n 'pause-circle',\n 'pencil',\n 'pencil-square',\n 'percent-badge',\n 'phone',\n 'phone-arrow-down-left',\n 'phone-arrow-up-right',\n 'phone-x-mark',\n 'photo',\n 'play',\n 'play-circle',\n 'play-pause',\n 'plus',\n 'plus-circle',\n 'power',\n 'presentation-chart-bar',\n 'presentation-chart-line',\n 'printer',\n 'puzzle-piece',\n 'qr-code',\n 'question-mark-circle',\n 'queue-list',\n 'radio',\n 'receipt-percent',\n 'receipt-refund',\n 'rectangle-group',\n 'rectangle-stack',\n 'rocket-launch',\n 'rss',\n 'scale',\n 'scissors',\n 'server',\n 'server-stack',\n 'share',\n 'shield-check',\n 'shield-exclamation',\n 'shopping-bag',\n 'shopping-cart',\n 'signal',\n 'signal-slash',\n 'slash',\n 'sparkles',\n 'speaker-wave',\n 'speaker-x-mark',\n 'square-2-stack',\n 'square-3-stack-3d',\n 'squares-2x2',\n 'squares-plus',\n 'star',\n 'stop',\n 'stop-circle',\n 'strikethrough',\n 'sun',\n 'swatch',\n 'table-cells',\n 'tag',\n 'ticket',\n 'trash',\n 'trophy',\n 'truck',\n 'tv',\n 'underline',\n 'user',\n 'user-circle',\n 'user-group',\n 'user-minus',\n 'user-plus',\n 'users',\n 'variable',\n 'video-camera',\n 'video-camera-slash',\n 'view-columns',\n 'viewfinder-circle',\n 'wallet',\n 'wifi',\n 'window',\n 'wrench',\n 'wrench-screwdriver',\n 'x-circle',\n 'x-mark',\n] as const;\n\nexport type IconName = typeof iconList[number];\n\nexport function getIconPath(name: IconName): string {\n return `${ICON_BASE_PATH}/${name}.svg`;\n}\n","/*\n * Public API Surface of catarina\n */\n\n// design-system\nexport * from './lib/design-system/icon/icon';\nexport * from './lib/design-system/button/button';\n\n// Panels\nexport * from './lib/design-system/panels/card/card';\nexport * from './lib/design-system/panels/accordion/accordion';\nexport * from './lib/design-system/panels/accordion-group/accordion-group';\n\n//form\nexport * from './lib/design-system/form/cat-input/cat-input';\nexport * from './lib/design-system/form/color-input/color-input';\nexport * from './lib/design-system/form/select-input/select-input';\n\n//Pending https://tecsify.com/blog/input-en-html/\n/*export * from './lib/design-system/form/date-input/date-input';\nexport * from './lib/design-system/form/file-input/file-input';\nexport * from './lib/design-system/form/password-input/password-input';\nexport * from './lib/design-system/form/range-input/range-input';\nexport * from './lib/design-system/form/text-area-input/text-area-input';\nexport * from './lib/design-system/form/time-input/time-input';*/\n/*\nimage, search, telefono, reset, radio button, checkbox, button, email\n*/\n\n//Overlays\n//Pending\nexport * from './lib/design-system/overlays/dialog/dialog';\nexport * from './lib/design-system/overlays/drawer/drawer';\nexport * from './lib/design-system/panels/menu/menu';\n\n\n/*Services and Directives */\n\nexport * from './lib/directives/drag';\nexport * from './lib/theming/theming';\n\n// Tokens\nexport * from './lib/tokens/icon-provider.token';\n\n// Utils\nexport * from './lib/utils/icon-utils';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["CButton","CAccordion","CIcon"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -157,7 +157,10 @@ declare class Dialog implements OnInit, OnDestroy {
|
|
|
157
157
|
private viewContainerRef;
|
|
158
158
|
private overlayRef?;
|
|
159
159
|
variant: 'surface' | 'outlined' | 'elevated';
|
|
160
|
-
size:
|
|
160
|
+
size: {
|
|
161
|
+
width: string;
|
|
162
|
+
height: string;
|
|
163
|
+
};
|
|
161
164
|
customClass: string;
|
|
162
165
|
closs: EventEmitter<boolean>;
|
|
163
166
|
dialogTemplate: TemplateRef<any>;
|