s4y-ui 5.1.2 → 5.2.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.
@@ -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/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/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 } from '@angular/core';\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})\r\nexport class InputComponent {}\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 &times;\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()\">&times;</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 input,\r\n output,\r\n signal,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { SpinnerComponent } from '../spinner/spinner.component';\r\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\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\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, CdkScrollableModule],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TableComponent {\r\n headers = input<ITableColumn[]>([]);\r\n data = input<any[]>([]);\r\n\r\n customSort = input<boolean>(false);\r\n\r\n sortFunction = output<ICustomSort>();\r\n\r\n sortField = input<string | null>(null);\r\n sortOrder = input<ISortDirection>('none');\r\n\r\n sortedData = computed(() => {\r\n let originalData: any[] = [...this.data()];\r\n const sortBy = this.sortBy();\r\n const direction = this.sortDirection();\r\n\r\n if (this.customSort()) return originalData;\r\n\r\n if (!originalData.length || !sortBy) 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 if (direction === 'none') return originalData;\r\n\r\n let copiedData = [...this.data()];\r\n\r\n return copiedData.sort((a, b) => {\r\n const valueA = a[sortBy];\r\n const valueB = b[sortBy];\r\n\r\n if (typeof valueA === 'string' && typeof valueB === 'string') {\r\n return direction === 'asc'\r\n ? valueA.localeCompare(valueB)\r\n : valueB.localeCompare(valueA);\r\n }\r\n\r\n if (typeof valueA === 'number' && typeof valueB === 'number') {\r\n return direction === 'asc' ? valueA - valueB : valueB - valueA;\r\n }\r\n\r\n return 0;\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 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 constructor() {}\r\n\r\n ngAfterViewInit() {}\r\n}\r\n","<div class=\"s4y-table-container\" [ngStyle]=\"tableStyle()\" cdkScrollable>\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 @for (item of sortedData(); track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"rowTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item, idx: $index }\"\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</ng-template>\r\n","import {\r\n AfterContentInit,\r\n AfterViewInit,\r\n computed,\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 { ISortDirection, TableComponent } from '../table.component';\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 private oldSortableColumnName: string | undefined;\r\n private 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 ) {}\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.s4ySortable()) return;\r\n\r\n this.insertSortIcon();\r\n this.selectedInitialSort();\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 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\r\n if (this.oldSortableColumnName !== sortByColumnName) {\r\n // reseta para o asc, ao mudar de coluna\r\n this.newDirection.set('asc');\r\n }\r\n\r\n this.clearHoverStyleTH();\r\n\r\n this.oldThElement = this.currentThElement;\r\n this.table.currentThElement = this.hostThElement;\r\n\r\n if (this.customSort) {\r\n this.customSortable();\r\n } else {\r\n this.autoSortable(sortByColumnName);\r\n }\r\n\r\n this.emitSortDirection();\r\n\r\n this.handleStyleTH();\r\n this.handleDirectionIcon();\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 customSort() {\r\n return this.table.customSort();\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 customSortable() {\r\n this.table.sortFunction.emit({\r\n key: this.s4ySortableColumnName()!,\r\n value: this.newDirection(),\r\n });\r\n }\r\n\r\n private setStyleInContainerIconElements(container: HTMLElement) {\r\n const style = `\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\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 if (this.oldThElement) {\r\n this.removeActiveStyle(this.oldThElement);\r\n }\r\n\r\n this.setActiveStyle(this.hostThElement);\r\n\r\n if (this.newDirection() == 'none') {\r\n this.removeActiveStyle(this.hostThElement);\r\n }\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 ascIcon() {\r\n return '<svg style=\"height: 1.8rem; width: 1.8rem;\" 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.8rem; width: 1.8rem;\" 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 {\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>&times;</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\n\r\n@Component({\r\n selector: 's4y-select',\r\n imports: [NgIf, CommonModule, SpinnerComponent, ClickOutsideDirective, FormsModule],\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\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\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 // this.transformedOptions = this.includeSelectedProperty();\r\n }\r\n\r\n writeValue(value: any): void {\r\n // this.transformedOptions = this.includeSelectedProperty();\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 this.isOpened = false;\r\n this.onTouched();\r\n\r\n const originalOption = selectedOption?.option ?? selectedOption;\r\n\r\n this.onChange(originalOption);\r\n }\r\n\r\n\r\n private includeSelectedProperty() {\r\n return this.options().map((option) => ({\r\n option: option,\r\n selected: false,\r\n }));\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>\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 @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 </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, forwardRef, input } from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n RadioControlValueAccessor,\r\n} from '@angular/forms';\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 implements ControlValueAccessor {\r\n label = input<string>();\r\n name = input<string>();\r\n id = input<string>();\r\n radioValue = input.required<string>();\r\n\r\n disabled: boolean = false;\r\n\r\n value: string | null = null;\r\n\r\n onChange = (value: any) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: any): void {\r\n this.value = 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(e: Event) {\r\n const value = (e.target as HTMLInputElement).value;\r\n\r\n this.value = value;\r\n\r\n this.onChange(value);\r\n this.onTouched();\r\n }\r\n}\r\n","<label class=\"s4y-radio\" [class.disabled]=\"disabled\">\r\n <input\r\n [value]=\"radioValue()\"\r\n [disabled]=\"disabled\"\r\n [id]=\"id()\"\r\n [name]=\"name()\"\r\n type=\"radio\"\r\n (input)=\"onInput($event)\"\r\n [checked]=\"value == radioValue()\"\r\n />\r\n @if (label()) {\r\n <span class=\"s4y-radio-label\">\r\n {{ label() }}\r\n </span>\r\n }\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 '[attr.aria-checked]': 'checked',\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';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n} from '@angular/core';\nimport { DynamicTooltipComponent } from './dynamic-tooltip.component';\n\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';\n\n@Directive({\n selector: '[s4yDynamicTooltip]',\n})\nexport class DynamicTooltipDirective {\n private readonly overlay = inject(Overlay);\n private readonly elRef = inject(ElementRef<HTMLElement>);\n\n overlayRef?: OverlayRef;\n\n tooltipContent = input.required<string>({\n alias: 's4yDynamicTooltip',\n });\n\n placement = input<TooltipPlacement>('top');\n\n private tooltipPortal = new ComponentPortal(DynamicTooltipComponent);\n\n private onOverlayEnter?: () => void;\n private onOverlayLeave?: (e: MouseEvent) => void;\n\n constructor() {\n console.log(this.host);\n }\n\n get host() {\n return this.elRef.nativeElement as ElementRef;\n }\n\n @HostListener('mouseenter')\n shown() {\n this.overlayRef?.dispose();\n this.overlayRef = this.createOverlay();\n\n const compRef = this.overlayRef.attach(this.tooltipPortal);\n compRef.instance.text = this.tooltipContent();\n this.overlayRef.updatePosition();\n\n this.bindOverlayHoverGuards();\n }\n\n @HostListener('mouseleave', ['$event'])\n hide(e: MouseEvent) {\n // Se o mouse saiu do host indo PARA o overlay, não fecha\n const next = e.relatedTarget as Node | null;\n if (next && this.overlayRef?.overlayElement.contains(next)) return;\n\n this.dispose();\n }\n\n private bindOverlayHoverGuards() {\n if (!this.overlayRef) return;\n\n const overlayEl = this.overlayRef.overlayElement;\n\n // remove listeners antigos (se existirem)\n this.unbindOverlayHoverGuards();\n\n this.onOverlayEnter = () => {\n // não faz nada, apenas impede fechamento “por acidente”\n };\n\n this.onOverlayLeave = (e: MouseEvent) => {\n // Se saiu do overlay indo PARA o host, não fecha\n const next = e.relatedTarget as Node | null;\n if (next && this.elRef.nativeElement.contains(next)) return;\n\n this.dispose();\n };\n\n overlayEl.addEventListener('mouseenter', this.onOverlayEnter);\n overlayEl.addEventListener('mouseleave', this.onOverlayLeave);\n }\n\n private unbindOverlayHoverGuards() {\n if (!this.overlayRef) return;\n const overlayEl = this.overlayRef.overlayElement;\n\n if (this.onOverlayEnter)\n overlayEl.removeEventListener('mouseenter', this.onOverlayEnter);\n if (this.onOverlayLeave)\n overlayEl.removeEventListener('mouseleave', this.onOverlayLeave);\n\n this.onOverlayEnter = undefined;\n this.onOverlayLeave = undefined;\n }\n\n private createOverlay(): OverlayRef {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elRef)\n .withFlexibleDimensions(false)\n .withPush(true)\n .withViewportMargin(8)\n .withPositions(this.getPositionsByPlacement(this.placement()));\n\n return this.overlay.create({\n hasBackdrop: false,\n disposeOnNavigation: true,\n scrollStrategy: this.overlay.scrollStrategies.close(),\n positionStrategy,\n panelClass: 's4y-tooltip-panel',\n });\n }\n\n private getPositionsByPlacement(p: TooltipPlacement): ConnectedPosition[] {\n const gap = 8;\n\n const map: Record<TooltipPlacement, ConnectedPosition[]> = {\n top: [\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -gap,\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: gap,\n },\n ],\n bottom: [\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: gap,\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -gap,\n },\n ],\n left: [\n {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -gap,\n },\n {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: gap,\n },\n ],\n right: [\n {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: gap,\n },\n {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -gap,\n },\n ],\n };\n\n return map[p];\n }\n\n private dispose() {\n this.unbindOverlayHoverGuards();\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n}\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\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","// 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 console.log();\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 &times;\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 const id = crypto.randomUUID();\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\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\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","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","/*\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\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"],"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/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/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 } from '@angular/core';\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})\r\nexport class InputComponent {}\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 &times;\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()\">&times;</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 input,\r\n output,\r\n signal,\r\n TemplateRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { SpinnerComponent } from '../spinner/spinner.component';\r\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\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\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, CdkScrollableModule],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss',\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TableComponent {\r\n headers = input<ITableColumn[]>([]);\r\n data = input<any[]>([]);\r\n\r\n customSort = input<boolean>(false);\r\n\r\n sortFunction = output<ICustomSort>();\r\n\r\n sortField = input<string | null>(null);\r\n sortOrder = input<ISortDirection>('none');\r\n\r\n sortedData = computed(() => {\r\n let originalData: any[] = [...this.data()];\r\n const sortBy = this.sortBy();\r\n const direction = this.sortDirection();\r\n\r\n if (this.customSort()) return originalData;\r\n\r\n if (!originalData.length || !sortBy) 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 if (direction === 'none') return originalData;\r\n\r\n let copiedData = [...this.data()];\r\n\r\n return copiedData.sort((a, b) => {\r\n const valueA = a[sortBy];\r\n const valueB = b[sortBy];\r\n\r\n if (typeof valueA === 'string' && typeof valueB === 'string') {\r\n return direction === 'asc'\r\n ? valueA.localeCompare(valueB)\r\n : valueB.localeCompare(valueA);\r\n }\r\n\r\n if (typeof valueA === 'number' && typeof valueB === 'number') {\r\n return direction === 'asc' ? valueA - valueB : valueB - valueA;\r\n }\r\n\r\n return 0;\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 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 constructor() {}\r\n\r\n ngAfterViewInit() {}\r\n}\r\n","<div class=\"s4y-table-container\" [ngStyle]=\"tableStyle()\" cdkScrollable>\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 @for (item of sortedData(); track $index) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"rowTemplate\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item, idx: $index }\"\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</ng-template>\r\n","import {\r\n AfterContentInit,\r\n AfterViewInit,\r\n computed,\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 { ISortDirection, TableComponent } from '../table.component';\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 private oldSortableColumnName: string | undefined;\r\n private 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 ) {}\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.s4ySortable()) return;\r\n\r\n this.insertSortIcon();\r\n this.selectedInitialSort();\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 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\r\n if (this.oldSortableColumnName !== sortByColumnName) {\r\n // reseta para o asc, ao mudar de coluna\r\n this.newDirection.set('asc');\r\n }\r\n\r\n this.clearHoverStyleTH();\r\n\r\n this.oldThElement = this.currentThElement;\r\n this.table.currentThElement = this.hostThElement;\r\n\r\n if (this.customSort) {\r\n this.customSortable();\r\n } else {\r\n this.autoSortable(sortByColumnName);\r\n }\r\n\r\n this.emitSortDirection();\r\n\r\n this.handleStyleTH();\r\n this.handleDirectionIcon();\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 customSort() {\r\n return this.table.customSort();\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 customSortable() {\r\n this.table.sortFunction.emit({\r\n key: this.s4ySortableColumnName()!,\r\n value: this.newDirection(),\r\n });\r\n }\r\n\r\n private setStyleInContainerIconElements(container: HTMLElement) {\r\n const style = `\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\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 if (this.oldThElement) {\r\n this.removeActiveStyle(this.oldThElement);\r\n }\r\n\r\n this.setActiveStyle(this.hostThElement);\r\n\r\n if (this.newDirection() == 'none') {\r\n this.removeActiveStyle(this.hostThElement);\r\n }\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 ascIcon() {\r\n return '<svg style=\"height: 1.8rem; width: 1.8rem;\" 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.8rem; width: 1.8rem;\" 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 {\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>&times;</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\n\r\n@Component({\r\n selector: 's4y-select',\r\n imports: [NgIf, CommonModule, SpinnerComponent, ClickOutsideDirective, FormsModule],\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\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\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 // this.transformedOptions = this.includeSelectedProperty();\r\n }\r\n\r\n writeValue(value: any): void {\r\n // this.transformedOptions = this.includeSelectedProperty();\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 this.isOpened = false;\r\n this.onTouched();\r\n\r\n const originalOption = selectedOption?.option ?? selectedOption;\r\n\r\n this.onChange(originalOption);\r\n }\r\n\r\n\r\n private includeSelectedProperty() {\r\n return this.options().map((option) => ({\r\n option: option,\r\n selected: false,\r\n }));\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>\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 @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 </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, forwardRef, input } from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n NG_VALUE_ACCESSOR,\r\n RadioControlValueAccessor,\r\n} from '@angular/forms';\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 implements ControlValueAccessor {\r\n label = input<string>();\r\n name = input<string>();\r\n id = input<string>();\r\n radioValue = input.required<string>();\r\n\r\n disabled: boolean = false;\r\n\r\n value: string | null = null;\r\n\r\n onChange = (value: any) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: any): void {\r\n this.value = 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(e: Event) {\r\n const value = (e.target as HTMLInputElement).value;\r\n\r\n this.value = value;\r\n\r\n this.onChange(value);\r\n this.onTouched();\r\n }\r\n}\r\n","<label class=\"s4y-radio\" [class.disabled]=\"disabled\">\r\n <input\r\n [value]=\"radioValue()\"\r\n [disabled]=\"disabled\"\r\n [id]=\"id()\"\r\n [name]=\"name()\"\r\n type=\"radio\"\r\n (input)=\"onInput($event)\"\r\n [checked]=\"value == radioValue()\"\r\n />\r\n @if (label()) {\r\n <span class=\"s4y-radio-label\">\r\n {{ label() }}\r\n </span>\r\n }\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 '[attr.aria-checked]': 'checked',\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';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n} from '@angular/core';\nimport { DynamicTooltipComponent } from './dynamic-tooltip.component';\n\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';\n\n@Directive({\n selector: '[s4yDynamicTooltip]',\n})\nexport class DynamicTooltipDirective {\n private readonly overlay = inject(Overlay);\n private readonly elRef = inject(ElementRef<HTMLElement>);\n\n overlayRef?: OverlayRef;\n\n tooltipContent = input.required<string>({\n alias: 's4yDynamicTooltip',\n });\n\n placement = input<TooltipPlacement>('top');\n\n private tooltipPortal = new ComponentPortal(DynamicTooltipComponent);\n\n private onOverlayEnter?: () => void;\n private onOverlayLeave?: (e: MouseEvent) => void;\n\n constructor() {\n console.log(this.host);\n }\n\n get host() {\n return this.elRef.nativeElement as ElementRef;\n }\n\n @HostListener('mouseenter')\n shown() {\n this.overlayRef?.dispose();\n this.overlayRef = this.createOverlay();\n\n const compRef = this.overlayRef.attach(this.tooltipPortal);\n compRef.instance.text = this.tooltipContent();\n this.overlayRef.updatePosition();\n\n this.bindOverlayHoverGuards();\n }\n\n @HostListener('mouseleave', ['$event'])\n hide(e: MouseEvent) {\n // Se o mouse saiu do host indo PARA o overlay, não fecha\n const next = e.relatedTarget as Node | null;\n if (next && this.overlayRef?.overlayElement.contains(next)) return;\n\n this.dispose();\n }\n\n private bindOverlayHoverGuards() {\n if (!this.overlayRef) return;\n\n const overlayEl = this.overlayRef.overlayElement;\n\n // remove listeners antigos (se existirem)\n this.unbindOverlayHoverGuards();\n\n this.onOverlayEnter = () => {\n // não faz nada, apenas impede fechamento “por acidente”\n };\n\n this.onOverlayLeave = (e: MouseEvent) => {\n // Se saiu do overlay indo PARA o host, não fecha\n const next = e.relatedTarget as Node | null;\n if (next && this.elRef.nativeElement.contains(next)) return;\n\n this.dispose();\n };\n\n overlayEl.addEventListener('mouseenter', this.onOverlayEnter);\n overlayEl.addEventListener('mouseleave', this.onOverlayLeave);\n }\n\n private unbindOverlayHoverGuards() {\n if (!this.overlayRef) return;\n const overlayEl = this.overlayRef.overlayElement;\n\n if (this.onOverlayEnter)\n overlayEl.removeEventListener('mouseenter', this.onOverlayEnter);\n if (this.onOverlayLeave)\n overlayEl.removeEventListener('mouseleave', this.onOverlayLeave);\n\n this.onOverlayEnter = undefined;\n this.onOverlayLeave = undefined;\n }\n\n private createOverlay(): OverlayRef {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elRef)\n .withFlexibleDimensions(false)\n .withPush(true)\n .withViewportMargin(8)\n .withPositions(this.getPositionsByPlacement(this.placement()));\n\n return this.overlay.create({\n hasBackdrop: false,\n disposeOnNavigation: true,\n scrollStrategy: this.overlay.scrollStrategies.close(),\n positionStrategy,\n panelClass: 's4y-tooltip-panel',\n });\n }\n\n private getPositionsByPlacement(p: TooltipPlacement): ConnectedPosition[] {\n const gap = 8;\n\n const map: Record<TooltipPlacement, ConnectedPosition[]> = {\n top: [\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -gap,\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: gap,\n },\n ],\n bottom: [\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: gap,\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -gap,\n },\n ],\n left: [\n {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -gap,\n },\n {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: gap,\n },\n ],\n right: [\n {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: gap,\n },\n {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -gap,\n },\n ],\n };\n\n return map[p];\n }\n\n private dispose() {\n this.unbindOverlayHoverGuards();\n this.overlayRef?.dispose();\n this.overlayRef = undefined;\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n}\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\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","// 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 console.log();\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 &times;\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 const id = crypto.randomUUID();\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\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\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","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","/*\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\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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"}