{"version":3,"file":"seniorsistemas-angular-components-global-search.mjs","sources":["../../projects/angular-components/global-search/src/lib/global-search/components/dropdown/global-search-dropdown-item.component.ts","../../projects/angular-components/global-search/src/lib/global-search/components/dropdown/global-search-dropdown-item.component.html","../../projects/angular-components/global-search/src/lib/global-search/global-search.component.ts","../../projects/angular-components/global-search/src/lib/global-search/global-search.component.html","../../projects/angular-components/global-search/src/lib/global-search/global-search.module.ts","../../projects/angular-components/global-search/src/seniorsistemas-angular-components-global-search.ts"],"sourcesContent":["import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewChild } from '@angular/core';\r\n\r\nimport { GlobalSearchSizeEnum } from '../../types/global-search-size.enum';\r\nimport { ThumbnailComponent } from '@seniorsistemas/angular-components/thumbnail';\r\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n    selector: 's-global-search-dropdown-item',\r\n    templateUrl: './global-search-dropdown-item.component.html',\r\n    styleUrls: ['./global-search-dropdown-item.component.scss'],\r\n    standalone: true,\r\n    imports: [ThumbnailComponent, ButtonComponent, TooltipDirective, NgClass, NgTemplateOutlet],\r\n})\r\nexport class GlobalSearchDropdownItemComponent {\r\n    public static nextId = 0;\r\n\r\n    @Input()\r\n    public id = `s-global-search-dropdown-item-${GlobalSearchDropdownItemComponent.nextId++}`;\r\n\r\n    @Input()\r\n    public primaryLabel?: string;\r\n\r\n    @Input()\r\n    public secondaryEmptyLabel?: string;\r\n\r\n    @Input()\r\n    public tertiaryEmptyLabel?: string;\r\n\r\n    @Input()\r\n    public imageSource?: string;\r\n\r\n    @Input()\r\n    public imageAlt?: string;\r\n\r\n    @Input()\r\n    public iconClass?: string;\r\n\r\n    @Input()\r\n    public secondaryLabel?: string;\r\n\r\n    @Input()\r\n    public tertiaryLabel?: string;\r\n\r\n    @Input()\r\n    public size: GlobalSearchSizeEnum = 'standart';\r\n\r\n    @Input()\r\n    public template: TemplateRef<any> | null = null;\r\n\r\n    @Output()\r\n    public buttonClick = new EventEmitter<void>();\r\n\r\n    @ContentChild(ThumbnailComponent, { static: true })\r\n    public thumbnailComponent: ThumbnailComponent | null = null;\r\n\r\n    @ViewChild(TemplateRef, { static: true })\r\n    public content: TemplateRef<any> | null = null;\r\n\r\n    public isMediumSize(): boolean {\r\n        return this.size === 'medium';\r\n    }\r\n\r\n    public isSmallSize(): boolean {\r\n        return this.size === 'small';\r\n    }\r\n\r\n    public getImageSize(): 'medium' | 'small' {\r\n        return this._isStandardSize() ? 'medium' : 'small';\r\n    }\r\n\r\n    private _isStandardSize(): boolean {\r\n        return this.size === 'standart';\r\n    }\r\n}\r\n","<ng-template>\r\n    <div\r\n        class=\"global-search-dropdown-item\"\r\n        [ngClass]=\"{ 'grid grid-cols-2 gap-2': isSmallSize() }\"\r\n    >\r\n        <ng-content select=\"s-thumbnail\"></ng-content>\r\n\r\n        @if (!thumbnailComponent && (imageSource || iconClass) && !isSmallSize()) {\r\n            <s-thumbnail\r\n                [id]=\"id + '-thumbnail'\"\r\n                [imageSource]=\"imageSource\"\r\n                [imageAlt]=\"imageAlt || primaryLabel\"\r\n                [iconClass]=\"iconClass ?? ''\"\r\n                [size]=\"getImageSize()\"\r\n            ></s-thumbnail>\r\n        }\r\n\r\n        <div\r\n            class=\"global-search-item__container ml-[10px] only:ml-0 w-full whitespace-nowrap max-md:whitespace-normal overflow-hidden text-ellipsis {{ !isSmallSize() ? 'w-[60%]' : '' }}\"\r\n        >\r\n            <div #titleTemplate>\r\n                <ng-content select=\"[titleTemplate]\"></ng-content>\r\n            </div>\r\n            @if (!titleTemplate.children.length) {\r\n                <s-button\r\n                    styleClass=\"no-padding\"\r\n                    [id]=\"id + '-title'\"\r\n                    priority=\"link\"\r\n                    [sTooltip]=\"primaryLabel\"\r\n                    tooltipPosition=\"right\"\r\n                    [showDelay]=\"0\"\r\n                    [escape]=\"true\"\r\n                    [label]=\"primaryLabel\"\r\n                    size=\"small\"\r\n                    (clicked)=\"buttonClick.emit()\"\r\n                >\r\n                </s-button>\r\n            }\r\n\r\n            <div #labelTemplate>\r\n                <ng-content select=\"[labelTemplate]\"></ng-content>\r\n            </div>\r\n\r\n            @if (!labelTemplate.children.length) {\r\n                <span\r\n                    [id]=\"id + '-label'\"\r\n                    [ngClass]=\"{\r\n                        'text-right pt-[2px] pl-[15px]': isSmallSize(),\r\n                        'italic': !secondaryLabel,\r\n                    }\"\r\n                    class=\"text-grayscale-90 block whitespace-nowrap max-md:whitespace-normal overflow-hidden text-ellipsis\"\r\n                    [sTooltip]=\"secondaryLabel\"\r\n                    tooltipPosition=\"top\"\r\n                    [showDelay]=\"500\"\r\n                    [escape]=\"true\"\r\n                    >{{ secondaryLabel ? secondaryLabel : secondaryEmptyLabel }}</span\r\n                >\r\n            }\r\n\r\n            <div #descriptionTemplate>\r\n                <ng-content select=\"[descriptionTemplate]\"></ng-content>\r\n            </div>\r\n\r\n            @if (!descriptionTemplate.children.length && !isMediumSize() && !isSmallSize()) {\r\n                <span\r\n                    [id]=\"id + '-description'\"\r\n                    class=\"text-grayscale-50 block whitespace-nowrap max-md:whitespace-normal overflow-hidden text-ellipsis\"\r\n                    [ngClass]=\"{ 'italic': !secondaryLabel }\"\r\n                    [sTooltip]=\"tertiaryLabel\"\r\n                    tooltipPosition=\"top\"\r\n                    [showDelay]=\"500\"\r\n                    [escape]=\"true\"\r\n                >\r\n                    {{ tertiaryLabel ? tertiaryLabel : tertiaryEmptyLabel }}\r\n                </span>\r\n            }\r\n        </div>\r\n        @if (!isSmallSize()) {\r\n            <div class=\"w-[40%] flex flex-col text-right\">\r\n                <ng-container *ngTemplateOutlet=\"template\"></ng-container>\r\n            </div>\r\n        }\r\n    </div>\r\n</ng-template>\r\n","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ContentChildren,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Input,\r\n    Output,\r\n    QueryList,\r\n    ViewChild,\r\n    inject,\r\n} from '@angular/core';\r\n\r\nimport { GlobalSearchDropdownItemComponent } from './components/dropdown/global-search-dropdown-item.component';\r\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { InputTextDirective } from '@seniorsistemas/angular-components/input-text';\r\nimport { LoadingStateDirective } from '@seniorsistemas/angular-components/loading-state';\r\nimport { NgTemplateOutlet, NgClass } from '@angular/common';\r\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\r\nimport { EmptyStateComponent } from '@seniorsistemas/angular-components/empty-state';\r\n\r\n/**\r\n * @description Componente de busca global com input, dropdown de resultados, estado\r\n * de carregamento, empty state e suporte a itens customizáveis via `GlobalSearchDropdownItemComponent`.\r\n *\r\n * @example\r\n * ```html\r\n * <s-global-search\r\n *   totalItensLabel=\"resultados\"\r\n *   showMoreLabel=\"Ver mais\"\r\n *   [totalElements]=\"total\"\r\n *   (search)=\"onBusca($event)\" />\r\n * ```\r\n *\r\n * @category Structure\r\n */\r\n@Component({\r\n    selector: 's-global-search',\r\n    templateUrl: './global-search.component.html',\r\n    styleUrls: ['./global-search.component.scss'],\r\n    animations: [\r\n        trigger('expandableContent', [\r\n            state('*', style({ height: '0' })),\r\n            state('false', style({ height: '0' })),\r\n            state('true', style({ height: '*' })),\r\n            transition('* => true', animate('200ms ease-out')),\r\n            transition('false <=> true', animate('200ms ease-out')),\r\n        ]),\r\n    ],\r\n    standalone: true,\r\n    imports: [\r\n        FormsModule,\r\n        InputTextDirective,\r\n        LoadingStateDirective,\r\n        NgTemplateOutlet,\r\n        ButtonComponent,\r\n        EmptyStateComponent,\r\n        NgClass,\r\n    ],\r\n})\r\nexport class GlobalSearchComponent {\r\n    private readonly _cdr = inject(ChangeDetectorRef);\r\n\r\n    public static nextId = 0;\r\n\r\n    @ViewChild('globalSearch', { static: false })\r\n    public globalSearch: ElementRef | null = null;\r\n\r\n    /** @description Identificador único do componente no DOM. Gerado automaticamente se não informado. */\r\n    @Input()\r\n    public id = `s-global-search-${GlobalSearchDropdownItemComponent.nextId++}`;\r\n\r\n    /** @description Tempo de debounce em ms antes de emitir o evento de busca. @default 500 */\r\n    @Input()\r\n    public delay = 500;\r\n\r\n    /** @description Label que acompanha o total de resultados. Campo obrigatório. */\r\n    @Input({ required: true })\r\n    public totalItensLabel!: string;\r\n\r\n    /** @description Rótulo do link para exibir mais resultados. Campo obrigatório. */\r\n    @Input({ required: true })\r\n    public showMoreLabel!: string;\r\n\r\n    /** @description Placeholder do input de busca. */\r\n    @Input()\r\n    public placeholder?: string;\r\n\r\n    /** @description Exibe indicador de carregamento no dropdown. @default false */\r\n    @Input()\r\n    public isLoading = false;\r\n\r\n    /** @description Número total de resultados encontrados. */\r\n    @Input()\r\n    public totalElements?: number;\r\n\r\n    /** @description Título do empty state quando não há resultados. */\r\n    @Input()\r\n    public emptyTitle?: string;\r\n\r\n    /** @description Descrição do empty state exibida abaixo do título. */\r\n    @Input()\r\n    public emptyDescription?: string;\r\n\r\n    /** @description Classe do ícone exibido no empty state. */\r\n    @Input()\r\n    public emptyIcon?: string;\r\n\r\n    /** @description Exibe o rodapé com o link \"ver mais\" e contagem de resultados. @default true */\r\n    @Input() showFooter = true;\r\n\r\n    @ContentChildren(GlobalSearchDropdownItemComponent)\r\n    public dropdownItens: QueryList<GlobalSearchDropdownItemComponent> | null = null;\r\n\r\n    /** @description Emitido ao digitar no campo de busca, com o valor atual da pesquisa. */\r\n    @Output()\r\n    public searched = new EventEmitter<string>();\r\n\r\n    /** @description Emitido quando o campo de busca ganha ou perde foco (`true` = focado). */\r\n    @Output()\r\n    public focused = new EventEmitter<boolean>();\r\n\r\n    /** @description Emitido ao clicar no link para exibir mais resultados. */\r\n    @Output()\r\n    public moreShown = new EventEmitter<void>();\r\n\r\n    public search: string | null = null;\r\n    public wasSearched = false;\r\n    public isModalLoading = false;\r\n    public expanded = true;\r\n\r\n    public onChange() {\r\n        const search = this.search;\r\n        setTimeout(() => {\r\n            if (this.search === search) {\r\n                this._canShowGlobalSearchActive();\r\n                this.searched.emit(this.search ?? '');\r\n            }\r\n        }, this.delay);\r\n    }\r\n\r\n    public focusIn() {\r\n        this.focused.emit(true);\r\n    }\r\n\r\n    public focusOut() {\r\n        this.focused.emit(false);\r\n    }\r\n\r\n    public showMore() {\r\n        this.moreShown.emit();\r\n    }\r\n\r\n    public close() {\r\n        this.search = null;\r\n        this.wasSearched = false;\r\n        this.dropdownItens = null;\r\n        this.isModalLoading = false;\r\n        this._removeActiveClassByGlobalSearch();\r\n    }\r\n\r\n    private _removeActiveClassByGlobalSearch() {\r\n        if (isNullOrUndefined(this.globalSearch)) return;\r\n\r\n        this.globalSearch.nativeElement.classList.remove('global-search__input-active');\r\n    }\r\n\r\n    private _canShowGlobalSearchActive() {\r\n        this.wasSearched = !!this.search;\r\n        if (this.search) {\r\n            if (isNullOrUndefined(this.globalSearch)) return;\r\n\r\n            this.globalSearch.nativeElement.classList.add('global-search__input-active');\r\n        } else {\r\n            this._removeActiveClassByGlobalSearch();\r\n            this.close();\r\n        }\r\n        this._cdr.detectChanges();\r\n    }\r\n}\r\n","<div class=\"group flex max-w-full\">\r\n    <input\r\n        #globalSearch\r\n        sInputText\r\n        class=\"global-search__input rounded-tl-[20px] rounded-bl-[20px] rounded-tr-none rounded-br-none border border-solid border-grayscale-30 border-r-0 cursor-pointer h-[25px] min-h-[25px] pl-[15px] text-sm font-open-sans outline-none bg-grayscale-0 transition-all duration-300 w-[136px]\"\r\n        [(ngModel)]=\"search\"\r\n        (ngModelChange)=\"onChange()\"\r\n        [placeholder]=\"placeholder\"\r\n        (focus)=\"focusIn()\"\r\n        (blur)=\"focusOut()\"\r\n    />\r\n    <span class=\"global-search__span items-center bg-transparent border border-solid border-grayscale-30 border-l-0 rounded-tr-[20px] rounded-br-[20px] flex h-[25px] justify-center px-2 transition-all duration-300\">\r\n        <em class=\"fas fa-search\"></em>\r\n    </span>\r\n\r\n    @if (wasSearched) {\r\n        <div class=\"bg-grayscale-0 rounded-[5px] shadow-[0_2px_8px_0_rgba(0,0,0,0.4)] mt-[60px] min-h-[50px] absolute w-[500px] z-[6]\">\r\n            <div\r\n                *sLoadingState=\"isLoading && !isModalLoading\"\r\n                class=\"global-search__loader\"\r\n            >\r\n                @if ((dropdownItens && dropdownItens.length > 0) || isLoading) {\r\n                    <div class=\"min-h-[50px] w-full\">\r\n                        @if (dropdownItens && dropdownItens.length > 0) {\r\n                            <div>\r\n                                <div class=\"border-b border-solid border-grayscale-30 text-grayscale-90 font-semibold h-[50px] p-[15px] flex items-center justify-between\">\r\n                                    <span class=\"m-0 p-0\">{{ totalItensLabel }}</span>\r\n                                    <span\r\n                                        class=\"m-0 p-0 cursor-pointer text-right\"\r\n                                        (click)=\"close()\"\r\n                                    >\r\n                                        <em class=\"fas fa-times\"></em>\r\n                                    </span>\r\n                                </div>\r\n                                <div\r\n                                    class=\"max-h-[510px] overflow-auto\"\r\n                                    [@expandableContent]=\"expanded\"\r\n                                >\r\n                                    @for (item of dropdownItens; track item.id) {\r\n                                        <div\r\n                                            class=\"s-object-card-field hover:bg-[#dbe0e4]\"\r\n                                        >\r\n                                            <ng-container *ngTemplateOutlet=\"item.content\"></ng-container>\r\n                                        </div>\r\n                                    }\r\n                                </div>\r\n\r\n                                @if (showFooter) {\r\n                                    <div class=\"border-t border-solid border-grayscale-30 h-[50px]\">\r\n                                        <s-button\r\n                                            class=\"flex flex-col\"\r\n                                            (click)=\"showMore()\"\r\n                                            priority=\"link\"\r\n                                        >\r\n                                            {{ showMoreLabel }}\r\n                                        </s-button>\r\n                                    </div>\r\n                                }\r\n                            </div>\r\n                        }\r\n                    </div>\r\n                }\r\n\r\n                @if ((!dropdownItens || !dropdownItens.length) && !isLoading) {\r\n                    <s-empty-state\r\n                        [title]=\"emptyTitle ?? ''\"\r\n                        [description]=\"emptyDescription\"\r\n                        ngClass=\"global-search__empty-state--icon\"\r\n                        [iconClass]=\"emptyIcon ? emptyIcon : 'fas fa-search'\"\r\n                    >\r\n                    </s-empty-state>\r\n                }\r\n            </div>\r\n        </div>\r\n    }\r\n\r\n    @if (wasSearched) {\r\n        <div\r\n            class=\"bg-[rgba(0,0,0,0.4)] cursor-pointer h-[calc(100vh-70px)] left-0 mt-[50px] absolute w-full z-[5]\"\r\n            (click)=\"close()\"\r\n        ></div>\r\n    }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\r\nimport { EmptyStateModule } from '@seniorsistemas/angular-components/empty-state';\r\nimport { LoadingStateModule } from '@seniorsistemas/angular-components/loading-state';\r\nimport { ThumbnailModule } from '@seniorsistemas/angular-components/thumbnail';\r\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\r\nimport { GlobalSearchDropdownItemComponent } from './components/dropdown/global-search-dropdown-item.component';\r\nimport { GlobalSearchComponent } from './global-search.component';\r\n\r\n@NgModule({\r\n    imports: [\r\n        TooltipModule,\r\n        ThumbnailModule,\r\n        ButtonModule,\r\n        LoadingStateModule,\r\n        EmptyStateModule,\r\n        GlobalSearchComponent,\r\n        GlobalSearchDropdownItemComponent,\r\n    ],\r\n    exports: [\r\n        GlobalSearchComponent,\r\n        GlobalSearchDropdownItemComponent,\r\n        TooltipModule,\r\n        ThumbnailModule,\r\n        ButtonModule,\r\n        LoadingStateModule,\r\n        EmptyStateModule,\r\n    ],\r\n})\r\nexport class GlobalSearchModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}