{"version":3,"file":"catrx-ui-on-demand-filter.mjs","sources":["../../../../projects/catrx/ui/on-demand-filter/src/factory/filter-options.factory.ts","../../../../projects/catrx/ui/on-demand-filter/src/selected-options/selected-options.component.ts","../../../../projects/catrx/ui/on-demand-filter/src/selected-options/selected-options.directive.ts","../../../../projects/catrx/ui/on-demand-filter/src/trigger/trigger.component.ts","../../../../projects/catrx/ui/on-demand-filter/src/trigger/trigger.component.html","../../../../projects/catrx/ui/on-demand-filter/src/trigger/trigger.directive.ts","../../../../projects/catrx/ui/on-demand-filter/src/cat-on-demand-filter.module.ts","../../../../projects/catrx/ui/on-demand-filter/src/cat-on-demand-filter.service.ts","../../../../projects/catrx/ui/on-demand-filter/catrx-ui-on-demand-filter.ts"],"sourcesContent":["import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { FilterConfig, SelectedOptions } from './filter-options.types';\nimport { CatFormService, FormFactory } from '@catrx/ui/form';\nimport { signal } from '@angular/core';\n\nexport class FilterOptionsFactory<PayloadType = any> {\n  constructor(private formService: CatFormService) {}\n\n  private config: FilterConfig<PayloadType> = {\n    options: [],\n    selectedOptions: new BehaviorSubject<SelectedOptions[]>([]),\n    submit: signal(null)\n  };\n\n  public setOption(\n    builder: (fieldBuilder: FormFactory<any>) => FormFactory<any>,\n    icon?: string\n  ) {\n    this.config.options.push({\n      icon,\n      formBuilder: builder(this.formService.build()),\n    });\n    return this;\n  }\n\n  public autofill(data: any) {\n    this.config.autofill = data;\n    return this;\n  }\n\n  public onChange(filter: (filter: PayloadType) => void) {\n    this.config.onChange = filter;\n    return this;\n  }\n\n  public onSubmit(filter: (filter: PayloadType) => void) {\n    this.config.onSubmit = filter;\n    return this;\n  }\n\n  public generate() {\n    return this.config;\n  }\n}\n","import { Component, Input, WritableSignal } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { SelectedOptions } from '../factory/filter-options.types';\n\n@Component({\n  template: `\n    <div class=\"cat-on-demand-filter-selected-options-content animate__animated animate__fadeIn\">\n      <button\n        *ngIf=\"(selectedOptions$ | async)?.length > 0\"\n        type=\"button\"\n        class=\"btn-clear\"\n        catTooltip=\"Limpar Filtro\"\n        (click)=\"selectedOptions$.next([])\">\n        <i class=\"fa-solid fa-filter-circle-xmark\"></i>\n      </button>\n\n      <div\n        class=\"option-content animate__animated animate__fadeIn\"\n        *ngFor=\"let option of selectedOptions$ | async; let i = index\">\n        <span class=\"label\">\n          <i *ngIf=\"option.icon\" [class]=\"option.icon\"></i>\n          {{ option.label }}\n        </span>\n        <span class=\"comparator\"> = </span>\n        <span class=\"value\">{{ option.previewValue }}</span>\n        <span class=\"btn-remove\" catTooltip=\"Remover Filtro\" (click)=\"remove(i)\">\n          <i class=\"fa-solid fa-xmark\"></i>\n        </span>\n      </div>\n\n      <button\n        *ngIf=\"(selectedOptions$ | async)?.length > 0 && submit()\"\n        type=\"button\"\n        class=\"btn-submit\"\n        catTooltip=\"Buscar\"\n        (click)=\"(submit())()\">\n        <i class=\"fa-solid fa-magnifying-glass\"></i>\n      </button>\n    </div>\n  `\n})\nexport class SelectedOptionsComponent {\n  @Input() selectedOptions$: BehaviorSubject<SelectedOptions[]>;\n  @Input() submit?: WritableSignal<() => void>;\n\n  remove(index: number) {\n    const selectedOptions: SelectedOptions[] = Object.assign(\n      this.selectedOptions$.getValue()\n    );\n    selectedOptions.splice(index, 1);\n    this.selectedOptions$.next(selectedOptions);\n  }\n}\n","import {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  EmbeddedViewRef,\n  Injector,\n  Input,\n  OnInit,\n} from '@angular/core';\nimport { FilterConfig } from '../factory/filter-options.types';\nimport { SelectedOptionsComponent } from './selected-options.component';\n\n@Directive({\n  selector: 'div[catOnDemandFilterSelectedOptions]',\n})\nexport class SelectedOptionsDirective implements OnInit {\n  @Input() catOnDemandFilterSelectedOptions: FilterConfig;\n  private componentRef: ComponentRef<SelectedOptionsComponent> = null;\n\n  constructor(\n    private elementRef: ElementRef<HTMLElement>,\n    private appRef: ApplicationRef,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private injector: Injector\n  ) {}\n\n  ngOnInit(): void {\n    if (this.componentRef === null) {\n      const componentFactory =\n        this.componentFactoryResolver.resolveComponentFactory(\n          SelectedOptionsComponent\n        );\n      this.componentRef = componentFactory.create(this.injector);\n\n      this.componentRef.instance.selectedOptions$ =\n        this.catOnDemandFilterSelectedOptions.selectedOptions;\n      this.componentRef.instance.submit = this.catOnDemandFilterSelectedOptions.submit;\n\n      this.appRef.attachView(this.componentRef.hostView);\n      const domElem = (this.componentRef.hostView as EmbeddedViewRef<any>)\n        .rootNodes[0] as HTMLElement;\n\n      this.elementRef.nativeElement.innerHTML = '';\n      this.elementRef.nativeElement.appendChild(domElem);\n    }\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { DropdownComponent } from '@catrx/ui/dropdown';\nimport {\n  CatFormConfig,\n  CatFormFieldConfig,\n  CatFormListOptions,\n  CatFormRadioOptions,\n  CatFormSelectOptions,\n} from '@catrx/ui/form';\nimport { format } from '@koalarx/utils/operators/date';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { firstValueFrom } from 'rxjs/internal/firstValueFrom';\nimport { debounceTime } from 'rxjs/internal/operators/debounceTime';\nimport { startWith } from 'rxjs/internal/operators/startWith';\nimport { takeUntil } from 'rxjs/internal/operators/takeUntil';\nimport { FilterConfig, FilterOption, SelectedOptions } from '../factory/filter-options.types';\n\n@Component({\n  templateUrl: './trigger.component.html',\n})\nexport class TriggerComponent implements OnInit, OnDestroy {\n  @Input() label: string;\n  @Input() config: FilterConfig;\n\n  activeFilterForm?: CatFormConfig<any>;\n  filteredOptions: FilterOption[] = [];\n  filterOptionsControl = new FormControl();\n\n  @ViewChild('filterFormContent', { static: false })\n  private elFilterFormContent?: ElementRef<HTMLDivElement>;\n  @ViewChild('dropdownFilter') private dropdownFilter: DropdownComponent;\n\n  private destroySubscriptions$ = new Subject<boolean>();\n  private firstLoad = true;\n\n  ngOnDestroy(): void {\n    this.activeFilterForm = undefined;\n    this.destroySubscriptions$.next(true);\n  }\n\n  ngOnInit(): void {\n    if (this.config.onSubmit) {\n      this.config.submit.set(() => {\n        this.config.onSubmit(\n          this.convertSelectedOptionsToPayload(\n            this.config.selectedOptions.getValue()\n          )\n        );\n      });\n    }\n\n    this.observeOnChangeField();\n    this.autofillFilter();\n\n    this.filterOptionsControl.valueChanges\n      .pipe(\n        startWith(''),\n        takeUntil(this.destroySubscriptions$),\n        debounceTime(300)\n      )\n      .subscribe((value) => {\n        this.filteredOptions = this.config.options.filter((option) =>\n          this.getOptionConfig(option)\n            .fieldConfig\n            .label\n            .toLowerCase()\n            .includes(value.toLowerCase())\n        );\n      });\n  }\n\n  chooseOption(option: FilterOption, value?: any) {\n    setTimeout(() => {\n      const optionConfig = this.getOptionConfig(option);\n\n      optionConfig.fieldConfig.onChange = async (value) => {\n        let selectedOptions = this.config.selectedOptions.getValue();\n        const selectedOptionIndex = selectedOptions.findIndex(\n          (option) => option.name === optionConfig.fieldConfig.name\n        );\n\n        if (selectedOptionIndex >= 0 && !Array.isArray(value)) {\n          selectedOptions[selectedOptionIndex] = {\n            ...selectedOptions[selectedOptionIndex],\n            previewValue: await this.getPreviewValue(\n              optionConfig.fieldConfig,\n              value\n            ),\n            value,\n          };\n        } else if (Array.isArray(value)) {\n          if (selectedOptionIndex >= 0)\n            selectedOptions = selectedOptions.filter(\n              (option) =>\n                option.name === optionConfig.fieldConfig.name &&\n                !value.includes(option.value)\n            );\n\n          for (const item of value as any[]) {\n            selectedOptions.push({\n              icon: option.icon,\n              label: optionConfig.fieldConfig.label,\n              name: optionConfig.fieldConfig.name,\n              previewValue: await this.getPreviewValue(\n                optionConfig.fieldConfig,\n                item\n              ),\n              value: item,\n            });\n          }\n        } else {\n          selectedOptions.push({\n            icon: option.icon,\n            label: optionConfig.fieldConfig.label,\n            name: optionConfig.fieldConfig.name,\n            previewValue: await this.getPreviewValue(\n              optionConfig.fieldConfig,\n              value\n            ),\n            value,\n          });\n        }\n\n        this.config.selectedOptions.next(selectedOptions);\n      };\n\n      if (value) {\n        optionConfig.fieldConfig.onChange(value, null);\n      } else {\n        this.animateFormOption('in');\n        this.activeFilterForm = optionConfig.formConfig;\n      }\n    }, 50);\n  }\n\n  back() {\n    setTimeout(() => {\n      this.animateFormOption('out', () => (this.activeFilterForm = undefined));\n    }, 50);\n  }\n\n  getOptionConfig(option: FilterOption) {\n    const formConfig = option.formBuilder.generate();\n\n    if (formConfig.formElements.length === 0)\n      throw new Error('Você deve informar um campo.');\n    if (formConfig.formElements.length > 1)\n      throw new Error('Só é permitida a inclusão de apenas um campo.');\n\n    return {\n      formConfig,\n      fieldConfig: formConfig.formElements[0].field,\n    };\n  }\n\n  private async getPreviewValue(fieldConfig: CatFormFieldConfig, value: any) {\n    let options: CatFormListOptions[];\n    switch (fieldConfig.type) {\n      case 'date':\n        return format(value, 'DD/MM/YYYY');\n      case 'datetime-local':\n        return format(value, 'DD/MM/YYYY HH:mm');\n      case 'time':\n        return value;\n      case 'select':\n      case 'autocomplete':\n        options = await firstValueFrom(\n          (fieldConfig as CatFormSelectOptions).options\n        );\n        this.closeDropdown();\n        return options.find((option) => option.value === value)?.name;\n      case 'radio':\n      case 'checkbox':\n        this.closeDropdown();\n        options = (fieldConfig as CatFormRadioOptions).options;\n        return options.find((option) => option.value === value)?.name;\n      case 'file':\n      case 'csv':\n        throw new Error('Tipo de campo não suportado');\n      case 'number':\n      case 'text':\n      case 'search':\n      case 'password':\n      case 'email':\n      case 'url':\n      case 'textarea':\n      case 'cpf':\n      case 'cnpj':\n      default:\n        return value;\n    }\n  }\n\n  private observeOnChangeField() {\n    this.config.selectedOptions\n      .pipe(takeUntil(this.destroySubscriptions$), debounceTime(300))\n      .subscribe((selectedOptions) => {\n        const payload = this.convertSelectedOptionsToPayload(selectedOptions);\n        if (this.config.onChange) {\n          this.config.onChange(payload)\n        } else if ((this.firstLoad || Object.keys(payload).length === 0) && this.config.onSubmit) {\n          this.config.onSubmit(payload);\n          this.firstLoad = false;\n        }\n      });\n  }\n\n  private animateFormOption(type: 'in' | 'out', cb?: () => void) {\n    const formContent = this.elFilterFormContent?.nativeElement;\n\n    if (formContent) {\n      formContent.classList.remove('animate__fadeInRight');\n      formContent.classList.remove('animate__fadeOutRight');\n\n      if (type === 'in') {\n        formContent.classList.add('animate__fadeInRight');\n      } else {\n        formContent.classList.add('animate__fadeOutRight');\n        if (cb) setTimeout(() => cb(), 200);\n      }\n    }\n  }\n\n  private closeDropdown() {\n    this.dropdownFilter.close();\n  }\n\n  private autofillFilter() {\n    if (this.config.autofill) {\n      Object.keys(this.config.autofill).forEach((propName) => {\n        const filterOption = this.config.options.find(\n          (option) => this.getOptionConfig(option).fieldConfig.name === propName\n        );\n\n        if (filterOption)\n          this.chooseOption(filterOption, this.config.autofill[propName]);\n      });\n\n      if (this.config.submit()) {\n        setTimeout(() => (this.config.submit())(), 50);\n      }\n    }\n  }\n\n  private convertSelectedOptionsToPayload(selectedOptions: SelectedOptions[]) {\n    const payload = {};\n\n    selectedOptions.forEach((option) => {\n      const optionsByName = selectedOptions.filter(\n        (filteredOption) => filteredOption.name === option.name\n      );\n      if (optionsByName.length > 1) {\n        payload[option.name] = optionsByName.map((opt) => opt.value);\n      } else {\n        payload[option.name] = option.value;\n      }\n    });\n\n    return payload;\n  }\n}\n","<cat-dropdown\n  class=\"cat-on-demand-filter\"\n  position=\"bottom\"\n  #dropdownFilter\n  [insideClick]=\"true\"\n  (onClose)=\"activeFilterForm = undefined\"\n>\n  <button trigger class=\"trigger-button\" type=\"button\">\n    <i class=\"fa-solid fa-plus\"></i>\n    {{ label }}\n  </button>\n  <div class=\"cat-on-demand-filter options-container\" content>\n    <ng-container *ngIf=\"!activeFilterForm; else filterFormField\">\n      <form class=\"filter-options\">\n        <input\n          type=\"search\"\n          placeholder=\"Filtrar opções...\"\n          [formControl]=\"filterOptionsControl\"\n        />\n      </form>\n\n      <div\n        *ngIf=\"filteredOptions.length > 0; else emptyOptions\"\n        class=\"options-content animate__animated animate__fadeIn\"\n      >\n        <a\n          class=\"dropdown-item\"\n          *ngFor=\"let option of filteredOptions\"\n          (click)=\"chooseOption(option)\"\n        >\n          <i *ngIf=\"option.icon\" [class]=\"option.icon\"></i>\n          {{ getOptionConfig(option).fieldConfig.label }}\n        </a>\n      </div>\n\n      <ng-template #emptyOptions>\n        <div class=\"empty-options animate__animated animate__fadeIn\">\n          <i class=\"fa-solid fa-filter-circle-xmark\"></i>\n          <h2>Nenhuma opção encontrada</h2>\n        </div>\n      </ng-template>\n    </ng-container>\n\n    <ng-template #filterFormField>\n      <div\n        #filterFormContent\n        class=\"form-option-content animate__animated animate__fadeInRight\"\n      >\n        <nav>\n          <button class=\"btn-back\" (click)=\"back()\">\n            <i class=\"fa-solid fa-chevron-left\"></i>\n          </button>\n        </nav>\n\n        <cat-form [config]=\"activeFilterForm\" />\n      </div>\n    </ng-template>\n  </div>\n</cat-dropdown>\n","import {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  EmbeddedViewRef,\n  Injector,\n  Input,\n  OnInit,\n} from '@angular/core';\nimport { TriggerComponent } from './trigger.component';\nimport { FilterConfig } from '../factory/filter-options.types';\n\n@Directive({\n  selector: 'div[catOnDemandFilterTrigger]',\n})\nexport class TriggerDirective implements OnInit {\n  @Input() catOnDemandFilterTrigger: FilterConfig;\n  private componentRef: ComponentRef<TriggerComponent> = null;\n\n  constructor(\n    private elementRef: ElementRef<HTMLElement>,\n    private appRef: ApplicationRef,\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private injector: Injector\n  ) {}\n\n  ngOnInit(): void {\n    if (this.componentRef === null) {\n      const componentFactory =\n        this.componentFactoryResolver.resolveComponentFactory(TriggerComponent);\n      this.componentRef = componentFactory.create(this.injector);\n\n      this.componentRef.instance.config = this.catOnDemandFilterTrigger;\n      this.componentRef.instance.label =\n        this.elementRef.nativeElement.textContent;\n\n      this.appRef.attachView(this.componentRef.hostView);\n      const domElem = (this.componentRef.hostView as EmbeddedViewRef<any>)\n        .rootNodes[0] as HTMLElement;\n\n      this.elementRef.nativeElement.innerHTML = '';\n      this.elementRef.nativeElement.appendChild(domElem);\n    }\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CatDropdownModule } from '@catrx/ui/dropdown';\nimport { CatFormModule } from '@catrx/ui/form';\nimport { CatTooltipModule } from '@catrx/ui/tooltip';\nimport { SelectedOptionsComponent } from './selected-options/selected-options.component';\nimport { SelectedOptionsDirective } from './selected-options/selected-options.directive';\nimport { TriggerComponent } from './trigger/trigger.component';\nimport { TriggerDirective } from './trigger/trigger.directive';\nimport { CatButtonModule } from '@catrx/ui/button';\n\n@NgModule({\n  declarations: [\n    TriggerComponent,\n    TriggerDirective,\n    SelectedOptionsComponent,\n    SelectedOptionsDirective,\n  ],\n  exports: [TriggerDirective, SelectedOptionsDirective],\n  imports: [CommonModule, CatDropdownModule, CatFormModule, CatTooltipModule, CatButtonModule],\n})\nexport class CatOnDemandFilterModule {}\n","import { Injectable } from '@angular/core';\nimport { FilterOptionsFactory } from './factory/filter-options.factory';\nimport { CatFormService } from '@catrx/ui/form';\n\n@Injectable({ providedIn: 'root' })\nexport class CatOnDemandFilterService {\n  constructor(private formService: CatFormService) {}\n\n  public build<PayloadType = any>() {\n    return new FilterOptionsFactory<PayloadType>(this.formService);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1"],"mappings":"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"}