UNPKG

@wizco/fenixds-ngx

Version:

Componentes fenix design system para Angular.

1 lines 260 kB
{"version":3,"file":"wizco-fenixds-ngx.mjs","sources":["../../../projects/ngx-components/src/lib/step/step.component.ts","../../../projects/ngx-components/src/lib/step/step.component.html","../../../projects/ngx-components/src/lib/stepper/stepper.component.ts","../../../projects/ngx-components/src/lib/stepper/stepper.component.html","../../../projects/ngx-components/src/lib/stepper-group/stepper-group.component.ts","../../../projects/ngx-components/src/lib/stepper-group/stepper-group.component.html","../../../projects/ngx-components/src/lib/upload/upload.component.ts","../../../projects/ngx-components/src/lib/upload/upload.component.html","../../../projects/ngx-components/src/lib/msg-box-feedback/msg-box-feedback.component.ts","../../../projects/ngx-components/src/lib/msg-box-feedback/msg-box-feedback.component.html","../../../projects/ngx-components/src/lib/tabs/tabs.component.ts","../../../projects/ngx-components/src/lib/tabs/tabs.component.html","../../../projects/ngx-components/src/lib/pagination/pagination.component.ts","../../../projects/ngx-components/src/lib/pagination/pagination.component.html","../../../projects/ngx-components/src/lib/user-avatar/user-avatar.component.ts","../../../projects/ngx-components/src/lib/user-avatar/user-avatar.component.html","../../../projects/ngx-components/src/lib/smart-select/smart-select-options.component.ts","../../../projects/ngx-components/src/lib/smart-select/smart-select.component.ts","../../../projects/ngx-components/src/lib/smart-select/smart-select.component.html","../../../projects/ngx-components/src/lib/timeline/timeline.component.ts","../../../projects/ngx-components/src/lib/timeline/timeline.component.html","../../../projects/ngx-components/src/lib/preview-file/preview-file.component.ts","../../../projects/ngx-components/src/lib/preview-file/preview-file.component.html","../../../projects/ngx-components/src/lib/modal-alert/modal-alert.component.ts","../../../projects/ngx-components/src/lib/modal-alert/modal-alert.component.html","../../../projects/ngx-components/src/lib/table/table.component.ts","../../../projects/ngx-components/src/lib/table/table.component.html","../../../projects/ngx-components/src/lib/toast/toast.component.ts","../../../projects/ngx-components/src/lib/toast/toast.component.html","../../../projects/ngx-components/src/lib/toast/toast.service.ts","../../../projects/ngx-components/src/lib/sub-tabs/sub-tabs.component.ts","../../../projects/ngx-components/src/lib/datepicker/datepicker.utils.ts","../../../projects/ngx-components/src/lib/datepicker/datepicker.component.ts","../../../projects/ngx-components/src/lib/datepicker/datepicker.component.html","../../../projects/ngx-components/src/public-api.ts","../../../projects/ngx-components/src/wizco-fenixds-ngx.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'wco-step',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './step.component.html',\n  styleUrls: ['./step.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class StepComponent {\n\n  /**\n   * Se o step está ativo\n   * @param {boolean} active\n  */\n  @Input() active: boolean = false;\n\n  /**\n  * Texto do label do step\n  */\n  @Input() label: string = '';\n\n  /**\n  * Ícone do step (opcional) - deve ser um ícone do material icon\n  */\n  @Input() iconName: string | undefined = undefined;\n\n  /**\n   * Texto do bulletValue do step (opcional) - deve ser um texto de 1 a 2 caracteres\n  */\n  @Input() bulletValue: string | undefined = undefined;\n\n  /**\n  * Sentido do stepper (horizontal ou vertical)\n  */\n  @Input() isVertical: boolean = true;\n\n\n  /**\n  * Desabilitar linha inicial\n  */\n  @Input() lineStart: boolean = true;\n\n  /**\n   * Desabilitar linha final\n  */\n  @Input() lineEnd: boolean = true;\n\n  /**\n    * Classe do step\n    *\n    * finalized - step finalizado\n    * current - step atual\n    * waiting - step aguardando\n    * error - step com erro\n    *\n    * @param {string} status\n  */\n  @Input() status: 'finalized' | 'current' | 'waiting' | 'error' | string = 'current';\n\n  /**\n   * size do step\n   * @param {string} size\n   */\n  @Input() size: 'small' | 'medium' | 'large' | string = 'small';\n\n\n  /**\n   * Se o step é clicável\n   * @param {boolean} clickable\n  */\n  @Input() hasClick: boolean = false;\n\n  /**\n  * Função que retorna o valor do ícone ou bullet\n  */\n  @Output() clicked = new EventEmitter<number>()\n\n\n\n\n\n  constructor() {}\n\n  /**\n  * se o item do stepper estive com o evento de clicked true, ele retorna qual elemento é selecionado para o componente pai\n  * */\n  clickedItem() {\n    if(this.hasClick) {\n      return\n    }\n    this.clicked.emit()\n  }\n\n}\n","<div class=\"step\"\n  [class]=\"'step-status--' + status + ' step-size--' + size\"\n  [ngClass]=\"{\n    'step--vertical': isVertical,\n    'step--horizontal': !isVertical,\n    'step--disabled-linestart': !lineStart,\n    'step--disabled-lineend': !lineEnd,\n    'step--clicked': hasClick,\n    'step--active': active\n  }\"\n\n>\n  <div class=\"step__line step__line--start\"></div>\n  <div class=\"step__bullet\" (click)=\"clickedItem()\">\n    <div>\n      <span *ngIf=\"iconName && !bulletValue\" class=\"material-icons\">{{iconName}}</span>\n      <span *ngIf=\"!iconName && bulletValue\">{{bulletValue}}</span>\n      <ng-content select=\"[step-bullet-content]\"></ng-content>\n    </div>\n  </div>\n  <div class=\"step__line step__line--end\"></div>\n  <div class=\"step__content\">\n    <div class=\"step__title\" (click)=\"clickedItem()\">\n      <span *ngIf=\"label\" class=\"display-text\">{{label}}</span>\n      <ng-content select=\"[step-title]\"></ng-content>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from \"@angular/common\";\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from \"@angular/core\";\n\nexport interface StepperClass {\n  label?: string;\n  className?: 'finalized' |  'current' | 'waiting' | 'error';\n  showLineStart: boolean;\n  showLineEnd: boolean;\n  type?: 'icon' | 'text';\n  valueIcon?: string;\n  valueBullet?: string;\n  clicked?: boolean;\n}\n\n@Component({\n  selector: \"wco-stepper\",\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: \"./stepper.component.html\",\n  styleUrls: [\"./stepper.component.scss\"],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class StepperComponent {\n  /**\n  * Sentido do stepper (horizontal ou vertical)\n  */\n  @Input() isVertical: boolean = false;\n\n  /**\n  * Array de itens do stepper StepperClass\n  * @param {StepperClass} stepper\n  */\n  @Input() stepperArray: Array<StepperClass> = [];\n\n  /**\n  * Função que retorna o valor do ícone ou bullet\n  */\n  @Output() stepperSelected = new EventEmitter<number>()\n\n  constructor() {}\n\n  /**\n  * se o item do stepper estive com o evento de clicked true, ele retorna qual elemento é selecionado para o componente pai\n  * */\n  clickedItem(item: StepperClass, index: number) {\n    if(!item.clicked) {\n      return\n    }\n    this.stepperSelected.emit(index)\n  }\n}\n","<div\n  class=\"stepper-vertical\"\n  [ngClass]=\"isVertical === true ? 'stepper-vertical' : 'stepper-horizontal'\"\n  *ngIf=\"stepperArray\"\n>\n  <div class=\"stepper-component\" *ngFor=\"let items of stepperArray; let $i = index\">\n    <div class=\"stepper-component__main\">\n      <div class=\"stepper-item\" [ngClass]=\"{'stepper-item__clicked': items.clicked}\"  (click)=\"clickedItem(items,$i)\">\n        <span\n          [ngClass]=\"\n            items.showLineStart === true\n              ? 'stepper-item__line'\n              : 'stepper-item__without-line'\n          \"\n        ></span>\n        <span class=\"stepper-item__circle\" [ngClass]=\"items.className\"\n          ><span *ngIf=\"items.type === 'icon'\" class=\"icon material-icons\">{{\n            items.valueIcon\n          }}</span>\n          <span *ngIf=\"items.type === 'text'\" class=\"icon\">{{\n            items.valueBullet\n          }}</span></span\n        >\n        <span\n          [ngClass]=\"\n            items.showLineEnd === true\n              ? 'stepper-item__line'\n              : 'stepper-item__without-line'\n          \"\n        ></span>\n      </div>\n      <div class=\"stepper-label\">\n        <span\n          class=\"stepper-label__text\"\n          [ngClass]=\"items.className === 'current' ? 'dark-text' : 'light-text'\"\n          >{{ items.label }}</span\n        >\n      </div>\n    </div>\n  </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  ElementRef,\n  HostListener,\n  Input,\n  OnChanges,\n  OnDestroy,\n  QueryList,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { StepComponent } from '../step/step.component';\n\n@Component({\n  selector: 'wco-stepper-group',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './stepper-group.component.html',\n  styleUrls: ['./stepper-group.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class StepperGroupComponent\n  implements AfterContentInit, AfterViewInit, OnChanges, OnDestroy\n{\n  @ContentChildren(StepComponent) steps!: QueryList<StepComponent>;\n\n  @ViewChild('scrollContainer', { static: false })\n  scrollContainer!: ElementRef<HTMLElement>;\n\n  @ViewChild('stepsWrapper', { static: false })\n  stepsWrapper!: ElementRef<HTMLElement>;\n\n  /**\n   * Tamanho do stepper group\n   * 'fit' - ajusta ao conteúdo\n   * 'full' - ocupa toda a largura disponível\n   */\n  @Input() size: 'fit' | 'full' = 'full';\n\n  /**\n   * Modo de exibição\n   * 'default' - modo padrão\n   * 'mini' - modo compacto (mobile)\n   */\n  @Input() mode: 'default' | 'mini' = 'mini';\n\n  /**\n   * Orientação dos steps\n   * 'horizontal' - orientação horizontal (padrão)\n   * 'vertical' - orientação vertical\n   */\n  @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\n\n  /**\n   * Número do step atual (começa em 1, não 0)\n   */\n  @Input() current: number = 1;\n\n  hasHorizontalScroll = false;\n  canScrollLeft = false;\n  canScrollRight = false;\n  isHorizontal = false;\n  isMiniResponsive = false;\n\n  get totalSteps(): number {\n    return this.steps?.length || 0;\n  }\n\n  isCurrentStep(index: number): boolean {\n    return index === (this.current - 1);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['current'] && !changes['current'].firstChange) {\n      setTimeout(() => {\n        this.scrollToCurrent();\n      }, 0);\n    }\n    if (changes['orientation'] && !changes['orientation'].firstChange) {\n      setTimeout(() => {\n        this.updateSteps();\n      }, 0);\n    }\n    if (changes['mode'] || changes['current']) {\n      this.checkMiniResponsive();\n      if (this.isMiniResponsive) {\n        setTimeout(() => {\n          this.updateStepsVisibility();\n        }, 0);\n      }\n    }\n  }\n\n  ngAfterContentInit(): void {\n    if (this.steps) {\n      this.steps.changes.subscribe(() => {\n        this.updateSteps();\n      });\n      this.updateSteps();\n    }\n  }\n\n  ngAfterViewInit(): void {\n    this.checkMiniResponsive();\n    this.updateStepsVisibility();\n    setTimeout(() => {\n      this.checkScroll();\n      if (this.current > 0) {\n        this.scrollToCurrent();\n      }\n    }, 0);\n  }\n\n  private updateStepsVisibility(): void {\n    if (!this.steps || this.steps.length === 0) return;\n    \n    if (this.isMiniResponsive) {\n      setTimeout(() => {\n        const stepElements = this.stepsWrapper?.nativeElement?.querySelectorAll('wco-step');\n        if (stepElements) {\n          Array.from(stepElements).forEach((stepEl, index) => {\n            const htmlElement = stepEl as HTMLElement;\n            const isCurrent = index === (this.current - 1);\n            if (isCurrent) {\n              htmlElement.style.display = '';\n              htmlElement.classList.add('stepper-group__step--current');\n            } else {\n              htmlElement.style.display = 'none';\n            }\n          });\n        }\n      }, 0);\n    } else {\n      setTimeout(() => {\n        const stepElements = this.stepsWrapper?.nativeElement?.querySelectorAll('wco-step');\n        if (stepElements) {\n          Array.from(stepElements).forEach((stepEl) => {\n            const htmlElement = stepEl as HTMLElement;\n            htmlElement.style.display = '';\n            htmlElement.classList.remove('stepper-group__step--current');\n          });\n        }\n      }, 0);\n    }\n  }\n\n  ngOnDestroy(): void {\n\n  }\n\n  @HostListener('window:resize', ['$event'])\n  onResize(): void {\n    this.checkMiniResponsive();\n  }\n\n  private checkMiniResponsive(): void {\n    if (typeof window !== 'undefined') {\n      const wasMiniResponsive = this.isMiniResponsive;\n      this.isMiniResponsive = this.mode === 'mini' && window.innerWidth < 600;\n      \n      if (wasMiniResponsive !== this.isMiniResponsive) {\n        this.updateSteps();\n        this.updateStepsVisibility();\n      }\n    }\n  }\n\n  private updateSteps(): void {\n    if (!this.steps || this.steps.length === 0) return;\n\n    this.steps.forEach((step, index) => {\n      const isFirst = index === 0;\n      const isLast = index === this.steps.length - 1;\n      const isCurrent = index === (this.current - 1);\n\n      if (this.orientation === 'vertical') {\n        step.isVertical = true;\n        step.lineStart = true;\n        step.lineEnd = true;\n      } else {\n        step.isVertical = false;\n        step.lineStart = !isFirst;\n        step.lineEnd = !isLast;\n      }\n\n      if (this.mode === 'mini') {\n        step.size = 'small';\n      }\n\n      // Em modo mini responsivo, configurar steps para mostrar apenas o atual\n      if (this.isMiniResponsive) {\n        step.lineStart = false;\n        step.lineEnd = false;\n      }\n    });\n\n    this.isHorizontal = this.orientation === 'horizontal';\n\n    if (this.isHorizontal && !this.isMiniResponsive) {\n      setTimeout(() => {\n        this.checkScroll();\n        if (this.current > 0) {\n          this.scrollToCurrent();\n        }\n      }, 0);\n    }\n  }\n\n  private scrollHandler = () => this.updateArrowVisibility();\n\n  checkScroll(): void {\n    if (!this.scrollContainer?.nativeElement || !this.stepsWrapper?.nativeElement) {\n      return;\n    }\n\n    const container = this.scrollContainer.nativeElement;\n    const wrapper = this.stepsWrapper.nativeElement;\n    const gapMargin = 8 // Respiro para não adicionar scroll sem necessidade;\n\n    this.hasHorizontalScroll =\n      (wrapper.scrollWidth - gapMargin) > container.clientWidth;\n\n    if (this.hasHorizontalScroll) {\n      this.updateArrowVisibility();\n      container.removeEventListener('scroll', this.scrollHandler);\n      container.addEventListener('scroll', this.scrollHandler);\n    } else {\n      this.canScrollLeft = false;\n      this.canScrollRight = false;\n      container.removeEventListener('scroll', this.scrollHandler);\n    }\n  }\n\n  private updateArrowVisibility(): void {\n    if (!this.scrollContainer?.nativeElement) return;\n\n    const container = this.scrollContainer.nativeElement;\n    const scrollLeft = container.scrollLeft;\n    const scrollWidth = container.scrollWidth;\n    const clientWidth = container.clientWidth;\n\n    this.canScrollLeft = scrollLeft > 0;\n    this.canScrollRight = scrollLeft < scrollWidth - clientWidth - 1;\n  }\n\n  scrollToCurrent(): void {\n    if (!this.scrollContainer?.nativeElement || !this.steps || this.current < 1) {\n      return;\n    }\n\n    const stepIndex = this.current - 1;\n    if (stepIndex < 0 || stepIndex >= this.steps.length) return;\n\n    setTimeout(() => {\n      if (!this.scrollContainer?.nativeElement || !this.stepsWrapper?.nativeElement) return;\n\n      const container = this.scrollContainer.nativeElement;\n      const wrapper = this.stepsWrapper.nativeElement;\n      const stepElements = wrapper.querySelectorAll('wco-step');\n\n      if (stepIndex >= stepElements.length) return;\n\n      const stepElement = stepElements[stepIndex] as HTMLElement;\n      if (!stepElement) return;\n\n      const stepRect = stepElement.getBoundingClientRect();\n      const wrapperRect = wrapper.getBoundingClientRect();\n\n      if (stepRect.width === 0 || stepRect.height === 0) {\n        setTimeout(() => this.scrollToCurrent(), 50);\n        return;\n      }\n\n      const stepLeftRelativeToWrapper = stepRect.left - wrapperRect.left + container.scrollLeft;\n      const stepCenter = stepLeftRelativeToWrapper + (stepRect.width / 2);\n      const containerCenter = container.clientWidth / 2;\n      const targetScrollLeft = stepCenter - containerCenter;\n\n      const maxScrollLeft = container.scrollWidth - container.clientWidth;\n      const finalScrollLeft = Math.max(0, Math.min(targetScrollLeft, maxScrollLeft));\n\n      container.scrollTo({\n        left: finalScrollLeft,\n        behavior: 'smooth',\n      });\n\n      setTimeout(() => {\n        this.updateArrowVisibility();\n      }, 300);\n    }, 150);\n  }\n\n  scrollLeft(): void {\n    if (!this.scrollContainer?.nativeElement || !this.canScrollLeft) return;\n\n    const container = this.scrollContainer.nativeElement;\n    const scrollAmount = container.clientWidth * 0.8;\n\n    container.scrollBy({\n      left: -scrollAmount,\n      behavior: 'smooth',\n    });\n  }\n\n  scrollRight(): void {\n    if (!this.scrollContainer?.nativeElement || !this.canScrollRight) return;\n\n    const container = this.scrollContainer.nativeElement;\n    const scrollAmount = container.clientWidth * 0.8;\n\n    container.scrollBy({\n      left: scrollAmount,\n      behavior: 'smooth',\n    });\n  }\n}\n","<div\n  class=\"stepper-group\"\n  [ngClass]=\"{\n    'stepper-group--fit': size === 'fit',\n    'stepper-group--full': size === 'full',\n    'stepper-group--mini': mode === 'mini',\n    'stepper-group--default': mode === 'default',\n    'stepper-group--horizontal': orientation === 'horizontal',\n    'stepper-group--vertical': orientation === 'vertical',\n    'stepper-group--mini-responsive': isMiniResponsive\n  }\"\n>\n  <div *ngIf=\"isMiniResponsive\" class=\"stepper-group__mini-header\">\n    <span class=\"stepper-group__mini-text\">Passo {{ current }} de {{ totalSteps }}</span>\n  </div>\n\n  <button \n    *ngIf=\"hasHorizontalScroll && orientation === 'horizontal' && !isMiniResponsive\"\n    class=\"stepper-group__arrow stepper-group__arrow--left wco-btn btn-primary btn-basic btn-icon btn-sm\"\n    (click)=\"scrollLeft()\"\n    [disabled]=\"!canScrollLeft\"\n    [class.stepper-group__arrow--disabled]=\"!canScrollLeft\"\n    aria-label=\"Voltar\"\n  >\n    <span class=\"material-icons\">chevron_left</span>\n  </button>\n\n  <div #scrollContainer class=\"stepper-group__container\">\n    <div #stepsWrapper class=\"stepper-group__wrapper\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n\n  <button \n    *ngIf=\"hasHorizontalScroll && orientation === 'horizontal' && !isMiniResponsive\"\n    class=\"stepper-group__arrow stepper-group__arrow--right wco-btn btn-primary btn-basic btn-icon btn-sm\"\n    (click)=\"scrollRight()\"\n    [disabled]=\"!canScrollRight\"\n    [class.stepper-group__arrow--disabled]=\"!canScrollRight\"\n    aria-label=\"Avançar\"\n  >\n    <span class=\"material-icons\">chevron_right</span>\n  </button>\n</div>\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  SkipSelf,\n} from '@angular/core';\n\nimport {\n  HttpClient,\n  HttpClientModule,\n  HttpEventType,\n  HttpHeaders,\n  HttpParams,\n} from '@angular/common/http';\n\nimport { CommonModule } from '@angular/common';\nimport {\n  AngularFileUploaderConfig,\n  ReplaceTexts,\n  UploadInfoTypes,\n} from './upload.types';\n\n@Component({\n  selector: 'wco-file-upload',\n  standalone: true,\n  imports: [CommonModule, HttpClientModule],\n  templateUrl: './upload.component.html',\n  styleUrls: ['./upload.component.scss'],\n})\nexport class UploadComponent implements OnChanges {\n  /* Texto de descrição do arquivo */\n  @Input() description: string =\n    '(XX MB de tamanho máximo e é permitido qualquer tipo de arquivos)';\n  /* config <AngularFileUploaderConfig> configuração do componente principais parâmetros */\n  @Input() config: AngularFileUploaderConfig = {\n    uploadAPI: {\n      url: '',\n      method: 'POST',\n      headers: {\n        'Content-Type': 'text/plain;charset=UTF-8',\n      },\n      responseType: 'json',\n      withCredentials: false,\n    },\n  };\n\n  /*\n   * Opção de resetar o componente\n   */\n  @Input() resetUpload = false;\n\n  /*\n   * Evento Resposta da requisição sendo sucesso ou erro\n   */\n  @Output('apiResponse') ApiResponse = new EventEmitter();\n  /*\n   * Evento javascript puro para retorno do arquivo\n   */\n  @Output() fileSelected: EventEmitter<UploadInfoTypes[]> = new EventEmitter<\n    UploadInfoTypes[]\n  >();\n\n  /**\n   * @ignore\n   */\n  theme: string = '';\n  /**\n   * @ignore\n   */\n  id: number = 0;\n  /**\n   * @ignore\n   */\n  hideProgressBar: boolean = false;\n  /**\n   * @ignore\n   */\n  maxSize: number = 20 * 1024000; // mb to bytes.\n  /**\n   * @ignore\n   */\n  uploadAPI: string = '';\n  /**\n   * @ignore\n   */\n  method: string = 'POST';\n  /**\n   * @ignore\n   */\n  formatsAllowed: string = '*';\n  /**\n   * @ignore\n   */\n  formatsAllowedText: string = '';\n  /**\n   * @ignore\n   */\n  multiple: boolean = false;\n  /**\n   * @ignore\n   */\n  headers: HttpHeaders | { [header: string]: string | string[] } = {};\n  /**\n   * @ignore\n   */\n  params: HttpParams | { [param: string]: string | string[] } = {};\n  /**\n   * @ignore\n   */\n  responseType: 'json' | 'arraybuffer' | 'blob' | 'text' = 'blob';\n  /**\n   * @ignore\n   */\n  hideResetBtn: boolean = false;\n  /**\n   * @ignore\n   */\n  hideSelectBtn: boolean = false;\n  /**\n   * @ignore\n   */\n  allowedFiles: File[] = [];\n  /**\n   * @ignore\n   */\n  notAllowedFiles: {\n    fileName: string;\n    fileSize: string;\n    errorMsg: string;\n  }[] = [];\n  /**\n   * @ignore\n   */\n  Caption: string[] = [];\n  /**\n   * @ignore\n   */\n  isAllowedFileSingle = true;\n  /**\n   * @ignore\n   */\n  progressBarShow = false;\n  /**\n   * @ignore\n   */\n  enableUploadBtn = false;\n  /**\n   * @ignore\n   */\n  uploadMsg = false;\n  /**\n   * @ignore\n   */\n  afterUpload = false;\n  /**\n   * @ignore\n   */\n  uploadStarted = false;\n  /**\n   * @ignore\n   */\n  uploadMsgText: string = '';\n  /**\n   * @ignore\n   */\n  uploadMsgClass: string = 'text-success';\n  /**\n   * @ignore\n   */\n  uploadPercent: number = 0;\n  /**\n   * @ignore\n   */\n  replaceTexts: ReplaceTexts = {\n    selectFileBtn: 'Selecionar Arquivo',\n    resetBtn: 'Resetar',\n    uploadBtn: 'Enviar',\n    dragNDropBox: 'Arraste e solte',\n    attachPinBtn: 'Anexar Arquivo...',\n    afterUploadMsg_success: 'Enviado com sucesso !',\n    afterUploadMsg_error: 'Falha no envio !',\n    sizeLimit: 'Tamanho máximo',\n  };\n  /**\n   * @ignore\n   */\n  currentUploads: any[] = [];\n  /**\n   * @ignore\n   */\n  fileNameIndex = true;\n  /**\n   * @ignore\n   */\n  withCredentials = false;\n  /**\n   * @ignore\n   */\n  autoUpload = true;\n  /**\n   * @ignore\n   */\n  private idDate: number = +new Date();\n\n  constructor(@SkipSelf() private http: HttpClient) {}\n\n  /**\n   * @ignore\n   */\n  ngOnChanges(changes: any) {\n    // Track changes in Configuration and see if user has even provided Configuration.\n    if (changes.config && this.config) {\n      // Assign User Configurations to Library Properties.\n      this.theme = this.config.theme || '';\n      this.id =\n        this.config.id ||\n        parseInt((this.idDate / 10000).toString().split('.')[1], 10) +\n          Math.floor(Math.random() * 20) * 10000;\n      this.hideProgressBar = this.config.hideProgressBar || false;\n      this.hideResetBtn = this.config.hideResetBtn || false;\n      this.hideSelectBtn = this.config.hideSelectBtn || false;\n      this.maxSize = (this.config.maxSize || 20) * 1024000; // mb to bytes.\n      if (this.config.uploadAPI) {\n        this.uploadAPI = this.config.uploadAPI.url;\n        this.method = this.config.uploadAPI.method || 'POST';\n        this.formatsAllowed = this.config.formatsAllowed || '*';\n        this.multiple = this.config.multiple || false;\n        this.headers = this.config.uploadAPI.headers || {};\n        this.params = this.config.uploadAPI.params || {};\n        this.responseType = this.config.uploadAPI.responseType || 'json';\n        this.withCredentials = this.config.uploadAPI.withCredentials || false;\n      }\n      this.formatsAllowedText =\n        this.formatsAllowed === '*' ? '' : '(' + this.formatsAllowed + ')';\n      this.fileNameIndex = this.config.fileNameIndex === false ? false : true;\n      this.autoUpload = this.config.autoUpload || false;\n      if (this.config.replaceTexts) {\n        this.replaceTexts = {\n          ...this.replaceTexts,\n          ...this.config.replaceTexts,\n        };\n      }\n    }\n\n    // Reset when resetUpload value changes from false to true.\n    if (changes.resetUpload) {\n      if (changes.resetUpload.currentValue === true) {\n        this.resetFileUpload();\n      }\n    }\n  }\n\n  /* Função resetar componente */\n  resetFileUpload() {\n    this.allowedFiles = [];\n    this.Caption = [];\n    this.notAllowedFiles = [];\n    this.uploadMsg = false;\n    this.enableUploadBtn = false;\n  }\n\n  /* Detectar mudança  */\n  onChange(event: any) {\n    this.fileSelected.emit(event);\n    this.notAllowedFiles = [];\n    const fileExtRegExp: RegExp = /(?:\\.([^.]+))?$/;\n    let fileList: FileList;\n\n    if (this.afterUpload || !this.multiple) {\n      this.allowedFiles = [];\n      this.Caption = [];\n      this.afterUpload = false;\n    }\n\n    if (event.type === 'drop') {\n      fileList = event.dataTransfer.files;\n    } else {\n      fileList = event.target.files || event.srcElement.files;\n    }\n\n    // 'forEach' does not exist on 'filelist' that's why this good old 'for' is used.\n    // tslint:disable-next-line: for-of\n    for (let i = 0; i < fileList.length; i++) {\n      const _currentFileExt: any = fileExtRegExp.exec(fileList[i].name);\n      const currentFileExt =\n        typeof _currentFileExt[1] === 'string'\n          ? _currentFileExt[1].toLowerCase()\n          : '';\n      const isFormatValid = this.formatsAllowed.includes('*')\n        ? true\n        : this.formatsAllowed.includes(currentFileExt);\n\n      const isSizeValid = fileList[i].size <= this.maxSize;\n\n      // Check whether current file format and size is correct as specified in the configurations.\n      if (isFormatValid && isSizeValid) {\n        this.allowedFiles.push(fileList[i]);\n      } else {\n        this.notAllowedFiles.push({\n          fileName: fileList[i].name,\n          fileSize: this.convertSize(fileList[i].size),\n          errorMsg: !isFormatValid ? 'Invalid format' : 'Invalid size',\n        });\n      }\n    }\n\n    // If there's any allowedFiles.\n    if (this.allowedFiles.length > 0) {\n      this.enableUploadBtn = true;\n      // Upload the files directly if theme is attach pin (as upload btn is not there for this theme) or autoUpload is true.\n      if (this.theme === 'attachPin' || this.autoUpload) {\n        this.uploadFiles();\n      }\n    } else {\n      this.enableUploadBtn = false;\n    }\n\n    this.uploadMsg = false;\n    this.uploadStarted = false;\n    this.uploadPercent = 0;\n    event.target.value = null;\n  }\n\n  /* Função para enviar arquivo para servidor */\n  uploadFiles() {\n    this.progressBarShow = true;\n    this.uploadStarted = true;\n    this.notAllowedFiles = [];\n    let isError = false;\n    this.isAllowedFileSingle = this.allowedFiles.length <= 1;\n    const formData = new FormData();\n\n    // Add data to be sent in this request\n    this.allowedFiles.forEach((file, i) => {\n      formData.append(\n        this.Caption[i] || 'file' + (this.fileNameIndex ? i : ''),\n        this.allowedFiles[i]\n      );\n    });\n\n    this.http\n      .request(this.method.toUpperCase(), this.uploadAPI, {\n        body: formData,\n        reportProgress: true,\n        observe: 'events',\n        headers: this.headers,\n        params: this.params,\n        responseType: this.responseType,\n        withCredentials: this.withCredentials,\n      })\n      .subscribe(\n        (event) => {\n          // Upload Progress\n          if (event.type === HttpEventType.UploadProgress) {\n            this.enableUploadBtn = false; // button should be disabled if process uploading\n            const currentDone = event.loaded / event.total;\n            this.uploadPercent = Math.round((event.loaded / event.total) * 100);\n          } else if (event.type === HttpEventType.Response) {\n            if (event.status === 200 || event.status === 201) {\n              // Success\n              this.progressBarShow = false;\n              this.enableUploadBtn = false;\n              this.uploadMsg = true;\n              this.afterUpload = true;\n              if (!isError) {\n                this.uploadMsgText =\n                  this.replaceTexts.afterUploadMsg_success ||\n                  'Successfully Uploaded !';\n                this.uploadMsgClass = 'text-success lead';\n              }\n            } else {\n              // Failure\n              isError = true;\n              this.handleErrors();\n            }\n            this.ApiResponse.emit(event);\n          } else {\n            //console.log('Event Other: ', event);\n          }\n        },\n        (error) => {\n          // Failure\n          isError = true;\n          this.handleErrors();\n          this.ApiResponse.emit(error);\n        }\n      );\n  }\n\n  handleErrors() {\n    this.progressBarShow = false;\n    this.enableUploadBtn = false;\n    this.uploadMsg = true;\n    this.afterUpload = true;\n    this.uploadMsgText =\n      this.replaceTexts.afterUploadMsg_error || 'Error in uploading files';\n    this.uploadMsgClass = 'text-danger lead';\n  }\n\n  removeFile(i: any, sf_na: any) {\n    if (sf_na === 'sf') {\n      this.allowedFiles.splice(i, 1);\n      this.Caption.splice(i, 1);\n    } else {\n      this.notAllowedFiles.splice(i, 1);\n    }\n\n    if (this.allowedFiles.length === 0) {\n      this.enableUploadBtn = false;\n    }\n  }\n\n  convertSize(fileSize: number): string {\n    return fileSize < 1024000\n      ? (fileSize / 1024).toFixed(2) + ' KB'\n      : (fileSize / 1024000).toFixed(2) + ' MB';\n  }\n\n  attachpinOnclick() {\n    const element = document.getElementById('sel' + this.id);\n    if (element !== null) {\n      element.click();\n    }\n  }\n\n  drop(event: any) {\n    event.stopPropagation();\n    event.preventDefault();\n    this.onChange(event);\n  }\n\n  allowDrop(event: any) {\n    event.stopPropagation();\n    event.preventDefault();\n    event.dataTransfer.dropEffect = 'copy';\n  }\n}\n","<label for=\"sel{{id}}\" class=\"wco-form-upload\" (drop)=\"drop($event)\" (dragover)=\"allowDrop($event)\">\n  <div class=\"wco-form-upload__info\">\n    <span>Arraste-os aqui ou</span>\n    <span>\n      <span class=\"material-icons-outlined\">\nupload_file\n</span>\n      <span>{{replaceTexts.selectFileBtn}}</span>\n    </span>\n  </div>\n  <span class=\"upload__info\" *ngIf=\"!allowedFiles.length\" >{{description}}</span>\n  <ng-container *ngIf=\"allowedFiles.length\">\n    <span class=\"upload__info\" *ngFor=\"let sf of allowedFiles;let i=index\">\n      {{sf.name}} <small>({{convertSize(sf.size)}})</small>\n    </span>\n  </ng-container>\n  <input type=\"file\" id=\"sel{{id}}\" (change)=\"onChange($event)\" style=\"display: none\" title=\"Select file\"\n  name=\"files[]\" [accept]=\"formatsAllowed\" [attr.multiple]=\"multiple ? '' : null\" />\n</label>","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MsgBoxFeedbackTypes } from './msg-box-feeback.types';\n@Component({\n  selector: 'wco-msg-box-feedback',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './msg-box-feedback.component.html',\n  styleUrls: ['./msg-box-feedback.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class MsgBoxFeedbackComponent {\n  /*\n   * Sombra do componente\n   * @param {boolean} shadow\n   * @default true\n   * @example true | false\n   */\n  @Input() shadow = false;\n\n  /*\n   * Modo do componente\n   * @param {MsgBoxFeedbackTypes['mode']} mode\n   * @default 'fit'\n   * @example 'fit' | 'full'\n   */\n  @Input() mode: MsgBoxFeedbackTypes['mode'] = 'fit';\n  /*\n   * Título do componente\n   * @param {MsgBoxFeedbackTypes['title']} title\n   */\n  @Input() title!: MsgBoxFeedbackTypes['title'];\n  /*\n   * Mensagem do componente\n   * @param {MsgBoxFeedbackTypes['message']} message\n   */\n  @Input() message!: MsgBoxFeedbackTypes['message'];\n  /*\n   * Tipo do componente\n   * @param {MsgBoxFeedbackTypes['type']} type\n   */\n  @Input() type: MsgBoxFeedbackTypes['type'] = 'error';\n\n  /*\n   * Remover botão de fechar\n   * @param {boolean} hideClose\n   */\n  @Input() hideClose = false;\n\n  /*\n   * Texto do botão\n   * @param {string} textButton\n   */\n  @Input() textButton?: string;\n\n  /*\n   * Evento emitido ao fechar o componente\n   * @param {EventEmitter<any>}\n   */\n  @Output() onClose = new EventEmitter<any>();\n\n  /*\n   * Evento emitido ao clicar no botão\n   * @param {EventEmitter<any>}\n   */\n  @Output() clickButton = new EventEmitter<any>();\n\n  constructor() {}\n\n  close(): void {\n    this.onClose.emit(true);\n  }\n\n  handleClickButton(): void {\n    this.clickButton.emit(true);\n  }\n\n  get hasButton(): boolean {\n    return !!this.textButton && this.clickButton.observers.length > 0;\n  }\n}\n","<div \n  [ngClass]=\"'box-feedback box-feedback-' + type + ' mode-' + mode\"\n  [className]=\"shadow ? 'mode-shadow' : ''\"\n>\n  <div class=\"box-feedback--icon\" *ngIf=\"type !== 'loading'\">\n    <span *ngIf=\"type === 'error'\" class=\"material-icons\" style=\"color: var(--box-feedback-icon-color);\">error</span>\n    <span *ngIf=\"type === 'warning'\" class=\"material-icons\" style=\"color: var(--box-feedback-icon-color);\">warning</span>\n    <span *ngIf=\"type === 'info'\" class=\"material-icons\" style=\"color: var(--box-feedback-icon-color);\">info</span>\n    <span *ngIf=\"type === 'success'\" class=\"material-icons\" style=\"color: var(--box-feedback-icon-color);\">check_circle</span>\n  </div>\n  <svg *ngIf=\"type === 'loading'\" class=\"spinner\" viewBox=\"0 0 66 66\" xmlns=\"http://www.w3.org/2000/svg\">\n    <circle class=\"loading-icon\" fill=\"none\" stroke=\"var(--box-feedback-icon-color)\" stroke-width=\"6\"\n      stroke-linecap=\"round\" cx=\"33\" cy=\"33\" r=\"30\"></circle>\n  </svg>\n  <div class=\"box-feedback--content\">\n    <div class=\"box-feedback--header\"> \n      <h6 class=\"display-6 bold\">\n        {{ title }}\n      </h6>\n      <a class=\"btn-close\" (click)=\"close()\" *ngIf=\"!hideClose\" >\n        <svg viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path\n            d=\"M11.25 0.758431C10.925 0.433431 10.4 0.433431 10.075 0.758431L5.99998 4.8251L1.92498 0.750098C1.59998 0.425098 1.07498 0.425098 0.749976 0.750098C0.424976 1.0751 0.424976 1.6001 0.749976 1.9251L4.82498 6.0001L0.749976 10.0751C0.424976 10.4001 0.424976 10.9251 0.749976 11.2501C1.07498 11.5751 1.59998 11.5751 1.92498 11.2501L5.99998 7.1751L10.075 11.2501C10.4 11.5751 10.925 11.5751 11.25 11.2501C11.575 10.9251 11.575 10.4001 11.25 10.0751L7.17497 6.0001L11.25 1.9251C11.5666 1.60843 11.5666 1.0751 11.25 0.758431Z\" />\n        </svg>\n      </a>\n    </div>\n    <p class=\"display-p\">{{ message }}</p>\n    <ng-content></ng-content>\n    <div class=\"flex gap-xxs justify-end mt-xs\" *ngIf=\"hasButton\">\n      <button \n        class=\"btn btn-sm btn-link btn-primary\"\n        (click)=\"handleClickButton()\"\n        type=\"button\">\n        {{ textButton }}\n      </button>\n    </div>\n  </div>\n</div>\n","import { AfterViewInit, Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Router, NavigationEnd, RouterModule } from '@angular/router';\nimport { NavTabsOptions } from './tabs.types';\n\n@Component({\n  selector: 'wco-navtabs',\n  standalone: true,\n  imports: [\n    CommonModule,\n    RouterModule\n  ],\n  templateUrl: './tabs.component.html',\n  styleUrls: ['./tabs.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class TabsComponent  implements OnChanges, AfterViewInit{\n  /**\n  * @ignore\n  */\n  @ViewChild('navTabs')\n  public navTabs!: ElementRef;\n\n  /**\n   * Variável para definir o tipo de navegação\n   * @param {string} type\n  */\n  @Input()\n  public type: 'header' | 'nav' = 'header';\n\n  /**\n   * Elementos divididos igualmente ocupando toda largura\n   * @param {boolean} full\n  */\n  @Input()\n  public full: boolean = false;\n\n  /**\n   * Variável para definir o item ativo e monitorar a mudança\n   * @param {string} selected\n  */\n  @Input()\n  public selected = ''\n\n  /** habilitar reponsivo\n   * @param {Boolean} enabledResponsive\n   */\n  @Input('enabled-responsive')\n  public enabledResponsive: Boolean = true;\n\n  /**\n  * Opções de navegação por rotas\n  * @param {NavTabsOptions[]} links\n  */\n  @Input('listOptions')\n  public set setListOptions(links: NavTabsOptions[]) {\n    if (links.length) {\n      this.links = links.map((item: NavTabsOptions) => {\n        return {\n          ...item,\n          type: item.type || 'link',\n          options: { exact: item.path === '/' ? true : false },\n        };\n      });\n    }\n  }\n  \n\n  /**\n   * Variável para definir se o componente terá borda ou não\n   * @param {boolean} noBorder\n  */\n  @Input('no-border')\n  public noBorder: boolean = false;\n\n  @Input('autoScroll') autoScroll: boolean = true;\n\n\n  /**\n   * Evento de click no botão ou link do componente\n   * @param {EventEmitter<void>} handleClick\n   * @returns {void}\n  */\n  @Output()\n  public handleClick: EventEmitter<void> = new EventEmitter();\n\n  /**\n   * @ignore\n  */\n  public links: NavTabsOptions[] = [];\n\n\n  /**\n   * Variavel se é mobile ou não\n  */\n  public isMobile = false;\n\n  constructor(\n    private readonly router: Router,\n    private el: ElementRef\n  ) {\n    this.router.events.subscribe((event) => {\n      if (event instanceof NavigationEnd) {\n        this.handleActive(100, false);\n      }\n    });\n  }\n\n  /**\n   * @ignore\n  */\n   ngOnChanges(changes: SimpleChanges) {\n    if(changes['selected']) { \n      console.log('selected', this.selected)\n      this.handleActive(100, false);\n    }\n  }\n\n  /**\n   * @ignore\n  */\n  public ngAfterViewInit(): void {\n    this.handleActive(1000, false);\n  }\n\n  /**\n   * @ignore\n  */\n  public eventSubmit(link: any = ''): void {\n    this.handleClick.emit(link);\n  }\n\n  /**\n   * @ignore\n  */\n  public handleActive(timer = 100, buttonClick = true): void {\n    setTimeout(() => {\n      const _elementRef = this.el.nativeElement;\n      const _element: HTMLElement = this.navTabs.nativeElement;\n\n\n      if(_elementRef && _element ) {\n        this.isMobile = _elementRef.clientWidth >= _element.clientWidth\n      }\n\n      const allActives = _element.querySelectorAll('button.active');\n\n      const _elementChildActive = allActives[allActives.length - 1];\n\n      if (!_elementChildActive) {\n        return;\n      }\n\n      const left =\n        _elementChildActive.getBoundingClientRect().left - _element.getBoundingClientRect().left;\n      const widthbutton = _elementChildActive.getBoundingClientRect().width;\n      _element.style.setProperty('--leftActive', left + 'px');\n      _element.style.setProperty('--widthActive', widthbutton + 'px');\n      if(this.autoScroll) {\n        _elementChildActive.scrollIntoView({ block: 'end', behavior: 'smooth' });\n      }\n      if (buttonClick) {\n        this.handleClick.emit();\n      }\n      if (this.enabledResponsive && this.autoScroll) {\n        _elementChildActive.scrollIntoView({\n          block: 'end',\n          behavior: 'smooth',\n        });\n      }\n    }, timer);\n  }\n}","\n    <nav \n    class=\"wco-navtabs\" \n    #navTabs role=\"navigation\"\n    [class.no-border]=\"noBorder\" \n    [class.navTabs-full]=\"full\"\n    [class.navTabs-mobile]=\"!isMobile\"\n>\n    <ng-container *ngFor=\"let link of links\">\n        <ng-container *ngIf=\"link.type === 'link'\">\n            <button \n                (click)=\"eventSubmit()\" \n                [class.color-to-nav]=\"type === 'nav'\"\n                [routerLink]=\"link.path\" routerLinkActive=\"active\" [attr.id]=\"'page-' + link.path\"\n            >\n                {{ link.name }}\n            </button>\n        </ng-container>\n        <ng-container *ngIf=\"link.type === 'button'\">\n            <button \n                (click)=\"eventSubmit(link.path)\" \n                [class.color-to-nav]=\"type === 'nav'\"\n                [class.active]=\"link.path === selected\"\n                [attr.id]=\"'page-' + link.path\"\n            >\n                {{ link.name }}\n            </button>\n        </ng-container>\n    </ng-container>\n    <ng-content></ng-content>\n</nav>\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n} from '@angular/core';\n\n@Component({\n  selector: 'wco-pagination',\n  templateUrl: './pagination.component.html',\n  standalone: true,\n  imports: [CommonModule],\n  styleUrls: ['./pagination.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PaginationComponent implements AfterContentInit {\n  /**\n  * Evento que se emite quando se clica em um item da paginação\n  */\n  @Output()\n  public changePage = new EventEmitter();\n\n  /**\n  * Total de páginas\n  * @default 0\n  * @type number\n  */\n  @Input()\n  public totalPage = 0;\n\n\n  /**\n   * Página atual\n   * @default 1\n   * @type number\n   * */\n  @Input()\n  public currenPage = 1;\n\n  /**\n   *  Modo de exibição da paginação\n   * @default default\n   * @type string\n  */\n  @Input()\n  public mode: 'default' | 'simple' = 'default';\n\n  \n\n  /**\n  * Verifica tamanho da tela para exibir modo simples\n  */\n  ngAfterContentInit() {\n    if (window.innerWidth < 768) {\n      this.mode = 'simple';\n    }\n  }\n\n\n  /**\n   * Retorna um array com os números das páginas e os pontos de suspensão\n   */\n  public pagination() {\n    const current = this.currenPage;\n    const last = this.totalPage;\n    const delta = current >= 2 ? current >= 4 ? 1 : 2 : 3;\n    const left = current - delta;\n    const right = current + delta + 1;\n    const range = [];\n    const rangeWithDots = [];\n    let l;\n\n    for (let i = 1; i <= last; i++) {\n      if (i === 1 || i === last || (i >= left && i < right)) {\n        range.push(i);\n      }\n    }\n\n    for (const i of range) {\n      if (l) {\n        if (i - l === 2) {\n          rangeWithDots.push(l + 1);\n        } else if (i - l !== 1) {\n          rangeWithDots.push('...');\n        } else {\n          // empty\n        }\n      }\n      rangeWithDots.push(i);\n      l = i;\n    }\n\n    return rangeWithDots;\n  }\n\n  /**\n  * Seguir para a próxima página\n  */\n  public nextPage() {\n    if (this.currenPage < this.totalPage) {\n      this.currenPage += 1;\n      this.changePage.emit(this.currenPage);\n    }\n  }\n\n  /**\n  * Voltar para a página anterior\n  */\n  public previousPage() {\n    if (this.currenPage >= 2) {\n      this.currenPage -= 1;\n      this.changePage.emit(this.currenPage);\n    }\n  }\n\n  /**\n   * Ir para a página selecionada\n   * @param i\n   * @returns void\n  */\n  public out(i: number | string) {\n    this.currenPage = parseInt(`${i}`, 10);\n    console.log(i, this.currenPage);\n    this.changePage.emit(i);\n  }\n}\n","<div class=\"pagination\"\n  *ngIf=\"!!totalPage && totalPage >= 2\"\n  ngClass=\"pagination-{{mode}}\"\n>\n\n  <ng-container *ngIf=\"mode === 'simple'\">\n    <button (click)=\"previousPage()\" [ngClass]=\"{ disable: currenPage === 1 }\" title=\"Página anterior\">\n      <svg width=\"8\" height=\"12\" viewBox=\"0 0 8 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path\n          d=\"M7.00002 9.87498L3.12002 5.99498L7.00002 2.11498C7.39002 1.72498 7.39002 1.09498 7.00002 0.704976C6.61002 0.314976 5.98002 0.314976 5.59002 0.704976L1.00002 5.29498C0.61002 5.68498 0.61002 6.31498 1.00002 6.70498L5.59002 11.295C5.98002 11.685 6.61002 11.685 7.00002 11.295C7.38002 10.905 7.39002 10.265 7.00002 9.87498Z\"\n          fill=\"var(--wco-color-primary-600)\" />\n      </svg>\n    </button>\n    <button class=\"active\">{{currenPage}}</button>\n    <span>/</span>\n    <button>{{totalPage}}</button>\n    <button (click)=\"nextPage()\" class=\"last-button\" [ngClass]=\"{ disable: currenPage === totalPage }\"\n      title=\"Proxima Página\">\n      <svg width=\"8\" height=\"12\" viewBox=\"0 0 8 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <path\n          d=\"M7.00002 9.87498L3.12002 5.99498L7.00002 2.11498C7.39002 1.72498 7.39002 1.09498 7.00002 0.704976C6.61002 0.314976 5.98002 0.314976 5.59002 0.704976L1.00002 5.29498C0.61002 5.68498 0.61002 6.31498 1.00002 6.70498L5.59002 11.295C5.98002 11.685 6.61002 11.685 7.00002 11.295C7.38002 10.905 7.39002 10.265 7.00002 9.87498Z\"\n          fill=\"var(--wco-color-primary-600)\" />\n      </svg>\n    </button>\n  </ng-container>\n\n\n\n  <ng-container *ngIf=\"mode === 'default'\">\n      <button (click)=\"previousPage()\" [ngClass]=\"{ disable: currenPage === 1 }\" title=\"Página anterior\">\n        <svg width=\"8\" height=\"12\" viewBox=\"0 0 8 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path\n            d=\"M7.00002 9.87498L3.12002 5.99498L7.00002 2.11498C7.39002 1.72498 7.39002 1.09498 7.00002 0.704976C6.61002 0.314976 5.98002 0.314976 5.59002 0.704976L1.00002 5.29498C0.61002 5.68498 0.61002 6.31498 1.00002 6.70498L5.59002 11.295C5.98002 11.685 6.61002 11.685 7.00002 11.295C7.38002 10.905 7.39002 10.265 7.00002 9.87498Z\"\n            fill=\"var(--wco-color-primary-600)\" />\n        </svg>\n      </button>\n      <button *ngFor=\"let i of pagination()\" [ngClass]=\"{ \n            active: currenPage === i,\n            disable: i === '...'\n          }\" (click)=\"out(i)\">\n        {{ i }}\n      </button>\n      <button (click)=\"nextPage()\" class=\"last-button\" [ngClass]=\"{ disable: currenPage === totalPage }\"\n        title=\"Proxima Página\">\n        <svg width=\"8\" height=\"12\" viewBox=\"0 0 8 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path\n            d=\"M7.00002 9.87498L3.12002 5.99498L7.00002 2.11498C7.39002 1.72498 7.39002 1.09498 7.00002 0.704976C6.61002 0.314976 5.98002 0.314976 5.59002 0.704976L1.00002 5.29498C0.61002 5.68498 0.61002 6.31498 1.00002 6.70498L5.59002 11.295C5.98002 11.685 6.61002 11.685 7.00002 11.295C7.38002 10.905 7.39002 10.265 7.00002 9.87498Z\"\n            fill=\"var(--wco-color-primary-600)\" />\n        </svg>\n      </button>\n  </ng-container>\n\n\n\n</div>\n\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnChanges, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'wco-avatar',\r\n  standalone: true,\r\n  templateUrl: './user-avatar.component.html',\r\n  encapsulation: ViewEncapsulation.None,\r\n  imports: [CommonModule],\r\n  styleUrls: ['./user-avatar.component.scss']\r\n})\r\nexport class UserAvatarComponent implements OnChanges {\r\n\r\n  /** Nome do usuário */\r\n  @Input('name') userName: string = \"\";\r\n  /** Url da imagem opcional */\r\n  @Input('image') userAvatar: string = \"\";\r\n  /** Tamanho do componente  */\r\n  @Input('size') size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\r\n  /** Theme mudança de cores do componente  */\r\n  @Input('theme') theme: 'primary' | 'secondary' | 'light' | 'dark' = 'secondary';\r\n\r\n  /** solid tipo com bg predominant  */\r\n  @Input('solid') solid: boolean = false;\r\n\r\n  /**\r\n  * @ignore\r\n  */\r\n  public userNameLetters: string = \"\";\r\n\r\n  constructor() { }\r\n\r\n\r\n  /** Mudança de parâmetros dinâmicos */\r\n  ngOnChanges() {\r\n    this._prepareNameLetters();\r\n  }\r\n\r\n  /** Retorne o nome abreviado */\r\n  private _prepareNameLetters(): void {\r\n    let capitalizeLetters: string = \"\";\r\n    if( this.userName ) {\r\n      capitalizeLetters = this.userName.charAt(0);\r\n      let _arrUserName: string[] = this.userName.split(' ');\r\n      if (_arrUserName.length > 1) {\r\n        capitalizeLetters += _arrUserName[_arrUserName.length -1].charAt(0);\r\n      }\r\n    }\r\n    this.userNameLetters = capitalizeLetters.toUpperCase();\r\n  }\r\n\r\n}\r\n","<div\r\n  [class]=\"\r\n    'wco-user-avatar wco-user-avatar__size--' + size + ' wco-user-avatar__theme--' + theme + ' ' + (solid ? 'wco-user-solid' : '') \"\r\n  [title]=\"userName\" >\r\n  <span>{{userNameLetters}}</span>\r\n  <img *ngIf=\"userAvatar\" [src]=\"userAvatar\" [alt]=\"userName\" />\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  Input,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n  selector: 'wco-smart-select-option',\n  standalone: true,\n  imports: [CommonModule],\n  template: '<ng-content></ng-content>',\n  encapsulation: ViewEncapsulation.None,\n})\nexport class SmartSelectOptionComponent implements AfterViewInit {\n  @Input() value: any;\n  @Input() label!: string;\n  @Input() iconPrefix!: string;\n  @Input() disabled = false;\n  @Input() viewOnly = false;\n  safeHtmlContent: SafeHtml | undefined;\n\n  constructor(private el: ElementRef, private sanitizer: DomSanitizer) {}\n\n  ngAfterViewInit() {\n    const rawHtmlContent = this.el.nativeElement.innerHTML.trim();\n    this.safeHtmlContent =\n      rawHtmlContent.length > 0\n        ? this.sanitizer.bypassSecurityTrustHtml(rawHtmlContent)\n        : undefined;\n  }\n}\n","import {\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  Output,\n  QueryList,\n  ViewEncapsulation,\n  forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  ControlValueAccessor,\n  FormControl,\n  FormsModule,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ReactiveFormsModule,\n  ValidationErrors,\n  Validator,\n} from '@angular/forms';\nimport { SmartSelectOptionComponent } from './smart-select-options.component';\n\n@Component({\n  selector: 'wco-smart-select',\n  standalone: true,\n  imports: [CommonModule, ReactiveFormsModule, FormsModule],\n  templateUrl: './smart-select.component.html',\n  styleUrls: ['./smart-select.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SmartSelectComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: SmartSelectComponent,\n      multi: true,\n    },\n  ],\n})\nexport class SmartSelectComponent implements ControlValueAccessor, Validator {\n  @ContentChildren(SmartSelectOptionComponent) options:\n    | QueryList<SmartSelectOptionComponent>\n    | undefined;\n\n  @Output() onChange = new EventEmitter<{ type: string; value: any }>();\n\n  /* Id do elemento */\n  @Input()\n  inputId = 'select_' + Math.random().toString(36).substring(2);\n\n  /* Attr name do elemento */\n  @Input() inputName?: string;\n\n  @Input() IconMaterial = 'arrow_drop_down';\n\n  /* Placeholder do select */\n  @Input()\n  placeholder = 'Selecione uma opção';\n\n  /* Label do select */\n  @Input() label = ' ';\n\n  /* Força visualização do erro */\n  @Input() showError = false;\n\n  /* Mostrar campos de busca */\n  @Input()\n  showSearch = false;\n\n  @Input()\n  placeholderSearch: string = 'Buscar';\n\n  /* Texto exibido quando não há resultados */\n  @Input()\n  textEmpty = 'Não há resultados para a busca';\n\n  /* habilitar opção de multiplas seleções */\n  @Input()\n  multiSelect = false;\n\n  /* Limitar visualização de itens selecionados */\n  @Input()\n  showMaxSelectedLabel = 0;\n\n  /* Tipos pré definidos de checkbox, radio ou null */\n  @Input()\n  typePrefix: 'checkbox' | 'radio' | null = null;\n\n  /* Confirmação de o campo é obrigatório */\n  @Input()\n  required: boolean = false;\n\n  @Input()\n  limitView?: number;\n\n  @Input() formControlName: any | undefined;\n\n  isMobile = window.innerWidth <= 768;\n\n  formValue: any;\n  isFocused = false;\n  preventEscapeFocus = false;\n  autocompleteControl = new FormControl();\n  filteredOptions: any[] = [];\n\n  showList = false;\n\n  constructor(private el: ElementRef) {}\n\n  onTouched = () => {\n    this.isFocused = true;\n  };\n\n  /// estados do control\n\n  ngOnInit() {}\n\n  // Carrega os valores do formControl para o componente e renderiza as opções\n  writeValue(obj: any): void {\n    if (this.autocompleteControl.value === this.formValue) {\n      return;\n    }\n    this.formValue = obj;\n    this.autocompleteControl.setValue(obj);\n    this.renderBoxOptions();\n  }\n\n  validate(_control: FormControl): ValidationErrors | null {\n    this.autocompleteControl = _control || new FormControl();\n    return _control.validator;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange.subscribe((event) => {\n      if (event.type === 'updateValue') {\n        fn(event.value);\n      }\n    });\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  get hasError(): boolean {\n    return this.showError\n      ? this.showError\n      : this.autocompleteControl.invalid &&\n          this.autocompleteControl.touched &&\n          !this.showList;\n  }\n\n  setDisabledState?(isDisabled: boolean): void {\n    if (isDisabled) {\n      this.autocompleteControl.disable();\n    } else {\n      this.autocompleteControl.enable();\n    }\n  }\n\n  /// Abertura e fechamento da lista\n  onFocusIn(focus = false) {\n    this.renderBoxOptions();\n    this.autocompleteControl.markAsTouched();\n    this.onTouched();\n    this.isFocused = focus;\n    this.showList = focus;\n    this.positionBox();\n    this.focusSearchElementor();\n  }\n\n  private focusSearchElementor(): void {\n    if (this.showSearch) {\n      // Caso ele tenha a busca habilitada\n      setTimeout(() => {\n        const searchElement = this.el.nativeElement.querySelector(\n          '.wco-smartSelect--search'\n        );\n        if (searchElement) {\n          searchElement.focus();\n        }\n      }, 400);\n    }\n  }\n\n  /// here function to position box element top or bottom\n  positionBox() {\n    if (this.isMobile) {\n      return;\n    }\n\n    const componentBox = this.el.nativeElement;\n    if (!componentBox) {\n      return;\n    }\n    const componentBoxPosition = componentBox.getBoundingClientRect();\n    const inputId = componentBox.querySelector('.form-field');\n    const box = componentBox.querySelector('.wco-smartSelect--box');\n    const inputIdPosition = inputId.getBoundingClientRect().height;\n    const pageHeight = window.innerHeight;\n    if (box && componentBoxPosition.y + 320 >= pageHeight) {\n      box.style.bottom = inputIdPosition + 'px';\n      box.style.height = `var(--wco-smart-select-box-max-height)`;\n      box.style.top = 'initial';\n    } else {\n      box.style.top = inputIdPosition + 'px';\n      box.style.bottom = 'initial';\n      box.style.height = `auto`;\n    }\n  }\n\n  onSelect(option?: any) {\n    if (option.disabled || option.viewOnly) {\n      return;\n    }\n\n    const oldValue = Array.isArray(this.formValue)\n      ? [...this.formValue]\n      : this.formValue;\n\n    if (this.multiSelect) {\n      if (typeof option.value === 'object') {\n        const list = this.compareMultiValuesArray(option);\n        const hasValueOption = list.some((item: any) => item.selected);\n        if (hasValueOption) {\n          this.formValue = list\n            .filter((item: any) => !item.selected)\n            .map((item: any) => item.item);\n        } else {\n          this.formValue = [...(this.formValue || []), option.value];\n        }\n      } else {\n        const index = this.formValue?.indexOf(option.value);\n        if (index !== undefined && index > -1) {\n          this.formValue?.splice(index, 1);\n        } else {\n          this.formValue = [...(this.formValue || []), option.value];\n        }\n      }\n      this.autocompleteControl.setValue(this.formValue);\n    } else {\n      this.formValue = option.value;\n      this.autocompleteControl.setValue(option.value);\n      this.showList = false;\n    }\n\n    if (oldValue !== this.formValue) {\n      this.onChange.emit({ type: 'updateValue', value: this.formValue });\n    }\n\n    this.renderBoxOptions();\n  }\n\n  // Show label span\n  get selectedLabel() {\n    const selectedOption = this.options?.find(\n      (option) =>\n        this.normalizeText(String(option.value)) ===\n        this.normalizeText(String(this.formValue))\n    );\n    return selectedOption?.label || '';\n  }\n\n  // show label multi select\n  get selectedLabelMulti(): { value: string; label: string }[] {\n    const selectedOptions = this.options?.filter((option) => {\n      if (typeof option.value === 'object') {\n        return this.compareValueArray(option);\n      } else {\n        return this.formValue?.includes(option.value);\n      }\n    });\n\n    if (!selectedOptions?.length) {\n      return [];\n    }\n\n    if (!this.showMaxSelectedLabel) {\n      return selectedOptions;\n    }\n\n    if (\n      this.showMaxSelectedLabel &&\n      selectedOptions.length > this.showMaxSelectedLabel\n    ) {\n      return selectedOptions.slice(0, this.showMaxSelectedLabel);\n    }\n\n    return selectedOptions;\n  }\n\n  private valueToArray(options: any) {\n    const keys = Object.keys(options);\n    const value: any[] = [];\n    keys.forEach((key) => {\n      if (\n        options[key] &&\n        options[key] !== '' &&\n        typeof options[key] !== 'object' &&\n        typeof options[key] !== 'function' &&\n        typeof options[key] !== 'boolean'\n      ) {\n        value.push(options[key]);\n      }\n    });\n    return value;\n  }\n\n  private compareValueArray(option: any, value = this.formValue): any[] {\n    if (option && option.value) {\n      const valuesItems = this.valueToArray(option.value);\n      return value.some((item: any) => {\n        const itemArray = this.valueToArray(item);\n        return itemArray.every((itemValue: any) =>\n          valuesItems.includes(itemValue)\n        );\n      });\n    }\n    return [];\n  }\n\n  private compareMultiValuesArray(option: any, value = this.formValue): any[] {\n    if (option && option.value) {\n      const valuesItems = this.valueToArray(option.value);\n      const formValueArray = value.map((item: any, index: number) => {\n        const itemArray = this.valueToArray(item);\n        return {\n          index,\n          item,\n          selected: itemArray.some((itemValue: any) =>\n            valuesItems.includes(itemValue)\n          ),\n        };\n      });\n      // Remove duplicate items\n      const uniqueFormValueArray = Array.from(\n        new Set(formValueArray.map((item: any) => JSON.stringify(item)))\n      ).map((item: any) => JSON.parse(item));\n\n      return uniqueFormValueArray;\n    }\n    return [];\n  }\n\n  get selectedLabelMultiCount(): number {\n    const show = this.showMaxSelectedLabel || 0;\n    const selectedOptions = this.options?.filter((option) =>\n      this.formValue?.includes(option.value)\n    );\n    if (!selectedOptions?.length) {\n      return 0;\n    }\n\n    if (show > 0 && selectedOptions.length > show) {\n      return selectedOptions.length - show;\n    }\n\n    return 0;\n  }\n\n  removeItem(option: any) {\n    this.onSelect(option);\n    setTimeout(() => {\n      this.showList = false;\n    }, 100);\n  }\n\n  onKeyPress(event: any) {\n    event.preventDefault();\n    this.renderBoxOptions();\n  }\n\n  onFilter(event: any) {\n    const value = event.target.value;\n    if (!value) {\n      this.renderBoxOptions();\n      return;\n    }\n\n    if (this.filteredOptions.length) {\n      this.renderBoxOptions(value);\n    }\n  }\n\n  onResize() {\n    this.renderBoxOptions();\n    this.positionBox();\n  }\n\n  onFocusOut() {\n    if (!this.preventEscapeFocus && !this.isMobile) {\n      this.isFocused = false;\n      this.showList = false;\n    }\n  }\n\n  closeList() {\n    this.preventEscapeFocus = true;\n    this.isFocused = false;\n    this.showList = false;\n  }\n\n  selectedValue(option: { value: any; label: string; safeHtmlContent: any }) {\n    if (this.multiSelect) {\n      if (typeof option.value === 'object') {\n        if (option && option.value) {\n          const valuesItems = this.valueToArray(option.value);\n          return this.formValue.some((item: any) => {\n            const itemArray = this.valueToArray(item);\n            return itemArray.every((itemValue: any) =>\n              valuesItems.includes(itemValue)\n            );\n          });\n        }\n      } else {\n        return this.formValue?.includes(option.value);\n      }\n    }\n\n    return option.value === this.formValue;\n  }\n\n  loadMore() {\n    this.limitView = this.options?.length;\n    this.renderBoxOptions();\n  }\n\n  private renderBoxOptions(filterValue: string | null = null) {\n    if (!this.options || !this.options.length) {\n      return;\n    }\n    let valueLimit = this.options.length;\n    if (filterValue && filterValue.length > 3) {\n      valueLimit = this.options.length;\n    } else if (this.limitView) {\n      valueLimit = this.limitView;\n    }\n    if (!filterValue) {\n      this.filteredOptions = this.options\n        ?.map((option) => ({\n          value: option.value,\n          iconPrefix: option.iconPrefix,\n          htmlLabel: option.safeHtmlContent || option.label,\n          disabled: option.disabled,\n          viewOnly: option.viewOnly,\n        }))\n        .slice(0, valueLimit || 100);\n    } else {\n      this.limitView = this.options?.length;\n      this.filteredOptions = this.options\n        ?.map((option) => ({\n          value: option.value,\n          iconPrefix: option.iconPrefix,\n          htmlLabel: option.safeHtmlContent || option.label,\n          disabled: option.disabled,\n          viewOnly: option.viewOnly,\n        }))\n        .filter((option) => {\n          const normalizedFilter = this.normalizeText(filterValue);\n          const normalizedLabel = this.normalizeText(\n            option.htmlLabel?.toString() || ''\n          );\n          return normalizedLabel.includes(normalizedFilter);\n        })\n        .slice(0, valueLimit || 100);\n    }\n  }\n\n  private normalizeText(text: string): string {\n    return text\n      .replace(/[\\W_]+/g, '') // Remove caracteres especiais e sublinhados\n      .toLowerCase();\n  }\n}\n","<div\n  class=\"wco-smartSelect\"\n  [ngClass]=\"{\n    'wco-smartSelect--open': showList,\n    'wco-smartSelect--isMobile': isMobile,\n}\"\n  (resize)=\"onResize()\"\n  (mouseleave)=\"onFocusOut()\"\n>\n  <div class=\"form-field\" [ngClass]=\"{'form--error': hasError}\">\n    <input\n      *ngIf=\"!multiSelect\"\n      class=\"form-field__input\"\n      [disabled]=\"autocompleteControl.disabled\"\n      id=\"{{ inputId ? inputId : '' }}\"\n      name=\"{{ inputName ? inputName : '' }}\"\n      (click)=\"onFocusIn(true)\"\n      (focusin)=\"onFocusIn()\"\n      (keyup.escape)=\"onFocusOut()\"\n      (keypress)=\"onKeyPress($event)\"\n      [placeholder]=\"placeholder\"\n      [required]=\"required\"\n      type=\"text\"\n      [value]=\"selectedLabel\"\n      aria-label=\"Selecione uma opção\"\n    />\n    <div\n      *ngIf=\"multiSelect\"\n      class=\"form-field__input readonly multiSelect\"\n      [ngClass]=\"{'form-field--error': hasError, 'form-field--disabled': autocompleteControl.disabled }\"\n      [class.required]=\"required\"\n      (click)=\"onFocusIn(true)\"\n      (focusin)=\"onFocusIn()\"\n      (keyup.escape)=\"onFocusOut()\"\n    >\n    <ng-container *ngIf=\"!selectedLabelMulti.length\">\n      <span class=\"wco-smart-select-placeholder\">{{ placeholder || 'Selecione uma opção' }}</span>\n    </ng-container>\n          <ng-container *ngIf=\"selectedLabelMulti.length\">\n            <span *ngFor=\"let optionSelected of selectedLabelMulti\" class=\"wco-smart-select-item\">\n              {{optionSelected.label}}\n              <span class=\"wco-smart-select-remove\" (click)=\"removeItem(optionSelected)\">\n                <span class=\"material-icons\">close</span>\n              </span>\n            </span>\n              <span class=\"wco-smart-select-item\"  *ngIf=\"selectedLabelMultiCount >= 1\">\n                +{{selectedLabelMultiCount}}\n              </span>\n          </ng-container>\n      </div>\n        <label>{{ label }}</label>\n        <span class=\"material-icons wco-smart-select--arrow\">{{ IconMaterial }}</span>\n      </div>\n      <div\n        class=\"wco-smartSelect--box\"\n        [ngClass]=\"{\n          'wco-smartSelect--box--open': showList && !autocompleteControl.disabled\n        }\"\n      >\n        <div class=\"wco-smartSelect--isMobile-close\">\n          <button\n            (click)=\"closeList()\"\n            class=\"btn btn-sm btn-primary btn-outline mb-nano\"\n          >\n            fechar\n          </button>\n        </div>\n        <ul>\n          <li\n            tabindex=\"0\"\n            class=\"wco-smart-selected-filter\"\n            *ngIf=\"showList && showSearch\"\n          >\n            <input\n              [placeholder]=\"placeholderSearch\"\n              (keyup)=\"onFilter($event)\"\n              aria-label=\"Pesquisar\"\n              [attr.autofocus]=\"true\"\n              [attr.tabindex]=\"0\"\n              class=\"wco-smartSelect--search\"\n              type=\"text\"\n            />\n          </li>\n          <li\n            *ngFor=\"let option of filteredOptions; let i = index\"\n            [tabindex]=\"i + 1\"\n            [ngClass]=\"{\n                'wco-smart-selected': selectedValue(option),\n                'wc-smart-select-disabled-option': option.disabled,\n                'wc-smart-select-view-only-option': option.viewOnly,\n            }\"\n            (click)=\"onSelect(option)\"\n          >\n            <span class=\"wco-smart-select-label-prefix\">\n              <ng-container *ngIf=\"typePrefix === 'checkbox'\">\n                <span class=\"material-icons-outlined\">\n                  {{\n                    selectedValue(option) ? \"check_box\" : \"check_box_outline_blank\"\n                  }}\n                </span>\n              </ng-container>\n              <ng-container *ngIf=\"typePrefix === 'radio'\">\n                <span class=\"material-icons-outlined\">\n                  {{\n                    selectedValue(option)\n                      ? \"radio_button_checked\"\n                      : \"radio_button_unchecked\"\n                  }}\n                </span>\n              </ng-container>\n              <ng-container\n                *ngIf=\"\n                  !!option.iconPrefix &&\n                  typePrefix !== 'radio' &&\n                  typePrefix !== 'checkbox'\n                \"\n              >\n                <span class=\"material-icons-outlined\">\n                  {{ option.iconPrefix }}\n                </span>\n              </ng-container>\n            </span>\n            <span\n              class=\"wco-smart-select-label\"\n              [innerHTML]=\"option.htmlLabel\"\n            ></span>\n          </li>\n          <li *ngIf=\"!filteredOptions.length\">\n            <p class=\"display-body\">{{ textEmpty }}</p>\n          </li>\n          <li (click)=\"loadMore()\" class=\"wco-smart-select-load-more\" *ngIf=\"limitView && options && limitView > 0 && limitView !== options?.length\">\n            <p class=\"display-body\">Carregar mais</p>\n          </li>\n        </ul>\n      </div>\n    </div>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type Items = {\n  title?: string;\n  customClassTitle?: string;\n  description?: string;\n  customClassDescription?: string;\n  action?: {\n    handler: () => void;\n    label: string;\n  };\n}\n\nexport type TimelineItem = {\n  title: string;\n  description: string;\n  date: string;\n  status: 'finalized' | 'current' | 'waiting' | 'error';\n  descriptionPre?: {\n    text: string;\n    customClass: string;\n  };\n  descriptionPos?: {\n    text: string;\n    customClass: string;\n  };\n  action?: {\n    handler: () => void;\n    label: string;\n  };\n  itens?: Items[];\n};\n\n@Component({\n  selector: 'wco-timeline',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './timeline.component.html',\n  styleUrls: ['./timeline.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\n\nexport class TimelineComponent {\n\n  @Input() timelineItems: TimelineItem[] = [];\n\n  statusToIcon = {\n    finalized: 'check',\n    current: '',\n    waiting: '',\n    error: 'priority_high',\n  };\n\n}\n","<div class=\"wco-timeline\">\n  <div class=\"wco-timeline-item\" *ngFor=\"let line of timelineItems; let i = index\">\n    <div class=\"wco-timeline-item-dot-container\">\n      <div class=\"wco-timeline-item-dot-container-inner\">\n        <span class=\"wco-timeline-item-dot-number\">\n          {{ timelineItems.length - i }}\n        </span>\n        <div class=\"wco-timeline-item-dot-line-container\">\n          <div [className]=\"'wco-timeline-item-dot wco-timeline-item-dot-' + line.status\">\n            <span [className]=\"'material-icons wco-timeline-item-dot-icon wco-timeline-item-dot-icon-' + line.status\"> {{ statusToIcon[line.status] }} </span>\n          </div>\n          <hr class=\"wco-timeline-item-dot-line\" />\n        </div>\n      </div>\n    </div>\n    <div class=\"wco-timeline-item-content\">\n      <div class=\"wco-timeline-item-content-container\">\n        <h4 [className]=\"'wco-timeline-item-content-title wco-timeline-item-content-title-' + line.status\"> {{ line.title }} </h4>\n        <span [className]=\"'wco-timeline-item-content-date wco-timeline-item-content-date-' + line.status\"> {{ line.date }} </span>\n      </div>\n      <p *ngIf=\"line.descriptionPre?.text\" [className]=\"line.descriptionPre?.customClass\"> {{ line.descriptionPre?.text }} </p>\n      <p [className]=\"'wco-timeline-item-content-description wco-timeline-item-content-description-' + line.status\"> {{ line.description }} </p>\n      <p *ngIf=\"line.descriptionPos?.text\" [className]=\"line.descriptionPos?.customClass\"> {{ line.descriptionPos?.text }} </p>\n      <button class=\"wco-btn btn-primary btn-link btn-md\" *ngIf=\"line.action?.label\" (click)=\"line.action?.handler()\" [disabled]=\"line.status === 'waiting'\"> {{line.action?.label}} </button>\n      <div class=\"mt-xxxs\" *ngFor=\"let item of line.itens\">\n        <p *ngIf=\"item.title\" [className]=\"'wco-timeline-item-content-sub-title ' + item.customClassTitle\"> {{ item.title }} </p>\n        <p *ngIf=\"item.description\" [className]=\"'wco-timeline-item-content-sub-description ' + item.customClassDescription\"> {{ item.description }} </p>\n        <button class=\"wco-btn btn-primary btn-link btn-md\" *ngIf=\"item.action?.label\" (click)=\"item.action?.handler()\"> {{item.action?.label}} </button>\n      </div>\n    </div>\n  </div>\n</div>\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  Output,\n  ViewChild,\n  signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  PreviewFileActionsTypes,\n  PreviewFileStatusTypes,\n} from './preview-file.types';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n  selector: 'wco-preview-file',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './preview-file.component.html',\n  styleUrls: ['./preview-file.component.scss'],\n})\nexport class PreviewFileComponent {\n  @ViewChild('previewFileElement', { static: false })\n  previewFileElement!: ElementRef<HTMLDivElement>;\n\n  /* Controle de exibição do modal de visualização */\n  public showDialog = false;\n  \n\n  /* Nome do arquivo (optioncal) */\n  @Input() filename = '';\n  /* Formato do arquivo (optional) */\n  @Input() format = '';\n  /* Mostrar previsualização do arquivo (optional) */\n  @Input() preview = true;\n  /* Ações disponíveis para o arquivo (optional) */\n  @Input() actions!: PreviewFileActionsTypes[];\n  /* Status do arquivo (optional) */\n  @Input() status!: PreviewFileStatusTypes;\n  /* URL do arquivo (optional) */\n  @Input() url = '';\n  /* Conteúdo customizado (optional) */\n  @Input() customContent = false;\n  /* Tipo de visualização do arquivo (optional) */\n  @Input() type: 'mini' | 'box' = 'box';\n  /* Título do arquivo (optional) */\n  @Input() title = '';\n\n  /* Arquivo para visualização nativo do input file */\n  @Input() set setfile(file: File | null | undefined) {\n    if (!file) return;\n    this.transformFiles(file);\n  }\n\n  /* Evento de clique nas ações do arquivo */\n  @Output() clickEvent = new EventEmitter<{\n    action: PreviewFileActionsTypes;\n    data: any;\n  }>();\n\n\n  get name() {\n    if(!!this.filename) {\n      return this.filename\n    }\n\n    if(!!this.url) {\n      const url = new URL(this.url);\n      const name = url.pathname.split('/').pop();\n      const total = name ? name?.length >= 30 ? 15 : 0 : 0;\n      return name?.substring(total, name.length);\n    }\n    return 'Nome não informado';\n  }\n\n  get _format() { \n\n    if (!!this.format) {\n      return this.format;\n    }\n\n    if (this.url) {\n      const url = new URL(this.url);\n      const format = url.pathname.split('.').pop();\n      return format;\n    }\n\n    return 'file';\n  }\n  \n  idRandom = 'preview-' + Math.random().toString(36).substring(7);\n  id = 'modal-' + this.idRandom;\n\n  y = signal<string | null>('100px');\n  x = signal<string | null>('100px');\n\n  constructor(private sanitizer: DomSanitizer, private ngZone: NgZone) {}\n\n  private transformFiles(file: File) {\n    if (file) {\n      const reader = new FileReader();\n      reader.onload = (e: any) => {\n        this.filename = file.name;\n        this.format = file.type || 'file';\n        this.url = e.target.result;\n      };\n      reader.readAsDataURL(file);\n    }\n  }\n\n  transformPDFSecurity(url: string): SafeHtml {\n    return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n  }\n\n  private positionThumbnail() {\n    if (!this.previewFileElement?.nativeElement) {\n      return;\n    }\n\n    const previewFileElement = this.previewFileElement.nativeElement;\n    const cardPosition = previewFileElement.getElementsByClassName(\n      'wco-previewFile--thumbl'\n    )[0] as HTMLElement;\n\n    if (!cardPosition) {\n      return;\n    }\n\n    this.ngZone.runOutsideAngular(() => {\n      requestAnimationFrame(() => {\n        requestAnimationFrame(() => {\n          const { x, y } = cardPosition.getBoundingClientRect();\n          this.y.set(y + 'px');\n          this.x.set(x + 'px');\n        });\n      });\n    });\n  }\n\n  public actionEvent(action: PreviewFileActionsTypes) {\n\n    // Caso o usuário clique no botão de visualização, abre o modal de visualização\n    if(action === 'view' && this.typeFileFormat() !== 'file' && this.preview) {\n      this.modalPreview();\n    }\n    this.clickEvent.emit({\n      action,\n      data: {\n        filename: this.filename,\n        format: this.format,\n        url: this.url,\n        file: this.url,\n      },\n    });\n  }\n\n  ////////////////////\n  // Eventos de modal\n  ////////////////////\n  modalPreview() {\n    if (!!!this.url || this.typeFileFormat() === 'file') {\n      return;\n    }\n    this.showDialog = true;\n    this.positionThumbnail();\n    const modal: any = document.getElementById(this.id);\n    modal?.showModal();\n  }\n\n  closeDialog() {\n    const modal: any = document.getElementById(this.id);\n    modal?.close();\n    setTimeout(() => {\n      this.showDialog = false;\n    }, 500);\n  }\n\n  ///////////////////////////////////\n  /// Formatos e posições de ícones\n  ///////////////////////////////////\n  getIconMaterial(type: string): string {\n    const iconMap: { [key: string]: string } = {\n      'pdf': 'picture_as_pdf',\n      'application/pdf': 'picture_as_pdf',\n      'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n        'description',\n      'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n        'table_chart',\n      'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n        'slideshow',\n      'image/jpeg': 'image',\n      'image/png': 'image',\n      'image/gif': 'image',\n      'image/bmp': 'image',\n      'image/webp': 'image',\n      png: 'image',\n      jpeg: 'image',\n      gif: 'image',\n      bmp: 'image',\n      webp: 'image',\n      'video/mp4': 'ondemand_video',\n      'mp4': 'ondemand_video',\n      'video/quicktime': 'ondemand_video',\n      'video/x-msvideo': 'ondemand_video',\n      'video/x-ms-wmv': 'ondemand_video',\n      'audio/mpeg': 'audiotrack',\n      'audio/ogg': 'audiotrack',\n      'audio/wav': 'audiotrack',\n      'audio/webm': 'audiotrack',\n    };\n\n    return iconMap[type] || 'insert_drive_file';\n  }\n\n  typeFileFormat(): 'pdf' | 'image' | 'video' | 'file' {\n    const format = this._format || 'file'\n    const typeMap: { [key: string]: 'pdf' | 'image' | 'video' | 'file' } = {\n      pdf: 'pdf',\n      'application/pdf': 'pdf',\n      'image/jpeg': 'image',\n      'image/png': 'image',\n      'image/gif': 'image',\n      'image/bmp': 'image',\n      'image/webp': 'image',\n      png: 'image',\n      jpeg: 'image',\n      jpg: 'image',\n      gif: 'image',\n      bmp: 'image',\n      webp: 'image',\n      mp4: 'video',\n      mov: 'video',\n      'video/mp4': 'video',\n      'video/quicktime': 'video'\n    };\n\n    return typeMap[format] || 'file';\n  }\n}\n","<div [class]=\"'wco-previewFile wco-previewFile-type' + type\" #previewFileElement>\n  <h4 *ngIf=\"title\" class=\"display-body bold\">{{ title }}</h4>\n\n  <div [class]=\"'wco-previewFile--thumbl type-file-' + typeFileFormat()\" [id]=\"idRandom\">\n    <span class=\"wco-previewFile-preview\" (click)=\"preview ? modalPreview() : null\" role=\"button\" tabindex=\"0\">\n      <ng-container *ngIf=\"typeFileFormat() === 'image' && !!url\">\n        <img [src]=\"url\" alt=\"Imagem do documento\" loading=\"lazy\" role=\"img\">\n      </ng-container>\n      <ng-container *ngIf=\"typeFileFormat() !== 'image' || !url\">\n        <span class=\"material-icons\" role=\"presentation\">{{ getIconMaterial(format) }}</span>\n      </ng-container>\n    </span>\n    <h5 (click)=\"preview ? modalPreview() : null\" role=\"heading\" aria-level=\"2\">\n      {{ name }}</h5>\n  </div>\n\n  <div class=\"wco-previewFile__action\">\n    <div class=\"wco-previewFile__action--status\" *ngIf=\"!customContent\">\n      <ng-container *ngIf=\"status && status.type && status.text\">\n        <span [class]=\"'wco-tag tag-' + status.type\" role=\"status\">\n          <span *ngIf=\"status.iconMaterial\" class=\"material-icons\" role=\"presentation\">{{ status.iconMaterial }}</span>\n          {{ status.text }}\n        </span>\n        <div>\n          <h6 *ngIf=\"status.prefixDescription\">\n            <strong>{{ status.prefixDescription }}</strong>\n          </h6>\n          <p *ngIf=\"status.description\">{{ status.description }}</p>\n        </div>\n      </ng-container>\n    </div>\n    <div class=\"wco-previewFile__action--buttons\" *ngIf=\"!customContent\">\n      <ng-container *ngIf=\"!customContent && !!actions?.length\">\n        <ng-container>\n          <button *ngIf=\"actions.includes('refresh')\" (click)=\"actionEvent('refresh')\"\n            class=\"wco-btn btn-primary btn-outline btn-sm\" role=\"button\" tabindex=\"0\">\n            <span class=\"material-icons\" role=\"presentation\">cached</span>\n            Reenviar\n          </button>\n          <button *ngIf=\"actions.includes('aproved')\" (click)=\"actionEvent('aproved')\"\n            class=\"wco-btn btn-primary btn-outline btn-sm\" role=\"button\" tabindex=\"0\">\n            Aprovar\n            <span class=\"material-icons\" role=\"presentation\">done</span>\n          </button>\n          <button  *ngIf=\"actions.includes('reproved')\" (click)=\"actionEvent('reproved')\"\n            class=\"wco-btn btn-primary btn-outline btn-sm\" role=\"button\" tabindex=\"0\">\n            Recusar\n            <span class=\"material-icons\" role=\"presentation\">close</span>\n          </button>\n          <div *ngIf=\"actions.includes('download') || actions.includes('delete') \" class=\"wco-previewFile__action--buttonsIcon\">\n            <span *ngIf=\"actions.includes('download')\" data-tooltip=\"Download\" data-flow=\"top\">\n              <button (click)=\"actionEvent('download')\" class=\"wco-previewFile--buttonIcon\"\n                role=\"button\" tabindex=\"0\">\n                <span class=\"material-icons-outlined\" role=\"presentation\">file_download</span>\n              </button>\n            </span>\n            <span *ngIf=\"actions.includes('delete')\" data-tooltip=\"Excluir\" data-flow=\"top\">\n              <button (click)=\"actionEvent('delete')\"\n                class=\"wco-previewFile__action--buttonIcon\" role=\"button\" tabindex=\"0\">\n                <span class=\"material-icons-outlined\" role=\"presentation\">delete</span>\n              </button>\n            </span>\n            <span *ngIf=\"actions.includes('view')\" data-tooltip=\"Visualizar\" data-flow=\"top\">\n              <button (click)=\"actionEvent('view')\"\n                class=\"wco-previewFile__action--buttonIcon\" role=\"button\" tabindex=\"0\">\n                <span class=\"material-icons-outlined\" role=\"presentation\">visibility</span>\n              </button>\n            </span>\n          </div>\n        </ng-container>\n      </ng-container>\n    </div>\n\n    <div *ngIf=\"customContent\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n</div>\n\n<ng-container *ngIf=\"preview && x() && y()\">\n  <dialog [id]=\"id\" [ngStyle]=\"{'--dialog-x': x(), '--dialog-y': y()}\" role=\"dialog\" aria-modal=\"true\">\n    <div class=\"wco-dialog-wrapper\">\n      <div class=\"dialog-content\">\n        <img *ngIf=\"typeFileFormat() === 'image'\" [src]=\"url\" alt=\"Imagem do documento\" loading=\"lazy\" role=\"img\">\n        <ng-container *ngIf=\"showDialog\"> \n          <video *ngIf=\"typeFileFormat() === 'video'\" autoplay [src]=\"url\" controls role=\"video\"></video>\n          <iframe *ngIf=\"typeFileFormat() === 'pdf'\" [src]=\"transformPDFSecurity(url)\" role=\"document\"></iframe>\n        </ng-container>\n      </div>\n      <div class=\"w-full flex justify-center my-xxs\">\n        <button (click)=\"closeDialog()\" class=\"wco-btn btn-primary btn-sm\" role=\"button\" tabindex=\"0\">Fechar</button>\n      </div>\n    </div>\n  </dialog>\n</ng-container>","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { WcoModalAlertConfigActionsTypes, WcoModalAlertConfigTypes } from './modal-alert.types';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n  selector: 'wco-modal-alert',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './modal-alert.component.html',\n  styleUrls: ['./modal-alert.component.scss'],\n})\nexport class WcoModalAlertComponent implements OnChanges {\n  private DEFAULT_VALUES = {\n    show: false,\n    showIcon: true,\n    title: '',\n    message: '',\n    actions: [],\n    hideClose: false,\n  };\n\n  @Input() set show(value: boolean) {\n    this.changeValues(value, 'show');\n  }\n  @Input() set showIcon(value: boolean) {\n    this.changeValues(value, 'showIcon');\n  }\n  @Input() set title(value: string) {\n    this.changeValues(value, 'title');\n  }\n  @Input() set message(value: string) {\n    this.changeValues(value, 'message');\n  }\n\n  @Input() set materialIcon(value: string) {\n    this.changeValues(value, 'materialIcon');\n  }\n\n  @Input() set type(\n    value: 'error' | 'warning' | 'success' | 'info' | 'loading'\n  ) {\n    this.changeValues(value, 'type');\n  }\n\n  @Input() set hideClose(value: boolean) {\n    this.changeValues(value, 'hideClose');\n  }\n\n  @Input() set actions(value: WcoModalAlertConfigActionsTypes[]) {\n    this.changeValues(value, 'actions');\n  }\n\n  @Input({ alias: 'setId' }) id =\n    'wco-modal-alert-' + Math.random().toString(36).substring(7);\n\n  @Input() config: WcoModalAlertConfigTypes = {\n    show: false,\n    showIcon: true,\n    title: '',\n    message: '',\n    actions: [],\n    hideClose: false,\n  };\n\n  constructor(private sanitizer: DomSanitizer) {}\n\n  ngOnChanges(event: SimpleChanges): void {\n    if (event['config']?.currentValue['show'] !== undefined) {\n      this.eventModal();\n    }\n  }\n\n  get title(): any {\n    return this.sanitizer.bypassSecurityTrustHtml(this.config.title || '');\n  }\n\n  get message(): any {\n    return this.sanitizer.bypassSecurityTrustHtml(this.config.message || '');\n  }\n\n  getButtonClass(action: WcoModalAlertConfigActionsTypes) {\n    const classeColor =\n      action.color === 'primary'\n        ? 'btn-primary'\n        : action.color === 'secondary'\n        ? 'btn-secondary'\n        : 'btn-neutral';\n    const classeOutline = action.outline ? 'btn-outline' : '';\n    const extraClasse = action.extraClasse ? action.extraClasse : '';\n    return `wco-btn btn-full ${classeColor} ${classeOutline} ${extraClasse}`;\n  }\n\n  get iconMaterial() {\n    const { type = 'info' } = this.config;\n    switch (type) {\n      case 'error':\n        return { icon: 'error_outline', color: 'error' };\n      case 'warning':\n        return { icon: 'warning_amber', color: 'warning' };\n      case 'success':\n        return { icon: 'check_circle_outline', color: 'success' };\n      case 'loading':\n        return { icon: 'spinner', color: 'loading' };\n      default:\n        return { icon: 'info', color: 'info' };\n    }\n  }\n\n  changeValues(valueUpdate: any, name: string) {\n    this.config = {\n      ...this.DEFAULT_VALUES,\n      ...this.config,\n      [name]: valueUpdate,\n    };\n    this.eventModal();\n  }\n\n  modalClose() {\n    const element: any = document.getElementById(this.id);\n    if (element) {\n      element.close();\n    }\n  }\n\n  eventModal() {\n    const show = this.config.show;\n    const element: any = document.getElementById(this.id);\n    if (show && element) {\n      if (this.config.hideClose) {\n        element.addEventListener('keydown', (event: any) => {\n          const key = event.key;\n          if (key === 'Escape') {\n            event.preventDefault();\n          }\n        });\n      }\n      element.showModal();\n      this.config.show = false;\n    } else {\n      this.modalClose();\n    }\n  }\n}\n","<dialog class=\"wco-modal\" [id]=\"id\" role=\"dialog\" aria-modal=\"true\">\n  <main>\n    <ng-container *ngIf=\"!config.hideClose\">\n      <button class=\"wco-modal--close\" (click)=\"modalClose()\">\n        <span class=\"material-icons\">close</span>\n      </button>\n    </ng-container>\n    <div [class]=\"'wco-modalConfirm ' + iconMaterial.color\">\n      <ng-container *ngIf=\"config.showIcon\">\n        <span class=\"wco-modalConfirm--icon\">\n          <ng-container *ngIf=\"config.type !== 'loading'\">\n          <span class=\"material-icons-round\">\n              <ng-container *ngIf=\"config.materialIcon; else iconTemplate\">\n                {{config.materialIcon}}\n              </ng-container>\n              <ng-template #iconTemplate>\n                {{ iconMaterial.icon}}\n              </ng-template>\n            </span>\n          </ng-container>\n          <ng-container *ngIf=\"config.type === 'loading'\">\n            <svg class=\"spinner\" viewBox=\"0 0 66 66\" xmlns=\"http://www.w3.org/2000/svg\">\n              <circle class=\"loading-icon\" fill=\"none\" stroke=\"var(--wco-modal-color-type)\" stroke-width=\"6\"\n                stroke-linecap=\"round\" cx=\"33\" cy=\"33\" r=\"30\"></circle>\n            </svg>\n          </ng-container>\n        </span>\n      </ng-container>\n      <ng-container *ngIf=\"config.title\">\n        <h3 class=\"wco-modalConfirm--title\" [innerHTML]=\"title\"></h3>\n      </ng-container>\n      <ng-container *ngIf=\"config.message\">  \n        <p class=\"wco-modalConfirm--message\" [innerHTML]=\"message\"></p>\n      </ng-container>\n      <div class=\"wco-modalConfirm--actions\" [class.modalConfirm--actions-size]=\"config.actions.length === 1\"\n        *ngIf=\"config.actions && config.actions.length > 0\">\n        <button type=\"button\" [class]=\"getButtonClass(action)\" (click)=\"action.action()\"\n          *ngFor=\"let action of config.actions; let index = index\">\n          <span class=\"material-icons-round\" *ngIf=\"action.materialIconLeft\">{{action.materialIconLeft}}</span>\n          {{action.text}}\n          <span class=\"material-icons-round\" *ngIf=\"action.materialIconRight\">{{action.materialIconRight}}</span>\n        </button>\n      </div>\n    </div>\n  </main>\n</dialog>","import { Component, EventEmitter, Input, Output, TemplateRef, AfterViewInit, ElementRef, ViewChild } from '@angular/core';\nimport { SortedItem, TableHeader, TableRow } from './table.types';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n  selector: 'wco-table',\n  templateUrl: './table.component.html',\n  styleUrls: ['./table.component.scss'],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport class TableComponent implements AfterViewInit {\n  @Input() data: TableRow[] = [];\n  @Input() sortedItem!: SortedItem;\n  @Input() headers: TableHeader[] = [];\n  @Input() loading?: boolean = false;\n  @Input() templates: { [key: string]: TemplateRef<any> } = {};\n  @Output() handlerSortedBy = new EventEmitter();\n\n  @ViewChild('table') tableRef!: ElementRef;\n\n  hasExpandableRows = false;\n\n  constructor() {}\n\n  ngOnInit() {\n    this.checkExpandableRows();\n  }\n\n  ngAfterViewInit() {\n    this.alignChildHeaders();\n  }\n\n  ngOnChanges() {\n    this.checkExpandableRows();\n    if (this.tableRef) {\n      setTimeout(() => this.alignChildHeaders());\n    }\n  }\n\n  /**\n   * Verifica se há linhas expandíveis na tabela\n   */\n  private checkExpandableRows() {\n    this.hasExpandableRows = this.data.some(row => row.children);\n  }\n\n  /**\n   * Alinha os headers filhos com os headers pai\n   */\n  private alignChildHeaders() {\n    const table = this.tableRef?.nativeElement;\n    if (!table) return;\n    // Fazer um loop para pegar os headers pai\n    const parentHeaders = table.querySelector('thead:first-child')?.querySelectorAll('th:not(.wco-table-expand-column)');\n    const parentWidths = Array.from(parentHeaders).map(th => (th as HTMLElement).offsetWidth);\n    \n  \n    const childTables = table.querySelectorAll('.wco-table-children table');\n    childTables.forEach((childTable: HTMLElement) => {\n      const childHeaders = childTable.querySelectorAll('th:not(.wco-table-expand-column)');\n      \n      // Verifica se os headers são iguais\n      const hasSameHeaders = this.hasSameHeaders(\n        Array.from(parentHeaders).map(th => (th as HTMLElement).textContent?.trim()),\n        Array.from(childHeaders).map(th => (th as HTMLElement).textContent?.trim())\n      );\n\n      if (hasSameHeaders) {\n        // Aplica as larguras dos headers pai nos headers filhos\n        childHeaders.forEach((th, index) => {\n          if (parentWidths[index]) {\n            (th as HTMLElement).style.width = `${parentWidths[index]}px`;\n          }\n        });\n      }\n    });\n  }\n\n  private hasSameHeaders(parentHeaders: (string | undefined)[], childHeaders: (string | undefined)[]): boolean {\n    if (parentHeaders.length !== childHeaders.length) return false;\n    return parentHeaders.every((header, index) => header === childHeaders[index]);\n  }\n\n  /**\n   * Obtém o template para uma determinada coluna\n   * @param templateName - Nome do template\n   * @returns TemplateRef ou undefined\n   */\n  getTemplate(templateName: string) {\n    return this.templates[templateName];\n  }\n\n  /**\n   * Ordena a tabela por um determinado cabeçalho\n   * @param header - Cabeçalho a ser ordenado\n   */\n  onSortedBy(header: TableHeader) {\n    this.sortedItem = {\n      key: header.key,\n      order: header.key == this.sortedItem?.key && this.sortedItem.order === 'ASC' ? 'DESC' : 'ASC'\n    }\n\n    this.handlerSortedBy.emit(this.sortedItem);\n  }\n\n  /**\n   * Alterna o estado de expansão de uma linha\n   * @param row - Linha a ser expandida/contraída\n   */\n  toggleRow(row: TableRow) {\n    if (row.children) {\n      row.isExpanded = !row.isExpanded;\n      if (row.isExpanded) {\n        setTimeout(() => this.alignChildHeaders());\n      }\n    }\n  }\n\n  /**\n   * Verifica se uma linha tem filhos\n   * @param row - Linha a ser verificada\n   * @returns true se a linha tem filhos, false caso contrário\n   */\n  hasChildren(row: TableRow): boolean {\n    return !!row.children;\n  }\n}\n","<div class=\"wco-table-area\">\n  <table class=\"wco-table\" role=\"table\" #table>\n    <thead *ngIf=\"data && data.length > 0\">\n      <tr>\n        <th *ngIf=\"hasExpandableRows\" class=\"wco-table-expand-column\"></th>\n        <ng-container *ngFor=\"let header of headers\">\n          <th *ngIf=\"!header.sortedBy\">\n            {{ header.label }}\n          </th>\n          <th *ngIf=\"header.sortedBy\" (click)=\"onSortedBy(header)\">\n            <div class=\"flex items-center cPointer\">\n              <span>{{ header.label }}</span>\n              <span class=\"material-icons-round text-primary-600 wco-order-icon\" [class.f-20]=\"!sortedItem || sortedItem && header.key != sortedItem.key\">\n                {{\n                  sortedItem && header.key == sortedItem.key\n                    ? sortedItem.order === \"ASC\"\n                      ? \"north\"\n                      : sortedItem.order === \"DESC\"\n                      ? \"south\"\n                      : \"swap_vert\"\n                    : \"swap_vert\"\n                }}\n              </span>\n            </div>\n          </th>\n        </ng-container>\n      </tr>\n    </thead>\n    <ng-container *ngIf=\"!loading\">\n      <tbody>\n        <ng-container *ngFor=\"let row of data\">\n          <tr [class.wco-table__row--empty]=\"!row\">\n            <td *ngIf=\"hasExpandableRows\" class=\"wco-table-expand-column\">\n              <button class=\"wco-table-expand-button\" (click)=\"toggleRow(row)\" *ngIf=\"hasChildren(row)\">\n                <span class=\"material-icons cPointer\">\n                  {{ row.isExpanded ? 'expand_less' : 'expand_more' }}\n                </span>\n              </button>\n            </td>\n            <td *ngFor=\"let header of headers\" [attr.data-label]=\"header.label\">\n              <ng-container *ngIf=\"header.template\">\n                <ng-container *ngTemplateOutlet=\"getTemplate(header.template); context: { $implicit: row[header.key], row: row }\">\n                </ng-container>\n              </ng-container>\n              <ng-container *ngIf=\"!header.template\">\n                {{ row[header.key] }}\n              </ng-container>\n            </td>\n          </tr>\n          <tr *ngIf=\"row.children && row.isExpanded\" class=\"wco-table-children\">\n            <td [attr.colspan]=\"headers.length + (hasExpandableRows ? 1 : 0)\">\n              <div class=\"wco-table-children-content\">\n                <table class=\"wco-table\">\n                  <thead class=\"wco-table-children-header\" [ngClass]=\"{'wco-table-children-header-hide': !row.children.showHeader}\">\n                    <tr>\n                      <th class=\"wco-table-expand-column\"></th>\n                      <th *ngFor=\"let header of row.children.header\">\n                        {{ header.label }}\n                      </th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    <tr *ngFor=\"let childRow of row.children.data\">\n                      <td class=\"wco-table-expand-column\"></td>\n                      <td *ngFor=\"let header of row.children.header\" [attr.data-label]=\"header.label\">\n                        <ng-container *ngIf=\"header.template\">\n                          <ng-container *ngTemplateOutlet=\"getTemplate(header.template); context: { $implicit: childRow[header.key], row: childRow }\"></ng-container>\n                        </ng-container>\n                        <ng-container *ngIf=\"!header.template\">\n                          {{ childRow[header.key] }}\n                        </ng-container>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </div>\n            </td>\n          </tr>\n        </ng-container>\n      </tbody>\n    </ng-container>\n    <ng-container *ngIf=\"loading\">\n      <tbody>\n        <tr *ngFor=\"let row of [1, 2, 3, 4, 5]\">\n          <td *ngIf=\"hasExpandableRows\" class=\"wco-table-expand-column\"></td>\n          <td *ngFor=\"let header of headers\" role=\"cell\">\n            <div class=\"wco-skeleton mt-0\" style=\"width: 100%\">\n              <span class=\"block p-xxs\"></span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </ng-container>\n\n    <ng-container *ngIf=\"!loading && !data.length\">\n      <tbody>\n        <tr class=\"wco-table__row--empty\">\n          <td\n            [attr.colspan]=\"headers.length + (hasExpandableRows ? 1 : 0)\"\n            class=\"wco-table__cell--empty\"\n            role=\"cell\"\n          >\n            <ng-content select=\".empty\"></ng-content>\n          </td>\n        </tr>\n      </tbody>\n    </ng-container>\n  </table>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { WcoToastConfig, WcoToastConfigActionsTypes } from './toast.types';\n\nexport interface WcoToastItem {\n  id: string;\n  config: WcoToastConfig;\n  visible: boolean;\n  tall?: boolean;\n  timer?: ReturnType<typeof setTimeout>;\n}\n\n@Component({\n  selector: 'wco-toast',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './toast.component.html',\n  styleUrls: ['./toast.component.scss'],\n})\nexport class WcoToastComponent implements OnInit, OnDestroy {\n  @Input() position: WcoToastConfig['position'] = 'bottom-right';\n\n  @Input() configManual?: WcoToastConfig\n\n  @Input() toasts: WcoToastItem[] = [];\n\n  constructor(private sanitizer: DomSanitizer) {}\n\n  ngOnInit(): void {}\n\n  ngOnDestroy(): void {\n    this.toasts.forEach((t) => {\n      if (t.timer) clearTimeout(t.timer);\n    });\n  }\n\n  add(config: WcoToastConfig): string {\n    const id = 'wco-toast-' + Math.random().toString(36).substring(7);\n    const duration = config.duration ?? 4000;\n\n    const item: WcoToastItem = {\n      id,\n      config: { showIcon: true, type: 'info', ...config },\n      visible: true,\n    };\n\n    this.toasts.push(item);\n\n    setTimeout(() => {\n      const el = document.getElementById(id);\n      if (el && el.offsetHeight > 55) item.tall = true;\n    }, 50);\n\n    if (duration > 0) {\n      item.timer = setTimeout(() => this.dismiss(id), duration);\n    }\n\n    return id;\n  }\n\n  dismiss(id: string): void {\n    const item = this.toasts.find((t) => t.id === id);\n    if (!item) return;\n\n    if (item.timer) clearTimeout(item.timer);\n\n    item.visible = false;\n\n    setTimeout(() => {\n      this.toasts = this.toasts.filter((t) => t.id !== id);\n    }, 300);\n  }\n\n  getSafeHtml(value: string) {\n    return this.sanitizer.bypassSecurityTrustHtml(value || '');\n  }\n\n  getIconMaterial(config: WcoToastConfig) {\n    switch (config.type) {\n      case 'error':\n        return { icon: 'error_outline', color: 'error' };\n      case 'warning':\n        return { icon: 'warning_amber', color: 'warning' };\n      case 'success':\n        return { icon: 'check_circle_outline', color: 'success' };\n      case 'loading':\n        return { icon: 'autorenew', color: 'loading' };\n      default:\n        return { icon: 'info', color: 'info' };\n    }\n  }\n\n  getButtonClass(action: WcoToastConfigActionsTypes): string {\n    const extraClasse = action.extraClasse ?? 'wco-btn btn-sm btn-outline btn-link wco-toast-btn';\n    return `${extraClasse}`.trim();\n  }\n\n  trackById(_: number, item: WcoToastItem): string {\n    return item.id;\n  }\n}\n","<dialog open class=\"wco-toast-container\" [class]=\"'wco-toast-container--' + position\">\n  <span class=\"wco-toast__hover-zone\"></span>\n  <div\n    *ngFor=\"let toast of toasts; trackBy: trackById;let i = index\"\n    class=\"wco-toast\"\n    [id]=\"toast.id\"\n    [class.wco-toast--visible]=\"toast.visible\"\n    [class.wco-toast--start]=\"toast.tall\"\n    [attr.data-position]=\"i\"\n    [class]=\"'wco-toast wco-toast--mini wco-toast--' + getIconMaterial(toast.config).color + (toast.visible ? ' wco-toast--visible' : '')\"\n  >\n    <div class=\"wco-toast__body\">\n      <ng-container *ngIf=\"toast.config.showIcon\">\n        <span class=\"wco-toast__icon material-icons-round\">\n          <ng-container *ngIf=\"toast.config.materialIcon; else defaultIcon\">\n            {{ toast.config.materialIcon }}\n          </ng-container>\n          <ng-template #defaultIcon>\n            {{ getIconMaterial(toast.config).icon }}\n          </ng-template>\n        </span>\n      </ng-container>\n\n      <div class=\"wco-toast__content\">\n        <span>\n          <p class=\"wco-toast__title\" *ngIf=\"toast.config.title\" [innerHTML]=\"getSafeHtml(toast.config.title)\"></p>\n          <p class=\"wco-toast__message\" *ngIf=\"toast.config.message && toast.config.message.length \" [innerHTML]=\"getSafeHtml(toast.config.message)\"></p>\n        </span>\n        <div class=\"wco-toast__actions\" *ngIf=\"toast.config.actions && toast.config.actions.length > 0\">\n          <button\n            type=\"button\"\n            *ngFor=\"let action of toast.config.actions\"\n            [class]=\"getButtonClass(action)\"\n            (click)=\"action.action(); dismiss(toast.id)\"\n          >\n            <span class=\"material-icons-round\" *ngIf=\"action.materialIconLeft\">{{ action.materialIconLeft }}</span>\n            {{ action.text }}\n            <span class=\"material-icons-round\" *ngIf=\"action.materialIconRight\">{{ action.materialIconRight }}</span>\n          </button>\n        </div>\n      </div>\n    </div>\n\n    <button class=\"wco-toast__close\" *ngIf=\"toast.config.close !== false\" (click)=\"dismiss(toast.id)\" aria-label=\"Fechar\">\n      <span class=\"material-icons\">close</span>\n    </button>\n  </div>\n  \n</dialog>\n","import {\n  ApplicationRef,\n  ComponentRef,\n  createComponent,\n  EnvironmentInjector,\n  inject,\n  Injectable,\n} from '@angular/core';\nimport { WcoToastComponent } from './toast.component';\nimport { WcoToastConfig } from './toast.types';\n\n@Injectable({ providedIn: 'root' })\nexport class WcoToastService {\n  private appRef = inject(ApplicationRef);\n  private injector = inject(EnvironmentInjector);\n\n  private componentRef: ComponentRef<WcoToastComponent> | null = null;\n\n  private get instance(): WcoToastComponent {\n    if (!this.componentRef) {\n      this.componentRef = createComponent(WcoToastComponent, {\n        environmentInjector: this.injector,\n      });\n\n      this.appRef.attachView(this.componentRef.hostView);\n      document.body.appendChild(this.componentRef.location.nativeElement);\n    }\n\n    return this.componentRef.instance;\n  }\n\n  show(config: WcoToastConfig): string {\n    if (config.position) {\n      this.instance.position = config.position;\n    }\n    return this.instance.add(config);\n  }\n\n  dismiss(id: string): void {\n    this.componentRef?.instance.dismiss(id);\n  }\n}\n","import {\n  AfterContentInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n  selector: 'wco-sub-tabs',\n  standalone: true,\n  imports: [],\n  template: `<ng-content></ng-content>`,\n  styleUrls: ['./sub-tabs.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n})\nexport class SubTabsComponent implements AfterContentInit, OnChanges, OnDestroy {\n  @Input()\n  public selectedIndex = 0;\n\n  @Output()\n  public tabChange = new EventEmitter<number>();\n\n  private indicator!: HTMLElement;\n  private resizeObserver?: ResizeObserver;\n\n  constructor(private el: ElementRef<HTMLElement>) {}\n\n  ngAfterContentInit(): void {\n    this.indicator = document.createElement('div');\n    this.indicator.className = 'wco-sub-tabs__indicator';\n    this.el.nativeElement.prepend(this.indicator);\n\n    setTimeout(() => {\n      this.reserveBoldWidth();\n      this.indicator.style.transition = 'none';\n      this.applySelection(this.selectedIndex, false);\n      requestAnimationFrame(() => requestAnimationFrame(() => {\n        this.indicator.style.transition = '';\n      }));\n    }, 0);\n\n    this.resizeObserver = new ResizeObserver(() => {\n      this.refreshIndicator();\n    });\n    this.resizeObserver.observe(this.el.nativeElement);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['selectedIndex'] && !changes['selectedIndex'].firstChange) {\n      this.applySelection(this.selectedIndex, false);\n    }\n  }\n\n  @HostListener('click', ['$event'])\n  onClick(event: Event): void {\n    const items = this.getItems();\n    const target = event.target as HTMLElement;\n\n    for (let i = 0; i < items.length; i++) {\n      if (items[i] === target || items[i].contains(target)) {\n        this.applySelection(i, true);\n        break;\n      }\n    }\n  }\n\n  private getItems(): HTMLElement[] {\n    return Array.from(this.el.nativeElement.children).filter(\n      (c) => !c.classList.contains('wco-sub-tabs__indicator')\n    ) as HTMLElement[];\n  }\n\n  private reserveBoldWidth(): void {\n    const items = this.getItems();\n    const host = this.el.nativeElement;\n\n    items.forEach((item) => {\n      const clone = item.cloneNode(true) as HTMLElement;\n      clone.style.cssText = `\n        font-weight: 600;\n        visibility: hidden;\n        position: absolute;\n        pointer-events: none;\n        white-space: nowrap;\n      `;\n      host.appendChild(clone);\n      const boldWidth = clone.offsetWidth;\n      host.removeChild(clone);\n      item.style.minWidth = boldWidth + 'px';\n    });\n  }\n\n  private applySelection(index: number, emit: boolean): void {\n    const items = this.getItems();\n    if (!items.length) return;\n\n    const clamped = Math.max(0, Math.min(index, items.length - 1));\n    this.selectedIndex = clamped;\n\n    items.forEach((item, i) => {\n      item.classList.toggle('wco-subtab-selected', i === clamped);\n    });\n\n    this.moveIndicator(items[clamped]);\n\n    if (emit) {\n      this.tabChange.emit(clamped);\n    }\n  }\n\n  private refreshIndicator(): void {\n    const items = this.getItems();\n    const selected = items[this.selectedIndex];\n    if (selected) {\n      this.moveIndicator(selected);\n    }\n  }\n\n  private moveIndicator(element: HTMLElement): void {\n    if (!this.indicator) return;\n    this.el.nativeElement.style.setProperty('--subtab-left', element.offsetLeft + 'px');\n    this.el.nativeElement.style.setProperty('--subtab-width', element.offsetWidth + 'px');\n  }\n\n  ngOnDestroy(): void {\n    this.resizeObserver?.disconnect();\n  }\n}\n","import { WcoDateInput, WcoDatepickerDisabledReason } from './datepicker.types';\n\ntype SupportedFormat =\n  | 'dd/MM/yyyy'\n  | 'dd/MM/yyyy HH:mm'\n  | 'yyyy-MM-dd'\n  | \"yyyy-MM-dd'T'HH:mm\"\n  | 'MM/yyyy'\n  | 'yyyy-MM';\n\nexport function isValidDate(date: unknown): date is Date {\n  return date instanceof Date && !Number.isNaN(date.getTime());\n}\n\nexport function toDateOnly(date: Date): Date {\n  return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function clampToMinute(date: Date): Date {\n  return new Date(\n    date.getFullYear(),\n    date.getMonth(),\n    date.getDate(),\n    date.getHours(),\n    date.getMinutes(),\n    0,\n    0\n  );\n}\n\nexport function pad2(value: number): string {\n  return String(value).padStart(2, '0');\n}\n\nexport function formatDate(date: Date, format: SupportedFormat): string {\n  const yyyy = date.getFullYear();\n  const MM = pad2(date.getMonth() + 1);\n  const dd = pad2(date.getDate());\n  const HH = pad2(date.getHours());\n  const mm = pad2(date.getMinutes());\n\n  switch (format) {\n    case 'dd/MM/yyyy':\n      return `${dd}/${MM}/${yyyy}`;\n    case 'dd/MM/yyyy HH:mm':\n      return `${dd}/${MM}/${yyyy} ${HH}:${mm}`;\n    case 'yyyy-MM-dd':\n      return `${yyyy}-${MM}-${dd}`;\n    case \"yyyy-MM-dd'T'HH:mm\":\n      return `${yyyy}-${MM}-${dd}T${HH}:${mm}`;\n    case 'MM/yyyy':\n      return `${MM}/${yyyy}`;\n    case 'yyyy-MM':\n      return `${yyyy}-${MM}`;\n  }\n}\n\nexport function parseDate(\n  value: string,\n  format: SupportedFormat\n): Date | null {\n  const trimmed = value.trim();\n  if (!trimmed) return null;\n\n  const asInt = (s: string) => Number.parseInt(s, 10);\n\n  if (format === 'dd/MM/yyyy') {\n    const match = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/.exec(trimmed);\n    if (!match) return null;\n    const day = asInt(match[1]);\n    const month = asInt(match[2]);\n    const year = asInt(match[3]);\n    const date = new Date(year, month - 1, day);\n    if (\n      date.getFullYear() !== year ||\n      date.getMonth() !== month - 1 ||\n      date.getDate() !== day\n    ) {\n      return null;\n    }\n    return date;\n  }\n\n  if (format === 'dd/MM/yyyy HH:mm') {\n    const match = /^(\\d{2})\\/(\\d{2})\\/(\\d{4}) (\\d{2}):(\\d{2})$/.exec(\n      trimmed\n    );\n    if (!match) return null;\n    const day = asInt(match[1]);\n    const month = asInt(match[2]);\n    const year = asInt(match[3]);\n    const hour = asInt(match[4]);\n    const minute = asInt(match[5]);\n    if (hour > 23 || minute > 59) return null;\n    const date = new Date(year, month - 1, day, hour, minute, 0, 0);\n    if (\n      date.getFullYear() !== year ||\n      date.getMonth() !== month - 1 ||\n      date.getDate() !== day ||\n      date.getHours() !== hour ||\n      date.getMinutes() !== minute\n    ) {\n      return null;\n    }\n    return date;\n  }\n\n  if (format === 'yyyy-MM-dd') {\n    const match = /^(\\d{4})-(\\d{2})-(\\d{2})$/.exec(trimmed);\n    if (!match) return null;\n    const year = asInt(match[1]);\n    const month = asInt(match[2]);\n    const day = asInt(match[3]);\n    const date = new Date(year, month - 1, day);\n    if (\n      date.getFullYear() !== year ||\n      date.getMonth() !== month - 1 ||\n      date.getDate() !== day\n    ) {\n      return null;\n    }\n    return date;\n  }\n\n  if (format === \"yyyy-MM-dd'T'HH:mm\") {\n    const match =\n      /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})$/.exec(trimmed);\n    if (!match) return null;\n    const year = asInt(match[1]);\n    const month = asInt(match[2]);\n    const day = asInt(match[3]);\n    const hour = asInt(match[4]);\n    const minute = asInt(match[5]);\n    if (hour > 23 || minute > 59) return null;\n    const date = new Date(year, month - 1, day, hour, minute, 0, 0);\n    if (\n      date.getFullYear() !== year ||\n      date.getMonth() !== month - 1 ||\n      date.getDate() !== day ||\n      date.getHours() !== hour ||\n      date.getMinutes() !== minute\n    ) {\n      return null;\n    }\n    return date;\n  }\n\n  if (format === 'MM/yyyy') {\n    const match = /^(\\d{2})\\/(\\d{4})$/.exec(trimmed);\n    if (!match) return null;\n    const month = asInt(match[1]);\n    const year = asInt(match[2]);\n    if (month < 1 || month > 12) return null;\n    return new Date(year, month - 1, 1);\n  }\n\n  if (format === 'yyyy-MM') {\n    const match = /^(\\d{4})-(\\d{2})$/.exec(trimmed);\n    if (!match) return null;\n    const year = asInt(match[1]);\n    const month = asInt(match[2]);\n    if (month < 1 || month > 12) return null;\n    return new Date(year, month - 1, 1);\n  }\n\n  return null;\n}\n\nexport function coerceDate(value: WcoDateInput | null | undefined): Date | null {\n  if (!value) return null;\n  if (value instanceof Date) return isValidDate(value) ? value : null;\n  if (typeof value !== 'string') return null;\n\n  const trimmed = value.trim();\n  if (!trimmed) return null;\n\n  // Accept common API formats by default.\n  const apiDate = parseDate(trimmed, 'yyyy-MM-dd');\n  if (apiDate) return apiDate;\n\n  const apiDateTime = parseDate(trimmed, \"yyyy-MM-dd'T'HH:mm\");\n  if (apiDateTime) return apiDateTime;\n\n  const brDate = parseDate(trimmed, 'dd/MM/yyyy');\n  if (brDate) return brDate;\n\n  const brDateTime = parseDate(trimmed, 'dd/MM/yyyy HH:mm');\n  if (brDateTime) return brDateTime;\n\n  const monthYear = parseDate(trimmed, 'MM/yyyy');\n  if (monthYear) return monthYear;\n\n  const apiMonth = parseDate(trimmed, 'yyyy-MM');\n  if (apiMonth) return apiMonth;\n\n  return null;\n}\n\nexport function toIsoDateKey(date: Date): string {\n  return formatDate(toDateOnly(date), 'yyyy-MM-dd');\n}\n\nexport function buildDisabledPredicate(options: {\n  disableFuture: boolean;\n  disablePast: boolean;\n  minDate?: Date | null;\n  maxDate?: Date | null;\n  disableWeekends: boolean;\n  disableHolidays: boolean;\n  holidaySet: Set<string>;\n  dateFilter?: ((date: Date) => boolean) | null;\n}): (date: Date) => { disabled: boolean; reason?: WcoDatepickerDisabledReason } {\n  const today = toDateOnly(new Date());\n\n  return (date: Date) => {\n    const day = toDateOnly(date);\n\n    if (options.disableFuture && day.getTime() > today.getTime()) {\n      return { disabled: true, reason: 'future' };\n    }\n\n    if (options.disablePast && day.getTime() < today.getTime()) {\n      return { disabled: true, reason: 'past' };\n    }\n\n    if (options.minDate && day.getTime() < toDateOnly(options.minDate).getTime()) {\n      return { disabled: true, reason: 'minDate' };\n    }\n\n    if (options.maxDate && day.getTime() > toDateOnly(options.maxDate).getTime()) {\n      return { disabled: true, reason: 'maxDate' };\n    }\n\n    if (options.disableWeekends) {\n      const dow = day.getDay();\n      if (dow === 0 || dow === 6) {\n        return { disabled: true, reason: 'weekend' };\n      }\n    }\n\n    if (options.disableHolidays) {\n      const key = toIsoDateKey(day);\n      if (options.holidaySet.has(key)) {\n        return { disabled: true, reason: 'holiday' };\n      }\n    }\n\n    if (options.dateFilter && options.dateFilter(day) === false) {\n      return { disabled: true, reason: 'custom' };\n    }\n\n    return { disabled: false };\n  };\n}\n\n","import {\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostListener,\n  Input,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n  forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  FormsModule,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ReactiveFormsModule,\n  ValidationErrors,\n  Validator,\n} from '@angular/forms';\nimport {\n  WcoDateInput,\n  WcoDateRange,\n  WcoDatepickerMode,\n  WcoDatepickerValue,\n  WcoDatepickerValueFormat,\n} from './datepicker.types';\nimport {\n  buildDisabledPredicate,\n  clampToMinute,\n  coerceDate,\n  formatDate,\n  isValidDate,\n  parseDate,\n  toDateOnly,\n  toIsoDateKey,\n} from './datepicker.utils';\n\ntype CalendarView = 'day' | 'month' | 'year';\n\ntype DayCell = {\n  date: Date;\n  label: number;\n  inMonth: boolean;\n  disabled: boolean;\n  isToday: boolean;\n  isSelected: boolean;\n  isRangeStart: boolean;\n  isRangeEnd: boolean;\n  isInRange: boolean;\n};\n\n@Component({\n  selector: 'wco-datepicker',\n  standalone: true,\n  imports: [CommonModule, ReactiveFormsModule, FormsModule],\n  templateUrl: './datepicker.component.html',\n  styleUrls: ['./datepicker.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DatepickerComponent),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: DatepickerComponent,\n      multi: true,\n    },\n  ],\n})\nexport class DatepickerComponent\n  implements ControlValueAccessor, Validator, OnInit\n{\n  @Output() openedChange = new EventEmitter<boolean>();\n\n  @Input() mode: WcoDatepickerMode = 'single';\n  @Input() valueFormat: WcoDatepickerValueFormat = 'api';\n  @Input() inline = false;\n\n  @Input() label = ' ';\n  @Input() placeholder?: string;\n\n  @Input() placeholderStart = 'Data inicial';\n  @Input() placeholderEnd = 'Data final';\n  @Input() labelStart = ' ';\n  @Input() labelEnd = ' ';\n\n  @Input() inputId = 'datepicker_' + Math.random().toString(36).substring(2);\n  @Input() inputName?: string;\n\n  @Input() required = false;\n  @Input() readonly = false;\n  @Input() showError = false;\n\n  @Input() allowTyping = true;\n  @Input() autoClose = true;\n  @Input() showClear = true;\n  @Input() highlightToday = true;\n\n  @Input() disableFuture = false;\n  @Input() disablePast = false;\n  @Input() minDate?: WcoDateInput | null;\n  @Input() maxDate?: WcoDateInput | null;\n  @Input() disableWeekends = false;\n  @Input() disableHolidays = false;\n  @Input() holidays: WcoDateInput[] = [];\n  @Input() dateFilter?: (date: Date) => boolean;\n\n  @Input() locale: string = 'pt-BR';\n  @Input() weekStartsOn: 0 | 1 = 0;\n\n  @Input() displayFormat?: string;\n  @Input() apiFormat?: string;\n\n  isMobile = window.innerWidth <= 768;\n  isOpen = false;\n  view: CalendarView = 'day';\n\n  private control: AbstractControl | null = null;\n  disabled = false;\n\n  private selected: Date | null = null;\n  private rangeStart: Date | null = null;\n  private rangeEnd: Date | null = null;\n\n  activeMonth = toDateOnly(new Date());\n  activeYearPageStart = new Date().getFullYear() - 6;\n\n  inputValue = '';\n  timeValue = '00:00';\n\n  private manualInputError: string | null = null;\n\n  onTouched = () => {};\n  private propagateChange: (value: any) => void = () => {};\n\n  constructor(private el: ElementRef) {}\n\n  ngOnInit(): void {\n    if (this.inline) {\n      this.view = this.mode === 'month' ? 'month' : 'day';\n    }\n  }\n\n  writeValue(obj: WcoDatepickerValue): void {\n    this.manualInputError = null;\n\n    if (this.mode === 'range') {\n      const range = this.coerceRange(obj);\n      this.rangeStart = range?.start ? toDateOnly(range.start) : null;\n      this.rangeEnd = range?.end ? toDateOnly(range.end) : null;\n      this.activeMonth = toDateOnly(\n        this.rangeStart || this.rangeEnd || new Date()\n      );\n      this.syncInputText();\n      return;\n    }\n\n    const date = this.coerceSingle(obj);\n    if (!date) {\n      this.selected = null;\n      this.inputValue = '';\n      if (this.mode === 'datetime') this.timeValue = '00:00';\n      this.activeMonth = toDateOnly(new Date());\n      return;\n    }\n\n    if (this.mode === 'month') {\n      this.selected = new Date(date.getFullYear(), date.getMonth(), 1);\n    } else if (this.mode === 'datetime') {\n      this.selected = clampToMinute(date);\n      this.timeValue = `${String(this.selected.getHours()).padStart(\n        2,\n        '0'\n      )}:${String(this.selected.getMinutes()).padStart(2, '0')}`;\n    } else {\n      this.selected = toDateOnly(date);\n    }\n\n    this.activeMonth = toDateOnly(this.selected);\n    this.syncInputText();\n  }\n\n  registerOnChange(fn: any): void {\n    this.propagateChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n    if (isDisabled) this.close();\n  }\n\n  validate(control: AbstractControl): ValidationErrors | null {\n    this.control = control;\n\n    if (this.manualInputError) {\n      return { wcoDateInvalid: { reason: this.manualInputError } };\n    }\n\n    const isDisabled = this.buildIsDisabled();\n\n    if (this.mode === 'range') {\n      if (this.required && (!this.rangeStart || !this.rangeEnd)) {\n        return { required: true };\n      }\n      if (this.rangeStart && this.rangeEnd) {\n        if (this.rangeStart.getTime() > this.rangeEnd.getTime()) {\n          return { wcoDateRange: { reason: 'startAfterEnd' } };\n        }\n      }\n      if (this.rangeStart) {\n        const result = isDisabled(this.rangeStart);\n        if (result.disabled) {\n          return {\n            wcoDateDisabled: { part: 'start', reason: result.reason },\n          };\n        }\n      }\n      if (this.rangeEnd) {\n        const result = isDisabled(this.rangeEnd);\n        if (result.disabled) {\n          return { wcoDateDisabled: { part: 'end', reason: result.reason } };\n        }\n      }\n      return null;\n    }\n\n    if (this.required && !this.selected) {\n      return { required: true };\n    }\n\n    if (this.selected) {\n      const result = isDisabled(this.selected);\n      if (result.disabled) return { wcoDateDisabled: { reason: result.reason } };\n    }\n\n    return null;\n  }\n\n  get hasError(): boolean {\n    if (this.showError) return true;\n    return !!this.control && this.control.invalid && this.control.touched;\n  }\n\n  get canInteract(): boolean {\n    return !this.disabled && !this.readonly;\n  }\n\n  get resolvedPlaceholder(): string {\n    if (this.mode === 'range') {\n      return (\n        this.placeholder ||\n        `${this.placeholderStart || 'Data inicial'} - ${\n          this.placeholderEnd || 'Data final'\n        }`\n      );\n    }\n    return this.placeholder || this.resolvedDisplayFormat();\n  }\n\n  open(): void {\n    if (!this.canInteract) return;\n    this.isOpen = true;\n    this.view = this.mode === 'month' ? 'month' : 'day';\n    this.activeYearPageStart = this.activeMonth.getFullYear() - 6;\n    this.openedChange.emit(true);\n  }\n\n  close(): void {\n    if (this.inline) return;\n    this.isOpen = false;\n    this.openedChange.emit(false);\n  }\n\n  toggleOpen(): void {\n    if (this.isOpen) this.close();\n    else this.open();\n  }\n\n  onInputChange(value: string): void {\n    this.inputValue = value;\n    if (!this.allowTyping) return;\n    this.manualInputError = null;\n  }\n\n  onInputBlur(): void {\n    this.onTouched();\n    if (!this.allowTyping) return;\n\n    if (this.mode === 'range') {\n      const parsed = this.parseRangeText(this.inputValue);\n      if (!parsed && this.inputValue.trim()) {\n        this.manualInputError = 'format';\n        this.emitValue();\n        return;\n      }\n\n      this.manualInputError = null;\n      this.rangeStart = parsed?.start ? toDateOnly(parsed.start) : null;\n      this.rangeEnd = parsed?.end ? toDateOnly(parsed.end) : null;\n\n      if (this.rangeStart && this.rangeEnd) {\n        if (this.rangeStart.getTime() > this.rangeEnd.getTime()) {\n          const tmp = this.rangeStart;\n          this.rangeStart = this.rangeEnd;\n          this.rangeEnd = tmp;\n        }\n      }\n\n      const isDisabled = this.buildIsDisabled();\n      if (this.rangeStart && isDisabled(this.rangeStart).disabled) {\n        this.manualInputError = 'disabled';\n      }\n      if (this.rangeEnd && isDisabled(this.rangeEnd).disabled) {\n        this.manualInputError = 'disabled';\n      }\n\n      this.activeMonth = toDateOnly(this.rangeStart || this.rangeEnd || new Date());\n      this.syncInputText();\n      this.emitValue();\n      return;\n    }\n\n    const parsed = this.parseUserText(this.inputValue);\n    if (!parsed && this.inputValue.trim()) {\n      this.manualInputError = 'format';\n      this.emitValue();\n      return;\n    }\n\n    this.manualInputError = null;\n    this.applySingleSelection(parsed);\n  }\n\n  onTimeChange(value: string): void {\n    this.timeValue = value;\n    if (this.mode !== 'datetime') return;\n    if (!this.selected) return;\n\n    const match = /^(\\d{2}):(\\d{2})$/.exec(value);\n    if (!match) return;\n    const hour = Number.parseInt(match[1], 10);\n    const minute = Number.parseInt(match[2], 10);\n    if (hour > 23 || minute > 59) return;\n\n    this.selected = new Date(\n      this.selected.getFullYear(),\n      this.selected.getMonth(),\n      this.selected.getDate(),\n      hour,\n      minute,\n      0,\n      0\n    );\n    this.syncInputText();\n    this.emitValue();\n  }\n\n  selectDay(day: DayCell): void {\n    if (!this.canInteract) return;\n    if (day.disabled) return;\n\n    if (this.mode === 'range') {\n      if (!this.rangeStart || (this.rangeStart && this.rangeEnd)) {\n        this.rangeStart = toDateOnly(day.date);\n        this.rangeEnd = null;\n      } else {\n        const end = toDateOnly(day.date);\n        if (end.getTime() < this.rangeStart.getTime()) {\n          this.rangeEnd = this.rangeStart;\n          this.rangeStart = end;\n        } else {\n          this.rangeEnd = end;\n        }\n        if (this.autoClose) this.close();\n      }\n      this.activeMonth = toDateOnly(this.rangeStart || day.date);\n      this.syncInputText();\n      this.emitValue();\n      return;\n    }\n\n    if (this.mode === 'datetime') {\n      const match = /^(\\d{2}):(\\d{2})$/.exec(this.timeValue);\n      const hour = match ? Number.parseInt(match[1], 10) : 0;\n      const minute = match ? Number.parseInt(match[2], 10) : 0;\n      this.selected = new Date(\n        day.date.getFullYear(),\n        day.date.getMonth(),\n        day.date.getDate(),\n        hour,\n        minute,\n        0,\n        0\n      );\n      this.syncInputText();\n      this.emitValue();\n      if (this.autoClose) this.close();\n      return;\n    }\n\n    this.selected = toDateOnly(day.date);\n    this.activeMonth = toDateOnly(this.selected);\n    this.syncInputText();\n    this.emitValue();\n    if (this.autoClose) this.close();\n  }\n\n  selectMonth(monthIndex: number): void {\n    if (!this.canInteract) return;\n\n    const candidate = new Date(this.activeMonth.getFullYear(), monthIndex, 1);\n    const isDisabled = this.buildIsDisabled();\n    if (isDisabled(candidate).disabled) return;\n\n    if (this.mode === 'month') {\n      this.selected = candidate;\n      this.activeMonth = toDateOnly(candidate);\n      this.syncInputText();\n      this.emitValue();\n      if (this.autoClose) this.close();\n      return;\n    }\n\n    this.activeMonth = toDateOnly(candidate);\n    this.view = 'day';\n  }\n\n  selectYear(year: number): void {\n    if (!this.canInteract) return;\n    this.activeMonth = new Date(year, this.activeMonth.getMonth(), 1);\n    this.view = this.mode === 'month' ? 'month' : 'day';\n  }\n\n  prev(): void {\n    if (this.view === 'day') {\n      this.activeMonth = new Date(\n        this.activeMonth.getFullYear(),\n        this.activeMonth.getMonth() - 1,\n        1\n      );\n      return;\n    }\n    if (this.view === 'month') {\n      this.activeMonth = new Date(\n        this.activeMonth.getFullYear() - 1,\n        this.activeMonth.getMonth(),\n        1\n      );\n      return;\n    }\n    this.activeYearPageStart -= 12;\n  }\n\n  next(): void {\n    if (this.view === 'day') {\n      this.activeMonth = new Date(\n        this.activeMonth.getFullYear(),\n        this.activeMonth.getMonth() + 1,\n        1\n      );\n      return;\n    }\n    if (this.view === 'month') {\n      this.activeMonth = new Date(\n        this.activeMonth.getFullYear() + 1,\n        this.activeMonth.getMonth(),\n        1\n      );\n      return;\n    }\n    this.activeYearPageStart += 12;\n  }\n\n  switchView(): void {\n    if (this.view === 'day') {\n      this.view = 'month';\n      return;\n    }\n    if (this.view === 'month') {\n      this.view = 'year';\n      this.activeYearPageStart = this.activeMonth.getFullYear() - 6;\n      return;\n    }\n    this.view = this.mode === 'month' ? 'month' : 'day';\n  }\n\n  get headerLabel(): string {\n    if (this.view === 'month' || this.view === 'year') {\n      return String(this.activeMonth.getFullYear());\n    }\n\n    const monthFormatter = new Intl.DateTimeFormat(this.locale, {\n      month: 'long',\n      year: 'numeric',\n    });\n    const label = monthFormatter.format(\n      new Date(this.activeMonth.getFullYear(), this.activeMonth.getMonth(), 1)\n    );\n    return label.charAt(0).toUpperCase() + label.slice(1);\n  }\n\n  get weekdayLabels(): string[] {\n    const formatter = new Intl.DateTimeFormat(this.locale, { weekday: 'short' });\n    const base = new Date(2023, 0, 1); // Sunday\n    const labels: string[] = [];\n    for (let i = 0; i < 7; i++) {\n      const day = new Date(\n        base.getFullYear(),\n        base.getMonth(),\n        base.getDate() + i\n      );\n      labels.push(formatter.format(day));\n    }\n    if (this.weekStartsOn === 1) {\n      const sunday = labels.shift();\n      if (sunday) labels.push(sunday);\n    }\n    return labels.map((label) => {\n      const clean = label.replace('.', '').trim();\n      const first = Array.from(clean)[0] ?? '';\n      return first ? first.toLocaleUpperCase(this.locale) : '';\n    });\n  }\n\n  get days(): DayCell[] {\n    const year = this.activeMonth.getFullYear();\n    const month = this.activeMonth.getMonth();\n    const first = new Date(year, month, 1);\n    const firstDow = first.getDay();\n    const offset =\n      this.weekStartsOn === 1 ? (firstDow === 0 ? 6 : firstDow - 1) : firstDow;\n    const start = new Date(year, month, 1 - offset);\n\n    const isDisabled = this.buildIsDisabled();\n    const todayKey = toIsoDateKey(new Date());\n\n    const cells: DayCell[] = [];\n    for (let i = 0; i < 42; i++) {\n      const date = new Date(\n        start.getFullYear(),\n        start.getMonth(),\n        start.getDate() + i\n      );\n      const inMonth = date.getMonth() === month;\n      const key = toIsoDateKey(date);\n      const disabled = isDisabled(date).disabled;\n      const isToday = this.highlightToday && key === todayKey;\n\n      const selectedKey = this.selected ? toIsoDateKey(this.selected) : null;\n      const startKey = this.rangeStart ? toIsoDateKey(this.rangeStart) : null;\n      const endKey = this.rangeEnd ? toIsoDateKey(this.rangeEnd) : null;\n\n      const isSelected = selectedKey ? key === selectedKey : false;\n      const isRangeStart = startKey ? key === startKey : false;\n      const isRangeEnd = endKey ? key === endKey : false;\n      const isInRange =\n        this.mode === 'range' && this.rangeStart && this.rangeEnd\n          ? !disabled &&\n            key >= toIsoDateKey(this.rangeStart) &&\n            key <= toIsoDateKey(this.rangeEnd)\n          : false;\n\n      cells.push({\n        date,\n        label: date.getDate(),\n        inMonth,\n        disabled,\n        isToday,\n        isSelected,\n        isRangeStart,\n        isRangeEnd,\n        isInRange,\n      });\n    }\n\n    return cells;\n  }\n\n  isCurrentYear(year: number): boolean {\n    return year === new Date().getFullYear();\n  }\n\n  isSelectedYear(year: number): boolean {\n    if (this.mode === 'range') return false;\n    return !!this.selected && this.selected.getFullYear() === year;\n  }\n\n  isCurrentMonth(monthIndex: number): boolean {\n    const now = new Date();\n    return (\n      monthIndex === now.getMonth() && this.activeMonth.getFullYear() === now.getFullYear()\n    );\n  }\n\n  isSelectedMonth(monthIndex: number): boolean {\n    if (this.mode === 'range') return false;\n    return (\n      !!this.selected &&\n      this.selected.getFullYear() === this.activeMonth.getFullYear() &&\n      this.selected.getMonth() === monthIndex\n    );\n  }\n\n  get monthLabels(): { index: number; label: string; disabled: boolean }[] {\n    const formatter = new Intl.DateTimeFormat(this.locale, { month: 'short' });\n    const isDisabled = this.buildIsDisabled();\n    const year = this.activeMonth.getFullYear();\n    const items: { index: number; label: string; disabled: boolean }[] = [];\n    for (let i = 0; i < 12; i++) {\n      const date = new Date(year, i, 1);\n      const label = formatter.format(date).replace('.', '').trim();\n      items.push({\n        index: i,\n        label: label.toLocaleUpperCase(this.locale),\n        disabled: isDisabled(date).disabled,\n      });\n    }\n    return items;\n  }\n\n  get years(): number[] {\n    return Array.from({ length: 12 }, (_, i) => this.activeYearPageStart + i);\n  }\n\n  @HostListener('document:click', ['$event'])\n  onDocumentClick(event: MouseEvent) {\n    if (!this.isOpen) return;\n    const target = event.target as HTMLElement | null;\n    if (!target) return;\n    if (!this.el.nativeElement.contains(target)) this.close();\n  }\n\n  @HostListener('window:resize')\n  onResize() {\n    this.isMobile = window.innerWidth <= 768;\n  }\n\n  private getFixedContainingBlock(el: HTMLElement): HTMLElement | null {\n    // In some environments (e.g. Storybook), an ancestor may have `transform`,\n    // which changes the containing block for `position: fixed`.\n    // When that happens, we must position relative to that ancestor.\n    let node: HTMLElement | null = el.parentElement;\n    while (node && node !== document.documentElement) {\n      const style = window.getComputedStyle(node);\n      const hasTransform = style.transform && style.transform !== 'none';\n      const hasPerspective = style.perspective && style.perspective !== 'none';\n      const hasFilter = style.filter && style.filter !== 'none';\n      const hasContainPaint = style.contain?.includes('paint') ?? false;\n\n      if (hasTransform || hasPerspective || hasFilter || hasContainPaint) {\n        return node;\n      }\n      node = node.parentElement;\n    }\n    return null;\n  }\n\n  private emitValue(): void {\n    this.propagateChange(this.buildOutgoingValue());\n  }\n\n  private buildOutgoingValue(): any {\n    const resolvedApiFormat = this.resolvedApiFormat();\n    const resolvedDisplayFormat = this.resolvedDisplayFormat();\n    const format =\n      this.valueFormat === 'api' ? resolvedApiFormat : resolvedDisplayFormat;\n\n    if (this.mode === 'range') {\n      const start = this.rangeStart\n        ? formatDate(this.rangeStart, format as any)\n        : null;\n      const end = this.rangeEnd ? formatDate(this.rangeEnd, format as any) : null;\n      return { start, end } satisfies WcoDateRange<string>;\n    }\n\n    if (!this.selected) return null;\n    return formatDate(this.selected, format as any);\n  }\n\n  private resolvedApiFormat(): string {\n    if (this.apiFormat) return this.apiFormat;\n    if (this.mode === 'datetime') return \"yyyy-MM-dd'T'HH:mm\";\n    if (this.mode === 'month') return 'yyyy-MM';\n    return 'yyyy-MM-dd';\n  }\n\n  private resolvedDisplayFormat(): string {\n    if (this.displayFormat) return this.displayFormat;\n    if (this.mode === 'datetime') return 'dd/MM/yyyy HH:mm';\n    if (this.mode === 'month') return 'MM/yyyy';\n    return 'dd/MM/yyyy';\n  }\n\n  private syncInputText(): void {\n    const display = this.resolvedDisplayFormat();\n\n    if (this.mode === 'range') {\n      const start = this.rangeStart ? formatDate(this.rangeStart, display as any) : '';\n      const end = this.rangeEnd ? formatDate(this.rangeEnd, display as any) : '';\n      this.inputValue = end ? `${start} - ${end}` : start;\n      return;\n    }\n\n    this.inputValue = this.selected ? formatDate(this.selected, display as any) : '';\n  }\n\n  private parseUserText(value: string): Date | null {\n    const display = this.resolvedDisplayFormat();\n    const api = this.resolvedApiFormat();\n\n    const trimmed = value.trim();\n    if (!trimmed) return null;\n\n    const parsedDisplay = parseDate(trimmed, display as any);\n    const parsedApi = parsedDisplay ? null : parseDate(trimmed, api as any);\n    const parsed = parsedDisplay || parsedApi;\n    if (!parsed) return null;\n\n    if (this.mode === 'month') return new Date(parsed.getFullYear(), parsed.getMonth(), 1);\n    if (this.mode === 'datetime') return clampToMinute(parsed);\n    return toDateOnly(parsed);\n  }\n\n  private parseRangeText(value: string): WcoDateRange<Date> | null {\n    const trimmed = value.trim();\n    if (!trimmed) return null;\n\n    const separators = [' - ', ' até ', ' to '];\n    let sepFound: string | null = null;\n    for (const sep of separators) {\n      if (trimmed.includes(sep)) {\n        sepFound = sep;\n        break;\n      }\n    }\n\n    if (!sepFound) {\n      const only = this.parseUserText(trimmed);\n      return { start: only, end: null };\n    }\n\n    const parts = trimmed.split(sepFound).map((p) => p.trim());\n    const startText = parts[0] || '';\n    const endText = parts.slice(1).join(sepFound).trim();\n\n    const start = startText ? this.parseUserText(startText) : null;\n    const end = endText ? this.parseUserText(endText) : null;\n    if (!start && !end) return null;\n    return { start, end };\n  }\n\n  private applySingleSelection(date: Date | null): void {\n    if (this.mode === 'range') return;\n\n    if (!date) {\n      this.selected = null;\n      this.syncInputText();\n      this.emitValue();\n      return;\n    }\n\n    const isDisabled = this.buildIsDisabled();\n    if (isDisabled(date).disabled) {\n      this.manualInputError = 'disabled';\n      this.emitValue();\n      return;\n    }\n\n    this.manualInputError = null;\n    if (this.mode === 'month') this.selected = new Date(date.getFullYear(), date.getMonth(), 1);\n    else if (this.mode === 'datetime') this.selected = clampToMinute(date);\n    else this.selected = toDateOnly(date);\n\n    this.activeMonth = toDateOnly(this.selected);\n    this.syncInputText();\n    this.emitValue();\n  }\n\n  private coerceSingle(obj: WcoDatepickerValue): Date | null {\n    if (obj === null || obj === undefined) return null;\n    if (obj instanceof Date) return isValidDate(obj) ? obj : null;\n    if (typeof obj === 'string') return coerceDate(obj);\n    if (typeof obj === 'object' && 'start' in obj && 'end' in obj) return null;\n    return null;\n  }\n\n  private coerceRange(obj: WcoDatepickerValue): WcoDateRange<Date> | null {\n    if (!obj) return null;\n    if (typeof obj !== 'object') return null;\n    if (!('start' in obj) || !('end' in obj)) return null;\n\n    const start = coerceDate((obj as any).start);\n    const end = coerceDate((obj as any).end);\n    return { start, end };\n  }\n\n  private buildIsDisabled() {\n    const min = coerceDate(this.minDate ?? null);\n    const max = coerceDate(this.maxDate ?? null);\n    const holidaySet = new Set<string>();\n    for (const h of this.holidays || []) {\n      const d = coerceDate(h);\n      if (d) holidaySet.add(toIsoDateKey(d));\n    }\n\n    return buildDisabledPredicate({\n      disableFuture: this.disableFuture,\n      disablePast: this.disablePast,\n      minDate: min,\n      maxDate: max,\n      disableWeekends: this.disableWeekends,\n      disableHolidays: this.disableHolidays,\n      holidaySet,\n      dateFilter: this.dateFilter || null,\n    });\n  }\n}\n","<div\n  class=\"wco-datepicker\"\n  [class.wco-datepicker--open]=\"isOpen\"\n  [class.wco-datepicker--isMobile]=\"isMobile\"\n>\n  <ng-container *ngIf=\"mode !== 'range' && !inline\">\n    <div\n      class=\"form-field wco-datepicker__field\"\n      [class.form-field--error]=\"hasError\"\n      [class.form-field--readonly]=\"readonly\"\n    >\n      <input\n        [id]=\"inputId\"\n        [name]=\"inputName\"\n        [attr.required]=\"required ? '' : null\"\n        [placeholder]=\"resolvedPlaceholder\"\n        [readOnly]=\"readonly || !allowTyping\"\n        [disabled]=\"disabled\"\n        [value]=\"inputValue\"\n        (click)=\"open()\"\n        (input)=\"onInputChange($any($event.target).value)\"\n        (blur)=\"onInputBlur()\"\n        (keydown.enter)=\"$event.preventDefault(); onInputBlur()\"\n      />\n      <label [for]=\"inputId\">{{ label }}</label>\n\n      <span\n        class=\"material-icons-round wco-datepicker__suffix wco-datepicker__toggle\"\n        (click)=\"toggleOpen()\"\n        >calendar_today</span\n      >\n    </div>\n  </ng-container>\n\n  <ng-container *ngIf=\"mode === 'range' && !inline\">\n    <div\n      class=\"form-field wco-datepicker__field\"\n      [class.form-field--error]=\"hasError\"\n      [class.form-field--readonly]=\"readonly\"\n    >\n      <input\n        [id]=\"inputId\"\n        [name]=\"inputName\"\n        [attr.required]=\"required ? '' : null\"\n        [placeholder]=\"resolvedPlaceholder\"\n        [readOnly]=\"readonly || !allowTyping\"\n        [disabled]=\"disabled\"\n        [value]=\"inputValue\"\n        (click)=\"open()\"\n        (input)=\"onInputChange($any($event.target).value)\"\n        (blur)=\"onInputBlur()\"\n        (keydown.enter)=\"$event.preventDefault(); onInputBlur()\"\n      />\n      <label [for]=\"inputId\">{{ label }}</label>\n      <span\n        class=\"material-icons-round wco-datepicker__suffix wco-datepicker__toggle\"\n        (click)=\"toggleOpen()\"\n        >calendar_today</span\n      >\n    </div>\n  </ng-container>\n\n  <div\n    class=\"wco-datepicker__box\"\n    [class.wco-datepicker__box--open]=\"isOpen || inline\"\n    [class.wco-datepicker__box--inline]=\"inline\"\n  >\n    <div class=\"wco-datepicker__panel\" (click)=\"$event.stopPropagation()\">\n      <div class=\"wco-datepicker__header\">\n        <button\n          type=\"button\"\n          class=\"wco-datepicker__title\"\n          (click)=\"switchView()\"\n          [disabled]=\"!canInteract\"\n        >\n          {{ headerLabel }}\n          <span class=\"material-icons text-primary-600\">{{\n            view === \"year\" ? \"arrow_drop_up\" : \"arrow_drop_down\"\n          }}</span>\n        </button>\n\n        <button\n          type=\"button\"\n          class=\"wco-datepicker__nav\"\n          (click)=\"prev()\"\n          [disabled]=\"!canInteract\"\n        >\n          <span class=\"material-icons text-primary-600\">chevron_left</span>\n        </button>\n\n        <button\n          type=\"button\"\n          class=\"wco-datepicker__nav\"\n          (click)=\"next()\"\n          [disabled]=\"!canInteract\"\n        >\n          <span class=\"material-icons text-primary-600\">chevron_right</span>\n        </button>\n      </div>\n\n      <div class=\"wco-datepicker__content\" *ngIf=\"view === 'day'\">\n        <div class=\"wco-datepicker__weekdays\">\n          <span *ngFor=\"let w of weekdayLabels\">{{ w }}</span>\n        </div>\n        <div class=\"wco-datepicker__grid\">\n          <button\n            type=\"button\"\n            class=\"wco-datepicker__day\"\n            *ngFor=\"let d of days\"\n            [class.wco-datepicker__day--muted]=\"!d.inMonth\"\n            [class.wco-datepicker__day--today]=\"d.isToday\"\n            [class.wco-datepicker__day--selected]=\"d.isSelected\"\n            [class.wco-datepicker__day--range]=\"d.isInRange\"\n            [class.wco-datepicker__day--rangeStart]=\"d.isRangeStart\"\n            [class.wco-datepicker__day--rangeEnd]=\"d.isRangeEnd\"\n            [disabled]=\"d.disabled || !canInteract\"\n            (click)=\"selectDay(d)\"\n          >\n            {{ d.label }}\n          </button>\n        </div>\n      </div>\n\n      <div class=\"wco-datepicker__content\" *ngIf=\"view === 'month'\">\n        <div class=\"wco-datepicker__months\">\n          <button\n            type=\"button\"\n            class=\"wco-datepicker__month\"\n            *ngFor=\"let m of monthLabels\"\n            [disabled]=\"m.disabled || !canInteract\"\n            [class.wco-datepicker__month--active]=\"\n              m.index === activeMonth.getMonth()\n            \"\n            [class.wco-datepicker__month--current]=\"isCurrentMonth(m.index)\"\n            [class.wco-datepicker__month--selected]=\"isSelectedMonth(m.index)\"\n            (click)=\"selectMonth(m.index)\"\n          >\n            {{ m.label }}\n          </button>\n        </div>\n      </div>\n\n      <div class=\"wco-datepicker__content\" *ngIf=\"view === 'year'\">\n        <div class=\"wco-datepicker__years\">\n          <button\n            type=\"button\"\n            class=\"wco-datepicker__year\"\n            *ngFor=\"let y of years\"\n            [class.wco-datepicker__year--active]=\"\n              y === activeMonth.getFullYear()\n            \"\n            [class.wco-datepicker__year--current]=\"isCurrentYear(y)\"\n            [class.wco-datepicker__year--selected]=\"isSelectedYear(y)\"\n            [disabled]=\"!canInteract\"\n            (click)=\"selectYear(y)\"\n          >\n            {{ y }}\n          </button>\n        </div>\n      </div>\n\n      <div class=\"wco-datepicker__time\" *ngIf=\"mode === 'datetime'\">\n        <label class=\"wco-datepicker__timeLabel\">Hora</label>\n        <input\n          type=\"time\"\n          class=\"wco-datepicker__timeInput\"\n          [disabled]=\"disabled || readonly\"\n          [value]=\"timeValue\"\n          (input)=\"onTimeChange($any($event.target).value)\"\n        />\n      </div>\n    </div>\n  </div>\n</div>\n","/*\n * Public API Surface of ngx-fenixds\n */\n\nexport * from './lib/step/step.component';\nexport * from './lib/stepper/stepper.component';\nexport * from './lib/stepper-group/stepper-group.component';\nexport * from './lib/upload/upload.component';\nexport * from './lib/upload/upload.types';\n\n// msg box feedback\nexport * from './lib/msg-box-feedback/msg-box-feedback.component';\nexport * from './lib/msg-box-feedback/msg-box-feeback.types';\n\n//msg navtabs\nexport * from './lib/tabs/tabs.component';\nexport * from './lib/tabs/tabs.types';\n\n//Pagination\nexport * from './lib/pagination/pagination.component';\n\n// Avatar\nexport * from './lib/user-avatar/user-avatar.component';\n\n// Smart Select\nexport * from './lib/smart-select/smart-select.component';\nexport * from './lib/smart-select/smart-select-options.component';\n\n// Timeline\nexport * from './lib/timeline/timeline.component';\n\n// Preview File\nexport * from './lib/preview-file/preview-file.component';\nexport * from './lib/preview-file/preview-file.types';\n\n// Modal\nexport * from './lib/modal-alert/modal-alert.component';\nexport * from './lib/modal-alert/modal-alert.types';\n\n// Table\nexport * from './lib/table/table.component';\nexport * from './lib/table/table.types';\n\n// Toast\nexport * from './lib/toast/toast.component';\nexport * from './lib/toast/toast.service';\nexport * from './lib/toast/toast.types';\n\n// Sub Tabs\nexport * from './lib/sub-tabs/sub-tabs.component';\n\n// Datepicker\nexport * from './lib/datepicker/datepicker.component';\nexport * from './lib/datepicker/datepicker.types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2"],"mappings":"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"}