s4y-ui 7.9.0 → 7.9.2
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.
package/fesm2022/s4y-ui.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s4y-ui.mjs","sources":["../../../projects/s4y-components/src/lib/components/dashboard/dashboard-layout/dashboard-layout.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-layout/dashboard-layout.component.html","../../../projects/s4y-components/src/lib/components/dashboard/aside/aside.service.ts","../../../projects/s4y-components/src/lib/components/dashboard/navbar/navbar.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/navbar/navbar.component.html","../../../projects/s4y-components/src/lib/components/avatar/avatar.component.ts","../../../projects/s4y-components/src/lib/components/avatar/avatar.component.html","../../../projects/s4y-components/src/lib/components/svg/svg.service.ts","../../../projects/s4y-components/src/lib/components/svg/svg.component.ts","../../../projects/s4y-components/src/lib/components/svg/svg.component.html","../../../projects/s4y-components/src/lib/components/dashboard/aside/aside.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/aside/aside.component.html","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-routes/dashboard-routes.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-routes/dashboard-routes.component.html","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-container/dashboard-container.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-container/dashboard-container.component.html","../../../projects/s4y-components/src/lib/components/dashboard/dashboard.module.ts","../../../projects/s4y-components/src/lib/components/dashboard/index.ts","../../../projects/s4y-components/src/lib/components/button/button.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/form-field/form-field.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/form-field/form-field.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/input/input.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/input/input.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/label/label.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/label/label.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/hint/hint.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/hint/hint.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/error-message/error-message.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/error-message/error-message.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-prefix/input-prefix.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-prefix/input-prefix.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-sufix/input-sufix.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-sufix/input-sufix.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/form-field-password/form-field-password.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/form-field-password/form-field-password.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/forms-kit.module.ts","../../../projects/s4y-components/src/lib/components/forms-kit/index.ts","../../../projects/s4y-components/src/lib/directives/mask/mask.directive.ts","../../../projects/s4y-components/src/lib/directives/click-outside.directive.ts","../../../projects/s4y-components/src/lib/components/toast/toast.animation.ts","../../../projects/s4y-components/src/lib/components/toast/toast.service.ts","../../../projects/s4y-components/src/lib/components/toast/toast.component.ts","../../../projects/s4y-components/src/lib/components/toast/toast.component.html","../../../projects/s4y-components/src/lib/components/drawer/drawer.animation.ts","../../../projects/s4y-components/src/lib/components/drawer/drawer.component.ts","../../../projects/s4y-components/src/lib/components/drawer/drawer.component.html","../../../projects/s4y-components/src/lib/components/spinner/spinner.component.ts","../../../projects/s4y-components/src/lib/components/spinner/spinner.component.html","../../../projects/s4y-components/src/lib/components/table/table.component.ts","../../../projects/s4y-components/src/lib/components/table/table.component.html","../../../projects/s4y-components/src/lib/components/table/directive/table-sort.directive.ts","../../../projects/s4y-components/src/lib/components/table/directive/table-sticky.directive.ts","../../../projects/s4y-components/src/lib/components/modal/modal.animation.ts","../../../projects/s4y-components/src/lib/components/modal/modal.component.ts","../../../projects/s4y-components/src/lib/components/modal/modal.component.html","../../../projects/s4y-components/src/lib/components/modal-confirmation/modal-confirmation.service.ts","../../../projects/s4y-components/src/lib/components/modal-confirmation/modal-confirmation.component.ts","../../../projects/s4y-components/src/lib/components/modal-confirmation/modal-confirmation.component.html","../../../projects/s4y-components/src/lib/components/search-bar/search-bar.component.ts","../../../projects/s4y-components/src/lib/components/search-bar/search-bar.component.html","../../../projects/s4y-components/src/lib/components/toggle/toggle.component.ts","../../../projects/s4y-components/src/lib/components/toggle/toggle.component.html","../../../projects/s4y-components/src/lib/components/select/select.animation.ts","../../../projects/s4y-components/src/lib/components/select/select.component.ts","../../../projects/s4y-components/src/lib/components/select/select.component.html","../../../projects/s4y-components/src/lib/components/pagination/pagination.component.ts","../../../projects/s4y-components/src/lib/components/pagination/pagination.component.html","../../../projects/s4y-components/src/lib/components/slider/slider.component.ts","../../../projects/s4y-components/src/lib/components/slider/slider.component.html","../../../projects/s4y-components/src/lib/components/radio/radio.component.ts","../../../projects/s4y-components/src/lib/components/radio/radio.component.html","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.enums.ts","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.component.ts","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.component.html","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.module.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb-item.directive.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb.service.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/s4y-components/src/lib/components/stepper/components/step/step.component.ts","../../../projects/s4y-components/src/lib/components/stepper/components/step/step.component.html","../../../projects/s4y-components/src/lib/components/stepper/animations/stepper.animation.ts","../../../projects/s4y-components/src/lib/components/stepper/components/step-panel/step-panel.component.ts","../../../projects/s4y-components/src/lib/components/stepper/components/step-panel/step-panel.component.html","../../../projects/s4y-components/src/lib/components/stepper/stepper.component.ts","../../../projects/s4y-components/src/lib/components/stepper/stepper.component.html","../../../projects/s4y-components/src/lib/components/loading-modal/loading-modal.service.ts","../../../projects/s4y-components/src/lib/components/loading-modal/loading-modal.animation.ts","../../../projects/s4y-components/src/lib/components/loading-modal/loading-modal.component.ts","../../../projects/s4y-components/src/lib/components/loading-modal/loading-modal.component.html","../../../projects/s4y-components/src/lib/components/checkbox/checkbox.component.ts","../../../projects/s4y-components/src/lib/components/checkbox/checkbox.component.html","../../../projects/s4y-components/src/lib/components/sidebar-right/sidebar-right.animation.ts","../../../projects/s4y-components/src/lib/components/sidebar-right/sidebar-right.service.ts","../../../projects/s4y-components/src/lib/components/sidebar-right/sidebar-right.component.ts","../../../projects/s4y-components/src/lib/components/sidebar-right/sidebar-right.component.html","../../../projects/s4y-components/src/lib/components/popover/popover-panel/popover-panel.component.ts","../../../projects/s4y-components/src/lib/components/popover/directives/popover-trigger.directive.ts","../../../projects/s4y-components/src/lib/components/menu/menu.component.ts","../../../projects/s4y-components/src/lib/components/menu/menu-item.component.ts","../../../projects/s4y-components/src/lib/components/image/components/image-preview/image-preview.component.ts","../../../projects/s4y-components/src/lib/components/image/components/image-preview/image-preview.component.html","../../../projects/s4y-components/src/lib/components/image/image.service.ts","../../../projects/s4y-components/src/lib/components/image/image.component.ts","../../../projects/s4y-components/src/lib/components/dynamic-tooltip/dynamic-tooltip.component.ts","../../../projects/s4y-components/src/lib/components/dynamic-tooltip/dynamic-tooltip.component.html","../../../projects/s4y-components/src/lib/components/dynamic-tooltip/dynamic-tooltip.directive.ts","../../../projects/s4y-components/src/lib/components/summary-card/summary-card.component.ts","../../../projects/s4y-components/src/lib/components/summary-card/summary-card.component.html","../../../projects/s4y-components/src/lib/components/select-multi/select-multi.animation.ts","../../../projects/s4y-components/src/lib/components/select-multi/select-multi.component.ts","../../../projects/s4y-components/src/lib/components/select-multi/select-multi.component.html","../../../projects/s4y-components/src/lib/components/dynamic-dialog/dynamic-dialog.tokens.ts","../../../projects/s4y-components/src/lib/components/dynamic-dialog/dynamic-dialog.util.ts","../../../projects/s4y-components/src/lib/components/dynamic-dialog/dynamic-dialog.ref.ts","../../../projects/s4y-components/src/lib/components/dynamic-dialog/dynamic-dialog.component.ts","../../../projects/s4y-components/src/lib/components/dynamic-dialog/dynamic-dialog.component.html","../../../projects/s4y-components/src/lib/components/dynamic-dialog/dynamic-dialog.service.ts","../../../projects/s4y-components/src/lib/components/dynamic-loading-global/dynamic-loading-global.component.ts","../../../projects/s4y-components/src/lib/components/dynamic-loading-global/dynamic-loading-global.service.ts","../../../projects/s4y-components/src/lib/components/rating/rating.component.ts","../../../projects/s4y-components/src/lib/components/rating/rating.component.html","../../../projects/s4y-components/src/lib/components/tag/tag.component.ts","../../../projects/s4y-components/src/lib/components/tag/tag.component.html","../../../projects/s4y-components/src/lib/components/confirmation/confirmation.component.ts","../../../projects/s4y-components/src/lib/components/confirmation/confirmation.component.html","../../../projects/s4y-components/src/lib/components/confirmation/confirmation.service.ts","../../../projects/s4y-components/src/lib/components/collapse/collapse.component.ts","../../../projects/s4y-components/src/lib/components/collapse/collapse-panel.component.ts","../../../projects/s4y-components/src/lib/components/collapse/collapse.module.ts","../../../projects/s4y-components/src/lib/components/information-banner/information-banner.component.ts","../../../projects/s4y-components/src/lib/components/information-banner/information-banner.component.html","../../../projects/s4y-components/src/public-api.ts","../../../projects/s4y-components/src/s4y-ui.ts"],"sourcesContent":["import {\r\n Component,\r\n ContentChild,\r\n contentChild,\r\n TemplateRef,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dashboard-layout',\r\n templateUrl: './dashboard-layout.component.html',\r\n styleUrl: './dashboard-layout.component.scss',\r\n standalone: false,\r\n})\r\nexport class DashboardLayoutComponent {\r\n @ContentChild('asideTemplate') asideTemplate!: TemplateRef<any>;\r\n @ContentChild('navTemplate') navTemplate!: TemplateRef<any>;\r\n @ContentChild('rightPanel') rightPanel!: TemplateRef<any>;\r\n}\r\n","<div class=\"s4y-dashboard-layout\">\r\n @if (asideTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"asideTemplate\"></ng-container>\r\n } @else {\r\n <ng-content select=\"s4y-aside\"></ng-content>\r\n }\r\n <div class=\"s4y-dashboard-layout__content\">\r\n @if (navTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"navTemplate\"></ng-container>\r\n } @else {\r\n <ng-content select=\"s4y-navbar\"></ng-content>\r\n }\r\n <ng-content select=\"s4y-dashboard-routes\"></ng-content>\r\n </div>\r\n @if (rightPanel) {\r\n <ng-container [ngTemplateOutlet]=\"rightPanel\"></ng-container>\r\n }\r\n</div>\r\n","import { computed, Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AsideService {\r\n private readonly MOBILE_MAX_WIDTH = 1025;\r\n\r\n private _isOpened = signal<boolean>(true);\r\n\r\n isOpened = computed(() => this._isOpened());\r\n\r\n private readonly resizeHandler = () => this.defaultStateInMobile();\r\n\r\n constructor() {\r\n if (typeof window !== 'undefined') {\r\n window.addEventListener('resize', this.resizeHandler, { passive: true });\r\n this.defaultStateInMobile();\r\n }\r\n }\r\n\r\n onToggle(value?: boolean) {\r\n if (value === undefined) {\r\n this._isOpened.update((s) => !s);\r\n } else {\r\n this._isOpened.set(value);\r\n }\r\n }\r\n\r\n private defaultStateInMobile() {\r\n if (window.innerWidth < this.MOBILE_MAX_WIDTH) {\r\n this._isOpened.set(false);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (typeof window !== 'undefined') {\r\n window.removeEventListener('resize', this.resizeHandler);\r\n }\r\n }\r\n}\r\n","import { Component, ContentChild, inject, TemplateRef } from '@angular/core';\r\nimport { AsideService } from '../aside/aside.service';\r\n\r\n@Component({\r\n selector: 's4y-navbar',\r\n templateUrl: './navbar.component.html',\r\n styleUrl: './navbar.component.scss',\r\n standalone: false,\r\n})\r\nexport class NavbarComponent {\r\n protected _asideService = inject(AsideService);\r\n\r\n @ContentChild('actionsTemplate')\r\n actionsTemplate!: TemplateRef<any>;\r\n}\r\n","<nav class=\"s4y-navbar-container\">\r\n <button\r\n (click)=\"_asideService.onToggle()\"\r\n class=\"s4y-navbar-container__btn\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"menuIcon\"></ng-container>\r\n </button>\r\n\r\n <div class=\"s4y-navbar-container__actions\">\r\n <ng-container *ngIf=\"actionsTemplate\">\r\n <ng-container [ngTemplateOutlet]=\"actionsTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</nav>\r\n\r\n\r\n<ng-template #menuIcon>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path d=\"M3 4H21V6H3V4ZM3 11H15V13H3V11ZM3 18H21V20H3V18Z\"></path>\r\n </svg>\r\n</ng-template>\r\n","import {\r\n Component,\r\n HostBinding,\r\n Input,\r\n computed,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { NgIf, NgClass, CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-avatar',\r\n imports: [CommonModule],\r\n templateUrl: './avatar.component.html',\r\n styleUrl: './avatar.component.scss',\r\n})\r\nexport class AvatarComponent {\r\n src = input<string | undefined>(undefined); // URL da imagem\r\n alt = input<string>('Avatar'); // Texto alternativo\r\n size = input<'sm' | 'md' | 'lg' | 'xl'>('md'); // Tamanho\r\n rounded = input<boolean>(true); // Arredondar ou não\r\n border = input<boolean>(false); // Borda decorativa\r\n // Estados internos\r\n imageLoaded = signal(false);\r\n imageError = signal(false);\r\n\r\n @HostBinding('class')\r\n get hostClasses(): string {\r\n const classes = [];\r\n\r\n switch (this.size()) {\r\n case 'sm':\r\n classes.push('s4y-avatar-sm');\r\n break;\r\n case 'md':\r\n classes.push('s4y-avatar-md');\r\n break;\r\n case 'lg':\r\n classes.push('s4y-avatar-lg');\r\n break;\r\n case 'xl':\r\n classes.push('s4y-avatar-xl');\r\n break;\r\n default:\r\n classes.push('s4y-avatar-md');\r\n }\r\n\r\n classes.push(this.rounded() ? 's4y-avatar-rounded' : 's4y-avatar-square');\r\n\r\n if (this.border()) {\r\n classes.push('s4y-avatar-border');\r\n }\r\n\r\n return classes.join(' ');\r\n }\r\n\r\n onLoad() {\r\n this.imageLoaded.set(true);\r\n this.imageError.set(false);\r\n }\r\n\r\n onError() {\r\n this.imageError.set(true);\r\n }\r\n}\r\n","@if (src()) {\r\n<img [src]=\"src()\" [alt]=\"alt()\" />\r\n\r\n}@else {\r\n <svg\r\n viewBox=\"0 0 128 128\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n style=\"display:block\"\r\n >\r\n <circle cx=\"64\" cy=\"64\" r=\"64\" fill=\"#D9D9D9\" />\r\n\r\n <circle cx=\"64\" cy=\"48\" r=\"24\" fill=\"#A9AEB3\" />\r\n\r\n <path\r\n fill=\"#A9AEB3\"\r\n d=\"M64 80c-28 0-44 16-44 36v12h88v-12c0-20-16-36-44-36z\"\r\n />\r\n </svg>\r\n}\r\n","// src/app/icon/icon.service.ts\r\nimport { Injectable } from '@angular/core';\r\nimport { defer, from, Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SvgService {\r\n private requests = new Map<string, Promise<string>>();\r\n\r\n getSvgContent(url: string): Observable<string> {\r\n let request = this.requests.get(url);\r\n\r\n if (!request) {\r\n request = fetch(url).then((response) => {\r\n if (!response.ok) {\r\n throw new Error(`Erro ao carregar SVG: ${response.statusText}`);\r\n }\r\n return response.text();\r\n });\r\n\r\n this.requests.set(url, request);\r\n }\r\n\r\n return defer(() => from(request)).pipe(\r\n catchError((error) => {\r\n console.error('Erro ao carregar SVG:', error);\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { SvgService } from './svg.service';\r\nimport { AsyncPipe, JsonPipe } from '@angular/common';\r\n\r\nexport type TSvgSize = number | string;\r\n\r\n@Component({\r\n selector: 's4y-svg',\r\n templateUrl: './svg.component.html',\r\n styleUrls: ['./svg.component.scss'],\r\n imports: [AsyncPipe, JsonPipe],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SvgComponent {\r\n public svgContent: Observable<SafeHtml> | undefined;\r\n private _size: TSvgSize = '24px';\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n private svgService: SvgService,\r\n ) {}\r\n\r\n @Input()\r\n set src(value: string | undefined | null) {\r\n if (!value) return;\r\n\r\n this.setSvgContent(value);\r\n }\r\n\r\n @Input() @HostBinding('style.color') color: string = 'currentColor';\r\n\r\n @Input()\r\n set size(value: TSvgSize) {\r\n switch (value) {\r\n case 'small':\r\n this._size = '16px';\r\n break;\r\n case 'default':\r\n this._size = '24px';\r\n break;\r\n case 'large':\r\n this._size = '32px';\r\n break;\r\n default:\r\n this._size = value;\r\n }\r\n }\r\n\r\n @HostBinding('style.width')\r\n get hostWidth(): string {\r\n return this.normalizeSize(this._size);\r\n }\r\n\r\n @HostBinding('style.height')\r\n get hostHeight(): string {\r\n return this.normalizeSize(this._size);\r\n }\r\n\r\n private normalizeSize(v: TSvgSize): string {\r\n if (!v) return '24px';\r\n if (typeof v === 'number' && Number.isFinite(v) && v > 0) return `${v}px`;\r\n if (typeof v === 'string') return v.trim() || '24px';\r\n return '24px';\r\n }\r\n\r\n private setSvgContent(src: string): void {\r\n this.svgContent = this.svgService\r\n .getSvgContent(src)\r\n .pipe(map((content) => this.sanitizer.bypassSecurityTrustHtml(content)));\r\n }\r\n}\r\n","<div class=\"icon-inner\" [innerHTML]=\"svgContent | async\" ></div>\r\n","import {\r\n Component,\r\n ContentChild,\r\n inject,\r\n input,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Router } from '@angular/router';\r\nimport { AsideService } from './aside.service';\r\n\r\nexport interface iMenuItem {\r\n title: string;\r\n link: string;\r\n iconUri?: string;\r\n isOpen?: boolean;\r\n children?: { title: string; link: string }[];\r\n roles: string[];\r\n}\r\n\r\n@Component({\r\n selector: 's4y-aside',\r\n templateUrl: './aside.component.html',\r\n styleUrl: './aside.component.scss',\r\n standalone: false,\r\n host: {\r\n '[attr.data-opened]': 'isOpened()',\r\n },\r\n})\r\nexport class AsideComponent {\r\n private router = inject(Router);\r\n private sanitizer = inject(DomSanitizer);\r\n protected asideService = inject(AsideService);\r\n\r\n menus = input<iMenuItem[]>([]);\r\n\r\n companyLogoSrc = input<string>(\r\n 'https://vanderson-teste.sirv.com/ChatGPT%20Image%2024%20de%20abr.%20de%202025%2C%2009_37_39%201%20(1).png',\r\n );\r\n companyTitle = input<string>('Solution4You');\r\n companyDescription = input<string>('Tecnologia');\r\n\r\n userImage = input<string>('');\r\n userName = input<string>('');\r\n userEmail = input<string>('');\r\n\r\n isOpened = this.asideService.isOpened;\r\n\r\n @ContentChild('menuTemplate') menuTemplate!: TemplateRef<any>;\r\n @ContentChild('headerTemplate') headerTemplate!: TemplateRef<any>;\r\n @ContentChild('footerTemplate') footerTemplate!: TemplateRef<any>;\r\n\r\n onToggle(menu: iMenuItem) {\r\n if (menu.children && menu.children.length > 0) {\r\n this.closeOtherMenus(menu);\r\n\r\n if (!this.isOpened()) {\r\n this.asideService.onToggle();\r\n }\r\n\r\n menu.isOpen = !menu.isOpen;\r\n } else {\r\n this.router.navigate([menu.link]);\r\n }\r\n }\r\n\r\n closeOtherMenus(menuToKeepOpen: iMenuItem) {\r\n this.menus().forEach((menu) => {\r\n if (menu !== menuToKeepOpen) {\r\n menu.isOpen = false;\r\n }\r\n });\r\n }\r\n\r\n sanitizeSvg(iconUri: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(iconUri); // Sanitiza o conteúdo SVG\r\n }\r\n\r\n closeByOverlay() {\r\n this.asideService.onToggle();\r\n }\r\n}\r\n","<div class=\"s4y-aside-overlay\" (click)=\"closeByOverlay()\"></div>\r\n\r\n<aside [attr.data-opened]=\"isOpened()\" class=\"s4y-aside\">\r\n <div class=\"s4y-aside-header__container\">\r\n @if (headerTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"></ng-container>\r\n } @else {\r\n <div class=\"s4y-aside-header\">\r\n <img class=\"s4y-aside-logo\" [src]=\"companyLogoSrc()\" />\r\n <div class=\"s4y-aside-header__infor\">\r\n <p class=\"s4y-aside-title\">{{ companyTitle() }}</p>\r\n <p class=\"s4y-aside-description\">{{ companyDescription() }}</p>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"s4y-aside-body__container\">\r\n <!-- Body Abaixo -->\r\n <div class=\"s4y-aside-body-section\">\r\n @for (menu of menus(); track $index) {\r\n <div class=\"s4y-aside-body-section__item\">\r\n <div\r\n class=\"s4y-aside-body-section-item__infor\"\r\n [class.active]=\"menu.isOpen\"\r\n (click)=\"onToggle(menu)\"\r\n >\r\n <div\r\n class=\"s4y-aside-body-section-item-title\"\r\n [class.closed]=\"!isOpened\"\r\n >\r\n @if (menuTemplate) {\r\n <ng-container\r\n *ngTemplateOutlet=\"menuTemplate; context: { $implicit: menu }\"\r\n ></ng-container>\r\n } @else\r\n { @if (menu.iconUri) {\r\n <s4y-svg size=\"default\" color=\"#fff\" [src]=\"menu.iconUri\"> </s4y-svg>\r\n }\r\n <p>{{ menu.title }}</p>\r\n }\r\n </div>\r\n\r\n @if (menu.children?.length) {\r\n <!-- -->\r\n @if (menu.isOpen) {\r\n <ng-container [ngTemplateOutlet]=\"arrowBottom\"></ng-container>\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"arrowRight\"></ng-container>\r\n }\r\n <!-- -->\r\n }\r\n </div>\r\n <div class=\"s4y-aside-body-section-item__children\" [class.is-opened]=\"menu.isOpen\">\r\n @for (children of menu.children; track $index) {\r\n <div class=\"s4y-aside-body-section-item-children__item\">\r\n <a role=\"link\" routerLinkActive=\"children-active\" [routerLinkActiveOptions]=\"{exact: true}\" [routerLink]=\"children.link\">{{ children.title }}</a>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <!-- <div class=\"s4y-aside-body-section__scroll\"></div> -->\r\n </div>\r\n <!-- Body Acima -->\r\n <div class=\"s4y-aside-body__user\" [class.s4y-aside-body__user_divider]=\"footerTemplate || (userImage() && userName() && userEmail())\">\r\n @if (footerTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"footerTemplate\"></ng-container>\r\n } @else {\r\n @if (userImage()) {\r\n <s4y-avatar [src]=\"userImage()\"></s4y-avatar>\r\n }\r\n <div class=\"s4y-aside-body-user__infor\">\r\n <p class=\"s4y-aside-body-user_name\">{{ userName() }}</p>\r\n <p class=\"s4y-aside-body-user_email\">{{ userEmail() }}</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</aside>\r\n\r\n<ng-template #arrowRight>\r\n <span class=\"s4y-aside-arrow\">\r\n <svg\r\n width=\"1.8rem\"\r\n height=\"1.8rem\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M13.1717 12.0007L8.22192 7.05093L9.63614 5.63672L16.0001 12.0007L9.63614 18.3646L8.22192 16.9504L13.1717 12.0007Z\"\r\n ></path>\r\n </svg>\r\n </span>\r\n</ng-template>\r\n<ng-template #arrowBottom>\r\n <span class=\"s4y-aside-arrow\">\r\n <svg\r\n width=\"1.8rem\"\r\n height=\"1.8rem\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"\r\n ></path>\r\n </svg>\r\n </span>\r\n</ng-template>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dashboard-routes',\r\n templateUrl: './dashboard-routes.component.html',\r\n styleUrl: './dashboard-routes.component.scss',\r\n standalone: false,\r\n host: {},\r\n})\r\nexport class DashboardRoutesComponent {}\r\n","<div class=\"s4y-dashboard-routes-container\" cdkScrollable>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dashboard-container',\r\n templateUrl: './dashboard-container.component.html',\r\n styleUrl: './dashboard-container.component.scss',\r\n standalone: false,\r\n})\r\nexport class DashboardContainerComponent {}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport { DashboardLayoutComponent } from './dashboard-layout/dashboard-layout.component';\r\nimport { AsideComponent } from './aside/aside.component';\r\nimport { RouterLink, RouterModule } from '@angular/router';\r\nimport { NavbarComponent } from './navbar/navbar.component';\r\nimport { AvatarComponent } from '../avatar/avatar.component';\r\nimport { DashboardRoutesComponent } from './dashboard-routes/dashboard-routes.component';\r\nimport { DashboardContainerComponent } from './dashboard-container/dashboard-container.component';\r\nimport { SvgComponent } from '../svg/svg.component';\r\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\r\n\r\nconst COMPONENTS = [\r\n DashboardLayoutComponent,\r\n AsideComponent,\r\n NavbarComponent,\r\n DashboardRoutesComponent,\r\n DashboardContainerComponent,\r\n];\r\n\r\n@NgModule({\r\n declarations: [COMPONENTS],\r\n exports: [COMPONENTS],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n AvatarComponent,\r\n SvgComponent,\r\n CdkScrollableModule,\r\n ],\r\n})\r\nexport class DashboardModule {}\r\n","// lib/components/dashboard/index.ts\r\nexport * from './dashboard-layout/dashboard-layout.component';\r\nexport * from './navbar/navbar.component';\r\nexport * from './aside/aside.component';\r\nexport * from './aside/aside.service';\r\nexport * from './dashboard-routes/dashboard-routes.component';\r\nexport * from './dashboard-container/dashboard-container.component';\r\nexport * from './dashboard.module';\r\n","import {\r\n AfterViewInit,\r\n booleanAttribute,\r\n Component,\r\n computed,\r\n HostBinding,\r\n input,\r\n} from '@angular/core';\r\nimport { tButtonSize, tButtonVariant } from './button.interface';\r\n\r\n@Component({\r\n selector: 'button[s4yButton], a[s4yButton]',\r\n imports: [],\r\n template: `\r\n @if (loading()) {\r\n <div class=\"loader\"></div>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n `,\r\n styleUrl: './button.component.scss',\r\n standalone: true,\r\n host: {\r\n '[class.btn-default]': 'true',\r\n '[class.loading]': 'loading()',\r\n '[attr.size]': 'size()',\r\n '[attr.variant]': 'variant()',\r\n '[style.width]': 'fullWidth() ? \"100%\" : null',\r\n '[class.outlined]': 'outlined()',\r\n '[class.disabled]': 'disabled()',\r\n '[class]': 'variantClass()',\r\n '[class.icon-centered]': 'iconAligned()',\r\n '[class.rounded]': 'roundend()',\r\n },\r\n})\r\nexport class ButtonComponent implements AfterViewInit {\r\n disabled = input(false);\r\n outlined = input(false, { transform: booleanAttribute });\r\n loading = input(false);\r\n size = input<tButtonSize>('medium');\r\n\r\n roundend = input<boolean>(true);\r\n\r\n variant = input<tButtonVariant>('primary');\r\n\r\n fullWidth = input<boolean>(false);\r\n iconAligned = input<boolean>(true);\r\n\r\n ngAfterViewInit(): void {}\r\n\r\n @HostBinding('disabled')\r\n protected get isDisabled() {\r\n return this.loading() || this.disabled();\r\n }\r\n\r\n protected variantClass = computed(() => {\r\n switch (this.variant()) {\r\n case 'primary':\r\n return 'btn-primary';\r\n case 'secondary':\r\n return 'btn-secondary';\r\n case 'danger':\r\n return 'btn-danger';\r\n case 'success':\r\n return 'btn-success';\r\n case 'info':\r\n return 'btn-info';\r\n case 'gray':\r\n return 'btn-gray';\r\n default:\r\n return 'btn-primary';\r\n }\r\n });\r\n}\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-form-field',\r\n templateUrl: './form-field.component.html',\r\n styleUrl: './form-field.component.scss',\r\n standalone: false,\r\n})\r\nexport class FormFieldComponent {}\r\n","<label class=\"s4y-form-field\">\r\n <ng-content select=\"s4y-label\"></ng-content>\r\n <div class=\"s4y-input-wrapper\">\r\n <ng-content select=\"s4y-input-prefix\"></ng-content>\r\n <ng-content select=\"input, textarea\"></ng-content>\r\n <ng-content select=\"s4y-input-sufix\"></ng-content>\r\n </div>\r\n</label>\r\n<ng-content select=\"s4y-hint, s4y-error-message\"></ng-content>\r\n","import { Component, input } from '@angular/core';\r\n\r\nexport type tInputSize = 'extra-small' | 'small' | 'medium' | 'large';\r\n\r\n@Component({\r\n selector: 'input[s4y-input], textarea[s4y-input]',\r\n templateUrl: './input.component.html',\r\n styleUrl: './input.component.scss',\r\n standalone: false,\r\n host: {\r\n '[attr.size]': 'size()',\r\n },\r\n})\r\nexport class InputComponent {\r\n size = input<tInputSize>('medium');\r\n}\r\n","<p>input works!</p>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-label',\r\n templateUrl: './label.component.html',\r\n styleUrl: './label.component.scss',\r\n standalone: false,\r\n})\r\nexport class LabelComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-hint',\r\n templateUrl: './hint.component.html',\r\n styleUrl: './hint.component.scss',\r\n standalone: false,\r\n})\r\nexport class HintComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-error-message',\r\n templateUrl: './error-message.component.html',\r\n styleUrl: './error-message.component.scss',\r\n standalone: false,\r\n})\r\nexport class ErrorMessageComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-input-prefix',\r\n templateUrl: './input-prefix.component.html',\r\n styleUrl: './input-prefix.component.scss',\r\n standalone: false,\r\n})\r\nexport class InputPrefixComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-input-sufix',\r\n templateUrl: './input-sufix.component.html',\r\n styleUrl: './input-sufix.component.scss',\r\n standalone: false,\r\n})\r\nexport class InputSufixComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component, forwardRef, input, model } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 's4y-form-field-password',\r\n templateUrl: './form-field-password.component.html',\r\n styleUrl: './form-field-password.component.scss',\r\n standalone: false,\r\n providers: [\r\n {\r\n multi: true,\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FormFieldPasswordComponent),\r\n },\r\n ],\r\n})\r\nexport class FormFieldPasswordComponent implements ControlValueAccessor {\r\n type: 'text' | 'password' = 'password';\r\n\r\n label = input<string>('Senha');\r\n name = input.required<string>();\r\n id = input.required<string>();\r\n placeholder = input<string>(this.label());\r\n\r\n protected value: string = '';\r\n protected disabled: boolean = false;\r\n\r\n protected togglePasswordVisibility(): void {\r\n this.type = this.type === 'text' ? 'password' : 'text';\r\n }\r\n\r\n onInput(e: Event) {\r\n const value = (e.target as HTMLInputElement).value;\r\n\r\n this.value = value;\r\n this.onChanged(this.value);\r\n this.onTouched();\r\n }\r\n\r\n onChanged = (value: string) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.value = value || '';\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChanged = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","<label class=\"s4y-form-field\">\r\n <s4y-label>\r\n {{ label() }}\r\n </s4y-label>\r\n <div class=\"s4y-input-wrapper\">\r\n <ng-content select=\"s4y-input-prefix\"></ng-content>\r\n <input\r\n s4y-input\r\n [value]=\"value\"\r\n (input)=\"onInput($event)\"\r\n (blur)=\"onTouched()\"\r\n [disabled]=\"disabled\"\r\n [type]=\"type\"\r\n [name]=\"name()\"\r\n [id]=\"id()\"\r\n [placeholder]=\"placeholder()\"\r\n />\r\n <s4y-input-sufix>\r\n <button\r\n type=\"button\"\r\n class=\"shown-password\"\r\n (click)=\"togglePasswordVisibility()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"eye\"></ng-container>\r\n </button>\r\n </s4y-input-sufix>\r\n </div>\r\n</label>\r\n<ng-content select=\"s4y-hint, s4y-error-message\"></ng-content>\r\n\r\n<!-- Icone cadeado -->\r\n<ng-template #eye>\r\n <!-- Olho fechado -->\r\n @if (type == \"password\") {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12.0003 3C17.3924 3 21.8784 6.87976 22.8189 12C21.8784 17.1202 17.3924 21 12.0003 21C6.60812 21 2.12215 17.1202 1.18164 12C2.12215 6.87976 6.60812 3 12.0003 3ZM12.0003 19C16.2359 19 19.8603 16.052 20.7777 12C19.8603 7.94803 16.2359 5 12.0003 5C7.7646 5 4.14022 7.94803 3.22278 12C4.14022 16.052 7.7646 19 12.0003 19ZM12.0003 16.5C9.51498 16.5 7.50026 14.4853 7.50026 12C7.50026 9.51472 9.51498 7.5 12.0003 7.5C14.4855 7.5 16.5003 9.51472 16.5003 12C16.5003 14.4853 14.4855 16.5 12.0003 16.5ZM12.0003 14.5C13.381 14.5 14.5003 13.3807 14.5003 12C14.5003 10.6193 13.381 9.5 12.0003 9.5C10.6196 9.5 9.50026 10.6193 9.50026 12C9.50026 13.3807 10.6196 14.5 12.0003 14.5Z\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n <!-- Olho aberto -->\r\n @if (type == \"text\") {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M17.8827 19.2968C16.1814 20.3755 14.1638 21.0002 12.0003 21.0002C6.60812 21.0002 2.12215 17.1204 1.18164 12.0002C1.61832 9.62282 2.81932 7.5129 4.52047 5.93457L1.39366 2.80777L2.80788 1.39355L22.6069 21.1925L21.1927 22.6068L17.8827 19.2968ZM5.9356 7.3497C4.60673 8.56015 3.6378 10.1672 3.22278 12.0002C4.14022 16.0521 7.7646 19.0002 12.0003 19.0002C13.5997 19.0002 15.112 18.5798 16.4243 17.8384L14.396 15.8101C13.7023 16.2472 12.8808 16.5002 12.0003 16.5002C9.51498 16.5002 7.50026 14.4854 7.50026 12.0002C7.50026 11.1196 7.75317 10.2981 8.19031 9.60442L5.9356 7.3497ZM12.9139 14.328L9.67246 11.0866C9.5613 11.3696 9.50026 11.6777 9.50026 12.0002C9.50026 13.3809 10.6196 14.5002 12.0003 14.5002C12.3227 14.5002 12.6309 14.4391 12.9139 14.328ZM20.8068 16.5925L19.376 15.1617C20.0319 14.2268 20.5154 13.1586 20.7777 12.0002C19.8603 7.94818 16.2359 5.00016 12.0003 5.00016C11.1544 5.00016 10.3329 5.11773 9.55249 5.33818L7.97446 3.76015C9.22127 3.26959 10.5793 3.00016 12.0003 3.00016C17.3924 3.00016 21.8784 6.87992 22.8189 12.0002C22.5067 13.6998 21.8038 15.2628 20.8068 16.5925ZM11.7229 7.50857C11.8146 7.50299 11.9071 7.50016 12.0003 7.50016C14.4855 7.50016 16.5003 9.51488 16.5003 12.0002C16.5003 12.0933 16.4974 12.1858 16.4919 12.2775L11.7229 7.50857Z\"\r\n ></path>\r\n </svg>\r\n }\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormFieldComponent } from './form-field/form-field.component';\r\nimport { InputComponent } from './components/input/input.component';\r\nimport { LabelComponent } from './components/label/label.component';\r\nimport { HintComponent } from './components/hint/hint.component';\r\nimport { ErrorMessageComponent } from './components/error-message/error-message.component';\r\nimport { InputPrefixComponent } from './components/input-prefix/input-prefix.component';\r\nimport { InputSufixComponent } from './components/input-sufix/input-sufix.component';\r\nimport { FormFieldPasswordComponent } from './form-field-password/form-field-password.component';\r\n\r\nconst COMPONENTS = [\r\n FormFieldComponent,\r\n InputComponent,\r\n LabelComponent,\r\n HintComponent,\r\n ErrorMessageComponent,\r\n InputPrefixComponent,\r\n InputSufixComponent,\r\n FormFieldPasswordComponent,\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n exports: COMPONENTS,\r\n imports: [CommonModule],\r\n})\r\nexport class FormsKitModule {}\r\n","// lib/components/forms-kit/index.ts\r\nexport * from './forms-kit.module';\r\nexport * from './form-field-password/form-field-password.component';\r\nexport * from './form-field/form-field.component';\r\nexport * from './components/error-message/error-message.component';\r\nexport * from './components/hint/hint.component';\r\nexport * from './components/input/input.component';\r\nexport * from './components/input-prefix/input-prefix.component';\r\nexport * from './components/input-sufix/input-sufix.component';\r\nexport * from './components/label/label.component';\r\n","import {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\nexport type tMask =\r\n | 'cep'\r\n | 'cnpj'\r\n | 'cpf'\r\n | 'data'\r\n | 'moeda'\r\n | 'porcentagem'\r\n | 'telefone'\r\n | 'telefone-fixo';\r\n\r\n@Directive({\r\n selector: '[s4yMask]',\r\n standalone: true,\r\n})\r\nexport class MaskDirective implements AfterViewInit {\r\n mask = input<tMask | string | undefined>(undefined, { alias: 's4yMask' });\r\n showMaskType = input<boolean>(false);\r\n\r\n private control = inject(NgControl, { optional: true });\r\n constructor(private el: ElementRef<HTMLInputElement>) {}\r\n\r\n ngAfterViewInit(): void {\r\n if (this.showMaskType()) {\r\n this._applyPlaceholderMask();\r\n }\r\n }\r\n\r\n private _applyPlaceholderMask() {\r\n const input = this.el.nativeElement;\r\n\r\n switch (this.mask()) {\r\n case 'cep':\r\n input.value = this._toCEP(input.value);\r\n break;\r\n case 'cpf':\r\n input.value = this._toCPF(input.value);\r\n break;\r\n case 'cnpj':\r\n input.value = this._toCNPJ(input.value);\r\n break;\r\n case 'data':\r\n input.value = this._toDate(input.value);\r\n break;\r\n case 'moeda':\r\n input.value = this._toCurrency(input.value);\r\n break;\r\n case 'porcentagem':\r\n input.value = this._toPercent(input.value);\r\n break;\r\n case 'telefone':\r\n input.value = this._toMobilePhone(input.value);\r\n break;\r\n case 'telefone-fixo':\r\n input.value = this._toLandlinePhone(input.value);\r\n break;\r\n }\r\n }\r\n\r\n @HostListener('focus')\r\n @HostListener('click')\r\n onFocusOrClick() {\r\n const input = this.el.nativeElement;\r\n const value = input.value;\r\n\r\n const type = this.mask();\r\n\r\n const templates: Record<tMask, string> = {\r\n data: '__/__/____',\r\n cpf: '___.___.___-__',\r\n cnpj: '__.___.___/____-__',\r\n cep: '_____-___',\r\n moeda: '', // máscara de moeda não precisa de cursor fixo\r\n porcentagem: '', // idem\r\n telefone: '(__) _____-____',\r\n 'telefone-fixo': '(__) ____-____',\r\n };\r\n\r\n // Se não for uma máscara válida, ignora\r\n if (!type || !(type in templates)) return;\r\n\r\n const template = templates[type as tMask];\r\n\r\n // Só reposiciona se tiver template definido\r\n if (template) {\r\n this._setCursorToNextEditable(template, value);\r\n }\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n private onInput(e: InputEvent) {\r\n const input = this.el.nativeElement;\r\n const value = input.value;\r\n\r\n switch (this.mask()) {\r\n case 'data': {\r\n const template = '__/__/____';\r\n const masked = this._applyMaskTemplate(value, template);\r\n input.value = masked;\r\n this._setCursorToNextEditable(template, value);\r\n break;\r\n }\r\n\r\n case 'cpf': {\r\n const template = '___.___.___-__';\r\n const masked = this._applyMaskTemplate(value, template);\r\n input.value = masked;\r\n this._setCursorToNextEditable(template, value);\r\n break;\r\n }\r\n\r\n case 'cnpj': {\r\n const template = '__.___.___/____-__';\r\n const masked = this._applyMaskTemplate(value, template);\r\n input.value = masked;\r\n this._setCursorToNextEditable(template, value);\r\n break;\r\n }\r\n\r\n case 'cep': {\r\n const template = '_____-___';\r\n const masked = this._applyMaskTemplate(value, template);\r\n input.value = masked;\r\n this._setCursorToNextEditable(template, value);\r\n break;\r\n }\r\n\r\n case 'telefone': {\r\n const template = '(__) _____-____';\r\n const masked = this._toMobilePhone(value);\r\n input.value = masked;\r\n this._setCursorToNextEditable(template, value);\r\n break;\r\n }\r\n case 'telefone-fixo': {\r\n const template = '(__) ____-____';\r\n const masked = this._toLandlinePhone(value);\r\n input.value = masked;\r\n this._setCursorToNextEditable(template, value);\r\n break;\r\n }\r\n\r\n case 'moeda': {\r\n input.value = this._toCurrency(value);\r\n break;\r\n }\r\n\r\n case 'porcentagem': {\r\n input.value = this._toPercent(value);\r\n break;\r\n }\r\n }\r\n\r\n if (this.control && this.control.control) {\r\n this.control.control.setValue(input.value, { emitEvent: false });\r\n }\r\n }\r\n\r\n private _toDate = (value: string) =>\r\n this._applyMaskTemplate(value, '__/__/____');\r\n\r\n private _toCPF = (value: string) =>\r\n this._applyMaskTemplate(value, '___.___.___-__');\r\n\r\n private _toCNPJ = (value: string) =>\r\n this._applyMaskTemplate(value, '__.___.___/____-__');\r\n\r\n private _toCEP = (value: string) =>\r\n this._applyMaskTemplate(value, '_____-___');\r\n\r\n private _toMobilePhone = (value: string): string =>\r\n this._applyMaskTemplate(value, '(__) _____-____');\r\n\r\n private _toLandlinePhone = (value: string): string =>\r\n this._applyMaskTemplate(value, '(__) ____-____');\r\n\r\n private _toCurrency = (value: string) => {\r\n // Remove qualquer caractere não numérico\r\n const cleaned = value.replace(/\\D/g, '');\r\n\r\n // Se estiver vazio, retorna 0 formatado\r\n if (!cleaned) return 'R$ 0,00';\r\n\r\n const number = parseFloat(cleaned) / 100;\r\n\r\n return number.toLocaleString('pt-BR', {\r\n style: 'currency',\r\n currency: 'BRL',\r\n });\r\n };\r\n\r\n private _toPercent = (value: string) => {\r\n // Remove tudo que não for número\r\n const cleaned = value.replace(/\\D/g, '');\r\n\r\n // Limita a 6 dígitos (ex: 999999 → 9999,99%)\r\n const limited = cleaned.slice(0, 6);\r\n\r\n // Garante um valor numérico válido\r\n const number = parseFloat(limited || '0') / 100;\r\n\r\n // Formata com 2 casas decimais e adiciona % manualmente\r\n return (\r\n number.toLocaleString('pt-BR', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n }) + '%'\r\n );\r\n };\r\n\r\n private _applyMaskTemplate(value: string, template: string): string {\r\n const result = template.split('');\r\n let i = 0;\r\n\r\n for (const digit of value.replace(/\\D/g, '')) {\r\n while (i < result.length && !['_'].includes(result[i])) i++;\r\n if (i < result.length) result[i++] = digit;\r\n }\r\n\r\n return result.join('');\r\n }\r\n\r\n private _getCursorPosition(template: string, digitsCount: number): number {\r\n let count = 0;\r\n for (let i = 0; i < template.length; i++) {\r\n if (template[i].match(/[_\\d]/)) count++;\r\n if (count >= digitsCount) return i + 1;\r\n }\r\n return template.length;\r\n }\r\n\r\n private _setCursorToNextEditable(template: string, value: string) {\r\n const input = this.el.nativeElement;\r\n const digits = value.replace(/\\D/g, '');\r\n const nextPos = this._getCursorPosition(template, digits.length);\r\n setTimeout(() => input.setSelectionRange(nextPos, nextPos));\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[s4yClickOutside]',\r\n standalone: true,\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() clickOutside = new EventEmitter<void>();\r\n @Input() isVisible: boolean = false;\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n handleClick(targetElement: HTMLElement): void {\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n}\r\n","import {\r\n animate,\r\n style,\r\n transition,\r\n trigger,\r\n AnimationTriggerMetadata,\r\n} from '@angular/animations';\r\n\r\nexport const ToastAnimation: AnimationTriggerMetadata = trigger(\r\n 'ToastAnimation',\r\n [\r\n // TOPO\r\n transition('top-left => void, top-right => void', [\r\n animate(\r\n '300ms ease-in',\r\n style({ opacity: 0, transform: 'translateY(-20px)' })\r\n ),\r\n ]),\r\n transition('void => top-left, void => top-right', [\r\n style({ opacity: 0, transform: 'translateY(-20px)' }),\r\n animate(\r\n '300ms ease-out',\r\n style({ opacity: 1, transform: 'translateY(0)' })\r\n ),\r\n ]),\r\n\r\n // BOTTOM\r\n transition('bottom-left => void, bottom-right => void', [\r\n animate(\r\n '300ms ease-in',\r\n style({ opacity: 0, transform: 'translateY(20px)' })\r\n ),\r\n ]),\r\n transition('void => bottom-left, void => bottom-right', [\r\n style({ opacity: 0, transform: 'translateY(20px)' }),\r\n animate(\r\n '300ms ease-out',\r\n style({ opacity: 1, transform: 'translateY(0)' })\r\n ),\r\n ]),\r\n ]\r\n);\r\n","import { computed, Injectable, signal } from '@angular/core';\r\nimport { iToast } from './toast.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ToastService {\r\n private _toasts = signal<iToast[]>([]);\r\n\r\n toasts = computed(() => this._toasts());\r\n\r\n add(toast: iToast) {\r\n const internalId =\r\n typeof crypto?.randomUUID === 'function'\r\n ? crypto.randomUUID()\r\n : this.generateUUID();\r\n\r\n const toastWithId: iToast = { ...toast, __internalId: internalId };\r\n\r\n this._toasts.update((list) => [...list, toastWithId]);\r\n\r\n if (toast.duration && toast.duration > 0) {\r\n setTimeout(() => {\r\n this.removeByInternalId(internalId);\r\n }, toast.duration);\r\n }\r\n }\r\n\r\n remove(index: number) {\r\n this._toasts.update((prevState) => {\r\n const newToasts = prevState.filter((_, i) => index != i);\r\n\r\n return newToasts;\r\n });\r\n }\r\n\r\n removeByInternalId(id: string) {\r\n this._toasts.update((list) =>\r\n list.filter((toast) => toast.__internalId !== id),\r\n );\r\n }\r\n\r\n clearAll() {\r\n this._toasts.set([]);\r\n }\r\n\r\n private generateUUID(): string {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16) | 0;\r\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n}\r\n","import { Component, computed, input, signal } from '@angular/core';\r\nimport { ToastService } from './toast.service';\r\nimport { ToastAnimation } from './toast.animation';\r\nimport { ToastPosition } from './toast.interface';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-toast',\r\n imports: [NgClass],\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.scss',\r\n animations: [ToastAnimation],\r\n})\r\nexport class ToastComponent {\r\n position = input<ToastPosition>('top-left');\r\n\r\n constructor(protected _toastService: ToastService) {}\r\n\r\n protected toasts = computed(() => this._toastService.toasts());\r\n\r\n isBottomPosition = computed(() => this.position().startsWith('bottom'));\r\n}\r\n","<!-- Ajustar os icones -->\r\n\r\n<div class=\"s4y-toast-container\" [ngClass]=\"position()\">\r\n @for (toast of toasts(); track $index; let i = $index) {\r\n <div class=\"s4y-toast-item\" [@ToastAnimation]=\"position()\">\r\n <div class=\"s4y-toast-item_content\">\r\n <div class=\"s4y-toast-item_icon {{ toast.type }}\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"#fff\">\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11 7H13V9H11V7ZM11 11H13V17H11V11Z\"\r\n ></path>\r\n </svg>\r\n </div>\r\n <p class=\"s4y-toast-item_message\">\r\n {{ toast.message }}\r\n </p>\r\n </div>\r\n <button (click)=\"_toastService.remove(i)\" class=\"s4y-toast-item_close\">\r\n ×\r\n </button>\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n animate,\r\n group,\r\n query,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nexport const drawerAnimation = trigger('drawerAnimation', [\r\n transition(\r\n ':enter',\r\n [\r\n group([\r\n query(':self', [\r\n style({ opacity: 0 }),\r\n animate('300ms ease-out', style({ opacity: 1 })),\r\n ]),\r\n query(\r\n '.s4y-drawer-container',\r\n [\r\n style({ transform: '{{transformFrom}}' }),\r\n animate('300ms ease-out', style({ transform: 'translate(0, 0)' })),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n ],\r\n { params: { transformFrom: 'translateX(100%)' } }\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n group([\r\n query(':self', [\r\n style({ opacity: 1 }),\r\n animate('300ms ease-in', style({ opacity: 0 })),\r\n ]),\r\n query(\r\n '.s4y-drawer-container',\r\n [\r\n style({ transform: 'translate(0, 0)' }),\r\n animate('300ms ease-in', style({ transform: '{{transformTo}}' })),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n ],\r\n { params: { transformTo: 'translateX(100%)' } }\r\n ),\r\n]);\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n HostListener,\r\n input,\r\n model,\r\n computed,\r\n OnInit,\r\n effect,\r\n contentChild,\r\n TemplateRef,\r\n ContentChild,\r\n} from '@angular/core';\r\nimport { drawerAnimation } from './drawer.animation';\r\n\r\ntype tPosition = 'left' | 'right' | 'top' | 'bottom';\r\ntype tSize = 'small' | 'medium' | 'large' | string;\r\n\r\n@Component({\r\n selector: 's4y-drawer',\r\n imports: [NgClass, NgTemplateOutlet],\r\n templateUrl: './drawer.component.html',\r\n styleUrl: './drawer.component.scss',\r\n animations: [drawerAnimation],\r\n})\r\nexport class DrawerComponent implements OnInit {\r\n position = input<tPosition>('right');\r\n isOpen = model<boolean>(false);\r\n size = input<tSize>('medium');\r\n backdrop = input<boolean>(true);\r\n closeOnBackdropClick = input<boolean>(true);\r\n hasCloseButton = input<boolean>(true);\r\n\r\n title = input<string>('Title');\r\n\r\n protected isVisible = computed(() => this.isOpen());\r\n\r\n @ContentChild('headerTemplate') headerTemplate!: TemplateRef<any>;\r\n @ContentChild('bodyTemplate') bodyTemplate!: TemplateRef<any>;\r\n @ContentChild('footerTemplate') footerTemplate!: TemplateRef<any>;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n drawerSize = computed(() => {\r\n const size = this.size();\r\n const position = this.position();\r\n\r\n let value: string;\r\n\r\n switch (size) {\r\n case 'small':\r\n value = '250px';\r\n break;\r\n case 'medium':\r\n value = '400px';\r\n break;\r\n case 'large':\r\n value = '600px';\r\n break;\r\n default:\r\n value = size;\r\n }\r\n\r\n if (position === 'left' || position === 'right') {\r\n return { width: value, height: null };\r\n } else {\r\n return { width: null, height: value };\r\n }\r\n });\r\n\r\n isHorizontal = computed(() => {\r\n const pos = this.position();\r\n return pos === 'left' || pos === 'right';\r\n });\r\n\r\n isVertical = computed(() => {\r\n const pos = this.position();\r\n return pos === 'top' || pos === 'bottom';\r\n });\r\n\r\n transformFrom = computed(() => {\r\n switch (this.position()) {\r\n case 'left':\r\n return 'translateX(-100%)';\r\n case 'right':\r\n return 'translateX(100%)';\r\n case 'top':\r\n return 'translateY(-100%)';\r\n case 'bottom':\r\n return 'translateY(100%)';\r\n default:\r\n return 'translateX(100%)'; // Default: right\r\n }\r\n });\r\n\r\n transformTo = computed(() => {\r\n switch (this.position()) {\r\n case 'left':\r\n return 'translateX(-100%)';\r\n case 'right':\r\n return 'translateX(100%)';\r\n case 'top':\r\n return 'translateY(-100%)';\r\n case 'bottom':\r\n return 'translateY(100%)';\r\n default:\r\n return 'translateX(100%)'; // Default: right\r\n }\r\n });\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n closeOnPressEscapeKey(event: KeyboardEvent) {\r\n this.close();\r\n }\r\n\r\n onBackdropClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n\r\n if (target.classList.contains('s4y-overlay')) {\r\n if (this.closeOnBackdropClick() && this.isOpen()) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n }\r\n\r\n close() {\r\n if (this.isOpen()) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n\r\n onAnimationDone(event: any) {\r\n if (!this.isOpen()) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n}\r\n","@if (isVisible()) {\r\n <div\r\n [@drawerAnimation]=\"{\r\n value: '',\r\n params: {\r\n transformFrom: transformFrom(),\r\n transformTo: transformTo(),\r\n },\r\n }\"\r\n [class.s4y-overlay]=\"backdrop()\"\r\n (click)=\"onBackdropClick($event)\"\r\n >\r\n <div\r\n [style.maxWidth]=\"drawerSize().width\"\r\n [style.maxHeight]=\"drawerSize().height\"\r\n [ngClass]=\"{\r\n 's4y-drawer-left': position() === 'left',\r\n 's4y-drawer-right': position() === 'right',\r\n 's4y-drawer-top': position() === 'top',\r\n 's4y-drawer-bottom': position() === 'bottom',\r\n }\"\r\n class=\"s4y-drawer-container\"\r\n >\r\n <header class=\"s4y-header\">\r\n @if (headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n }\r\n <!-- -->\r\n @else {\r\n <p class=\"s4y-header__title\">{{ title() }}</p>\r\n @if (hasCloseButton()) {\r\n <button (click)=\"close()\">×</button>\r\n }\r\n }\r\n </header>\r\n\r\n <div class=\"s4y-body-content\">\r\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\r\n </div>\r\n @if (footerTemplate) {\r\n <div class=\"s4y-footer-content\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { Component, input, Input, OnInit } from '@angular/core';\nimport { SpinnerColor, SpinnerSize } from './interface';\n\n@Component({\n selector: 's4y-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n host: {\n '[attr.size]': 'size()',\n '[attr.color]': 'color()',\n },\n})\nexport class SpinnerComponent implements OnInit {\n size = input<SpinnerSize>('small');\n color = input<SpinnerColor>('primary');\n\n constructor() {}\n\n ngOnInit() {}\n}\n","\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n ContentChild,\r\n ElementRef,\r\n HostBinding,\r\n input,\r\n OnChanges,\r\n output,\r\n signal,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { SpinnerComponent } from '../spinner/spinner.component';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nexport type TableColumnStickyPosition = 'left' | 'right';\r\n\r\nexport interface ITableColumn<T = any> {\r\n key: keyof T | string;\r\n display: string;\r\n sortable?: boolean;\r\n style?: { [key: string]: any };\r\n\r\n sticky?: TableColumnStickyPosition;\r\n}\r\n\r\nexport interface ICustomSort<T = any> {\r\n key: keyof T | string;\r\n value: ISortDirection;\r\n}\r\n\r\nexport type ISortDirection = 'asc' | 'desc' | 'none';\r\n\r\n@Component({\r\n selector: 's4y-table',\r\n imports: [CommonModule, SpinnerComponent, ScrollingModule],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TableComponent implements OnChanges {\r\n readonly sortStateChanged$ = new Subject<void>();\r\n\r\n @ViewChild('tableScrollContainer') tableScrollContainer!: ElementRef;\r\n\r\n headers = input<ITableColumn[]>([]);\r\n data = input<any[]>([]);\r\n stickyHeader = input(false);\r\n\r\n customSort = input<boolean>(false);\r\n multipleSort = input<boolean>(false);\r\n initialSorts = input<ICustomSort[]>([]);\r\n\r\n sortFunction = output<ICustomSort>();\r\n multiSortFunction = output<ICustomSort[]>();\r\n\r\n sortField = input<string | null>(null);\r\n sortOrder = input<ISortDirection>('none');\r\n\r\n sorts = signal<ICustomSort[]>([]);\r\n\r\n tableHeight = input<string | null>(null);\r\n tableMaxHeight = input<string | null>(null);\r\n\r\n sortedData = computed(() => {\r\n let originalData: any[] = [...this.data()];\r\n\r\n if (this.customSort()) return originalData;\r\n\r\n if (this.multipleSort()) {\r\n const sorts = this.sorts();\r\n if (!sorts.length) return originalData;\r\n\r\n return originalData\r\n .map((item, idx) => ({ item, idx }))\r\n .sort((x, y) => {\r\n for (const s of sorts) {\r\n const key = String(s.key);\r\n const res = this.compareValues(x.item[key], y.item[key], s.value);\r\n if (res !== 0) return res;\r\n }\r\n return x.idx - y.idx;\r\n })\r\n .map((x) => x.item);\r\n }\r\n\r\n const sortBy = this.sortBy();\r\n const direction = this.sortDirection();\r\n\r\n if (!originalData.length || !sortBy || direction === 'none')\r\n return originalData;\r\n\r\n const header = this.headers().find((h) => h.key === sortBy);\r\n\r\n if (!header || header.sortable === false) return originalData;\r\n\r\n return [...originalData].sort((a, b) =>\r\n this.compareValues(a[sortBy], b[sortBy], direction),\r\n );\r\n });\r\n\r\n sortDirection = signal<ISortDirection>('asc');\r\n\r\n isLoading = input<boolean>(false);\r\n hasError = input<boolean>(false);\r\n\r\n currentThElement?: HTMLElement;\r\n\r\n @ContentChild('rowTemplate') rowTemplate!: TemplateRef<any>;\r\n @ContentChild('headTemplate') headTemplate!: TemplateRef<any>;\r\n @ContentChild('emptyTemplate') emptyTemplate!: TemplateRef<any>;\r\n @ContentChild('errorTemplate') errorTemplate!: TemplateRef<any>;\r\n\r\n @ContentChild('customEmptyTemplate') customEmptyTemplate!: TemplateRef<any>;\r\n @ContentChild('customErrorTemplate') customErrorTemplate!: TemplateRef<any>;\r\n\r\n @ContentChild('fetchMoreLoadingTemplate')\r\n fetchMoreLoadingTemplate!: TemplateRef<any>;\r\n\r\n @ContentChild('fetchMoreErrorTemplate')\r\n fetchMoreErrorTemplate!: TemplateRef<any>;\r\n\r\n @ContentChild('endReachedTemplate')\r\n endReachedTemplate!: TemplateRef<any>;\r\n\r\n isFetchMoreError = input(false);\r\n isEndReached = input(false);\r\n\r\n fetchMoreErrorMessageDefault = input('Não foi possível carregar mais itens.');\r\n\r\n endReachedMessageDefault = input('Todos os itens foram carregados.');\r\n\r\n tableStyle = input<{ [key: string]: string }>({});\r\n\r\n errorMessageDefault = input<string>('Não foi possível carregar os dados.');\r\n emptyMessageDefault = input<string>(' Não encontramos dados para exibir.');\r\n sortBy = signal<string | undefined>(undefined);\r\n\r\n tableGrow = input(false);\r\n\r\n infiniteScroll = input(false);\r\n infiniteScrollThreshold = input(80);\r\n isFetchingMore = input(false);\r\n\r\n virtualScroll = input(false);\r\n rowHeight = input(48);\r\n virtualBuffer = input(8);\r\n\r\n scrollTop = signal(0);\r\n containerHeight = signal(0);\r\n\r\n scrollEndReached = output<void>();\r\n\r\n totalRows = computed(() => this.sortedData().length);\r\n\r\n startIndex = computed(() => {\r\n if (!this.virtualScroll()) return 0;\r\n\r\n const start =\r\n Math.floor(this.scrollTop() / this.rowHeight()) - this.virtualBuffer();\r\n\r\n return Math.max(start, 0);\r\n });\r\n\r\n visibleCount = computed(() => {\r\n if (!this.virtualScroll()) return this.sortedData().length;\r\n\r\n const height = this.containerHeight();\r\n\r\n if (!height) {\r\n return this.virtualBuffer() * 2;\r\n }\r\n\r\n return Math.ceil(height / this.rowHeight()) + this.virtualBuffer() * 2;\r\n });\r\n\r\n endIndex = computed(() => {\r\n if (!this.virtualScroll()) return this.sortedData().length;\r\n\r\n return Math.min(\r\n this.startIndex() + this.visibleCount(),\r\n this.sortedData().length,\r\n );\r\n });\r\n\r\n virtualRows = computed(() => {\r\n const data = this.sortedData();\r\n\r\n if (!this.virtualScroll()) {\r\n return data.map((item, index) => ({\r\n item,\r\n index,\r\n }));\r\n }\r\n\r\n return data\r\n .slice(this.startIndex(), this.endIndex())\r\n .map((item, index) => ({\r\n item,\r\n index: this.startIndex() + index,\r\n }));\r\n });\r\n\r\n topSpacerHeight = computed(() => {\r\n if (!this.virtualScroll()) return 0;\r\n\r\n return this.startIndex() * this.rowHeight();\r\n });\r\n\r\n bottomSpacerHeight = computed(() => {\r\n if (!this.virtualScroll()) return 0;\r\n\r\n const remainingRows = this.totalRows() - this.endIndex();\r\n\r\n return remainingRows * this.rowHeight();\r\n });\r\n\r\n private lastPresetSignature = '';\r\n\r\n @HostBinding('class.s4y-table-grow')\r\n get isTableGrow() {\r\n return this.tableGrow();\r\n }\r\n\r\n containerStyle = computed(() => ({\r\n ...this.tableStyle(),\r\n\r\n ...(this.tableHeight() ? { height: this.tableHeight()! } : {}),\r\n\r\n ...(this.tableMaxHeight() ? { 'max-height': this.tableMaxHeight()! } : {}),\r\n }));\r\n\r\n scrollToTop() {\r\n if (this.tableScrollContainer.nativeElement) {\r\n this.tableScrollContainer.nativeElement.scrollTop = 0;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.multipleSort()) {\r\n if (changes['initialSorts'] || changes['headers']) {\r\n this.applyInitialSortsOnce();\r\n }\r\n return;\r\n }\r\n\r\n if (changes['sortField'] || changes['sortOrder'] || changes['headers']) {\r\n this.applySingleSortPreset();\r\n }\r\n }\r\n\r\n private applyInitialSortsOnce() {\r\n const incoming = this.initialSorts() ?? [];\r\n const allowedKeys = new Set(this.headers().map((h) => String(h.key)));\r\n\r\n const normalized = incoming\r\n .filter((s) => s.value !== 'none')\r\n .filter((s) => allowedKeys.has(String(s.key)))\r\n .filter((s) => {\r\n const header = this.headers().find(\r\n (h) => String(h.key) === String(s.key),\r\n );\r\n return !!header && header.sortable !== false;\r\n })\r\n .map((s) => ({ key: String(s.key), value: s.value as ISortDirection }));\r\n\r\n const signature = JSON.stringify(normalized);\r\n\r\n if (signature === this.lastPresetSignature) return;\r\n\r\n this.lastPresetSignature = signature;\r\n\r\n this.sorts.set(normalized);\r\n this.sortStateChanged$.next();\r\n }\r\n\r\n private applySingleSortPreset() {\r\n const field = this.sortField();\r\n const order = this.sortOrder();\r\n\r\n if (!field || order === 'none') {\r\n this.sortBy.set(undefined);\r\n this.sortDirection.set('none');\r\n return;\r\n }\r\n\r\n const header = this.headers().find((h) => String(h.key) === String(field));\r\n if (!header || header.sortable === false) {\r\n this.sortBy.set(undefined);\r\n this.sortDirection.set('none');\r\n return;\r\n }\r\n\r\n this.sortBy.set(String(field));\r\n this.sortDirection.set(order ?? 'none');\r\n this.sortStateChanged$.next();\r\n }\r\n\r\n constructor() {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n private compareValues(a: any, b: any, dir: ISortDirection) {\r\n if (a == null && b == null) return 0;\r\n if (a == null) return dir === 'asc' ? -1 : 1;\r\n if (b == null) return dir === 'asc' ? 1 : -1;\r\n\r\n if (typeof a === 'number' && typeof b === 'number') {\r\n return dir === 'asc' ? a - b : b - a;\r\n }\r\n\r\n const sa = String(a);\r\n const sb = String(b);\r\n return dir === 'asc' ? sa.localeCompare(sb) : sb.localeCompare(sa);\r\n }\r\n\r\n trackByIndex = (index: number) => index;\r\n\r\n onTableScroll(event: Event): void {\r\n const element = event.target as HTMLElement;\r\n\r\n if (this.virtualScroll()) {\r\n this.scrollTop.set(element.scrollTop);\r\n this.containerHeight.set(element.clientHeight);\r\n }\r\n\r\n if (!this.infiniteScroll()) return;\r\n if (this.isLoading()) return;\r\n if (this.isFetchingMore()) return;\r\n if (this.isFetchMoreError()) return;\r\n if (this.isEndReached()) return;\r\n\r\n const hasScroll = element.scrollHeight > element.clientHeight;\r\n if (!hasScroll) return;\r\n\r\n const distanceFromBottom =\r\n element.scrollHeight - element.scrollTop - element.clientHeight;\r\n\r\n if (distanceFromBottom <= this.infiniteScrollThreshold()) {\r\n this.scrollEndReached.emit();\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"s4y-table-container\"\r\n [class.s4y-table-container--sticky-header]=\"stickyHeader()\"\r\n #tableScrollContainer\r\n [ngStyle]=\"containerStyle()\"\r\n cdkScrollable\r\n (scroll)=\"onTableScroll($event)\"\r\n>\r\n <table class=\"s4y-table\">\r\n <thead>\r\n <ng-container [ngTemplateOutlet]=\"headTemplate\"></ng-container>\r\n </thead>\r\n <tbody>\r\n @if (isLoading()) {\r\n <tr class=\"loading\">\r\n <td [colSpan]=\"headers().length\">\r\n <s4y-spinner></s4y-spinner>\r\n </td>\r\n </tr>\r\n } @else if (hasError()) {\r\n @if (errorTemplate) {\r\n <tr class=\"error\">\r\n <td [colSpan]=\"headers().length\">\r\n <ng-container [ngTemplateOutlet]=\"errorTemplate\"></ng-container>\r\n </td>\r\n </tr>\r\n } @else if (customErrorTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"customErrorTemplate\"></ng-container>\r\n } @else {\r\n <tr class=\"error\">\r\n <td [colSpan]=\"headers().length\">\r\n {{ errorMessageDefault() }}\r\n </td>\r\n </tr>\r\n }\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"tableContent\"></ng-container>\r\n }\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<ng-template #SortIcon>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M4.86885 11H2.6665L6 3H8L11.3334 11H9.13113L8.7213 10H5.27869L4.86885 11ZM6.09836 8H7.90163L7 5.8L6.09836 8ZM18.9999 16V3H16.9999V16H13.9999L17.9999 21L21.9999 16H18.9999ZM10.9999 13H2.99992V15H7.85414L2.99992 19V21H10.9999V19H6.14605L10.9999 15V13Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #tableContent>\r\n @if (virtualScroll() && topSpacerHeight() > 0) {\r\n <tr class=\"virtual-spacer-row\">\r\n <td\r\n [colSpan]=\"headers().length\"\r\n [style.height.px]=\"topSpacerHeight()\"\r\n ></td>\r\n </tr>\r\n }\r\n\r\n @for (row of virtualRows(); track row.index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"rowTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: row.item,\r\n idx: row.index,\r\n }\"\r\n >\r\n </ng-container>\r\n } @empty {\r\n @if (emptyTemplate) {\r\n <tr class=\"empty-content\">\r\n <td [colSpan]=\"headers().length\">\r\n <ng-container [ngTemplateOutlet]=\"emptyTemplate\"></ng-container>\r\n </td>\r\n </tr>\r\n } @else if (customEmptyTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"customEmptyTemplate\"></ng-container>\r\n } @else {\r\n <tr class=\"empty-content\">\r\n <td [colSpan]=\"headers().length\">\r\n {{ emptyMessageDefault() }}\r\n </td>\r\n </tr>\r\n }\r\n }\r\n\r\n @if (virtualScroll() && bottomSpacerHeight() > 0) {\r\n <tr class=\"virtual-spacer-row\">\r\n <td\r\n [colSpan]=\"headers().length\"\r\n [style.height.px]=\"bottomSpacerHeight()\"\r\n ></td>\r\n </tr>\r\n }\r\n\r\n <ng-container [ngTemplateOutlet]=\"fetchMoreTemplate\"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #fetchMoreTemplate>\r\n @if (isFetchingMore()) {\r\n <tr class=\"fetch-more-loading\">\r\n <td [colSpan]=\"headers().length\">\r\n @if (fetchMoreLoadingTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"fetchMoreLoadingTemplate\"\r\n ></ng-container>\r\n } @else {\r\n <div class=\"s4y-fetch-more-state\">\r\n <s4y-spinner size=\"mini\"></s4y-spinner>\r\n </div>\r\n }\r\n </td>\r\n </tr>\r\n } @else if (isFetchMoreError()) {\r\n <tr class=\"fetch-more-error\">\r\n <td [colSpan]=\"headers().length\">\r\n @if (fetchMoreErrorTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"fetchMoreErrorTemplate\"\r\n ></ng-container>\r\n } @else {\r\n <div class=\"s4y-fetch-more-state\">\r\n {{ fetchMoreErrorMessageDefault() }}\r\n </div>\r\n }\r\n </td>\r\n </tr>\r\n } @else if (isEndReached()) {\r\n <tr class=\"fetch-more-end\">\r\n <td [colSpan]=\"headers().length\">\r\n @if (endReachedTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"endReachedTemplate\"></ng-container>\r\n } @else {\r\n <div class=\"s4y-fetch-more-state\">\r\n {{ endReachedMessageDefault() }}\r\n </div>\r\n }\r\n </td>\r\n </tr>\r\n }\r\n</ng-template>\r\n","import {\r\n AfterContentInit,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n input,\r\n Renderer2,\r\n signal,\r\n} from '@angular/core';\r\nimport {\r\n ICustomSort,\r\n ISortDirection,\r\n TableComponent,\r\n} from '../table.component';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Directive({\r\n selector: '[s4ySortableColumnName]',\r\n standalone: true,\r\n})\r\nexport class TableSortDirective implements AfterContentInit {\r\n s4ySortableColumnName = input<string | undefined>();\r\n s4ySortable = input<boolean | undefined>(false);\r\n protected oldSortableColumnName: string | undefined;\r\n protected oldThElement: HTMLElement | undefined;\r\n\r\n private spanElement: HTMLElement | undefined;\r\n\r\n private oldDirection = signal<ISortDirection>('none');\r\n private newDirection = signal<ISortDirection>('none');\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private table: TableComponent,\r\n private destroyRef: DestroyRef,\r\n ) {}\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.s4ySortable()) return;\r\n\r\n this.insertSortIcon();\r\n\r\n this.repaint();\r\n\r\n this.table.sortStateChanged$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.repaint());\r\n }\r\n\r\n @HostListener('click')\r\n emitSortableColumnName() {\r\n if (!this.s4ySortable()) return;\r\n\r\n this.oldSortableColumnName = this.table.sortBy();\r\n const sortByColumnName = this.s4ySortableColumnName();\r\n\r\n if (!sortByColumnName) return;\r\n\r\n if (this.isMultipleSort) {\r\n const current =\r\n this.table\r\n .sorts()\r\n .find((s) => String(s.key) === String(sortByColumnName))?.value ??\r\n 'none';\r\n this.newDirection.set(current);\r\n } else {\r\n const isThis =\r\n String(this.table.sortBy() ?? '') === String(sortByColumnName);\r\n this.newDirection.set(isThis ? this.table.sortDirection() : 'none');\r\n }\r\n\r\n this.oldDirection.set(this.newDirection());\r\n this.newDirection.update((direction) => {\r\n switch (direction) {\r\n case 'asc':\r\n return 'desc';\r\n case 'desc':\r\n return 'none';\r\n case 'none':\r\n return 'asc';\r\n default:\r\n return 'none';\r\n }\r\n });\r\n if (this.isMultipleSort) {\r\n this.multipleSortable();\r\n } else if (this.isCustomSort) {\r\n this.table.sorts.set([]);\r\n this.customSortableSingleLast();\r\n } else {\r\n this.table.sorts.set([]);\r\n this.autoSortable(sortByColumnName);\r\n }\r\n\r\n this.emitSortDirection();\r\n this.clearHoverStyleTH();\r\n this.handleStyleTH();\r\n this.handleDirectionIcon();\r\n this.table.sortStateChanged$.next();\r\n }\r\n\r\n @HostListener('mouseenter')\r\n mouseOver() {\r\n if (!this.hostThElement) return;\r\n\r\n const thClassList = this.hostThElement.classList;\r\n const isActiveTH = thClassList.contains('s4y-active-sort');\r\n\r\n if (isActiveTH || !this.s4ySortable()) return;\r\n\r\n this.renderer.addClass(this.hostThElement, 's4y-th-hover');\r\n }\r\n\r\n @HostListener('mouseleave')\r\n mouseLeave() {\r\n if (!this.hostThElement) return;\r\n\r\n this.clearHoverStyleTH();\r\n }\r\n\r\n private selectedInitialSort() {\r\n if (!this.sortField || !this.s4ySortableColumnName()) return;\r\n\r\n if (this.sortOrder) {\r\n this.newDirection.set(this.sortOrder);\r\n }\r\n\r\n const thElementSearch = this.findThElementByColumnName(this.sortField);\r\n\r\n if (!thElementSearch) return;\r\n\r\n this.currentThElement = thElementSearch;\r\n\r\n this.autoSortable(this.sortField);\r\n this.emitSortDirection();\r\n this.setActiveStyle(this.currentThElement);\r\n }\r\n\r\n private get currentThElement() {\r\n return this.table.currentThElement;\r\n }\r\n\r\n private set currentThElement(th: HTMLElement | undefined) {\r\n this.table.currentThElement = th;\r\n }\r\n\r\n private get hostThElement() {\r\n return this.el.nativeElement as HTMLElement | undefined;\r\n }\r\n\r\n private get isCustomSort() {\r\n return this.table.customSort();\r\n }\r\n\r\n private get isMultipleSort() {\r\n return this.table.multipleSort();\r\n }\r\n\r\n private get sortField() {\r\n return this.table.sortField();\r\n }\r\n\r\n private get sortOrder() {\r\n return this.table.sortOrder();\r\n }\r\n\r\n private findThElementByColumnName(\r\n columnName: string,\r\n ): HTMLElement | undefined {\r\n const thElements = Array.from(\r\n this.el.nativeElement.closest('table').querySelectorAll('th'),\r\n ) as HTMLElement[];\r\n\r\n return thElements.find(\r\n (th) =>\r\n th.getAttribute('ng-reflect-s4y-sortable-column-name') === columnName,\r\n );\r\n }\r\n\r\n private emitSortDirection() {\r\n this.table.sortDirection.set(this.newDirection());\r\n }\r\n\r\n private insertSortIcon() {\r\n if (!this.hostThElement) return;\r\n\r\n const isThElement = this.hostThElement.tagName == 'TH';\r\n\r\n if (!isThElement) {\r\n console.error('Metódo disponível apenas em elementos TH');\r\n return;\r\n }\r\n\r\n this.createSpanElement();\r\n\r\n const extractOriginalContentTHElement = this.hostThElement.textContent;\r\n\r\n const containerEl = this.createElement('div');\r\n const contentEl = this.createElement('p');\r\n\r\n contentEl.textContent = extractOriginalContentTHElement;\r\n\r\n this.clearOldContent();\r\n this.setStyleInContainerIconElements(containerEl);\r\n\r\n containerEl.appendChild(contentEl);\r\n\r\n if (this.spanElement) {\r\n containerEl.appendChild(this.spanElement);\r\n }\r\n\r\n this.hostThElement.appendChild(containerEl);\r\n\r\n this.renderer.addClass(this.hostThElement, 's4y-hover');\r\n }\r\n\r\n private createElement(name: string) {\r\n return this.renderer.createElement(name) as HTMLElement;\r\n }\r\n\r\n private clearOldContent() {\r\n if (!this.hostThElement) return;\r\n\r\n this.hostThElement.textContent = '';\r\n }\r\n\r\n private autoSortable(columnName: string) {\r\n this.table.sortBy.set(columnName);\r\n }\r\n\r\n private multipleSortable() {\r\n const key = this.s4ySortableColumnName();\r\n if (!key) return;\r\n\r\n const value = this.newDirection();\r\n\r\n const currentList = this.table.sorts();\r\n\r\n const withoutKey = currentList.filter((s) => s.key !== key);\r\n\r\n const updatedList =\r\n value === 'none' ? withoutKey : [...withoutKey, { key, value }];\r\n\r\n this.table.sorts.set(updatedList);\r\n this.table.multiSortFunction.emit(updatedList);\r\n }\r\n\r\n private setStyleInContainerIconElements(container: HTMLElement) {\r\n const style = `\r\n display: flex;\r\n gap: 7px;\r\n `;\r\n\r\n this.renderer.setAttribute(container, 'style', style);\r\n }\r\n\r\n private createSpanElement() {\r\n this.spanElement = this.createElement('span');\r\n\r\n this.spanElement.innerHTML = this.ascIcon;\r\n }\r\n\r\n private handleStyleTH() {\r\n const ths = this.getAllThElements();\r\n\r\n // 1) Multi-sort: ativa/desativa conforme a lista table.sorts()\r\n if (this.isMultipleSort) {\r\n const activeKeys = new Set(\r\n this.table\r\n .sorts()\r\n .filter((s) => s.value !== 'none')\r\n .map((s) => s.key),\r\n );\r\n\r\n for (const th of ths) {\r\n const key =\r\n th.getAttribute('ng-reflect-s4y-sortable-column-name') ?? '';\r\n const shouldBeActive = activeKeys.has(key);\r\n\r\n if (shouldBeActive) this.setActiveStyle(th);\r\n else this.removeActiveStyle(th);\r\n }\r\n\r\n return;\r\n }\r\n\r\n // 2) Single sort: limpa tudo e ativa só a coluna atual (se direction != none)\r\n for (const th of ths) this.removeActiveStyle(th);\r\n\r\n if (this.newDirection() === 'none') return;\r\n\r\n this.setActiveStyle(this.hostThElement);\r\n }\r\n\r\n private setActiveStyle(th?: HTMLElement) {\r\n if (th) {\r\n this.renderer.addClass(th, 's4y-active-sort');\r\n }\r\n }\r\n\r\n private removeActiveStyle(th?: HTMLElement) {\r\n if (th) {\r\n this.renderer.removeClass(th, 's4y-active-sort');\r\n }\r\n }\r\n\r\n private handleDirectionIcon() {\r\n if (!this.spanElement) return;\r\n\r\n if (this.newDirection() == 'asc' || this.newDirection() == 'none') {\r\n this.spanElement.innerHTML = this.ascIcon;\r\n } else if (this.newDirection() == 'desc') {\r\n this.spanElement.innerHTML = this.descIcon;\r\n }\r\n }\r\n\r\n private clearHoverStyleTH() {\r\n if (!this.hostThElement) return;\r\n this.renderer.removeClass(this.hostThElement, 's4y-th-hover');\r\n }\r\n\r\n private get tableEl(): HTMLElement | null {\r\n return (this.el.nativeElement as HTMLElement).closest('table');\r\n }\r\n\r\n private getAllThElements(): HTMLElement[] {\r\n const table = this.tableEl;\r\n if (!table) return [];\r\n return Array.from(table.querySelectorAll('th')) as HTMLElement[];\r\n }\r\n\r\n private customSortableSingleLast() {\r\n const key = this.s4ySortableColumnName();\r\n if (!key) return;\r\n\r\n const value = this.newDirection();\r\n\r\n const updatedList: ICustomSort[] = value === 'none' ? [] : [{ key, value }];\r\n\r\n this.table.sorts.set(updatedList);\r\n\r\n this.table.sortFunction.emit({ key, value });\r\n this.table.multiSortFunction.emit(updatedList);\r\n }\r\n\r\n private repaint() {\r\n if (!this.s4ySortable()) return;\r\n\r\n const key = this.s4ySortableColumnName();\r\n if (!key) return;\r\n\r\n if (this.isMultipleSort) {\r\n const found = this.table\r\n .sorts()\r\n .find((s) => String(s.key) === String(key));\r\n const dir = found?.value ?? 'none';\r\n\r\n this.newDirection.set(dir);\r\n\r\n if (dir === 'none') {\r\n this.removeActiveStyle(this.hostThElement);\r\n if (this.spanElement) this.spanElement.innerHTML = this.ascIcon;\r\n return;\r\n }\r\n\r\n this.setActiveStyle(this.hostThElement);\r\n if (this.spanElement) {\r\n this.spanElement.innerHTML =\r\n dir === 'desc' ? this.descIcon : this.ascIcon;\r\n }\r\n return;\r\n }\r\n\r\n // single\r\n const sortBy = this.table.sortBy();\r\n const dir = this.table.sortDirection();\r\n\r\n const isThis = String(sortBy ?? '') === String(key);\r\n this.newDirection.set(isThis ? dir : 'none');\r\n\r\n if (!isThis || dir === 'none') {\r\n this.removeActiveStyle(this.hostThElement);\r\n if (this.spanElement) this.spanElement.innerHTML = this.ascIcon;\r\n return;\r\n }\r\n\r\n this.setActiveStyle(this.hostThElement);\r\n if (this.spanElement) {\r\n this.spanElement.innerHTML =\r\n dir === 'desc' ? this.descIcon : this.ascIcon;\r\n }\r\n }\r\n\r\n private get ascIcon() {\r\n return '<svg style=\"height: 1.4rem; width: 1.4rem;\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M4.86885 11H2.6665L6 3H8L11.3334 11H9.13113L8.7213 10H5.27869L4.86885 11ZM6.09836 8H7.90163L7 5.8L6.09836 8ZM21.9999 8L17.9999 3L13.9999 8H16.9999V21H18.9999V8H21.9999ZM10.9999 13H2.99992V15H7.85414L2.99992 19V21H10.9999V19H6.14605L10.9999 15V13Z\"></path></svg>';\r\n }\r\n\r\n private get descIcon() {\r\n return '<svg style=\"height: 1.4rem; width: 1.4rem;\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M4.86885 11H2.6665L6 3H8L11.3334 11H9.13113L8.7213 10H5.27869L4.86885 11ZM6.09836 8H7.90163L7 5.8L6.09836 8ZM18.9999 16V3H16.9999V16H13.9999L17.9999 21L21.9999 16H18.9999ZM10.9999 13H2.99992V15H7.85414L2.99992 19V21H10.9999V19H6.14605L10.9999 15V13Z\"></path></svg>';\r\n }\r\n}\r\n","import { Directive, HostBinding, input } from '@angular/core';\n\nexport type S4yTableStickyPosition = 'left' | 'right';\n\n@Directive({\n selector: '[s4yTableSticky]',\n standalone: true,\n})\nexport class TableStickyDirective {\n s4yTableSticky = input<S4yTableStickyPosition | undefined>();\n\n @HostBinding('class.s4y-table-sticky')\n get stickyClass() {\n return !!this.s4yTableSticky();\n }\n\n @HostBinding('class.s4y-table-sticky--left')\n get isLeft() {\n return this.s4yTableSticky() === 'left';\n }\n\n @HostBinding('class.s4y-table-sticky--right')\n get isRight() {\n return this.s4yTableSticky() === 'right';\n }\n}\n","import {\r\n trigger,\r\n transition,\r\n style,\r\n animate,\r\n AnimationTriggerMetadata,\r\n group,\r\n query,\r\n} from '@angular/animations';\r\n\r\nexport const modalFadeCombined: AnimationTriggerMetadata = trigger(\r\n 'modalFadeCombined',\r\n [\r\n transition(':enter', [\r\n group([\r\n style({ opacity: 0 }),\r\n animate('200ms ease-out', style({ opacity: 1 })),\r\n // query('.s4y-backdrop', [\r\n // style({ opacity: 0 }),\r\n // animate('200ms ease-out', style({ opacity: 1 })),\r\n // ]),\r\n query(\r\n '.s4y-modal-container',\r\n [\r\n style({ opacity: 0, transform: 'translateY(20px)' }),\r\n animate(\r\n '250ms ease-out',\r\n style({ opacity: 1, transform: 'translateY(0)' }),\r\n ),\r\n ],\r\n { optional: true },\r\n ),\r\n ]),\r\n ]),\r\n transition(':leave', [\r\n group([\r\n style({ opacity: 1 }),\r\n animate('200ms ease-in', style({ opacity: 0 })),\r\n // query('.s4y-backdrop', [\r\n // animate('200ms ease-in', style({ opacity: 0 })),\r\n // ]),\r\n query(\r\n '.s4y-modal-container',\r\n [\r\n animate(\r\n '200ms ease-in',\r\n style({ opacity: 0, transform: 'translateY(20px)' }),\r\n ),\r\n ],\r\n { optional: true },\r\n ),\r\n ]),\r\n ]),\r\n ],\r\n);\r\n","import { CommonModule, DOCUMENT } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ContentChild,\r\n effect,\r\n HostListener,\r\n Inject,\r\n input,\r\n model,\r\n OnDestroy,\r\n output,\r\n Renderer2,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { modalFadeCombined } from './modal.animation';\r\nimport { CdkScrollable } from '@angular/cdk/scrolling';\r\n\r\n@Component({\r\n selector: 's4y-modal',\r\n imports: [CommonModule, CdkScrollable],\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss',\r\n animations: [modalFadeCombined],\r\n})\r\nexport class ModalComponent implements OnDestroy, AfterViewInit {\r\n @ContentChild('modalHeaderTemplate') modalHeaderTemplate!: TemplateRef<any>;\r\n @ContentChild('modalFooterTemplate') modalFooterTemplate!: TemplateRef<any>;\r\n\r\n scrollableContent = input<boolean>(true);\r\n centeredModal = input<boolean>(true);\r\n title = input<string>('Titulo');\r\n modalStyle = input<{ [key: string]: string }>();\r\n\r\n visible = model<boolean>(false);\r\n requestClose = output<boolean>();\r\n\r\n withHeader = input<boolean>(true);\r\n\r\n closeOnBackdrop = input<boolean>(true);\r\n closeOnEsc = input<boolean>(true);\r\n\r\n interceptBackdropClick = input<boolean>(false);\r\n\r\n onBackdrop = output<void>();\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n @Inject(DOCUMENT) private document: Document,\r\n ) {\r\n if (this.closeOnEsc()) {\r\n window.addEventListener('keydown', this.escListener);\r\n }\r\n\r\n effect(() => {\r\n const visible = this.visible();\r\n\r\n if (visible) {\r\n this.renderer.setStyle(document.body, 'overflow', 'hidden');\r\n } else {\r\n this.renderer.removeStyle(document.body, 'overflow');\r\n }\r\n });\r\n }\r\n\r\n onClose() {\r\n this.visible.set(false);\r\n this.requestClose.emit(false);\r\n }\r\n\r\n ngAfterViewInit() {}\r\n\r\n onBackdropClick(evt: MouseEvent) {\r\n if (!this.closeOnBackdrop()) return;\r\n\r\n if (evt.target === evt.currentTarget) {\r\n if (this.interceptBackdropClick()) {\r\n this.onBackdrop.emit();\r\n return;\r\n }\r\n\r\n this.onClose();\r\n }\r\n }\r\n\r\n private escListener = (event: KeyboardEvent) => {\r\n if (event.key === 'Escape' && this.visible()) {\r\n this.onClose();\r\n }\r\n };\r\n\r\n ngOnDestroy(): void {\r\n window.removeEventListener('keydown', this.escListener);\r\n }\r\n}\r\n","@if (visible()) {\r\n <div\r\n class=\"s4y-modal-wrapper\"\r\n [class.s4y-modal-wrapper-with-scrollable]=\"!scrollableContent()\"\r\n [class.s4y-modal-wrapper-centered]=\"centeredModal()\"\r\n @modalFadeCombined\r\n cdkScrollable\r\n (click)=\"onBackdropClick($event)\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n >\r\n <div\r\n class=\"s4y-modal-container\"\r\n [class.s4y-modal-container__scrollable-content]=\"scrollableContent()\"\r\n [ngStyle]=\"modalStyle()\"\r\n >\r\n @if (modalHeaderTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"modalHeaderTemplate\"></ng-container>\r\n }\r\n @if (!modalHeaderTemplate && withHeader()) {\r\n <div class=\"s4y-modal-header\">\r\n <h2 class=\"s4y-modal-header__title\">{{ title() }}</h2>\r\n <button role=\"button\" (click)=\"onClose()\">\r\n <p>×</p>\r\n </button>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"s4y-modal-body\"\r\n [class.s4y-modal-body__scrollable-content]=\"scrollableContent()\"\r\n cdkScrollable\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n @if (modalFooterTemplate) {\r\n <div class=\"s4y-modal-footer\">\r\n <ng-container [ngTemplateOutlet]=\"modalFooterTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { Injectable, signal, computed } from '@angular/core';\r\nimport { tButtonVariant } from '../button/button.interface';\r\nimport { iModalConfirmationProps } from './modal-confirmation.interface';\r\n\r\n@Injectable()\r\nexport class ModalConfirmationService {\r\n private _modalConfirmation = signal<iModalConfirmationProps>({\r\n title: 'Confirmação',\r\n message: 'Tem certeza que deseja continuar?',\r\n });\r\n\r\n private _visible = signal(false);\r\n\r\n modalConfirmation = computed(() => this._modalConfirmation());\r\n isVisible = computed(() => this._visible());\r\n\r\n open(modalConfig: iModalConfirmationProps) {\r\n this._modalConfirmation.set(modalConfig);\r\n this._visible.set(true);\r\n }\r\n\r\n onConfirm() {\r\n this._modalConfirmation().confirm?.();\r\n this.close();\r\n }\r\n\r\n onCancel() {\r\n this._modalConfirmation().cancel?.();\r\n this.close();\r\n }\r\n\r\n close() {\r\n this._visible.set(false);\r\n }\r\n}\r\n","import {\r\n Component,\r\n computed,\r\n ContentChild,\r\n inject,\r\n input,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { modalFadeCombined } from '../modal/modal.animation';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { ModalConfirmationService } from './modal-confirmation.service';\r\nimport { iButtonProps } from './modal-confirmation.interface';\r\n\r\n@Component({\r\n selector: 's4y-modal-confirmation',\r\n imports: [CommonModule, ButtonComponent],\r\n templateUrl: './modal-confirmation.component.html',\r\n styleUrl: './modal-confirmation.component.scss',\r\n animations: [modalFadeCombined],\r\n})\r\nexport class ModalConfirmationComponent {\r\n protected modalConfirmationService = inject(ModalConfirmationService);\r\n @ContentChild('iconTemplate') iconTemplate!: TemplateRef<any>;\r\n\r\n protected modalConfigs = this.modalConfirmationService.modalConfirmation;\r\n\r\n visible = this.modalConfirmationService.isVisible;\r\n\r\n modalStyle = input<{ [key: string]: string }>();\r\n\r\n buttonCancelProps = computed<iButtonProps>(\r\n () =>\r\n this.modalConfigs().buttonCancelProps ?? {\r\n text: 'Cancelar',\r\n outlined: true,\r\n },\r\n );\r\n buttonConfirmProps = computed<iButtonProps>(\r\n () =>\r\n this.modalConfigs().buttonConfirmProps ?? {\r\n text: 'Sim, confirmar',\r\n outlined: false,\r\n },\r\n );\r\n\r\n onConfirm() {\r\n this.modalConfirmationService.onConfirm();\r\n }\r\n\r\n onCancel() {\r\n this.modalConfirmationService.onCancel();\r\n }\r\n\r\n onClose() {\r\n this.modalConfirmationService.close();\r\n }\r\n}\r\n","@if (visible()) {\r\n <div class=\"s4y-modal-wrapper\" @modalFadeCombined>\r\n <div class=\"s4y-backdrop\" (click)=\"onClose()\"></div>\r\n <div class=\"s4y-modal-container\" [ngStyle]=\"modalStyle()\">\r\n @if (iconTemplate) {\r\n <div class=\"s4y-modal-icon\">\r\n <ng-container [ngTemplateOutlet]=\"iconTemplate\"></ng-container>\r\n </div>\r\n }\r\n <div class=\"s4y-modal-header\">\r\n <h3>{{ modalConfigs().title }}</h3>\r\n <p>\r\n {{ modalConfigs().message }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"s4y-modal-body\">\r\n <button\r\n (click)=\"onCancel()\"\r\n s4yButton\r\n [variant]=\"buttonCancelProps().variant ?? 'danger'\"\r\n [outlined]=\"buttonCancelProps().outlined ?? true\"\r\n [fullWidth]=\"true\"\r\n >\r\n {{ buttonCancelProps().text }}\r\n </button>\r\n <button\r\n (click)=\"onConfirm()\"\r\n s4yButton\r\n [variant]=\"buttonConfirmProps().variant ?? 'danger'\"\r\n [outlined]=\"buttonConfirmProps().outlined ?? false\"\r\n [fullWidth]=\"true\"\r\n >\r\n {{ buttonConfirmProps().text }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { Component, input, ViewEncapsulation } from '@angular/core';\r\n\r\ntype TSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n@Component({\r\n selector: 's4y-search-bar',\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './search-bar.component.html',\r\n styleUrl: './search-bar.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SearchBarComponent {\r\n size = input<TSize>('md');\r\n iconPosition = input<'left' | 'right'>('left');\r\n showIcon = input<boolean>(true);\r\n}\r\n","<label\r\n [attr.data-size]=\"size()\"\r\n class=\"s4y-search-bar-container\"\r\n [class.s4y-search-bar--icon-right]=\"iconPosition() === 'right'\"\r\n>\r\n @if (showIcon()) {\r\n <ng-container>\r\n <ng-container [ngTemplateOutlet]=\"searchIcon\"></ng-container>\r\n </ng-container>\r\n }\r\n <ng-content select=\"input[s4ySearchBar]\"></ng-content>\r\n</label>\r\n\r\n<ng-template #searchIcon>\r\n <span class=\"s4y-search-bar__icon\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M18.031 16.6168L22.3137 20.8995L20.8995 22.3137L16.6168 18.031C15.0769 19.263 13.124 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2C15.968 2 20 6.032 20 11C20 13.124 19.263 15.0769 18.031 16.6168ZM16.0247 15.8748C17.2475 14.6146 18 12.8956 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18C12.8956 18 14.6146 17.2475 15.8748 16.0247L16.0247 15.8748Z\"\r\n ></path>\r\n </svg>\r\n </span>\r\n</ng-template>\r\n","import { Component, input, model } from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NG_VALUE_ACCESSOR,\r\n} from '@angular/forms';\r\n\r\ntype iToggleSize = 'small' | 'medium' | 'large';\r\n\r\n@Component({\r\n selector: 's4y-toggle',\r\n imports: [FormsModule],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: ToggleComponent,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ToggleComponent implements ControlValueAccessor {\r\n model = model<boolean>(false);\r\n disabled = input<boolean>(false);\r\n size = input<iToggleSize>('medium');\r\n\r\n protected disabledWithReactives: boolean = false;\r\n\r\n onChange = (value: boolean) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.model.set(value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabledWithReactives = isDisabled;\r\n }\r\n\r\n onToggle() {\r\n if (this.disabled() || this.disabledWithReactives) return;\r\n\r\n this.model.update((prevState) => !prevState);\r\n this.onTouched();\r\n this.onChange(this.model());\r\n }\r\n}\r\n","<label class=\"s4y-switch\" [class]=\"size()\">\r\n <input\r\n (input)=\"onToggle()\"\r\n type=\"checkbox\"\r\n [checked]=\"model()\"\r\n [disabled]=\"disabled() || disabledWithReactives\"\r\n />\r\n <span class=\"slider round\"></span>\r\n</label>\r\n","import {\r\n animate,\r\n group,\r\n query,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nexport const selectAnimation = trigger('selectAnimation', [\r\n transition(':enter', [\r\n query(\r\n '.s4y-select-options',\r\n group([\r\n style({\r\n opacity: 0,\r\n height: 0,\r\n overflowY: 'hidden',\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n opacity: 1,\r\n height: '*',\r\n }),\r\n ),\r\n ]),\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ]),\r\n transition(':leave', [\r\n query(\r\n '.s4y-select-options',\r\n group([\r\n style({\r\n opacity: 1,\r\n height: '*',\r\n overflowY: 'hidden',\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n opacity: 0,\r\n height: 0,\r\n }),\r\n ),\r\n ]),\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ]),\r\n]);\r\n","import { CommonModule, NgIf } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n ContentChild,\r\n forwardRef,\r\n input,\r\n model,\r\n OnInit,\r\n output,\r\n signal,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { selectAnimation } from './select.animation';\r\nimport { SpinnerComponent } from '../spinner/spinner.component';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ClickOutsideDirective } from '../../directives';\r\nexport type tSelectSize = 'extra-small' | 'small' | 'medium' | 'large';\r\n\r\n@Component({\r\n selector: 's4y-select',\r\n imports: [\r\n NgIf,\r\n CommonModule,\r\n SpinnerComponent,\r\n ClickOutsideDirective,\r\n FormsModule,\r\n ],\r\n templateUrl: './select.component.html',\r\n styleUrl: './select.component.scss',\r\n animations: [selectAnimation],\r\n providers: [\r\n {\r\n multi: true,\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n },\r\n ],\r\n})\r\nexport class SelectComponent implements OnInit, ControlValueAccessor {\r\n withSearch = input<boolean>(false);\r\n maxScreen = input<boolean>(false);\r\n isLoading = input<boolean>(false);\r\n hasError = input<boolean>(false);\r\n label = input<string>();\r\n size = input<tSelectSize>('medium');\r\n closable = input<boolean>(false);\r\n\r\n errorMessageDefault = input<string>(\r\n 'Erro ao carregar as opções. Tente novamente mais tarde.',\r\n );\r\n emptyMessageDefault = input<string>('Nenhuma opção disponível');\r\n selectedOption: any = null;\r\n\r\n onSearch = model<string>('');\r\n options = input<any[]>([]);\r\n\r\n transformedOptions = computed(() =>\r\n this.options().map((option) => ({\r\n option,\r\n selected: this.isEqual(option, this.selectedValue()),\r\n })),\r\n );\r\n\r\n selectedValue = signal<any>(null);\r\n hasValue = computed(() => this.selectedValue() != null);\r\n\r\n @ContentChild('optionTemplate') optionTemplate!: TemplateRef<any>;\r\n @ContentChild('errorTemplate') errorTemplate!: TemplateRef<any>;\r\n @ContentChild('emptyTemplate') emptyTemplate!: TemplateRef<any>;\r\n @ContentChild('selectedOptionTemplate')\r\n selectedOptionTemplate!: TemplateRef<any>;\r\n\r\n isOpened: boolean = false;\r\n isDisabled: boolean = false;\r\n\r\n widthStyle = computed(() => (this.maxScreen() ? '100%' : '32rem'));\r\n\r\n onChange = (value: any) => {};\r\n onTouched = () => {};\r\n\r\n ngOnInit(): void {}\r\n\r\n writeValue(value: any): void {\r\n this.selectedValue.set(value);\r\n this.markAllUnselected();\r\n\r\n const matchedOption = this.transformedOptions().find((opt) =>\r\n this.isEqual(opt.option, value),\r\n );\r\n\r\n if (matchedOption) {\r\n matchedOption.selected = true;\r\n this.selectedOption = matchedOption;\r\n } else {\r\n this.selectedOption = {\r\n option: value,\r\n selected: true,\r\n };\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n setSelectedOption(selectedOption: any) {\r\n this.selectedOption = selectedOption;\r\n\r\n this.markAllUnselected();\r\n\r\n if (selectedOption && typeof selectedOption == 'object') {\r\n this.selectedOption['selected'] = true;\r\n }\r\n\r\n const originalOption = selectedOption?.option ?? selectedOption;\r\n this.selectedValue.set(originalOption);\r\n\r\n this.isOpened = false;\r\n this.onTouched();\r\n this.onChange(originalOption);\r\n }\r\n\r\n clearSelection(event: Event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n console.log(event.target);\r\n\r\n this.selectedValue.set(null);\r\n this.selectedOption = null;\r\n\r\n this.markAllUnselected();\r\n this.isOpened = false;\r\n\r\n this.onChange(null);\r\n this.onTouched();\r\n }\r\n\r\n toggle(event: Event) {\r\n if (this.isDisabled) return;\r\n\r\n this.isOpened = !this.isOpened;\r\n }\r\n\r\n private markAllUnselected() {\r\n this.transformedOptions().forEach((option) => (option['selected'] = false));\r\n }\r\n\r\n private isEqual(opt1: any, opt2: any): boolean {\r\n return opt1?.id !== undefined && opt2?.id !== undefined\r\n ? opt1.id === opt2.id\r\n : JSON.stringify(opt1) === JSON.stringify(opt2); // fallback genérico\r\n }\r\n}\r\n","<label\r\n class=\"s4y-select-container\"\r\n [style.maxWidth]=\"widthStyle()\"\r\n s4yClickOutside\r\n (clickOutside)=\"isOpened = false\"\r\n [attr.size]=\"size()\"\r\n>\r\n <p class=\"s4y-select-label\">\r\n {{ label() }}\r\n </p>\r\n\r\n <div\r\n class=\"s4y-select-container__wrapper\"\r\n [class.disabled]=\"isDisabled\"\r\n (click)=\"isOpened = !isOpened\"\r\n [attr.aria-expanded]=\"isOpened ? 'true' : 'false'\"\r\n tabindex=\"0\"\r\n aria-controls=\"select-options-container\"\r\n >\r\n <div class=\"s4y-select-container__placeholder\">\r\n @if (selectedOptionTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"selectedOptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: selectedOption?.option }\"\r\n ></ng-container>\r\n } @else {\r\n @if (!selectedOption) {\r\n <p>Selecione...</p>\r\n } @else {\r\n <p>{{ selectedOption }}</p>\r\n }\r\n }\r\n </div>\r\n\r\n <div class=\"s4y-select-container__actions\">\r\n @if (hasValue() && !isDisabled && closable()) {\r\n <span class=\"s4y-select-clear\" (click)=\"clearSelection($event)\"\r\n >×</span\r\n >\r\n } @else {\r\n @if (isOpened) {\r\n <ng-container [ngTemplateOutlet]=\"arrowUp\"></ng-container>\r\n }\r\n @if (!isOpened) {\r\n <ng-container [ngTemplateOutlet]=\"arrowDown\"></ng-container>\r\n }\r\n }\r\n </div>\r\n </div>\r\n <ng-content select=\"s4y-error-message\"></ng-content>\r\n <div @selectAnimation class=\"s4y-select-options-container\" *ngIf=\"isOpened\">\r\n <div class=\"s4y-select-options\">\r\n @if (withSearch()) {\r\n <div class=\"s4y-select-options__search\">\r\n <input\r\n [ngModel]=\"onSearch()\"\r\n (ngModelChange)=\"onSearch.set($event)\"\r\n placeholder=\"Pesquisar...\"\r\n type=\"text\"\r\n name=\"search-option\"\r\n id=\"search-option\"\r\n autocomplete=\"off\"\r\n />\r\n <ng-container [ngTemplateOutlet]=\"searchIcon\"></ng-container>\r\n </div>\r\n }\r\n @if (isLoading()) {\r\n <div class=\"s4y-select-container__loading\">\r\n <s4y-spinner [size]=\"'mini'\"></s4y-spinner>\r\n </div>\r\n } @else if (hasError()) {\r\n @if (errorTemplate) {\r\n <p class=\"s4y-select-options__message\">\r\n <ng-container [ngTemplateOutlet]=\"errorTemplate\"></ng-container>\r\n </p>\r\n } @else {\r\n <p class=\"s4y-select-options__message\">\r\n {{ errorMessageDefault() }}\r\n </p>\r\n }\r\n } @else {\r\n <div\r\n class=\"s4y-select-options__scroll\"\r\n role=\"listbox\"\r\n aria-live=\"polite\"\r\n >\r\n @for (option of transformedOptions(); track $index) {\r\n <p\r\n [class.selected]=\"option.selected\"\r\n class=\"s4y-select-options__item\"\r\n role=\"option\"\r\n aria-selected=\"false\"\r\n tabindex=\"0\"\r\n (click)=\"setSelectedOption(option)\"\r\n (keyup.enter)=\"setSelectedOption(option)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n optionTemplate;\r\n context: { $implicit: option?.option }\r\n \"\r\n ></ng-container>\r\n </p>\r\n } @empty {\r\n @if (emptyTemplate) {\r\n <p\r\n class=\"s4y-select-options__message\"\r\n role=\"status\"\r\n aria-live=\"assertive\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"emptyTemplate\"></ng-container>\r\n </p>\r\n } @else {\r\n <p\r\n class=\"s4y-select-options__message\"\r\n role=\"status\"\r\n aria-live=\"assertive\"\r\n >\r\n {{ emptyMessageDefault() }}\r\n </p>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</label>\r\n\r\n<!-- arrows -->\r\n<ng-template #arrowDown>\r\n <svg\r\n class=\"s4y-select__svg\"\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrowUp>\r\n <svg\r\n class=\"s4y-select__svg\"\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 10.8284L7.0502 15.7782L5.63599 14.364L11.9999 8L18.3639 14.364L16.9497 15.7782L11.9999 10.8284Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #searchIcon>\r\n <svg\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11 2C15.968 2 20 6.032 20 11C20 15.968 15.968 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2ZM11 18C14.8675 18 18 14.8675 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18ZM19.4853 18.0711L22.3137 20.8995L20.8995 22.3137L18.0711 19.4853L19.4853 18.0711Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n","import { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n input,\r\n computed,\r\n model,\r\n signal,\r\n output,\r\n} from '@angular/core';\r\nimport { IPagination } from './pagination.interface';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SelectComponent } from '../select/select.component';\r\nimport { SvgComponent } from '../svg';\r\n\r\n@Component({\r\n selector: 's4y-pagination',\r\n imports: [\r\n NgTemplateOutlet,\r\n CommonModule,\r\n FormsModule,\r\n SelectComponent,\r\n SvgComponent,\r\n ],\r\n templateUrl: './pagination.component.html',\r\n styleUrl: './pagination.component.scss',\r\n})\r\nexport class PaginationComponent {\r\n currentPage = model<number>(0);\r\n totalResults = input<number>(0);\r\n rowsPerPageOptions = input<number[]>([5, 10, 15, 20]);\r\n rowsPerPage = model(5);\r\n\r\n onChange = output<IPagination>();\r\n\r\n totalPages = computed(() =>\r\n Math.ceil(this.totalResults() / this.rowsPerPage()),\r\n );\r\n\r\n offset = computed(() =>\r\n this.totalResults() === 0 ? 0 : this.currentPage() * this.rowsPerPage() + 1,\r\n );\r\n\r\n limit = computed(() =>\r\n Math.min(\r\n (this.currentPage() + 1) * this.rowsPerPage(),\r\n this.totalResults(),\r\n ),\r\n );\r\n\r\n smartPageArray = computed(() => {\r\n const total = this.totalPages();\r\n const current = this.currentPage();\r\n const windowSize = 5;\r\n const pages: (number | '...')[] = [];\r\n\r\n if (total <= windowSize + 2) {\r\n for (let i = 0; i < total; i++) pages.push(i);\r\n return pages;\r\n }\r\n\r\n const start = Math.max(1, current - 1);\r\n const end = Math.min(total - 2, current + 1);\r\n\r\n pages.push(0); // sempre mostra a primeira página\r\n\r\n if (start > 1) pages.push('...');\r\n\r\n for (let i = start; i <= end; i++) {\r\n pages.push(i);\r\n }\r\n\r\n if (end < total - 2) pages.push('...');\r\n\r\n pages.push(total - 1); // última página\r\n\r\n return pages;\r\n });\r\n\r\n protected changePage(selectedPage: number) {\r\n this.currentPage.set(selectedPage);\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n prevButtonDisabled = computed(() => this.currentPage() <= 0);\r\n nextButtonDisabled = computed(\r\n () => this.currentPage() >= this.totalPages() - 1,\r\n );\r\n\r\n prevPage() {\r\n if (this.currentPage() <= 0) return;\r\n this.currentPage.update((prevValue) => prevValue - 1);\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n nextPage() {\r\n if (this.currentPage() == this.totalPages()) return;\r\n this.currentPage.update((prevValue) => prevValue + 1);\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n selectRowsPerPage(event: Event) {\r\n const selectElement = event.target as HTMLSelectElement;\r\n const value = Number(selectElement.value);\r\n\r\n this.rowsPerPage.set(value ?? 5);\r\n this.currentPage.set(0);\r\n\r\n this.recalcCurrentPage();\r\n }\r\n\r\n private recalcCurrentPage() {\r\n if (this.currentPage() > this.totalPages()) {\r\n const lastPage = this.totalPages();\r\n this.currentPage.set(lastPage);\r\n }\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n private emitChangeValue() {\r\n this.onChange.emit({\r\n currentPage: this.currentPage(),\r\n limit: this.limit(),\r\n offset: this.offset(),\r\n totalPages: this.totalPages(),\r\n rowsPerPage: this.rowsPerPage(),\r\n });\r\n }\r\n}\r\n","<div class=\"s4y-pagination-container desktop\">\r\n <div class=\"s4y-pagination-wrapper-view\">\r\n <select\r\n [value]=\"rowsPerPage()\"\r\n (change)=\"selectRowsPerPage($event)\"\r\n name=\"quantity-view-results\"\r\n id=\"quantity-view-results\"\r\n >\r\n @for (rowsPerPageOption of rowsPerPageOptions(); track $index) {\r\n <option [value]=\"rowsPerPageOption\" [selected]=\"rowsPerPageOption === rowsPerPage()\">\r\n {{ rowsPerPageOption }}\r\n </option>\r\n }\r\n </select>\r\n\r\n <ng-container [ngTemplateOutlet]=\"arrow\"></ng-container>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-wrapper\">\r\n <button\r\n [disabled]=\"prevButtonDisabled()\"\r\n (click)=\"prevPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowLeft\"></ng-container>\r\n </button>\r\n\r\n <div class=\"s4y-pagination-pages\">\r\n @for (item of smartPageArray(); track $index) {\r\n <button\r\n *ngIf=\"item !== '...'; else ellipsis\"\r\n (click)=\"changePage(item)\"\r\n [class.selected]=\"item === currentPage()\"\r\n class=\"s4y-pagination-pages__item\"\r\n >\r\n {{ item + 1 }}\r\n </button>\r\n <ng-template #ellipsis>\r\n <span class=\"s4y-pagination-pages__ellipsis\">...</span>\r\n </ng-template>\r\n }\r\n </div>\r\n\r\n <button\r\n [disabled]=\"nextButtonDisabled()\"\r\n (click)=\"nextPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowRight\"></ng-container>\r\n </button>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-details\">\r\n @if (totalResults() > 0) {\r\n <p>\r\n {{ offset() }}\r\n </p>\r\n <span>-</span>\r\n <p>{{ limit() }}</p>\r\n <strong>of</strong>\r\n <p>\r\n {{ totalResults() }}\r\n </p>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- Mobile -->\r\n<div class=\"s4y-pagination-container mobile\">\r\n <div class=\"flex justify-between align-center\">\r\n <div class=\"s4y-pagination-wrapper-view\">\r\n <select\r\n [value]=\"rowsPerPage()\"\r\n (change)=\"selectRowsPerPage($event)\"\r\n name=\"quantity-view-results\"\r\n id=\"quantity-view-results\"\r\n >\r\n @for (rowsPerPageOption of rowsPerPageOptions(); track $index) {\r\n <option [value]=\"rowsPerPageOption\">\r\n {{ rowsPerPageOption }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-details\">\r\n <p>\r\n {{ offset() }}\r\n </p>\r\n <span>-</span>\r\n <p>{{ limit() }}</p>\r\n <strong>of</strong>\r\n <p>\r\n {{ totalResults() }}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-wrapper\">\r\n <button\r\n [disabled]=\"prevButtonDisabled()\"\r\n (click)=\"prevPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowLeft\"></ng-container>\r\n </button>\r\n\r\n <div class=\"s4y-pagination-pages\">\r\n @for (item of smartPageArray(); track $index) {\r\n <button\r\n *ngIf=\"item !== '...'; else ellipsis\"\r\n (click)=\"changePage(item)\"\r\n [class.selected]=\"item === currentPage()\"\r\n class=\"s4y-pagination-pages__item\"\r\n >\r\n {{ item + 1 }}\r\n </button>\r\n <ng-template #ellipsis>\r\n <span class=\"s4y-pagination-pages__ellipsis\">...</span>\r\n </ng-template>\r\n }\r\n </div>\r\n\r\n <button\r\n [disabled]=\"nextButtonDisabled()\"\r\n (click)=\"nextPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowRight\"></ng-container>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #arrowLeft>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.8284 12.0005L14.6569 14.8289L13.2426 16.2431L9 12.0005L13.2426 7.75781L14.6569 9.17203L11.8284 12.0005Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrowRight>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12.1717 12.0005L9.34326 9.17203L10.7575 7.75781L15.0001 12.0005L10.7575 16.2431L9.34326 14.8289L12.1717 12.0005Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrow>\r\n <svg\r\n class=\"s4y-pagination-arrow-view\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n","import { JsonPipe, NgStyle } from '@angular/common';\r\nimport { Component, forwardRef, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 's4y-slider',\r\n imports: [NgStyle],\r\n templateUrl: './slider.component.html',\r\n styleUrl: './slider.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SliderComponent implements ControlValueAccessor {\r\n showValue = input(true);\r\n min = input<string>('0');\r\n max = input<string>('100');\r\n step = input<string>('5');\r\n rangeStyle = input<{ [key: string]: string }>({});\r\n\r\n disabled = false;\r\n\r\n value: number = 0;\r\n\r\n onChange: (value: any) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n writeValue(value: any): void {\r\n if (value !== undefined) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n changeValue(e: Event) {\r\n const value = (e.target as HTMLInputElement).value;\r\n\r\n this.value = typeof value === 'number' ? value : Number(value);\r\n this.onChange(value);\r\n }\r\n}\r\n","<input\r\n #rangeElement\r\n [ngStyle]=\"rangeStyle\"\r\n type=\"range\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [step]=\"step()\"\r\n [disabled]=\"disabled\"\r\n [value]=\"value\"\r\n (input)=\"changeValue($event)\"\r\n/>\r\n\r\n@if (showValue()) {\r\n <p class=\"s4y-ranger-value\">\r\n {{ rangeElement.value }}\r\n </p>\r\n}\r\n","import { Component, computed, forwardRef, input, signal } from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n RadioControlValueAccessor,\r\n} from '@angular/forms';\r\nimport { CompareFn, DisplayFn } from '../select-multi';\r\n\r\n@Component({\r\n selector: 's4y-radio',\r\n imports: [],\r\n templateUrl: './radio.component.html',\r\n styleUrl: './radio.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RadioComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RadioComponent<T = any> implements ControlValueAccessor {\r\n label = input<string>();\r\n name = input<string>();\r\n id = input<string>();\r\n radioValue = input.required<T>();\r\n\r\n compareWith = input<CompareFn<T>>();\r\n displayWith = input<DisplayFn<T>>((o) => String(o));\r\n\r\n disabled: boolean = false;\r\n\r\n value = signal<T | null>(null);\r\n\r\n onChange: (value: T | null) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n writeValue(value: T | null): void {\r\n this.value.set(value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onInput() {\r\n const v = this.radioValue();\r\n this.value.set(v);\r\n this.onChange(v);\r\n this.onTouched();\r\n }\r\n\r\n isChecked = computed(() => {\r\n const current = this.value();\r\n const candidate = this.radioValue();\r\n\r\n if (current == null) return false;\r\n\r\n const cmp = this.compareWith?.();\r\n if (cmp) return cmp(current as T, candidate);\r\n\r\n return current === candidate;\r\n });\r\n\r\n displayLabel = computed(() => {\r\n const manual = this.label();\r\n if (manual != null && manual !== '') return manual;\r\n return this.displayWith()(this.radioValue());\r\n });\r\n}\r\n","<label class=\"s4y-radio\" [class.disabled]=\"disabled\">\r\n <input\r\n value=\"on\"\r\n [disabled]=\"disabled\"\r\n [id]=\"id()\"\r\n [name]=\"name()\"\r\n type=\"radio\"\r\n (change)=\"onInput()\"\r\n [checked]=\"isChecked()\"\r\n />\r\n <span class=\"s4y-radio-label\">\r\n {{ displayLabel() }}\r\n </span>\r\n</label>\r\n","export enum TooltipPosition {\r\n ABOVE = 'above',\r\n BELOW = 'below',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n DYNAMIC = 'dynamic',\r\n DEFAULT = 'above',\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { TooltipPosition } from './tooltip.enums';\r\n\r\n@Component({\r\n selector: 's4y-tooltip',\r\n templateUrl: './tooltip.component.html',\r\n styleUrls: ['./tooltip.component.scss'],\r\n standalone: false,\r\n})\r\nexport class TooltipComponent implements OnInit {\r\n position: TooltipPosition = TooltipPosition.DEFAULT;\r\n tooltip = '';\r\n left = 0;\r\n top = 0;\r\n visible = false;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<div\r\n class=\"tooltip {{ 'tooltip--' + position }}\"\r\n [class.tooltip--visible]=\"visible\"\r\n [style.left]=\"left + 'px'\"\r\n [style.top]=\"top + 'px'\"\r\n>\r\n {{ tooltip }}\r\n</div>\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n Directive,\r\n ElementRef,\r\n EmbeddedViewRef,\r\n HostListener,\r\n Injector,\r\n Input,\r\n} from '@angular/core';\r\nimport { TooltipComponent } from './tooltip.component';\r\nimport { TooltipPosition } from './tooltip.enums';\r\n\r\n@Directive({\r\n selector: '[s4yTooltip]',\r\n standalone: false,\r\n})\r\nexport class TooltipDirective {\r\n @Input('s4yTooltip') tooltip = '';\r\n @Input('s4yTooltipPosition') position: TooltipPosition =\r\n TooltipPosition.DEFAULT;\r\n @Input() showDelay = 0;\r\n @Input() hideDelay = 0;\r\n\r\n private componentRef: ComponentRef<any> | null = null;\r\n private showTimeout?: number;\r\n private hideTimeout?: number;\r\n private touchTimeout?: number;\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private appRef: ApplicationRef,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private injector: Injector,\r\n ) {}\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n this.initializeTooltip();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.setHideTooltipTimeout();\r\n }\r\n\r\n @HostListener('mousemove', ['$event'])\r\n onMouseMove($event: MouseEvent): void {\r\n if (\r\n this.componentRef !== null &&\r\n this.position === TooltipPosition.DYNAMIC\r\n ) {\r\n this.componentRef.instance.left = $event.clientX;\r\n this.componentRef.instance.top = $event.clientY;\r\n this.componentRef.instance.tooltip = this.tooltip;\r\n }\r\n }\r\n\r\n @HostListener('touchstart', ['$event'])\r\n onTouchStart($event: TouchEvent): void {\r\n $event.preventDefault();\r\n window.clearTimeout(this.touchTimeout);\r\n this.touchTimeout = window.setTimeout(\r\n this.initializeTooltip.bind(this),\r\n 500,\r\n );\r\n }\r\n\r\n @HostListener('touchend')\r\n onTouchEnd(): void {\r\n window.clearTimeout(this.touchTimeout);\r\n this.setHideTooltipTimeout();\r\n }\r\n\r\n private initializeTooltip() {\r\n if (this.componentRef === null) {\r\n window.clearInterval(this.hideDelay);\r\n const componentFactory =\r\n this.componentFactoryResolver.resolveComponentFactory(TooltipComponent);\r\n this.componentRef = componentFactory.create(this.injector);\r\n\r\n this.appRef.attachView(this.componentRef.hostView);\r\n const [tooltipDOMElement] = (\r\n this.componentRef.hostView as EmbeddedViewRef<any>\r\n ).rootNodes;\r\n\r\n this.setTooltipComponentProperties();\r\n\r\n document.body.appendChild(tooltipDOMElement);\r\n this.showTimeout = window.setTimeout(\r\n this.showTooltip.bind(this),\r\n this.showDelay,\r\n );\r\n }\r\n }\r\n\r\n private setTooltipComponentProperties() {\r\n if (this.componentRef !== null) {\r\n this.componentRef.instance.tooltip = this.tooltip;\r\n this.componentRef.instance.position = this.position;\r\n\r\n const { left, right, top, bottom } =\r\n this.elementRef.nativeElement.getBoundingClientRect();\r\n\r\n switch (this.position) {\r\n case TooltipPosition.BELOW: {\r\n this.componentRef.instance.left = Math.round(\r\n (right - left) / 2 + left,\r\n );\r\n this.componentRef.instance.top = Math.round(bottom);\r\n break;\r\n }\r\n case TooltipPosition.ABOVE: {\r\n this.componentRef.instance.left = Math.round(\r\n (right - left) / 2 + left,\r\n );\r\n this.componentRef.instance.top = Math.round(top);\r\n break;\r\n }\r\n case TooltipPosition.RIGHT: {\r\n this.componentRef.instance.left = Math.round(right);\r\n this.componentRef.instance.top = Math.round(top + (bottom - top) / 2);\r\n break;\r\n }\r\n case TooltipPosition.LEFT: {\r\n this.componentRef.instance.left = Math.round(left);\r\n this.componentRef.instance.top = Math.round(top + (bottom - top) / 2);\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private showTooltip() {\r\n if (this.componentRef !== null) {\r\n this.componentRef.instance.visible = true;\r\n }\r\n }\r\n\r\n private setHideTooltipTimeout() {\r\n this.hideTimeout = window.setTimeout(\r\n this.destroy.bind(this),\r\n this.hideDelay,\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\r\n }\r\n\r\n destroy(): void {\r\n if (this.componentRef !== null) {\r\n window.clearInterval(this.showTimeout);\r\n window.clearInterval(this.hideDelay);\r\n this.appRef.detachView(this.componentRef.hostView);\r\n this.componentRef.destroy();\r\n this.componentRef = null;\r\n }\r\n }\r\n}\r\n","import { CommonModule, NgClass } from '@angular/common';\r\nimport { TooltipDirective } from './tooltip.directive';\r\nimport { NgModule } from '@angular/core';\r\nimport { TooltipComponent } from './tooltip.component';\r\n\r\n@NgModule({\r\n declarations: [TooltipComponent, TooltipDirective],\r\n imports: [CommonModule, NgClass],\r\n exports: [TooltipDirective],\r\n})\r\nexport class TooltipModule {}\r\n","import { Directive } from '@angular/core';\r\n\r\n/**\r\n * This directive is used to customize the breadcrumb label behavior\r\n * *s4yBreadcrumbItem directive can be used in the child element of s4yBreadcrumbItem\r\n * Usage: refer to the demo - app.component.html\r\n */\r\n@Directive({\r\n selector: '[s4yBreadcrumbItem]',\r\n standalone: true,\r\n})\r\nexport class BreadcrumbItemDirective {}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRoute,\r\n ActivatedRouteSnapshot,\r\n GuardsCheckEnd,\r\n Router,\r\n} from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport {\r\n BreadcrumbDefinition,\r\n Breadcrumb,\r\n BreadcrumbConfig,\r\n BreadcrumbObject,\r\n} from './types';\r\n\r\ntype StoreMatcherKey = 'routeLink' | 'routeRegex' | 'alias';\r\n\r\nconst PATH_PARAM = {\r\n PREFIX: ':',\r\n REGEX_IDENTIFIER: '/:[^/]+',\r\n REGEX_REPLACER: '/[^/]+',\r\n};\r\nconst ALIAS_PREFIX = '@';\r\nconst isNonEmpty = (obj: unknown): boolean => {\r\n return !!obj && Object.keys(obj).length > 0;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BreadcrumbService {\r\n private baseHref = '/';\r\n\r\n /**\r\n * dynamicBreadcrumbStore holds information about dynamically updated breadcrumbs.\r\n * Breadcrumbs can be set from anywhere (component, service) in the app.\r\n * On every breadcrumb update check this store and use the info if available.\r\n */\r\n private dynamicBreadcrumbStore: BreadcrumbDefinition[] = [];\r\n\r\n /**\r\n * breadcrumbList for the current route\r\n * When breadcrumb info is changed dynamically, check if the currentBreadcrumbs is effected\r\n * If effected, update the change and emit a new stream\r\n */\r\n private currentBreadcrumbs: BreadcrumbDefinition[] = [];\r\n private previousBreadcrumbs: BreadcrumbDefinition[] = [];\r\n\r\n /**\r\n * Breadcrumbs observable to be subscribed by BreadcrumbComponent\r\n * Emits on every route change OR dynamic update of breadcrumb\r\n */\r\n private breadcrumbs = new BehaviorSubject<BreadcrumbDefinition[]>([]);\r\n public breadcrumbs$ = this.breadcrumbs.asObservable();\r\n\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n ) {\r\n this.detectRouteChanges();\r\n }\r\n\r\n /**\r\n * Whenever route changes build breadcrumb list again\r\n */\r\n private detectRouteChanges() {\r\n // Special case where breadcrumb service & component instantiates after a route is navigated.\r\n // Ex: put breadcrumbs within *ngIf and this.router.events would be empty\r\n // This check is also required where { initialNavigation: 'enabledBlocking' } is applied to routes\r\n this.setupBreadcrumbs(this.activatedRoute.snapshot);\r\n\r\n this.router.events\r\n .pipe(\r\n filter(\r\n (event): event is GuardsCheckEnd => event instanceof GuardsCheckEnd,\r\n ),\r\n )\r\n .subscribe((event) => {\r\n // activatedRoute doesn't carry data when shouldReuseRoute returns false\r\n // use the event data with GuardsCheckEnd as workaround\r\n // Check for shouldActivate in case where the authGuard returns false the breadcrumbs shouldn't be changed\r\n if (event.shouldActivate) {\r\n this.setupBreadcrumbs(event.state.root);\r\n }\r\n });\r\n }\r\n\r\n private setupBreadcrumbs(activatedRouteSnapshot: ActivatedRouteSnapshot) {\r\n this.previousBreadcrumbs = this.currentBreadcrumbs;\r\n // breadcrumb label for base OR root path. Usually, this can be set as 'Home'\r\n const rootBreadcrumb = this.getRootBreadcrumb();\r\n this.currentBreadcrumbs = rootBreadcrumb ? [rootBreadcrumb] : [];\r\n this.prepareBreadcrumbList(activatedRouteSnapshot, this.baseHref);\r\n }\r\n\r\n private getRootBreadcrumb(): Breadcrumb | void {\r\n const rootConfig = this.router.config.find((config) => config.path === '');\r\n const rootBreadcrumb = this.extractObject(rootConfig?.data?.['breadcrumb']);\r\n const storeItem = this.getFromStore(rootBreadcrumb.alias!, '/');\r\n\r\n if (isNonEmpty(rootBreadcrumb) || isNonEmpty(storeItem)) {\r\n return {\r\n ...storeItem,\r\n ...rootBreadcrumb,\r\n routeLink: this.baseHref,\r\n ...this.getQueryParamsFromPreviousList('/'),\r\n };\r\n }\r\n }\r\n\r\n private prepareBreadcrumbItem(\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n routeLinkPrefix: string,\r\n ): BreadcrumbDefinition {\r\n const { path, breadcrumb } = this.parseRouteData(\r\n activatedRouteSnapshot.routeConfig,\r\n );\r\n const resolvedSegment = this.resolvePathSegment(\r\n path,\r\n activatedRouteSnapshot,\r\n );\r\n const routeLink = `${routeLinkPrefix}${resolvedSegment}`;\r\n const storeItem = this.getFromStore(breadcrumb.alias!, routeLink);\r\n\r\n const label = this.extractLabel(\r\n storeItem?.label! || breadcrumb?.label!,\r\n resolvedSegment,\r\n );\r\n let isAutoGeneratedLabel = false;\r\n let autoGeneratedLabel = '';\r\n if (!label) {\r\n isAutoGeneratedLabel = true;\r\n autoGeneratedLabel = resolvedSegment;\r\n }\r\n\r\n return {\r\n ...storeItem,\r\n ...breadcrumb,\r\n label: isAutoGeneratedLabel ? autoGeneratedLabel : label,\r\n routeLink,\r\n isAutoGeneratedLabel,\r\n ...this.getQueryParamsFromPreviousList(routeLink),\r\n };\r\n }\r\n\r\n private prepareBreadcrumbList(\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n routeLinkPrefix: string,\r\n ): Breadcrumb[] | void {\r\n if (activatedRouteSnapshot.routeConfig?.path) {\r\n const breadcrumbItem = this.prepareBreadcrumbItem(\r\n activatedRouteSnapshot,\r\n routeLinkPrefix,\r\n );\r\n this.currentBreadcrumbs.push(breadcrumbItem);\r\n\r\n if (activatedRouteSnapshot.firstChild) {\r\n return this.prepareBreadcrumbList(\r\n activatedRouteSnapshot.firstChild,\r\n breadcrumbItem.routeLink + '/',\r\n );\r\n }\r\n } else if (activatedRouteSnapshot.firstChild) {\r\n return this.prepareBreadcrumbList(\r\n activatedRouteSnapshot.firstChild,\r\n routeLinkPrefix,\r\n );\r\n }\r\n const lastCrumb =\r\n this.currentBreadcrumbs[this.currentBreadcrumbs.length - 1];\r\n this.setQueryParamsForActiveBreadcrumb(lastCrumb, activatedRouteSnapshot);\r\n\r\n // remove breadcrumb items that needs to be hidden\r\n const breadcrumbsToShow = this.currentBreadcrumbs.filter(\r\n (item) => !item.skip,\r\n );\r\n\r\n this.breadcrumbs.next(breadcrumbsToShow);\r\n }\r\n\r\n private getFromStore(\r\n alias: string,\r\n routeLink: string,\r\n ): BreadcrumbDefinition | undefined {\r\n return this.dynamicBreadcrumbStore.find((item) => {\r\n return (\r\n (alias && alias === item.alias) ||\r\n (routeLink && routeLink === item.routeLink) ||\r\n this.matchRegex(routeLink, item.routeRegex!)\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * use exact match instead of regexp.test\r\n * for /mentor/[^/]+ we should match '/mentor/12' but not '/mentor/12/abc'\r\n */\r\n private matchRegex(routeLink: string, routeRegex: string) {\r\n const match = routeLink.match(new RegExp(routeRegex));\r\n return match?.[0] === routeLink;\r\n }\r\n\r\n /**\r\n * if the path segment has route params, read the param value from url\r\n * for each segment of route this gets called\r\n *\r\n * for mentor/:id/view - it gets called with mentor, :id, view 3 times\r\n */\r\n private resolvePathSegment(\r\n segment: string,\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n ) {\r\n //quirk -segment can be defined as view/:id in route config in which case you need to make it view/<resolved-param>\r\n if (segment.includes(PATH_PARAM.PREFIX)) {\r\n Object.entries(activatedRouteSnapshot.params).forEach(([key, value]) => {\r\n segment = segment.replace(`:${key}`, `${value}`);\r\n });\r\n }\r\n return segment;\r\n }\r\n\r\n /**\r\n * queryParams & fragments for previous breadcrumb path are copied over to new list\r\n */\r\n private getQueryParamsFromPreviousList(routeLink: string): Breadcrumb {\r\n const { queryParams, fragment } =\r\n this.previousBreadcrumbs.find((item) => item.routeLink === routeLink) ||\r\n {};\r\n return { queryParams, fragment };\r\n }\r\n\r\n /**\r\n * set current activated route query params to the last breadcrumb item\r\n */\r\n private setQueryParamsForActiveBreadcrumb(\r\n lastItem: Breadcrumb,\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n ) {\r\n if (lastItem) {\r\n const { queryParams, fragment } = activatedRouteSnapshot;\r\n lastItem.queryParams = queryParams ? { ...queryParams } : undefined;\r\n lastItem.fragment = fragment!;\r\n }\r\n }\r\n\r\n /**\r\n * For a specific route, breadcrumb can be defined either on parent OR it's child(which has empty path)\r\n * When both are defined, child takes precedence\r\n *\r\n * Ex: Below we are setting breadcrumb on both parent and child.\r\n * So, child takes precedence and \"Defined On Child\" is displayed for the route 'home'\r\n * { path: 'home', loadChildren: () => import('./home/home.module').then((m) => m.HomeModule) , data: {breadcrumb: \"Defined On Module\"}}\r\n * AND\r\n * children: [\r\n * { path: '', component: ShowUserComponent, data: {breadcrumb: \"Defined On Child\" }\r\n * ]\r\n */\r\n private parseRouteData(routeConfig: any) {\r\n const { path, data } = routeConfig;\r\n const breadcrumb = this.mergeWithBaseChildData(\r\n routeConfig,\r\n data?.breadcrumb,\r\n );\r\n\r\n return { path, breadcrumb };\r\n }\r\n\r\n /**\r\n * get empty children of a module or Component. Empty child is the one with path: ''\r\n * When parent and it's children (that has empty route path) define data merge them both with child taking precedence\r\n */\r\n private mergeWithBaseChildData(\r\n routeConfig: any, // TODO: add proper type\r\n config: BreadcrumbConfig,\r\n ): BreadcrumbObject {\r\n if (!routeConfig) {\r\n return this.extractObject(config);\r\n }\r\n\r\n let baseChild;\r\n if (routeConfig.loadChildren) {\r\n // To handle a module with empty child route\r\n baseChild = routeConfig._loadedRoutes.find(\r\n (route: any) => route.path === '',\r\n );\r\n } else if (routeConfig.children) {\r\n // To handle a component with empty child route\r\n baseChild = routeConfig.children.find((route: any) => route.path === '');\r\n }\r\n\r\n const childConfig = baseChild?.data?.breadcrumb;\r\n return childConfig\r\n ? this.mergeWithBaseChildData(baseChild, {\r\n ...this.extractObject(config),\r\n ...this.extractObject(childConfig),\r\n })\r\n : this.extractObject(config);\r\n }\r\n\r\n /**\r\n * Update breadcrumb dynamically\r\n *\r\n * key can be a path | alias\r\n *\r\n * 1) Using complete route path. route can be passed the same way you define angular routes\r\n * - path can be passed as 'exact path(routeLink)' or 'path with params(routeRegex)'\r\n * - update label Ex: set('/mentor', 'Mentor'), set('/mentor/:id', 'Mentor Details')\r\n * - change visibility Ex: set('/mentor/:id/edit', { skip: true })\r\n * ------------------------------------------ OR ------------------------------------------\r\n * 2) Using route alias (prefixed with '@'). alias should be unique for a route\r\n * - update label Ex: set('@mentor', 'Enabler')\r\n * - change visibility Ex: set('@mentorEdit', { skip: true })\r\n *\r\n *\r\n * value can be string | BreadcrumbObject | BreadcrumbFunction\r\n */\r\n set(key: string, breadcrumb: string | BreadcrumbObject) {\r\n const breadcrumbObject = this.extractObject(breadcrumb);\r\n let updateArgs: [StoreMatcherKey, BreadcrumbDefinition];\r\n\r\n if (key.startsWith(ALIAS_PREFIX)) {\r\n updateArgs = ['alias', { ...breadcrumbObject, alias: key.slice(1) }];\r\n } else if (key.includes(PATH_PARAM.PREFIX)) {\r\n updateArgs = [\r\n 'routeRegex',\r\n { ...breadcrumbObject, routeRegex: this.buildRegex(key) },\r\n ];\r\n } else {\r\n updateArgs = [\r\n 'routeLink',\r\n { ...breadcrumbObject, routeLink: this.ensureLeadingSlash(key) },\r\n ];\r\n }\r\n\r\n // For this route if previously a breadcrumb is not defined that sets isAutoGeneratedLabel: true\r\n // change it to false since this is user supplied value\r\n updateArgs[1].isAutoGeneratedLabel = false;\r\n\r\n this.updateStore(...updateArgs);\r\n this.updateCurrentBreadcrumbs(...updateArgs);\r\n }\r\n\r\n /**\r\n * Update the store to reuse for dynamic declarations\r\n * If the store already has this route definition update it, else add\r\n */\r\n private updateStore(key: string, breadcrumb: BreadcrumbDefinition) {\r\n const storeItemIndex = this.dynamicBreadcrumbStore.findIndex((item) => {\r\n return (\r\n breadcrumb[key as keyof BreadcrumbDefinition] ===\r\n item[key as keyof BreadcrumbDefinition]\r\n );\r\n });\r\n if (storeItemIndex > -1) {\r\n this.dynamicBreadcrumbStore[storeItemIndex] = {\r\n ...this.dynamicBreadcrumbStore[storeItemIndex],\r\n ...breadcrumb,\r\n };\r\n } else {\r\n this.dynamicBreadcrumbStore.push({ ...breadcrumb });\r\n }\r\n }\r\n\r\n /**\r\n * If breadcrumb is present in current breadcrumbs update it and emit new stream\r\n */\r\n private updateCurrentBreadcrumbs(\r\n key: string,\r\n breadcrumb: BreadcrumbDefinition,\r\n ) {\r\n const itemIndex = this.currentBreadcrumbs.findIndex((item) => {\r\n return key === 'routeRegex'\r\n ? this.matchRegex(item.routeLink!, breadcrumb[key]!)\r\n : breadcrumb[key as keyof BreadcrumbDefinition] ===\r\n item[key as keyof BreadcrumbDefinition];\r\n });\r\n if (itemIndex > -1) {\r\n this.currentBreadcrumbs[itemIndex] = {\r\n ...this.currentBreadcrumbs[itemIndex],\r\n ...breadcrumb,\r\n };\r\n const breadcrumbsToShow = this.currentBreadcrumbs.filter(\r\n (item) => !item.skip,\r\n );\r\n this.breadcrumbs.next([...breadcrumbsToShow]);\r\n }\r\n }\r\n\r\n /**\r\n * For a route with path param, we create regex dynamically from angular route syntax\r\n * '/mentor/:id' becomes '/mentor/[^/]',\r\n * breadcrumbService.set('/mentor/:id', 'Uday') should update 'Uday' as label for '/mentor/2' OR 'mentor/ada'\r\n */\r\n private buildRegex(path: string) {\r\n return this.ensureLeadingSlash(path).replace(\r\n new RegExp(PATH_PARAM.REGEX_IDENTIFIER, 'g'),\r\n PATH_PARAM.REGEX_REPLACER,\r\n );\r\n }\r\n\r\n private ensureLeadingSlash(path: string) {\r\n return path.startsWith('/') ? path : `/${path}`;\r\n }\r\n\r\n /**\r\n * In App's RouteConfig, breadcrumb can be defined as a string OR a function OR an object\r\n *\r\n * string: simple static breadcrumb label for a path\r\n * function: callback that gets invoked with resolved path param\r\n * object: additional data defined along with breadcrumb label that gets passed to *s4yBreadcrumbItem directive\r\n */\r\n private extractLabel(config: BreadcrumbConfig, resolvedParam?: string) {\r\n const label = typeof config === 'object' ? config.label : config;\r\n if (typeof label === 'function') {\r\n return label(resolvedParam);\r\n }\r\n return label;\r\n }\r\n\r\n private extractObject(config: BreadcrumbConfig): BreadcrumbObject {\r\n // don't include {label} if config is undefined. This is important since we merge the configs\r\n if (\r\n config &&\r\n (typeof config === 'string' || typeof config === 'function')\r\n ) {\r\n return { label: config };\r\n }\r\n return (config as BreadcrumbObject) || {};\r\n }\r\n}\r\n","import {\r\n Component,\r\n ContentChild,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ActivatedRoute, RouterModule } from '@angular/router';\r\nimport { Observable, map } from 'rxjs';\r\nimport { BreadcrumbItemDirective } from './breadcrumb-item.directive';\r\nimport { BreadcrumbService } from './breadcrumb.service';\r\nimport { BreadcrumbDefinition } from './types';\r\n\r\n@Component({\r\n selector: 's4y-breadcrumb',\r\n imports: [CommonModule, RouterModule],\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrl: './breadcrumb.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class BreadcrumbComponent implements OnInit {\r\n breadcrumbs$!: Observable<BreadcrumbDefinition[]>;\r\n separatorTemplate: TemplateRef<void> | undefined;\r\n private _separator: string = '/';\r\n\r\n /**\r\n * Breadcrumb item can be customized with this template\r\n * Template context is provided label, additional info, first and last indexes\r\n * Use cases:\r\n * 1) Add an icon along with label\r\n * 2) i18n. {{breadcrumb | translate}} or {{breadcrumb | transloco}}\r\n * 3) Change text case {{breadcrumb | titlecase}}\r\n */\r\n @ContentChild(BreadcrumbItemDirective, { static: false, read: TemplateRef })\r\n itemTemplate: any;\r\n\r\n /**\r\n * If true, breadcrumb is auto generated even without any mapping label\r\n * Default label is same as route segment\r\n */\r\n @Input() autoGenerate = true;\r\n\r\n /**\r\n * By default query params will be preserved with breadcrumbs\r\n */\r\n @Input() preserveQueryParams = true;\r\n\r\n /**\r\n * By default query fragments will be preserved with breadcrumbs\r\n */\r\n @Input() preserveFragment = true;\r\n\r\n /**\r\n * custom class provided by consumer to increase specificity\r\n * This will benefit to override styles that are conflicting\r\n */\r\n @Input() class = '';\r\n\r\n /**\r\n * anchorTarget = \"_blank\" makes the breadcrumb link open in a new tab\r\n */\r\n @Input() anchorTarget: '_blank' | undefined;\r\n\r\n /**\r\n * separator between breadcrumbs, defaults to '/'.\r\n * User can customize separator either by passing a String or Template\r\n *\r\n * String --> Ex: <s4y-breadcrumb separator=\"-\"> </s4y-breadcrumb>\r\n *\r\n * Template --> Ex: <s4y-breadcrumb [separator]=\"separatorTemplate\"> </s4y-breadcrumb>\r\n * <ng-template #separatorTemplate><mat-icon>arrow_right</mat-icon></ng-template>\r\n */\r\n @Input()\r\n set separator(value: string | TemplateRef<void>) {\r\n if (value instanceof TemplateRef) {\r\n this.separatorTemplate = value;\r\n this._separator = '/';\r\n } else {\r\n this.separatorTemplate = undefined;\r\n this._separator = value || '/';\r\n }\r\n }\r\n get separator() {\r\n return this._separator;\r\n }\r\n\r\n setupMessage = 'not set up yet';\r\n someParameterValue = null;\r\n\r\n constructor(\r\n private breadcrumbService: BreadcrumbService,\r\n activateRoute: ActivatedRoute,\r\n ) {\r\n // breadcrumb inside ngIf works only this way\r\n activateRoute.params.subscribe((params) => {\r\n this.setupComponent(params['someParam']);\r\n });\r\n }\r\n\r\n setupComponent(someParam: any) {\r\n this.setupMessage = 'set up at ' + new Date();\r\n this.someParameterValue = someParam;\r\n }\r\n\r\n ngOnInit() {\r\n this.breadcrumbs$ = this.breadcrumbService.breadcrumbs$.pipe(\r\n map((breadcrumbs: BreadcrumbDefinition[]) => {\r\n return breadcrumbs\r\n .filter((breadcrumb: BreadcrumbDefinition) => {\r\n // Usually, breadcrumb list can contain a combination of auto generated and user specified labels\r\n // this filters autogenerated labels in case of \"[autoGenerate]: false\"\r\n if (this.autoGenerate) {\r\n return true;\r\n }\r\n return !breadcrumb.isAutoGeneratedLabel;\r\n })\r\n .map((breadcrumb: BreadcrumbDefinition) => {\r\n // Do not mutate breadcrumb as its source of truth.\r\n // There can be scenarios where we can have multiple s4y-breadcrumb instances in page\r\n const { routeInterceptor, routeLink } = breadcrumb;\r\n return {\r\n ...breadcrumb,\r\n routeLink:\r\n routeInterceptor?.(routeLink!, breadcrumb) || routeLink,\r\n };\r\n });\r\n }),\r\n );\r\n }\r\n}\r\n","<nav aria-label=\"breadcrumb\" class=\"s4y-breadcrumb-root\" [ngClass]=\"class\">\r\n <ol class=\"s4y-breadcrumb-list\">\r\n <ng-container\r\n *ngFor=\"\r\n let breadcrumb of breadcrumbs$ | async;\r\n last as isLast;\r\n first as isFirst;\r\n index as index;\r\n count as count\r\n \"\r\n >\r\n <li class=\"s4y-breadcrumb-item\">\r\n <a\r\n *ngIf=\"!isLast\"\r\n class=\"s4y-breadcrumb-link\"\r\n [ngClass]=\"{ 's4y-breadcrumb-link-disabled': breadcrumb.disable }\"\r\n [attr.aria-disabled]=\"breadcrumb.disable\"\r\n [attr.tabIndex]=\"breadcrumb.disable ? -1 : 0\"\r\n rel=\"noopener noreferrer\"\r\n [routerLink]=\"\r\n breadcrumb.routeInterceptor\r\n ? breadcrumb.routeInterceptor(breadcrumb.routeLink!, breadcrumb)\r\n : breadcrumb.routeLink\r\n \"\r\n [queryParams]=\"\r\n preserveQueryParams ? breadcrumb.queryParams : undefined\r\n \"\r\n [fragment]=\"preserveFragment ? breadcrumb.fragment : undefined\"\r\n [target]=\"anchorTarget ? anchorTarget : '_self'\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count,\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container *ngIf=\"!itemTemplate\">{{\r\n breadcrumb.label\r\n }}</ng-container>\r\n </a>\r\n\r\n <span *ngIf=\"isLast\" class=\"s4y-breadcrumb-trail\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count,\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container *ngIf=\"!itemTemplate\">{{\r\n breadcrumb.label\r\n }}</ng-container>\r\n </span>\r\n </li>\r\n\r\n <li *ngIf=\"!isLast\" class=\"s4y-breadcrumb-separator\" aria-hidden=\"true\">\r\n @if (separatorTemplate) {\r\n <ng-container *ngTemplateOutlet=\"separatorTemplate\"></ng-container>\r\n }\r\n\r\n <ng-container *ngIf=\"!separatorTemplate\">{{ separator }}</ng-container>\r\n </li>\r\n </ng-container>\r\n </ol>\r\n</nav>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-step',\r\n templateUrl: './step.component.html',\r\n styleUrl: './step.component.scss',\r\n imports: [CommonModule],\r\n})\r\nexport class StepComponent {\r\n @ViewChild('root', { static: true }) root!: ElementRef;\r\n\r\n @Input() value!: number;\r\n @Input() title!: string;\r\n @Input() description?: string;\r\n @Input() isLast = false;\r\n @Input() selected = false;\r\n @Input() disabled = false;\r\n @Input() isCompleted = false;\r\n\r\n stepClicked = new EventEmitter<number>();\r\n\r\n linear = false;\r\n\r\n onClick() {\r\n if (!this.disabled) {\r\n this.stepClicked.emit(this.value);\r\n }\r\n }\r\n}\r\n","<button\r\n (click)=\"onClick()\"\r\n [class.last-step]=\"isLast\"\r\n #root\r\n role=\"button\"\r\n type=\"button\"\r\n class=\"s4y-step-container\"\r\n [disabled]=\"disabled\"\r\n [class.selected]=\"selected || isCompleted\"\r\n [class.future-step]=\"linear && !isCompleted && !selected\"\r\n>\r\n <div class=\"s4y-step-information\">\r\n <div class=\"s4y-step-information__icon\">\r\n <ng-container *ngIf=\"isCompleted; else showValue\"> ✔ </ng-container>\r\n <ng-template #showValue>{{ value }}</ng-template>\r\n </div>\r\n <div class=\"s4y-step-information__line\"></div>\r\n </div>\r\n <div class=\"s4y-step-content\">\r\n <p class=\"s4y-step-content__title\">{{ title }}</p>\r\n @if (description) {\r\n <p class=\"s4y-step-content__description\">\r\n {{ description }}\r\n </p>\r\n }\r\n </div>\r\n</button>\r\n","import {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nexport const stepperAnimation = trigger('stepperAnimation', [\r\n state('left', style({ transform: 'translateX(-100%)', opacity: 0 })),\r\n state('center', style({ transform: 'translateX(0)', opacity: 1 })),\r\n state('right', style({ transform: 'translateX(100%)', opacity: 0 })),\r\n\r\n transition('left => center', [animate('300ms ease-out')]),\r\n transition('right => center', [animate('300ms ease-out')]),\r\n transition('center => left', [animate('300ms ease-in')]),\r\n transition('center => right', [animate('300ms ease-in')]),\r\n]);\r\n","import {\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n Input,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { stepperAnimation } from '../../animations/stepper.animation';\r\nimport { StepperComponent } from '../../stepper.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-step-panel',\r\n templateUrl: './step-panel.component.html',\r\n styleUrl: './step-panel.component.scss',\r\n animations: [stepperAnimation],\r\n imports: [CommonModule],\r\n})\r\nexport class StepPanelComponent {\r\n @ViewChild('root', { static: true }) root!: ElementRef;\r\n @Input({ required: true }) value: number = 1;\r\n @Input() visible: boolean = false;\r\n\r\n constructor(private stepperComponent: StepperComponent) {}\r\n\r\n @ContentChild('templatePanel') templatePanel!: TemplateRef<any>;\r\n\r\n animationState: 'left' | 'center' | 'right' = 'right';\r\n\r\n canNavigateTo(value: number) {\r\n this.stepperComponent.setSelected(value);\r\n }\r\n}\r\n","<!-- <div\r\n class=\"s4y-step-panel-container\"\r\n #root\r\n [@stepperAnimation]=\"animationState\"\r\n>\r\n @if (visible) {\r\n <ng-content></ng-content>\r\n }\r\n</div> -->\r\n<!-- Angular mais novo @for nao tem tanto suporte para as animacoes -->\r\n\r\n<div\r\n [@stepperAnimation]=\"animationState\"\r\n class=\"s4y-step-panel-container\"\r\n *ngIf=\"visible\"\r\n #root\r\n>\r\n <ng-contaner\r\n [ngTemplateOutlet]=\"templatePanel\"\r\n [ngTemplateOutletContext]=\"{ canNavigateTo: canNavigateTo.bind(this) }\"\r\n ></ng-contaner>\r\n</div>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n QueryList,\r\n} from '@angular/core';\r\nimport { StepComponent } from './components/step/step.component';\r\nimport { StepPanelComponent } from './components/step-panel/step-panel.component';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-stepper',\r\n templateUrl: './stepper.component.html',\r\n styleUrl: './stepper.component.scss',\r\n imports: [CommonModule],\r\n})\r\nexport class StepperComponent implements OnInit, AfterContentInit, OnDestroy {\r\n private onDestroy$ = new Subject<void>();\r\n @ContentChildren(StepComponent) steps!: QueryList<StepComponent>;\r\n\r\n @ContentChildren(StepPanelComponent, { descendants: true })\r\n stepsPanel!: QueryList<StepPanelComponent>;\r\n\r\n @Input() linear = false;\r\n @Input() isTabsNavigate = true;\r\n\r\n selectedStepValue!: number;\r\n\r\n previousStepValue = 1;\r\n maxStepCompleted = 1;\r\n\r\n constructor(private cdk: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.steps || this.steps.length === 0) return;\r\n\r\n this.initializerStepSelected();\r\n\r\n this.onDestroy$.next();\r\n\r\n this.steps.forEach((step) => {\r\n step.isLast = false;\r\n step.stepClicked.pipe(takeUntil(this.onDestroy$)).subscribe((value) => {\r\n const isBlockedByLinear = this.linear && value > this.maxStepCompleted;\r\n const isBlockedByTabSetting = !this.isTabsNavigate;\r\n\r\n if (isBlockedByLinear || isBlockedByTabSetting) {\r\n return;\r\n }\r\n\r\n this.setSelected(value);\r\n });\r\n });\r\n\r\n this.steps.last.isLast = true;\r\n }\r\n\r\n private initializerStepSelected() {\r\n this.setSelected(this.steps.first?.value ?? 1);\r\n }\r\n\r\n setSelected(value: number) {\r\n this.steps.forEach((step) => {\r\n step.linear = this.linear;\r\n step.selected = step.value === value;\r\n step.isCompleted = step.value < value;\r\n\r\n step.disabled =\r\n (this.linear && step.value > this.maxStepCompleted) ||\r\n !this.isTabsNavigate;\r\n });\r\n\r\n this.stepsPanel.forEach((panel) => {\r\n if (panel.value === value) {\r\n panel.visible = true;\r\n\r\n if (value > this.previousStepValue) {\r\n panel.animationState = 'right'; // entrando da direita\r\n } else if (value < this.previousStepValue) {\r\n panel.animationState = 'left'; // entrando da esquerda\r\n }\r\n\r\n setTimeout(() => (panel.animationState = 'center'), 0);\r\n } else {\r\n panel.visible = false;\r\n }\r\n });\r\n\r\n this.maxStepCompleted = Math.max(this.maxStepCompleted, value);\r\n this.previousStepValue = value;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.onDestroy$.next();\r\n this.onDestroy$.complete();\r\n }\r\n}\r\n","<div class=\"s4y-stepper-container\">\r\n <div class=\"s4y-stepper-container__header\">\r\n <ng-content select=\"s4y-step\"></ng-content>\r\n </div>\r\n <div class=\"s4y-stepper-container__body\">\r\n <ng-content select=\"s4y-step-panel\"></ng-content>\r\n </div>\r\n</div>\r\n","import { computed, Injectable, signal } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class LoadingModalService {\r\n private _isLoading = signal<boolean>(false);\r\n\r\n isLoading = computed(() => this._isLoading());\r\n\r\n showLoading() {\r\n this._isLoading.set(true);\r\n }\r\n\r\n hiddenLoading() {\r\n this._isLoading.set(false);\r\n }\r\n}\r\n","import { animate, style, transition, trigger } from '@angular/animations';\r\n\r\nexport const loadingAnimation = trigger('loadingAnimation', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n opacity: 1,\r\n }),\r\n ),\r\n ]),\r\n transition(':leave', [\r\n style({\r\n opacity: 1,\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n opacity: 0,\r\n }),\r\n ),\r\n ]),\r\n]);\r\n","import {\r\n Component,\r\n inject,\r\n input,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { LoadingModalService } from './loading-modal.service';\r\nimport { loadingAnimation } from './loading-modal.animation';\r\n\r\n@Component({\r\n selector: 's4y-loading-modal',\r\n imports: [],\r\n templateUrl: './loading-modal.component.html',\r\n styleUrl: './loading-modal.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [loadingAnimation],\r\n})\r\nexport class LoadingModalComponent implements OnInit, OnDestroy {\r\n protected loadingModalService = inject(LoadingModalService);\r\n\r\n messageInfor = input<string>('Carregando dados');\r\n\r\n dots = '';\r\n private intervalId?: any;\r\n\r\n ngOnInit() {\r\n let count = 0;\r\n this.intervalId = setInterval(() => {\r\n count = (count + 1) % 4; // 0,1,2,3\r\n this.dots = '.'.repeat(count);\r\n }, 500);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.intervalId) {\r\n clearInterval(this.intervalId);\r\n }\r\n }\r\n}\r\n","@if (loadingModalService.isLoading()) {\r\n <div class=\"s4y-loading-modal-wrapper\" @loadingAnimation>\r\n <div class=\"s4y-loading-modal-item\"></div>\r\n <p class=\"s4y-loading-modal-item-infor\">\r\n {{ messageInfor() }} <span>{{ dots }}</span>\r\n </p>\r\n </div>\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[s4yCheckbox][type=\"checkbox\"]',\r\n imports: [],\r\n templateUrl: './checkbox.component.html',\r\n styleUrl: './checkbox.component.scss',\r\n host: {\r\n role: 'checkbox',\r\n },\r\n})\r\nexport class CheckboxComponent {}\r\n","","import {\r\n animate,\r\n animation,\r\n group,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\n\r\nexport const sidebarRightAnimation = trigger('sidebarRightAnimation', [\r\n transition(\r\n ':enter',\r\n group([\r\n style({\r\n width: '0',\r\n visibility: 'hidden',\r\n padding: '1.6rem 0 ',\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n width: '{{width}}',\r\n visibility: 'visible',\r\n padding: '1.6rem',\r\n }),\r\n ),\r\n ]),\r\n ),\r\n transition(\r\n ':leave',\r\n group([\r\n style({\r\n width: '{{width}}',\r\n visibility: 'visible',\r\n padding: '1.6rem',\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n width: '0',\r\n visibility: 'hidden',\r\n padding: '1.6rem 0 ',\r\n }),\r\n ),\r\n ]),\r\n ),\r\n]);\r\n","import { computed, Injectable, signal } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SidebarRightService {\r\n private _isOpened = signal<boolean>(false);\r\n\r\n private readonly MOBILE_MAX_WIDTH = 1280;\r\n\r\n isOpened = computed(() => this._isOpened());\r\n\r\n private readonly resizeHandler = () => this.defaultStateInMobile();\r\n\r\n constructor() {\r\n if (typeof window !== 'undefined') {\r\n window.addEventListener('resize', this.resizeHandler, {\r\n passive: true,\r\n });\r\n this.defaultStateInMobile();\r\n }\r\n }\r\n\r\n toggleSidebar(value?: boolean) {\r\n if (value === undefined) {\r\n this._isOpened.update((s) => !s);\r\n } else {\r\n this._isOpened.set(value);\r\n }\r\n }\r\n\r\n private defaultStateInMobile() {\r\n if (window.innerWidth < this.MOBILE_MAX_WIDTH) {\r\n this._isOpened.set(false);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (typeof window !== 'undefined') {\r\n window.removeEventListener('resize', this.resizeHandler);\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, Input } from '@angular/core';\r\nimport { sidebarRightAnimation } from './sidebar-right.animation';\r\nimport { SidebarRightService } from './sidebar-right.service';\r\n\r\n@Component({\r\n selector: 's4y-sidebar-right',\r\n imports: [CommonModule],\r\n templateUrl: './sidebar-right.component.html',\r\n styleUrl: './sidebar-right.component.scss',\r\n animations: [sidebarRightAnimation],\r\n host: {\r\n '[attr.data-opened]': 'isOpened()',\r\n },\r\n})\r\nexport class SidebarRightComponent {\r\n protected readonly sidebarRightService = inject(SidebarRightService);\r\n\r\n get isOpened() {\r\n return this.sidebarRightService.isOpened;\r\n }\r\n\r\n @Input()\r\n width = '28rem';\r\n\r\n animationParams = {\r\n value: '',\r\n params: {\r\n width: this.width,\r\n },\r\n };\r\n\r\n closeByOverlay() {\r\n this.sidebarRightService.toggleSidebar();\r\n }\r\n}\r\n","<div class=\"s4y-aside-overlay\" (click)=\"closeByOverlay()\"></div>\r\n\r\n<div class=\"s4y-sidebar-right-container\" [attr.data-opened]=\"isOpened()\" *ngIf=\"isOpened()\" [@sidebarRightAnimation]=\"animationParams\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-popover-panel',\r\n imports: [],\r\n template: `<ng-content />`,\r\n styles: [\r\n `\r\n :host {\r\n z-index: 5;\r\n padding: 1.4rem;\r\n border-radius: var(--radius);\r\n font-size: 1.4rem;\r\n box-shadow: var(--shadow-default);\r\n border: 1px solid var(--gray-300);\r\n top: 2.9rem;\r\n right: 0;\r\n min-width: 14rem;\r\n background: #fff;\r\n width: fit-content;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: 0.4rem;\r\n }\r\n `,\r\n ],\r\n})\r\nexport class PopoverPanelComponent {}\r\n","import { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Directive, ElementRef, HostListener, inject, input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { filter, fromEvent, Subscription } from 'rxjs';\n\ntype PositionPreset =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\n | 'left-top'\n | 'left-center'\n | 'left-bottom'\n | 'right-top'\n | 'right-center'\n | 'right-bottom';\n\n@Directive({\n selector: '[s4yPopoverTrigger]',\n standalone: true,\n})\nexport class PopoverTriggerDirective {\n private overlay = inject(Overlay);\n private host = inject(ElementRef<HTMLElement>);\n private vcr = inject(ViewContainerRef);\n\n private overlayRef?: OverlayRef;\n private subs = new Subscription();\n\n menuTrigger = input<TemplateRef<any> | null>(null, {\n alias: 's4yPopoverTrigger',\n });\n menuContext = input<any>(null, { alias: 's4yPopoverTriggerContext' });\n\n menuPosition = input<PositionPreset>('bottom-right', {\n alias: 's4yPopoverPosition',\n });\n popoverOffsetX = input<number>(0, { alias: 's4yPopoverOffsetX' });\n popoverOffsetY = input<number>(4, { alias: 's4yPopoverOffsetY' });\n\n fade = input<boolean>(true, { alias: 's4yPopoverFade' });\n fadeDuration = input<number>(140, { alias: 's4yPopoverFadeDuration' });\n\n constructor() {}\n\n @HostListener('click')\n toggle() {\n if (this.overlayRef?.hasAttached()) {\n this.close();\n return;\n }\n this.open();\n }\n\n private open() {\n const tpl = this.menuTrigger();\n if (!tpl) return;\n\n const positions = this.buildPositions(\n this.menuPosition(),\n this.popoverOffsetX(),\n this.popoverOffsetY(),\n );\n\n if (!this.overlayRef) {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.host)\n .withFlexibleDimensions(false)\n .withPush(true)\n .withGrowAfterOpen(true)\n .withPositions(positions);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: false, // deixa scrollar tabela\n panelClass: ['s4y-dropdown-panel', 's4y-popover-fade'],\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n // fecha no clique no backdrop\n this.subs.add(\n this.overlayRef.backdropClick().subscribe(() => this.close()),\n );\n\n // fecha quando o overlay é detachado\n this.subs.add(\n this.overlayRef.detachments().subscribe(() => this.cleanup()),\n );\n\n // fecha no ESC enquanto focado dentro do painel\n this.subs.add(\n this.overlayRef\n .keydownEvents()\n .pipe(filter((e) => e.key === 'Escape'))\n .subscribe(() => this.close()),\n );\n\n // fecha ao clicar fora (sem backdrop)\n this.subs.add(\n fromEvent<MouseEvent>(document, 'mousedown')\n .pipe(\n filter((ev) => {\n const t = ev.target as Node | null;\n const inside =\n this.overlayRef!.overlayElement.contains(t!) ||\n this.host.nativeElement.contains(t!);\n return !inside;\n }),\n )\n .subscribe(() => this.close()),\n );\n } else {\n const strategy = this.overlayRef.getConfig()\n .positionStrategy as FlexibleConnectedPositionStrategy;\n\n strategy.withPositions(positions);\n\n this.overlayRef.updatePosition();\n }\n\n const portal = new TemplatePortal(tpl, this.vcr, {\n $implicit: this.menuContext(),\n row: this.menuContext(),\n });\n this.overlayRef.attach(portal);\n\n const el = this.overlayRef!.overlayElement;\n el.style.setProperty(\n '--s4y-popover-fade-duration',\n `${this.fadeDuration()}ms`,\n );\n\n // animação de ENTRADA\n if (this.fade()) {\n // estado inicial já é opaco=0 (via CSS). Força reflow e aplica \"enter\".\n el.classList.remove('leave');\n // força reflow pra garantir a transição\n void el.offsetWidth;\n el.classList.add('enter');\n }\n\n // acessibilidade: foco no primeiro botão/item do menu\n queueMicrotask(() => {\n const first = this.overlayRef!.overlayElement.querySelector<HTMLElement>(\n 'button,[href],[tabindex]:not([tabindex=\"-1\"])',\n );\n first?.focus();\n });\n }\n\n private async close() {\n if (!this.overlayRef?.hasAttached()) return;\n\n const el = this.overlayRef.overlayElement;\n\n if (this.fade()) {\n // troca enter -> leave e espera transição terminar\n el.classList.remove('enter');\n el.classList.add('leave');\n\n await this.waitTransitionEnd(el, this.fadeDuration());\n }\n\n this.overlayRef.detach();\n }\n\n private waitTransitionEnd(el: HTMLElement, maxMs: number) {\n return new Promise<void>((resolve) => {\n let done = false;\n const off = () => {\n if (done) return;\n done = true;\n el.removeEventListener('transitionend', onEnd);\n resolve();\n };\n const onEnd = (e: Event) => {\n // garante que veio do opacity/transform do próprio elemento\n if (e.target === el) off();\n };\n el.addEventListener('transitionend', onEnd, { once: true });\n // fallback se o evento não disparar\n setTimeout(off, maxMs + 50);\n });\n }\n\n private cleanup() {\n const el = this.overlayRef?.overlayElement;\n if (el) {\n el.classList.remove('enter', 'leave');\n }\n }\n\n private buildPositions(\n preset: PositionPreset,\n ox: number,\n oy: number,\n ): ConnectedPosition[] {\n // helpers\n const P = (\n originX: 'start' | 'center' | 'end',\n originY: 'top' | 'center' | 'bottom',\n overlayX: 'start' | 'center' | 'end',\n overlayY: 'top' | 'center' | 'bottom',\n offsetX = 0,\n offsetY = 0,\n ): ConnectedPosition => ({\n originX,\n originY,\n overlayX,\n overlayY,\n offsetX,\n offsetY,\n });\n\n // presets principais\n const map: Record<PositionPreset, ConnectedPosition[]> = {\n // TOP\n 'top-left': [\n P('start', 'top', 'start', 'bottom', ox, -oy),\n P('start', 'bottom', 'start', 'top', ox, oy),\n P('end', 'top', 'end', 'bottom', ox, -oy),\n P('center', 'top', 'center', 'bottom', ox, -oy),\n ],\n 'top-center': [\n P('center', 'top', 'center', 'bottom', ox, -oy),\n P('center', 'bottom', 'center', 'top', ox, oy),\n P('start', 'top', 'start', 'bottom', ox, -oy),\n P('end', 'top', 'end', 'bottom', ox, -oy),\n ],\n 'top-right': [\n P('end', 'top', 'end', 'bottom', ox, -oy),\n P('end', 'bottom', 'end', 'top', ox, oy),\n P('start', 'top', 'start', 'bottom', ox, -oy),\n P('center', 'top', 'center', 'bottom', ox, -oy),\n ],\n\n // BOTTOM\n 'bottom-left': [\n P('start', 'bottom', 'start', 'top', ox, oy),\n P('start', 'top', 'start', 'bottom', ox, -oy),\n P('end', 'bottom', 'end', 'top', ox, oy),\n P('center', 'bottom', 'center', 'top', ox, oy),\n ],\n 'bottom-center': [\n P('center', 'bottom', 'center', 'top', ox, oy),\n P('center', 'top', 'center', 'bottom', ox, -oy),\n P('start', 'bottom', 'start', 'top', ox, oy),\n P('end', 'bottom', 'end', 'top', ox, oy),\n ],\n 'bottom-right': [\n P('end', 'bottom', 'end', 'top', ox, oy),\n P('end', 'top', 'end', 'bottom', ox, -oy),\n P('start', 'bottom', 'start', 'top', ox, oy),\n P('center', 'bottom', 'center', 'top', ox, oy),\n ],\n\n // LEFT\n 'left-top': [\n P('start', 'top', 'end', 'top', -ox, oy),\n P('start', 'center', 'end', 'center', -ox, 0),\n P('start', 'bottom', 'end', 'bottom', -ox, -oy),\n P('end', 'top', 'start', 'top', ox, oy), // fallback espelha para direita\n ],\n 'left-center': [\n P('start', 'center', 'end', 'center', -ox, 0),\n P('start', 'top', 'end', 'top', -ox, oy),\n P('start', 'bottom', 'end', 'bottom', -ox, -oy),\n P('end', 'center', 'start', 'center', ox, 0),\n ],\n 'left-bottom': [\n P('start', 'bottom', 'end', 'bottom', -ox, -oy),\n P('start', 'center', 'end', 'center', -ox, 0),\n P('start', 'top', 'end', 'top', -ox, oy),\n P('end', 'bottom', 'start', 'bottom', ox, -oy),\n ],\n\n // RIGHT\n 'right-top': [\n P('end', 'top', 'start', 'top', ox, oy),\n P('end', 'center', 'start', 'center', ox, 0),\n P('end', 'bottom', 'start', 'bottom', ox, -oy),\n P('start', 'top', 'end', 'top', -ox, oy), // fallback espelha para esquerda\n ],\n 'right-center': [\n P('end', 'center', 'start', 'center', ox, 0),\n P('end', 'top', 'start', 'top', ox, oy),\n P('end', 'bottom', 'start', 'bottom', ox, -oy),\n P('start', 'center', 'end', 'center', -ox, 0),\n ],\n 'right-bottom': [\n P('end', 'bottom', 'start', 'bottom', ox, -oy),\n P('end', 'center', 'start', 'center', ox, 0),\n P('end', 'top', 'start', 'top', ox, oy),\n P('start', 'bottom', 'end', 'bottom', -ox, -oy),\n ],\n };\n\n return map[preset] ?? map['bottom-left'];\n }\n\n ngOnDestroy() {\n this.close();\n this.subs.unsubscribe();\n this.overlayRef?.dispose();\n }\n}\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-menu',\r\n imports: [],\r\n template: '<ng-content/>',\r\n styles: [\r\n `\r\n :host {\r\n z-index: 5;\r\n padding: 1.4rem;\r\n background-color: #fff;\r\n border-radius: var(--radius);\r\n font-size: 1.4rem;\r\n box-shadow: var(--shadow-default);\r\n border: 1px solid var(--gray-400);\r\n top: 2.9rem;\r\n right: 0;\r\n min-width: 14rem;\r\n max-width: 240px;\r\n\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: 0.4rem;\r\n }\r\n `,\r\n ],\r\n})\r\nexport class MenuComponent {}\r\n","import { Component, input } from '@angular/core';\r\nimport { SvgComponent } from '../svg';\r\n\r\n@Component({\r\n selector: 'button[s4yMenuItem], a[s4yMenuItem]',\r\n standalone: true,\r\n imports: [SvgComponent],\r\n template: `\r\n @if (iconUri()) {\r\n <s4y-svg [size]=\"18\" [src]=\"iconUri()\"></s4y-svg>\r\n }\r\n\r\n @if (imageUri()) {\r\n <img [src]=\"imageUri()\" alt=\"icon\" width=\"18\" height=\"18\" />\r\n }\r\n <ng-content></ng-content>\r\n `,\r\n styles: [\r\n `\r\n :host {\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n gap: 0.8rem;\r\n padding: 0 0.4rem;\r\n min-height: 4rem;\r\n width: 100%;\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n }\r\n `,\r\n ],\r\n host: {\r\n 'aria-label': 'Mais informações',\r\n },\r\n})\r\nexport class MenuItemComponent {\r\n iconUri = input<string>();\r\n imageUri = input<string>();\r\n}\r\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport {\r\n Component,\r\n ElementRef,\r\n signal,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { SvgComponent } from '../../../svg';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-image-preview',\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './image-preview.component.html',\r\n styleUrl: './image-preview.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ImagePreviewComponent {\r\n imgEl = viewChild<ElementRef<HTMLImageElement>>('imgEl');\r\n\r\n src = '';\r\n name: string | undefined;\r\n overlayRef!: OverlayRef;\r\n\r\n zoom = signal(1);\r\n\r\n private readonly MIN_ZOOM = 0.5;\r\n private readonly MAX_ZOOM = 3;\r\n private readonly ZOOM_STEP = 0.25;\r\n\r\n protected fullScreenImage = signal<boolean>(false);\r\n\r\n protected toggleFullscreen() {\r\n this.fullScreenImage.update((value) => !value);\r\n }\r\n\r\n protected zoomOut() {\r\n const currentZoom = this.zoom();\r\n const newZoom = Math.max(this.MIN_ZOOM, currentZoom - this.ZOOM_STEP);\r\n this.zoom.set(newZoom);\r\n this.applyZoom();\r\n }\r\n\r\n protected zoomIn() {\r\n const currentZoom = this.zoom();\r\n const newZoom = Math.min(this.MAX_ZOOM, currentZoom + this.ZOOM_STEP);\r\n this.zoom.set(newZoom);\r\n this.applyZoom();\r\n }\r\n\r\n protected resetZoom() {\r\n this.zoom.set(1);\r\n this.applyZoom();\r\n }\r\n\r\n private applyZoom() {\r\n const img = this.imgEl()?.nativeElement;\r\n if (img) {\r\n img.style.transform = `scale(${this.zoom()})`;\r\n }\r\n }\r\n\r\n protected close() {\r\n if (!this.overlayRef) return;\r\n\r\n this.overlayRef.dispose();\r\n }\r\n}\r\n","<div class=\"s4y-image-preview-container\">\r\n <div class=\"s4y-preview-controls\">\r\n <div class=\"flex gap-1 align-center\">\r\n <button\r\n class=\"btn-close s4y-action-btn gray-4\"\r\n type=\"button\"\r\n (click)=\"close()\"\r\n >\r\n ✕\r\n </button>\r\n @if (name) {\r\n <p class=\"medium-text-regular fw-400\" style=\"color: var(--gray-400)\">\r\n {{ name }}\r\n </p>\r\n }\r\n </div>\r\n\r\n <div class=\"flex gap-2\">\r\n <button class=\"s4y-action-btn\" type=\"button\" (click)=\"zoomOut()\">\r\n <ng-container [ngTemplateOutlet]=\"zoomOutSvg\" />\r\n </button>\r\n <button class=\"s4y-action-btn\" type=\"button\" (click)=\"zoomIn()\">\r\n <ng-container [ngTemplateOutlet]=\"zoomInSvg\" />\r\n </button>\r\n <button class=\"s4y-action-btn\" type=\"button\" (click)=\"resetZoom()\">\r\n <ng-container [ngTemplateOutlet]=\"refreshSvg\" />\r\n </button>\r\n\r\n <button class=\"s4y-action-btn\" type=\"button\" (click)=\"toggleFullscreen()\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"\r\n fullScreenImage() ? fullScreenExitSvg : fullscreenSvg\r\n \"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"s4y-preview-img-container\">\r\n <div class=\"s4y-img-preview\" [class.full-screen-img]=\"fullScreenImage()\">\r\n <img\r\n #imgEl\r\n style=\"transform-origin: center center\"\r\n [src]=\"src\"\r\n alt=\"Imagem\"\r\n (dblclick)=\"resetZoom()\"\r\n />\r\n </div>\r\n\r\n <div class=\"s4y-preview-clickable\" (click)=\"close()\"></div>\r\n </div>\r\n</div>\r\n\r\n<!-- SVG -->\r\n\r\n<ng-template #fullscreenSvg>\r\n <svg\r\n width=\"24px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M8 3V5H4V9H2V3H8ZM2 21V15H4V19H8V21H2ZM22 21H16V19H20V15H22V21ZM22 9H20V5H16V3H22V9Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #fullScreenExitSvg>\r\n <svg\r\n width=\"24px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M18 7H22V9H16V3H18V7ZM8 9H2V7H6V3H8V9ZM18 17V21H16V15H22V17H18ZM8 15V21H6V17H2V15H8Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #zoomInSvg>\r\n <svg\r\n width=\"24px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M18.031 16.6168L22.3137 20.8995L20.8995 22.3137L16.6168 18.031C15.0769 19.263 13.124 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2C15.968 2 20 6.032 20 11C20 13.124 19.263 15.0769 18.031 16.6168ZM16.0247 15.8748C17.2475 14.6146 18 12.8956 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18C12.8956 18 14.6146 17.2475 15.8748 16.0247L16.0247 15.8748ZM10 10V7H12V10H15V12H12V15H10V12H7V10H10Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n<ng-template #zoomOutSvg>\r\n <svg\r\n width=\"24px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M18.031 16.6168L22.3137 20.8995L20.8995 22.3137L16.6168 18.031C15.0769 19.263 13.124 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2C15.968 2 20 6.032 20 11C20 13.124 19.263 15.0769 18.031 16.6168ZM16.0247 15.8748C17.2475 14.6146 18 12.8956 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18C12.8956 18 14.6146 17.2475 15.8748 16.0247L16.0247 15.8748ZM7 10H15V12H7V10Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #refreshSvg>\r\n <svg\r\n width=\"24px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M5.46257 4.43262C7.21556 2.91688 9.5007 2 12 2C17.5228 2 22 6.47715 22 12C22 14.1361 21.3302 16.1158 20.1892 17.7406L17 12H20C20 7.58172 16.4183 4 12 4C9.84982 4 7.89777 4.84827 6.46023 6.22842L5.46257 4.43262ZM18.5374 19.5674C16.7844 21.0831 14.4993 22 12 22C6.47715 22 2 17.5228 2 12C2 9.86386 2.66979 7.88416 3.8108 6.25944L7 12H4C4 16.4183 7.58172 20 12 20C14.1502 20 16.1022 19.1517 17.5398 17.7716L18.5374 19.5674Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n","import { Overlay, OverlayRef } from \"@angular/cdk/overlay\";\r\nimport { ComponentPortal } from \"@angular/cdk/portal\";\r\nimport { inject, Injectable } from \"@angular/core\";\r\nimport { filter } from \"rxjs\";\r\nimport { ImageComponent } from \"./image.component\";\r\nimport { ImagePreviewComponent } from \"./components/image-preview/image-preview.component\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ImageService {\r\n private _overlay = inject(Overlay);\r\n private _overlayRef!: OverlayRef;\r\n\r\n open(fileSrc: string, fileName?: string) {\r\n const portal = this.createPortal();\r\n this._overlayRef = this.createOverlay();\r\n\r\n const componentRef = this._overlayRef.attach(portal);\r\n\r\n componentRef.instance.src = fileSrc;\r\n componentRef.instance.name = fileName;\r\n componentRef.instance.overlayRef = this._overlayRef;\r\n\r\n let sub = this._overlayRef.backdropClick().subscribe((_) => {\r\n sub.unsubscribe();\r\n this.close();\r\n });\r\n\r\n let sub2 = this._overlayRef\r\n .keydownEvents()\r\n .pipe(filter((key) => key.code === 'Escape'))\r\n .subscribe((_) => {\r\n sub2.unsubscribe();\r\n this.close();\r\n });\r\n\r\n return this._overlayRef;\r\n }\r\n\r\n close() {\r\n this._overlayRef.dispose();\r\n }\r\n\r\n private createOverlay() {\r\n const overlay = this._overlay.create({\r\n hasBackdrop: true,\r\n backdropClass: ['s4y-overlay-bg'],\r\n scrollStrategy: this._overlay.scrollStrategies.block(),\r\n panelClass: ['s4y-preview-pane'],\r\n disposeOnNavigation: true,\r\n });\r\n\r\n overlay.backdropClick().subscribe(() => overlay.dispose());\r\n\r\n return overlay;\r\n }\r\n\r\n private createPortal() {\r\n return new ComponentPortal(ImagePreviewComponent);\r\n }\r\n\r\n}\r\n","import {\n AfterViewInit,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n input,\n OnInit,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ImageService } from './image.service';\nimport { fromEvent } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'img[s4yImage]',\n template: `<ng-content />`,\n styleUrl: './image.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ImageComponent implements OnInit, AfterViewInit {\n private readonly imageService = inject(ImageService);\n private readonly elRef = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly destroy = inject(DestroyRef);\n\n constructor() {}\n\n src = input('', {\n alias: 's4ySrc',\n });\n\n innerTpl = input<TemplateRef<any>>();\n\n fileName = input<string | undefined>();\n disablePreview = input<boolean>(false);\n withOverlay = input<boolean>(false);\n\n private wrapper!: HTMLElement;\n private overlayEl!: HTMLElement;\n\n ngOnInit() {\n this.configureWrapperElement();\n this.configureOverlay();\n this.configureEyeSvg();\n this.configureImageSrc();\n }\n\n ngAfterViewInit(): void {\n this.onShowOverlay();\n }\n\n private configureWrapperElement() {\n const img = this.ImageEl;\n\n if (!img) return;\n\n const parent = img.parentNode;\n\n this.wrapper = this.createElement('span');\n\n this.addClass(this.wrapper, 's4y-img-wrapper');\n this.renderer.setStyle(this.wrapper, 'position', 'relative');\n this.renderer.setStyle(this.wrapper, 'display', 'inline-block');\n\n this.renderer.insertBefore(parent, this.wrapper, img);\n this.renderer.removeChild(parent, img);\n this.renderer.appendChild(this.wrapper, img);\n\n const click$ = fromEvent(this.wrapper, 'click');\n\n click$.pipe(takeUntilDestroyed(this.destroy)).subscribe(() => {\n this.showPreview();\n });\n }\n\n private configureOverlay() {\n if (this.withOverlay()) {\n this.overlayEl = this.createElement('div');\n this.renderer.addClass(this.overlayEl, 's4y-img-overlay');\n this.renderer.appendChild(this.wrapper, this.overlayEl);\n }\n }\n\n private configureEyeSvg() {\n const overlay = this.overlayEl;\n\n if (!overlay) return;\n\n const svgContainer = this.createElement('span');\n svgContainer.innerHTML = this.eyeSvg;\n\n this.renderer.appendChild(overlay, svgContainer);\n }\n\n private configureImageSrc() {\n const imgEl = this.ImageEl;\n const src = this.src();\n\n if (!imgEl || !src) return;\n\n this.renderer.setAttribute(imgEl, 'src', src);\n }\n\n private onShowOverlay() {\n const wrapper = this.wrapper;\n const overlay = this.overlayEl;\n\n if (!wrapper || !this.withOverlay() || !overlay) return;\n\n const wrapperMouseOver$ = fromEvent(this.wrapper, 'mouseover');\n const wrapperMouseLeave$ = fromEvent(this.wrapper, 'mouseleave');\n\n wrapperMouseOver$.pipe(takeUntilDestroyed(this.destroy)).subscribe((x) => {\n this.addClass(overlay, 'active');\n });\n\n wrapperMouseLeave$.pipe(takeUntilDestroyed(this.destroy)).subscribe((x) => {\n this.removeClass(overlay, 'active');\n });\n }\n\n private createElement(element: string): HTMLElement {\n return this.renderer.createElement(element);\n }\n\n private addClass(el: HTMLElement, className: string) {\n return this.renderer.addClass(el, className);\n }\n\n private removeClass(el: HTMLElement, className: string) {\n return this.renderer.removeClass(el, className);\n }\n\n private showPreview() {\n this.imageService.open(this.src(), this.fileName());\n }\n\n get eyeSvg() {\n return `<svg width=\"24px\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"#fff\"><path d=\"M12.0003 3C17.3924 3 21.8784 6.87976 22.8189 12C21.8784 17.1202 17.3924 21 12.0003 21C6.60812 21 2.12215 17.1202 1.18164 12C2.12215 6.87976 6.60812 3 12.0003 3ZM12.0003 19C16.2359 19 19.8603 16.052 20.7777 12C19.8603 7.94803 16.2359 5 12.0003 5C7.7646 5 4.14022 7.94803 3.22278 12C4.14022 16.052 7.7646 19 12.0003 19ZM12.0003 16.5C9.51498 16.5 7.50026 14.4853 7.50026 12C7.50026 9.51472 9.51498 7.5 12.0003 7.5C14.4855 7.5 16.5003 9.51472 16.5003 12C16.5003 14.4853 14.4855 16.5 12.0003 16.5ZM12.0003 14.5C13.381 14.5 14.5003 13.3807 14.5003 12C14.5003 10.6193 13.381 9.5 12.0003 9.5C10.6196 9.5 9.50026 10.6193 9.50026 12C9.50026 13.3807 10.6196 14.5 12.0003 14.5Z\"></path></svg>`;\n }\n\n get ImageEl() {\n return this.elRef.nativeElement as HTMLElement | null;\n }\n}\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dynamic-tooltip',\r\n imports: [],\r\n templateUrl: './dynamic-tooltip.component.html',\r\n styleUrl: './dynamic-tooltip.component.scss'\r\n})\r\nexport class DynamicTooltipComponent {\r\n text: string = \"\";\r\n}\r\n","<div class=\"s4y-tooltip-container\">\r\n <p>\r\n {{ text }}\r\n </p>\r\n</div>\r\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { DynamicTooltipComponent } from './dynamic-tooltip.component';\r\n\r\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';\r\n\r\n@Directive({\r\n selector: '[s4yDynamicTooltip]',\r\n})\r\nexport class DynamicTooltipDirective {\r\n private readonly overlay = inject(Overlay);\r\n private readonly elRef = inject(ElementRef<HTMLElement>);\r\n\r\n overlayRef?: OverlayRef;\r\n\r\n tooltipContent = input.required<string>({\r\n alias: 's4yDynamicTooltip',\r\n });\r\n\r\n placement = input<TooltipPlacement>('top');\r\n\r\n private tooltipPortal = new ComponentPortal(DynamicTooltipComponent);\r\n\r\n private onOverlayEnter?: () => void;\r\n private onOverlayLeave?: (e: MouseEvent) => void;\r\n\r\n constructor() {\r\n }\r\n\r\n get host() {\r\n return this.elRef.nativeElement as ElementRef;\r\n }\r\n\r\n @HostListener('mouseenter')\r\n shown() {\r\n this.overlayRef?.dispose();\r\n this.overlayRef = this.createOverlay();\r\n\r\n const compRef = this.overlayRef.attach(this.tooltipPortal);\r\n compRef.instance.text = this.tooltipContent();\r\n this.overlayRef.updatePosition();\r\n\r\n this.bindOverlayHoverGuards();\r\n }\r\n\r\n @HostListener('mouseleave', ['$event'])\r\n hide(e: MouseEvent) {\r\n // Se o mouse saiu do host indo PARA o overlay, não fecha\r\n const next = e.relatedTarget as Node | null;\r\n if (next && this.overlayRef?.overlayElement.contains(next)) return;\r\n\r\n this.dispose();\r\n }\r\n\r\n private bindOverlayHoverGuards() {\r\n if (!this.overlayRef) return;\r\n\r\n const overlayEl = this.overlayRef.overlayElement;\r\n\r\n // remove listeners antigos (se existirem)\r\n this.unbindOverlayHoverGuards();\r\n\r\n this.onOverlayEnter = () => {\r\n // não faz nada, apenas impede fechamento “por acidente”\r\n };\r\n\r\n this.onOverlayLeave = (e: MouseEvent) => {\r\n // Se saiu do overlay indo PARA o host, não fecha\r\n const next = e.relatedTarget as Node | null;\r\n if (next && this.elRef.nativeElement.contains(next)) return;\r\n\r\n this.dispose();\r\n };\r\n\r\n overlayEl.addEventListener('mouseenter', this.onOverlayEnter);\r\n overlayEl.addEventListener('mouseleave', this.onOverlayLeave);\r\n }\r\n\r\n private unbindOverlayHoverGuards() {\r\n if (!this.overlayRef) return;\r\n const overlayEl = this.overlayRef.overlayElement;\r\n\r\n if (this.onOverlayEnter)\r\n overlayEl.removeEventListener('mouseenter', this.onOverlayEnter);\r\n if (this.onOverlayLeave)\r\n overlayEl.removeEventListener('mouseleave', this.onOverlayLeave);\r\n\r\n this.onOverlayEnter = undefined;\r\n this.onOverlayLeave = undefined;\r\n }\r\n\r\n private createOverlay(): OverlayRef {\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.elRef)\r\n .withFlexibleDimensions(false)\r\n .withPush(true)\r\n .withViewportMargin(8)\r\n .withPositions(this.getPositionsByPlacement(this.placement()));\r\n\r\n return this.overlay.create({\r\n hasBackdrop: false,\r\n disposeOnNavigation: true,\r\n scrollStrategy: this.overlay.scrollStrategies.close(),\r\n positionStrategy,\r\n panelClass: 's4y-tooltip-panel',\r\n });\r\n }\r\n\r\n private getPositionsByPlacement(p: TooltipPlacement): ConnectedPosition[] {\r\n const gap = 8;\r\n\r\n const map: Record<TooltipPlacement, ConnectedPosition[]> = {\r\n top: [\r\n {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: -gap,\r\n },\r\n {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: gap,\r\n },\r\n ],\r\n bottom: [\r\n {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: gap,\r\n },\r\n {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: -gap,\r\n },\r\n ],\r\n left: [\r\n {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n offsetX: -gap,\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n offsetX: gap,\r\n },\r\n ],\r\n right: [\r\n {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n offsetX: gap,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n offsetX: -gap,\r\n },\r\n ],\r\n };\r\n\r\n return map[p];\r\n }\r\n\r\n private dispose() {\r\n this.unbindOverlayHoverGuards();\r\n this.overlayRef?.dispose();\r\n this.overlayRef = undefined;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.dispose();\r\n }\r\n}\r\n","import { Component, contentChild, input, TemplateRef } from '@angular/core';\r\nimport { SvgComponent } from '../svg';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { DynamicTooltipDirective, TooltipPlacement } from '../dynamic-tooltip/dynamic-tooltip.directive';\r\n\r\nexport interface ISummaryCardProps {\r\n iconUri: string;\r\n iconColor: string;\r\n withIcon: boolean;\r\n iconSize: number;\r\n iconBackgroundColor: string;\r\n withFooter: boolean;\r\n label: string;\r\n value: string;\r\n withTooltip: boolean;\r\n tooltipContent: string;\r\n tooltipPlacement: TooltipPlacement;\r\n}\r\n\r\n@Component({\r\n selector: 's4y-summary-card',\r\n imports: [SvgComponent, NgTemplateOutlet, DynamicTooltipDirective],\r\n templateUrl: './summary-card.component.html',\r\n styleUrl: './summary-card.component.scss',\r\n})\r\nexport class SummaryCardComponent {\r\n props = input<Partial<ISummaryCardProps>>({\r\n withFooter: false,\r\n withIcon: false,\r\n withTooltip: false,\r\n iconSize: 18,\r\n iconBackgroundColor: '#4b5563',\r\n });\r\n\r\n footerTpl = contentChild<TemplateRef<any>>('footerTpl');\r\n}\r\n","@let summaryProps = props();\r\n\r\n<div class=\"s4y-summary-card-header\">\r\n <div class=\"s4y-summary-card-header__content\">\r\n <p class=\"small-text-regular gray-7\">\r\n {{ summaryProps.label }}\r\n </p>\r\n\r\n @if (summaryProps.withTooltip) {\r\n <svg\r\n [s4yDynamicTooltip]=\"summaryProps.tooltipContent ?? ''\"\r\n [placement]=\"summaryProps.tooltipPlacement ?? 'right'\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n width=\"14\"\r\n height=\"14\"\r\n >\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11 7H13V9H11V7ZM11 11H13V17H11V11Z\"\r\n ></path>\r\n </svg>\r\n }\r\n </div>\r\n @let showIcon = summaryProps.withIcon && !!summaryProps.iconUri;\r\n\r\n @if (showIcon) {\r\n <div\r\n class=\"s4y-summary-card-icon\"\r\n [style.background]=\"summaryProps.iconBackgroundColor ?? '#4b5563'\"\r\n >\r\n <s4y-svg\r\n [size]=\"summaryProps.iconSize ?? 18\"\r\n [color]=\"summaryProps.iconColor || '#fff'\"\r\n [src]=\"summaryProps.iconUri\"\r\n ></s4y-svg>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"s4y-summary-card-body\">\r\n <p class=\"medium-text-bold gray-9\">\r\n {{ summaryProps.value }}\r\n </p>\r\n</div>\r\n\r\n@let footerTemplate = footerTpl();\r\n\r\n@if (summaryProps.withFooter && footerTemplate) {\r\n <div class=\"s4y-summary-card-footer\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n}\r\n","import {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nexport const selectMultiAnim = trigger('selectMultiAnim', [\r\n // entra\r\n transition(':enter', [\r\n style({ opacity: 0, height: '0' }),\r\n animate(\r\n '160ms cubic-bezier(0.2, 0, 0, 1)',\r\n style({ opacity: 1, transform: 'scaleY(1)', height: '*' }),\r\n ),\r\n ]),\r\n // sai\r\n transition(':leave', [\r\n style({ height: '*' }),\r\n animate(\r\n '120ms cubic-bezier(0.4, 0, 1, 1)',\r\n style({ opacity: 0, height: '0' }),\r\n ),\r\n ]),\r\n]);\r\n\r\nexport const arrowAnim = trigger('arrowAnim', [\r\n state('closed', style({ transform: 'rotate(0deg)' })),\r\n state('open', style({ transform: 'rotate(180deg)' })),\r\n transition('closed <=> open', animate('140ms ease')),\r\n]);\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, computed, effect, ElementRef, forwardRef, HostListener, inject, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\r\nimport { selectMultiAnim } from './select-multi.animation';\r\nimport { SpinnerComponent } from '../spinner/spinner.component';\r\n\r\nexport type CompareFn<T> = (a: T, b: T) => boolean;\r\nexport type DisplayFn<T> = (o: T) => string;\r\nexport type SearchFn<T> = (query: string, option: T) => boolean;\r\n\r\n@Component({\r\n selector: 's4y-select-multi',\r\n imports: [CommonModule, CheckboxComponent, SpinnerComponent],\r\n templateUrl: './select-multi.component.html',\r\n styleUrl: './select-multi.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => SelectMultiComponent),\r\n },\r\n ],\r\n host: {\r\n '[style.maxWidth]': 'maxScreen() ? \"100%\" : \"32rem\"',\r\n '[attr.tabindex]': '0',\r\n '[class.disabled]': 'disabled()',\r\n '[attr.aria-disabled]': 'disabled()',\r\n '[attr.role]': '\"combobox\"',\r\n '[attr.aria-expanded]': 'opened()',\r\n '[attr.aria-haspopup]': '\"listbox\"',\r\n },\r\n animations: [selectMultiAnim],\r\n})\r\nexport class SelectMultiComponent<T> implements ControlValueAccessor {\r\n private readonly hostEl = inject(ElementRef<HTMLElement>);\r\n\r\n label = input<string>('');\r\n options = input.required<T[]>();\r\n\r\n placeholder = input<string>('Selecione...');\r\n\r\n compareWith = input<CompareFn<T>>((a, b) => a === b);\r\n displayWith = input<DisplayFn<T>>((o) => String(o));\r\n\r\n opened = model<boolean>(false);\r\n search = model<string>('');\r\n disabled = signal<boolean>(false);\r\n\r\n withSearch = input<boolean>(false);\r\n maxScreen = input<boolean>(false);\r\n\r\n withCheckAll = input<boolean>(false);\r\n\r\n emptyMessage = input<string>('Nenhum resultado encontrado.');\r\n\r\n loading = input<boolean>(false);\r\n\r\n searchFn = input<SearchFn<T> | null>(null);\r\n\r\n preserveSelectionOnFilter = input<boolean>(false);\r\n\r\n private _value = signal<T[]>([]);\r\n readonly value = computed(() => this._value());\r\n\r\n readonly filteredOptions = computed<T[]>(() => {\r\n const query = this.search().trim().toLowerCase();\r\n const opts = this.options() ?? [];\r\n if (!query) return opts;\r\n\r\n const custom = this.searchFn();\r\n if (custom) return opts.filter((o) => custom(query, o));\r\n\r\n return opts.filter((o) =>\r\n this.displayWith()(o).toLowerCase().includes(query),\r\n );\r\n });\r\n\r\n readonly allSelected = computed<boolean>(() => {\r\n const opts = this.options() ?? [];\r\n if (!opts.length) return false;\r\n return opts.every((o) => this.isSelected(o));\r\n });\r\n\r\n readonly someSelected = computed<boolean>(() => {\r\n const opts = this.options() ?? [];\r\n return !this.allSelected() && opts.some((o) => this.isSelected(o));\r\n });\r\n\r\n private _onChange: (val: T[]) => void = () => {};\r\n private _onTouched: () => void = () => {};\r\n\r\n writeValue(value: T[] | null | undefined): void {\r\n this._value.set(Array.isArray(value) ? value.slice() : []);\r\n }\r\n\r\n registerOnChange(fn: (val: T[]) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n if (isDisabled) this.opened.set(false);\r\n }\r\n\r\n toggleOpen(): void {\r\n if (this.disabled()) return;\r\n this.opened.update((v) => !v);\r\n if (!this.opened()) this._onTouched();\r\n }\r\n\r\n isSelected = (opt: T): boolean =>\r\n this._value().some((v) => this.compareWith()(v, opt));\r\n\r\n toggleOption(opt: T): void {\r\n if (this.disabled()) return;\r\n\r\n const compareWith = this.compareWith();\r\n const current = this._value();\r\n const exists = current.findIndex((v) => compareWith(v, opt)) > -1;\r\n\r\n const next = exists\r\n ? current.filter((v) => !compareWith(v, opt))\r\n : [...current, opt];\r\n\r\n this._value.set(next);\r\n this._onChange(next);\r\n }\r\n\r\n clear(): void {\r\n if (this.disabled()) return;\r\n this._value.set([]);\r\n this._onChange([]);\r\n }\r\n\r\n selectAll(): void {\r\n if (this.disabled()) return;\r\n const all = this.options() ?? [];\r\n this._value.set(all.slice());\r\n this._onChange(all.slice());\r\n }\r\n\r\n toggleSelectAll(): void {\r\n this.allSelected() ? this.clear() : this.selectAll();\r\n }\r\n\r\n removeChip(opt: T): void {\r\n if (this.disabled()) return;\r\n this.toggleOption(opt);\r\n }\r\n\r\n onBlurContainer(e: FocusEvent) {}\r\n\r\n close() {\r\n if (this.opened()) {\r\n this.opened.set(false);\r\n this._onTouched?.();\r\n }\r\n }\r\n\r\n @HostListener('document:mousedown', ['$event'])\r\n onDocumentMouseDown(e: MouseEvent) {\r\n if (!this.opened() || this.disabled()) return;\r\n\r\n const target = e.target as Node | null;\r\n const host = this.hostEl.nativeElement;\r\n if (target && !host.contains(target)) {\r\n this.close();\r\n }\r\n }\r\n\r\n protected onSearch(event: Event) {\r\n const target = (event.target as HTMLInputElement).value;\r\n this.search.set(target);\r\n }\r\n\r\n _syncEffect = effect(() => {\r\n if (this.preserveSelectionOnFilter()) return; // não remove o que sumiu das options\r\n\r\n const opts = this.options() ?? [];\r\n const cmp = this.compareWith();\r\n const current = this._value();\r\n const stillValid = current.filter((v) => opts.some((o) => cmp(o, v)));\r\n if (stillValid.length !== current.length) {\r\n this._value.set(stillValid);\r\n this._onChange(stillValid);\r\n }\r\n });\r\n}\r\n","<label class=\"s4y-select-label\">\r\n {{ label() }}\r\n</label>\r\n\r\n<div class=\"s4y-select\">\r\n <!-- Campo principal -->\r\n <button\r\n type=\"button\"\r\n class=\"s4y-select-field\"\r\n [attr.aria-expanded]=\"opened()\"\r\n [disabled]=\"disabled()\"\r\n (click)=\"toggleOpen()\"\r\n >\r\n <ng-container *ngIf=\"value().length; else placeholderTpl\">\r\n <div class=\"chips\">\r\n <span class=\"chip\" *ngFor=\"let v of value()\">\r\n {{ displayWith()(v) }}\r\n <button\r\n type=\"button\"\r\n class=\"chip-remove\"\r\n (click)=\"$event.stopPropagation(); removeChip(v)\"\r\n [disabled]=\"disabled()\"\r\n aria-label=\"Remover\"\r\n >\r\n ×\r\n </button>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <ng-template #placeholderTpl>\r\n <span>{{ placeholder() }}</span>\r\n </ng-template>\r\n <div class=\"arrow\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"opened() ? arrowUp : arrowDown\"\r\n ></ng-container>\r\n </div>\r\n </button>\r\n\r\n <div class=\"s4y-select-dropdown-container\">\r\n <div\r\n @selectMultiAnim\r\n class=\"s4y-select-dropdown\"\r\n [class.gap-1]=\"filteredOptions().length\"\r\n *ngIf=\"opened()\"\r\n >\r\n <div class=\"dropdown-actions\">\r\n @if (withSearch()) {\r\n <label class=\"s4y-dropdown-search\">\r\n <input\r\n type=\"text\"\r\n class=\"search\"\r\n [placeholder]=\"'Buscar...'\"\r\n [value]=\"search()\"\r\n (input)=\"onSearch($event)\"\r\n />\r\n <ng-container [ngTemplateOutlet]=\"searchIcon\"></ng-container>\r\n </label>\r\n }\r\n\r\n @if (withCheckAll()) {\r\n <label class=\"check-all\">\r\n <input\r\n s4yCheckbox\r\n type=\"checkbox\"\r\n [checked]=\"allSelected()\"\r\n [indeterminate]=\"someSelected()\"\r\n (change)=\"toggleSelectAll()\"\r\n />\r\n Marcar todos\r\n </label>\r\n }\r\n </div>\r\n\r\n @if (loading()) {\r\n <div class=\"s4y-loading flex align-center justify-center\">\r\n <s4y-spinner size=\"mini\"></s4y-spinner>\r\n </div>\r\n } @else {\r\n <div class=\"options\">\r\n <button\r\n type=\"button\"\r\n class=\"option\"\r\n *ngFor=\"let opt of filteredOptions()\"\r\n (click)=\"toggleOption(opt)\"\r\n [class.selected]=\"isSelected(opt)\"\r\n >\r\n <input\r\n s4yCheckbox\r\n type=\"checkbox\"\r\n [checked]=\"isSelected(opt)\"\r\n tabindex=\"-1\"\r\n />\r\n <span class=\"text-small\">{{ displayWith()(opt) }}</span>\r\n </button>\r\n\r\n <div class=\"no-results\" *ngIf=\"!filteredOptions().length\">\r\n {{ emptyMessage() }}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <ng-content select=\"s4y-error-message\"></ng-content>\r\n\r\n <!-- Dropdown -->\r\n</div>\r\n\r\n<!-- Arros -->\r\n\r\n<ng-template #arrowDown>\r\n <svg\r\n class=\"s4y-select__svg\"\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrowUp>\r\n <svg\r\n class=\"s4y-select__svg\"\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 10.8284L7.0502 15.7782L5.63599 14.364L11.9999 8L18.3639 14.364L16.9497 15.7782L11.9999 10.8284Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #searchIcon>\r\n <svg\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11 2C15.968 2 20 6.032 20 11C20 15.968 15.968 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2ZM11 18C14.8675 18 18 14.8675 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18ZM19.4853 18.0711L22.3137 20.8995L20.8995 22.3137L18.0711 19.4853L19.4853 18.0711Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n","import { InjectionToken } from '@angular/core';\r\nimport { DynamicDialogOptions } from './dynamic-dialog.service';\r\nimport { DynamicDialogRef } from './dynamic-dialog.ref';\r\n\r\nexport const DYNAMIC_DIALOG_DATA = new InjectionToken<any>(\r\n 'DYNAMIC_DIALOG_DATA',\r\n);\r\n\r\nexport const DYNAMIC_DIALOG_OPTIONS = new InjectionToken<DynamicDialogOptions>(\r\n 'DYNAMIC_DIALOG_OPTIONS',\r\n);\r\n\r\nexport const DYNAMIC_DIALOG_REF = new InjectionToken<DynamicDialogRef>(\r\n 'DYNAMIC_DIALOG_REF',\r\n);\r\n","// dynamic-dialog.util.ts\r\nimport { EventEmitter } from '@angular/core';\r\nimport { Observable, firstValueFrom, isObservable } from 'rxjs';\r\nimport { DynamicDialogOptions } from './dynamic-dialog.service';\r\n\r\nexport function isPromise<T = any>(v: any): v is Promise<T> {\r\n return v && typeof v.then === 'function';\r\n}\r\nexport function isEmitter<T = any>(v: any): v is EventEmitter<T> {\r\n return v instanceof EventEmitter;\r\n}\r\n\r\nexport async function toMaybeBooleanPromise(\r\n value:\r\n | void\r\n | boolean\r\n | Promise<void | boolean>\r\n | Observable<void | boolean>\r\n | EventEmitter<void | boolean>,\r\n): Promise<boolean | void> {\r\n if (isPromise(value)) return await value;\r\n if (isObservable(value)) return await firstValueFrom(value);\r\n if (isEmitter(value)) return await firstValueFrom(value);\r\n return value;\r\n}\r\n\r\nexport async function toHandlerResult(ret: any): Promise<any> {\r\n if (ret instanceof Promise) return await ret;\r\n if (ret instanceof EventEmitter) return await firstValueFrom(ret);\r\n if (isObservable(ret)) return await firstValueFrom(ret);\r\n return ret;\r\n}\r\n\r\nexport async function allow(\r\n canDismiss: DynamicDialogOptions<any>['canDismiss'],\r\n reason: 'esc' | 'backdrop',\r\n) {\r\n if (!canDismiss) return true;\r\n try {\r\n return await Promise.resolve(canDismiss(reason));\r\n } catch {\r\n return false;\r\n }\r\n}\r\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\r\nimport { DynamicDialogComponent } from './dynamic-dialog.component';\r\nimport {\r\n ButtonDialogOptions,\r\n DynamicDialogOptions,\r\n} from './dynamic-dialog.service';\r\nimport { ChangeDetectorRef, ComponentRef } from '@angular/core';\r\n\r\nexport type DynamicDialogCloseReason =\r\n | 'ok'\r\n | 'cancel'\r\n | 'close'\r\n | 'backdrop'\r\n | 'esc'\r\n | 'navigation'\r\n | 'detach'\r\n | 'dispose';\r\n\r\nexport interface DynamicDialogCloseEvent<T = any> {\r\n reason: DynamicDialogCloseReason;\r\n result?: T;\r\n}\r\n\r\nexport class DynamicDialogRef<T = any, C = any> {\r\n readonly afterOpened$: Observable<void>;\r\n readonly afterClosed$: Observable<DynamicDialogCloseEvent<T>>;\r\n\r\n // Declare sem inicializar aqui\r\n readonly backdropClick$: Observable<MouseEvent>;\r\n readonly keydownEvents$: Observable<KeyboardEvent>;\r\n\r\n private _afterOpened = new ReplaySubject<void>();\r\n private _afterClosed = new Subject<DynamicDialogCloseEvent<T>>();\r\n\r\n private panelEl!: HTMLElement;\r\n private isClosing = false;\r\n\r\n private _container!: DynamicDialogComponent;\r\n private _opts!: DynamicDialogOptions<any>;\r\n\r\n private _contentComponentRef?: ComponentRef<any>;\r\n\r\n constructor(public overlayRef: OverlayRef) {\r\n this.afterOpened$ = this._afterOpened.asObservable();\r\n this.afterClosed$ = this._afterClosed.asObservable();\r\n\r\n // Agora é seguro inicializar, pois overlayRef já foi recebido\r\n this.backdropClick$ = this.overlayRef.backdropClick();\r\n this.keydownEvents$ = this.overlayRef.keydownEvents();\r\n\r\n this.panelEl = this.overlayRef.overlayElement;\r\n\r\n // Fallbacks para detach/dispose externos\r\n this.overlayRef.detachments().subscribe(() => {\r\n if (!this._afterClosed.closed) {\r\n this._afterClosed.next({ reason: 'detach' });\r\n this._afterClosed.complete();\r\n }\r\n });\r\n\r\n const originalDispose = this.overlayRef.dispose.bind(this.overlayRef);\r\n this.overlayRef.dispose = () => {\r\n if (!this._afterClosed.closed) {\r\n this._afterClosed.next({ reason: 'dispose' });\r\n this._afterClosed.complete();\r\n }\r\n originalDispose();\r\n };\r\n }\r\n\r\n private get backdropEl(): HTMLElement | null {\r\n // disponível após criar o backdrop\r\n return (this.overlayRef as any).backdropElement ?? null;\r\n }\r\n\r\n /** Chamado pelo service logo após anexar o container. */\r\n _notifyOpened(): void {\r\n if (!this._afterOpened.closed) {\r\n this._afterOpened.next();\r\n this._afterOpened.complete();\r\n }\r\n }\r\n\r\n /** Fecha programaticamente com razão e (opcional) resultado. */\r\n close(result?: T, reason: DynamicDialogCloseReason = 'close'): void {\r\n if (!this._afterClosed.closed) {\r\n this._afterClosed.next({ reason, result });\r\n this._afterClosed.complete();\r\n }\r\n this.overlayRef.dispose();\r\n }\r\n\r\n async closeAnimated(\r\n result?: T,\r\n reason: DynamicDialogCloseReason = 'close',\r\n opts: {\r\n panelClass?: string;\r\n backdropHideClass?: string;\r\n timeoutMs?: number;\r\n } = {},\r\n ): Promise<void> {\r\n if (this.isClosing) return;\r\n this.isClosing = true;\r\n\r\n const panelCls = opts.panelClass ?? 'fade-out';\r\n const hideBackdropCls =\r\n opts.backdropHideClass ?? 'cdk-overlay-backdrop-showing';\r\n const timeoutMs = opts.timeoutMs ?? 600;\r\n\r\n // aciona animação do painel\r\n this.panelEl.classList.add(panelCls);\r\n\r\n // aciona transição do backdrop (remove a classe “showing”)\r\n const bd = this.backdropEl;\r\n if (bd && bd.classList.contains(hideBackdropCls)) {\r\n bd.classList.remove(hideBackdropCls);\r\n }\r\n\r\n // espera animationend do painel ou timeout\r\n await new Promise<void>((resolve) => {\r\n let done = false;\r\n const finish = () => {\r\n if (done) return;\r\n done = true;\r\n this.panelEl.removeEventListener('animationend', onAnimEnd);\r\n clearTimeout(to);\r\n resolve();\r\n };\r\n const onAnimEnd = (e: AnimationEvent) => {\r\n if (e.target === this.panelEl) finish();\r\n };\r\n this.panelEl.addEventListener('animationend', onAnimEnd, { once: true });\r\n const to = setTimeout(finish, timeoutMs);\r\n });\r\n\r\n // emite afterClosed e destrói\r\n if (!this._afterClosed.closed) {\r\n this._afterClosed.next({ reason, result });\r\n this._afterClosed.complete();\r\n }\r\n this.overlayRef.dispose();\r\n }\r\n\r\n _attachContentComponent(componentRef: ComponentRef<any>): void {\r\n this._contentComponentRef = componentRef;\r\n }\r\n\r\n getComponent<C = any>(): C | undefined {\r\n return this._contentComponentRef?.instance as C | undefined;\r\n }\r\n\r\n hasComponent(): boolean {\r\n return !!this._contentComponentRef;\r\n }\r\n\r\n _attachForButtonUpdates(\r\n container: DynamicDialogComponent,\r\n opts: DynamicDialogOptions<any>,\r\n ) {\r\n this._container = container;\r\n this._opts = opts;\r\n // garantir objetos\r\n this._opts.okBtnOptions ??= {};\r\n this._opts.cancelBtnOptions ??= {};\r\n }\r\n\r\n updateButtons(patch: {\r\n ok?: Partial<ButtonDialogOptions>;\r\n cancel?: Partial<ButtonDialogOptions>;\r\n }): void {\r\n if (!this._opts) return;\r\n if (patch.ok) Object.assign(this._opts.okBtnOptions!, patch.ok);\r\n if (patch.cancel) Object.assign(this._opts.cancelBtnOptions!, patch.cancel);\r\n this._markForCheck();\r\n }\r\n\r\n // OK\r\n setOkLoading(state: boolean): void {\r\n this._ensureBtn('ok').loading = state;\r\n // se você usa okLoading interno como overlay, mantenha em sincronia:\r\n this._container.okLoading = !!state;\r\n this._markForCheck();\r\n }\r\n\r\n setOkDisabled(state: boolean): void {\r\n this._ensureBtn('ok').disabled = state;\r\n this._markForCheck();\r\n }\r\n\r\n setOkText(text: string): void {\r\n this._ensureBtn('ok').text = text;\r\n this._markForCheck();\r\n }\r\n\r\n // Cancel\r\n setCancelLoading(state: boolean): void {\r\n this._ensureBtn('cancel').loading = state;\r\n this._container.cancelLoading = !!state;\r\n this._markForCheck();\r\n }\r\n setCancelDisabled(state: boolean): void {\r\n this._ensureBtn('cancel').disabled = state;\r\n this._markForCheck();\r\n }\r\n setCancelText(text: string): void {\r\n this._ensureBtn('cancel').text = text;\r\n this._markForCheck();\r\n }\r\n\r\n private _ensureBtn(which: 'ok' | 'cancel'): ButtonDialogOptions {\r\n if (!this._opts) throw new Error('Dialog options not attached.');\r\n const key = which === 'ok' ? 'okBtnOptions' : 'cancelBtnOptions';\r\n this._opts[key] ??= {};\r\n return this._opts[key]!;\r\n }\r\n private _markForCheck() {\r\n const cdr: ChangeDetectorRef | undefined = (this._container as any)?.cdr;\r\n if (cdr?.markForCheck) cdr.markForCheck();\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n HostBinding,\r\n Inject,\r\n inject,\r\n Input,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {\r\n CdkPortalOutlet,\r\n ComponentPortal,\r\n PortalModule,\r\n} from '@angular/cdk/portal';\r\nimport {\r\n CommonModule,\r\n JsonPipe,\r\n NgIf,\r\n NgStyle,\r\n NgTemplateOutlet,\r\n} from '@angular/common';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { DynamicDialogRef } from './dynamic-dialog.ref';\r\nimport {\r\n DYNAMIC_DIALOG_DATA,\r\n DYNAMIC_DIALOG_OPTIONS,\r\n} from './dynamic-dialog.tokens';\r\nimport { toHandlerResult, toMaybeBooleanPromise } from './dynamic-dialog.util';\r\n\r\n@Component({\r\n selector: 's4y-dynamic-dialog',\r\n imports: [CdkPortalOutlet, ButtonComponent, NgStyle, NgIf, NgTemplateOutlet],\r\n templateUrl: './dynamic-dialog.component.html',\r\n styleUrl: './dynamic-dialog.component.scss',\r\n host: {\r\n role: 'dialog',\r\n 'aria-modal': 'true',\r\n tabindex: '-1',\r\n class: 's4y-dialog',\r\n '[attr.aria-labelledby]': \"'s4y-dialog-title'\",\r\n },\r\n animations: [],\r\n})\r\nexport class DynamicDialogComponent implements AfterViewInit {\r\n protected readonly injectedData = inject(DYNAMIC_DIALOG_DATA, {\r\n optional: true,\r\n });\r\n\r\n okLoading = false;\r\n cancelLoading = false;\r\n\r\n @Input() contentPortal?: ComponentPortal<unknown>;\r\n @Input() headerTemplate?: TemplateRef<any>;\r\n @Input() footerTemplate?: TemplateRef<any>;\r\n @Input() contentTemplate?: TemplateRef<any>;\r\n @Input() templateContext: any;\r\n\r\n @ViewChild(CdkPortalOutlet, { static: false })\r\n private portalOutlet?: CdkPortalOutlet;\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n @Inject(DYNAMIC_DIALOG_OPTIONS) public dialogOptions: any,\r\n ) {}\r\n\r\n ngAfterViewInit(): void {\r\n if (this.portalOutlet?.attachedRef) {\r\n this.ref._attachContentComponent(this.portalOutlet.attachedRef as any);\r\n }\r\n }\r\n\r\n get data() {\r\n return this.injectedData;\r\n }\r\n\r\n async onOk() {\r\n if (this.okLoading) return;\r\n this.okLoading = true;\r\n try {\r\n const component = this.ref.getComponent();\r\n\r\n const out = await toHandlerResult(\r\n this.dialogOptions?.onOk?.({\r\n data: this.injectedData,\r\n ref: this.ref,\r\n component,\r\n }),\r\n );\r\n\r\n if (out === false) return;\r\n\r\n const result =\r\n out === true || typeof out === 'undefined' ? undefined : out;\r\n await this.ref.closeAnimated(result, 'ok');\r\n } finally {\r\n this.okLoading = false;\r\n }\r\n }\r\n\r\n // ---- Cancel ----\r\n async onCancel() {\r\n if (this.cancelLoading) return;\r\n // this.cancelLoading = true;\r\n try {\r\n const component = this.ref.getComponent();\r\n\r\n const out = await toHandlerResult(\r\n this.dialogOptions?.onCancel?.({\r\n data: this.injectedData,\r\n ref: this.ref,\r\n component,\r\n }),\r\n );\r\n\r\n if (out === false) return; // NÃO fecha\r\n\r\n const result =\r\n out === true || typeof out === 'undefined' ? undefined : out;\r\n await this.ref.closeAnimated(result, 'cancel');\r\n } finally {\r\n this.cancelLoading = false;\r\n }\r\n }\r\n}\r\n","<article class=\"s4y-dialog\" role=\"dialog\" aria-modal=\"true\">\r\n @if (headerTemplate) {\r\n <header\r\n class=\"s4y-dialog-header\"\r\n [class.s4y-centered-header]=\"dialogOptions?.centeredHeader\"\r\n [ngStyle]=\"dialogOptions?.headerStyle\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"templateContext\"\r\n >\r\n </ng-container>\r\n </header>\r\n } @else if (dialogOptions?.title || dialogOptions?.description) {\r\n <header\r\n class=\"s4y-dialog-header\"\r\n [class.s4y-centered-header]=\"dialogOptions?.centeredHeader\"\r\n [ngStyle]=\"dialogOptions?.headerStyle\"\r\n >\r\n <h2 class=\"s4y-dialog-header__title\">{{ dialogOptions?.title }}</h2>\r\n <p class=\"s4y-dialog-header__description\">\r\n {{ dialogOptions?.description }}\r\n </p>\r\n </header>\r\n }\r\n\r\n @if (dialogOptions?.closable || dialogOptions?.closable == undefined) {\r\n <button class=\"s4y-dialog-close-btn\" (click)=\"ref.closeAnimated(undefined, 'close')\" aria-label=\"Fechar\">\r\n ×\r\n </button>\r\n }\r\n\r\n <section class=\"s4y-dialog__body\" [ngStyle]=\"dialogOptions?.bodyStyle\">\r\n @if (contentTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"contentTemplate\"\r\n [ngTemplateOutletContext]=\"templateContext\"\r\n >\r\n </ng-container>\r\n } @else {\r\n <ng-template\r\n cdkPortalOutlet\r\n [cdkPortalOutlet]=\"contentPortal\"\r\n ></ng-template>\r\n }\r\n </section>\r\n\r\n @let cancelBtnOptions = this.dialogOptions?.cancelBtnOptions;\r\n @let okBtnOptions = this.dialogOptions?.okBtnOptions;\r\n\r\n @if (!(dialogOptions?.hideFooter ?? false)) {\r\n <footer\r\n class=\"flex gap-1 s4y-dialog__footer\"\r\n [ngStyle]=\"dialogOptions?.footerStyle\"\r\n >\r\n @if (footerTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"footerTemplate\"\r\n [ngTemplateOutletContext]=\"templateContext\"\r\n >\r\n </ng-container>\r\n } @else {\r\n @if (cancelBtnOptions?.text) {\r\n <button\r\n (click)=\"onCancel()\"\r\n [loading]=\"cancelLoading || (cancelBtnOptions?.loading ?? false)\"\r\n [fullWidth]=\"cancelBtnOptions?.fullWidth ?? false\"\r\n s4yButton\r\n [variant]=\"cancelBtnOptions?.variant ?? 'gray'\"\r\n [outlined]=\"cancelBtnOptions?.outlined ?? true\"\r\n [disabled]=\"cancelBtnOptions?.disabled ?? false\"\r\n [size]=\"cancelBtnOptions?.size ?? 'small'\"\r\n >\r\n {{ cancelBtnOptions?.text ?? \"Cancelar\" }}\r\n </button>\r\n }\r\n @if (okBtnOptions?.text) {\r\n <button\r\n (click)=\"onOk()\"\r\n [loading]=\"okLoading || (okBtnOptions?.loading ?? false)\"\r\n [fullWidth]=\"okBtnOptions?.fullWidth ?? false\"\r\n s4yButton\r\n [variant]=\"okBtnOptions?.variant ?? 'primary'\"\r\n [outlined]=\"okBtnOptions?.outlined ?? false\"\r\n [disabled]=\"okBtnOptions?.disabled ?? false\"\r\n [size]=\"okBtnOptions?.size ?? 'small'\"\r\n >\r\n {{ okBtnOptions?.text ?? \"Ok\" }}\r\n </button>\r\n }\r\n }\r\n </footer>\r\n }\r\n</article>\r\n","import {\r\n EventEmitter,\r\n inject,\r\n Injectable,\r\n Injector,\r\n Provider,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport {\r\n ComponentType,\r\n GlobalPositionStrategy,\r\n Overlay,\r\n OverlayConfig,\r\n ScrollStrategy,\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { filter, Observable, take, takeUntil } from 'rxjs';\r\nimport { DynamicDialogComponent } from './dynamic-dialog.component';\r\nimport { DynamicDialogRef } from './dynamic-dialog.ref';\r\nimport { tButtonSize, tButtonVariant } from '../button/button.interface';\r\nimport {\r\n DYNAMIC_DIALOG_DATA,\r\n DYNAMIC_DIALOG_OPTIONS,\r\n} from './dynamic-dialog.tokens';\r\nimport { allow } from './dynamic-dialog.util';\r\n\r\nexport interface DynamicDialogOptions<TData = unknown, TComponent = any>\r\n extends DynamicDialogSize {\r\n title?: string | null;\r\n description?: string | null;\r\n data?: TData;\r\n panelClass?: string | string[];\r\n hasBackdrop?: boolean;\r\n backdropClass?: string | string[];\r\n closeOnBackdrop?: boolean;\r\n closeOnEsc?: boolean;\r\n positionStrategy?: GlobalPositionStrategy;\r\n scrollStrategy?: ScrollStrategy;\r\n disposeOnNavigation?: boolean;\r\n okBtnOptions?: ButtonDialogOptions;\r\n cancelBtnOptions?: ButtonDialogOptions;\r\n headerStyle?: { [key: string]: string };\r\n bodyStyle?: { [key: string]: string };\r\n footerStyle?: { [key: string]: string };\r\n\r\n onOk?: DialogHandler<TData, TComponent>;\r\n onCancel?: DialogHandler<TData, TComponent>;\r\n\r\n hideFooter?: boolean;\r\n closable?: boolean;\r\n centeredHeader?: boolean;\r\n\r\n headerTemplate?: TemplateRef<any>;\r\n footerTemplate?: TemplateRef<any>;\r\n contentTemplate?: TemplateRef<any>;\r\n\r\n canDismiss?: (reason: 'esc' | 'backdrop') => boolean | Promise<boolean>;\r\n}\r\n\r\nexport interface ButtonDialogOptions {\r\n text?: string | null;\r\n variant?: tButtonVariant;\r\n fullWidth?: boolean;\r\n loading?: boolean;\r\n disabled?: boolean;\r\n size?: tButtonSize;\r\n outlined?: boolean;\r\n}\r\n\r\nexport interface DynamicDialogSize {\r\n width?: number | string;\r\n height?: number | string;\r\n minWidth?: number | string;\r\n minHeight?: number | string;\r\n maxWidth?: number | string;\r\n maxHeight?: number | string;\r\n}\r\n\r\nexport type DialogHandlerContext<TData = unknown, TComponent = any> = {\r\n data: TData | undefined;\r\n ref: DynamicDialogRef;\r\n component: TComponent | undefined;\r\n};\r\n\r\n// handler pode decidir fechar ou não:\r\n// - void | true => fecha\r\n// - false => NÃO fecha\r\n// - Promise/Observable<EventEmitter> de qualquer um dos acima\r\nexport type DialogHandler<TData = unknown, TComponent = any> = (\r\n ctx: DialogHandlerContext<TData, TComponent>,\r\n) =>\r\n | void\r\n | boolean\r\n | any\r\n | Promise<void | boolean>\r\n | Observable<void | boolean>\r\n | EventEmitter<void | boolean>;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DynamicDialogService {\r\n private readonly overlay = inject(Overlay);\r\n private readonly rootInjector = inject(Injector);\r\n\r\n open<C, TData = unknown>(\r\n component: ComponentType<C>,\r\n opts?: DynamicDialogOptions<TData, C>,\r\n ): DynamicDialogRef<any, C> {\r\n opts = opts ?? {};\r\n const overlayRef = this.overlay.create(this.buildOverlayConfig(opts));\r\n\r\n overlayRef.updateSize({\r\n width: opts.width ?? 'auto',\r\n height: opts.height ?? 'auto',\r\n minWidth: opts.minWidth ?? '32rem',\r\n minHeight: opts.minHeight ?? 'auto',\r\n maxWidth: opts.maxWidth ?? '90dvw',\r\n maxHeight: opts.maxHeight ?? '90dvh',\r\n });\r\n\r\n if (opts.panelClass) {\r\n const classes = Array.isArray(opts.panelClass)\r\n ? opts.panelClass\r\n : [opts.panelClass];\r\n classes.forEach((c) => overlayRef.addPanelClass(c));\r\n }\r\n\r\n const dialogRef = new DynamicDialogRef<any, C>(overlayRef);\r\n\r\n const untilClosed$ = dialogRef.afterClosed$.pipe(take(1));\r\n\r\n if (opts.closeOnBackdrop) {\r\n overlayRef\r\n .backdropClick()\r\n .pipe(takeUntil(untilClosed$))\r\n .subscribe(async () => {\r\n if (!(await allow(opts.canDismiss, 'backdrop'))) return;\r\n dialogRef.closeAnimated(undefined, 'backdrop');\r\n });\r\n }\r\n\r\n if (opts.closeOnEsc !== false) {\r\n overlayRef\r\n .keydownEvents()\r\n .pipe(\r\n filter((e) => e.key === 'Escape' || e.key === 'Esc'),\r\n takeUntil(untilClosed$),\r\n )\r\n .subscribe(async () => {\r\n if (!(await allow(opts.canDismiss, 'esc'))) return;\r\n dialogRef.closeAnimated(undefined, 'esc');\r\n });\r\n }\r\n\r\n // injeta o ref + dados no componente container\r\n const injector = Injector.create({\r\n parent: this.rootInjector,\r\n providers: [\r\n { provide: DynamicDialogRef, useValue: dialogRef } as Provider,\r\n { provide: DYNAMIC_DIALOG_DATA, useValue: opts.data } as Provider,\r\n { provide: DYNAMIC_DIALOG_OPTIONS, useValue: opts } as Provider,\r\n ],\r\n });\r\n\r\n // anexa o container\r\n const containerPortal = new ComponentPortal(\r\n DynamicDialogComponent,\r\n null,\r\n injector,\r\n );\r\n const containerRef = overlayRef.attach(containerPortal);\r\n\r\n dialogRef._attachForButtonUpdates(containerRef.instance, opts);\r\n\r\n const templateCtx = {\r\n $implicit: opts.data,\r\n data: opts.data,\r\n ref: dialogRef,\r\n modalRef: dialogRef,\r\n };\r\n\r\n containerRef.instance.headerTemplate = opts.headerTemplate;\r\n containerRef.instance.footerTemplate = opts.footerTemplate;\r\n containerRef.instance.contentTemplate = opts.contentTemplate;\r\n containerRef.instance.templateContext = templateCtx;\r\n\r\n // notifica afterOpened (container anexado)\r\n dialogRef._notifyOpened();\r\n\r\n // anexa o conteúdo\r\n if (!opts.contentTemplate) {\r\n const contentPortal = new ComponentPortal(component, null, injector);\r\n containerRef.instance.contentPortal = contentPortal;\r\n }\r\n\r\n return dialogRef;\r\n }\r\n\r\n private buildOverlayConfig<TData>(\r\n opts: DynamicDialogOptions<TData>,\r\n ): OverlayConfig {\r\n const position =\r\n opts.positionStrategy ??\r\n this.overlay.position().global().centerHorizontally().centerVertically();\r\n\r\n return {\r\n positionStrategy: position,\r\n hasBackdrop: opts.hasBackdrop ?? true,\r\n backdropClass: opts.backdropClass ?? ['s4y-backdrop-dialog'],\r\n scrollStrategy:\r\n opts.scrollStrategy ?? this.overlay.scrollStrategies.block(),\r\n disposeOnNavigation: opts.disposeOnNavigation ?? true,\r\n panelClass: [\r\n 's4y-dialog-panel',\r\n ...(Array.isArray(opts.panelClass)\r\n ? opts.panelClass\r\n : opts.panelClass\r\n ? [opts.panelClass]\r\n : []),\r\n ],\r\n };\r\n }\r\n}\r\n","import { Component, input, signal, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dynamic-loading-global',\r\n imports: [],\r\n template: `\r\n <div class=\"s4y-dynamic-loading-container\">\r\n <span class=\"s4y-dynamic-loading-container__loader\"></span>\r\n <p>{{ message() }}</p>\r\n </div>\r\n `,\r\n styles: [\r\n `\r\n .s4y-dynamic-loading-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 1.8rem;\r\n color: #fff;\r\n }\r\n\r\n .s4y-dynamic-loading-container__loader {\r\n width: 48px;\r\n height: 48px;\r\n border-radius: 50%;\r\n display: inline-block;\r\n border-top: 3px solid #fff;\r\n border-right: 3px solid transparent;\r\n box-sizing: border-box;\r\n animation: rotation 1s linear infinite;\r\n }\r\n\r\n @keyframes rotation {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n `,\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicLoadingGlobalComponent {\r\n message = signal('Carregando dados...');\r\n}\r\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentRef, inject, Injectable } from '@angular/core';\nimport { DynamicLoadingGlobalComponent } from './dynamic-loading-global.component';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DynamicLoadingGlobalService {\n private readonly overlay = inject(Overlay);\n\n private overlays = new Map<\n string,\n {\n overlayRef: OverlayRef;\n componentRef: ComponentRef<DynamicLoadingGlobalComponent>;\n }\n >();\n\n constructor() {}\n\n showLoading(message?: string) {\n const overlayRef = this.createOverlay();\n const portal = this.loadingComponentPortal();\n\n const id = this.generateId();\n\n const componentRef = overlayRef.attach(portal);\n\n if (message) {\n componentRef.instance.message.set(message);\n }\n\n this.overlays.set(id, { overlayRef, componentRef });\n\n return id;\n }\n\n updateMessage(id: string, message: string) {\n const entry = this.overlays.get(id);\n if (entry) {\n entry.componentRef.instance.message.set(message);\n }\n }\n\n hiddenLoading(id?: string) {\n if (id) {\n const entry = this.overlays.get(id);\n\n if (entry) {\n entry.overlayRef.dispose();\n this.overlays.delete(id);\n }\n } else {\n this.overlays.forEach((entry) => entry.overlayRef.dispose());\n this.overlays.clear();\n }\n }\n\n private loadingComponentPortal() {\n return new ComponentPortal(DynamicLoadingGlobalComponent);\n }\n\n private createOverlay() {\n return this.overlay.create({\n backdropClass: ['s4y-overlay-bg'],\n panelClass: ['s4y-centered-panel-content'],\n scrollStrategy: this.overlay.scrollStrategies.block(),\n hasBackdrop: true,\n disposeOnNavigation: true,\n });\n }\n\n private generateId(): string {\n const c = globalThis.crypto as Crypto | undefined;\n\n if (c?.randomUUID) {\n return c.randomUUID();\n }\n\n return `dlg_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;\n }\n}\n","import {\r\n Component,\r\n computed,\r\n forwardRef,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\ntype TSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nconst SIZE_MAP: Record<TSize, number> = {\r\n xs: 16,\r\n sm: 20,\r\n md: 24,\r\n lg: 32,\r\n xl: 40,\r\n};\r\n\r\n@Component({\r\n selector: 's4y-rating',\r\n templateUrl: './rating.component.html',\r\n styleUrl: './rating.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RatingComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RatingComponent implements ControlValueAccessor {\r\n private readonly sanitizer = inject(DomSanitizer);\r\n\r\n value = signal(0);\r\n hoverValue = signal<number | null>(null);\r\n\r\n count = input<number>(5);\r\n\r\n size = input<number | TSize>('md');\r\n\r\n readonly sizePx = computed(() => {\r\n const size = this.size();\r\n return typeof size === 'number' ? size : (SIZE_MAP[size] ?? SIZE_MAP.md);\r\n });\r\n\r\n allowHalf = input<boolean>(false);\r\n\r\n readOnly = input<boolean>(false);\r\n\r\n disabled = signal<boolean>(false);\r\n\r\n onChange: (value: number) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n protected stars = computed(() => {\r\n const totalStars = this.count(); // número, ex: 5\r\n const displayValue = this.hoverValue() ?? this.value();\r\n const result: SafeHtml[] = [];\r\n\r\n for (let i = 0; i < totalStars; i++) {\r\n let icon = this.starLineIcon;\r\n\r\n if (displayValue >= i + 1) {\r\n icon = this.starFillIcon;\r\n } else if (this.allowHalf() && displayValue >= i + 0.5) {\r\n icon = this.starHalfIcon;\r\n }\r\n\r\n result.push(this.sanitizer.bypassSecurityTrustHtml(icon));\r\n }\r\n\r\n return result;\r\n });\r\n\r\n @HostBinding('class.s4y-rating--disabled')\r\n get isDisabledClass() {\r\n return this.disabled();\r\n }\r\n\r\n @HostBinding('class.s4y-rating--readonly') get isReadOnlyClass() {\r\n return this.readOnly();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n clearHoverStar() {\r\n this.hoverValue.set(null);\r\n }\r\n\r\n writeValue(value: number): void {\r\n const total = this.count();\r\n const normalized =\r\n typeof value === 'number' ? Math.max(0, Math.min(value, total)) : 0;\r\n this.value.set(\r\n this.allowHalf()\r\n ? Math.round(normalized * 2) / 2\r\n : Math.round(normalized),\r\n );\r\n }\r\n\r\n registerOnChange(fn: (value: number) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n\r\n setRating(index: number, event: MouseEvent) {\r\n if (!this.isInteractive) return;\r\n\r\n //é um array, entao a posicao é 0\r\n const next = this.allowHalf() ? this.computeHalf(index, event) : index + 1;\r\n\r\n if (next === this.value()) {\r\n this.updateValue(0);\r\n this.hoverValue.set(null);\r\n } else {\r\n this.updateValue(next);\r\n }\r\n }\r\n\r\n onKey(event: KeyboardEvent) {\r\n if (!this.isInteractive) return;\r\n\r\n const total = this.count();\r\n const step = this.allowHalf() ? 0.5 : 1;\r\n\r\n const base = this.hoverValue() ?? this.value();\r\n\r\n if (event.key === 'ArrowRight' || event.key === 'ArrowUp') {\r\n const next = Math.min(base + step, total);\r\n this.hoverValue.set(next);\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'ArrowLeft' || event.key === 'ArrowDown') {\r\n const next = Math.max(base - step, 0);\r\n this.hoverValue.set(next);\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'Home') {\r\n this.hoverValue.set(0);\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'End') {\r\n this.hoverValue.set(total);\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n const targetValue = this.hoverValue() ?? this.value();\r\n this.updateValue(targetValue);\r\n this.hoverValue.set(null);\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'Escape') {\r\n this.hoverValue.set(null);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n onStarHover(index: number, event: MouseEvent) {\r\n if (!this.isInteractive) return;\r\n\r\n if (this.allowHalf()) {\r\n this.hoverValue.set(this.computeHalf(index, event));\r\n } else {\r\n this.hoverValue.set(index + 1);\r\n }\r\n }\r\n\r\n onStarHoverTouch(index: number, event: TouchEvent) {\r\n if (!this.isInteractive) return;\r\n\r\n if (this.allowHalf()) {\r\n this.hoverValue.set(this.computeHalf(index, event));\r\n } else {\r\n this.hoverValue.set(index + 1);\r\n }\r\n }\r\n\r\n onTouchCommit(index: number, event: TouchEvent) {\r\n if (!this.isInteractive) return;\r\n\r\n const next = this.allowHalf() ? this.computeHalf(index, event) : index + 1;\r\n\r\n // Em mobile, toque único normalmente deve setar; se tocar de novo no mesmo, zera:\r\n if (next === this.value()) {\r\n this.updateValue(0);\r\n this.hoverValue.set(null);\r\n } else {\r\n this.updateValue(next);\r\n }\r\n\r\n // evita rolagem acidental ao tocar/arrastar levemente\r\n event.preventDefault();\r\n }\r\n\r\n private updateValue(value: number) {\r\n const newValue = this.allowHalf()\r\n ? Math.round(value * 2) / 2\r\n : Math.round(value);\r\n this.value.set(newValue);\r\n this.onChange(newValue);\r\n this.onTouched();\r\n }\r\n\r\n private getClientXFromEvent(e: MouseEvent | TouchEvent): number {\r\n if (e instanceof TouchEvent) {\r\n const t = e.touches[0] ?? e.changedTouches[0];\r\n return t?.clientX ?? 0;\r\n }\r\n return (e as MouseEvent).clientX ?? 0;\r\n }\r\n\r\n private computeHalf(index: number, e: MouseEvent | TouchEvent): number {\r\n const target = e.currentTarget as HTMLElement;\r\n const rect = target.getBoundingClientRect();\r\n const clientX = this.getClientXFromEvent(e);\r\n const relativeX = clientX - rect.left; // 0..width\r\n const isHalf = relativeX < rect.width / 2;\r\n return isHalf ? index + 0.5 : index + 1;\r\n }\r\n\r\n private get isInteractive() {\r\n return !this.disabled() && !this.readOnly();\r\n }\r\n\r\n get starLineIcon() {\r\n return `<svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12.0006 18.26L4.94715 22.2082L6.52248 14.2799L0.587891 8.7918L8.61493 7.84006L12.0006 0.5L15.3862 7.84006L23.4132 8.7918L17.4787 14.2799L19.054 22.2082L12.0006 18.26ZM12.0006 15.968L16.2473 18.3451L15.2988 13.5717L18.8719 10.2674L14.039 9.69434L12.0006 5.27502L9.96214 9.69434L5.12921 10.2674L8.70231 13.5717L7.75383 18.3451L12.0006 15.968Z\"\r\n ></path>\r\n </svg>`;\r\n }\r\n\r\n get starFillIcon() {\r\n return `<svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12.0006 18.26L4.94715 22.2082L6.52248 14.2799L0.587891 8.7918L8.61493 7.84006L12.0006 0.5L15.3862 7.84006L23.4132 8.7918L17.4787 14.2799L19.054 22.2082L12.0006 18.26Z\"\r\n ></path>\r\n </svg>`;\r\n }\r\n\r\n get starHalfIcon() {\r\n return `\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12.0006 15.968L16.2473 18.3451L15.2988 13.5717L18.8719 10.2674L14.039 9.69434L12.0006 5.27502V15.968ZM12.0006 18.26L4.94715 22.2082L6.52248 14.2799L0.587891 8.7918L8.61493 7.84006L12.0006 0.5L15.3862 7.84006L23.4132 8.7918L17.4787 14.2799L19.054 22.2082L12.0006 18.26Z\"\r\n ></path>\r\n </svg>\r\n `;\r\n }\r\n}\r\n","<div\r\n class=\"s4y-star-container\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"0\"\r\n [attr.aria-valuemax]=\"count()\"\r\n [attr.aria-valuenow]=\"value()\"\r\n [attr.aria-valuetext]=\"(hoverValue() ?? value()) + ' de ' + count()\"\r\n [attr.aria-readonly]=\"readOnly() ? 'true' : null\"\r\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\r\n tabindex=\"0\"\r\n (blur)=\"onTouched()\"\r\n (keydown)=\"onKey($event)\"\r\n>\r\n @for (star of stars(); track $index) {\r\n <button\r\n tabindex=\"-1\"\r\n (click)=\"setRating($index, $event)\"\r\n (mousemove)=\"onStarHover($index, $event)\"\r\n (touchstart)=\"onStarHoverTouch($index, $event)\"\r\n (touchend)=\"onTouchCommit($index, $event)\"\r\n [innerHTML]=\"star\"\r\n [disabled]=\"disabled()\"\r\n role=\"button\"\r\n class=\"s4y-star-item\"\r\n [style.height.px]=\"sizePx()\"\r\n [style.width.px]=\"sizePx()\"\r\n [attr.aria-label]=\"'Avaliar com ' + ($index + 1) + ' estrela(s)'\"\r\n ></button>\r\n }\r\n</div>\r\n","import { afterNextRender, Component, computed, effect, ElementRef, inject, Injector, input, model, output, signal, viewChild } from '@angular/core';\r\n\r\nexport type TagSeverity =\r\n | 'success'\r\n | 'error'\r\n | 'info'\r\n | 'warning'\r\n | 'primary'\r\n | 'secondary'\r\n | 'neutral'\r\n | 'finished';\r\n\r\nexport type TagSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n@Component({\r\n selector: 's4y-tag',\r\n imports: [],\r\n templateUrl: './tag.component.html',\r\n styleUrl: './tag.component.scss',\r\n host: {\r\n '[style.fontWeight]': '\"500\"',\r\n '[style.boxShadow]': 'shadow()',\r\n '[class]': 'class()',\r\n '(dblclick)': 'onDblClick($event)',\r\n role: 'button',\r\n '[attr.aria-label]': 'editable() ? \"Editar tag\" : null',\r\n tabindex: '0',\r\n },\r\n})\r\nexport class TagComponent {\r\n private readonly injector = inject(Injector);\r\n editInput = viewChild<ElementRef<HTMLInputElement>>('editInput');\r\n\r\n size = input<TagSize>('md');\r\n\r\n severity = input<TagSeverity>('primary');\r\n value = model<string>('');\r\n outlined = input<boolean>(false);\r\n withShadow = input<boolean>(true);\r\n editable = input<boolean>(false);\r\n\r\n isEditing = signal(false);\r\n\r\n editStart = output<void>();\r\n editEnd = output<void>();\r\n\r\n protected class = computed(() => {\r\n let baseClass = '';\r\n\r\n switch (this.severity()) {\r\n case 'success':\r\n baseClass = 'tag-success';\r\n break;\r\n case 'error':\r\n baseClass = 'tag-error';\r\n break;\r\n case 'info':\r\n baseClass = 'tag-info';\r\n break;\r\n case 'warning':\r\n baseClass = 'tag-warning';\r\n break;\r\n case 'neutral':\r\n baseClass = 'tag-neutral';\r\n break;\r\n case 'primary':\r\n baseClass = 'tag-primary';\r\n break;\r\n case 'secondary':\r\n baseClass = 'tag-secondary';\r\n break;\r\n case 'finished':\r\n baseClass = 'tag-finished';\r\n break;\r\n default:\r\n baseClass = 'tag-primary';\r\n }\r\n\r\n const outline = this.outlined() ? ' outlined' : '';\r\n return `${baseClass}${outline} ${this.sizeClass()}`;\r\n });\r\n\r\n private sizeClass = computed(() => {\r\n switch (this.size()) {\r\n case 'xs':\r\n return 'size-xs';\r\n case 'sm':\r\n return 'size-sm';\r\n case 'md':\r\n return 'size-md';\r\n case 'lg':\r\n return 'size-lg';\r\n case 'xl':\r\n return 'size-xl';\r\n default:\r\n return 'size-md';\r\n }\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.isEditing()) {\r\n afterNextRender(\r\n () => {\r\n const el = this.editInput()?.nativeElement;\r\n if (el) {\r\n el.focus();\r\n // el.select();\r\n }\r\n },\r\n { injector: this.injector },\r\n );\r\n }\r\n });\r\n }\r\n\r\n protected shadow = computed(() =>\r\n this.withShadow() ? ' box-shadow: var(--shadow-default);' : null,\r\n );\r\n\r\n onDblClick(_: MouseEvent) {\r\n this.startEdit();\r\n }\r\n\r\n startEdit() {\r\n if (!this.editable()) return;\r\n if (!this.isEditing()) {\r\n this.isEditing.set(true);\r\n this.editStart.emit();\r\n }\r\n }\r\n\r\n stopEdit(commit: boolean = true) {\r\n if (this.isEditing()) {\r\n this.isEditing.set(false);\r\n this.editEnd.emit();\r\n }\r\n }\r\n\r\n setValue(event: Event) {\r\n const value = (event.target as HTMLInputElement).value;\r\n\r\n this.value.set(value);\r\n }\r\n\r\n onKeydown(event: KeyboardEvent) {\r\n if (!this.editable()) return;\r\n if (event.key === 'Enter' && !this.isEditing()) {\r\n event.preventDefault();\r\n this.startEdit();\r\n } else if (event.key === 'Escape' && this.isEditing()) {\r\n event.preventDefault();\r\n this.stopEdit(false);\r\n }\r\n }\r\n}\r\n","\r\n@if (!isEditing()) {\r\n <p (keydown)=\"onKeydown($event)\">\r\n {{ value() }}\r\n </p>\r\n\r\n <ng-content select=\"[icon]\"></ng-content>\r\n} @else {\r\n <input\r\n type=\"text\"\r\n [value]=\"value()\"\r\n (blur)=\"stopEdit()\"\r\n (keydown.enter)=\"stopEdit()\"\r\n (keydown.escape)=\"stopEdit(false)\"\r\n (input)=\"setValue($event)\"\r\n autofocus\r\n #editInput\r\n />\r\n}\r\n\r\n\r\n","import { Component, inject, SecurityContext, TemplateRef, ViewEncapsulation } from '@angular/core';\r\nimport { IConfirmationProps } from './confirmation.service';\r\nimport { SvgComponent } from '../svg';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-confirmation',\r\n imports: [SvgComponent, ButtonComponent, NgTemplateOutlet],\r\n templateUrl: './confirmation.component.html',\r\n styleUrl: './confirmation.component.scss',\r\n})\r\nexport class ConfirmationComponent {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n props?: IConfirmationProps;\r\n\r\n onCancelClick?: () => Promise<void>;\r\n onConfirmClick?: () => Promise<void>;\r\n\r\n confirmLoading = false;\r\n cancelLoading = false;\r\n loading = false;\r\n\r\n get isTemplate(): boolean {\r\n return this.props?.content instanceof TemplateRef;\r\n }\r\n\r\n // Verifica se é HTML\r\n get isHtml(): boolean {\r\n return !this.isTemplate && this.props?.contentType === 'html';\r\n }\r\n\r\n // Verifica se é texto simples\r\n get isText(): boolean {\r\n return !this.isTemplate && this.props?.contentType !== 'html';\r\n }\r\n\r\n // Retorna o template se for TemplateRef\r\n get template(): TemplateRef<any> | undefined {\r\n return this.isTemplate\r\n ? (this.props!.content as TemplateRef<any>)\r\n : undefined;\r\n }\r\n\r\n // Retorna HTML sanitizado se contentType for 'html'\r\n get safeHtml(): SafeHtml | undefined {\r\n if (!this.isHtml || typeof this.props?.content !== 'string')\r\n return undefined;\r\n\r\n return (\r\n this.sanitizer.sanitize(SecurityContext.HTML, this.props.content) || ''\r\n );\r\n }\r\n\r\n // Retorna texto simples\r\n get textContent(): string | undefined {\r\n return this.isText && typeof this.props?.content === 'string'\r\n ? this.props.content\r\n : undefined;\r\n }\r\n\r\n async handleCancel() {\r\n if (this.onCancelClick) {\r\n this.cancelLoading = true;\r\n this.loading = true;\r\n await this.onCancelClick();\r\n this.cancelLoading = false;\r\n this.loading = false;\r\n }\r\n }\r\n\r\n async handleConfirm() {\r\n if (this.onConfirmClick) {\r\n this.confirmLoading = true;\r\n this.loading = true;\r\n await this.onConfirmClick();\r\n this.confirmLoading = false;\r\n this.loading = false;\r\n }\r\n }\r\n}\r\n","@let model = props;\r\n@let cancelModel = model?.cancelProps;\r\n@let confirmationModel = model?.confirmationProps;\r\n\r\n@if (model) {\r\n <div class=\"s4y-confirmation-icon\">\r\n @if (model.iconUri) {\r\n <s4y-svg [src]=\"model.iconUri\" />\r\n } @else {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11 15H13V17H11V15ZM11 7H13V13H11V7Z\"\r\n ></path>\r\n </svg>\r\n }\r\n </div>\r\n\r\n\r\n <div class=\"s4y-confirmation-content flex\">\r\n <p class=\"medium-text-bold s4y-confirmation-title\">\r\n {{ model.title }}\r\n </p>\r\n\r\n @if (model.content) {\r\n <div class=\"s4y-confirmation-description\">\r\n @if (isTemplate) {\r\n <ng-container *ngTemplateOutlet=\"template!\"></ng-container>\r\n } @else if (isHtml) {\r\n <div class=\"small-text-regular\" [innerHTML]=\"safeHtml\"></div>\r\n } @else {\r\n <p class=\"small-text-regular\">{{ textContent }}</p>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n\r\n <div class=\"s4y-confirmation-buttons\">\r\n <button\r\n type=\"button\"\r\n s4yButton\r\n [outlined]=\"true\"\r\n [variant]=\"'danger'\"\r\n [fullWidth]=\"true\"\r\n [disabled]=\"cancelLoading || loading\"\r\n [loading]=\"cancelLoading\"\r\n (click)=\"handleCancel()\"\r\n >\r\n {{ cancelModel?.text ?? \"Cancelar\" }}\r\n </button>\r\n <button\r\n type=\"button\"\r\n s4yButton\r\n [outlined]=\"false\"\r\n [variant]=\"'danger'\"\r\n [fullWidth]=\"true\"\r\n [disabled]=\"confirmLoading || loading\"\r\n [loading]=\"confirmLoading\"\r\n (click)=\"handleConfirm()\"\r\n >\r\n {{ confirmationModel?.text ?? \"Confirmar\" }}\r\n </button>\r\n </div>\r\n}\r\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { inject, Injectable, TemplateRef } from '@angular/core';\r\nimport { ConfirmationComponent } from './confirmation.component';\r\nimport {\r\n catchError,\r\n finalize,\r\n firstValueFrom,\r\n from,\r\n isObservable,\r\n Observable,\r\n of,\r\n Subject,\r\n take,\r\n} from 'rxjs';\r\n\r\nexport interface IConfirmationProps {\r\n iconUri?: string;\r\n title: string;\r\n content?: string | TemplateRef<any>;\r\n contentType?: 'text' | 'html';\r\n width?: string;\r\n height?: string;\r\n confirmationProps?: IConfirmationBtnProps;\r\n cancelProps?: IConfirmationBtnProps;\r\n\r\n onCancel?:\r\n | (() => Promise<boolean> | Observable<boolean> | boolean)\r\n | Promise<boolean>\r\n | Observable<boolean>\r\n | boolean;\r\n onConfirm?:\r\n | (() => Promise<boolean> | Observable<boolean> | boolean)\r\n | Promise<boolean>\r\n | Observable<boolean>\r\n | boolean;\r\n}\r\n\r\nexport interface IConfirmationBtnProps {\r\n text: string;\r\n}\r\n\r\nexport interface IConfirmationResult {\r\n confirmed: boolean;\r\n data?: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ConfirmationService {\r\n private readonly overlay = inject(Overlay);\r\n\r\n constructor() {}\r\n\r\n open(config: IConfirmationProps) {\r\n const overlayRef = this.createOverlay(config);\r\n const confirmationPortal = this.confirmationPortal();\r\n const result$ = new Subject<IConfirmationResult>();\r\n let isProcessing = false;\r\n\r\n const confirmationInstance = overlayRef.attach(confirmationPortal);\r\n\r\n confirmationInstance.instance.props = config;\r\n\r\n confirmationInstance.instance.onCancelClick = async () => {\r\n isProcessing = true;\r\n await this.handleAction(config.onCancel, overlayRef, false, result$);\r\n isProcessing = false;\r\n };\r\n\r\n confirmationInstance.instance.onConfirmClick = async () => {\r\n isProcessing = true;\r\n await this.handleAction(config.onConfirm, overlayRef, true, result$);\r\n isProcessing = false;\r\n };\r\n\r\n const backdropSub = overlayRef.backdropClick().subscribe(() => {\r\n if (!isProcessing) {\r\n this.closeWithResult(overlayRef, result$, false);\r\n }\r\n });\r\n\r\n const keySub = overlayRef.keydownEvents().subscribe((event) => {\r\n if (event.key === 'Escape' && !isProcessing) {\r\n // ADICIONE essa verificação\r\n this.closeWithResult(overlayRef, result$, false);\r\n }\r\n });\r\n\r\n return result$.asObservable().pipe(\r\n take(1),\r\n finalize(() => {\r\n backdropSub.unsubscribe();\r\n keySub.unsubscribe();\r\n }),\r\n );\r\n }\r\n\r\n private async handleAction(\r\n action: IConfirmationProps['onCancel'] | IConfirmationProps['onConfirm'],\r\n overlayRef: OverlayRef,\r\n confirmed: boolean,\r\n result$: Subject<IConfirmationResult>,\r\n ): Promise<void> {\r\n try {\r\n if (!action) {\r\n result$.next({ confirmed });\r\n result$.complete();\r\n overlayRef.dispose();\r\n return;\r\n }\r\n\r\n const actionResult$ = this.toObservable(action);\r\n\r\n const actionData = await firstValueFrom(\r\n actionResult$.pipe(catchError(() => of(true))),\r\n );\r\n\r\n if (actionData === false) {\r\n return;\r\n }\r\n\r\n result$.next({ confirmed, data: actionData });\r\n result$.complete();\r\n overlayRef.dispose();\r\n } catch (error) {\r\n console.error('Error handling confirmation action:', error);\r\n result$.next({ confirmed: false });\r\n result$.complete();\r\n overlayRef.dispose();\r\n }\r\n }\r\n\r\n private toObservable(\r\n value:\r\n | (() => Promise<boolean> | Observable<boolean> | boolean)\r\n | Promise<boolean>\r\n | Observable<boolean>\r\n | boolean,\r\n ): Observable<boolean> {\r\n const resolvedValue = typeof value === 'function' ? value() : value;\r\n\r\n if (isObservable(resolvedValue)) {\r\n return resolvedValue;\r\n }\r\n\r\n if (resolvedValue instanceof Promise) {\r\n return from(resolvedValue);\r\n }\r\n\r\n return of(resolvedValue as boolean);\r\n }\r\n\r\n private createOverlay({ width, height }: IConfirmationProps) {\r\n const overlayRef = this.overlay.create({\r\n hasBackdrop: true,\r\n disposeOnNavigation: true,\r\n backdropClass: 's4y-backdrop-dialog',\r\n panelClass: 's4y-confirmation-panel',\r\n maxWidth: '90dvw',\r\n height: height,\r\n width: width ?? 'min(41rem, 90dvw)',\r\n positionStrategy: this.overlay\r\n .position()\r\n .global()\r\n .centerHorizontally()\r\n .centerVertically(),\r\n });\r\n\r\n return overlayRef;\r\n }\r\n\r\n private confirmationPortal() {\r\n return new ComponentPortal(ConfirmationComponent);\r\n }\r\n\r\n private closeWithResult(\r\n overlayRef: OverlayRef,\r\n result$: Subject<IConfirmationResult>,\r\n confirmed: boolean,\r\n ) {\r\n if (!result$.closed) {\r\n result$.next({ confirmed });\r\n result$.complete();\r\n }\r\n if (overlayRef.hasAttached()) {\r\n overlayRef.dispose();\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n ViewEncapsulation,\r\n booleanAttribute,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CollapsePanelComponent } from './collapse-panel.component';\r\n\r\nexport type S4yCollapseSize = 'small' | 'medium' | 'large';\r\nexport type S4yExpandIconPosition = 'start' | 'end';\r\n\r\n@Component({\r\n selector: 's4y-collapse',\r\n standalone: true,\r\n imports: [CommonModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n template: `<ng-content></ng-content>`,\r\n host: {\r\n class: 's4y-collapse',\r\n '[class.s4y-collapse-icon-position-start]': `expandIconPosition === 'start'`,\r\n '[class.s4y-collapse-icon-position-end]': `expandIconPosition === 'end'`,\r\n '[class.s4y-collapse-ghost]': 'ghost',\r\n '[class.s4y-collapse-borderless]': '!bordered',\r\n '[class.s4y-collapse-small]': `size === 'small'`,\r\n '[class.s4y-collapse-large]': `size === 'large'`,\r\n },\r\n styleUrl: './collapse.component.scss',\r\n})\r\nexport class CollapseComponent {\r\n /**\r\n * Modo acordeão - apenas um painel pode estar aberto por vez\r\n */\r\n @Input({ transform: booleanAttribute }) accordion = false;\r\n\r\n /**\r\n * Define se o collapse terá bordas\r\n */\r\n @Input({ transform: booleanAttribute }) bordered = true;\r\n\r\n /**\r\n * Modo ghost - sem bordas e fundo transparente\r\n */\r\n @Input({ transform: booleanAttribute }) ghost = false;\r\n\r\n /**\r\n * Posição do ícone de expansão\r\n */\r\n @Input() expandIconPosition: S4yExpandIconPosition = 'start';\r\n\r\n /**\r\n * Tamanho do collapse\r\n */\r\n @Input() size: S4yCollapseSize = 'medium';\r\n\r\n private panels: CollapsePanelComponent[] = [];\r\n\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n /**\r\n * Adiciona um painel à lista\r\n */\r\n addPanel(panel: CollapsePanelComponent): void {\r\n this.panels.push(panel);\r\n }\r\n\r\n /**\r\n * Remove um painel da lista\r\n */\r\n removePanel(panel: CollapsePanelComponent): void {\r\n const index = this.panels.indexOf(panel);\r\n if (index > -1) {\r\n this.panels.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Manipula o clique em um painel\r\n */\r\n handlePanelClick(panel: CollapsePanelComponent): void {\r\n // Se está em modo acordeão e o painel não está ativo\r\n if (this.accordion && !panel.active) {\r\n // Fecha todos os outros painéis\r\n this.panels\r\n .filter((p) => p !== panel && p.active)\r\n .forEach((p) => {\r\n p.active = false;\r\n p.activeChange.emit(false);\r\n p.markForCheck();\r\n });\r\n }\r\n\r\n // Alterna o estado do painel clicado\r\n panel.active = !panel.active;\r\n panel.activeChange.emit(panel.active);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation,\r\n booleanAttribute,\r\n inject,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { fromEvent } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { CollapseComponent } from './collapse.component';\r\n\r\nexport type S4yCollapsible = 'disabled' | 'header' | 'icon';\r\n\r\n@Component({\r\n selector: 's4y-collapse-panel',\r\n standalone: true,\r\n imports: [CommonModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [\r\n trigger('collapseMotion', [\r\n state(\r\n 'expanded',\r\n style({\r\n height: '*',\r\n opacity: 1,\r\n }),\r\n ),\r\n state(\r\n 'collapsed',\r\n style({\r\n height: 0,\r\n opacity: 0,\r\n overflow: 'hidden',\r\n }),\r\n ),\r\n transition('expanded <=> collapsed', [\r\n animate('300ms cubic-bezier(0.4, 0, 0.2, 1)'),\r\n ]),\r\n ]),\r\n ],\r\n template: `\r\n <div\r\n #headerElement\r\n role=\"button\"\r\n [attr.aria-expanded]=\"active\"\r\n class=\"s4y-collapse-header\"\r\n [class.s4y-collapse-icon-collapsible-only]=\"collapsible === 'icon'\"\r\n [class.s4y-collapse-header-collapsible-only]=\"collapsible === 'header'\"\r\n >\r\n @if (showArrow) {\r\n <div #iconElement role=\"button\" class=\"s4y-collapse-expand-icon\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n expandedIconTemplate || defaultIcon;\r\n context: { $implicit: active }\r\n \"\r\n >\r\n </ng-container>\r\n <ng-template #defaultIcon>\r\n <svg\r\n class=\"s4y-collapse-arrow\"\r\n [class.s4y-collapse-arrow-active]=\"active\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M6 4l4 4-4 4\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n fill=\"none\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <span class=\"s4y-collapse-header-text\">\r\n <ng-container *ngTemplateOutlet=\"headerTemplate || defaultHeader\">\r\n </ng-container>\r\n <ng-template #defaultHeader>{{ header }}</ng-template>\r\n </span>\r\n\r\n @if (extra || extraTemplate) {\r\n <div class=\"s4y-collapse-extra\">\r\n <ng-container *ngTemplateOutlet=\"extraTemplate || defaultExtra\">\r\n </ng-container>\r\n <ng-template #defaultExtra>{{ extra }}</ng-template>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"s4y-collapse-content\"\r\n [class.s4y-collapse-content-active]=\"active\"\r\n [@collapseMotion]=\"active ? 'expanded' : 'collapsed'\"\r\n >\r\n <div class=\"s4y-collapse-content-box\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n `,\r\n host: {\r\n class: 's4y-collapse-item',\r\n '[class.s4y-collapse-no-arrow]': '!showArrow',\r\n '[class.s4y-collapse-item-active]': 'active',\r\n '[class.s4y-collapse-item-disabled]':\r\n 'disabled || collapsible === \"disabled\"',\r\n },\r\n})\r\nexport class CollapsePanelComponent implements OnInit, AfterViewInit {\r\n private cdr = inject(ChangeDetectorRef);\r\n private destroyRef = inject(DestroyRef);\r\n private collapseComponent = inject(CollapseComponent, { host: true });\r\n\r\n /**\r\n * Define se o painel está ativo/expandido\r\n */\r\n @Input({ transform: booleanAttribute }) active = false;\r\n\r\n /**\r\n * Define se o painel está desabilitado\r\n * @deprecated Use collapsible='disabled' ao invés\r\n */\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n /**\r\n * Define se a seta de expansão será exibida\r\n */\r\n @Input({ transform: booleanAttribute }) showArrow = true;\r\n\r\n /**\r\n * Conteúdo extra no cabeçalho (texto ou template)\r\n */\r\n @Input() extra?: string;\r\n\r\n /**\r\n * Template para conteúdo extra\r\n */\r\n @Input() extraTemplate?: TemplateRef<void>;\r\n\r\n /**\r\n * Título do painel (texto ou template)\r\n */\r\n @Input() header?: string;\r\n\r\n /**\r\n * Template para o título\r\n */\r\n @Input() headerTemplate?: TemplateRef<void>;\r\n\r\n /**\r\n * Template customizado para o ícone de expansão\r\n */\r\n @Input() expandedIconTemplate?: TemplateRef<{ $implicit: boolean }>;\r\n\r\n /**\r\n * Define o comportamento de clique do painel\r\n */\r\n @Input() collapsible?: S4yCollapsible;\r\n\r\n /**\r\n * Evento emitido quando o estado ativo muda\r\n */\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n\r\n @ViewChild('headerElement') headerElement!: ElementRef<HTMLElement>;\r\n @ViewChild('iconElement') iconElement?: ElementRef<HTMLElement>;\r\n\r\n constructor() {\r\n // Quando o componente for destruído, remove da lista do collapse pai\r\n this.destroyRef.onDestroy(() => {\r\n this.collapseComponent.removePanel(this);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n // Adiciona este painel à lista do collapse pai\r\n this.collapseComponent.addPanel(this);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // Define qual elemento será clicável baseado no modo collapsible\r\n let clickElement = this.headerElement.nativeElement;\r\n\r\n if (this.showArrow && this.collapsible === 'icon' && this.iconElement) {\r\n clickElement = this.iconElement.nativeElement;\r\n }\r\n\r\n // Configura o listener de clique\r\n fromEvent<MouseEvent>(clickElement, 'click')\r\n .pipe(\r\n filter(() => !this.disabled && this.collapsible !== 'disabled'),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe(() => {\r\n this.collapseComponent.handlePanelClick(this);\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * Marca o componente para verificação de mudanças\r\n */\r\n markForCheck(): void {\r\n this.cdr.markForCheck();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CollapseComponent } from './collapse.component';\r\nimport { CollapsePanelComponent } from './collapse-panel.component';\r\n\r\n/**\r\n * Módulo de Collapse\r\n *\r\n * Componente para criar painéis expansíveis/retráteis.\r\n *\r\n * @example\r\n * ```html\r\n * <s4y-collapse [accordion]=\"true\" [bordered]=\"true\">\r\n * <s4y-collapse-panel header=\"Painel 1\" [active]=\"true\">\r\n * Conteúdo do painel 1\r\n * </s4y-collapse-panel>\r\n * <s4y-collapse-panel header=\"Painel 2\">\r\n * Conteúdo do painel 2\r\n * </s4y-collapse-panel>\r\n * </s4y-collapse>\r\n * ```\r\n */\r\n@NgModule({\r\n imports: [CollapseComponent, CollapsePanelComponent],\r\n exports: [CollapseComponent, CollapsePanelComponent],\r\n})\r\nexport class CollapseModule {}\r\n","import { Component, computed, contentChild, inject, input, output, TemplateRef } from '@angular/core';\r\nimport { SvgComponent } from '../svg';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\ntype TInformationBannerSeverity = \"neutral\" | \"success\" | 'warning' | \"info\" | 'error'\r\n\r\nexport interface InformationBannerProps {\r\n title?: string;\r\n description?: string;\r\n\r\n iconUri?: string;\r\n iconShow?: boolean;\r\n iconSize?: number;\r\n closable?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 's4y-information-banner',\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './information-banner.component.html',\r\n styleUrl: './information-banner.component.scss',\r\n})\r\nexport class InformationBannerComponent {\r\n private readonly sanitize = inject(DomSanitizer);\r\n\r\n severity = input<TInformationBannerSeverity>('neutral');\r\n props = input<InformationBannerProps>({\r\n closable: false,\r\n iconShow: true,\r\n iconSize: 22,\r\n });\r\n\r\n headerTpl = contentChild<TemplateRef<any>>('headerTpl');\r\n contentTpl = contentChild<TemplateRef<any>>('contentTpl');\r\n footerTpl = contentChild<TemplateRef<any>>('footerTpl');\r\n\r\n onClosable = output<void>();\r\n\r\n icon = computed<SafeHtml>(() => {\r\n const p = this.props();\r\n\r\n if (p.iconShow === false) return '';\r\n\r\n const rawSvg = p.iconUri?.trim()\r\n ? p.iconUri\r\n : this.remixSvgBySeverity[this.severity()];\r\n\r\n return this.sanitize.bypassSecurityTrustHtml(rawSvg);\r\n });\r\n\r\n bannerClass = computed(() => `s4y-information-banner--${this.severity()}`);\r\n\r\n // --- Remix Icon SVGs (line) ---\r\n private readonly remixSvgBySeverity: Record<\r\n TInformationBannerSeverity,\r\n string\r\n > = {\r\n neutral: `\r\n <svg viewBox=\"0 0 24 24\" width=\"100%\" height=\"100%\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2Zm0 18a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm-1-9h2v6h-2v-6Zm0-4h2v2h-2V7Z\"/>\r\n </svg>\r\n `,\r\n info: `\r\n <svg viewBox=\"0 0 24 24\" width=\"100%\" height=\"100%\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2Zm0 18a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm-1-9h2v6h-2v-6Zm0-4h2v2h-2V7Z\"/>\r\n </svg>\r\n `,\r\n success: `\r\n <svg viewBox=\"0 0 24 24\" width=\"100%\" height=\"100%\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2Zm0 18a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm3.535-10.95 1.414 1.414-5.657 5.657L7.05 11.879l1.414-1.414 2.828 2.828 4.243-4.243Z\"/>\r\n </svg>\r\n `,\r\n warning: `\r\n <svg viewBox=\"0 0 24 24\" width=\"100%\" height=\"100%\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2Zm0 18a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm-1-5h2v2h-2v-2Zm0-10h2v8h-2V5Z\"/>\r\n </svg>\r\n `,\r\n error: `\r\n <svg viewBox=\"0 0 24 24\" width=\"100%\" height=\"100%\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2Zm0 18a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm2.828-11.657L13.414 9.757 12 8.343 10.586 9.757 9.172 8.343 7.757 9.757 9.172 11.17 7.757 12.586 9.172 14 10.586 12.586 12 14 13.414 12.586 14.828 14l1.415-1.414-1.415-1.415 1.415-1.414-1.415-1.414Z\"/>\r\n </svg>\r\n `,\r\n };\r\n}\r\n","@let model = props();\r\n\r\n<div class=\"s4y-information-banner-container\" [class]=\"bannerClass()\">\r\n <span\r\n class=\"info-banner__icon\"\r\n [style.width.px]=\"model.iconSize ?? 22\"\r\n [style.height.px]=\"model.iconSize ?? 22\"\r\n [innerHTML]=\"icon()\">\r\n </span>\r\n <div class=\"s4y-information-banner__content\">\r\n @let headerTemplate = headerTpl();\r\n\r\n @if (headerTemplate) {\r\n <ng-template *ngTemplateOutlet=\"headerTemplate\"></ng-template>\r\n } @else {\r\n <div class=\"flex align-center justify-between\">\r\n <p class=\"fw-600 small-text-regular\">{{ model.title }}</p>\r\n\r\n @if (model.closable) {\r\n <button type=\"button\" (click)=\"onClosable.emit()\">×</button>\r\n }\r\n </div>\r\n }\r\n\r\n @let contentTemplate = contentTpl();\r\n\r\n @if (contentTemplate) {\r\n <ng-template *ngTemplateOutlet=\"contentTemplate\"></ng-template>\r\n } @else {\r\n <p class=\"small-text-regular gray-7 fw-400\">\r\n {{ model.description }}\r\n </p>\r\n }\r\n\r\n @let footerTemplate = footerTpl();\r\n\r\n @if (footerTemplate) {\r\n <div class=\"s4y-information-banner__footer\">\r\n <ng-template *ngTemplateOutlet=\"footerTemplate\"></ng-template>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","/*\r\n * Public API Surface of s4y-components\r\n */\r\n\r\n// Exporta tudo do index.ts de cada pasta\r\nexport * from './lib/components/dashboard';\r\nexport * from './lib/components/button/button.component';\r\nexport * from './lib/components/forms-kit';\r\nexport * from './lib/directives';\r\nexport * from './lib/components/toast';\r\nexport * from './lib/components/svg';\r\nexport * from './lib/components/drawer/drawer.component';\r\nexport * from './lib/components/avatar/avatar.component';\r\nexport * from './lib/components/table';\r\nexport * from './lib/components/spinner/spinner.component';\r\nexport * from './lib/components/modal';\r\nexport * from './lib/components/modal-confirmation';\r\nexport * from './lib/components/search-bar';\r\nexport * from './lib/components/toggle/toggle.component';\r\nexport * from './lib/components/pagination';\r\nexport * from './lib/components/select/select.component';\r\nexport * from './lib/components/slider/slider.component';\r\nexport * from './lib/components/radio/radio.component';\r\nexport * from './lib/components/tooltip';\r\nexport * from './lib/components/breadcrumb';\r\nexport * from './lib/components/stepper';\r\nexport * from './lib/components/loading-modal';\r\nexport * from './lib/components/checkbox/checkbox.component';\r\nexport * from './lib/components/sidebar-right';\r\nexport * from './lib/components/popover';\r\nexport * from './lib/components/menu';\r\nexport * from './lib/components/image';\r\nexport * from './lib/components/summary-card/summary-card.component';\r\nexport * from './lib/components/dynamic-tooltip/dynamic-tooltip.directive';\r\n\r\n// animation modal\r\nexport * from \"./lib/components/modal/modal.animation\";\r\nexport * from './lib/components/select-multi/select-multi.component';\r\n\r\nexport * from './lib/components/dynamic-dialog';\r\n\r\nexport * from './lib/components/dynamic-loading-global';\r\n\r\nexport * from './lib/components/rating/rating.component';\r\n\r\n\r\nexport * from './lib/components/tag/tag.component';\r\nexport * from './lib/components/confirmation/confirmation.service';\r\nexport * from './lib/components/collapse';\r\nexport * from './lib/components/information-banner/information-banner.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.SvgService","i2","i3.AvatarComponent","i4.SvgComponent","COMPONENTS","i2.InputComponent","i3.LabelComponent","i4.InputSufixComponent","i1.ToastService","i1.TableComponent","map","i1.BreadcrumbService","i3","i1.StepperComponent","filter","catchError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"s4y-ui.mjs","sources":["../../../projects/s4y-components/src/lib/components/dashboard/dashboard-layout/dashboard-layout.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-layout/dashboard-layout.component.html","../../../projects/s4y-components/src/lib/components/dashboard/aside/aside.service.ts","../../../projects/s4y-components/src/lib/components/dashboard/navbar/navbar.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/navbar/navbar.component.html","../../../projects/s4y-components/src/lib/components/avatar/avatar.component.ts","../../../projects/s4y-components/src/lib/components/avatar/avatar.component.html","../../../projects/s4y-components/src/lib/components/svg/svg.service.ts","../../../projects/s4y-components/src/lib/components/svg/svg.component.ts","../../../projects/s4y-components/src/lib/components/svg/svg.component.html","../../../projects/s4y-components/src/lib/components/dashboard/aside/aside.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/aside/aside.component.html","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-routes/dashboard-routes.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-routes/dashboard-routes.component.html","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-container/dashboard-container.component.ts","../../../projects/s4y-components/src/lib/components/dashboard/dashboard-container/dashboard-container.component.html","../../../projects/s4y-components/src/lib/components/dashboard/dashboard.module.ts","../../../projects/s4y-components/src/lib/components/dashboard/index.ts","../../../projects/s4y-components/src/lib/components/button/button.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/form-field/form-field.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/form-field/form-field.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/input/input.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/input/input.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/label/label.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/label/label.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/hint/hint.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/hint/hint.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/error-message/error-message.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/error-message/error-message.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-prefix/input-prefix.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-prefix/input-prefix.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-sufix/input-sufix.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/components/input-sufix/input-sufix.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/form-field-password/form-field-password.component.ts","../../../projects/s4y-components/src/lib/components/forms-kit/form-field-password/form-field-password.component.html","../../../projects/s4y-components/src/lib/components/forms-kit/forms-kit.module.ts","../../../projects/s4y-components/src/lib/components/forms-kit/index.ts","../../../projects/s4y-components/src/lib/directives/mask/mask.directive.ts","../../../projects/s4y-components/src/lib/directives/click-outside.directive.ts","../../../projects/s4y-components/src/lib/components/toast/toast.animation.ts","../../../projects/s4y-components/src/lib/components/toast/toast.service.ts","../../../projects/s4y-components/src/lib/components/toast/toast.component.ts","../../../projects/s4y-components/src/lib/components/toast/toast.component.html","../../../projects/s4y-components/src/lib/components/drawer/drawer.animation.ts","../../../projects/s4y-components/src/lib/components/drawer/drawer.component.ts","../../../projects/s4y-components/src/lib/components/drawer/drawer.component.html","../../../projects/s4y-components/src/lib/components/spinner/spinner.component.ts","../../../projects/s4y-components/src/lib/components/spinner/spinner.component.html","../../../projects/s4y-components/src/lib/components/table/table.component.ts","../../../projects/s4y-components/src/lib/components/table/table.component.html","../../../projects/s4y-components/src/lib/components/table/directive/table-sort.directive.ts","../../../projects/s4y-components/src/lib/components/table/directive/table-sticky.directive.ts","../../../projects/s4y-components/src/lib/components/modal/modal.animation.ts","../../../projects/s4y-components/src/lib/components/modal/modal.component.ts","../../../projects/s4y-components/src/lib/components/modal/modal.component.html","../../../projects/s4y-components/src/lib/components/modal-confirmation/modal-confirmation.service.ts","../../../projects/s4y-components/src/lib/components/modal-confirmation/modal-confirmation.component.ts","../../../projects/s4y-components/src/lib/components/modal-confirmation/modal-confirmation.component.html","../../../projects/s4y-components/src/lib/components/search-bar/search-bar.component.ts","../../../projects/s4y-components/src/lib/components/search-bar/search-bar.component.html","../../../projects/s4y-components/src/lib/components/toggle/toggle.component.ts","../../../projects/s4y-components/src/lib/components/toggle/toggle.component.html","../../../projects/s4y-components/src/lib/components/select/select.animation.ts","../../../projects/s4y-components/src/lib/components/select/select.component.ts","../../../projects/s4y-components/src/lib/components/select/select.component.html","../../../projects/s4y-components/src/lib/components/pagination/pagination.component.ts","../../../projects/s4y-components/src/lib/components/pagination/pagination.component.html","../../../projects/s4y-components/src/lib/components/slider/slider.component.ts","../../../projects/s4y-components/src/lib/components/slider/slider.component.html","../../../projects/s4y-components/src/lib/components/radio/radio.component.ts","../../../projects/s4y-components/src/lib/components/radio/radio.component.html","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.enums.ts","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.component.ts","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.component.html","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.directive.ts","../../../projects/s4y-components/src/lib/components/tooltip/tooltip.module.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb-item.directive.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb.service.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/s4y-components/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/s4y-components/src/lib/components/stepper/components/step/step.component.ts","../../../projects/s4y-components/src/lib/components/stepper/components/step/step.component.html","../../../projects/s4y-components/src/lib/components/stepper/animations/stepper.animation.ts","../../../projects/s4y-components/src/lib/components/stepper/components/step-panel/step-panel.component.ts","../../../projects/s4y-components/src/lib/components/stepper/components/step-panel/step-panel.component.html","../../../projects/s4y-components/src/lib/components/stepper/stepper.component.ts","../../../projects/s4y-components/src/lib/components/stepper/stepper.component.html","../../../projects/s4y-components/src/lib/components/loading-modal/loading-modal.service.ts","../../../projects/s4y-components/src/lib/components/loading-modal/loading-modal.animation.ts","../../../projects/s4y-components/src/lib/components/loading-modal/loading-modal.component.ts","../../../projects/s4y-components/src/lib/components/loading-modal/loading-modal.component.html","../../../projects/s4y-components/src/lib/components/checkbox/checkbox.component.ts","../../../projects/s4y-components/src/lib/components/checkbox/checkbox.component.html","../../../projects/s4y-components/src/lib/components/sidebar-right/sidebar-right.animation.ts","../../../projects/s4y-components/src/lib/components/sidebar-right/sidebar-right.service.ts","../../../projects/s4y-components/src/lib/components/sidebar-right/sidebar-right.component.ts","../../../projects/s4y-components/src/lib/components/sidebar-right/sidebar-right.component.html","../../../projects/s4y-components/src/lib/components/popover/popover-panel/popover-panel.component.ts","../../../projects/s4y-components/src/lib/components/popover/directives/popover-trigger.directive.ts","../../../projects/s4y-components/src/lib/components/menu/menu.component.ts","../../../projects/s4y-components/src/lib/components/menu/menu-item.component.ts","../../../projects/s4y-components/src/lib/components/image/components/image-preview/image-preview.component.ts","../../../projects/s4y-components/src/lib/components/image/components/image-preview/image-preview.component.html","../../../projects/s4y-components/src/lib/components/image/image.service.ts","../../../projects/s4y-components/src/lib/components/image/image.component.ts","../../../projects/s4y-components/src/lib/components/dynamic-tooltip/dynamic-tooltip.component.ts","../../../projects/s4y-components/src/lib/components/dynamic-tooltip/dynamic-tooltip.component.html","../../../projects/s4y-components/src/lib/components/dynamic-tooltip/dynamic-tooltip.directive.ts","../../../projects/s4y-components/src/lib/components/summary-card/summary-card.component.ts","../../../projects/s4y-components/src/lib/components/summary-card/summary-card.component.html","../../../projects/s4y-components/src/lib/components/select-multi/select-multi.animation.ts","../../../projects/s4y-components/src/lib/components/select-multi/select-multi.component.ts","../../../projects/s4y-components/src/lib/components/select-multi/select-multi.component.html","../../../projects/s4y-components/src/lib/components/dynamic-dialog/dynamic-dialog.tokens.ts","../../../projects/s4y-components/src/lib/components/dynamic-dialog/dynamic-dialog.util.ts","../../../projects/s4y-components/src/lib/components/dynamic-dialog/dynamic-dialog.ref.ts","../../../projects/s4y-components/src/lib/components/dynamic-dialog/dynamic-dialog.component.ts","../../../projects/s4y-components/src/lib/components/dynamic-dialog/dynamic-dialog.component.html","../../../projects/s4y-components/src/lib/components/dynamic-dialog/dynamic-dialog.service.ts","../../../projects/s4y-components/src/lib/components/dynamic-loading-global/dynamic-loading-global.component.ts","../../../projects/s4y-components/src/lib/components/dynamic-loading-global/dynamic-loading-global.service.ts","../../../projects/s4y-components/src/lib/components/rating/rating.component.ts","../../../projects/s4y-components/src/lib/components/rating/rating.component.html","../../../projects/s4y-components/src/lib/components/tag/tag.component.ts","../../../projects/s4y-components/src/lib/components/tag/tag.component.html","../../../projects/s4y-components/src/lib/components/confirmation/confirmation.component.ts","../../../projects/s4y-components/src/lib/components/confirmation/confirmation.component.html","../../../projects/s4y-components/src/lib/components/confirmation/confirmation.service.ts","../../../projects/s4y-components/src/lib/components/collapse/collapse.component.ts","../../../projects/s4y-components/src/lib/components/collapse/collapse-panel.component.ts","../../../projects/s4y-components/src/lib/components/collapse/collapse.module.ts","../../../projects/s4y-components/src/lib/components/information-banner/information-banner.component.ts","../../../projects/s4y-components/src/lib/components/information-banner/information-banner.component.html","../../../projects/s4y-components/src/public-api.ts","../../../projects/s4y-components/src/s4y-ui.ts"],"sourcesContent":["import {\r\n Component,\r\n ContentChild,\r\n contentChild,\r\n TemplateRef,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dashboard-layout',\r\n templateUrl: './dashboard-layout.component.html',\r\n styleUrl: './dashboard-layout.component.scss',\r\n standalone: false,\r\n})\r\nexport class DashboardLayoutComponent {\r\n @ContentChild('asideTemplate') asideTemplate!: TemplateRef<any>;\r\n @ContentChild('navTemplate') navTemplate!: TemplateRef<any>;\r\n @ContentChild('rightPanel') rightPanel!: TemplateRef<any>;\r\n}\r\n","<div class=\"s4y-dashboard-layout\">\r\n @if (asideTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"asideTemplate\"></ng-container>\r\n } @else {\r\n <ng-content select=\"s4y-aside\"></ng-content>\r\n }\r\n <div class=\"s4y-dashboard-layout__content\">\r\n @if (navTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"navTemplate\"></ng-container>\r\n } @else {\r\n <ng-content select=\"s4y-navbar\"></ng-content>\r\n }\r\n <ng-content select=\"s4y-dashboard-routes\"></ng-content>\r\n </div>\r\n @if (rightPanel) {\r\n <ng-container [ngTemplateOutlet]=\"rightPanel\"></ng-container>\r\n }\r\n</div>\r\n","import { computed, Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AsideService {\r\n private readonly MOBILE_MAX_WIDTH = 1025;\r\n\r\n private _isOpened = signal<boolean>(true);\r\n\r\n isOpened = computed(() => this._isOpened());\r\n\r\n private readonly resizeHandler = () => this.defaultStateInMobile();\r\n\r\n constructor() {\r\n if (typeof window !== 'undefined') {\r\n window.addEventListener('resize', this.resizeHandler, { passive: true });\r\n this.defaultStateInMobile();\r\n }\r\n }\r\n\r\n onToggle(value?: boolean) {\r\n if (value === undefined) {\r\n this._isOpened.update((s) => !s);\r\n } else {\r\n this._isOpened.set(value);\r\n }\r\n }\r\n\r\n private defaultStateInMobile() {\r\n if (window.innerWidth < this.MOBILE_MAX_WIDTH) {\r\n this._isOpened.set(false);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (typeof window !== 'undefined') {\r\n window.removeEventListener('resize', this.resizeHandler);\r\n }\r\n }\r\n}\r\n","import { Component, ContentChild, inject, TemplateRef } from '@angular/core';\r\nimport { AsideService } from '../aside/aside.service';\r\n\r\n@Component({\r\n selector: 's4y-navbar',\r\n templateUrl: './navbar.component.html',\r\n styleUrl: './navbar.component.scss',\r\n standalone: false,\r\n})\r\nexport class NavbarComponent {\r\n protected _asideService = inject(AsideService);\r\n\r\n @ContentChild('actionsTemplate')\r\n actionsTemplate!: TemplateRef<any>;\r\n}\r\n","<nav class=\"s4y-navbar-container\">\r\n <button\r\n (click)=\"_asideService.onToggle()\"\r\n class=\"s4y-navbar-container__btn\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"menuIcon\"></ng-container>\r\n </button>\r\n\r\n <div class=\"s4y-navbar-container__actions\">\r\n <ng-container *ngIf=\"actionsTemplate\">\r\n <ng-container [ngTemplateOutlet]=\"actionsTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n</nav>\r\n\r\n\r\n<ng-template #menuIcon>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path d=\"M3 4H21V6H3V4ZM3 11H15V13H3V11ZM3 18H21V20H3V18Z\"></path>\r\n </svg>\r\n</ng-template>\r\n","import {\r\n Component,\r\n HostBinding,\r\n Input,\r\n computed,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { NgIf, NgClass, CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-avatar',\r\n imports: [CommonModule],\r\n templateUrl: './avatar.component.html',\r\n styleUrl: './avatar.component.scss',\r\n})\r\nexport class AvatarComponent {\r\n src = input<string | undefined>(undefined); // URL da imagem\r\n alt = input<string>('Avatar'); // Texto alternativo\r\n size = input<'sm' | 'md' | 'lg' | 'xl'>('md'); // Tamanho\r\n rounded = input<boolean>(true); // Arredondar ou não\r\n border = input<boolean>(false); // Borda decorativa\r\n // Estados internos\r\n imageLoaded = signal(false);\r\n imageError = signal(false);\r\n\r\n @HostBinding('class')\r\n get hostClasses(): string {\r\n const classes = [];\r\n\r\n switch (this.size()) {\r\n case 'sm':\r\n classes.push('s4y-avatar-sm');\r\n break;\r\n case 'md':\r\n classes.push('s4y-avatar-md');\r\n break;\r\n case 'lg':\r\n classes.push('s4y-avatar-lg');\r\n break;\r\n case 'xl':\r\n classes.push('s4y-avatar-xl');\r\n break;\r\n default:\r\n classes.push('s4y-avatar-md');\r\n }\r\n\r\n classes.push(this.rounded() ? 's4y-avatar-rounded' : 's4y-avatar-square');\r\n\r\n if (this.border()) {\r\n classes.push('s4y-avatar-border');\r\n }\r\n\r\n return classes.join(' ');\r\n }\r\n\r\n onLoad() {\r\n this.imageLoaded.set(true);\r\n this.imageError.set(false);\r\n }\r\n\r\n onError() {\r\n this.imageError.set(true);\r\n }\r\n}\r\n","@if (src()) {\r\n<img [src]=\"src()\" [alt]=\"alt()\" />\r\n\r\n}@else {\r\n <svg\r\n viewBox=\"0 0 128 128\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n style=\"display:block\"\r\n >\r\n <circle cx=\"64\" cy=\"64\" r=\"64\" fill=\"#D9D9D9\" />\r\n\r\n <circle cx=\"64\" cy=\"48\" r=\"24\" fill=\"#A9AEB3\" />\r\n\r\n <path\r\n fill=\"#A9AEB3\"\r\n d=\"M64 80c-28 0-44 16-44 36v12h88v-12c0-20-16-36-44-36z\"\r\n />\r\n </svg>\r\n}\r\n","// src/app/icon/icon.service.ts\r\nimport { Injectable } from '@angular/core';\r\nimport { defer, from, Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SvgService {\r\n private requests = new Map<string, Promise<string>>();\r\n\r\n getSvgContent(url: string): Observable<string> {\r\n let request = this.requests.get(url);\r\n\r\n if (!request) {\r\n request = fetch(url).then((response) => {\r\n if (!response.ok) {\r\n throw new Error(`Erro ao carregar SVG: ${response.statusText}`);\r\n }\r\n return response.text();\r\n });\r\n\r\n this.requests.set(url, request);\r\n }\r\n\r\n return defer(() => from(request)).pipe(\r\n catchError((error) => {\r\n console.error('Erro ao carregar SVG:', error);\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n HostBinding,\r\n Input,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { SvgService } from './svg.service';\r\nimport { AsyncPipe, JsonPipe } from '@angular/common';\r\n\r\nexport type TSvgSize = number | string;\r\n\r\n@Component({\r\n selector: 's4y-svg',\r\n templateUrl: './svg.component.html',\r\n styleUrls: ['./svg.component.scss'],\r\n imports: [AsyncPipe, JsonPipe],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SvgComponent {\r\n public svgContent: Observable<SafeHtml> | undefined;\r\n private _size: TSvgSize = '24px';\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n private svgService: SvgService,\r\n ) {}\r\n\r\n @Input()\r\n set src(value: string | undefined | null) {\r\n if (!value) return;\r\n\r\n this.setSvgContent(value);\r\n }\r\n\r\n @Input() @HostBinding('style.color') color: string = 'currentColor';\r\n\r\n @Input()\r\n set size(value: TSvgSize) {\r\n switch (value) {\r\n case 'small':\r\n this._size = '16px';\r\n break;\r\n case 'default':\r\n this._size = '24px';\r\n break;\r\n case 'large':\r\n this._size = '32px';\r\n break;\r\n default:\r\n this._size = value;\r\n }\r\n }\r\n\r\n @HostBinding('style.width')\r\n get hostWidth(): string {\r\n return this.normalizeSize(this._size);\r\n }\r\n\r\n @HostBinding('style.height')\r\n get hostHeight(): string {\r\n return this.normalizeSize(this._size);\r\n }\r\n\r\n private normalizeSize(v: TSvgSize): string {\r\n if (!v) return '24px';\r\n if (typeof v === 'number' && Number.isFinite(v) && v > 0) return `${v}px`;\r\n if (typeof v === 'string') return v.trim() || '24px';\r\n return '24px';\r\n }\r\n\r\n private setSvgContent(src: string): void {\r\n this.svgContent = this.svgService\r\n .getSvgContent(src)\r\n .pipe(map((content) => this.sanitizer.bypassSecurityTrustHtml(content)));\r\n }\r\n}\r\n","<div class=\"icon-inner\" [innerHTML]=\"svgContent | async\" ></div>\r\n","import {\r\n Component,\r\n ContentChild,\r\n inject,\r\n input,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { Router } from '@angular/router';\r\nimport { AsideService } from './aside.service';\r\n\r\nexport interface iMenuItem {\r\n title: string;\r\n link: string;\r\n iconUri?: string;\r\n isOpen?: boolean;\r\n children?: { title: string; link: string }[];\r\n roles: string[];\r\n}\r\n\r\n@Component({\r\n selector: 's4y-aside',\r\n templateUrl: './aside.component.html',\r\n styleUrl: './aside.component.scss',\r\n standalone: false,\r\n host: {\r\n '[attr.data-opened]': 'isOpened()',\r\n },\r\n})\r\nexport class AsideComponent {\r\n private router = inject(Router);\r\n private sanitizer = inject(DomSanitizer);\r\n protected asideService = inject(AsideService);\r\n\r\n menus = input<iMenuItem[]>([]);\r\n\r\n companyLogoSrc = input<string>(\r\n 'https://vanderson-teste.sirv.com/ChatGPT%20Image%2024%20de%20abr.%20de%202025%2C%2009_37_39%201%20(1).png',\r\n );\r\n companyTitle = input<string>('Solution4You');\r\n companyDescription = input<string>('Tecnologia');\r\n\r\n userImage = input<string>('');\r\n userName = input<string>('');\r\n userEmail = input<string>('');\r\n\r\n isOpened = this.asideService.isOpened;\r\n\r\n @ContentChild('menuTemplate') menuTemplate!: TemplateRef<any>;\r\n @ContentChild('headerTemplate') headerTemplate!: TemplateRef<any>;\r\n @ContentChild('footerTemplate') footerTemplate!: TemplateRef<any>;\r\n\r\n onToggle(menu: iMenuItem) {\r\n if (menu.children && menu.children.length > 0) {\r\n this.closeOtherMenus(menu);\r\n\r\n if (!this.isOpened()) {\r\n this.asideService.onToggle();\r\n }\r\n\r\n menu.isOpen = !menu.isOpen;\r\n } else {\r\n this.router.navigate([menu.link]);\r\n }\r\n }\r\n\r\n closeOtherMenus(menuToKeepOpen: iMenuItem) {\r\n this.menus().forEach((menu) => {\r\n if (menu !== menuToKeepOpen) {\r\n menu.isOpen = false;\r\n }\r\n });\r\n }\r\n\r\n sanitizeSvg(iconUri: string): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(iconUri); // Sanitiza o conteúdo SVG\r\n }\r\n\r\n closeByOverlay() {\r\n this.asideService.onToggle();\r\n }\r\n}\r\n","<div class=\"s4y-aside-overlay\" (click)=\"closeByOverlay()\"></div>\r\n\r\n<aside [attr.data-opened]=\"isOpened()\" class=\"s4y-aside\">\r\n <div class=\"s4y-aside-header__container\">\r\n @if (headerTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"></ng-container>\r\n } @else {\r\n <div class=\"s4y-aside-header\">\r\n <img class=\"s4y-aside-logo\" [src]=\"companyLogoSrc()\" />\r\n <div class=\"s4y-aside-header__infor\">\r\n <p class=\"s4y-aside-title\">{{ companyTitle() }}</p>\r\n <p class=\"s4y-aside-description\">{{ companyDescription() }}</p>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"s4y-aside-body__container\">\r\n <!-- Body Abaixo -->\r\n <div class=\"s4y-aside-body-section\">\r\n @for (menu of menus(); track $index) {\r\n <div class=\"s4y-aside-body-section__item\">\r\n <div\r\n class=\"s4y-aside-body-section-item__infor\"\r\n [class.active]=\"menu.isOpen\"\r\n (click)=\"onToggle(menu)\"\r\n >\r\n <div\r\n class=\"s4y-aside-body-section-item-title\"\r\n [class.closed]=\"!isOpened\"\r\n >\r\n @if (menuTemplate) {\r\n <ng-container\r\n *ngTemplateOutlet=\"menuTemplate; context: { $implicit: menu }\"\r\n ></ng-container>\r\n } @else\r\n { @if (menu.iconUri) {\r\n <s4y-svg size=\"default\" color=\"#fff\" [src]=\"menu.iconUri\"> </s4y-svg>\r\n }\r\n <p>{{ menu.title }}</p>\r\n }\r\n </div>\r\n\r\n @if (menu.children?.length) {\r\n <!-- -->\r\n @if (menu.isOpen) {\r\n <ng-container [ngTemplateOutlet]=\"arrowBottom\"></ng-container>\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"arrowRight\"></ng-container>\r\n }\r\n <!-- -->\r\n }\r\n </div>\r\n <div class=\"s4y-aside-body-section-item__children\" [class.is-opened]=\"menu.isOpen\">\r\n @for (children of menu.children; track $index) {\r\n <div class=\"s4y-aside-body-section-item-children__item\">\r\n <a role=\"link\" routerLinkActive=\"children-active\" [routerLinkActiveOptions]=\"{exact: true}\" [routerLink]=\"children.link\">{{ children.title }}</a>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n <!-- <div class=\"s4y-aside-body-section__scroll\"></div> -->\r\n </div>\r\n <!-- Body Acima -->\r\n <div class=\"s4y-aside-body__user\" [class.s4y-aside-body__user_divider]=\"footerTemplate || (userImage() && userName() && userEmail())\">\r\n @if (footerTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"footerTemplate\"></ng-container>\r\n } @else {\r\n @if (userImage()) {\r\n <s4y-avatar [src]=\"userImage()\"></s4y-avatar>\r\n }\r\n <div class=\"s4y-aside-body-user__infor\">\r\n <p class=\"s4y-aside-body-user_name\">{{ userName() }}</p>\r\n <p class=\"s4y-aside-body-user_email\">{{ userEmail() }}</p>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</aside>\r\n\r\n<ng-template #arrowRight>\r\n <span class=\"s4y-aside-arrow\">\r\n <svg\r\n width=\"1.8rem\"\r\n height=\"1.8rem\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M13.1717 12.0007L8.22192 7.05093L9.63614 5.63672L16.0001 12.0007L9.63614 18.3646L8.22192 16.9504L13.1717 12.0007Z\"\r\n ></path>\r\n </svg>\r\n </span>\r\n</ng-template>\r\n<ng-template #arrowBottom>\r\n <span class=\"s4y-aside-arrow\">\r\n <svg\r\n width=\"1.8rem\"\r\n height=\"1.8rem\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"\r\n ></path>\r\n </svg>\r\n </span>\r\n</ng-template>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dashboard-routes',\r\n templateUrl: './dashboard-routes.component.html',\r\n styleUrl: './dashboard-routes.component.scss',\r\n standalone: false,\r\n host: {},\r\n})\r\nexport class DashboardRoutesComponent {}\r\n","<div class=\"s4y-dashboard-routes-container\" cdkScrollable>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dashboard-container',\r\n templateUrl: './dashboard-container.component.html',\r\n styleUrl: './dashboard-container.component.scss',\r\n standalone: false,\r\n})\r\nexport class DashboardContainerComponent {}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport { DashboardLayoutComponent } from './dashboard-layout/dashboard-layout.component';\r\nimport { AsideComponent } from './aside/aside.component';\r\nimport { RouterLink, RouterModule } from '@angular/router';\r\nimport { NavbarComponent } from './navbar/navbar.component';\r\nimport { AvatarComponent } from '../avatar/avatar.component';\r\nimport { DashboardRoutesComponent } from './dashboard-routes/dashboard-routes.component';\r\nimport { DashboardContainerComponent } from './dashboard-container/dashboard-container.component';\r\nimport { SvgComponent } from '../svg/svg.component';\r\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\r\n\r\nconst COMPONENTS = [\r\n DashboardLayoutComponent,\r\n AsideComponent,\r\n NavbarComponent,\r\n DashboardRoutesComponent,\r\n DashboardContainerComponent,\r\n];\r\n\r\n@NgModule({\r\n declarations: [COMPONENTS],\r\n exports: [COMPONENTS],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n AvatarComponent,\r\n SvgComponent,\r\n CdkScrollableModule,\r\n ],\r\n})\r\nexport class DashboardModule {}\r\n","// lib/components/dashboard/index.ts\r\nexport * from './dashboard-layout/dashboard-layout.component';\r\nexport * from './navbar/navbar.component';\r\nexport * from './aside/aside.component';\r\nexport * from './aside/aside.service';\r\nexport * from './dashboard-routes/dashboard-routes.component';\r\nexport * from './dashboard-container/dashboard-container.component';\r\nexport * from './dashboard.module';\r\n","import {\r\n AfterViewInit,\r\n booleanAttribute,\r\n Component,\r\n computed,\r\n HostBinding,\r\n input,\r\n} from '@angular/core';\r\nimport { tButtonSize, tButtonVariant } from './button.interface';\r\n\r\n@Component({\r\n selector: 'button[s4yButton], a[s4yButton]',\r\n imports: [],\r\n template: `\r\n @if (loading()) {\r\n <div class=\"loader\"></div>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n `,\r\n styleUrl: './button.component.scss',\r\n standalone: true,\r\n host: {\r\n '[class.btn-default]': 'true',\r\n '[class.loading]': 'loading()',\r\n '[attr.size]': 'size()',\r\n '[attr.variant]': 'variant()',\r\n '[style.width]': 'fullWidth() ? \"100%\" : null',\r\n '[class.outlined]': 'outlined()',\r\n '[class.disabled]': 'disabled()',\r\n '[class]': 'variantClass()',\r\n '[class.icon-centered]': 'iconAligned()',\r\n '[class.rounded]': 'roundend()',\r\n },\r\n})\r\nexport class ButtonComponent implements AfterViewInit {\r\n disabled = input(false);\r\n outlined = input(false, { transform: booleanAttribute });\r\n loading = input(false);\r\n size = input<tButtonSize>('medium');\r\n\r\n roundend = input<boolean>(true);\r\n\r\n variant = input<tButtonVariant>('primary');\r\n\r\n fullWidth = input<boolean>(false);\r\n iconAligned = input<boolean>(true);\r\n\r\n ngAfterViewInit(): void {}\r\n\r\n @HostBinding('disabled')\r\n protected get isDisabled() {\r\n return this.loading() || this.disabled();\r\n }\r\n\r\n protected variantClass = computed(() => {\r\n switch (this.variant()) {\r\n case 'primary':\r\n return 'btn-primary';\r\n case 'secondary':\r\n return 'btn-secondary';\r\n case 'danger':\r\n return 'btn-danger';\r\n case 'success':\r\n return 'btn-success';\r\n case 'info':\r\n return 'btn-info';\r\n case 'gray':\r\n return 'btn-gray';\r\n default:\r\n return 'btn-primary';\r\n }\r\n });\r\n}\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-form-field',\r\n templateUrl: './form-field.component.html',\r\n styleUrl: './form-field.component.scss',\r\n standalone: false,\r\n})\r\nexport class FormFieldComponent {}\r\n","<label class=\"s4y-form-field\">\r\n <ng-content select=\"s4y-label\"></ng-content>\r\n <div class=\"s4y-input-wrapper\">\r\n <ng-content select=\"s4y-input-prefix\"></ng-content>\r\n <ng-content select=\"input, textarea\"></ng-content>\r\n <ng-content select=\"s4y-input-sufix\"></ng-content>\r\n </div>\r\n</label>\r\n<ng-content select=\"s4y-hint, s4y-error-message\"></ng-content>\r\n","import { Component, input } from '@angular/core';\r\n\r\nexport type tInputSize = 'extra-small' | 'small' | 'medium' | 'large';\r\n\r\n@Component({\r\n selector: 'input[s4y-input], textarea[s4y-input]',\r\n templateUrl: './input.component.html',\r\n styleUrl: './input.component.scss',\r\n standalone: false,\r\n host: {\r\n '[attr.size]': 'size()',\r\n },\r\n})\r\nexport class InputComponent {\r\n size = input<tInputSize>('medium');\r\n}\r\n","<p>input works!</p>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-label',\r\n templateUrl: './label.component.html',\r\n styleUrl: './label.component.scss',\r\n standalone: false,\r\n})\r\nexport class LabelComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-hint',\r\n templateUrl: './hint.component.html',\r\n styleUrl: './hint.component.scss',\r\n standalone: false,\r\n})\r\nexport class HintComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-error-message',\r\n templateUrl: './error-message.component.html',\r\n styleUrl: './error-message.component.scss',\r\n standalone: false,\r\n})\r\nexport class ErrorMessageComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-input-prefix',\r\n templateUrl: './input-prefix.component.html',\r\n styleUrl: './input-prefix.component.scss',\r\n standalone: false,\r\n})\r\nexport class InputPrefixComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-input-sufix',\r\n templateUrl: './input-sufix.component.html',\r\n styleUrl: './input-sufix.component.scss',\r\n standalone: false,\r\n})\r\nexport class InputSufixComponent {}\r\n","<ng-content></ng-content>\r\n","import { Component, forwardRef, input, model } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 's4y-form-field-password',\r\n templateUrl: './form-field-password.component.html',\r\n styleUrl: './form-field-password.component.scss',\r\n standalone: false,\r\n providers: [\r\n {\r\n multi: true,\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FormFieldPasswordComponent),\r\n },\r\n ],\r\n})\r\nexport class FormFieldPasswordComponent implements ControlValueAccessor {\r\n type: 'text' | 'password' = 'password';\r\n\r\n label = input<string>('Senha');\r\n name = input.required<string>();\r\n id = input.required<string>();\r\n placeholder = input<string>(this.label());\r\n\r\n protected value: string = '';\r\n protected disabled: boolean = false;\r\n\r\n protected togglePasswordVisibility(): void {\r\n this.type = this.type === 'text' ? 'password' : 'text';\r\n }\r\n\r\n onInput(e: Event) {\r\n const value = (e.target as HTMLInputElement).value;\r\n\r\n this.value = value;\r\n this.onChanged(this.value);\r\n this.onTouched();\r\n }\r\n\r\n onChanged = (value: string) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.value = value || '';\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChanged = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","<label class=\"s4y-form-field\">\r\n <s4y-label>\r\n {{ label() }}\r\n </s4y-label>\r\n <div class=\"s4y-input-wrapper\">\r\n <ng-content select=\"s4y-input-prefix\"></ng-content>\r\n <input\r\n s4y-input\r\n [value]=\"value\"\r\n (input)=\"onInput($event)\"\r\n (blur)=\"onTouched()\"\r\n [disabled]=\"disabled\"\r\n [type]=\"type\"\r\n [name]=\"name()\"\r\n [id]=\"id()\"\r\n [placeholder]=\"placeholder()\"\r\n />\r\n <s4y-input-sufix>\r\n <button\r\n type=\"button\"\r\n class=\"shown-password\"\r\n (click)=\"togglePasswordVisibility()\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"eye\"></ng-container>\r\n </button>\r\n </s4y-input-sufix>\r\n </div>\r\n</label>\r\n<ng-content select=\"s4y-hint, s4y-error-message\"></ng-content>\r\n\r\n<!-- Icone cadeado -->\r\n<ng-template #eye>\r\n <!-- Olho fechado -->\r\n @if (type == \"password\") {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12.0003 3C17.3924 3 21.8784 6.87976 22.8189 12C21.8784 17.1202 17.3924 21 12.0003 21C6.60812 21 2.12215 17.1202 1.18164 12C2.12215 6.87976 6.60812 3 12.0003 3ZM12.0003 19C16.2359 19 19.8603 16.052 20.7777 12C19.8603 7.94803 16.2359 5 12.0003 5C7.7646 5 4.14022 7.94803 3.22278 12C4.14022 16.052 7.7646 19 12.0003 19ZM12.0003 16.5C9.51498 16.5 7.50026 14.4853 7.50026 12C7.50026 9.51472 9.51498 7.5 12.0003 7.5C14.4855 7.5 16.5003 9.51472 16.5003 12C16.5003 14.4853 14.4855 16.5 12.0003 16.5ZM12.0003 14.5C13.381 14.5 14.5003 13.3807 14.5003 12C14.5003 10.6193 13.381 9.5 12.0003 9.5C10.6196 9.5 9.50026 10.6193 9.50026 12C9.50026 13.3807 10.6196 14.5 12.0003 14.5Z\"\r\n ></path>\r\n </svg>\r\n }\r\n\r\n <!-- Olho aberto -->\r\n @if (type == \"text\") {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M17.8827 19.2968C16.1814 20.3755 14.1638 21.0002 12.0003 21.0002C6.60812 21.0002 2.12215 17.1204 1.18164 12.0002C1.61832 9.62282 2.81932 7.5129 4.52047 5.93457L1.39366 2.80777L2.80788 1.39355L22.6069 21.1925L21.1927 22.6068L17.8827 19.2968ZM5.9356 7.3497C4.60673 8.56015 3.6378 10.1672 3.22278 12.0002C4.14022 16.0521 7.7646 19.0002 12.0003 19.0002C13.5997 19.0002 15.112 18.5798 16.4243 17.8384L14.396 15.8101C13.7023 16.2472 12.8808 16.5002 12.0003 16.5002C9.51498 16.5002 7.50026 14.4854 7.50026 12.0002C7.50026 11.1196 7.75317 10.2981 8.19031 9.60442L5.9356 7.3497ZM12.9139 14.328L9.67246 11.0866C9.5613 11.3696 9.50026 11.6777 9.50026 12.0002C9.50026 13.3809 10.6196 14.5002 12.0003 14.5002C12.3227 14.5002 12.6309 14.4391 12.9139 14.328ZM20.8068 16.5925L19.376 15.1617C20.0319 14.2268 20.5154 13.1586 20.7777 12.0002C19.8603 7.94818 16.2359 5.00016 12.0003 5.00016C11.1544 5.00016 10.3329 5.11773 9.55249 5.33818L7.97446 3.76015C9.22127 3.26959 10.5793 3.00016 12.0003 3.00016C17.3924 3.00016 21.8784 6.87992 22.8189 12.0002C22.5067 13.6998 21.8038 15.2628 20.8068 16.5925ZM11.7229 7.50857C11.8146 7.50299 11.9071 7.50016 12.0003 7.50016C14.4855 7.50016 16.5003 9.51488 16.5003 12.0002C16.5003 12.0933 16.4974 12.1858 16.4919 12.2775L11.7229 7.50857Z\"\r\n ></path>\r\n </svg>\r\n }\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormFieldComponent } from './form-field/form-field.component';\r\nimport { InputComponent } from './components/input/input.component';\r\nimport { LabelComponent } from './components/label/label.component';\r\nimport { HintComponent } from './components/hint/hint.component';\r\nimport { ErrorMessageComponent } from './components/error-message/error-message.component';\r\nimport { InputPrefixComponent } from './components/input-prefix/input-prefix.component';\r\nimport { InputSufixComponent } from './components/input-sufix/input-sufix.component';\r\nimport { FormFieldPasswordComponent } from './form-field-password/form-field-password.component';\r\n\r\nconst COMPONENTS = [\r\n FormFieldComponent,\r\n InputComponent,\r\n LabelComponent,\r\n HintComponent,\r\n ErrorMessageComponent,\r\n InputPrefixComponent,\r\n InputSufixComponent,\r\n FormFieldPasswordComponent,\r\n];\r\n\r\n@NgModule({\r\n declarations: COMPONENTS,\r\n exports: COMPONENTS,\r\n imports: [CommonModule],\r\n})\r\nexport class FormsKitModule {}\r\n","// lib/components/forms-kit/index.ts\r\nexport * from './forms-kit.module';\r\nexport * from './form-field-password/form-field-password.component';\r\nexport * from './form-field/form-field.component';\r\nexport * from './components/error-message/error-message.component';\r\nexport * from './components/hint/hint.component';\r\nexport * from './components/input/input.component';\r\nexport * from './components/input-prefix/input-prefix.component';\r\nexport * from './components/input-sufix/input-sufix.component';\r\nexport * from './components/label/label.component';\r\n","import {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\nexport type tMask =\r\n | 'cep'\r\n | 'cnpj'\r\n | 'cpf'\r\n | 'data'\r\n | 'moeda'\r\n | 'porcentagem'\r\n | 'telefone'\r\n | 'telefone-fixo';\r\n\r\n@Directive({\r\n selector: '[s4yMask]',\r\n standalone: true,\r\n})\r\nexport class MaskDirective implements AfterViewInit {\r\n mask = input<tMask | string | undefined>(undefined, { alias: 's4yMask' });\r\n showMaskType = input<boolean>(false);\r\n\r\n private control = inject(NgControl, { optional: true });\r\n constructor(private el: ElementRef<HTMLInputElement>) {}\r\n\r\n ngAfterViewInit(): void {\r\n if (this.showMaskType()) {\r\n this._applyPlaceholderMask();\r\n }\r\n }\r\n\r\n private _applyPlaceholderMask() {\r\n const input = this.el.nativeElement;\r\n\r\n switch (this.mask()) {\r\n case 'cep':\r\n input.value = this._toCEP(input.value);\r\n break;\r\n case 'cpf':\r\n input.value = this._toCPF(input.value);\r\n break;\r\n case 'cnpj':\r\n input.value = this._toCNPJ(input.value);\r\n break;\r\n case 'data':\r\n input.value = this._toDate(input.value);\r\n break;\r\n case 'moeda':\r\n input.value = this._toCurrency(input.value);\r\n break;\r\n case 'porcentagem':\r\n input.value = this._toPercent(input.value);\r\n break;\r\n case 'telefone':\r\n input.value = this._toMobilePhone(input.value);\r\n break;\r\n case 'telefone-fixo':\r\n input.value = this._toLandlinePhone(input.value);\r\n break;\r\n }\r\n }\r\n\r\n @HostListener('focus')\r\n @HostListener('click')\r\n onFocusOrClick() {\r\n const input = this.el.nativeElement;\r\n const value = input.value;\r\n\r\n const type = this.mask();\r\n\r\n const templates: Record<tMask, string> = {\r\n data: '__/__/____',\r\n cpf: '___.___.___-__',\r\n cnpj: '__.___.___/____-__',\r\n cep: '_____-___',\r\n moeda: '', // máscara de moeda não precisa de cursor fixo\r\n porcentagem: '', // idem\r\n telefone: '(__) _____-____',\r\n 'telefone-fixo': '(__) ____-____',\r\n };\r\n\r\n // Se não for uma máscara válida, ignora\r\n if (!type || !(type in templates)) return;\r\n\r\n const template = templates[type as tMask];\r\n\r\n // Só reposiciona se tiver template definido\r\n if (template) {\r\n this._setCursorToNextEditable(template, value);\r\n }\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n private onInput(e: InputEvent) {\r\n const input = this.el.nativeElement;\r\n const value = input.value;\r\n\r\n switch (this.mask()) {\r\n case 'data': {\r\n const template = '__/__/____';\r\n const masked = this._applyMaskTemplate(value, template);\r\n input.value = masked;\r\n this._setCursorToNextEditable(template, value);\r\n break;\r\n }\r\n\r\n case 'cpf': {\r\n const template = '___.___.___-__';\r\n const masked = this._applyMaskTemplate(value, template);\r\n input.value = masked;\r\n this._setCursorToNextEditable(template, value);\r\n break;\r\n }\r\n\r\n case 'cnpj': {\r\n const template = '__.___.___/____-__';\r\n const masked = this._applyMaskTemplate(value, template);\r\n input.value = masked;\r\n this._setCursorToNextEditable(template, value);\r\n break;\r\n }\r\n\r\n case 'cep': {\r\n const template = '_____-___';\r\n const masked = this._applyMaskTemplate(value, template);\r\n input.value = masked;\r\n this._setCursorToNextEditable(template, value);\r\n break;\r\n }\r\n\r\n case 'telefone': {\r\n const template = '(__) _____-____';\r\n const masked = this._toMobilePhone(value);\r\n input.value = masked;\r\n this._setCursorToNextEditable(template, value);\r\n break;\r\n }\r\n case 'telefone-fixo': {\r\n const template = '(__) ____-____';\r\n const masked = this._toLandlinePhone(value);\r\n input.value = masked;\r\n this._setCursorToNextEditable(template, value);\r\n break;\r\n }\r\n\r\n case 'moeda': {\r\n input.value = this._toCurrency(value);\r\n break;\r\n }\r\n\r\n case 'porcentagem': {\r\n input.value = this._toPercent(value);\r\n break;\r\n }\r\n }\r\n\r\n if (this.control && this.control.control) {\r\n this.control.control.setValue(input.value, { emitEvent: false });\r\n }\r\n }\r\n\r\n private _toDate = (value: string) =>\r\n this._applyMaskTemplate(value, '__/__/____');\r\n\r\n private _toCPF = (value: string) =>\r\n this._applyMaskTemplate(value, '___.___.___-__');\r\n\r\n private _toCNPJ = (value: string) =>\r\n this._applyMaskTemplate(value, '__.___.___/____-__');\r\n\r\n private _toCEP = (value: string) =>\r\n this._applyMaskTemplate(value, '_____-___');\r\n\r\n private _toMobilePhone = (value: string): string =>\r\n this._applyMaskTemplate(value, '(__) _____-____');\r\n\r\n private _toLandlinePhone = (value: string): string =>\r\n this._applyMaskTemplate(value, '(__) ____-____');\r\n\r\n private _toCurrency = (value: string) => {\r\n // Remove qualquer caractere não numérico\r\n const cleaned = value.replace(/\\D/g, '');\r\n\r\n // Se estiver vazio, retorna 0 formatado\r\n if (!cleaned) return 'R$ 0,00';\r\n\r\n const number = parseFloat(cleaned) / 100;\r\n\r\n return number.toLocaleString('pt-BR', {\r\n style: 'currency',\r\n currency: 'BRL',\r\n });\r\n };\r\n\r\n private _toPercent = (value: string) => {\r\n // Remove tudo que não for número\r\n const cleaned = value.replace(/\\D/g, '');\r\n\r\n // Limita a 6 dígitos (ex: 999999 → 9999,99%)\r\n const limited = cleaned.slice(0, 6);\r\n\r\n // Garante um valor numérico válido\r\n const number = parseFloat(limited || '0') / 100;\r\n\r\n // Formata com 2 casas decimais e adiciona % manualmente\r\n return (\r\n number.toLocaleString('pt-BR', {\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n }) + '%'\r\n );\r\n };\r\n\r\n private _applyMaskTemplate(value: string, template: string): string {\r\n const result = template.split('');\r\n let i = 0;\r\n\r\n for (const digit of value.replace(/\\D/g, '')) {\r\n while (i < result.length && !['_'].includes(result[i])) i++;\r\n if (i < result.length) result[i++] = digit;\r\n }\r\n\r\n return result.join('');\r\n }\r\n\r\n private _getCursorPosition(template: string, digitsCount: number): number {\r\n let count = 0;\r\n for (let i = 0; i < template.length; i++) {\r\n if (template[i].match(/[_\\d]/)) count++;\r\n if (count >= digitsCount) return i + 1;\r\n }\r\n return template.length;\r\n }\r\n\r\n private _setCursorToNextEditable(template: string, value: string) {\r\n const input = this.el.nativeElement;\r\n const digits = value.replace(/\\D/g, '');\r\n const nextPos = this._getCursorPosition(template, digits.length);\r\n setTimeout(() => input.setSelectionRange(nextPos, nextPos));\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[s4yClickOutside]',\r\n standalone: true,\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() clickOutside = new EventEmitter<void>();\r\n @Input() isVisible: boolean = false;\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n handleClick(targetElement: HTMLElement): void {\r\n const clickedInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n}\r\n","import {\r\n animate,\r\n style,\r\n transition,\r\n trigger,\r\n AnimationTriggerMetadata,\r\n} from '@angular/animations';\r\n\r\nexport const ToastAnimation: AnimationTriggerMetadata = trigger(\r\n 'ToastAnimation',\r\n [\r\n // TOPO\r\n transition('top-left => void, top-right => void', [\r\n animate(\r\n '300ms ease-in',\r\n style({ opacity: 0, transform: 'translateY(-20px)' })\r\n ),\r\n ]),\r\n transition('void => top-left, void => top-right', [\r\n style({ opacity: 0, transform: 'translateY(-20px)' }),\r\n animate(\r\n '300ms ease-out',\r\n style({ opacity: 1, transform: 'translateY(0)' })\r\n ),\r\n ]),\r\n\r\n // BOTTOM\r\n transition('bottom-left => void, bottom-right => void', [\r\n animate(\r\n '300ms ease-in',\r\n style({ opacity: 0, transform: 'translateY(20px)' })\r\n ),\r\n ]),\r\n transition('void => bottom-left, void => bottom-right', [\r\n style({ opacity: 0, transform: 'translateY(20px)' }),\r\n animate(\r\n '300ms ease-out',\r\n style({ opacity: 1, transform: 'translateY(0)' })\r\n ),\r\n ]),\r\n ]\r\n);\r\n","import { computed, Injectable, signal } from '@angular/core';\r\nimport { iToast } from './toast.interface';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ToastService {\r\n private _toasts = signal<iToast[]>([]);\r\n\r\n toasts = computed(() => this._toasts());\r\n\r\n add(toast: iToast) {\r\n const internalId =\r\n typeof crypto?.randomUUID === 'function'\r\n ? crypto.randomUUID()\r\n : this.generateUUID();\r\n\r\n const toastWithId: iToast = { ...toast, __internalId: internalId };\r\n\r\n this._toasts.update((list) => [...list, toastWithId]);\r\n\r\n if (toast.duration && toast.duration > 0) {\r\n setTimeout(() => {\r\n this.removeByInternalId(internalId);\r\n }, toast.duration);\r\n }\r\n }\r\n\r\n remove(index: number) {\r\n this._toasts.update((prevState) => {\r\n const newToasts = prevState.filter((_, i) => index != i);\r\n\r\n return newToasts;\r\n });\r\n }\r\n\r\n removeByInternalId(id: string) {\r\n this._toasts.update((list) =>\r\n list.filter((toast) => toast.__internalId !== id),\r\n );\r\n }\r\n\r\n clearAll() {\r\n this._toasts.set([]);\r\n }\r\n\r\n private generateUUID(): string {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16) | 0;\r\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n}\r\n","import { Component, computed, input, signal } from '@angular/core';\r\nimport { ToastService } from './toast.service';\r\nimport { ToastAnimation } from './toast.animation';\r\nimport { ToastPosition } from './toast.interface';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-toast',\r\n imports: [NgClass],\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.scss',\r\n animations: [ToastAnimation],\r\n})\r\nexport class ToastComponent {\r\n position = input<ToastPosition>('top-left');\r\n\r\n constructor(protected _toastService: ToastService) {}\r\n\r\n protected toasts = computed(() => this._toastService.toasts());\r\n\r\n isBottomPosition = computed(() => this.position().startsWith('bottom'));\r\n}\r\n","<!-- Ajustar os icones -->\r\n\r\n<div class=\"s4y-toast-container\" [ngClass]=\"position()\">\r\n @for (toast of toasts(); track $index; let i = $index) {\r\n <div class=\"s4y-toast-item\" [@ToastAnimation]=\"position()\">\r\n <div class=\"s4y-toast-item_content\">\r\n <div class=\"s4y-toast-item_icon {{ toast.type }}\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"#fff\">\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11 7H13V9H11V7ZM11 11H13V17H11V11Z\"\r\n ></path>\r\n </svg>\r\n </div>\r\n <p class=\"s4y-toast-item_message\">\r\n {{ toast.message }}\r\n </p>\r\n </div>\r\n <button (click)=\"_toastService.remove(i)\" class=\"s4y-toast-item_close\">\r\n ×\r\n </button>\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n animate,\r\n group,\r\n query,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nexport const drawerAnimation = trigger('drawerAnimation', [\r\n transition(\r\n ':enter',\r\n [\r\n group([\r\n query(':self', [\r\n style({ opacity: 0 }),\r\n animate('300ms ease-out', style({ opacity: 1 })),\r\n ]),\r\n query(\r\n '.s4y-drawer-container',\r\n [\r\n style({ transform: '{{transformFrom}}' }),\r\n animate('300ms ease-out', style({ transform: 'translate(0, 0)' })),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n ],\r\n { params: { transformFrom: 'translateX(100%)' } }\r\n ),\r\n transition(\r\n ':leave',\r\n [\r\n group([\r\n query(':self', [\r\n style({ opacity: 1 }),\r\n animate('300ms ease-in', style({ opacity: 0 })),\r\n ]),\r\n query(\r\n '.s4y-drawer-container',\r\n [\r\n style({ transform: 'translate(0, 0)' }),\r\n animate('300ms ease-in', style({ transform: '{{transformTo}}' })),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n ],\r\n { params: { transformTo: 'translateX(100%)' } }\r\n ),\r\n]);\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n HostListener,\r\n input,\r\n model,\r\n computed,\r\n OnInit,\r\n effect,\r\n contentChild,\r\n TemplateRef,\r\n ContentChild,\r\n} from '@angular/core';\r\nimport { drawerAnimation } from './drawer.animation';\r\n\r\ntype tPosition = 'left' | 'right' | 'top' | 'bottom';\r\ntype tSize = 'small' | 'medium' | 'large' | string;\r\n\r\n@Component({\r\n selector: 's4y-drawer',\r\n imports: [NgClass, NgTemplateOutlet],\r\n templateUrl: './drawer.component.html',\r\n styleUrl: './drawer.component.scss',\r\n animations: [drawerAnimation],\r\n})\r\nexport class DrawerComponent implements OnInit {\r\n position = input<tPosition>('right');\r\n isOpen = model<boolean>(false);\r\n size = input<tSize>('medium');\r\n backdrop = input<boolean>(true);\r\n closeOnBackdropClick = input<boolean>(true);\r\n hasCloseButton = input<boolean>(true);\r\n\r\n title = input<string>('Title');\r\n\r\n protected isVisible = computed(() => this.isOpen());\r\n\r\n @ContentChild('headerTemplate') headerTemplate!: TemplateRef<any>;\r\n @ContentChild('bodyTemplate') bodyTemplate!: TemplateRef<any>;\r\n @ContentChild('footerTemplate') footerTemplate!: TemplateRef<any>;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n drawerSize = computed(() => {\r\n const size = this.size();\r\n const position = this.position();\r\n\r\n let value: string;\r\n\r\n switch (size) {\r\n case 'small':\r\n value = '250px';\r\n break;\r\n case 'medium':\r\n value = '400px';\r\n break;\r\n case 'large':\r\n value = '600px';\r\n break;\r\n default:\r\n value = size;\r\n }\r\n\r\n if (position === 'left' || position === 'right') {\r\n return { width: value, height: null };\r\n } else {\r\n return { width: null, height: value };\r\n }\r\n });\r\n\r\n isHorizontal = computed(() => {\r\n const pos = this.position();\r\n return pos === 'left' || pos === 'right';\r\n });\r\n\r\n isVertical = computed(() => {\r\n const pos = this.position();\r\n return pos === 'top' || pos === 'bottom';\r\n });\r\n\r\n transformFrom = computed(() => {\r\n switch (this.position()) {\r\n case 'left':\r\n return 'translateX(-100%)';\r\n case 'right':\r\n return 'translateX(100%)';\r\n case 'top':\r\n return 'translateY(-100%)';\r\n case 'bottom':\r\n return 'translateY(100%)';\r\n default:\r\n return 'translateX(100%)'; // Default: right\r\n }\r\n });\r\n\r\n transformTo = computed(() => {\r\n switch (this.position()) {\r\n case 'left':\r\n return 'translateX(-100%)';\r\n case 'right':\r\n return 'translateX(100%)';\r\n case 'top':\r\n return 'translateY(-100%)';\r\n case 'bottom':\r\n return 'translateY(100%)';\r\n default:\r\n return 'translateX(100%)'; // Default: right\r\n }\r\n });\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n closeOnPressEscapeKey(event: KeyboardEvent) {\r\n this.close();\r\n }\r\n\r\n onBackdropClick(event: MouseEvent) {\r\n const target = event.target as HTMLElement;\r\n\r\n if (target.classList.contains('s4y-overlay')) {\r\n if (this.closeOnBackdropClick() && this.isOpen()) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n }\r\n\r\n close() {\r\n if (this.isOpen()) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n\r\n onAnimationDone(event: any) {\r\n if (!this.isOpen()) {\r\n this.isOpen.set(false);\r\n }\r\n }\r\n}\r\n","@if (isVisible()) {\r\n <div\r\n [@drawerAnimation]=\"{\r\n value: '',\r\n params: {\r\n transformFrom: transformFrom(),\r\n transformTo: transformTo(),\r\n },\r\n }\"\r\n [class.s4y-overlay]=\"backdrop()\"\r\n (click)=\"onBackdropClick($event)\"\r\n >\r\n <div\r\n [style.maxWidth]=\"drawerSize().width\"\r\n [style.maxHeight]=\"drawerSize().height\"\r\n [ngClass]=\"{\r\n 's4y-drawer-left': position() === 'left',\r\n 's4y-drawer-right': position() === 'right',\r\n 's4y-drawer-top': position() === 'top',\r\n 's4y-drawer-bottom': position() === 'bottom',\r\n }\"\r\n class=\"s4y-drawer-container\"\r\n >\r\n <header class=\"s4y-header\">\r\n @if (headerTemplate) {\r\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\r\n }\r\n <!-- -->\r\n @else {\r\n <p class=\"s4y-header__title\">{{ title() }}</p>\r\n @if (hasCloseButton()) {\r\n <button (click)=\"close()\">×</button>\r\n }\r\n }\r\n </header>\r\n\r\n <div class=\"s4y-body-content\">\r\n <ng-container *ngTemplateOutlet=\"bodyTemplate\"></ng-container>\r\n </div>\r\n @if (footerTemplate) {\r\n <div class=\"s4y-footer-content\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { Component, input, Input, OnInit } from '@angular/core';\nimport { SpinnerColor, SpinnerSize } from './interface';\n\n@Component({\n selector: 's4y-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss'],\n host: {\n '[attr.size]': 'size()',\n '[attr.color]': 'color()',\n },\n})\nexport class SpinnerComponent implements OnInit {\n size = input<SpinnerSize>('small');\n color = input<SpinnerColor>('primary');\n\n constructor() {}\n\n ngOnInit() {}\n}\n","\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n ContentChild,\r\n ElementRef,\r\n HostBinding,\r\n input,\r\n OnChanges,\r\n output,\r\n signal,\r\n SimpleChanges,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { SpinnerComponent } from '../spinner/spinner.component';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\n\r\nimport { Subject } from 'rxjs';\r\n\r\nexport type TableColumnStickyPosition = 'left' | 'right';\r\n\r\nexport interface ITableColumn<T = any> {\r\n key: keyof T | string;\r\n display: string;\r\n sortable?: boolean;\r\n style?: { [key: string]: any };\r\n\r\n sticky?: TableColumnStickyPosition;\r\n}\r\n\r\nexport interface ICustomSort<T = any> {\r\n key: keyof T | string;\r\n value: ISortDirection;\r\n}\r\n\r\nexport type ISortDirection = 'asc' | 'desc' | 'none';\r\n\r\n@Component({\r\n selector: 's4y-table',\r\n imports: [CommonModule, SpinnerComponent, ScrollingModule],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TableComponent implements OnChanges {\r\n readonly sortStateChanged$ = new Subject<void>();\r\n\r\n @ViewChild('tableScrollContainer') tableScrollContainer!: ElementRef;\r\n\r\n headers = input<ITableColumn[]>([]);\r\n data = input<any[]>([]);\r\n stickyHeader = input(false);\r\n\r\n customSort = input<boolean>(false);\r\n multipleSort = input<boolean>(false);\r\n initialSorts = input<ICustomSort[]>([]);\r\n\r\n sortFunction = output<ICustomSort>();\r\n multiSortFunction = output<ICustomSort[]>();\r\n\r\n sortField = input<string | null>(null);\r\n sortOrder = input<ISortDirection>('none');\r\n\r\n sorts = signal<ICustomSort[]>([]);\r\n\r\n tableHeight = input<string | null>(null);\r\n tableMaxHeight = input<string | null>(null);\r\n\r\n sortedData = computed(() => {\r\n let originalData: any[] = [...this.data()];\r\n\r\n if (this.customSort()) return originalData;\r\n\r\n if (this.multipleSort()) {\r\n const sorts = this.sorts();\r\n if (!sorts.length) return originalData;\r\n\r\n return originalData\r\n .map((item, idx) => ({ item, idx }))\r\n .sort((x, y) => {\r\n for (const s of sorts) {\r\n const key = String(s.key);\r\n const res = this.compareValues(x.item[key], y.item[key], s.value);\r\n if (res !== 0) return res;\r\n }\r\n return x.idx - y.idx;\r\n })\r\n .map((x) => x.item);\r\n }\r\n\r\n const sortBy = this.sortBy();\r\n const direction = this.sortDirection();\r\n\r\n if (!originalData.length || !sortBy || direction === 'none')\r\n return originalData;\r\n\r\n const header = this.headers().find((h) => h.key === sortBy);\r\n\r\n if (!header || header.sortable === false) return originalData;\r\n\r\n return [...originalData].sort((a, b) =>\r\n this.compareValues(a[sortBy], b[sortBy], direction),\r\n );\r\n });\r\n\r\n sortDirection = signal<ISortDirection>('asc');\r\n\r\n isLoading = input<boolean>(false);\r\n hasError = input<boolean>(false);\r\n\r\n currentThElement?: HTMLElement;\r\n\r\n @ContentChild('rowTemplate') rowTemplate!: TemplateRef<any>;\r\n @ContentChild('headTemplate') headTemplate!: TemplateRef<any>;\r\n @ContentChild('emptyTemplate') emptyTemplate!: TemplateRef<any>;\r\n @ContentChild('errorTemplate') errorTemplate!: TemplateRef<any>;\r\n\r\n @ContentChild('customEmptyTemplate') customEmptyTemplate!: TemplateRef<any>;\r\n @ContentChild('customErrorTemplate') customErrorTemplate!: TemplateRef<any>;\r\n\r\n @ContentChild('fetchMoreLoadingTemplate')\r\n fetchMoreLoadingTemplate!: TemplateRef<any>;\r\n\r\n @ContentChild('fetchMoreErrorTemplate')\r\n fetchMoreErrorTemplate!: TemplateRef<any>;\r\n\r\n @ContentChild('endReachedTemplate')\r\n endReachedTemplate!: TemplateRef<any>;\r\n\r\n isFetchMoreError = input(false);\r\n isEndReached = input(false);\r\n\r\n fetchMoreErrorMessageDefault = input('Não foi possível carregar mais itens.');\r\n\r\n endReachedMessageDefault = input('Todos os itens foram carregados.');\r\n\r\n tableStyle = input<{ [key: string]: string }>({});\r\n\r\n errorMessageDefault = input<string>('Não foi possível carregar os dados.');\r\n emptyMessageDefault = input<string>(' Não encontramos dados para exibir.');\r\n sortBy = signal<string | undefined>(undefined);\r\n\r\n tableGrow = input(false);\r\n\r\n infiniteScroll = input(false);\r\n infiniteScrollThreshold = input(80);\r\n isFetchingMore = input(false);\r\n\r\n virtualScroll = input(false);\r\n rowHeight = input(48);\r\n virtualBuffer = input(8);\r\n\r\n scrollTop = signal(0);\r\n containerHeight = signal(0);\r\n\r\n scrollEndReached = output<void>();\r\n\r\n totalRows = computed(() => this.sortedData().length);\r\n\r\n startIndex = computed(() => {\r\n if (!this.virtualScroll()) return 0;\r\n\r\n const start =\r\n Math.floor(this.scrollTop() / this.rowHeight()) - this.virtualBuffer();\r\n\r\n return Math.max(start, 0);\r\n });\r\n\r\n visibleCount = computed(() => {\r\n if (!this.virtualScroll()) return this.sortedData().length;\r\n\r\n const height = this.containerHeight();\r\n\r\n if (!height) {\r\n return this.virtualBuffer() * 2;\r\n }\r\n\r\n return Math.ceil(height / this.rowHeight()) + this.virtualBuffer() * 2;\r\n });\r\n\r\n endIndex = computed(() => {\r\n if (!this.virtualScroll()) return this.sortedData().length;\r\n\r\n return Math.min(\r\n this.startIndex() + this.visibleCount(),\r\n this.sortedData().length,\r\n );\r\n });\r\n\r\n virtualRows = computed(() => {\r\n const data = this.sortedData();\r\n\r\n if (!this.virtualScroll()) {\r\n return data.map((item, index) => ({\r\n item,\r\n index,\r\n }));\r\n }\r\n\r\n return data\r\n .slice(this.startIndex(), this.endIndex())\r\n .map((item, index) => ({\r\n item,\r\n index: this.startIndex() + index,\r\n }));\r\n });\r\n\r\n topSpacerHeight = computed(() => {\r\n if (!this.virtualScroll()) return 0;\r\n\r\n return this.startIndex() * this.rowHeight();\r\n });\r\n\r\n bottomSpacerHeight = computed(() => {\r\n if (!this.virtualScroll()) return 0;\r\n\r\n const remainingRows = this.totalRows() - this.endIndex();\r\n\r\n return remainingRows * this.rowHeight();\r\n });\r\n\r\n private lastPresetSignature = '';\r\n\r\n @HostBinding('class.s4y-table-grow')\r\n get isTableGrow() {\r\n return this.tableGrow();\r\n }\r\n\r\n containerStyle = computed(() => ({\r\n ...this.tableStyle(),\r\n\r\n ...(this.tableHeight() ? { height: this.tableHeight()! } : {}),\r\n\r\n ...(this.tableMaxHeight() ? { 'max-height': this.tableMaxHeight()! } : {}),\r\n }));\r\n\r\n scrollToTop() {\r\n if (this.tableScrollContainer.nativeElement) {\r\n this.tableScrollContainer.nativeElement.scrollTop = 0;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.multipleSort()) {\r\n if (changes['initialSorts'] || changes['headers']) {\r\n this.applyInitialSortsOnce();\r\n }\r\n return;\r\n }\r\n\r\n if (changes['sortField'] || changes['sortOrder'] || changes['headers']) {\r\n this.applySingleSortPreset();\r\n }\r\n }\r\n\r\n private applyInitialSortsOnce() {\r\n const incoming = this.initialSorts() ?? [];\r\n const allowedKeys = new Set(this.headers().map((h) => String(h.key)));\r\n\r\n const normalized = incoming\r\n .filter((s) => s.value !== 'none')\r\n .filter((s) => allowedKeys.has(String(s.key)))\r\n .filter((s) => {\r\n const header = this.headers().find(\r\n (h) => String(h.key) === String(s.key),\r\n );\r\n return !!header && header.sortable !== false;\r\n })\r\n .map((s) => ({ key: String(s.key), value: s.value as ISortDirection }));\r\n\r\n const signature = JSON.stringify(normalized);\r\n\r\n if (signature === this.lastPresetSignature) return;\r\n\r\n this.lastPresetSignature = signature;\r\n\r\n this.sorts.set(normalized);\r\n this.sortStateChanged$.next();\r\n }\r\n\r\n private applySingleSortPreset() {\r\n const field = this.sortField();\r\n const order = this.sortOrder();\r\n\r\n if (!field || order === 'none') {\r\n this.sortBy.set(undefined);\r\n this.sortDirection.set('none');\r\n return;\r\n }\r\n\r\n const header = this.headers().find((h) => String(h.key) === String(field));\r\n if (!header || header.sortable === false) {\r\n this.sortBy.set(undefined);\r\n this.sortDirection.set('none');\r\n return;\r\n }\r\n\r\n this.sortBy.set(String(field));\r\n this.sortDirection.set(order ?? 'none');\r\n this.sortStateChanged$.next();\r\n }\r\n\r\n constructor() {}\r\n\r\n ngAfterViewInit() {}\r\n\r\n private compareValues(a: any, b: any, dir: ISortDirection) {\r\n if (a == null && b == null) return 0;\r\n if (a == null) return dir === 'asc' ? -1 : 1;\r\n if (b == null) return dir === 'asc' ? 1 : -1;\r\n\r\n if (typeof a === 'number' && typeof b === 'number') {\r\n return dir === 'asc' ? a - b : b - a;\r\n }\r\n\r\n const sa = String(a);\r\n const sb = String(b);\r\n return dir === 'asc' ? sa.localeCompare(sb) : sb.localeCompare(sa);\r\n }\r\n\r\n trackByIndex = (index: number) => index;\r\n\r\n onTableScroll(event: Event): void {\r\n const element = event.target as HTMLElement;\r\n\r\n if (this.virtualScroll()) {\r\n this.scrollTop.set(element.scrollTop);\r\n this.containerHeight.set(element.clientHeight);\r\n }\r\n\r\n if (!this.infiniteScroll()) return;\r\n if (this.isLoading()) return;\r\n if (this.isFetchingMore()) return;\r\n if (this.isFetchMoreError()) return;\r\n if (this.isEndReached()) return;\r\n\r\n const hasScroll = element.scrollHeight > element.clientHeight;\r\n if (!hasScroll) return;\r\n\r\n const distanceFromBottom =\r\n element.scrollHeight - element.scrollTop - element.clientHeight;\r\n\r\n if (distanceFromBottom <= this.infiniteScrollThreshold()) {\r\n this.scrollEndReached.emit();\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"s4y-table-container\"\r\n [class.s4y-table-container--sticky-header]=\"stickyHeader()\"\r\n #tableScrollContainer\r\n [ngStyle]=\"containerStyle()\"\r\n cdkScrollable\r\n (scroll)=\"onTableScroll($event)\"\r\n>\r\n <table class=\"s4y-table\">\r\n <thead>\r\n <ng-container [ngTemplateOutlet]=\"headTemplate\"></ng-container>\r\n </thead>\r\n <tbody>\r\n @if (isLoading()) {\r\n <tr class=\"loading\">\r\n <td [colSpan]=\"headers().length\">\r\n <s4y-spinner></s4y-spinner>\r\n </td>\r\n </tr>\r\n } @else if (hasError()) {\r\n @if (errorTemplate) {\r\n <tr class=\"error\">\r\n <td [colSpan]=\"headers().length\">\r\n <ng-container [ngTemplateOutlet]=\"errorTemplate\"></ng-container>\r\n </td>\r\n </tr>\r\n } @else if (customErrorTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"customErrorTemplate\"></ng-container>\r\n } @else {\r\n <tr class=\"error\">\r\n <td [colSpan]=\"headers().length\">\r\n {{ errorMessageDefault() }}\r\n </td>\r\n </tr>\r\n }\r\n } @else {\r\n <ng-container [ngTemplateOutlet]=\"tableContent\"></ng-container>\r\n }\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<ng-template #SortIcon>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M4.86885 11H2.6665L6 3H8L11.3334 11H9.13113L8.7213 10H5.27869L4.86885 11ZM6.09836 8H7.90163L7 5.8L6.09836 8ZM18.9999 16V3H16.9999V16H13.9999L17.9999 21L21.9999 16H18.9999ZM10.9999 13H2.99992V15H7.85414L2.99992 19V21H10.9999V19H6.14605L10.9999 15V13Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #tableContent>\r\n @if (virtualScroll() && topSpacerHeight() > 0) {\r\n <tr class=\"virtual-spacer-row\">\r\n <td\r\n [colSpan]=\"headers().length\"\r\n [style.height.px]=\"topSpacerHeight()\"\r\n ></td>\r\n </tr>\r\n }\r\n\r\n @for (row of virtualRows(); track row.index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"rowTemplate\"\r\n [ngTemplateOutletContext]=\"{\r\n $implicit: row.item,\r\n idx: row.index,\r\n }\"\r\n >\r\n </ng-container>\r\n } @empty {\r\n @if (emptyTemplate) {\r\n <tr class=\"empty-content\">\r\n <td [colSpan]=\"headers().length\">\r\n <ng-container [ngTemplateOutlet]=\"emptyTemplate\"></ng-container>\r\n </td>\r\n </tr>\r\n } @else if (customEmptyTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"customEmptyTemplate\"></ng-container>\r\n } @else {\r\n <tr class=\"empty-content\">\r\n <td [colSpan]=\"headers().length\">\r\n {{ emptyMessageDefault() }}\r\n </td>\r\n </tr>\r\n }\r\n }\r\n\r\n @if (virtualScroll() && bottomSpacerHeight() > 0) {\r\n <tr class=\"virtual-spacer-row\">\r\n <td\r\n [colSpan]=\"headers().length\"\r\n [style.height.px]=\"bottomSpacerHeight()\"\r\n ></td>\r\n </tr>\r\n }\r\n\r\n <ng-container [ngTemplateOutlet]=\"fetchMoreTemplate\"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #fetchMoreTemplate>\r\n @if (isFetchingMore()) {\r\n <tr class=\"fetch-more-loading\">\r\n <td [colSpan]=\"headers().length\">\r\n @if (fetchMoreLoadingTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"fetchMoreLoadingTemplate\"\r\n ></ng-container>\r\n } @else {\r\n <div class=\"s4y-fetch-more-state\">\r\n <s4y-spinner size=\"mini\"></s4y-spinner>\r\n </div>\r\n }\r\n </td>\r\n </tr>\r\n } @else if (isFetchMoreError()) {\r\n <tr class=\"fetch-more-error\">\r\n <td [colSpan]=\"headers().length\">\r\n @if (fetchMoreErrorTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"fetchMoreErrorTemplate\"\r\n ></ng-container>\r\n } @else {\r\n <div class=\"s4y-fetch-more-state\">\r\n {{ fetchMoreErrorMessageDefault() }}\r\n </div>\r\n }\r\n </td>\r\n </tr>\r\n } @else if (isEndReached()) {\r\n <tr class=\"fetch-more-end\">\r\n <td [colSpan]=\"headers().length\">\r\n @if (endReachedTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"endReachedTemplate\"></ng-container>\r\n } @else {\r\n <div class=\"s4y-fetch-more-state\">\r\n {{ endReachedMessageDefault() }}\r\n </div>\r\n }\r\n </td>\r\n </tr>\r\n }\r\n</ng-template>\r\n","import {\r\n AfterContentInit,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n input,\r\n Renderer2,\r\n signal,\r\n} from '@angular/core';\r\nimport {\r\n ICustomSort,\r\n ISortDirection,\r\n TableComponent,\r\n} from '../table.component';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n@Directive({\r\n selector: '[s4ySortableColumnName]',\r\n standalone: true,\r\n})\r\nexport class TableSortDirective implements AfterContentInit {\r\n s4ySortableColumnName = input<string | undefined>();\r\n s4ySortable = input<boolean | undefined>(false);\r\n protected oldSortableColumnName: string | undefined;\r\n protected oldThElement: HTMLElement | undefined;\r\n\r\n private spanElement: HTMLElement | undefined;\r\n\r\n private oldDirection = signal<ISortDirection>('none');\r\n private newDirection = signal<ISortDirection>('none');\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private table: TableComponent,\r\n private destroyRef: DestroyRef,\r\n ) {}\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.s4ySortable()) return;\r\n\r\n this.insertSortIcon();\r\n\r\n this.repaint();\r\n\r\n this.table.sortStateChanged$\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(() => this.repaint());\r\n }\r\n\r\n @HostListener('click')\r\n emitSortableColumnName() {\r\n if (!this.s4ySortable()) return;\r\n\r\n this.oldSortableColumnName = this.table.sortBy();\r\n const sortByColumnName = this.s4ySortableColumnName();\r\n\r\n if (!sortByColumnName) return;\r\n\r\n if (this.isMultipleSort) {\r\n const current =\r\n this.table\r\n .sorts()\r\n .find((s) => String(s.key) === String(sortByColumnName))?.value ??\r\n 'none';\r\n this.newDirection.set(current);\r\n } else {\r\n const isThis =\r\n String(this.table.sortBy() ?? '') === String(sortByColumnName);\r\n this.newDirection.set(isThis ? this.table.sortDirection() : 'none');\r\n }\r\n\r\n this.oldDirection.set(this.newDirection());\r\n this.newDirection.update((direction) => {\r\n switch (direction) {\r\n case 'asc':\r\n return 'desc';\r\n case 'desc':\r\n return 'none';\r\n case 'none':\r\n return 'asc';\r\n default:\r\n return 'none';\r\n }\r\n });\r\n if (this.isMultipleSort) {\r\n this.multipleSortable();\r\n } else if (this.isCustomSort) {\r\n this.table.sorts.set([]);\r\n this.customSortableSingleLast();\r\n } else {\r\n this.table.sorts.set([]);\r\n this.autoSortable(sortByColumnName);\r\n }\r\n\r\n this.emitSortDirection();\r\n this.clearHoverStyleTH();\r\n this.handleStyleTH();\r\n this.handleDirectionIcon();\r\n this.table.sortStateChanged$.next();\r\n }\r\n\r\n @HostListener('mouseenter')\r\n mouseOver() {\r\n if (!this.hostThElement) return;\r\n\r\n const thClassList = this.hostThElement.classList;\r\n const isActiveTH = thClassList.contains('s4y-active-sort');\r\n\r\n if (isActiveTH || !this.s4ySortable()) return;\r\n\r\n this.renderer.addClass(this.hostThElement, 's4y-th-hover');\r\n }\r\n\r\n @HostListener('mouseleave')\r\n mouseLeave() {\r\n if (!this.hostThElement) return;\r\n\r\n this.clearHoverStyleTH();\r\n }\r\n\r\n private selectedInitialSort() {\r\n if (!this.sortField || !this.s4ySortableColumnName()) return;\r\n\r\n if (this.sortOrder) {\r\n this.newDirection.set(this.sortOrder);\r\n }\r\n\r\n const thElementSearch = this.findThElementByColumnName(this.sortField);\r\n\r\n if (!thElementSearch) return;\r\n\r\n this.currentThElement = thElementSearch;\r\n\r\n this.autoSortable(this.sortField);\r\n this.emitSortDirection();\r\n this.setActiveStyle(this.currentThElement);\r\n }\r\n\r\n private get currentThElement() {\r\n return this.table.currentThElement;\r\n }\r\n\r\n private set currentThElement(th: HTMLElement | undefined) {\r\n this.table.currentThElement = th;\r\n }\r\n\r\n private get hostThElement() {\r\n return this.el.nativeElement as HTMLElement | undefined;\r\n }\r\n\r\n private get isCustomSort() {\r\n return this.table.customSort();\r\n }\r\n\r\n private get isMultipleSort() {\r\n return this.table.multipleSort();\r\n }\r\n\r\n private get sortField() {\r\n return this.table.sortField();\r\n }\r\n\r\n private get sortOrder() {\r\n return this.table.sortOrder();\r\n }\r\n\r\n private findThElementByColumnName(\r\n columnName: string,\r\n ): HTMLElement | undefined {\r\n const thElements = Array.from(\r\n this.el.nativeElement.closest('table').querySelectorAll('th'),\r\n ) as HTMLElement[];\r\n\r\n return thElements.find(\r\n (th) =>\r\n th.getAttribute('ng-reflect-s4y-sortable-column-name') === columnName,\r\n );\r\n }\r\n\r\n private emitSortDirection() {\r\n this.table.sortDirection.set(this.newDirection());\r\n }\r\n\r\n private insertSortIcon() {\r\n if (!this.hostThElement) return;\r\n\r\n const isThElement = this.hostThElement.tagName == 'TH';\r\n\r\n if (!isThElement) {\r\n console.error('Metódo disponível apenas em elementos TH');\r\n return;\r\n }\r\n\r\n this.createSpanElement();\r\n\r\n const extractOriginalContentTHElement = this.hostThElement.textContent;\r\n\r\n const containerEl = this.createElement('div');\r\n const contentEl = this.createElement('p');\r\n\r\n contentEl.textContent = extractOriginalContentTHElement;\r\n\r\n this.clearOldContent();\r\n this.setStyleInContainerIconElements(containerEl);\r\n\r\n containerEl.appendChild(contentEl);\r\n\r\n if (this.spanElement) {\r\n containerEl.appendChild(this.spanElement);\r\n }\r\n\r\n this.hostThElement.appendChild(containerEl);\r\n\r\n this.renderer.addClass(this.hostThElement, 's4y-hover');\r\n }\r\n\r\n private createElement(name: string) {\r\n return this.renderer.createElement(name) as HTMLElement;\r\n }\r\n\r\n private clearOldContent() {\r\n if (!this.hostThElement) return;\r\n\r\n this.hostThElement.textContent = '';\r\n }\r\n\r\n private autoSortable(columnName: string) {\r\n this.table.sortBy.set(columnName);\r\n }\r\n\r\n private multipleSortable() {\r\n const key = this.s4ySortableColumnName();\r\n if (!key) return;\r\n\r\n const value = this.newDirection();\r\n\r\n const currentList = this.table.sorts();\r\n\r\n const withoutKey = currentList.filter((s) => s.key !== key);\r\n\r\n const updatedList =\r\n value === 'none' ? withoutKey : [...withoutKey, { key, value }];\r\n\r\n this.table.sorts.set(updatedList);\r\n this.table.multiSortFunction.emit(updatedList);\r\n }\r\n\r\n private setStyleInContainerIconElements(container: HTMLElement) {\r\n const style = `\r\n display: flex;\r\n gap: 7px;\r\n `;\r\n\r\n this.renderer.setAttribute(container, 'style', style);\r\n }\r\n\r\n private createSpanElement() {\r\n this.spanElement = this.createElement('span');\r\n\r\n this.spanElement.innerHTML = this.ascIcon;\r\n }\r\n\r\n private handleStyleTH() {\r\n const ths = this.getAllThElements();\r\n\r\n // 1) Multi-sort: ativa/desativa conforme a lista table.sorts()\r\n if (this.isMultipleSort) {\r\n const activeKeys = new Set(\r\n this.table\r\n .sorts()\r\n .filter((s) => s.value !== 'none')\r\n .map((s) => s.key),\r\n );\r\n\r\n for (const th of ths) {\r\n const key =\r\n th.getAttribute('ng-reflect-s4y-sortable-column-name') ?? '';\r\n const shouldBeActive = activeKeys.has(key);\r\n\r\n if (shouldBeActive) this.setActiveStyle(th);\r\n else this.removeActiveStyle(th);\r\n }\r\n\r\n return;\r\n }\r\n\r\n // 2) Single sort: limpa tudo e ativa só a coluna atual (se direction != none)\r\n for (const th of ths) this.removeActiveStyle(th);\r\n\r\n if (this.newDirection() === 'none') return;\r\n\r\n this.setActiveStyle(this.hostThElement);\r\n }\r\n\r\n private setActiveStyle(th?: HTMLElement) {\r\n if (th) {\r\n this.renderer.addClass(th, 's4y-active-sort');\r\n }\r\n }\r\n\r\n private removeActiveStyle(th?: HTMLElement) {\r\n if (th) {\r\n this.renderer.removeClass(th, 's4y-active-sort');\r\n }\r\n }\r\n\r\n private handleDirectionIcon() {\r\n if (!this.spanElement) return;\r\n\r\n if (this.newDirection() == 'asc' || this.newDirection() == 'none') {\r\n this.spanElement.innerHTML = this.ascIcon;\r\n } else if (this.newDirection() == 'desc') {\r\n this.spanElement.innerHTML = this.descIcon;\r\n }\r\n }\r\n\r\n private clearHoverStyleTH() {\r\n if (!this.hostThElement) return;\r\n this.renderer.removeClass(this.hostThElement, 's4y-th-hover');\r\n }\r\n\r\n private get tableEl(): HTMLElement | null {\r\n return (this.el.nativeElement as HTMLElement).closest('table');\r\n }\r\n\r\n private getAllThElements(): HTMLElement[] {\r\n const table = this.tableEl;\r\n if (!table) return [];\r\n return Array.from(table.querySelectorAll('th')) as HTMLElement[];\r\n }\r\n\r\n private customSortableSingleLast() {\r\n const key = this.s4ySortableColumnName();\r\n if (!key) return;\r\n\r\n const value = this.newDirection();\r\n\r\n const updatedList: ICustomSort[] = value === 'none' ? [] : [{ key, value }];\r\n\r\n this.table.sorts.set(updatedList);\r\n\r\n this.table.sortFunction.emit({ key, value });\r\n this.table.multiSortFunction.emit(updatedList);\r\n }\r\n\r\n private repaint() {\r\n if (!this.s4ySortable()) return;\r\n\r\n const key = this.s4ySortableColumnName();\r\n if (!key) return;\r\n\r\n if (this.isMultipleSort) {\r\n const found = this.table\r\n .sorts()\r\n .find((s) => String(s.key) === String(key));\r\n const dir = found?.value ?? 'none';\r\n\r\n this.newDirection.set(dir);\r\n\r\n if (dir === 'none') {\r\n this.removeActiveStyle(this.hostThElement);\r\n if (this.spanElement) this.spanElement.innerHTML = this.ascIcon;\r\n return;\r\n }\r\n\r\n this.setActiveStyle(this.hostThElement);\r\n if (this.spanElement) {\r\n this.spanElement.innerHTML =\r\n dir === 'desc' ? this.descIcon : this.ascIcon;\r\n }\r\n return;\r\n }\r\n\r\n // single\r\n const sortBy = this.table.sortBy();\r\n const dir = this.table.sortDirection();\r\n\r\n const isThis = String(sortBy ?? '') === String(key);\r\n this.newDirection.set(isThis ? dir : 'none');\r\n\r\n if (!isThis || dir === 'none') {\r\n this.removeActiveStyle(this.hostThElement);\r\n if (this.spanElement) this.spanElement.innerHTML = this.ascIcon;\r\n return;\r\n }\r\n\r\n this.setActiveStyle(this.hostThElement);\r\n if (this.spanElement) {\r\n this.spanElement.innerHTML =\r\n dir === 'desc' ? this.descIcon : this.ascIcon;\r\n }\r\n }\r\n\r\n private get ascIcon() {\r\n return '<svg style=\"height: 1.4rem; width: 1.4rem;\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M4.86885 11H2.6665L6 3H8L11.3334 11H9.13113L8.7213 10H5.27869L4.86885 11ZM6.09836 8H7.90163L7 5.8L6.09836 8ZM21.9999 8L17.9999 3L13.9999 8H16.9999V21H18.9999V8H21.9999ZM10.9999 13H2.99992V15H7.85414L2.99992 19V21H10.9999V19H6.14605L10.9999 15V13Z\"></path></svg>';\r\n }\r\n\r\n private get descIcon() {\r\n return '<svg style=\"height: 1.4rem; width: 1.4rem;\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M4.86885 11H2.6665L6 3H8L11.3334 11H9.13113L8.7213 10H5.27869L4.86885 11ZM6.09836 8H7.90163L7 5.8L6.09836 8ZM18.9999 16V3H16.9999V16H13.9999L17.9999 21L21.9999 16H18.9999ZM10.9999 13H2.99992V15H7.85414L2.99992 19V21H10.9999V19H6.14605L10.9999 15V13Z\"></path></svg>';\r\n }\r\n}\r\n","import { Directive, HostBinding, input } from '@angular/core';\n\nexport type S4yTableStickyPosition = 'left' | 'right';\n\n@Directive({\n selector: '[s4yTableSticky]',\n standalone: true,\n})\nexport class TableStickyDirective {\n s4yTableSticky = input<S4yTableStickyPosition | undefined>();\n\n @HostBinding('class.s4y-table-sticky')\n get stickyClass() {\n return !!this.s4yTableSticky();\n }\n\n @HostBinding('class.s4y-table-sticky--left')\n get isLeft() {\n return this.s4yTableSticky() === 'left';\n }\n\n @HostBinding('class.s4y-table-sticky--right')\n get isRight() {\n return this.s4yTableSticky() === 'right';\n }\n}\n","import {\r\n trigger,\r\n transition,\r\n style,\r\n animate,\r\n AnimationTriggerMetadata,\r\n group,\r\n query,\r\n} from '@angular/animations';\r\n\r\nexport const modalFadeCombined: AnimationTriggerMetadata = trigger(\r\n 'modalFadeCombined',\r\n [\r\n transition(':enter', [\r\n group([\r\n style({ opacity: 0 }),\r\n animate('200ms ease-out', style({ opacity: 1 })),\r\n // query('.s4y-backdrop', [\r\n // style({ opacity: 0 }),\r\n // animate('200ms ease-out', style({ opacity: 1 })),\r\n // ]),\r\n query(\r\n '.s4y-modal-container',\r\n [\r\n style({ opacity: 0, transform: 'translateY(20px)' }),\r\n animate(\r\n '250ms ease-out',\r\n style({ opacity: 1, transform: 'translateY(0)' }),\r\n ),\r\n ],\r\n { optional: true },\r\n ),\r\n ]),\r\n ]),\r\n transition(':leave', [\r\n group([\r\n style({ opacity: 1 }),\r\n animate('200ms ease-in', style({ opacity: 0 })),\r\n // query('.s4y-backdrop', [\r\n // animate('200ms ease-in', style({ opacity: 0 })),\r\n // ]),\r\n query(\r\n '.s4y-modal-container',\r\n [\r\n animate(\r\n '200ms ease-in',\r\n style({ opacity: 0, transform: 'translateY(20px)' }),\r\n ),\r\n ],\r\n { optional: true },\r\n ),\r\n ]),\r\n ]),\r\n ],\r\n);\r\n","import { CommonModule, DOCUMENT } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ContentChild,\r\n effect,\r\n HostListener,\r\n Inject,\r\n input,\r\n model,\r\n OnDestroy,\r\n output,\r\n Renderer2,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { modalFadeCombined } from './modal.animation';\r\nimport { CdkScrollable } from '@angular/cdk/scrolling';\r\n\r\n@Component({\r\n selector: 's4y-modal',\r\n imports: [CommonModule, CdkScrollable],\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss',\r\n animations: [modalFadeCombined],\r\n})\r\nexport class ModalComponent implements OnDestroy, AfterViewInit {\r\n @ContentChild('modalHeaderTemplate') modalHeaderTemplate!: TemplateRef<any>;\r\n @ContentChild('modalFooterTemplate') modalFooterTemplate!: TemplateRef<any>;\r\n\r\n scrollableContent = input<boolean>(true);\r\n centeredModal = input<boolean>(true);\r\n title = input<string>('Titulo');\r\n modalStyle = input<{ [key: string]: string }>();\r\n\r\n visible = model<boolean>(false);\r\n requestClose = output<boolean>();\r\n\r\n withHeader = input<boolean>(true);\r\n\r\n closeOnBackdrop = input<boolean>(true);\r\n closeOnEsc = input<boolean>(true);\r\n\r\n interceptBackdropClick = input<boolean>(false);\r\n\r\n onBackdrop = output<void>();\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n @Inject(DOCUMENT) private document: Document,\r\n ) {\r\n if (this.closeOnEsc()) {\r\n window.addEventListener('keydown', this.escListener);\r\n }\r\n\r\n effect(() => {\r\n const visible = this.visible();\r\n\r\n if (visible) {\r\n this.renderer.setStyle(document.body, 'overflow', 'hidden');\r\n } else {\r\n this.renderer.removeStyle(document.body, 'overflow');\r\n }\r\n });\r\n }\r\n\r\n onClose() {\r\n this.visible.set(false);\r\n this.requestClose.emit(false);\r\n }\r\n\r\n ngAfterViewInit() {}\r\n\r\n onBackdropClick(evt: MouseEvent) {\r\n if (!this.closeOnBackdrop()) return;\r\n\r\n if (evt.target === evt.currentTarget) {\r\n if (this.interceptBackdropClick()) {\r\n this.onBackdrop.emit();\r\n return;\r\n }\r\n\r\n this.onClose();\r\n }\r\n }\r\n\r\n private escListener = (event: KeyboardEvent) => {\r\n if (event.key === 'Escape' && this.visible()) {\r\n this.onClose();\r\n }\r\n };\r\n\r\n ngOnDestroy(): void {\r\n window.removeEventListener('keydown', this.escListener);\r\n }\r\n}\r\n","@if (visible()) {\r\n <div\r\n class=\"s4y-modal-wrapper\"\r\n [class.s4y-modal-wrapper-with-scrollable]=\"!scrollableContent()\"\r\n [class.s4y-modal-wrapper-centered]=\"centeredModal()\"\r\n @modalFadeCombined\r\n cdkScrollable\r\n (click)=\"onBackdropClick($event)\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n >\r\n <div\r\n class=\"s4y-modal-container\"\r\n [class.s4y-modal-container__scrollable-content]=\"scrollableContent()\"\r\n [ngStyle]=\"modalStyle()\"\r\n >\r\n @if (modalHeaderTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"modalHeaderTemplate\"></ng-container>\r\n }\r\n @if (!modalHeaderTemplate && withHeader()) {\r\n <div class=\"s4y-modal-header\">\r\n <h2 class=\"s4y-modal-header__title\">{{ title() }}</h2>\r\n <button role=\"button\" (click)=\"onClose()\">\r\n <p>×</p>\r\n </button>\r\n </div>\r\n }\r\n\r\n <div\r\n class=\"s4y-modal-body\"\r\n [class.s4y-modal-body__scrollable-content]=\"scrollableContent()\"\r\n cdkScrollable\r\n >\r\n <ng-content></ng-content>\r\n </div>\r\n @if (modalFooterTemplate) {\r\n <div class=\"s4y-modal-footer\">\r\n <ng-container [ngTemplateOutlet]=\"modalFooterTemplate\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","import { Injectable, signal, computed } from '@angular/core';\r\nimport { tButtonVariant } from '../button/button.interface';\r\nimport { iModalConfirmationProps } from './modal-confirmation.interface';\r\n\r\n@Injectable()\r\nexport class ModalConfirmationService {\r\n private _modalConfirmation = signal<iModalConfirmationProps>({\r\n title: 'Confirmação',\r\n message: 'Tem certeza que deseja continuar?',\r\n });\r\n\r\n private _visible = signal(false);\r\n\r\n modalConfirmation = computed(() => this._modalConfirmation());\r\n isVisible = computed(() => this._visible());\r\n\r\n open(modalConfig: iModalConfirmationProps) {\r\n this._modalConfirmation.set(modalConfig);\r\n this._visible.set(true);\r\n }\r\n\r\n onConfirm() {\r\n this._modalConfirmation().confirm?.();\r\n this.close();\r\n }\r\n\r\n onCancel() {\r\n this._modalConfirmation().cancel?.();\r\n this.close();\r\n }\r\n\r\n close() {\r\n this._visible.set(false);\r\n }\r\n}\r\n","import {\r\n Component,\r\n computed,\r\n ContentChild,\r\n inject,\r\n input,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { modalFadeCombined } from '../modal/modal.animation';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { ModalConfirmationService } from './modal-confirmation.service';\r\nimport { iButtonProps } from './modal-confirmation.interface';\r\n\r\n@Component({\r\n selector: 's4y-modal-confirmation',\r\n imports: [CommonModule, ButtonComponent],\r\n templateUrl: './modal-confirmation.component.html',\r\n styleUrl: './modal-confirmation.component.scss',\r\n animations: [modalFadeCombined],\r\n})\r\nexport class ModalConfirmationComponent {\r\n protected modalConfirmationService = inject(ModalConfirmationService);\r\n @ContentChild('iconTemplate') iconTemplate!: TemplateRef<any>;\r\n\r\n protected modalConfigs = this.modalConfirmationService.modalConfirmation;\r\n\r\n visible = this.modalConfirmationService.isVisible;\r\n\r\n modalStyle = input<{ [key: string]: string }>();\r\n\r\n buttonCancelProps = computed<iButtonProps>(\r\n () =>\r\n this.modalConfigs().buttonCancelProps ?? {\r\n text: 'Cancelar',\r\n outlined: true,\r\n },\r\n );\r\n buttonConfirmProps = computed<iButtonProps>(\r\n () =>\r\n this.modalConfigs().buttonConfirmProps ?? {\r\n text: 'Sim, confirmar',\r\n outlined: false,\r\n },\r\n );\r\n\r\n onConfirm() {\r\n this.modalConfirmationService.onConfirm();\r\n }\r\n\r\n onCancel() {\r\n this.modalConfirmationService.onCancel();\r\n }\r\n\r\n onClose() {\r\n this.modalConfirmationService.close();\r\n }\r\n}\r\n","@if (visible()) {\r\n <div class=\"s4y-modal-wrapper\" @modalFadeCombined>\r\n <div class=\"s4y-backdrop\" (click)=\"onClose()\"></div>\r\n <div class=\"s4y-modal-container\" [ngStyle]=\"modalStyle()\">\r\n @if (iconTemplate) {\r\n <div class=\"s4y-modal-icon\">\r\n <ng-container [ngTemplateOutlet]=\"iconTemplate\"></ng-container>\r\n </div>\r\n }\r\n <div class=\"s4y-modal-header\">\r\n <h3>{{ modalConfigs().title }}</h3>\r\n <p>\r\n {{ modalConfigs().message }}\r\n </p>\r\n </div>\r\n\r\n <div class=\"s4y-modal-body\">\r\n <button\r\n (click)=\"onCancel()\"\r\n s4yButton\r\n [variant]=\"buttonCancelProps().variant ?? 'danger'\"\r\n [outlined]=\"buttonCancelProps().outlined ?? true\"\r\n [fullWidth]=\"true\"\r\n >\r\n {{ buttonCancelProps().text }}\r\n </button>\r\n <button\r\n (click)=\"onConfirm()\"\r\n s4yButton\r\n [variant]=\"buttonConfirmProps().variant ?? 'danger'\"\r\n [outlined]=\"buttonConfirmProps().outlined ?? false\"\r\n [fullWidth]=\"true\"\r\n >\r\n {{ buttonConfirmProps().text }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { Component, input, ViewEncapsulation } from '@angular/core';\r\n\r\ntype TSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n@Component({\r\n selector: 's4y-search-bar',\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './search-bar.component.html',\r\n styleUrl: './search-bar.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SearchBarComponent {\r\n size = input<TSize>('md');\r\n iconPosition = input<'left' | 'right'>('left');\r\n showIcon = input<boolean>(true);\r\n}\r\n","<label\r\n [attr.data-size]=\"size()\"\r\n class=\"s4y-search-bar-container\"\r\n [class.s4y-search-bar--icon-right]=\"iconPosition() === 'right'\"\r\n>\r\n @if (showIcon()) {\r\n <ng-container>\r\n <ng-container [ngTemplateOutlet]=\"searchIcon\"></ng-container>\r\n </ng-container>\r\n }\r\n <ng-content select=\"input[s4ySearchBar]\"></ng-content>\r\n</label>\r\n\r\n<ng-template #searchIcon>\r\n <span class=\"s4y-search-bar__icon\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M18.031 16.6168L22.3137 20.8995L20.8995 22.3137L16.6168 18.031C15.0769 19.263 13.124 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2C15.968 2 20 6.032 20 11C20 13.124 19.263 15.0769 18.031 16.6168ZM16.0247 15.8748C17.2475 14.6146 18 12.8956 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18C12.8956 18 14.6146 17.2475 15.8748 16.0247L16.0247 15.8748Z\"\r\n ></path>\r\n </svg>\r\n </span>\r\n</ng-template>\r\n","import { Component, input, model } from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NG_VALUE_ACCESSOR,\r\n} from '@angular/forms';\r\n\r\ntype iToggleSize = 'small' | 'medium' | 'large';\r\n\r\n@Component({\r\n selector: 's4y-toggle',\r\n imports: [FormsModule],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: ToggleComponent,\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ToggleComponent implements ControlValueAccessor {\r\n model = model<boolean>(false);\r\n disabled = input<boolean>(false);\r\n size = input<iToggleSize>('medium');\r\n\r\n protected disabledWithReactives: boolean = false;\r\n\r\n onChange = (value: boolean) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.model.set(value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabledWithReactives = isDisabled;\r\n }\r\n\r\n onToggle() {\r\n if (this.disabled() || this.disabledWithReactives) return;\r\n\r\n this.model.update((prevState) => !prevState);\r\n this.onTouched();\r\n this.onChange(this.model());\r\n }\r\n}\r\n","<label class=\"s4y-switch\" [class]=\"size()\">\r\n <input\r\n (input)=\"onToggle()\"\r\n type=\"checkbox\"\r\n [checked]=\"model()\"\r\n [disabled]=\"disabled() || disabledWithReactives\"\r\n />\r\n <span class=\"slider round\"></span>\r\n</label>\r\n","import {\r\n animate,\r\n group,\r\n query,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nexport const selectAnimation = trigger('selectAnimation', [\r\n transition(':enter', [\r\n query(\r\n '.s4y-select-options',\r\n group([\r\n style({\r\n opacity: 0,\r\n height: 0,\r\n overflowY: 'hidden',\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n opacity: 1,\r\n height: '*',\r\n }),\r\n ),\r\n ]),\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ]),\r\n transition(':leave', [\r\n query(\r\n '.s4y-select-options',\r\n group([\r\n style({\r\n opacity: 1,\r\n height: '*',\r\n overflowY: 'hidden',\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n opacity: 0,\r\n height: 0,\r\n }),\r\n ),\r\n ]),\r\n {\r\n optional: true,\r\n },\r\n ),\r\n ]),\r\n]);\r\n","import { CommonModule, NgIf } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n ContentChild,\r\n effect,\r\n forwardRef,\r\n input,\r\n model,\r\n OnInit,\r\n output,\r\n signal,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { selectAnimation } from './select.animation';\r\nimport { SpinnerComponent } from '../spinner/spinner.component';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NG_VALUE_ACCESSOR,\r\n} from '@angular/forms';\r\nimport { ClickOutsideDirective } from '../../directives';\r\nimport { CompareFn, DisplayFn } from '../select-multi';\r\nexport type tSelectSize = 'extra-small' | 'small' | 'medium' | 'large';\r\n\r\n@Component({\r\n selector: 's4y-select',\r\n imports: [\r\n NgIf,\r\n CommonModule,\r\n SpinnerComponent,\r\n ClickOutsideDirective,\r\n FormsModule,\r\n ],\r\n templateUrl: './select.component.html',\r\n styleUrl: './select.component.scss',\r\n animations: [selectAnimation],\r\n providers: [\r\n {\r\n multi: true,\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n },\r\n ],\r\n})\r\nexport class SelectComponent<T = any> implements OnInit, ControlValueAccessor {\r\n withSearch = input<boolean>(false);\r\n maxScreen = input<boolean>(false);\r\n isLoading = input<boolean>(false);\r\n hasError = input<boolean>(false);\r\n label = input<string>();\r\n size = input<tSelectSize>('medium');\r\n closable = input<boolean>(false);\r\n\r\n errorMessageDefault = input<string>(\r\n 'Erro ao carregar as opções. Tente novamente mais tarde.',\r\n );\r\n emptyMessageDefault = input<string>('Nenhuma opção disponível');\r\n selectedOption: any = null;\r\n\r\n onSearch = model<string>('');\r\n options = input<any[]>([]);\r\n\r\n compareWith = input<CompareFn<T>>();\r\n displayWith = input<DisplayFn<T>>((option: any) => {\r\n if (!option) return '';\r\n\r\n return (\r\n option?.description ?? option?.label ?? option?.name ?? String(option)\r\n );\r\n });\r\n\r\n transformedOptions = computed(() =>\r\n this.options().map((option) => ({\r\n option,\r\n selected: this.isEqual(option, this.selectedValue()),\r\n })),\r\n );\r\n\r\n selectedValue = signal<any>(null);\r\n hasValue = computed(() => this.selectedValue() != null);\r\n\r\n @ContentChild('optionTemplate') optionTemplate!: TemplateRef<any>;\r\n @ContentChild('errorTemplate') errorTemplate!: TemplateRef<any>;\r\n @ContentChild('emptyTemplate') emptyTemplate!: TemplateRef<any>;\r\n @ContentChild('selectedOptionTemplate')\r\n selectedOptionTemplate!: TemplateRef<any>;\r\n\r\n isOpened: boolean = false;\r\n isDisabled: boolean = false;\r\n\r\n selectedDisplayLabel = computed(() => {\r\n const value = this.selectedOption?.option ?? this.selectedValue();\r\n\r\n if (\r\n this.isLoading() &&\r\n this.hasValue() &&\r\n !this.selectedOption?.option?.description\r\n ) {\r\n return 'Carregando...';\r\n }\r\n\r\n if (!value) {\r\n return 'Selecione...';\r\n }\r\n\r\n return this.displayWith()(value);\r\n });\r\n\r\n widthStyle = computed(() => (this.maxScreen() ? '100%' : '32rem'));\r\n\r\n onChange = (value: any) => {};\r\n onTouched = () => {};\r\n\r\n ngOnInit(): void {}\r\n\r\n constructor() {\r\n effect(\r\n () => {\r\n const value = this.selectedValue();\r\n const options = this.options();\r\n\r\n if (!value || !options.length) return;\r\n\r\n const matchedOption = options.find((option) =>\r\n this.isEqual(option, value),\r\n );\r\n\r\n if (matchedOption) {\r\n this.selectedOption = {\r\n option: matchedOption,\r\n selected: true,\r\n };\r\n }\r\n },\r\n {\r\n allowSignalWrites: true,\r\n },\r\n );\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.selectedValue.set(value);\r\n this.markAllUnselected();\r\n\r\n const matchedOption = this.transformedOptions().find((opt) =>\r\n this.isEqual(opt.option, value),\r\n );\r\n\r\n if (matchedOption) {\r\n matchedOption.selected = true;\r\n this.selectedOption = matchedOption;\r\n } else {\r\n this.selectedOption = {\r\n option: value,\r\n selected: true,\r\n };\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n setSelectedOption(selectedOption: any) {\r\n this.selectedOption = selectedOption;\r\n\r\n this.markAllUnselected();\r\n\r\n if (selectedOption && typeof selectedOption == 'object') {\r\n this.selectedOption['selected'] = true;\r\n }\r\n\r\n const originalOption = selectedOption?.option ?? selectedOption;\r\n this.selectedValue.set(originalOption);\r\n\r\n this.isOpened = false;\r\n this.onTouched();\r\n this.onChange(originalOption);\r\n }\r\n\r\n clearSelection(event: Event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n console.log(event.target);\r\n\r\n this.selectedValue.set(null);\r\n this.selectedOption = null;\r\n\r\n this.markAllUnselected();\r\n this.isOpened = false;\r\n\r\n this.onChange(null);\r\n this.onTouched();\r\n }\r\n\r\n toggle(event: Event) {\r\n if (this.isDisabled) return;\r\n\r\n this.isOpened = !this.isOpened;\r\n }\r\n\r\n private markAllUnselected() {\r\n this.transformedOptions().forEach((option) => (option['selected'] = false));\r\n }\r\n\r\n private isEqual(opt1: any, opt2: any): boolean {\r\n const compareWith = this.compareWith();\r\n\r\n if (compareWith) {\r\n return compareWith(opt1, opt2);\r\n }\r\n\r\n return opt1?.id !== undefined && opt2?.id !== undefined\r\n ? opt1.id === opt2.id\r\n : JSON.stringify(opt1) === JSON.stringify(opt2);\r\n }\r\n}\r\n","<label\r\n class=\"s4y-select-container\"\r\n [style.maxWidth]=\"widthStyle()\"\r\n s4yClickOutside\r\n (clickOutside)=\"isOpened = false\"\r\n [attr.size]=\"size()\"\r\n>\r\n <p class=\"s4y-select-label\">\r\n {{ label() }}\r\n </p>\r\n\r\n <div\r\n class=\"s4y-select-container__wrapper\"\r\n [class.disabled]=\"isDisabled\"\r\n (click)=\"isOpened = !isOpened\"\r\n [attr.aria-expanded]=\"isOpened ? 'true' : 'false'\"\r\n tabindex=\"0\"\r\n aria-controls=\"select-options-container\"\r\n >\r\n <div class=\"s4y-select-container__placeholder\">\r\n @if (selectedOptionTemplate && !isLoading()) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"selectedOptionTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: selectedOption?.option }\"\r\n ></ng-container>\r\n } @else {\r\n <p>{{ selectedDisplayLabel() }}</p>\r\n }\r\n</div>\r\n\r\n <div class=\"s4y-select-container__actions\">\r\n @if (hasValue() && !isDisabled && closable()) {\r\n <span class=\"s4y-select-clear\" (click)=\"clearSelection($event)\"\r\n >×</span\r\n >\r\n } @else {\r\n @if (isOpened) {\r\n <ng-container [ngTemplateOutlet]=\"arrowUp\"></ng-container>\r\n }\r\n @if (!isOpened) {\r\n <ng-container [ngTemplateOutlet]=\"arrowDown\"></ng-container>\r\n }\r\n }\r\n </div>\r\n </div>\r\n <ng-content select=\"s4y-error-message\"></ng-content>\r\n <div @selectAnimation class=\"s4y-select-options-container\" *ngIf=\"isOpened\">\r\n <div class=\"s4y-select-options\">\r\n @if (withSearch()) {\r\n <div class=\"s4y-select-options__search\">\r\n <input\r\n [ngModel]=\"onSearch()\"\r\n (ngModelChange)=\"onSearch.set($event)\"\r\n placeholder=\"Pesquisar...\"\r\n type=\"text\"\r\n name=\"search-option\"\r\n id=\"search-option\"\r\n autocomplete=\"off\"\r\n />\r\n <ng-container [ngTemplateOutlet]=\"searchIcon\"></ng-container>\r\n </div>\r\n }\r\n @if (isLoading()) {\r\n <div class=\"s4y-select-container__loading\">\r\n <s4y-spinner [size]=\"'mini'\"></s4y-spinner>\r\n </div>\r\n } @else if (hasError()) {\r\n @if (errorTemplate) {\r\n <p class=\"s4y-select-options__message\">\r\n <ng-container [ngTemplateOutlet]=\"errorTemplate\"></ng-container>\r\n </p>\r\n } @else {\r\n <p class=\"s4y-select-options__message\">\r\n {{ errorMessageDefault() }}\r\n </p>\r\n }\r\n } @else {\r\n <div\r\n class=\"s4y-select-options__scroll\"\r\n role=\"listbox\"\r\n aria-live=\"polite\"\r\n >\r\n @for (option of transformedOptions(); track $index) {\r\n <p\r\n [class.selected]=\"option.selected\"\r\n class=\"s4y-select-options__item\"\r\n role=\"option\"\r\n aria-selected=\"false\"\r\n tabindex=\"0\"\r\n (click)=\"setSelectedOption(option)\"\r\n (keyup.enter)=\"setSelectedOption(option)\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n optionTemplate;\r\n context: { $implicit: option?.option }\r\n \"\r\n ></ng-container>\r\n </p>\r\n } @empty {\r\n @if (emptyTemplate) {\r\n <p\r\n class=\"s4y-select-options__message\"\r\n role=\"status\"\r\n aria-live=\"assertive\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"emptyTemplate\"></ng-container>\r\n </p>\r\n } @else {\r\n <p\r\n class=\"s4y-select-options__message\"\r\n role=\"status\"\r\n aria-live=\"assertive\"\r\n >\r\n {{ emptyMessageDefault() }}\r\n </p>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</label>\r\n\r\n<!-- arrows -->\r\n<ng-template #arrowDown>\r\n <svg\r\n class=\"s4y-select__svg\"\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrowUp>\r\n <svg\r\n class=\"s4y-select__svg\"\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 10.8284L7.0502 15.7782L5.63599 14.364L11.9999 8L18.3639 14.364L16.9497 15.7782L11.9999 10.8284Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #searchIcon>\r\n <svg\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11 2C15.968 2 20 6.032 20 11C20 15.968 15.968 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2ZM11 18C14.8675 18 18 14.8675 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18ZM19.4853 18.0711L22.3137 20.8995L20.8995 22.3137L18.0711 19.4853L19.4853 18.0711Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n","import { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n Component,\r\n input,\r\n computed,\r\n model,\r\n signal,\r\n output,\r\n} from '@angular/core';\r\nimport { IPagination } from './pagination.interface';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { SelectComponent } from '../select/select.component';\r\nimport { SvgComponent } from '../svg';\r\n\r\n@Component({\r\n selector: 's4y-pagination',\r\n imports: [\r\n NgTemplateOutlet,\r\n CommonModule,\r\n FormsModule,\r\n SelectComponent,\r\n SvgComponent,\r\n ],\r\n templateUrl: './pagination.component.html',\r\n styleUrl: './pagination.component.scss',\r\n})\r\nexport class PaginationComponent {\r\n currentPage = model<number>(0);\r\n totalResults = input<number>(0);\r\n rowsPerPageOptions = input<number[]>([5, 10, 15, 20]);\r\n rowsPerPage = model(5);\r\n\r\n onChange = output<IPagination>();\r\n\r\n totalPages = computed(() =>\r\n Math.ceil(this.totalResults() / this.rowsPerPage()),\r\n );\r\n\r\n offset = computed(() =>\r\n this.totalResults() === 0 ? 0 : this.currentPage() * this.rowsPerPage() + 1,\r\n );\r\n\r\n limit = computed(() =>\r\n Math.min(\r\n (this.currentPage() + 1) * this.rowsPerPage(),\r\n this.totalResults(),\r\n ),\r\n );\r\n\r\n smartPageArray = computed(() => {\r\n const total = this.totalPages();\r\n const current = this.currentPage();\r\n const windowSize = 5;\r\n const pages: (number | '...')[] = [];\r\n\r\n if (total <= windowSize + 2) {\r\n for (let i = 0; i < total; i++) pages.push(i);\r\n return pages;\r\n }\r\n\r\n const start = Math.max(1, current - 1);\r\n const end = Math.min(total - 2, current + 1);\r\n\r\n pages.push(0); // sempre mostra a primeira página\r\n\r\n if (start > 1) pages.push('...');\r\n\r\n for (let i = start; i <= end; i++) {\r\n pages.push(i);\r\n }\r\n\r\n if (end < total - 2) pages.push('...');\r\n\r\n pages.push(total - 1); // última página\r\n\r\n return pages;\r\n });\r\n\r\n protected changePage(selectedPage: number) {\r\n this.currentPage.set(selectedPage);\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n prevButtonDisabled = computed(() => this.currentPage() <= 0);\r\n nextButtonDisabled = computed(\r\n () => this.currentPage() >= this.totalPages() - 1,\r\n );\r\n\r\n prevPage() {\r\n if (this.currentPage() <= 0) return;\r\n this.currentPage.update((prevValue) => prevValue - 1);\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n nextPage() {\r\n if (this.currentPage() == this.totalPages()) return;\r\n this.currentPage.update((prevValue) => prevValue + 1);\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n selectRowsPerPage(event: Event) {\r\n const selectElement = event.target as HTMLSelectElement;\r\n const value = Number(selectElement.value);\r\n\r\n this.rowsPerPage.set(value ?? 5);\r\n this.currentPage.set(0);\r\n\r\n this.recalcCurrentPage();\r\n }\r\n\r\n private recalcCurrentPage() {\r\n if (this.currentPage() > this.totalPages()) {\r\n const lastPage = this.totalPages();\r\n this.currentPage.set(lastPage);\r\n }\r\n\r\n this.emitChangeValue();\r\n }\r\n\r\n private emitChangeValue() {\r\n this.onChange.emit({\r\n currentPage: this.currentPage(),\r\n limit: this.limit(),\r\n offset: this.offset(),\r\n totalPages: this.totalPages(),\r\n rowsPerPage: this.rowsPerPage(),\r\n });\r\n }\r\n}\r\n","<div class=\"s4y-pagination-container desktop\">\r\n <div class=\"s4y-pagination-wrapper-view\">\r\n <select\r\n [value]=\"rowsPerPage()\"\r\n (change)=\"selectRowsPerPage($event)\"\r\n name=\"quantity-view-results\"\r\n id=\"quantity-view-results\"\r\n >\r\n @for (rowsPerPageOption of rowsPerPageOptions(); track $index) {\r\n <option [value]=\"rowsPerPageOption\" [selected]=\"rowsPerPageOption === rowsPerPage()\">\r\n {{ rowsPerPageOption }}\r\n </option>\r\n }\r\n </select>\r\n\r\n <ng-container [ngTemplateOutlet]=\"arrow\"></ng-container>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-wrapper\">\r\n <button\r\n [disabled]=\"prevButtonDisabled()\"\r\n (click)=\"prevPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowLeft\"></ng-container>\r\n </button>\r\n\r\n <div class=\"s4y-pagination-pages\">\r\n @for (item of smartPageArray(); track $index) {\r\n <button\r\n *ngIf=\"item !== '...'; else ellipsis\"\r\n (click)=\"changePage(item)\"\r\n [class.selected]=\"item === currentPage()\"\r\n class=\"s4y-pagination-pages__item\"\r\n >\r\n {{ item + 1 }}\r\n </button>\r\n <ng-template #ellipsis>\r\n <span class=\"s4y-pagination-pages__ellipsis\">...</span>\r\n </ng-template>\r\n }\r\n </div>\r\n\r\n <button\r\n [disabled]=\"nextButtonDisabled()\"\r\n (click)=\"nextPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowRight\"></ng-container>\r\n </button>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-details\">\r\n @if (totalResults() > 0) {\r\n <p>\r\n {{ offset() }}\r\n </p>\r\n <span>-</span>\r\n <p>{{ limit() }}</p>\r\n <strong>of</strong>\r\n <p>\r\n {{ totalResults() }}\r\n </p>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- Mobile -->\r\n<div class=\"s4y-pagination-container mobile\">\r\n <div class=\"flex justify-between align-center\">\r\n <div class=\"s4y-pagination-wrapper-view\">\r\n <select\r\n [value]=\"rowsPerPage()\"\r\n (change)=\"selectRowsPerPage($event)\"\r\n name=\"quantity-view-results\"\r\n id=\"quantity-view-results\"\r\n >\r\n @for (rowsPerPageOption of rowsPerPageOptions(); track $index) {\r\n <option [value]=\"rowsPerPageOption\">\r\n {{ rowsPerPageOption }}\r\n </option>\r\n }\r\n </select>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-details\">\r\n <p>\r\n {{ offset() }}\r\n </p>\r\n <span>-</span>\r\n <p>{{ limit() }}</p>\r\n <strong>of</strong>\r\n <p>\r\n {{ totalResults() }}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"s4y-pagination-wrapper\">\r\n <button\r\n [disabled]=\"prevButtonDisabled()\"\r\n (click)=\"prevPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowLeft\"></ng-container>\r\n </button>\r\n\r\n <div class=\"s4y-pagination-pages\">\r\n @for (item of smartPageArray(); track $index) {\r\n <button\r\n *ngIf=\"item !== '...'; else ellipsis\"\r\n (click)=\"changePage(item)\"\r\n [class.selected]=\"item === currentPage()\"\r\n class=\"s4y-pagination-pages__item\"\r\n >\r\n {{ item + 1 }}\r\n </button>\r\n <ng-template #ellipsis>\r\n <span class=\"s4y-pagination-pages__ellipsis\">...</span>\r\n </ng-template>\r\n }\r\n </div>\r\n\r\n <button\r\n [disabled]=\"nextButtonDisabled()\"\r\n (click)=\"nextPage()\"\r\n type=\"button\"\r\n class=\"s4y-pagination-button\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"arrowRight\"></ng-container>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<ng-template #arrowLeft>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.8284 12.0005L14.6569 14.8289L13.2426 16.2431L9 12.0005L13.2426 7.75781L14.6569 9.17203L11.8284 12.0005Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrowRight>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12.1717 12.0005L9.34326 9.17203L10.7575 7.75781L15.0001 12.0005L10.7575 16.2431L9.34326 14.8289L12.1717 12.0005Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrow>\r\n <svg\r\n class=\"s4y-pagination-arrow-view\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n","import { JsonPipe, NgStyle } from '@angular/common';\r\nimport { Component, forwardRef, input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 's4y-slider',\r\n imports: [NgStyle],\r\n templateUrl: './slider.component.html',\r\n styleUrl: './slider.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SliderComponent implements ControlValueAccessor {\r\n showValue = input(true);\r\n min = input<string>('0');\r\n max = input<string>('100');\r\n step = input<string>('5');\r\n rangeStyle = input<{ [key: string]: string }>({});\r\n\r\n disabled = false;\r\n\r\n value: number = 0;\r\n\r\n onChange: (value: any) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n writeValue(value: any): void {\r\n if (value !== undefined) {\r\n this.value = value;\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n changeValue(e: Event) {\r\n const value = (e.target as HTMLInputElement).value;\r\n\r\n this.value = typeof value === 'number' ? value : Number(value);\r\n this.onChange(value);\r\n }\r\n}\r\n","<input\r\n #rangeElement\r\n [ngStyle]=\"rangeStyle\"\r\n type=\"range\"\r\n [min]=\"min()\"\r\n [max]=\"max()\"\r\n [step]=\"step()\"\r\n [disabled]=\"disabled\"\r\n [value]=\"value\"\r\n (input)=\"changeValue($event)\"\r\n/>\r\n\r\n@if (showValue()) {\r\n <p class=\"s4y-ranger-value\">\r\n {{ rangeElement.value }}\r\n </p>\r\n}\r\n","import { Component, computed, forwardRef, input, signal } from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n RadioControlValueAccessor,\r\n} from '@angular/forms';\r\nimport { CompareFn, DisplayFn } from '../select-multi';\r\n\r\n@Component({\r\n selector: 's4y-radio',\r\n imports: [],\r\n templateUrl: './radio.component.html',\r\n styleUrl: './radio.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RadioComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RadioComponent<T = any> implements ControlValueAccessor {\r\n label = input<string>();\r\n name = input<string>();\r\n id = input<string>();\r\n radioValue = input.required<T>();\r\n\r\n compareWith = input<CompareFn<T>>();\r\n displayWith = input<DisplayFn<T>>((o) => String(o));\r\n\r\n disabled: boolean = false;\r\n\r\n value = signal<T | null>(null);\r\n\r\n onChange: (value: T | null) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n writeValue(value: T | null): void {\r\n this.value.set(value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onInput() {\r\n const v = this.radioValue();\r\n this.value.set(v);\r\n this.onChange(v);\r\n this.onTouched();\r\n }\r\n\r\n isChecked = computed(() => {\r\n const current = this.value();\r\n const candidate = this.radioValue();\r\n\r\n if (current == null) return false;\r\n\r\n const cmp = this.compareWith?.();\r\n if (cmp) return cmp(current as T, candidate);\r\n\r\n return current === candidate;\r\n });\r\n\r\n displayLabel = computed(() => {\r\n const manual = this.label();\r\n if (manual != null && manual !== '') return manual;\r\n return this.displayWith()(this.radioValue());\r\n });\r\n}\r\n","<label class=\"s4y-radio\" [class.disabled]=\"disabled\">\r\n <input\r\n value=\"on\"\r\n [disabled]=\"disabled\"\r\n [id]=\"id()\"\r\n [name]=\"name()\"\r\n type=\"radio\"\r\n (change)=\"onInput()\"\r\n [checked]=\"isChecked()\"\r\n />\r\n <span class=\"s4y-radio-label\">\r\n {{ displayLabel() }}\r\n </span>\r\n</label>\r\n","export enum TooltipPosition {\r\n ABOVE = 'above',\r\n BELOW = 'below',\r\n LEFT = 'left',\r\n RIGHT = 'right',\r\n DYNAMIC = 'dynamic',\r\n DEFAULT = 'above',\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { TooltipPosition } from './tooltip.enums';\r\n\r\n@Component({\r\n selector: 's4y-tooltip',\r\n templateUrl: './tooltip.component.html',\r\n styleUrls: ['./tooltip.component.scss'],\r\n standalone: false,\r\n})\r\nexport class TooltipComponent implements OnInit {\r\n position: TooltipPosition = TooltipPosition.DEFAULT;\r\n tooltip = '';\r\n left = 0;\r\n top = 0;\r\n visible = false;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<div\r\n class=\"tooltip {{ 'tooltip--' + position }}\"\r\n [class.tooltip--visible]=\"visible\"\r\n [style.left]=\"left + 'px'\"\r\n [style.top]=\"top + 'px'\"\r\n>\r\n {{ tooltip }}\r\n</div>\r\n","import {\r\n ApplicationRef,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n Directive,\r\n ElementRef,\r\n EmbeddedViewRef,\r\n HostListener,\r\n Injector,\r\n Input,\r\n} from '@angular/core';\r\nimport { TooltipComponent } from './tooltip.component';\r\nimport { TooltipPosition } from './tooltip.enums';\r\n\r\n@Directive({\r\n selector: '[s4yTooltip]',\r\n standalone: false,\r\n})\r\nexport class TooltipDirective {\r\n @Input('s4yTooltip') tooltip = '';\r\n @Input('s4yTooltipPosition') position: TooltipPosition =\r\n TooltipPosition.DEFAULT;\r\n @Input() showDelay = 0;\r\n @Input() hideDelay = 0;\r\n\r\n private componentRef: ComponentRef<any> | null = null;\r\n private showTimeout?: number;\r\n private hideTimeout?: number;\r\n private touchTimeout?: number;\r\n\r\n constructor(\r\n private elementRef: ElementRef,\r\n private appRef: ApplicationRef,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private injector: Injector,\r\n ) {}\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n this.initializeTooltip();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.setHideTooltipTimeout();\r\n }\r\n\r\n @HostListener('mousemove', ['$event'])\r\n onMouseMove($event: MouseEvent): void {\r\n if (\r\n this.componentRef !== null &&\r\n this.position === TooltipPosition.DYNAMIC\r\n ) {\r\n this.componentRef.instance.left = $event.clientX;\r\n this.componentRef.instance.top = $event.clientY;\r\n this.componentRef.instance.tooltip = this.tooltip;\r\n }\r\n }\r\n\r\n @HostListener('touchstart', ['$event'])\r\n onTouchStart($event: TouchEvent): void {\r\n $event.preventDefault();\r\n window.clearTimeout(this.touchTimeout);\r\n this.touchTimeout = window.setTimeout(\r\n this.initializeTooltip.bind(this),\r\n 500,\r\n );\r\n }\r\n\r\n @HostListener('touchend')\r\n onTouchEnd(): void {\r\n window.clearTimeout(this.touchTimeout);\r\n this.setHideTooltipTimeout();\r\n }\r\n\r\n private initializeTooltip() {\r\n if (this.componentRef === null) {\r\n window.clearInterval(this.hideDelay);\r\n const componentFactory =\r\n this.componentFactoryResolver.resolveComponentFactory(TooltipComponent);\r\n this.componentRef = componentFactory.create(this.injector);\r\n\r\n this.appRef.attachView(this.componentRef.hostView);\r\n const [tooltipDOMElement] = (\r\n this.componentRef.hostView as EmbeddedViewRef<any>\r\n ).rootNodes;\r\n\r\n this.setTooltipComponentProperties();\r\n\r\n document.body.appendChild(tooltipDOMElement);\r\n this.showTimeout = window.setTimeout(\r\n this.showTooltip.bind(this),\r\n this.showDelay,\r\n );\r\n }\r\n }\r\n\r\n private setTooltipComponentProperties() {\r\n if (this.componentRef !== null) {\r\n this.componentRef.instance.tooltip = this.tooltip;\r\n this.componentRef.instance.position = this.position;\r\n\r\n const { left, right, top, bottom } =\r\n this.elementRef.nativeElement.getBoundingClientRect();\r\n\r\n switch (this.position) {\r\n case TooltipPosition.BELOW: {\r\n this.componentRef.instance.left = Math.round(\r\n (right - left) / 2 + left,\r\n );\r\n this.componentRef.instance.top = Math.round(bottom);\r\n break;\r\n }\r\n case TooltipPosition.ABOVE: {\r\n this.componentRef.instance.left = Math.round(\r\n (right - left) / 2 + left,\r\n );\r\n this.componentRef.instance.top = Math.round(top);\r\n break;\r\n }\r\n case TooltipPosition.RIGHT: {\r\n this.componentRef.instance.left = Math.round(right);\r\n this.componentRef.instance.top = Math.round(top + (bottom - top) / 2);\r\n break;\r\n }\r\n case TooltipPosition.LEFT: {\r\n this.componentRef.instance.left = Math.round(left);\r\n this.componentRef.instance.top = Math.round(top + (bottom - top) / 2);\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private showTooltip() {\r\n if (this.componentRef !== null) {\r\n this.componentRef.instance.visible = true;\r\n }\r\n }\r\n\r\n private setHideTooltipTimeout() {\r\n this.hideTimeout = window.setTimeout(\r\n this.destroy.bind(this),\r\n this.hideDelay,\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\r\n }\r\n\r\n destroy(): void {\r\n if (this.componentRef !== null) {\r\n window.clearInterval(this.showTimeout);\r\n window.clearInterval(this.hideDelay);\r\n this.appRef.detachView(this.componentRef.hostView);\r\n this.componentRef.destroy();\r\n this.componentRef = null;\r\n }\r\n }\r\n}\r\n","import { CommonModule, NgClass } from '@angular/common';\r\nimport { TooltipDirective } from './tooltip.directive';\r\nimport { NgModule } from '@angular/core';\r\nimport { TooltipComponent } from './tooltip.component';\r\n\r\n@NgModule({\r\n declarations: [TooltipComponent, TooltipDirective],\r\n imports: [CommonModule, NgClass],\r\n exports: [TooltipDirective],\r\n})\r\nexport class TooltipModule {}\r\n","import { Directive } from '@angular/core';\r\n\r\n/**\r\n * This directive is used to customize the breadcrumb label behavior\r\n * *s4yBreadcrumbItem directive can be used in the child element of s4yBreadcrumbItem\r\n * Usage: refer to the demo - app.component.html\r\n */\r\n@Directive({\r\n selector: '[s4yBreadcrumbItem]',\r\n standalone: true,\r\n})\r\nexport class BreadcrumbItemDirective {}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRoute,\r\n ActivatedRouteSnapshot,\r\n GuardsCheckEnd,\r\n Router,\r\n} from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport {\r\n BreadcrumbDefinition,\r\n Breadcrumb,\r\n BreadcrumbConfig,\r\n BreadcrumbObject,\r\n} from './types';\r\n\r\ntype StoreMatcherKey = 'routeLink' | 'routeRegex' | 'alias';\r\n\r\nconst PATH_PARAM = {\r\n PREFIX: ':',\r\n REGEX_IDENTIFIER: '/:[^/]+',\r\n REGEX_REPLACER: '/[^/]+',\r\n};\r\nconst ALIAS_PREFIX = '@';\r\nconst isNonEmpty = (obj: unknown): boolean => {\r\n return !!obj && Object.keys(obj).length > 0;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BreadcrumbService {\r\n private baseHref = '/';\r\n\r\n /**\r\n * dynamicBreadcrumbStore holds information about dynamically updated breadcrumbs.\r\n * Breadcrumbs can be set from anywhere (component, service) in the app.\r\n * On every breadcrumb update check this store and use the info if available.\r\n */\r\n private dynamicBreadcrumbStore: BreadcrumbDefinition[] = [];\r\n\r\n /**\r\n * breadcrumbList for the current route\r\n * When breadcrumb info is changed dynamically, check if the currentBreadcrumbs is effected\r\n * If effected, update the change and emit a new stream\r\n */\r\n private currentBreadcrumbs: BreadcrumbDefinition[] = [];\r\n private previousBreadcrumbs: BreadcrumbDefinition[] = [];\r\n\r\n /**\r\n * Breadcrumbs observable to be subscribed by BreadcrumbComponent\r\n * Emits on every route change OR dynamic update of breadcrumb\r\n */\r\n private breadcrumbs = new BehaviorSubject<BreadcrumbDefinition[]>([]);\r\n public breadcrumbs$ = this.breadcrumbs.asObservable();\r\n\r\n constructor(\r\n private activatedRoute: ActivatedRoute,\r\n private router: Router,\r\n ) {\r\n this.detectRouteChanges();\r\n }\r\n\r\n /**\r\n * Whenever route changes build breadcrumb list again\r\n */\r\n private detectRouteChanges() {\r\n // Special case where breadcrumb service & component instantiates after a route is navigated.\r\n // Ex: put breadcrumbs within *ngIf and this.router.events would be empty\r\n // This check is also required where { initialNavigation: 'enabledBlocking' } is applied to routes\r\n this.setupBreadcrumbs(this.activatedRoute.snapshot);\r\n\r\n this.router.events\r\n .pipe(\r\n filter(\r\n (event): event is GuardsCheckEnd => event instanceof GuardsCheckEnd,\r\n ),\r\n )\r\n .subscribe((event) => {\r\n // activatedRoute doesn't carry data when shouldReuseRoute returns false\r\n // use the event data with GuardsCheckEnd as workaround\r\n // Check for shouldActivate in case where the authGuard returns false the breadcrumbs shouldn't be changed\r\n if (event.shouldActivate) {\r\n this.setupBreadcrumbs(event.state.root);\r\n }\r\n });\r\n }\r\n\r\n private setupBreadcrumbs(activatedRouteSnapshot: ActivatedRouteSnapshot) {\r\n this.previousBreadcrumbs = this.currentBreadcrumbs;\r\n // breadcrumb label for base OR root path. Usually, this can be set as 'Home'\r\n const rootBreadcrumb = this.getRootBreadcrumb();\r\n this.currentBreadcrumbs = rootBreadcrumb ? [rootBreadcrumb] : [];\r\n this.prepareBreadcrumbList(activatedRouteSnapshot, this.baseHref);\r\n }\r\n\r\n private getRootBreadcrumb(): Breadcrumb | void {\r\n const rootConfig = this.router.config.find((config) => config.path === '');\r\n const rootBreadcrumb = this.extractObject(rootConfig?.data?.['breadcrumb']);\r\n const storeItem = this.getFromStore(rootBreadcrumb.alias!, '/');\r\n\r\n if (isNonEmpty(rootBreadcrumb) || isNonEmpty(storeItem)) {\r\n return {\r\n ...storeItem,\r\n ...rootBreadcrumb,\r\n routeLink: this.baseHref,\r\n ...this.getQueryParamsFromPreviousList('/'),\r\n };\r\n }\r\n }\r\n\r\n private prepareBreadcrumbItem(\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n routeLinkPrefix: string,\r\n ): BreadcrumbDefinition {\r\n const { path, breadcrumb } = this.parseRouteData(\r\n activatedRouteSnapshot.routeConfig,\r\n );\r\n const resolvedSegment = this.resolvePathSegment(\r\n path,\r\n activatedRouteSnapshot,\r\n );\r\n const routeLink = `${routeLinkPrefix}${resolvedSegment}`;\r\n const storeItem = this.getFromStore(breadcrumb.alias!, routeLink);\r\n\r\n const label = this.extractLabel(\r\n storeItem?.label! || breadcrumb?.label!,\r\n resolvedSegment,\r\n );\r\n let isAutoGeneratedLabel = false;\r\n let autoGeneratedLabel = '';\r\n if (!label) {\r\n isAutoGeneratedLabel = true;\r\n autoGeneratedLabel = resolvedSegment;\r\n }\r\n\r\n return {\r\n ...storeItem,\r\n ...breadcrumb,\r\n label: isAutoGeneratedLabel ? autoGeneratedLabel : label,\r\n routeLink,\r\n isAutoGeneratedLabel,\r\n ...this.getQueryParamsFromPreviousList(routeLink),\r\n };\r\n }\r\n\r\n private prepareBreadcrumbList(\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n routeLinkPrefix: string,\r\n ): Breadcrumb[] | void {\r\n if (activatedRouteSnapshot.routeConfig?.path) {\r\n const breadcrumbItem = this.prepareBreadcrumbItem(\r\n activatedRouteSnapshot,\r\n routeLinkPrefix,\r\n );\r\n this.currentBreadcrumbs.push(breadcrumbItem);\r\n\r\n if (activatedRouteSnapshot.firstChild) {\r\n return this.prepareBreadcrumbList(\r\n activatedRouteSnapshot.firstChild,\r\n breadcrumbItem.routeLink + '/',\r\n );\r\n }\r\n } else if (activatedRouteSnapshot.firstChild) {\r\n return this.prepareBreadcrumbList(\r\n activatedRouteSnapshot.firstChild,\r\n routeLinkPrefix,\r\n );\r\n }\r\n const lastCrumb =\r\n this.currentBreadcrumbs[this.currentBreadcrumbs.length - 1];\r\n this.setQueryParamsForActiveBreadcrumb(lastCrumb, activatedRouteSnapshot);\r\n\r\n // remove breadcrumb items that needs to be hidden\r\n const breadcrumbsToShow = this.currentBreadcrumbs.filter(\r\n (item) => !item.skip,\r\n );\r\n\r\n this.breadcrumbs.next(breadcrumbsToShow);\r\n }\r\n\r\n private getFromStore(\r\n alias: string,\r\n routeLink: string,\r\n ): BreadcrumbDefinition | undefined {\r\n return this.dynamicBreadcrumbStore.find((item) => {\r\n return (\r\n (alias && alias === item.alias) ||\r\n (routeLink && routeLink === item.routeLink) ||\r\n this.matchRegex(routeLink, item.routeRegex!)\r\n );\r\n });\r\n }\r\n\r\n /**\r\n * use exact match instead of regexp.test\r\n * for /mentor/[^/]+ we should match '/mentor/12' but not '/mentor/12/abc'\r\n */\r\n private matchRegex(routeLink: string, routeRegex: string) {\r\n const match = routeLink.match(new RegExp(routeRegex));\r\n return match?.[0] === routeLink;\r\n }\r\n\r\n /**\r\n * if the path segment has route params, read the param value from url\r\n * for each segment of route this gets called\r\n *\r\n * for mentor/:id/view - it gets called with mentor, :id, view 3 times\r\n */\r\n private resolvePathSegment(\r\n segment: string,\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n ) {\r\n //quirk -segment can be defined as view/:id in route config in which case you need to make it view/<resolved-param>\r\n if (segment.includes(PATH_PARAM.PREFIX)) {\r\n Object.entries(activatedRouteSnapshot.params).forEach(([key, value]) => {\r\n segment = segment.replace(`:${key}`, `${value}`);\r\n });\r\n }\r\n return segment;\r\n }\r\n\r\n /**\r\n * queryParams & fragments for previous breadcrumb path are copied over to new list\r\n */\r\n private getQueryParamsFromPreviousList(routeLink: string): Breadcrumb {\r\n const { queryParams, fragment } =\r\n this.previousBreadcrumbs.find((item) => item.routeLink === routeLink) ||\r\n {};\r\n return { queryParams, fragment };\r\n }\r\n\r\n /**\r\n * set current activated route query params to the last breadcrumb item\r\n */\r\n private setQueryParamsForActiveBreadcrumb(\r\n lastItem: Breadcrumb,\r\n activatedRouteSnapshot: ActivatedRouteSnapshot,\r\n ) {\r\n if (lastItem) {\r\n const { queryParams, fragment } = activatedRouteSnapshot;\r\n lastItem.queryParams = queryParams ? { ...queryParams } : undefined;\r\n lastItem.fragment = fragment!;\r\n }\r\n }\r\n\r\n /**\r\n * For a specific route, breadcrumb can be defined either on parent OR it's child(which has empty path)\r\n * When both are defined, child takes precedence\r\n *\r\n * Ex: Below we are setting breadcrumb on both parent and child.\r\n * So, child takes precedence and \"Defined On Child\" is displayed for the route 'home'\r\n * { path: 'home', loadChildren: () => import('./home/home.module').then((m) => m.HomeModule) , data: {breadcrumb: \"Defined On Module\"}}\r\n * AND\r\n * children: [\r\n * { path: '', component: ShowUserComponent, data: {breadcrumb: \"Defined On Child\" }\r\n * ]\r\n */\r\n private parseRouteData(routeConfig: any) {\r\n const { path, data } = routeConfig;\r\n const breadcrumb = this.mergeWithBaseChildData(\r\n routeConfig,\r\n data?.breadcrumb,\r\n );\r\n\r\n return { path, breadcrumb };\r\n }\r\n\r\n /**\r\n * get empty children of a module or Component. Empty child is the one with path: ''\r\n * When parent and it's children (that has empty route path) define data merge them both with child taking precedence\r\n */\r\n private mergeWithBaseChildData(\r\n routeConfig: any, // TODO: add proper type\r\n config: BreadcrumbConfig,\r\n ): BreadcrumbObject {\r\n if (!routeConfig) {\r\n return this.extractObject(config);\r\n }\r\n\r\n let baseChild;\r\n if (routeConfig.loadChildren) {\r\n // To handle a module with empty child route\r\n baseChild = routeConfig._loadedRoutes.find(\r\n (route: any) => route.path === '',\r\n );\r\n } else if (routeConfig.children) {\r\n // To handle a component with empty child route\r\n baseChild = routeConfig.children.find((route: any) => route.path === '');\r\n }\r\n\r\n const childConfig = baseChild?.data?.breadcrumb;\r\n return childConfig\r\n ? this.mergeWithBaseChildData(baseChild, {\r\n ...this.extractObject(config),\r\n ...this.extractObject(childConfig),\r\n })\r\n : this.extractObject(config);\r\n }\r\n\r\n /**\r\n * Update breadcrumb dynamically\r\n *\r\n * key can be a path | alias\r\n *\r\n * 1) Using complete route path. route can be passed the same way you define angular routes\r\n * - path can be passed as 'exact path(routeLink)' or 'path with params(routeRegex)'\r\n * - update label Ex: set('/mentor', 'Mentor'), set('/mentor/:id', 'Mentor Details')\r\n * - change visibility Ex: set('/mentor/:id/edit', { skip: true })\r\n * ------------------------------------------ OR ------------------------------------------\r\n * 2) Using route alias (prefixed with '@'). alias should be unique for a route\r\n * - update label Ex: set('@mentor', 'Enabler')\r\n * - change visibility Ex: set('@mentorEdit', { skip: true })\r\n *\r\n *\r\n * value can be string | BreadcrumbObject | BreadcrumbFunction\r\n */\r\n set(key: string, breadcrumb: string | BreadcrumbObject) {\r\n const breadcrumbObject = this.extractObject(breadcrumb);\r\n let updateArgs: [StoreMatcherKey, BreadcrumbDefinition];\r\n\r\n if (key.startsWith(ALIAS_PREFIX)) {\r\n updateArgs = ['alias', { ...breadcrumbObject, alias: key.slice(1) }];\r\n } else if (key.includes(PATH_PARAM.PREFIX)) {\r\n updateArgs = [\r\n 'routeRegex',\r\n { ...breadcrumbObject, routeRegex: this.buildRegex(key) },\r\n ];\r\n } else {\r\n updateArgs = [\r\n 'routeLink',\r\n { ...breadcrumbObject, routeLink: this.ensureLeadingSlash(key) },\r\n ];\r\n }\r\n\r\n // For this route if previously a breadcrumb is not defined that sets isAutoGeneratedLabel: true\r\n // change it to false since this is user supplied value\r\n updateArgs[1].isAutoGeneratedLabel = false;\r\n\r\n this.updateStore(...updateArgs);\r\n this.updateCurrentBreadcrumbs(...updateArgs);\r\n }\r\n\r\n /**\r\n * Update the store to reuse for dynamic declarations\r\n * If the store already has this route definition update it, else add\r\n */\r\n private updateStore(key: string, breadcrumb: BreadcrumbDefinition) {\r\n const storeItemIndex = this.dynamicBreadcrumbStore.findIndex((item) => {\r\n return (\r\n breadcrumb[key as keyof BreadcrumbDefinition] ===\r\n item[key as keyof BreadcrumbDefinition]\r\n );\r\n });\r\n if (storeItemIndex > -1) {\r\n this.dynamicBreadcrumbStore[storeItemIndex] = {\r\n ...this.dynamicBreadcrumbStore[storeItemIndex],\r\n ...breadcrumb,\r\n };\r\n } else {\r\n this.dynamicBreadcrumbStore.push({ ...breadcrumb });\r\n }\r\n }\r\n\r\n /**\r\n * If breadcrumb is present in current breadcrumbs update it and emit new stream\r\n */\r\n private updateCurrentBreadcrumbs(\r\n key: string,\r\n breadcrumb: BreadcrumbDefinition,\r\n ) {\r\n const itemIndex = this.currentBreadcrumbs.findIndex((item) => {\r\n return key === 'routeRegex'\r\n ? this.matchRegex(item.routeLink!, breadcrumb[key]!)\r\n : breadcrumb[key as keyof BreadcrumbDefinition] ===\r\n item[key as keyof BreadcrumbDefinition];\r\n });\r\n if (itemIndex > -1) {\r\n this.currentBreadcrumbs[itemIndex] = {\r\n ...this.currentBreadcrumbs[itemIndex],\r\n ...breadcrumb,\r\n };\r\n const breadcrumbsToShow = this.currentBreadcrumbs.filter(\r\n (item) => !item.skip,\r\n );\r\n this.breadcrumbs.next([...breadcrumbsToShow]);\r\n }\r\n }\r\n\r\n /**\r\n * For a route with path param, we create regex dynamically from angular route syntax\r\n * '/mentor/:id' becomes '/mentor/[^/]',\r\n * breadcrumbService.set('/mentor/:id', 'Uday') should update 'Uday' as label for '/mentor/2' OR 'mentor/ada'\r\n */\r\n private buildRegex(path: string) {\r\n return this.ensureLeadingSlash(path).replace(\r\n new RegExp(PATH_PARAM.REGEX_IDENTIFIER, 'g'),\r\n PATH_PARAM.REGEX_REPLACER,\r\n );\r\n }\r\n\r\n private ensureLeadingSlash(path: string) {\r\n return path.startsWith('/') ? path : `/${path}`;\r\n }\r\n\r\n /**\r\n * In App's RouteConfig, breadcrumb can be defined as a string OR a function OR an object\r\n *\r\n * string: simple static breadcrumb label for a path\r\n * function: callback that gets invoked with resolved path param\r\n * object: additional data defined along with breadcrumb label that gets passed to *s4yBreadcrumbItem directive\r\n */\r\n private extractLabel(config: BreadcrumbConfig, resolvedParam?: string) {\r\n const label = typeof config === 'object' ? config.label : config;\r\n if (typeof label === 'function') {\r\n return label(resolvedParam);\r\n }\r\n return label;\r\n }\r\n\r\n private extractObject(config: BreadcrumbConfig): BreadcrumbObject {\r\n // don't include {label} if config is undefined. This is important since we merge the configs\r\n if (\r\n config &&\r\n (typeof config === 'string' || typeof config === 'function')\r\n ) {\r\n return { label: config };\r\n }\r\n return (config as BreadcrumbObject) || {};\r\n }\r\n}\r\n","import {\r\n Component,\r\n ContentChild,\r\n Input,\r\n OnInit,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ActivatedRoute, RouterModule } from '@angular/router';\r\nimport { Observable, map } from 'rxjs';\r\nimport { BreadcrumbItemDirective } from './breadcrumb-item.directive';\r\nimport { BreadcrumbService } from './breadcrumb.service';\r\nimport { BreadcrumbDefinition } from './types';\r\n\r\n@Component({\r\n selector: 's4y-breadcrumb',\r\n imports: [CommonModule, RouterModule],\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrl: './breadcrumb.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class BreadcrumbComponent implements OnInit {\r\n breadcrumbs$!: Observable<BreadcrumbDefinition[]>;\r\n separatorTemplate: TemplateRef<void> | undefined;\r\n private _separator: string = '/';\r\n\r\n /**\r\n * Breadcrumb item can be customized with this template\r\n * Template context is provided label, additional info, first and last indexes\r\n * Use cases:\r\n * 1) Add an icon along with label\r\n * 2) i18n. {{breadcrumb | translate}} or {{breadcrumb | transloco}}\r\n * 3) Change text case {{breadcrumb | titlecase}}\r\n */\r\n @ContentChild(BreadcrumbItemDirective, { static: false, read: TemplateRef })\r\n itemTemplate: any;\r\n\r\n /**\r\n * If true, breadcrumb is auto generated even without any mapping label\r\n * Default label is same as route segment\r\n */\r\n @Input() autoGenerate = true;\r\n\r\n /**\r\n * By default query params will be preserved with breadcrumbs\r\n */\r\n @Input() preserveQueryParams = true;\r\n\r\n /**\r\n * By default query fragments will be preserved with breadcrumbs\r\n */\r\n @Input() preserveFragment = true;\r\n\r\n /**\r\n * custom class provided by consumer to increase specificity\r\n * This will benefit to override styles that are conflicting\r\n */\r\n @Input() class = '';\r\n\r\n /**\r\n * anchorTarget = \"_blank\" makes the breadcrumb link open in a new tab\r\n */\r\n @Input() anchorTarget: '_blank' | undefined;\r\n\r\n /**\r\n * separator between breadcrumbs, defaults to '/'.\r\n * User can customize separator either by passing a String or Template\r\n *\r\n * String --> Ex: <s4y-breadcrumb separator=\"-\"> </s4y-breadcrumb>\r\n *\r\n * Template --> Ex: <s4y-breadcrumb [separator]=\"separatorTemplate\"> </s4y-breadcrumb>\r\n * <ng-template #separatorTemplate><mat-icon>arrow_right</mat-icon></ng-template>\r\n */\r\n @Input()\r\n set separator(value: string | TemplateRef<void>) {\r\n if (value instanceof TemplateRef) {\r\n this.separatorTemplate = value;\r\n this._separator = '/';\r\n } else {\r\n this.separatorTemplate = undefined;\r\n this._separator = value || '/';\r\n }\r\n }\r\n get separator() {\r\n return this._separator;\r\n }\r\n\r\n setupMessage = 'not set up yet';\r\n someParameterValue = null;\r\n\r\n constructor(\r\n private breadcrumbService: BreadcrumbService,\r\n activateRoute: ActivatedRoute,\r\n ) {\r\n // breadcrumb inside ngIf works only this way\r\n activateRoute.params.subscribe((params) => {\r\n this.setupComponent(params['someParam']);\r\n });\r\n }\r\n\r\n setupComponent(someParam: any) {\r\n this.setupMessage = 'set up at ' + new Date();\r\n this.someParameterValue = someParam;\r\n }\r\n\r\n ngOnInit() {\r\n this.breadcrumbs$ = this.breadcrumbService.breadcrumbs$.pipe(\r\n map((breadcrumbs: BreadcrumbDefinition[]) => {\r\n return breadcrumbs\r\n .filter((breadcrumb: BreadcrumbDefinition) => {\r\n // Usually, breadcrumb list can contain a combination of auto generated and user specified labels\r\n // this filters autogenerated labels in case of \"[autoGenerate]: false\"\r\n if (this.autoGenerate) {\r\n return true;\r\n }\r\n return !breadcrumb.isAutoGeneratedLabel;\r\n })\r\n .map((breadcrumb: BreadcrumbDefinition) => {\r\n // Do not mutate breadcrumb as its source of truth.\r\n // There can be scenarios where we can have multiple s4y-breadcrumb instances in page\r\n const { routeInterceptor, routeLink } = breadcrumb;\r\n return {\r\n ...breadcrumb,\r\n routeLink:\r\n routeInterceptor?.(routeLink!, breadcrumb) || routeLink,\r\n };\r\n });\r\n }),\r\n );\r\n }\r\n}\r\n","<nav aria-label=\"breadcrumb\" class=\"s4y-breadcrumb-root\" [ngClass]=\"class\">\r\n <ol class=\"s4y-breadcrumb-list\">\r\n <ng-container\r\n *ngFor=\"\r\n let breadcrumb of breadcrumbs$ | async;\r\n last as isLast;\r\n first as isFirst;\r\n index as index;\r\n count as count\r\n \"\r\n >\r\n <li class=\"s4y-breadcrumb-item\">\r\n <a\r\n *ngIf=\"!isLast\"\r\n class=\"s4y-breadcrumb-link\"\r\n [ngClass]=\"{ 's4y-breadcrumb-link-disabled': breadcrumb.disable }\"\r\n [attr.aria-disabled]=\"breadcrumb.disable\"\r\n [attr.tabIndex]=\"breadcrumb.disable ? -1 : 0\"\r\n rel=\"noopener noreferrer\"\r\n [routerLink]=\"\r\n breadcrumb.routeInterceptor\r\n ? breadcrumb.routeInterceptor(breadcrumb.routeLink!, breadcrumb)\r\n : breadcrumb.routeLink\r\n \"\r\n [queryParams]=\"\r\n preserveQueryParams ? breadcrumb.queryParams : undefined\r\n \"\r\n [fragment]=\"preserveFragment ? breadcrumb.fragment : undefined\"\r\n [target]=\"anchorTarget ? anchorTarget : '_self'\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count,\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container *ngIf=\"!itemTemplate\">{{\r\n breadcrumb.label\r\n }}</ng-container>\r\n </a>\r\n\r\n <span *ngIf=\"isLast\" class=\"s4y-breadcrumb-trail\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n itemTemplate;\r\n context: {\r\n $implicit: breadcrumb.label,\r\n info: breadcrumb.info,\r\n last: isLast,\r\n first: isFirst,\r\n index: index,\r\n count: count,\r\n }\r\n \"\r\n ></ng-container>\r\n <ng-container *ngIf=\"!itemTemplate\">{{\r\n breadcrumb.label\r\n }}</ng-container>\r\n </span>\r\n </li>\r\n\r\n <li *ngIf=\"!isLast\" class=\"s4y-breadcrumb-separator\" aria-hidden=\"true\">\r\n @if (separatorTemplate) {\r\n <ng-container *ngTemplateOutlet=\"separatorTemplate\"></ng-container>\r\n }\r\n\r\n <ng-container *ngIf=\"!separatorTemplate\">{{ separator }}</ng-container>\r\n </li>\r\n </ng-container>\r\n </ol>\r\n</nav>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-step',\r\n templateUrl: './step.component.html',\r\n styleUrl: './step.component.scss',\r\n imports: [CommonModule],\r\n})\r\nexport class StepComponent {\r\n @ViewChild('root', { static: true }) root!: ElementRef;\r\n\r\n @Input() value!: number;\r\n @Input() title!: string;\r\n @Input() description?: string;\r\n @Input() isLast = false;\r\n @Input() selected = false;\r\n @Input() disabled = false;\r\n @Input() isCompleted = false;\r\n\r\n stepClicked = new EventEmitter<number>();\r\n\r\n linear = false;\r\n\r\n onClick() {\r\n if (!this.disabled) {\r\n this.stepClicked.emit(this.value);\r\n }\r\n }\r\n}\r\n","<button\r\n (click)=\"onClick()\"\r\n [class.last-step]=\"isLast\"\r\n #root\r\n role=\"button\"\r\n type=\"button\"\r\n class=\"s4y-step-container\"\r\n [disabled]=\"disabled\"\r\n [class.selected]=\"selected || isCompleted\"\r\n [class.future-step]=\"linear && !isCompleted && !selected\"\r\n>\r\n <div class=\"s4y-step-information\">\r\n <div class=\"s4y-step-information__icon\">\r\n <ng-container *ngIf=\"isCompleted; else showValue\"> ✔ </ng-container>\r\n <ng-template #showValue>{{ value }}</ng-template>\r\n </div>\r\n <div class=\"s4y-step-information__line\"></div>\r\n </div>\r\n <div class=\"s4y-step-content\">\r\n <p class=\"s4y-step-content__title\">{{ title }}</p>\r\n @if (description) {\r\n <p class=\"s4y-step-content__description\">\r\n {{ description }}\r\n </p>\r\n }\r\n </div>\r\n</button>\r\n","import {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nexport const stepperAnimation = trigger('stepperAnimation', [\r\n state('left', style({ transform: 'translateX(-100%)', opacity: 0 })),\r\n state('center', style({ transform: 'translateX(0)', opacity: 1 })),\r\n state('right', style({ transform: 'translateX(100%)', opacity: 0 })),\r\n\r\n transition('left => center', [animate('300ms ease-out')]),\r\n transition('right => center', [animate('300ms ease-out')]),\r\n transition('center => left', [animate('300ms ease-in')]),\r\n transition('center => right', [animate('300ms ease-in')]),\r\n]);\r\n","import {\r\n Component,\r\n ContentChild,\r\n ElementRef,\r\n Input,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { stepperAnimation } from '../../animations/stepper.animation';\r\nimport { StepperComponent } from '../../stepper.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-step-panel',\r\n templateUrl: './step-panel.component.html',\r\n styleUrl: './step-panel.component.scss',\r\n animations: [stepperAnimation],\r\n imports: [CommonModule],\r\n})\r\nexport class StepPanelComponent {\r\n @ViewChild('root', { static: true }) root!: ElementRef;\r\n @Input({ required: true }) value: number = 1;\r\n @Input() visible: boolean = false;\r\n\r\n constructor(private stepperComponent: StepperComponent) {}\r\n\r\n @ContentChild('templatePanel') templatePanel!: TemplateRef<any>;\r\n\r\n animationState: 'left' | 'center' | 'right' = 'right';\r\n\r\n canNavigateTo(value: number) {\r\n this.stepperComponent.setSelected(value);\r\n }\r\n}\r\n","<!-- <div\r\n class=\"s4y-step-panel-container\"\r\n #root\r\n [@stepperAnimation]=\"animationState\"\r\n>\r\n @if (visible) {\r\n <ng-content></ng-content>\r\n }\r\n</div> -->\r\n<!-- Angular mais novo @for nao tem tanto suporte para as animacoes -->\r\n\r\n<div\r\n [@stepperAnimation]=\"animationState\"\r\n class=\"s4y-step-panel-container\"\r\n *ngIf=\"visible\"\r\n #root\r\n>\r\n <ng-contaner\r\n [ngTemplateOutlet]=\"templatePanel\"\r\n [ngTemplateOutletContext]=\"{ canNavigateTo: canNavigateTo.bind(this) }\"\r\n ></ng-contaner>\r\n</div>\r\n","import {\r\n AfterContentInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n QueryList,\r\n} from '@angular/core';\r\nimport { StepComponent } from './components/step/step.component';\r\nimport { StepPanelComponent } from './components/step-panel/step-panel.component';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-stepper',\r\n templateUrl: './stepper.component.html',\r\n styleUrl: './stepper.component.scss',\r\n imports: [CommonModule],\r\n})\r\nexport class StepperComponent implements OnInit, AfterContentInit, OnDestroy {\r\n private onDestroy$ = new Subject<void>();\r\n @ContentChildren(StepComponent) steps!: QueryList<StepComponent>;\r\n\r\n @ContentChildren(StepPanelComponent, { descendants: true })\r\n stepsPanel!: QueryList<StepPanelComponent>;\r\n\r\n @Input() linear = false;\r\n @Input() isTabsNavigate = true;\r\n\r\n selectedStepValue!: number;\r\n\r\n previousStepValue = 1;\r\n maxStepCompleted = 1;\r\n\r\n constructor(private cdk: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.steps || this.steps.length === 0) return;\r\n\r\n this.initializerStepSelected();\r\n\r\n this.onDestroy$.next();\r\n\r\n this.steps.forEach((step) => {\r\n step.isLast = false;\r\n step.stepClicked.pipe(takeUntil(this.onDestroy$)).subscribe((value) => {\r\n const isBlockedByLinear = this.linear && value > this.maxStepCompleted;\r\n const isBlockedByTabSetting = !this.isTabsNavigate;\r\n\r\n if (isBlockedByLinear || isBlockedByTabSetting) {\r\n return;\r\n }\r\n\r\n this.setSelected(value);\r\n });\r\n });\r\n\r\n this.steps.last.isLast = true;\r\n }\r\n\r\n private initializerStepSelected() {\r\n this.setSelected(this.steps.first?.value ?? 1);\r\n }\r\n\r\n setSelected(value: number) {\r\n this.steps.forEach((step) => {\r\n step.linear = this.linear;\r\n step.selected = step.value === value;\r\n step.isCompleted = step.value < value;\r\n\r\n step.disabled =\r\n (this.linear && step.value > this.maxStepCompleted) ||\r\n !this.isTabsNavigate;\r\n });\r\n\r\n this.stepsPanel.forEach((panel) => {\r\n if (panel.value === value) {\r\n panel.visible = true;\r\n\r\n if (value > this.previousStepValue) {\r\n panel.animationState = 'right'; // entrando da direita\r\n } else if (value < this.previousStepValue) {\r\n panel.animationState = 'left'; // entrando da esquerda\r\n }\r\n\r\n setTimeout(() => (panel.animationState = 'center'), 0);\r\n } else {\r\n panel.visible = false;\r\n }\r\n });\r\n\r\n this.maxStepCompleted = Math.max(this.maxStepCompleted, value);\r\n this.previousStepValue = value;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.onDestroy$.next();\r\n this.onDestroy$.complete();\r\n }\r\n}\r\n","<div class=\"s4y-stepper-container\">\r\n <div class=\"s4y-stepper-container__header\">\r\n <ng-content select=\"s4y-step\"></ng-content>\r\n </div>\r\n <div class=\"s4y-stepper-container__body\">\r\n <ng-content select=\"s4y-step-panel\"></ng-content>\r\n </div>\r\n</div>\r\n","import { computed, Injectable, signal } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class LoadingModalService {\r\n private _isLoading = signal<boolean>(false);\r\n\r\n isLoading = computed(() => this._isLoading());\r\n\r\n showLoading() {\r\n this._isLoading.set(true);\r\n }\r\n\r\n hiddenLoading() {\r\n this._isLoading.set(false);\r\n }\r\n}\r\n","import { animate, style, transition, trigger } from '@angular/animations';\r\n\r\nexport const loadingAnimation = trigger('loadingAnimation', [\r\n transition(':enter', [\r\n style({\r\n opacity: 0,\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n opacity: 1,\r\n }),\r\n ),\r\n ]),\r\n transition(':leave', [\r\n style({\r\n opacity: 1,\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n opacity: 0,\r\n }),\r\n ),\r\n ]),\r\n]);\r\n","import {\r\n Component,\r\n inject,\r\n input,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { LoadingModalService } from './loading-modal.service';\r\nimport { loadingAnimation } from './loading-modal.animation';\r\n\r\n@Component({\r\n selector: 's4y-loading-modal',\r\n imports: [],\r\n templateUrl: './loading-modal.component.html',\r\n styleUrl: './loading-modal.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [loadingAnimation],\r\n})\r\nexport class LoadingModalComponent implements OnInit, OnDestroy {\r\n protected loadingModalService = inject(LoadingModalService);\r\n\r\n messageInfor = input<string>('Carregando dados');\r\n\r\n dots = '';\r\n private intervalId?: any;\r\n\r\n ngOnInit() {\r\n let count = 0;\r\n this.intervalId = setInterval(() => {\r\n count = (count + 1) % 4; // 0,1,2,3\r\n this.dots = '.'.repeat(count);\r\n }, 500);\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.intervalId) {\r\n clearInterval(this.intervalId);\r\n }\r\n }\r\n}\r\n","@if (loadingModalService.isLoading()) {\r\n <div class=\"s4y-loading-modal-wrapper\" @loadingAnimation>\r\n <div class=\"s4y-loading-modal-item\"></div>\r\n <p class=\"s4y-loading-modal-item-infor\">\r\n {{ messageInfor() }} <span>{{ dots }}</span>\r\n </p>\r\n </div>\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input[s4yCheckbox][type=\"checkbox\"]',\r\n imports: [],\r\n templateUrl: './checkbox.component.html',\r\n styleUrl: './checkbox.component.scss',\r\n host: {\r\n role: 'checkbox',\r\n },\r\n})\r\nexport class CheckboxComponent {}\r\n","","import {\r\n animate,\r\n animation,\r\n group,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\n\r\nexport const sidebarRightAnimation = trigger('sidebarRightAnimation', [\r\n transition(\r\n ':enter',\r\n group([\r\n style({\r\n width: '0',\r\n visibility: 'hidden',\r\n padding: '1.6rem 0 ',\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n width: '{{width}}',\r\n visibility: 'visible',\r\n padding: '1.6rem',\r\n }),\r\n ),\r\n ]),\r\n ),\r\n transition(\r\n ':leave',\r\n group([\r\n style({\r\n width: '{{width}}',\r\n visibility: 'visible',\r\n padding: '1.6rem',\r\n }),\r\n animate(\r\n 300,\r\n style({\r\n width: '0',\r\n visibility: 'hidden',\r\n padding: '1.6rem 0 ',\r\n }),\r\n ),\r\n ]),\r\n ),\r\n]);\r\n","import { computed, Injectable, signal } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SidebarRightService {\r\n private _isOpened = signal<boolean>(false);\r\n\r\n private readonly MOBILE_MAX_WIDTH = 1280;\r\n\r\n isOpened = computed(() => this._isOpened());\r\n\r\n private readonly resizeHandler = () => this.defaultStateInMobile();\r\n\r\n constructor() {\r\n if (typeof window !== 'undefined') {\r\n window.addEventListener('resize', this.resizeHandler, {\r\n passive: true,\r\n });\r\n this.defaultStateInMobile();\r\n }\r\n }\r\n\r\n toggleSidebar(value?: boolean) {\r\n if (value === undefined) {\r\n this._isOpened.update((s) => !s);\r\n } else {\r\n this._isOpened.set(value);\r\n }\r\n }\r\n\r\n private defaultStateInMobile() {\r\n if (window.innerWidth < this.MOBILE_MAX_WIDTH) {\r\n this._isOpened.set(false);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (typeof window !== 'undefined') {\r\n window.removeEventListener('resize', this.resizeHandler);\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, Input } from '@angular/core';\r\nimport { sidebarRightAnimation } from './sidebar-right.animation';\r\nimport { SidebarRightService } from './sidebar-right.service';\r\n\r\n@Component({\r\n selector: 's4y-sidebar-right',\r\n imports: [CommonModule],\r\n templateUrl: './sidebar-right.component.html',\r\n styleUrl: './sidebar-right.component.scss',\r\n animations: [sidebarRightAnimation],\r\n host: {\r\n '[attr.data-opened]': 'isOpened()',\r\n },\r\n})\r\nexport class SidebarRightComponent {\r\n protected readonly sidebarRightService = inject(SidebarRightService);\r\n\r\n get isOpened() {\r\n return this.sidebarRightService.isOpened;\r\n }\r\n\r\n @Input()\r\n width = '28rem';\r\n\r\n animationParams = {\r\n value: '',\r\n params: {\r\n width: this.width,\r\n },\r\n };\r\n\r\n closeByOverlay() {\r\n this.sidebarRightService.toggleSidebar();\r\n }\r\n}\r\n","<div class=\"s4y-aside-overlay\" (click)=\"closeByOverlay()\"></div>\r\n\r\n<div class=\"s4y-sidebar-right-container\" [attr.data-opened]=\"isOpened()\" *ngIf=\"isOpened()\" [@sidebarRightAnimation]=\"animationParams\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-popover-panel',\r\n imports: [],\r\n template: `<ng-content />`,\r\n styles: [\r\n `\r\n :host {\r\n z-index: 5;\r\n padding: 1.4rem;\r\n border-radius: var(--radius);\r\n font-size: 1.4rem;\r\n box-shadow: var(--shadow-default);\r\n border: 1px solid var(--gray-300);\r\n top: 2.9rem;\r\n right: 0;\r\n min-width: 14rem;\r\n background: #fff;\r\n width: fit-content;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: 0.4rem;\r\n }\r\n `,\r\n ],\r\n})\r\nexport class PopoverPanelComponent {}\r\n","import { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Directive, ElementRef, HostListener, inject, input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { filter, fromEvent, Subscription } from 'rxjs';\n\ntype PositionPreset =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\n | 'left-top'\n | 'left-center'\n | 'left-bottom'\n | 'right-top'\n | 'right-center'\n | 'right-bottom';\n\n@Directive({\n selector: '[s4yPopoverTrigger]',\n standalone: true,\n})\nexport class PopoverTriggerDirective {\n private overlay = inject(Overlay);\n private host = inject(ElementRef<HTMLElement>);\n private vcr = inject(ViewContainerRef);\n\n private overlayRef?: OverlayRef;\n private subs = new Subscription();\n\n menuTrigger = input<TemplateRef<any> | null>(null, {\n alias: 's4yPopoverTrigger',\n });\n menuContext = input<any>(null, { alias: 's4yPopoverTriggerContext' });\n\n menuPosition = input<PositionPreset>('bottom-right', {\n alias: 's4yPopoverPosition',\n });\n popoverOffsetX = input<number>(0, { alias: 's4yPopoverOffsetX' });\n popoverOffsetY = input<number>(4, { alias: 's4yPopoverOffsetY' });\n\n fade = input<boolean>(true, { alias: 's4yPopoverFade' });\n fadeDuration = input<number>(140, { alias: 's4yPopoverFadeDuration' });\n\n constructor() {}\n\n @HostListener('click')\n toggle() {\n if (this.overlayRef?.hasAttached()) {\n this.close();\n return;\n }\n this.open();\n }\n\n private open() {\n const tpl = this.menuTrigger();\n if (!tpl) return;\n\n const positions = this.buildPositions(\n this.menuPosition(),\n this.popoverOffsetX(),\n this.popoverOffsetY(),\n );\n\n if (!this.overlayRef) {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.host)\n .withFlexibleDimensions(false)\n .withPush(true)\n .withGrowAfterOpen(true)\n .withPositions(positions);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: false, // deixa scrollar tabela\n panelClass: ['s4y-dropdown-panel', 's4y-popover-fade'],\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n // fecha no clique no backdrop\n this.subs.add(\n this.overlayRef.backdropClick().subscribe(() => this.close()),\n );\n\n // fecha quando o overlay é detachado\n this.subs.add(\n this.overlayRef.detachments().subscribe(() => this.cleanup()),\n );\n\n // fecha no ESC enquanto focado dentro do painel\n this.subs.add(\n this.overlayRef\n .keydownEvents()\n .pipe(filter((e) => e.key === 'Escape'))\n .subscribe(() => this.close()),\n );\n\n // fecha ao clicar fora (sem backdrop)\n this.subs.add(\n fromEvent<MouseEvent>(document, 'mousedown')\n .pipe(\n filter((ev) => {\n const t = ev.target as Node | null;\n const inside =\n this.overlayRef!.overlayElement.contains(t!) ||\n this.host.nativeElement.contains(t!);\n return !inside;\n }),\n )\n .subscribe(() => this.close()),\n );\n } else {\n const strategy = this.overlayRef.getConfig()\n .positionStrategy as FlexibleConnectedPositionStrategy;\n\n strategy.withPositions(positions);\n\n this.overlayRef.updatePosition();\n }\n\n const portal = new TemplatePortal(tpl, this.vcr, {\n $implicit: this.menuContext(),\n row: this.menuContext(),\n });\n this.overlayRef.attach(portal);\n\n const el = this.overlayRef!.overlayElement;\n el.style.setProperty(\n '--s4y-popover-fade-duration',\n `${this.fadeDuration()}ms`,\n );\n\n // animação de ENTRADA\n if (this.fade()) {\n // estado inicial já é opaco=0 (via CSS). Força reflow e aplica \"enter\".\n el.classList.remove('leave');\n // força reflow pra garantir a transição\n void el.offsetWidth;\n el.classList.add('enter');\n }\n\n // acessibilidade: foco no primeiro botão/item do menu\n queueMicrotask(() => {\n const first = this.overlayRef!.overlayElement.querySelector<HTMLElement>(\n 'button,[href],[tabindex]:not([tabindex=\"-1\"])',\n );\n first?.focus();\n });\n }\n\n private async close() {\n if (!this.overlayRef?.hasAttached()) return;\n\n const el = this.overlayRef.overlayElement;\n\n if (this.fade()) {\n // troca enter -> leave e espera transição terminar\n el.classList.remove('enter');\n el.classList.add('leave');\n\n await this.waitTransitionEnd(el, this.fadeDuration());\n }\n\n this.overlayRef.detach();\n }\n\n private waitTransitionEnd(el: HTMLElement, maxMs: number) {\n return new Promise<void>((resolve) => {\n let done = false;\n const off = () => {\n if (done) return;\n done = true;\n el.removeEventListener('transitionend', onEnd);\n resolve();\n };\n const onEnd = (e: Event) => {\n // garante que veio do opacity/transform do próprio elemento\n if (e.target === el) off();\n };\n el.addEventListener('transitionend', onEnd, { once: true });\n // fallback se o evento não disparar\n setTimeout(off, maxMs + 50);\n });\n }\n\n private cleanup() {\n const el = this.overlayRef?.overlayElement;\n if (el) {\n el.classList.remove('enter', 'leave');\n }\n }\n\n private buildPositions(\n preset: PositionPreset,\n ox: number,\n oy: number,\n ): ConnectedPosition[] {\n // helpers\n const P = (\n originX: 'start' | 'center' | 'end',\n originY: 'top' | 'center' | 'bottom',\n overlayX: 'start' | 'center' | 'end',\n overlayY: 'top' | 'center' | 'bottom',\n offsetX = 0,\n offsetY = 0,\n ): ConnectedPosition => ({\n originX,\n originY,\n overlayX,\n overlayY,\n offsetX,\n offsetY,\n });\n\n // presets principais\n const map: Record<PositionPreset, ConnectedPosition[]> = {\n // TOP\n 'top-left': [\n P('start', 'top', 'start', 'bottom', ox, -oy),\n P('start', 'bottom', 'start', 'top', ox, oy),\n P('end', 'top', 'end', 'bottom', ox, -oy),\n P('center', 'top', 'center', 'bottom', ox, -oy),\n ],\n 'top-center': [\n P('center', 'top', 'center', 'bottom', ox, -oy),\n P('center', 'bottom', 'center', 'top', ox, oy),\n P('start', 'top', 'start', 'bottom', ox, -oy),\n P('end', 'top', 'end', 'bottom', ox, -oy),\n ],\n 'top-right': [\n P('end', 'top', 'end', 'bottom', ox, -oy),\n P('end', 'bottom', 'end', 'top', ox, oy),\n P('start', 'top', 'start', 'bottom', ox, -oy),\n P('center', 'top', 'center', 'bottom', ox, -oy),\n ],\n\n // BOTTOM\n 'bottom-left': [\n P('start', 'bottom', 'start', 'top', ox, oy),\n P('start', 'top', 'start', 'bottom', ox, -oy),\n P('end', 'bottom', 'end', 'top', ox, oy),\n P('center', 'bottom', 'center', 'top', ox, oy),\n ],\n 'bottom-center': [\n P('center', 'bottom', 'center', 'top', ox, oy),\n P('center', 'top', 'center', 'bottom', ox, -oy),\n P('start', 'bottom', 'start', 'top', ox, oy),\n P('end', 'bottom', 'end', 'top', ox, oy),\n ],\n 'bottom-right': [\n P('end', 'bottom', 'end', 'top', ox, oy),\n P('end', 'top', 'end', 'bottom', ox, -oy),\n P('start', 'bottom', 'start', 'top', ox, oy),\n P('center', 'bottom', 'center', 'top', ox, oy),\n ],\n\n // LEFT\n 'left-top': [\n P('start', 'top', 'end', 'top', -ox, oy),\n P('start', 'center', 'end', 'center', -ox, 0),\n P('start', 'bottom', 'end', 'bottom', -ox, -oy),\n P('end', 'top', 'start', 'top', ox, oy), // fallback espelha para direita\n ],\n 'left-center': [\n P('start', 'center', 'end', 'center', -ox, 0),\n P('start', 'top', 'end', 'top', -ox, oy),\n P('start', 'bottom', 'end', 'bottom', -ox, -oy),\n P('end', 'center', 'start', 'center', ox, 0),\n ],\n 'left-bottom': [\n P('start', 'bottom', 'end', 'bottom', -ox, -oy),\n P('start', 'center', 'end', 'center', -ox, 0),\n P('start', 'top', 'end', 'top', -ox, oy),\n P('end', 'bottom', 'start', 'bottom', ox, -oy),\n ],\n\n // RIGHT\n 'right-top': [\n P('end', 'top', 'start', 'top', ox, oy),\n P('end', 'center', 'start', 'center', ox, 0),\n P('end', 'bottom', 'start', 'bottom', ox, -oy),\n P('start', 'top', 'end', 'top', -ox, oy), // fallback espelha para esquerda\n ],\n 'right-center': [\n P('end', 'center', 'start', 'center', ox, 0),\n P('end', 'top', 'start', 'top', ox, oy),\n P('end', 'bottom', 'start', 'bottom', ox, -oy),\n P('start', 'center', 'end', 'center', -ox, 0),\n ],\n 'right-bottom': [\n P('end', 'bottom', 'start', 'bottom', ox, -oy),\n P('end', 'center', 'start', 'center', ox, 0),\n P('end', 'top', 'start', 'top', ox, oy),\n P('start', 'bottom', 'end', 'bottom', -ox, -oy),\n ],\n };\n\n return map[preset] ?? map['bottom-left'];\n }\n\n ngOnDestroy() {\n this.close();\n this.subs.unsubscribe();\n this.overlayRef?.dispose();\n }\n}\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-menu',\r\n imports: [],\r\n template: '<ng-content/>',\r\n styles: [\r\n `\r\n :host {\r\n z-index: 5;\r\n padding: 1.4rem;\r\n background-color: #fff;\r\n border-radius: var(--radius);\r\n font-size: 1.4rem;\r\n box-shadow: var(--shadow-default);\r\n border: 1px solid var(--gray-400);\r\n top: 2.9rem;\r\n right: 0;\r\n min-width: 14rem;\r\n max-width: 240px;\r\n\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n gap: 0.4rem;\r\n }\r\n `,\r\n ],\r\n})\r\nexport class MenuComponent {}\r\n","import { Component, input } from '@angular/core';\r\nimport { SvgComponent } from '../svg';\r\n\r\n@Component({\r\n selector: 'button[s4yMenuItem], a[s4yMenuItem]',\r\n standalone: true,\r\n imports: [SvgComponent],\r\n template: `\r\n @if (iconUri()) {\r\n <s4y-svg [size]=\"18\" [src]=\"iconUri()\"></s4y-svg>\r\n }\r\n\r\n @if (imageUri()) {\r\n <img [src]=\"imageUri()\" alt=\"icon\" width=\"18\" height=\"18\" />\r\n }\r\n <ng-content></ng-content>\r\n `,\r\n styles: [\r\n `\r\n :host {\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n gap: 0.8rem;\r\n padding: 0 0.4rem;\r\n min-height: 4rem;\r\n width: 100%;\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n }\r\n `,\r\n ],\r\n host: {\r\n 'aria-label': 'Mais informações',\r\n },\r\n})\r\nexport class MenuItemComponent {\r\n iconUri = input<string>();\r\n imageUri = input<string>();\r\n}\r\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport {\r\n Component,\r\n ElementRef,\r\n signal,\r\n viewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { SvgComponent } from '../../../svg';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-image-preview',\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './image-preview.component.html',\r\n styleUrl: './image-preview.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ImagePreviewComponent {\r\n imgEl = viewChild<ElementRef<HTMLImageElement>>('imgEl');\r\n\r\n src = '';\r\n name: string | undefined;\r\n overlayRef!: OverlayRef;\r\n\r\n zoom = signal(1);\r\n\r\n private readonly MIN_ZOOM = 0.5;\r\n private readonly MAX_ZOOM = 3;\r\n private readonly ZOOM_STEP = 0.25;\r\n\r\n protected fullScreenImage = signal<boolean>(false);\r\n\r\n protected toggleFullscreen() {\r\n this.fullScreenImage.update((value) => !value);\r\n }\r\n\r\n protected zoomOut() {\r\n const currentZoom = this.zoom();\r\n const newZoom = Math.max(this.MIN_ZOOM, currentZoom - this.ZOOM_STEP);\r\n this.zoom.set(newZoom);\r\n this.applyZoom();\r\n }\r\n\r\n protected zoomIn() {\r\n const currentZoom = this.zoom();\r\n const newZoom = Math.min(this.MAX_ZOOM, currentZoom + this.ZOOM_STEP);\r\n this.zoom.set(newZoom);\r\n this.applyZoom();\r\n }\r\n\r\n protected resetZoom() {\r\n this.zoom.set(1);\r\n this.applyZoom();\r\n }\r\n\r\n private applyZoom() {\r\n const img = this.imgEl()?.nativeElement;\r\n if (img) {\r\n img.style.transform = `scale(${this.zoom()})`;\r\n }\r\n }\r\n\r\n protected close() {\r\n if (!this.overlayRef) return;\r\n\r\n this.overlayRef.dispose();\r\n }\r\n}\r\n","<div class=\"s4y-image-preview-container\">\r\n <div class=\"s4y-preview-controls\">\r\n <div class=\"flex gap-1 align-center\">\r\n <button\r\n class=\"btn-close s4y-action-btn gray-4\"\r\n type=\"button\"\r\n (click)=\"close()\"\r\n >\r\n ✕\r\n </button>\r\n @if (name) {\r\n <p class=\"medium-text-regular fw-400\" style=\"color: var(--gray-400)\">\r\n {{ name }}\r\n </p>\r\n }\r\n </div>\r\n\r\n <div class=\"flex gap-2\">\r\n <button class=\"s4y-action-btn\" type=\"button\" (click)=\"zoomOut()\">\r\n <ng-container [ngTemplateOutlet]=\"zoomOutSvg\" />\r\n </button>\r\n <button class=\"s4y-action-btn\" type=\"button\" (click)=\"zoomIn()\">\r\n <ng-container [ngTemplateOutlet]=\"zoomInSvg\" />\r\n </button>\r\n <button class=\"s4y-action-btn\" type=\"button\" (click)=\"resetZoom()\">\r\n <ng-container [ngTemplateOutlet]=\"refreshSvg\" />\r\n </button>\r\n\r\n <button class=\"s4y-action-btn\" type=\"button\" (click)=\"toggleFullscreen()\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"\r\n fullScreenImage() ? fullScreenExitSvg : fullscreenSvg\r\n \"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"s4y-preview-img-container\">\r\n <div class=\"s4y-img-preview\" [class.full-screen-img]=\"fullScreenImage()\">\r\n <img\r\n #imgEl\r\n style=\"transform-origin: center center\"\r\n [src]=\"src\"\r\n alt=\"Imagem\"\r\n (dblclick)=\"resetZoom()\"\r\n />\r\n </div>\r\n\r\n <div class=\"s4y-preview-clickable\" (click)=\"close()\"></div>\r\n </div>\r\n</div>\r\n\r\n<!-- SVG -->\r\n\r\n<ng-template #fullscreenSvg>\r\n <svg\r\n width=\"24px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M8 3V5H4V9H2V3H8ZM2 21V15H4V19H8V21H2ZM22 21H16V19H20V15H22V21ZM22 9H20V5H16V3H22V9Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #fullScreenExitSvg>\r\n <svg\r\n width=\"24px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M18 7H22V9H16V3H18V7ZM8 9H2V7H6V3H8V9ZM18 17V21H16V15H22V17H18ZM8 15V21H6V17H2V15H8Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #zoomInSvg>\r\n <svg\r\n width=\"24px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M18.031 16.6168L22.3137 20.8995L20.8995 22.3137L16.6168 18.031C15.0769 19.263 13.124 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2C15.968 2 20 6.032 20 11C20 13.124 19.263 15.0769 18.031 16.6168ZM16.0247 15.8748C17.2475 14.6146 18 12.8956 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18C12.8956 18 14.6146 17.2475 15.8748 16.0247L16.0247 15.8748ZM10 10V7H12V10H15V12H12V15H10V12H7V10H10Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n<ng-template #zoomOutSvg>\r\n <svg\r\n width=\"24px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M18.031 16.6168L22.3137 20.8995L20.8995 22.3137L16.6168 18.031C15.0769 19.263 13.124 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2C15.968 2 20 6.032 20 11C20 13.124 19.263 15.0769 18.031 16.6168ZM16.0247 15.8748C17.2475 14.6146 18 12.8956 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18C12.8956 18 14.6146 17.2475 15.8748 16.0247L16.0247 15.8748ZM7 10H15V12H7V10Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #refreshSvg>\r\n <svg\r\n width=\"24px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M5.46257 4.43262C7.21556 2.91688 9.5007 2 12 2C17.5228 2 22 6.47715 22 12C22 14.1361 21.3302 16.1158 20.1892 17.7406L17 12H20C20 7.58172 16.4183 4 12 4C9.84982 4 7.89777 4.84827 6.46023 6.22842L5.46257 4.43262ZM18.5374 19.5674C16.7844 21.0831 14.4993 22 12 22C6.47715 22 2 17.5228 2 12C2 9.86386 2.66979 7.88416 3.8108 6.25944L7 12H4C4 16.4183 7.58172 20 12 20C14.1502 20 16.1022 19.1517 17.5398 17.7716L18.5374 19.5674Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n","import { Overlay, OverlayRef } from \"@angular/cdk/overlay\";\r\nimport { ComponentPortal } from \"@angular/cdk/portal\";\r\nimport { inject, Injectable } from \"@angular/core\";\r\nimport { filter } from \"rxjs\";\r\nimport { ImageComponent } from \"./image.component\";\r\nimport { ImagePreviewComponent } from \"./components/image-preview/image-preview.component\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ImageService {\r\n private _overlay = inject(Overlay);\r\n private _overlayRef!: OverlayRef;\r\n\r\n open(fileSrc: string, fileName?: string) {\r\n const portal = this.createPortal();\r\n this._overlayRef = this.createOverlay();\r\n\r\n const componentRef = this._overlayRef.attach(portal);\r\n\r\n componentRef.instance.src = fileSrc;\r\n componentRef.instance.name = fileName;\r\n componentRef.instance.overlayRef = this._overlayRef;\r\n\r\n let sub = this._overlayRef.backdropClick().subscribe((_) => {\r\n sub.unsubscribe();\r\n this.close();\r\n });\r\n\r\n let sub2 = this._overlayRef\r\n .keydownEvents()\r\n .pipe(filter((key) => key.code === 'Escape'))\r\n .subscribe((_) => {\r\n sub2.unsubscribe();\r\n this.close();\r\n });\r\n\r\n return this._overlayRef;\r\n }\r\n\r\n close() {\r\n this._overlayRef.dispose();\r\n }\r\n\r\n private createOverlay() {\r\n const overlay = this._overlay.create({\r\n hasBackdrop: true,\r\n backdropClass: ['s4y-overlay-bg'],\r\n scrollStrategy: this._overlay.scrollStrategies.block(),\r\n panelClass: ['s4y-preview-pane'],\r\n disposeOnNavigation: true,\r\n });\r\n\r\n overlay.backdropClick().subscribe(() => overlay.dispose());\r\n\r\n return overlay;\r\n }\r\n\r\n private createPortal() {\r\n return new ComponentPortal(ImagePreviewComponent);\r\n }\r\n\r\n}\r\n","import {\n AfterViewInit,\n Component,\n DestroyRef,\n ElementRef,\n inject,\n input,\n OnInit,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ImageService } from './image.service';\nimport { fromEvent } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'img[s4yImage]',\n template: `<ng-content />`,\n styleUrl: './image.component.scss',\n encapsulation: ViewEncapsulation.None,\n})\nexport class ImageComponent implements OnInit, AfterViewInit {\n private readonly imageService = inject(ImageService);\n private readonly elRef = inject(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly destroy = inject(DestroyRef);\n\n constructor() {}\n\n src = input('', {\n alias: 's4ySrc',\n });\n\n innerTpl = input<TemplateRef<any>>();\n\n fileName = input<string | undefined>();\n disablePreview = input<boolean>(false);\n withOverlay = input<boolean>(false);\n\n private wrapper!: HTMLElement;\n private overlayEl!: HTMLElement;\n\n ngOnInit() {\n this.configureWrapperElement();\n this.configureOverlay();\n this.configureEyeSvg();\n this.configureImageSrc();\n }\n\n ngAfterViewInit(): void {\n this.onShowOverlay();\n }\n\n private configureWrapperElement() {\n const img = this.ImageEl;\n\n if (!img) return;\n\n const parent = img.parentNode;\n\n this.wrapper = this.createElement('span');\n\n this.addClass(this.wrapper, 's4y-img-wrapper');\n this.renderer.setStyle(this.wrapper, 'position', 'relative');\n this.renderer.setStyle(this.wrapper, 'display', 'inline-block');\n\n this.renderer.insertBefore(parent, this.wrapper, img);\n this.renderer.removeChild(parent, img);\n this.renderer.appendChild(this.wrapper, img);\n\n const click$ = fromEvent(this.wrapper, 'click');\n\n click$.pipe(takeUntilDestroyed(this.destroy)).subscribe(() => {\n this.showPreview();\n });\n }\n\n private configureOverlay() {\n if (this.withOverlay()) {\n this.overlayEl = this.createElement('div');\n this.renderer.addClass(this.overlayEl, 's4y-img-overlay');\n this.renderer.appendChild(this.wrapper, this.overlayEl);\n }\n }\n\n private configureEyeSvg() {\n const overlay = this.overlayEl;\n\n if (!overlay) return;\n\n const svgContainer = this.createElement('span');\n svgContainer.innerHTML = this.eyeSvg;\n\n this.renderer.appendChild(overlay, svgContainer);\n }\n\n private configureImageSrc() {\n const imgEl = this.ImageEl;\n const src = this.src();\n\n if (!imgEl || !src) return;\n\n this.renderer.setAttribute(imgEl, 'src', src);\n }\n\n private onShowOverlay() {\n const wrapper = this.wrapper;\n const overlay = this.overlayEl;\n\n if (!wrapper || !this.withOverlay() || !overlay) return;\n\n const wrapperMouseOver$ = fromEvent(this.wrapper, 'mouseover');\n const wrapperMouseLeave$ = fromEvent(this.wrapper, 'mouseleave');\n\n wrapperMouseOver$.pipe(takeUntilDestroyed(this.destroy)).subscribe((x) => {\n this.addClass(overlay, 'active');\n });\n\n wrapperMouseLeave$.pipe(takeUntilDestroyed(this.destroy)).subscribe((x) => {\n this.removeClass(overlay, 'active');\n });\n }\n\n private createElement(element: string): HTMLElement {\n return this.renderer.createElement(element);\n }\n\n private addClass(el: HTMLElement, className: string) {\n return this.renderer.addClass(el, className);\n }\n\n private removeClass(el: HTMLElement, className: string) {\n return this.renderer.removeClass(el, className);\n }\n\n private showPreview() {\n this.imageService.open(this.src(), this.fileName());\n }\n\n get eyeSvg() {\n return `<svg width=\"24px\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"#fff\"><path d=\"M12.0003 3C17.3924 3 21.8784 6.87976 22.8189 12C21.8784 17.1202 17.3924 21 12.0003 21C6.60812 21 2.12215 17.1202 1.18164 12C2.12215 6.87976 6.60812 3 12.0003 3ZM12.0003 19C16.2359 19 19.8603 16.052 20.7777 12C19.8603 7.94803 16.2359 5 12.0003 5C7.7646 5 4.14022 7.94803 3.22278 12C4.14022 16.052 7.7646 19 12.0003 19ZM12.0003 16.5C9.51498 16.5 7.50026 14.4853 7.50026 12C7.50026 9.51472 9.51498 7.5 12.0003 7.5C14.4855 7.5 16.5003 9.51472 16.5003 12C16.5003 14.4853 14.4855 16.5 12.0003 16.5ZM12.0003 14.5C13.381 14.5 14.5003 13.3807 14.5003 12C14.5003 10.6193 13.381 9.5 12.0003 9.5C10.6196 9.5 9.50026 10.6193 9.50026 12C9.50026 13.3807 10.6196 14.5 12.0003 14.5Z\"></path></svg>`;\n }\n\n get ImageEl() {\n return this.elRef.nativeElement as HTMLElement | null;\n }\n}\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dynamic-tooltip',\r\n imports: [],\r\n templateUrl: './dynamic-tooltip.component.html',\r\n styleUrl: './dynamic-tooltip.component.scss'\r\n})\r\nexport class DynamicTooltipComponent {\r\n text: string = \"\";\r\n}\r\n","<div class=\"s4y-tooltip-container\">\r\n <p>\r\n {{ text }}\r\n </p>\r\n</div>\r\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport { DynamicTooltipComponent } from './dynamic-tooltip.component';\r\n\r\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';\r\n\r\n@Directive({\r\n selector: '[s4yDynamicTooltip]',\r\n})\r\nexport class DynamicTooltipDirective {\r\n private readonly overlay = inject(Overlay);\r\n private readonly elRef = inject(ElementRef<HTMLElement>);\r\n\r\n overlayRef?: OverlayRef;\r\n\r\n tooltipContent = input.required<string>({\r\n alias: 's4yDynamicTooltip',\r\n });\r\n\r\n placement = input<TooltipPlacement>('top');\r\n\r\n private tooltipPortal = new ComponentPortal(DynamicTooltipComponent);\r\n\r\n private onOverlayEnter?: () => void;\r\n private onOverlayLeave?: (e: MouseEvent) => void;\r\n\r\n constructor() {\r\n }\r\n\r\n get host() {\r\n return this.elRef.nativeElement as ElementRef;\r\n }\r\n\r\n @HostListener('mouseenter')\r\n shown() {\r\n this.overlayRef?.dispose();\r\n this.overlayRef = this.createOverlay();\r\n\r\n const compRef = this.overlayRef.attach(this.tooltipPortal);\r\n compRef.instance.text = this.tooltipContent();\r\n this.overlayRef.updatePosition();\r\n\r\n this.bindOverlayHoverGuards();\r\n }\r\n\r\n @HostListener('mouseleave', ['$event'])\r\n hide(e: MouseEvent) {\r\n // Se o mouse saiu do host indo PARA o overlay, não fecha\r\n const next = e.relatedTarget as Node | null;\r\n if (next && this.overlayRef?.overlayElement.contains(next)) return;\r\n\r\n this.dispose();\r\n }\r\n\r\n private bindOverlayHoverGuards() {\r\n if (!this.overlayRef) return;\r\n\r\n const overlayEl = this.overlayRef.overlayElement;\r\n\r\n // remove listeners antigos (se existirem)\r\n this.unbindOverlayHoverGuards();\r\n\r\n this.onOverlayEnter = () => {\r\n // não faz nada, apenas impede fechamento “por acidente”\r\n };\r\n\r\n this.onOverlayLeave = (e: MouseEvent) => {\r\n // Se saiu do overlay indo PARA o host, não fecha\r\n const next = e.relatedTarget as Node | null;\r\n if (next && this.elRef.nativeElement.contains(next)) return;\r\n\r\n this.dispose();\r\n };\r\n\r\n overlayEl.addEventListener('mouseenter', this.onOverlayEnter);\r\n overlayEl.addEventListener('mouseleave', this.onOverlayLeave);\r\n }\r\n\r\n private unbindOverlayHoverGuards() {\r\n if (!this.overlayRef) return;\r\n const overlayEl = this.overlayRef.overlayElement;\r\n\r\n if (this.onOverlayEnter)\r\n overlayEl.removeEventListener('mouseenter', this.onOverlayEnter);\r\n if (this.onOverlayLeave)\r\n overlayEl.removeEventListener('mouseleave', this.onOverlayLeave);\r\n\r\n this.onOverlayEnter = undefined;\r\n this.onOverlayLeave = undefined;\r\n }\r\n\r\n private createOverlay(): OverlayRef {\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.elRef)\r\n .withFlexibleDimensions(false)\r\n .withPush(true)\r\n .withViewportMargin(8)\r\n .withPositions(this.getPositionsByPlacement(this.placement()));\r\n\r\n return this.overlay.create({\r\n hasBackdrop: false,\r\n disposeOnNavigation: true,\r\n scrollStrategy: this.overlay.scrollStrategies.close(),\r\n positionStrategy,\r\n panelClass: 's4y-tooltip-panel',\r\n });\r\n }\r\n\r\n private getPositionsByPlacement(p: TooltipPlacement): ConnectedPosition[] {\r\n const gap = 8;\r\n\r\n const map: Record<TooltipPlacement, ConnectedPosition[]> = {\r\n top: [\r\n {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: -gap,\r\n },\r\n {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: gap,\r\n },\r\n ],\r\n bottom: [\r\n {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: gap,\r\n },\r\n {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: -gap,\r\n },\r\n ],\r\n left: [\r\n {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n offsetX: -gap,\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n offsetX: gap,\r\n },\r\n ],\r\n right: [\r\n {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n offsetX: gap,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n offsetX: -gap,\r\n },\r\n ],\r\n };\r\n\r\n return map[p];\r\n }\r\n\r\n private dispose() {\r\n this.unbindOverlayHoverGuards();\r\n this.overlayRef?.dispose();\r\n this.overlayRef = undefined;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.dispose();\r\n }\r\n}\r\n","import { Component, contentChild, input, TemplateRef } from '@angular/core';\r\nimport { SvgComponent } from '../svg';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { DynamicTooltipDirective, TooltipPlacement } from '../dynamic-tooltip/dynamic-tooltip.directive';\r\n\r\nexport interface ISummaryCardProps {\r\n iconUri: string;\r\n iconColor: string;\r\n withIcon: boolean;\r\n iconSize: number;\r\n iconBackgroundColor: string;\r\n withFooter: boolean;\r\n label: string;\r\n value: string;\r\n withTooltip: boolean;\r\n tooltipContent: string;\r\n tooltipPlacement: TooltipPlacement;\r\n}\r\n\r\n@Component({\r\n selector: 's4y-summary-card',\r\n imports: [SvgComponent, NgTemplateOutlet, DynamicTooltipDirective],\r\n templateUrl: './summary-card.component.html',\r\n styleUrl: './summary-card.component.scss',\r\n})\r\nexport class SummaryCardComponent {\r\n props = input<Partial<ISummaryCardProps>>({\r\n withFooter: false,\r\n withIcon: false,\r\n withTooltip: false,\r\n iconSize: 18,\r\n iconBackgroundColor: '#4b5563',\r\n });\r\n\r\n footerTpl = contentChild<TemplateRef<any>>('footerTpl');\r\n}\r\n","@let summaryProps = props();\r\n\r\n<div class=\"s4y-summary-card-header\">\r\n <div class=\"s4y-summary-card-header__content\">\r\n <p class=\"small-text-regular gray-7\">\r\n {{ summaryProps.label }}\r\n </p>\r\n\r\n @if (summaryProps.withTooltip) {\r\n <svg\r\n [s4yDynamicTooltip]=\"summaryProps.tooltipContent ?? ''\"\r\n [placement]=\"summaryProps.tooltipPlacement ?? 'right'\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n width=\"14\"\r\n height=\"14\"\r\n >\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11 7H13V9H11V7ZM11 11H13V17H11V11Z\"\r\n ></path>\r\n </svg>\r\n }\r\n </div>\r\n @let showIcon = summaryProps.withIcon && !!summaryProps.iconUri;\r\n\r\n @if (showIcon) {\r\n <div\r\n class=\"s4y-summary-card-icon\"\r\n [style.background]=\"summaryProps.iconBackgroundColor ?? '#4b5563'\"\r\n >\r\n <s4y-svg\r\n [size]=\"summaryProps.iconSize ?? 18\"\r\n [color]=\"summaryProps.iconColor || '#fff'\"\r\n [src]=\"summaryProps.iconUri\"\r\n ></s4y-svg>\r\n </div>\r\n }\r\n</div>\r\n\r\n<div class=\"s4y-summary-card-body\">\r\n <p class=\"medium-text-bold gray-9\">\r\n {{ summaryProps.value }}\r\n </p>\r\n</div>\r\n\r\n@let footerTemplate = footerTpl();\r\n\r\n@if (summaryProps.withFooter && footerTemplate) {\r\n <div class=\"s4y-summary-card-footer\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\r\n </div>\r\n}\r\n","import {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nexport const selectMultiAnim = trigger('selectMultiAnim', [\r\n // entra\r\n transition(':enter', [\r\n style({ opacity: 0, height: '0' }),\r\n animate(\r\n '160ms cubic-bezier(0.2, 0, 0, 1)',\r\n style({ opacity: 1, transform: 'scaleY(1)', height: '*' }),\r\n ),\r\n ]),\r\n // sai\r\n transition(':leave', [\r\n style({ height: '*' }),\r\n animate(\r\n '120ms cubic-bezier(0.4, 0, 1, 1)',\r\n style({ opacity: 0, height: '0' }),\r\n ),\r\n ]),\r\n]);\r\n\r\nexport const arrowAnim = trigger('arrowAnim', [\r\n state('closed', style({ transform: 'rotate(0deg)' })),\r\n state('open', style({ transform: 'rotate(180deg)' })),\r\n transition('closed <=> open', animate('140ms ease')),\r\n]);\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, computed, effect, ElementRef, forwardRef, HostListener, inject, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\r\nimport { selectMultiAnim } from './select-multi.animation';\r\nimport { SpinnerComponent } from '../spinner/spinner.component';\r\n\r\nexport type CompareFn<T> = (a: T, b: T) => boolean;\r\nexport type DisplayFn<T> = (o: T) => string;\r\nexport type SearchFn<T> = (query: string, option: T) => boolean;\r\n\r\n@Component({\r\n selector: 's4y-select-multi',\r\n imports: [CommonModule, CheckboxComponent, SpinnerComponent],\r\n templateUrl: './select-multi.component.html',\r\n styleUrl: './select-multi.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: forwardRef(() => SelectMultiComponent),\r\n },\r\n ],\r\n host: {\r\n '[style.maxWidth]': 'maxScreen() ? \"100%\" : \"32rem\"',\r\n '[attr.tabindex]': '0',\r\n '[class.disabled]': 'disabled()',\r\n '[attr.aria-disabled]': 'disabled()',\r\n '[attr.role]': '\"combobox\"',\r\n '[attr.aria-expanded]': 'opened()',\r\n '[attr.aria-haspopup]': '\"listbox\"',\r\n },\r\n animations: [selectMultiAnim],\r\n})\r\nexport class SelectMultiComponent<T> implements ControlValueAccessor {\r\n private readonly hostEl = inject(ElementRef<HTMLElement>);\r\n\r\n label = input<string>('');\r\n options = input.required<T[]>();\r\n\r\n placeholder = input<string>('Selecione...');\r\n\r\n compareWith = input<CompareFn<T>>((a, b) => a === b);\r\n displayWith = input<DisplayFn<T>>((o) => String(o));\r\n\r\n opened = model<boolean>(false);\r\n search = model<string>('');\r\n disabled = signal<boolean>(false);\r\n\r\n withSearch = input<boolean>(false);\r\n maxScreen = input<boolean>(false);\r\n\r\n withCheckAll = input<boolean>(false);\r\n\r\n emptyMessage = input<string>('Nenhum resultado encontrado.');\r\n\r\n loading = input<boolean>(false);\r\n\r\n searchFn = input<SearchFn<T> | null>(null);\r\n\r\n preserveSelectionOnFilter = input<boolean>(false);\r\n\r\n private _value = signal<T[]>([]);\r\n readonly value = computed(() => this._value());\r\n\r\n readonly filteredOptions = computed<T[]>(() => {\r\n const query = this.search().trim().toLowerCase();\r\n const opts = this.options() ?? [];\r\n if (!query) return opts;\r\n\r\n const custom = this.searchFn();\r\n if (custom) return opts.filter((o) => custom(query, o));\r\n\r\n return opts.filter((o) =>\r\n this.displayWith()(o).toLowerCase().includes(query),\r\n );\r\n });\r\n\r\n readonly allSelected = computed<boolean>(() => {\r\n const opts = this.options() ?? [];\r\n if (!opts.length) return false;\r\n return opts.every((o) => this.isSelected(o));\r\n });\r\n\r\n readonly someSelected = computed<boolean>(() => {\r\n const opts = this.options() ?? [];\r\n return !this.allSelected() && opts.some((o) => this.isSelected(o));\r\n });\r\n\r\n private _onChange: (val: T[]) => void = () => {};\r\n private _onTouched: () => void = () => {};\r\n\r\n writeValue(value: T[] | null | undefined): void {\r\n this._value.set(Array.isArray(value) ? value.slice() : []);\r\n }\r\n\r\n registerOnChange(fn: (val: T[]) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n if (isDisabled) this.opened.set(false);\r\n }\r\n\r\n toggleOpen(): void {\r\n if (this.disabled()) return;\r\n this.opened.update((v) => !v);\r\n if (!this.opened()) this._onTouched();\r\n }\r\n\r\n isSelected = (opt: T): boolean =>\r\n this._value().some((v) => this.compareWith()(v, opt));\r\n\r\n toggleOption(opt: T): void {\r\n if (this.disabled()) return;\r\n\r\n const compareWith = this.compareWith();\r\n const current = this._value();\r\n const exists = current.findIndex((v) => compareWith(v, opt)) > -1;\r\n\r\n const next = exists\r\n ? current.filter((v) => !compareWith(v, opt))\r\n : [...current, opt];\r\n\r\n this._value.set(next);\r\n this._onChange(next);\r\n }\r\n\r\n clear(): void {\r\n if (this.disabled()) return;\r\n this._value.set([]);\r\n this._onChange([]);\r\n }\r\n\r\n selectAll(): void {\r\n if (this.disabled()) return;\r\n const all = this.options() ?? [];\r\n this._value.set(all.slice());\r\n this._onChange(all.slice());\r\n }\r\n\r\n toggleSelectAll(): void {\r\n this.allSelected() ? this.clear() : this.selectAll();\r\n }\r\n\r\n removeChip(opt: T): void {\r\n if (this.disabled()) return;\r\n this.toggleOption(opt);\r\n }\r\n\r\n onBlurContainer(e: FocusEvent) {}\r\n\r\n close() {\r\n if (this.opened()) {\r\n this.opened.set(false);\r\n this._onTouched?.();\r\n }\r\n }\r\n\r\n @HostListener('document:mousedown', ['$event'])\r\n onDocumentMouseDown(e: MouseEvent) {\r\n if (!this.opened() || this.disabled()) return;\r\n\r\n const target = e.target as Node | null;\r\n const host = this.hostEl.nativeElement;\r\n if (target && !host.contains(target)) {\r\n this.close();\r\n }\r\n }\r\n\r\n protected onSearch(event: Event) {\r\n const target = (event.target as HTMLInputElement).value;\r\n this.search.set(target);\r\n }\r\n\r\n _syncEffect = effect(() => {\r\n if (this.preserveSelectionOnFilter()) return; // não remove o que sumiu das options\r\n\r\n const opts = this.options() ?? [];\r\n const cmp = this.compareWith();\r\n const current = this._value();\r\n const stillValid = current.filter((v) => opts.some((o) => cmp(o, v)));\r\n if (stillValid.length !== current.length) {\r\n this._value.set(stillValid);\r\n this._onChange(stillValid);\r\n }\r\n });\r\n}\r\n","<label class=\"s4y-select-label\">\r\n {{ label() }}\r\n</label>\r\n\r\n<div class=\"s4y-select\">\r\n <!-- Campo principal -->\r\n <button\r\n type=\"button\"\r\n class=\"s4y-select-field\"\r\n [attr.aria-expanded]=\"opened()\"\r\n [disabled]=\"disabled()\"\r\n (click)=\"toggleOpen()\"\r\n >\r\n <ng-container *ngIf=\"value().length; else placeholderTpl\">\r\n <div class=\"chips\">\r\n <span class=\"chip\" *ngFor=\"let v of value()\">\r\n {{ displayWith()(v) }}\r\n <button\r\n type=\"button\"\r\n class=\"chip-remove\"\r\n (click)=\"$event.stopPropagation(); removeChip(v)\"\r\n [disabled]=\"disabled()\"\r\n aria-label=\"Remover\"\r\n >\r\n ×\r\n </button>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <ng-template #placeholderTpl>\r\n <span>{{ placeholder() }}</span>\r\n </ng-template>\r\n <div class=\"arrow\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"opened() ? arrowUp : arrowDown\"\r\n ></ng-container>\r\n </div>\r\n </button>\r\n\r\n <div class=\"s4y-select-dropdown-container\">\r\n <div\r\n @selectMultiAnim\r\n class=\"s4y-select-dropdown\"\r\n [class.gap-1]=\"filteredOptions().length\"\r\n *ngIf=\"opened()\"\r\n >\r\n <div class=\"dropdown-actions\">\r\n @if (withSearch()) {\r\n <label class=\"s4y-dropdown-search\">\r\n <input\r\n type=\"text\"\r\n class=\"search\"\r\n [placeholder]=\"'Buscar...'\"\r\n [value]=\"search()\"\r\n (input)=\"onSearch($event)\"\r\n />\r\n <ng-container [ngTemplateOutlet]=\"searchIcon\"></ng-container>\r\n </label>\r\n }\r\n\r\n @if (withCheckAll()) {\r\n <label class=\"check-all\">\r\n <input\r\n s4yCheckbox\r\n type=\"checkbox\"\r\n [checked]=\"allSelected()\"\r\n [indeterminate]=\"someSelected()\"\r\n (change)=\"toggleSelectAll()\"\r\n />\r\n Marcar todos\r\n </label>\r\n }\r\n </div>\r\n\r\n @if (loading()) {\r\n <div class=\"s4y-loading flex align-center justify-center\">\r\n <s4y-spinner size=\"mini\"></s4y-spinner>\r\n </div>\r\n } @else {\r\n <div class=\"options\">\r\n <button\r\n type=\"button\"\r\n class=\"option\"\r\n *ngFor=\"let opt of filteredOptions()\"\r\n (click)=\"toggleOption(opt)\"\r\n [class.selected]=\"isSelected(opt)\"\r\n >\r\n <input\r\n s4yCheckbox\r\n type=\"checkbox\"\r\n [checked]=\"isSelected(opt)\"\r\n tabindex=\"-1\"\r\n />\r\n <span class=\"text-small\">{{ displayWith()(opt) }}</span>\r\n </button>\r\n\r\n <div class=\"no-results\" *ngIf=\"!filteredOptions().length\">\r\n {{ emptyMessage() }}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <ng-content select=\"s4y-error-message\"></ng-content>\r\n\r\n <!-- Dropdown -->\r\n</div>\r\n\r\n<!-- Arros -->\r\n\r\n<ng-template #arrowDown>\r\n <svg\r\n class=\"s4y-select__svg\"\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 13.1714L16.9497 8.22168L18.3639 9.63589L11.9999 15.9999L5.63599 9.63589L7.0502 8.22168L11.9999 13.1714Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #arrowUp>\r\n <svg\r\n class=\"s4y-select__svg\"\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11.9999 10.8284L7.0502 15.7782L5.63599 14.364L11.9999 8L18.3639 14.364L16.9497 15.7782L11.9999 10.8284Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #searchIcon>\r\n <svg\r\n width=\"18px\"\r\n height=\"18px\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M11 2C15.968 2 20 6.032 20 11C20 15.968 15.968 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2ZM11 18C14.8675 18 18 14.8675 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18ZM19.4853 18.0711L22.3137 20.8995L20.8995 22.3137L18.0711 19.4853L19.4853 18.0711Z\"\r\n ></path>\r\n </svg>\r\n</ng-template>\r\n","import { InjectionToken } from '@angular/core';\r\nimport { DynamicDialogOptions } from './dynamic-dialog.service';\r\nimport { DynamicDialogRef } from './dynamic-dialog.ref';\r\n\r\nexport const DYNAMIC_DIALOG_DATA = new InjectionToken<any>(\r\n 'DYNAMIC_DIALOG_DATA',\r\n);\r\n\r\nexport const DYNAMIC_DIALOG_OPTIONS = new InjectionToken<DynamicDialogOptions>(\r\n 'DYNAMIC_DIALOG_OPTIONS',\r\n);\r\n\r\nexport const DYNAMIC_DIALOG_REF = new InjectionToken<DynamicDialogRef>(\r\n 'DYNAMIC_DIALOG_REF',\r\n);\r\n","// dynamic-dialog.util.ts\r\nimport { EventEmitter } from '@angular/core';\r\nimport { Observable, firstValueFrom, isObservable } from 'rxjs';\r\nimport { DynamicDialogOptions } from './dynamic-dialog.service';\r\n\r\nexport function isPromise<T = any>(v: any): v is Promise<T> {\r\n return v && typeof v.then === 'function';\r\n}\r\nexport function isEmitter<T = any>(v: any): v is EventEmitter<T> {\r\n return v instanceof EventEmitter;\r\n}\r\n\r\nexport async function toMaybeBooleanPromise(\r\n value:\r\n | void\r\n | boolean\r\n | Promise<void | boolean>\r\n | Observable<void | boolean>\r\n | EventEmitter<void | boolean>,\r\n): Promise<boolean | void> {\r\n if (isPromise(value)) return await value;\r\n if (isObservable(value)) return await firstValueFrom(value);\r\n if (isEmitter(value)) return await firstValueFrom(value);\r\n return value;\r\n}\r\n\r\nexport async function toHandlerResult(ret: any): Promise<any> {\r\n if (ret instanceof Promise) return await ret;\r\n if (ret instanceof EventEmitter) return await firstValueFrom(ret);\r\n if (isObservable(ret)) return await firstValueFrom(ret);\r\n return ret;\r\n}\r\n\r\nexport async function allow(\r\n canDismiss: DynamicDialogOptions<any>['canDismiss'],\r\n reason: 'esc' | 'backdrop',\r\n) {\r\n if (!canDismiss) return true;\r\n try {\r\n return await Promise.resolve(canDismiss(reason));\r\n } catch {\r\n return false;\r\n }\r\n}\r\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { Observable, ReplaySubject, Subject } from 'rxjs';\r\nimport { DynamicDialogComponent } from './dynamic-dialog.component';\r\nimport {\r\n ButtonDialogOptions,\r\n DynamicDialogOptions,\r\n} from './dynamic-dialog.service';\r\nimport { ChangeDetectorRef, ComponentRef } from '@angular/core';\r\n\r\nexport type DynamicDialogCloseReason =\r\n | 'ok'\r\n | 'cancel'\r\n | 'close'\r\n | 'backdrop'\r\n | 'esc'\r\n | 'navigation'\r\n | 'detach'\r\n | 'dispose';\r\n\r\nexport interface DynamicDialogCloseEvent<T = any> {\r\n reason: DynamicDialogCloseReason;\r\n result?: T;\r\n}\r\n\r\nexport class DynamicDialogRef<T = any, C = any> {\r\n readonly afterOpened$: Observable<void>;\r\n readonly afterClosed$: Observable<DynamicDialogCloseEvent<T>>;\r\n\r\n // Declare sem inicializar aqui\r\n readonly backdropClick$: Observable<MouseEvent>;\r\n readonly keydownEvents$: Observable<KeyboardEvent>;\r\n\r\n private _afterOpened = new ReplaySubject<void>();\r\n private _afterClosed = new Subject<DynamicDialogCloseEvent<T>>();\r\n\r\n private panelEl!: HTMLElement;\r\n private isClosing = false;\r\n\r\n private _container!: DynamicDialogComponent;\r\n private _opts!: DynamicDialogOptions<any>;\r\n\r\n private _contentComponentRef?: ComponentRef<any>;\r\n\r\n constructor(public overlayRef: OverlayRef) {\r\n this.afterOpened$ = this._afterOpened.asObservable();\r\n this.afterClosed$ = this._afterClosed.asObservable();\r\n\r\n // Agora é seguro inicializar, pois overlayRef já foi recebido\r\n this.backdropClick$ = this.overlayRef.backdropClick();\r\n this.keydownEvents$ = this.overlayRef.keydownEvents();\r\n\r\n this.panelEl = this.overlayRef.overlayElement;\r\n\r\n // Fallbacks para detach/dispose externos\r\n this.overlayRef.detachments().subscribe(() => {\r\n if (!this._afterClosed.closed) {\r\n this._afterClosed.next({ reason: 'detach' });\r\n this._afterClosed.complete();\r\n }\r\n });\r\n\r\n const originalDispose = this.overlayRef.dispose.bind(this.overlayRef);\r\n this.overlayRef.dispose = () => {\r\n if (!this._afterClosed.closed) {\r\n this._afterClosed.next({ reason: 'dispose' });\r\n this._afterClosed.complete();\r\n }\r\n originalDispose();\r\n };\r\n }\r\n\r\n private get backdropEl(): HTMLElement | null {\r\n // disponível após criar o backdrop\r\n return (this.overlayRef as any).backdropElement ?? null;\r\n }\r\n\r\n /** Chamado pelo service logo após anexar o container. */\r\n _notifyOpened(): void {\r\n if (!this._afterOpened.closed) {\r\n this._afterOpened.next();\r\n this._afterOpened.complete();\r\n }\r\n }\r\n\r\n /** Fecha programaticamente com razão e (opcional) resultado. */\r\n close(result?: T, reason: DynamicDialogCloseReason = 'close'): void {\r\n if (!this._afterClosed.closed) {\r\n this._afterClosed.next({ reason, result });\r\n this._afterClosed.complete();\r\n }\r\n this.overlayRef.dispose();\r\n }\r\n\r\n async closeAnimated(\r\n result?: T,\r\n reason: DynamicDialogCloseReason = 'close',\r\n opts: {\r\n panelClass?: string;\r\n backdropHideClass?: string;\r\n timeoutMs?: number;\r\n } = {},\r\n ): Promise<void> {\r\n if (this.isClosing) return;\r\n this.isClosing = true;\r\n\r\n const panelCls = opts.panelClass ?? 'fade-out';\r\n const hideBackdropCls =\r\n opts.backdropHideClass ?? 'cdk-overlay-backdrop-showing';\r\n const timeoutMs = opts.timeoutMs ?? 600;\r\n\r\n // aciona animação do painel\r\n this.panelEl.classList.add(panelCls);\r\n\r\n // aciona transição do backdrop (remove a classe “showing”)\r\n const bd = this.backdropEl;\r\n if (bd && bd.classList.contains(hideBackdropCls)) {\r\n bd.classList.remove(hideBackdropCls);\r\n }\r\n\r\n // espera animationend do painel ou timeout\r\n await new Promise<void>((resolve) => {\r\n let done = false;\r\n const finish = () => {\r\n if (done) return;\r\n done = true;\r\n this.panelEl.removeEventListener('animationend', onAnimEnd);\r\n clearTimeout(to);\r\n resolve();\r\n };\r\n const onAnimEnd = (e: AnimationEvent) => {\r\n if (e.target === this.panelEl) finish();\r\n };\r\n this.panelEl.addEventListener('animationend', onAnimEnd, { once: true });\r\n const to = setTimeout(finish, timeoutMs);\r\n });\r\n\r\n // emite afterClosed e destrói\r\n if (!this._afterClosed.closed) {\r\n this._afterClosed.next({ reason, result });\r\n this._afterClosed.complete();\r\n }\r\n this.overlayRef.dispose();\r\n }\r\n\r\n _attachContentComponent(componentRef: ComponentRef<any>): void {\r\n this._contentComponentRef = componentRef;\r\n }\r\n\r\n getComponent<C = any>(): C | undefined {\r\n return this._contentComponentRef?.instance as C | undefined;\r\n }\r\n\r\n hasComponent(): boolean {\r\n return !!this._contentComponentRef;\r\n }\r\n\r\n _attachForButtonUpdates(\r\n container: DynamicDialogComponent,\r\n opts: DynamicDialogOptions<any>,\r\n ) {\r\n this._container = container;\r\n this._opts = opts;\r\n // garantir objetos\r\n this._opts.okBtnOptions ??= {};\r\n this._opts.cancelBtnOptions ??= {};\r\n }\r\n\r\n updateButtons(patch: {\r\n ok?: Partial<ButtonDialogOptions>;\r\n cancel?: Partial<ButtonDialogOptions>;\r\n }): void {\r\n if (!this._opts) return;\r\n if (patch.ok) Object.assign(this._opts.okBtnOptions!, patch.ok);\r\n if (patch.cancel) Object.assign(this._opts.cancelBtnOptions!, patch.cancel);\r\n this._markForCheck();\r\n }\r\n\r\n // OK\r\n setOkLoading(state: boolean): void {\r\n this._ensureBtn('ok').loading = state;\r\n // se você usa okLoading interno como overlay, mantenha em sincronia:\r\n this._container.okLoading = !!state;\r\n this._markForCheck();\r\n }\r\n\r\n setOkDisabled(state: boolean): void {\r\n this._ensureBtn('ok').disabled = state;\r\n this._markForCheck();\r\n }\r\n\r\n setOkText(text: string): void {\r\n this._ensureBtn('ok').text = text;\r\n this._markForCheck();\r\n }\r\n\r\n // Cancel\r\n setCancelLoading(state: boolean): void {\r\n this._ensureBtn('cancel').loading = state;\r\n this._container.cancelLoading = !!state;\r\n this._markForCheck();\r\n }\r\n setCancelDisabled(state: boolean): void {\r\n this._ensureBtn('cancel').disabled = state;\r\n this._markForCheck();\r\n }\r\n setCancelText(text: string): void {\r\n this._ensureBtn('cancel').text = text;\r\n this._markForCheck();\r\n }\r\n\r\n private _ensureBtn(which: 'ok' | 'cancel'): ButtonDialogOptions {\r\n if (!this._opts) throw new Error('Dialog options not attached.');\r\n const key = which === 'ok' ? 'okBtnOptions' : 'cancelBtnOptions';\r\n this._opts[key] ??= {};\r\n return this._opts[key]!;\r\n }\r\n private _markForCheck() {\r\n const cdr: ChangeDetectorRef | undefined = (this._container as any)?.cdr;\r\n if (cdr?.markForCheck) cdr.markForCheck();\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n HostBinding,\r\n Inject,\r\n inject,\r\n Input,\r\n TemplateRef,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {\r\n CdkPortalOutlet,\r\n ComponentPortal,\r\n PortalModule,\r\n} from '@angular/cdk/portal';\r\nimport {\r\n CommonModule,\r\n JsonPipe,\r\n NgIf,\r\n NgStyle,\r\n NgTemplateOutlet,\r\n} from '@angular/common';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { DynamicDialogRef } from './dynamic-dialog.ref';\r\nimport {\r\n DYNAMIC_DIALOG_DATA,\r\n DYNAMIC_DIALOG_OPTIONS,\r\n} from './dynamic-dialog.tokens';\r\nimport { toHandlerResult, toMaybeBooleanPromise } from './dynamic-dialog.util';\r\n\r\n@Component({\r\n selector: 's4y-dynamic-dialog',\r\n imports: [CdkPortalOutlet, ButtonComponent, NgStyle, NgIf, NgTemplateOutlet],\r\n templateUrl: './dynamic-dialog.component.html',\r\n styleUrl: './dynamic-dialog.component.scss',\r\n host: {\r\n role: 'dialog',\r\n 'aria-modal': 'true',\r\n tabindex: '-1',\r\n class: 's4y-dialog',\r\n '[attr.aria-labelledby]': \"'s4y-dialog-title'\",\r\n },\r\n animations: [],\r\n})\r\nexport class DynamicDialogComponent implements AfterViewInit {\r\n protected readonly injectedData = inject(DYNAMIC_DIALOG_DATA, {\r\n optional: true,\r\n });\r\n\r\n okLoading = false;\r\n cancelLoading = false;\r\n\r\n @Input() contentPortal?: ComponentPortal<unknown>;\r\n @Input() headerTemplate?: TemplateRef<any>;\r\n @Input() footerTemplate?: TemplateRef<any>;\r\n @Input() contentTemplate?: TemplateRef<any>;\r\n @Input() templateContext: any;\r\n\r\n @ViewChild(CdkPortalOutlet, { static: false })\r\n private portalOutlet?: CdkPortalOutlet;\r\n\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n @Inject(DYNAMIC_DIALOG_OPTIONS) public dialogOptions: any,\r\n ) {}\r\n\r\n ngAfterViewInit(): void {\r\n if (this.portalOutlet?.attachedRef) {\r\n this.ref._attachContentComponent(this.portalOutlet.attachedRef as any);\r\n }\r\n }\r\n\r\n get data() {\r\n return this.injectedData;\r\n }\r\n\r\n async onOk() {\r\n if (this.okLoading) return;\r\n this.okLoading = true;\r\n try {\r\n const component = this.ref.getComponent();\r\n\r\n const out = await toHandlerResult(\r\n this.dialogOptions?.onOk?.({\r\n data: this.injectedData,\r\n ref: this.ref,\r\n component,\r\n }),\r\n );\r\n\r\n if (out === false) return;\r\n\r\n const result =\r\n out === true || typeof out === 'undefined' ? undefined : out;\r\n await this.ref.closeAnimated(result, 'ok');\r\n } finally {\r\n this.okLoading = false;\r\n }\r\n }\r\n\r\n // ---- Cancel ----\r\n async onCancel() {\r\n if (this.cancelLoading) return;\r\n // this.cancelLoading = true;\r\n try {\r\n const component = this.ref.getComponent();\r\n\r\n const out = await toHandlerResult(\r\n this.dialogOptions?.onCancel?.({\r\n data: this.injectedData,\r\n ref: this.ref,\r\n component,\r\n }),\r\n );\r\n\r\n if (out === false) return; // NÃO fecha\r\n\r\n const result =\r\n out === true || typeof out === 'undefined' ? undefined : out;\r\n await this.ref.closeAnimated(result, 'cancel');\r\n } finally {\r\n this.cancelLoading = false;\r\n }\r\n }\r\n}\r\n","<article class=\"s4y-dialog\" role=\"dialog\" aria-modal=\"true\">\r\n @if (headerTemplate) {\r\n <header\r\n class=\"s4y-dialog-header\"\r\n [class.s4y-centered-header]=\"dialogOptions?.centeredHeader\"\r\n [ngStyle]=\"dialogOptions?.headerStyle\"\r\n >\r\n <ng-container\r\n [ngTemplateOutlet]=\"headerTemplate\"\r\n [ngTemplateOutletContext]=\"templateContext\"\r\n >\r\n </ng-container>\r\n </header>\r\n } @else if (dialogOptions?.title || dialogOptions?.description) {\r\n <header\r\n class=\"s4y-dialog-header\"\r\n [class.s4y-centered-header]=\"dialogOptions?.centeredHeader\"\r\n [ngStyle]=\"dialogOptions?.headerStyle\"\r\n >\r\n <h2 class=\"s4y-dialog-header__title\">{{ dialogOptions?.title }}</h2>\r\n <p class=\"s4y-dialog-header__description\">\r\n {{ dialogOptions?.description }}\r\n </p>\r\n </header>\r\n }\r\n\r\n @if (dialogOptions?.closable || dialogOptions?.closable == undefined) {\r\n <button class=\"s4y-dialog-close-btn\" (click)=\"ref.closeAnimated(undefined, 'close')\" aria-label=\"Fechar\">\r\n ×\r\n </button>\r\n }\r\n\r\n <section class=\"s4y-dialog__body\" [ngStyle]=\"dialogOptions?.bodyStyle\">\r\n @if (contentTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"contentTemplate\"\r\n [ngTemplateOutletContext]=\"templateContext\"\r\n >\r\n </ng-container>\r\n } @else {\r\n <ng-template\r\n cdkPortalOutlet\r\n [cdkPortalOutlet]=\"contentPortal\"\r\n ></ng-template>\r\n }\r\n </section>\r\n\r\n @let cancelBtnOptions = this.dialogOptions?.cancelBtnOptions;\r\n @let okBtnOptions = this.dialogOptions?.okBtnOptions;\r\n\r\n @if (!(dialogOptions?.hideFooter ?? false)) {\r\n <footer\r\n class=\"flex gap-1 s4y-dialog__footer\"\r\n [ngStyle]=\"dialogOptions?.footerStyle\"\r\n >\r\n @if (footerTemplate) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"footerTemplate\"\r\n [ngTemplateOutletContext]=\"templateContext\"\r\n >\r\n </ng-container>\r\n } @else {\r\n @if (cancelBtnOptions?.text) {\r\n <button\r\n (click)=\"onCancel()\"\r\n [loading]=\"cancelLoading || (cancelBtnOptions?.loading ?? false)\"\r\n [fullWidth]=\"cancelBtnOptions?.fullWidth ?? false\"\r\n s4yButton\r\n [variant]=\"cancelBtnOptions?.variant ?? 'gray'\"\r\n [outlined]=\"cancelBtnOptions?.outlined ?? true\"\r\n [disabled]=\"cancelBtnOptions?.disabled ?? false\"\r\n [size]=\"cancelBtnOptions?.size ?? 'small'\"\r\n >\r\n {{ cancelBtnOptions?.text ?? \"Cancelar\" }}\r\n </button>\r\n }\r\n @if (okBtnOptions?.text) {\r\n <button\r\n (click)=\"onOk()\"\r\n [loading]=\"okLoading || (okBtnOptions?.loading ?? false)\"\r\n [fullWidth]=\"okBtnOptions?.fullWidth ?? false\"\r\n s4yButton\r\n [variant]=\"okBtnOptions?.variant ?? 'primary'\"\r\n [outlined]=\"okBtnOptions?.outlined ?? false\"\r\n [disabled]=\"okBtnOptions?.disabled ?? false\"\r\n [size]=\"okBtnOptions?.size ?? 'small'\"\r\n >\r\n {{ okBtnOptions?.text ?? \"Ok\" }}\r\n </button>\r\n }\r\n }\r\n </footer>\r\n }\r\n</article>\r\n","import {\r\n EventEmitter,\r\n inject,\r\n Injectable,\r\n Injector,\r\n Provider,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport {\r\n ComponentType,\r\n GlobalPositionStrategy,\r\n Overlay,\r\n OverlayConfig,\r\n ScrollStrategy,\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { filter, Observable, take, takeUntil } from 'rxjs';\r\nimport { DynamicDialogComponent } from './dynamic-dialog.component';\r\nimport { DynamicDialogRef } from './dynamic-dialog.ref';\r\nimport { tButtonSize, tButtonVariant } from '../button/button.interface';\r\nimport {\r\n DYNAMIC_DIALOG_DATA,\r\n DYNAMIC_DIALOG_OPTIONS,\r\n} from './dynamic-dialog.tokens';\r\nimport { allow } from './dynamic-dialog.util';\r\n\r\nexport interface DynamicDialogOptions<TData = unknown, TComponent = any>\r\n extends DynamicDialogSize {\r\n title?: string | null;\r\n description?: string | null;\r\n data?: TData;\r\n panelClass?: string | string[];\r\n hasBackdrop?: boolean;\r\n backdropClass?: string | string[];\r\n closeOnBackdrop?: boolean;\r\n closeOnEsc?: boolean;\r\n positionStrategy?: GlobalPositionStrategy;\r\n scrollStrategy?: ScrollStrategy;\r\n disposeOnNavigation?: boolean;\r\n okBtnOptions?: ButtonDialogOptions;\r\n cancelBtnOptions?: ButtonDialogOptions;\r\n headerStyle?: { [key: string]: string };\r\n bodyStyle?: { [key: string]: string };\r\n footerStyle?: { [key: string]: string };\r\n\r\n onOk?: DialogHandler<TData, TComponent>;\r\n onCancel?: DialogHandler<TData, TComponent>;\r\n\r\n hideFooter?: boolean;\r\n closable?: boolean;\r\n centeredHeader?: boolean;\r\n\r\n headerTemplate?: TemplateRef<any>;\r\n footerTemplate?: TemplateRef<any>;\r\n contentTemplate?: TemplateRef<any>;\r\n\r\n canDismiss?: (reason: 'esc' | 'backdrop') => boolean | Promise<boolean>;\r\n}\r\n\r\nexport interface ButtonDialogOptions {\r\n text?: string | null;\r\n variant?: tButtonVariant;\r\n fullWidth?: boolean;\r\n loading?: boolean;\r\n disabled?: boolean;\r\n size?: tButtonSize;\r\n outlined?: boolean;\r\n}\r\n\r\nexport interface DynamicDialogSize {\r\n width?: number | string;\r\n height?: number | string;\r\n minWidth?: number | string;\r\n minHeight?: number | string;\r\n maxWidth?: number | string;\r\n maxHeight?: number | string;\r\n}\r\n\r\nexport type DialogHandlerContext<TData = unknown, TComponent = any> = {\r\n data: TData | undefined;\r\n ref: DynamicDialogRef;\r\n component: TComponent | undefined;\r\n};\r\n\r\n// handler pode decidir fechar ou não:\r\n// - void | true => fecha\r\n// - false => NÃO fecha\r\n// - Promise/Observable<EventEmitter> de qualquer um dos acima\r\nexport type DialogHandler<TData = unknown, TComponent = any> = (\r\n ctx: DialogHandlerContext<TData, TComponent>,\r\n) =>\r\n | void\r\n | boolean\r\n | any\r\n | Promise<void | boolean>\r\n | Observable<void | boolean>\r\n | EventEmitter<void | boolean>;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DynamicDialogService {\r\n private readonly overlay = inject(Overlay);\r\n private readonly rootInjector = inject(Injector);\r\n\r\n open<C, TData = unknown>(\r\n component: ComponentType<C>,\r\n opts?: DynamicDialogOptions<TData, C>,\r\n ): DynamicDialogRef<any, C> {\r\n opts = opts ?? {};\r\n const overlayRef = this.overlay.create(this.buildOverlayConfig(opts));\r\n\r\n overlayRef.updateSize({\r\n width: opts.width ?? 'auto',\r\n height: opts.height ?? 'auto',\r\n minWidth: opts.minWidth ?? '32rem',\r\n minHeight: opts.minHeight ?? 'auto',\r\n maxWidth: opts.maxWidth ?? '90dvw',\r\n maxHeight: opts.maxHeight ?? '90dvh',\r\n });\r\n\r\n if (opts.panelClass) {\r\n const classes = Array.isArray(opts.panelClass)\r\n ? opts.panelClass\r\n : [opts.panelClass];\r\n classes.forEach((c) => overlayRef.addPanelClass(c));\r\n }\r\n\r\n const dialogRef = new DynamicDialogRef<any, C>(overlayRef);\r\n\r\n const untilClosed$ = dialogRef.afterClosed$.pipe(take(1));\r\n\r\n if (opts.closeOnBackdrop) {\r\n overlayRef\r\n .backdropClick()\r\n .pipe(takeUntil(untilClosed$))\r\n .subscribe(async () => {\r\n if (!(await allow(opts.canDismiss, 'backdrop'))) return;\r\n dialogRef.closeAnimated(undefined, 'backdrop');\r\n });\r\n }\r\n\r\n if (opts.closeOnEsc !== false) {\r\n overlayRef\r\n .keydownEvents()\r\n .pipe(\r\n filter((e) => e.key === 'Escape' || e.key === 'Esc'),\r\n takeUntil(untilClosed$),\r\n )\r\n .subscribe(async () => {\r\n if (!(await allow(opts.canDismiss, 'esc'))) return;\r\n dialogRef.closeAnimated(undefined, 'esc');\r\n });\r\n }\r\n\r\n // injeta o ref + dados no componente container\r\n const injector = Injector.create({\r\n parent: this.rootInjector,\r\n providers: [\r\n { provide: DynamicDialogRef, useValue: dialogRef } as Provider,\r\n { provide: DYNAMIC_DIALOG_DATA, useValue: opts.data } as Provider,\r\n { provide: DYNAMIC_DIALOG_OPTIONS, useValue: opts } as Provider,\r\n ],\r\n });\r\n\r\n // anexa o container\r\n const containerPortal = new ComponentPortal(\r\n DynamicDialogComponent,\r\n null,\r\n injector,\r\n );\r\n const containerRef = overlayRef.attach(containerPortal);\r\n\r\n dialogRef._attachForButtonUpdates(containerRef.instance, opts);\r\n\r\n const templateCtx = {\r\n $implicit: opts.data,\r\n data: opts.data,\r\n ref: dialogRef,\r\n modalRef: dialogRef,\r\n };\r\n\r\n containerRef.instance.headerTemplate = opts.headerTemplate;\r\n containerRef.instance.footerTemplate = opts.footerTemplate;\r\n containerRef.instance.contentTemplate = opts.contentTemplate;\r\n containerRef.instance.templateContext = templateCtx;\r\n\r\n // notifica afterOpened (container anexado)\r\n dialogRef._notifyOpened();\r\n\r\n // anexa o conteúdo\r\n if (!opts.contentTemplate) {\r\n const contentPortal = new ComponentPortal(component, null, injector);\r\n containerRef.instance.contentPortal = contentPortal;\r\n }\r\n\r\n return dialogRef;\r\n }\r\n\r\n private buildOverlayConfig<TData>(\r\n opts: DynamicDialogOptions<TData>,\r\n ): OverlayConfig {\r\n const position =\r\n opts.positionStrategy ??\r\n this.overlay.position().global().centerHorizontally().centerVertically();\r\n\r\n return {\r\n positionStrategy: position,\r\n hasBackdrop: opts.hasBackdrop ?? true,\r\n backdropClass: opts.backdropClass ?? ['s4y-backdrop-dialog'],\r\n scrollStrategy:\r\n opts.scrollStrategy ?? this.overlay.scrollStrategies.block(),\r\n disposeOnNavigation: opts.disposeOnNavigation ?? true,\r\n panelClass: [\r\n 's4y-dialog-panel',\r\n ...(Array.isArray(opts.panelClass)\r\n ? opts.panelClass\r\n : opts.panelClass\r\n ? [opts.panelClass]\r\n : []),\r\n ],\r\n };\r\n }\r\n}\r\n","import { Component, input, signal, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 's4y-dynamic-loading-global',\r\n imports: [],\r\n template: `\r\n <div class=\"s4y-dynamic-loading-container\">\r\n <span class=\"s4y-dynamic-loading-container__loader\"></span>\r\n <p>{{ message() }}</p>\r\n </div>\r\n `,\r\n styles: [\r\n `\r\n .s4y-dynamic-loading-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n gap: 1.8rem;\r\n color: #fff;\r\n }\r\n\r\n .s4y-dynamic-loading-container__loader {\r\n width: 48px;\r\n height: 48px;\r\n border-radius: 50%;\r\n display: inline-block;\r\n border-top: 3px solid #fff;\r\n border-right: 3px solid transparent;\r\n box-sizing: border-box;\r\n animation: rotation 1s linear infinite;\r\n }\r\n\r\n @keyframes rotation {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n `,\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicLoadingGlobalComponent {\r\n message = signal('Carregando dados...');\r\n}\r\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentRef, inject, Injectable } from '@angular/core';\nimport { DynamicLoadingGlobalComponent } from './dynamic-loading-global.component';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DynamicLoadingGlobalService {\n private readonly overlay = inject(Overlay);\n\n private overlays = new Map<\n string,\n {\n overlayRef: OverlayRef;\n componentRef: ComponentRef<DynamicLoadingGlobalComponent>;\n }\n >();\n\n constructor() {}\n\n showLoading(message?: string) {\n const overlayRef = this.createOverlay();\n const portal = this.loadingComponentPortal();\n\n const id = this.generateId();\n\n const componentRef = overlayRef.attach(portal);\n\n if (message) {\n componentRef.instance.message.set(message);\n }\n\n this.overlays.set(id, { overlayRef, componentRef });\n\n return id;\n }\n\n updateMessage(id: string, message: string) {\n const entry = this.overlays.get(id);\n if (entry) {\n entry.componentRef.instance.message.set(message);\n }\n }\n\n hiddenLoading(id?: string) {\n if (id) {\n const entry = this.overlays.get(id);\n\n if (entry) {\n entry.overlayRef.dispose();\n this.overlays.delete(id);\n }\n } else {\n this.overlays.forEach((entry) => entry.overlayRef.dispose());\n this.overlays.clear();\n }\n }\n\n private loadingComponentPortal() {\n return new ComponentPortal(DynamicLoadingGlobalComponent);\n }\n\n private createOverlay() {\n return this.overlay.create({\n backdropClass: ['s4y-overlay-bg'],\n panelClass: ['s4y-centered-panel-content'],\n scrollStrategy: this.overlay.scrollStrategies.block(),\n hasBackdrop: true,\n disposeOnNavigation: true,\n });\n }\n\n private generateId(): string {\n const c = globalThis.crypto as Crypto | undefined;\n\n if (c?.randomUUID) {\n return c.randomUUID();\n }\n\n return `dlg_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;\n }\n}\n","import {\r\n Component,\r\n computed,\r\n forwardRef,\r\n HostBinding,\r\n HostListener,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\ntype TSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nconst SIZE_MAP: Record<TSize, number> = {\r\n xs: 16,\r\n sm: 20,\r\n md: 24,\r\n lg: 32,\r\n xl: 40,\r\n};\r\n\r\n@Component({\r\n selector: 's4y-rating',\r\n templateUrl: './rating.component.html',\r\n styleUrl: './rating.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RatingComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RatingComponent implements ControlValueAccessor {\r\n private readonly sanitizer = inject(DomSanitizer);\r\n\r\n value = signal(0);\r\n hoverValue = signal<number | null>(null);\r\n\r\n count = input<number>(5);\r\n\r\n size = input<number | TSize>('md');\r\n\r\n readonly sizePx = computed(() => {\r\n const size = this.size();\r\n return typeof size === 'number' ? size : (SIZE_MAP[size] ?? SIZE_MAP.md);\r\n });\r\n\r\n allowHalf = input<boolean>(false);\r\n\r\n readOnly = input<boolean>(false);\r\n\r\n disabled = signal<boolean>(false);\r\n\r\n onChange: (value: number) => void = () => {};\r\n onTouched: () => void = () => {};\r\n\r\n protected stars = computed(() => {\r\n const totalStars = this.count(); // número, ex: 5\r\n const displayValue = this.hoverValue() ?? this.value();\r\n const result: SafeHtml[] = [];\r\n\r\n for (let i = 0; i < totalStars; i++) {\r\n let icon = this.starLineIcon;\r\n\r\n if (displayValue >= i + 1) {\r\n icon = this.starFillIcon;\r\n } else if (this.allowHalf() && displayValue >= i + 0.5) {\r\n icon = this.starHalfIcon;\r\n }\r\n\r\n result.push(this.sanitizer.bypassSecurityTrustHtml(icon));\r\n }\r\n\r\n return result;\r\n });\r\n\r\n @HostBinding('class.s4y-rating--disabled')\r\n get isDisabledClass() {\r\n return this.disabled();\r\n }\r\n\r\n @HostBinding('class.s4y-rating--readonly') get isReadOnlyClass() {\r\n return this.readOnly();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n clearHoverStar() {\r\n this.hoverValue.set(null);\r\n }\r\n\r\n writeValue(value: number): void {\r\n const total = this.count();\r\n const normalized =\r\n typeof value === 'number' ? Math.max(0, Math.min(value, total)) : 0;\r\n this.value.set(\r\n this.allowHalf()\r\n ? Math.round(normalized * 2) / 2\r\n : Math.round(normalized),\r\n );\r\n }\r\n\r\n registerOnChange(fn: (value: number) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled.set(isDisabled);\r\n }\r\n\r\n setRating(index: number, event: MouseEvent) {\r\n if (!this.isInteractive) return;\r\n\r\n //é um array, entao a posicao é 0\r\n const next = this.allowHalf() ? this.computeHalf(index, event) : index + 1;\r\n\r\n if (next === this.value()) {\r\n this.updateValue(0);\r\n this.hoverValue.set(null);\r\n } else {\r\n this.updateValue(next);\r\n }\r\n }\r\n\r\n onKey(event: KeyboardEvent) {\r\n if (!this.isInteractive) return;\r\n\r\n const total = this.count();\r\n const step = this.allowHalf() ? 0.5 : 1;\r\n\r\n const base = this.hoverValue() ?? this.value();\r\n\r\n if (event.key === 'ArrowRight' || event.key === 'ArrowUp') {\r\n const next = Math.min(base + step, total);\r\n this.hoverValue.set(next);\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'ArrowLeft' || event.key === 'ArrowDown') {\r\n const next = Math.max(base - step, 0);\r\n this.hoverValue.set(next);\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'Home') {\r\n this.hoverValue.set(0);\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'End') {\r\n this.hoverValue.set(total);\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n const targetValue = this.hoverValue() ?? this.value();\r\n this.updateValue(targetValue);\r\n this.hoverValue.set(null);\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (event.key === 'Escape') {\r\n this.hoverValue.set(null);\r\n event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n onStarHover(index: number, event: MouseEvent) {\r\n if (!this.isInteractive) return;\r\n\r\n if (this.allowHalf()) {\r\n this.hoverValue.set(this.computeHalf(index, event));\r\n } else {\r\n this.hoverValue.set(index + 1);\r\n }\r\n }\r\n\r\n onStarHoverTouch(index: number, event: TouchEvent) {\r\n if (!this.isInteractive) return;\r\n\r\n if (this.allowHalf()) {\r\n this.hoverValue.set(this.computeHalf(index, event));\r\n } else {\r\n this.hoverValue.set(index + 1);\r\n }\r\n }\r\n\r\n onTouchCommit(index: number, event: TouchEvent) {\r\n if (!this.isInteractive) return;\r\n\r\n const next = this.allowHalf() ? this.computeHalf(index, event) : index + 1;\r\n\r\n // Em mobile, toque único normalmente deve setar; se tocar de novo no mesmo, zera:\r\n if (next === this.value()) {\r\n this.updateValue(0);\r\n this.hoverValue.set(null);\r\n } else {\r\n this.updateValue(next);\r\n }\r\n\r\n // evita rolagem acidental ao tocar/arrastar levemente\r\n event.preventDefault();\r\n }\r\n\r\n private updateValue(value: number) {\r\n const newValue = this.allowHalf()\r\n ? Math.round(value * 2) / 2\r\n : Math.round(value);\r\n this.value.set(newValue);\r\n this.onChange(newValue);\r\n this.onTouched();\r\n }\r\n\r\n private getClientXFromEvent(e: MouseEvent | TouchEvent): number {\r\n if (e instanceof TouchEvent) {\r\n const t = e.touches[0] ?? e.changedTouches[0];\r\n return t?.clientX ?? 0;\r\n }\r\n return (e as MouseEvent).clientX ?? 0;\r\n }\r\n\r\n private computeHalf(index: number, e: MouseEvent | TouchEvent): number {\r\n const target = e.currentTarget as HTMLElement;\r\n const rect = target.getBoundingClientRect();\r\n const clientX = this.getClientXFromEvent(e);\r\n const relativeX = clientX - rect.left; // 0..width\r\n const isHalf = relativeX < rect.width / 2;\r\n return isHalf ? index + 0.5 : index + 1;\r\n }\r\n\r\n private get isInteractive() {\r\n return !this.disabled() && !this.readOnly();\r\n }\r\n\r\n get starLineIcon() {\r\n return `<svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12.0006 18.26L4.94715 22.2082L6.52248 14.2799L0.587891 8.7918L8.61493 7.84006L12.0006 0.5L15.3862 7.84006L23.4132 8.7918L17.4787 14.2799L19.054 22.2082L12.0006 18.26ZM12.0006 15.968L16.2473 18.3451L15.2988 13.5717L18.8719 10.2674L14.039 9.69434L12.0006 5.27502L9.96214 9.69434L5.12921 10.2674L8.70231 13.5717L7.75383 18.3451L12.0006 15.968Z\"\r\n ></path>\r\n </svg>`;\r\n }\r\n\r\n get starFillIcon() {\r\n return `<svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12.0006 18.26L4.94715 22.2082L6.52248 14.2799L0.587891 8.7918L8.61493 7.84006L12.0006 0.5L15.3862 7.84006L23.4132 8.7918L17.4787 14.2799L19.054 22.2082L12.0006 18.26Z\"\r\n ></path>\r\n </svg>`;\r\n }\r\n\r\n get starHalfIcon() {\r\n return `\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12.0006 15.968L16.2473 18.3451L15.2988 13.5717L18.8719 10.2674L14.039 9.69434L12.0006 5.27502V15.968ZM12.0006 18.26L4.94715 22.2082L6.52248 14.2799L0.587891 8.7918L8.61493 7.84006L12.0006 0.5L15.3862 7.84006L23.4132 8.7918L17.4787 14.2799L19.054 22.2082L12.0006 18.26Z\"\r\n ></path>\r\n </svg>\r\n `;\r\n }\r\n}\r\n","<div\r\n class=\"s4y-star-container\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"0\"\r\n [attr.aria-valuemax]=\"count()\"\r\n [attr.aria-valuenow]=\"value()\"\r\n [attr.aria-valuetext]=\"(hoverValue() ?? value()) + ' de ' + count()\"\r\n [attr.aria-readonly]=\"readOnly() ? 'true' : null\"\r\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\r\n tabindex=\"0\"\r\n (blur)=\"onTouched()\"\r\n (keydown)=\"onKey($event)\"\r\n>\r\n @for (star of stars(); track $index) {\r\n <button\r\n tabindex=\"-1\"\r\n (click)=\"setRating($index, $event)\"\r\n (mousemove)=\"onStarHover($index, $event)\"\r\n (touchstart)=\"onStarHoverTouch($index, $event)\"\r\n (touchend)=\"onTouchCommit($index, $event)\"\r\n [innerHTML]=\"star\"\r\n [disabled]=\"disabled()\"\r\n role=\"button\"\r\n class=\"s4y-star-item\"\r\n [style.height.px]=\"sizePx()\"\r\n [style.width.px]=\"sizePx()\"\r\n [attr.aria-label]=\"'Avaliar com ' + ($index + 1) + ' estrela(s)'\"\r\n ></button>\r\n }\r\n</div>\r\n","import { afterNextRender, Component, computed, effect, ElementRef, inject, Injector, input, model, output, signal, viewChild } from '@angular/core';\r\n\r\nexport type TagSeverity =\r\n | 'success'\r\n | 'error'\r\n | 'info'\r\n | 'warning'\r\n | 'primary'\r\n | 'secondary'\r\n | 'neutral'\r\n | 'finished';\r\n\r\nexport type TagSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n@Component({\r\n selector: 's4y-tag',\r\n imports: [],\r\n templateUrl: './tag.component.html',\r\n styleUrl: './tag.component.scss',\r\n host: {\r\n '[style.fontWeight]': '\"500\"',\r\n '[style.boxShadow]': 'shadow()',\r\n '[class]': 'class()',\r\n '(dblclick)': 'onDblClick($event)',\r\n role: 'button',\r\n '[attr.aria-label]': 'editable() ? \"Editar tag\" : null',\r\n tabindex: '0',\r\n },\r\n})\r\nexport class TagComponent {\r\n private readonly injector = inject(Injector);\r\n editInput = viewChild<ElementRef<HTMLInputElement>>('editInput');\r\n\r\n size = input<TagSize>('md');\r\n\r\n severity = input<TagSeverity>('primary');\r\n value = model<string>('');\r\n outlined = input<boolean>(false);\r\n withShadow = input<boolean>(true);\r\n editable = input<boolean>(false);\r\n\r\n isEditing = signal(false);\r\n\r\n editStart = output<void>();\r\n editEnd = output<void>();\r\n\r\n protected class = computed(() => {\r\n let baseClass = '';\r\n\r\n switch (this.severity()) {\r\n case 'success':\r\n baseClass = 'tag-success';\r\n break;\r\n case 'error':\r\n baseClass = 'tag-error';\r\n break;\r\n case 'info':\r\n baseClass = 'tag-info';\r\n break;\r\n case 'warning':\r\n baseClass = 'tag-warning';\r\n break;\r\n case 'neutral':\r\n baseClass = 'tag-neutral';\r\n break;\r\n case 'primary':\r\n baseClass = 'tag-primary';\r\n break;\r\n case 'secondary':\r\n baseClass = 'tag-secondary';\r\n break;\r\n case 'finished':\r\n baseClass = 'tag-finished';\r\n break;\r\n default:\r\n baseClass = 'tag-primary';\r\n }\r\n\r\n const outline = this.outlined() ? ' outlined' : '';\r\n return `${baseClass}${outline} ${this.sizeClass()}`;\r\n });\r\n\r\n private sizeClass = computed(() => {\r\n switch (this.size()) {\r\n case 'xs':\r\n return 'size-xs';\r\n case 'sm':\r\n return 'size-sm';\r\n case 'md':\r\n return 'size-md';\r\n case 'lg':\r\n return 'size-lg';\r\n case 'xl':\r\n return 'size-xl';\r\n default:\r\n return 'size-md';\r\n }\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.isEditing()) {\r\n afterNextRender(\r\n () => {\r\n const el = this.editInput()?.nativeElement;\r\n if (el) {\r\n el.focus();\r\n // el.select();\r\n }\r\n },\r\n { injector: this.injector },\r\n );\r\n }\r\n });\r\n }\r\n\r\n protected shadow = computed(() =>\r\n this.withShadow() ? ' box-shadow: var(--shadow-default);' : null,\r\n );\r\n\r\n onDblClick(_: MouseEvent) {\r\n this.startEdit();\r\n }\r\n\r\n startEdit() {\r\n if (!this.editable()) return;\r\n if (!this.isEditing()) {\r\n this.isEditing.set(true);\r\n this.editStart.emit();\r\n }\r\n }\r\n\r\n stopEdit(commit: boolean = true) {\r\n if (this.isEditing()) {\r\n this.isEditing.set(false);\r\n this.editEnd.emit();\r\n }\r\n }\r\n\r\n setValue(event: Event) {\r\n const value = (event.target as HTMLInputElement).value;\r\n\r\n this.value.set(value);\r\n }\r\n\r\n onKeydown(event: KeyboardEvent) {\r\n if (!this.editable()) return;\r\n if (event.key === 'Enter' && !this.isEditing()) {\r\n event.preventDefault();\r\n this.startEdit();\r\n } else if (event.key === 'Escape' && this.isEditing()) {\r\n event.preventDefault();\r\n this.stopEdit(false);\r\n }\r\n }\r\n}\r\n","\r\n@if (!isEditing()) {\r\n <p (keydown)=\"onKeydown($event)\">\r\n {{ value() }}\r\n </p>\r\n\r\n <ng-content select=\"[icon]\"></ng-content>\r\n} @else {\r\n <input\r\n type=\"text\"\r\n [value]=\"value()\"\r\n (blur)=\"stopEdit()\"\r\n (keydown.enter)=\"stopEdit()\"\r\n (keydown.escape)=\"stopEdit(false)\"\r\n (input)=\"setValue($event)\"\r\n autofocus\r\n #editInput\r\n />\r\n}\r\n\r\n\r\n","import { Component, inject, SecurityContext, TemplateRef, ViewEncapsulation } from '@angular/core';\r\nimport { IConfirmationProps } from './confirmation.service';\r\nimport { SvgComponent } from '../svg';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's4y-confirmation',\r\n imports: [SvgComponent, ButtonComponent, NgTemplateOutlet],\r\n templateUrl: './confirmation.component.html',\r\n styleUrl: './confirmation.component.scss',\r\n})\r\nexport class ConfirmationComponent {\r\n private sanitizer = inject(DomSanitizer);\r\n\r\n props?: IConfirmationProps;\r\n\r\n onCancelClick?: () => Promise<void>;\r\n onConfirmClick?: () => Promise<void>;\r\n\r\n confirmLoading = false;\r\n cancelLoading = false;\r\n loading = false;\r\n\r\n get isTemplate(): boolean {\r\n return this.props?.content instanceof TemplateRef;\r\n }\r\n\r\n // Verifica se é HTML\r\n get isHtml(): boolean {\r\n return !this.isTemplate && this.props?.contentType === 'html';\r\n }\r\n\r\n // Verifica se é texto simples\r\n get isText(): boolean {\r\n return !this.isTemplate && this.props?.contentType !== 'html';\r\n }\r\n\r\n // Retorna o template se for TemplateRef\r\n get template(): TemplateRef<any> | undefined {\r\n return this.isTemplate\r\n ? (this.props!.content as TemplateRef<any>)\r\n : undefined;\r\n }\r\n\r\n // Retorna HTML sanitizado se contentType for 'html'\r\n get safeHtml(): SafeHtml | undefined {\r\n if (!this.isHtml || typeof this.props?.content !== 'string')\r\n return undefined;\r\n\r\n return (\r\n this.sanitizer.sanitize(SecurityContext.HTML, this.props.content) || ''\r\n );\r\n }\r\n\r\n // Retorna texto simples\r\n get textContent(): string | undefined {\r\n return this.isText && typeof this.props?.content === 'string'\r\n ? this.props.content\r\n : undefined;\r\n }\r\n\r\n async handleCancel() {\r\n if (this.onCancelClick) {\r\n this.cancelLoading = true;\r\n this.loading = true;\r\n await this.onCancelClick();\r\n this.cancelLoading = false;\r\n this.loading = false;\r\n }\r\n }\r\n\r\n async handleConfirm() {\r\n if (this.onConfirmClick) {\r\n this.confirmLoading = true;\r\n this.loading = true;\r\n await this.onConfirmClick();\r\n this.confirmLoading = false;\r\n this.loading = false;\r\n }\r\n }\r\n}\r\n","@let model = props;\r\n@let cancelModel = model?.cancelProps;\r\n@let confirmationModel = model?.confirmationProps;\r\n\r\n@if (model) {\r\n <div class=\"s4y-confirmation-icon\">\r\n @if (model.iconUri) {\r\n <s4y-svg [src]=\"model.iconUri\" />\r\n } @else {\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM11 15H13V17H11V15ZM11 7H13V13H11V7Z\"\r\n ></path>\r\n </svg>\r\n }\r\n </div>\r\n\r\n\r\n <div class=\"s4y-confirmation-content flex\">\r\n <p class=\"medium-text-bold s4y-confirmation-title\">\r\n {{ model.title }}\r\n </p>\r\n\r\n @if (model.content) {\r\n <div class=\"s4y-confirmation-description\">\r\n @if (isTemplate) {\r\n <ng-container *ngTemplateOutlet=\"template!\"></ng-container>\r\n } @else if (isHtml) {\r\n <div class=\"small-text-regular\" [innerHTML]=\"safeHtml\"></div>\r\n } @else {\r\n <p class=\"small-text-regular\">{{ textContent }}</p>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n\r\n <div class=\"s4y-confirmation-buttons\">\r\n <button\r\n type=\"button\"\r\n s4yButton\r\n [outlined]=\"true\"\r\n [variant]=\"'danger'\"\r\n [fullWidth]=\"true\"\r\n [disabled]=\"cancelLoading || loading\"\r\n [loading]=\"cancelLoading\"\r\n (click)=\"handleCancel()\"\r\n >\r\n {{ cancelModel?.text ?? \"Cancelar\" }}\r\n </button>\r\n <button\r\n type=\"button\"\r\n s4yButton\r\n [outlined]=\"false\"\r\n [variant]=\"'danger'\"\r\n [fullWidth]=\"true\"\r\n [disabled]=\"confirmLoading || loading\"\r\n [loading]=\"confirmLoading\"\r\n (click)=\"handleConfirm()\"\r\n >\r\n {{ confirmationModel?.text ?? \"Confirmar\" }}\r\n </button>\r\n </div>\r\n}\r\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { inject, Injectable, TemplateRef } from '@angular/core';\r\nimport { ConfirmationComponent } from './confirmation.component';\r\nimport {\r\n catchError,\r\n finalize,\r\n firstValueFrom,\r\n from,\r\n isObservable,\r\n Observable,\r\n of,\r\n Subject,\r\n take,\r\n} from 'rxjs';\r\n\r\nexport interface IConfirmationProps {\r\n iconUri?: string;\r\n title: string;\r\n content?: string | TemplateRef<any>;\r\n contentType?: 'text' | 'html';\r\n width?: string;\r\n height?: string;\r\n confirmationProps?: IConfirmationBtnProps;\r\n cancelProps?: IConfirmationBtnProps;\r\n\r\n onCancel?:\r\n | (() => Promise<boolean> | Observable<boolean> | boolean)\r\n | Promise<boolean>\r\n | Observable<boolean>\r\n | boolean;\r\n onConfirm?:\r\n | (() => Promise<boolean> | Observable<boolean> | boolean)\r\n | Promise<boolean>\r\n | Observable<boolean>\r\n | boolean;\r\n}\r\n\r\nexport interface IConfirmationBtnProps {\r\n text: string;\r\n}\r\n\r\nexport interface IConfirmationResult {\r\n confirmed: boolean;\r\n data?: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ConfirmationService {\r\n private readonly overlay = inject(Overlay);\r\n\r\n constructor() {}\r\n\r\n open(config: IConfirmationProps) {\r\n const overlayRef = this.createOverlay(config);\r\n const confirmationPortal = this.confirmationPortal();\r\n const result$ = new Subject<IConfirmationResult>();\r\n let isProcessing = false;\r\n\r\n const confirmationInstance = overlayRef.attach(confirmationPortal);\r\n\r\n confirmationInstance.instance.props = config;\r\n\r\n confirmationInstance.instance.onCancelClick = async () => {\r\n isProcessing = true;\r\n await this.handleAction(config.onCancel, overlayRef, false, result$);\r\n isProcessing = false;\r\n };\r\n\r\n confirmationInstance.instance.onConfirmClick = async () => {\r\n isProcessing = true;\r\n await this.handleAction(config.onConfirm, overlayRef, true, result$);\r\n isProcessing = false;\r\n };\r\n\r\n const backdropSub = overlayRef.backdropClick().subscribe(() => {\r\n if (!isProcessing) {\r\n this.closeWithResult(overlayRef, result$, false);\r\n }\r\n });\r\n\r\n const keySub = overlayRef.keydownEvents().subscribe((event) => {\r\n if (event.key === 'Escape' && !isProcessing) {\r\n // ADICIONE essa verificação\r\n this.closeWithResult(overlayRef, result$, false);\r\n }\r\n });\r\n\r\n return result$.asObservable().pipe(\r\n take(1),\r\n finalize(() => {\r\n backdropSub.unsubscribe();\r\n keySub.unsubscribe();\r\n }),\r\n );\r\n }\r\n\r\n private async handleAction(\r\n action: IConfirmationProps['onCancel'] | IConfirmationProps['onConfirm'],\r\n overlayRef: OverlayRef,\r\n confirmed: boolean,\r\n result$: Subject<IConfirmationResult>,\r\n ): Promise<void> {\r\n try {\r\n if (!action) {\r\n result$.next({ confirmed });\r\n result$.complete();\r\n overlayRef.dispose();\r\n return;\r\n }\r\n\r\n const actionResult$ = this.toObservable(action);\r\n\r\n const actionData = await firstValueFrom(\r\n actionResult$.pipe(catchError(() => of(true))),\r\n );\r\n\r\n if (actionData === false) {\r\n return;\r\n }\r\n\r\n result$.next({ confirmed, data: actionData });\r\n result$.complete();\r\n overlayRef.dispose();\r\n } catch (error) {\r\n console.error('Error handling confirmation action:', error);\r\n result$.next({ confirmed: false });\r\n result$.complete();\r\n overlayRef.dispose();\r\n }\r\n }\r\n\r\n private toObservable(\r\n value:\r\n | (() => Promise<boolean> | Observable<boolean> | boolean)\r\n | Promise<boolean>\r\n | Observable<boolean>\r\n | boolean,\r\n ): Observable<boolean> {\r\n const resolvedValue = typeof value === 'function' ? value() : value;\r\n\r\n if (isObservable(resolvedValue)) {\r\n return resolvedValue;\r\n }\r\n\r\n if (resolvedValue instanceof Promise) {\r\n return from(resolvedValue);\r\n }\r\n\r\n return of(resolvedValue as boolean);\r\n }\r\n\r\n private createOverlay({ width, height }: IConfirmationProps) {\r\n const overlayRef = this.overlay.create({\r\n hasBackdrop: true,\r\n disposeOnNavigation: true,\r\n backdropClass: 's4y-backdrop-dialog',\r\n panelClass: 's4y-confirmation-panel',\r\n maxWidth: '90dvw',\r\n height: height,\r\n width: width ?? 'min(41rem, 90dvw)',\r\n positionStrategy: this.overlay\r\n .position()\r\n .global()\r\n .centerHorizontally()\r\n .centerVertically(),\r\n });\r\n\r\n return overlayRef;\r\n }\r\n\r\n private confirmationPortal() {\r\n return new ComponentPortal(ConfirmationComponent);\r\n }\r\n\r\n private closeWithResult(\r\n overlayRef: OverlayRef,\r\n result$: Subject<IConfirmationResult>,\r\n confirmed: boolean,\r\n ) {\r\n if (!result$.closed) {\r\n result$.next({ confirmed });\r\n result$.complete();\r\n }\r\n if (overlayRef.hasAttached()) {\r\n overlayRef.dispose();\r\n }\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n ViewEncapsulation,\r\n booleanAttribute,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CollapsePanelComponent } from './collapse-panel.component';\r\n\r\nexport type S4yCollapseSize = 'small' | 'medium' | 'large';\r\nexport type S4yExpandIconPosition = 'start' | 'end';\r\n\r\n@Component({\r\n selector: 's4y-collapse',\r\n standalone: true,\r\n imports: [CommonModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n template: `<ng-content></ng-content>`,\r\n host: {\r\n class: 's4y-collapse',\r\n '[class.s4y-collapse-icon-position-start]': `expandIconPosition === 'start'`,\r\n '[class.s4y-collapse-icon-position-end]': `expandIconPosition === 'end'`,\r\n '[class.s4y-collapse-ghost]': 'ghost',\r\n '[class.s4y-collapse-borderless]': '!bordered',\r\n '[class.s4y-collapse-small]': `size === 'small'`,\r\n '[class.s4y-collapse-large]': `size === 'large'`,\r\n },\r\n styleUrl: './collapse.component.scss',\r\n})\r\nexport class CollapseComponent {\r\n /**\r\n * Modo acordeão - apenas um painel pode estar aberto por vez\r\n */\r\n @Input({ transform: booleanAttribute }) accordion = false;\r\n\r\n /**\r\n * Define se o collapse terá bordas\r\n */\r\n @Input({ transform: booleanAttribute }) bordered = true;\r\n\r\n /**\r\n * Modo ghost - sem bordas e fundo transparente\r\n */\r\n @Input({ transform: booleanAttribute }) ghost = false;\r\n\r\n /**\r\n * Posição do ícone de expansão\r\n */\r\n @Input() expandIconPosition: S4yExpandIconPosition = 'start';\r\n\r\n /**\r\n * Tamanho do collapse\r\n */\r\n @Input() size: S4yCollapseSize = 'medium';\r\n\r\n private panels: CollapsePanelComponent[] = [];\r\n\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n /**\r\n * Adiciona um painel à lista\r\n */\r\n addPanel(panel: CollapsePanelComponent): void {\r\n this.panels.push(panel);\r\n }\r\n\r\n /**\r\n * Remove um painel da lista\r\n */\r\n removePanel(panel: CollapsePanelComponent): void {\r\n const index = this.panels.indexOf(panel);\r\n if (index > -1) {\r\n this.panels.splice(index, 1);\r\n }\r\n }\r\n\r\n /**\r\n * Manipula o clique em um painel\r\n */\r\n handlePanelClick(panel: CollapsePanelComponent): void {\r\n // Se está em modo acordeão e o painel não está ativo\r\n if (this.accordion && !panel.active) {\r\n // Fecha todos os outros painéis\r\n this.panels\r\n .filter((p) => p !== panel && p.active)\r\n .forEach((p) => {\r\n p.active = false;\r\n p.activeChange.emit(false);\r\n p.markForCheck();\r\n });\r\n }\r\n\r\n // Alterna o estado do painel clicado\r\n panel.active = !panel.active;\r\n panel.activeChange.emit(panel.active);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation,\r\n booleanAttribute,\r\n inject,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { fromEvent } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { CollapseComponent } from './collapse.component';\r\n\r\nexport type S4yCollapsible = 'disabled' | 'header' | 'icon';\r\n\r\n@Component({\r\n selector: 's4y-collapse-panel',\r\n standalone: true,\r\n imports: [CommonModule],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n animations: [\r\n trigger('collapseMotion', [\r\n state(\r\n 'expanded',\r\n style({\r\n height: '*',\r\n opacity: 1,\r\n }),\r\n ),\r\n state(\r\n 'collapsed',\r\n style({\r\n height: 0,\r\n opacity: 0,\r\n overflow: 'hidden',\r\n }),\r\n ),\r\n transition('expanded <=> collapsed', [\r\n animate('300ms cubic-bezier(0.4, 0, 0.2, 1)'),\r\n ]),\r\n ]),\r\n ],\r\n template: `\r\n <div\r\n #headerElement\r\n role=\"button\"\r\n [attr.aria-expanded]=\"active\"\r\n class=\"s4y-collapse-header\"\r\n [class.s4y-collapse-icon-collapsible-only]=\"collapsible === 'icon'\"\r\n [class.s4y-collapse-header-collapsible-only]=\"collapsible === 'header'\"\r\n >\r\n @if (showArrow) {\r\n <div #iconElement role=\"button\" class=\"s4y-collapse-expand-icon\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n expandedIconTemplate || defaultIcon;\r\n context: { $implicit: active }\r\n \"\r\n >\r\n </ng-container>\r\n <ng-template #defaultIcon>\r\n <svg\r\n class=\"s4y-collapse-arrow\"\r\n [class.s4y-collapse-arrow-active]=\"active\"\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n d=\"M6 4l4 4-4 4\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n fill=\"none\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <span class=\"s4y-collapse-header-text\">\r\n <ng-container *ngTemplateOutlet=\"headerTemplate || defaultHeader\">\r\n </ng-container>\r\n <ng-template #defaultHeader>{{ header }}</ng-template>\r\n </span>\r\n\r\n @if (extra || extraTemplate) {\r\n <div class=\"s4y-collapse-extra\">\r\n <ng-container *ngTemplateOutlet=\"extraTemplate || defaultExtra\">\r\n </ng-container>\r\n <ng-template #defaultExtra>{{ extra }}</ng-template>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"s4y-collapse-content\"\r\n [class.s4y-collapse-content-active]=\"active\"\r\n [@collapseMotion]=\"active ? 'expanded' : 'collapsed'\"\r\n >\r\n <div class=\"s4y-collapse-content-box\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n `,\r\n host: {\r\n class: 's4y-collapse-item',\r\n '[class.s4y-collapse-no-arrow]': '!showArrow',\r\n '[class.s4y-collapse-item-active]': 'active',\r\n '[class.s4y-collapse-item-disabled]':\r\n 'disabled || collapsible === \"disabled\"',\r\n },\r\n})\r\nexport class CollapsePanelComponent implements OnInit, AfterViewInit {\r\n private cdr = inject(ChangeDetectorRef);\r\n private destroyRef = inject(DestroyRef);\r\n private collapseComponent = inject(CollapseComponent, { host: true });\r\n\r\n /**\r\n * Define se o painel está ativo/expandido\r\n */\r\n @Input({ transform: booleanAttribute }) active = false;\r\n\r\n /**\r\n * Define se o painel está desabilitado\r\n * @deprecated Use collapsible='disabled' ao invés\r\n */\r\n @Input({ transform: booleanAttribute }) disabled = false;\r\n\r\n /**\r\n * Define se a seta de expansão será exibida\r\n */\r\n @Input({ transform: booleanAttribute }) showArrow = true;\r\n\r\n /**\r\n * Conteúdo extra no cabeçalho (texto ou template)\r\n */\r\n @Input() extra?: string;\r\n\r\n /**\r\n * Template para conteúdo extra\r\n */\r\n @Input() extraTemplate?: TemplateRef<void>;\r\n\r\n /**\r\n * Título do painel (texto ou template)\r\n */\r\n @Input() header?: string;\r\n\r\n /**\r\n * Template para o título\r\n */\r\n @Input() headerTemplate?: TemplateRef<void>;\r\n\r\n /**\r\n * Template customizado para o ícone de expansão\r\n */\r\n @Input() expandedIconTemplate?: TemplateRef<{ $implicit: boolean }>;\r\n\r\n /**\r\n * Define o comportamento de clique do painel\r\n */\r\n @Input() collapsible?: S4yCollapsible;\r\n\r\n /**\r\n * Evento emitido quando o estado ativo muda\r\n */\r\n @Output() activeChange = new EventEmitter<boolean>();\r\n\r\n @ViewChild('headerElement') headerElement!: ElementRef<HTMLElement>;\r\n @ViewChild('iconElement') iconElement?: ElementRef<HTMLElement>;\r\n\r\n constructor() {\r\n // Quando o componente for destruído, remove da lista do collapse pai\r\n this.destroyRef.onDestroy(() => {\r\n this.collapseComponent.removePanel(this);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n // Adiciona este painel à lista do collapse pai\r\n this.collapseComponent.addPanel(this);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // Define qual elemento será clicável baseado no modo collapsible\r\n let clickElement = this.headerElement.nativeElement;\r\n\r\n if (this.showArrow && this.collapsible === 'icon' && this.iconElement) {\r\n clickElement = this.iconElement.nativeElement;\r\n }\r\n\r\n // Configura o listener de clique\r\n fromEvent<MouseEvent>(clickElement, 'click')\r\n .pipe(\r\n filter(() => !this.disabled && this.collapsible !== 'disabled'),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe(() => {\r\n this.collapseComponent.handlePanelClick(this);\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * Marca o componente para verificação de mudanças\r\n */\r\n markForCheck(): void {\r\n this.cdr.markForCheck();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CollapseComponent } from './collapse.component';\r\nimport { CollapsePanelComponent } from './collapse-panel.component';\r\n\r\n/**\r\n * Módulo de Collapse\r\n *\r\n * Componente para criar painéis expansíveis/retráteis.\r\n *\r\n * @example\r\n * ```html\r\n * <s4y-collapse [accordion]=\"true\" [bordered]=\"true\">\r\n * <s4y-collapse-panel header=\"Painel 1\" [active]=\"true\">\r\n * Conteúdo do painel 1\r\n * </s4y-collapse-panel>\r\n * <s4y-collapse-panel header=\"Painel 2\">\r\n * Conteúdo do painel 2\r\n * </s4y-collapse-panel>\r\n * </s4y-collapse>\r\n * ```\r\n */\r\n@NgModule({\r\n imports: [CollapseComponent, CollapsePanelComponent],\r\n exports: [CollapseComponent, CollapsePanelComponent],\r\n})\r\nexport class CollapseModule {}\r\n","import { Component, computed, contentChild, inject, input, output, TemplateRef } from '@angular/core';\r\nimport { SvgComponent } from '../svg';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { CommonModule, NgTemplateOutlet } from '@angular/common';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\ntype TInformationBannerSeverity = \"neutral\" | \"success\" | 'warning' | \"info\" | 'error'\r\n\r\nexport interface InformationBannerProps {\r\n title?: string;\r\n description?: string;\r\n\r\n iconUri?: string;\r\n iconShow?: boolean;\r\n iconSize?: number;\r\n closable?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 's4y-information-banner',\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './information-banner.component.html',\r\n styleUrl: './information-banner.component.scss',\r\n})\r\nexport class InformationBannerComponent {\r\n private readonly sanitize = inject(DomSanitizer);\r\n\r\n severity = input<TInformationBannerSeverity>('neutral');\r\n props = input<InformationBannerProps>({\r\n closable: false,\r\n iconShow: true,\r\n iconSize: 22,\r\n });\r\n\r\n headerTpl = contentChild<TemplateRef<any>>('headerTpl');\r\n contentTpl = contentChild<TemplateRef<any>>('contentTpl');\r\n footerTpl = contentChild<TemplateRef<any>>('footerTpl');\r\n\r\n onClosable = output<void>();\r\n\r\n icon = computed<SafeHtml>(() => {\r\n const p = this.props();\r\n\r\n if (p.iconShow === false) return '';\r\n\r\n const rawSvg = p.iconUri?.trim()\r\n ? p.iconUri\r\n : this.remixSvgBySeverity[this.severity()];\r\n\r\n return this.sanitize.bypassSecurityTrustHtml(rawSvg);\r\n });\r\n\r\n bannerClass = computed(() => `s4y-information-banner--${this.severity()}`);\r\n\r\n // --- Remix Icon SVGs (line) ---\r\n private readonly remixSvgBySeverity: Record<\r\n TInformationBannerSeverity,\r\n string\r\n > = {\r\n neutral: `\r\n <svg viewBox=\"0 0 24 24\" width=\"100%\" height=\"100%\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2Zm0 18a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm-1-9h2v6h-2v-6Zm0-4h2v2h-2V7Z\"/>\r\n </svg>\r\n `,\r\n info: `\r\n <svg viewBox=\"0 0 24 24\" width=\"100%\" height=\"100%\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2Zm0 18a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm-1-9h2v6h-2v-6Zm0-4h2v2h-2V7Z\"/>\r\n </svg>\r\n `,\r\n success: `\r\n <svg viewBox=\"0 0 24 24\" width=\"100%\" height=\"100%\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2Zm0 18a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm3.535-10.95 1.414 1.414-5.657 5.657L7.05 11.879l1.414-1.414 2.828 2.828 4.243-4.243Z\"/>\r\n </svg>\r\n `,\r\n warning: `\r\n <svg viewBox=\"0 0 24 24\" width=\"100%\" height=\"100%\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2Zm0 18a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm-1-5h2v2h-2v-2Zm0-10h2v8h-2V5Z\"/>\r\n </svg>\r\n `,\r\n error: `\r\n <svg viewBox=\"0 0 24 24\" width=\"100%\" height=\"100%\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path d=\"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2Zm0 18a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm2.828-11.657L13.414 9.757 12 8.343 10.586 9.757 9.172 8.343 7.757 9.757 9.172 11.17 7.757 12.586 9.172 14 10.586 12.586 12 14 13.414 12.586 14.828 14l1.415-1.414-1.415-1.415 1.415-1.414-1.415-1.414Z\"/>\r\n </svg>\r\n `,\r\n };\r\n}\r\n","@let model = props();\r\n\r\n<div class=\"s4y-information-banner-container\" [class]=\"bannerClass()\">\r\n <span\r\n class=\"info-banner__icon\"\r\n [style.width.px]=\"model.iconSize ?? 22\"\r\n [style.height.px]=\"model.iconSize ?? 22\"\r\n [innerHTML]=\"icon()\">\r\n </span>\r\n <div class=\"s4y-information-banner__content\">\r\n @let headerTemplate = headerTpl();\r\n\r\n @if (headerTemplate) {\r\n <ng-template *ngTemplateOutlet=\"headerTemplate\"></ng-template>\r\n } @else {\r\n <div class=\"flex align-center justify-between\">\r\n <p class=\"fw-600 small-text-regular\">{{ model.title }}</p>\r\n\r\n @if (model.closable) {\r\n <button type=\"button\" (click)=\"onClosable.emit()\">×</button>\r\n }\r\n </div>\r\n }\r\n\r\n @let contentTemplate = contentTpl();\r\n\r\n @if (contentTemplate) {\r\n <ng-template *ngTemplateOutlet=\"contentTemplate\"></ng-template>\r\n } @else {\r\n <p class=\"small-text-regular gray-7 fw-400\">\r\n {{ model.description }}\r\n </p>\r\n }\r\n\r\n @let footerTemplate = footerTpl();\r\n\r\n @if (footerTemplate) {\r\n <div class=\"s4y-information-banner__footer\">\r\n <ng-template *ngTemplateOutlet=\"footerTemplate\"></ng-template>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","/*\r\n * Public API Surface of s4y-components\r\n */\r\n\r\n// Exporta tudo do index.ts de cada pasta\r\nexport * from './lib/components/dashboard';\r\nexport * from './lib/components/button/button.component';\r\nexport * from './lib/components/forms-kit';\r\nexport * from './lib/directives';\r\nexport * from './lib/components/toast';\r\nexport * from './lib/components/svg';\r\nexport * from './lib/components/drawer/drawer.component';\r\nexport * from './lib/components/avatar/avatar.component';\r\nexport * from './lib/components/table';\r\nexport * from './lib/components/spinner/spinner.component';\r\nexport * from './lib/components/modal';\r\nexport * from './lib/components/modal-confirmation';\r\nexport * from './lib/components/search-bar';\r\nexport * from './lib/components/toggle/toggle.component';\r\nexport * from './lib/components/pagination';\r\nexport * from './lib/components/select/select.component';\r\nexport * from './lib/components/slider/slider.component';\r\nexport * from './lib/components/radio/radio.component';\r\nexport * from './lib/components/tooltip';\r\nexport * from './lib/components/breadcrumb';\r\nexport * from './lib/components/stepper';\r\nexport * from './lib/components/loading-modal';\r\nexport * from './lib/components/checkbox/checkbox.component';\r\nexport * from './lib/components/sidebar-right';\r\nexport * from './lib/components/popover';\r\nexport * from './lib/components/menu';\r\nexport * from './lib/components/image';\r\nexport * from './lib/components/summary-card/summary-card.component';\r\nexport * from './lib/components/dynamic-tooltip/dynamic-tooltip.directive';\r\n\r\n// animation modal\r\nexport * from \"./lib/components/modal/modal.animation\";\r\nexport * from './lib/components/select-multi/select-multi.component';\r\n\r\nexport * from './lib/components/dynamic-dialog';\r\n\r\nexport * from './lib/components/dynamic-loading-global';\r\n\r\nexport * from './lib/components/rating/rating.component';\r\n\r\n\r\nexport * from './lib/components/tag/tag.component';\r\nexport * from './lib/components/confirmation/confirmation.service';\r\nexport * from './lib/components/collapse';\r\nexport * from './lib/components/information-banner/information-banner.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.SvgService","i2","i3.AvatarComponent","i4.SvgComponent","COMPONENTS","i2.InputComponent","i3.LabelComponent","i4.InputSufixComponent","i1.ToastService","i1.TableComponent","map","i1.BreadcrumbService","i3","i1.StepperComponent","filter","catchError"],"mappings":"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"}
|