{"version":3,"file":"credi-components.mjs","sources":["../../../projects/credi-components/src/lib/credi-components.service.ts","../../../projects/credi-components/src/lib/credi-components.component.ts","../../../projects/credi-components/src/lib/button/button.component.ts","../../../projects/credi-components/src/lib/button/button.component.html","../../../projects/credi-components/src/lib/autocomplete-search/autocomplete-search.component.ts","../../../projects/credi-components/src/lib/autocomplete-search/autocomplete-search.component.html","../../../projects/credi-components/src/lib/fieldset/fieldset.component.ts","../../../projects/credi-components/src/lib/fieldset/fieldset.component.html","../../../projects/credi-components/src/lib/empty-data/empty-data.component.ts","../../../projects/credi-components/src/lib/empty-data/empty-data.component.html","../../../projects/credi-components/src/lib/chat/chat.component.ts","../../../projects/credi-components/src/lib/chat/chat.component.html","../../../projects/credi-components/src/lib/card-data-expanded/card-data-expanded.component.ts","../../../projects/credi-components/src/lib/card-data-expanded/card-data-expanded.component.html","../../../projects/credi-components/src/lib/accordion/accordion.component.ts","../../../projects/credi-components/src/lib/accordion/accordion.component.html","../../../projects/credi-components/src/lib/accordion-horizontal/accordion-horizontal.component.ts","../../../projects/credi-components/src/lib/accordion-horizontal/accordion-horizontal.component.html","../../../projects/credi-components/src/lib/tree-multi-check/tree-multi-check.component.ts","../../../projects/credi-components/src/lib/tree-multi-check/tree-multi-check.component.html","../../../projects/credi-components/src/lib/tab-vertical/tab/tab.component.ts","../../../projects/credi-components/src/lib/tab-vertical/tab-vertical.component.ts","../../../projects/credi-components/src/lib/tab-vertical/tab-vertical.component.html","../../../projects/credi-components/src/lib/table-global/table-common.ts","../../../projects/credi-components/src/lib/spinner/spinner.component.ts","../../../projects/credi-components/src/lib/spinner/spinner.component.html","../../../projects/credi-components/src/lib/modal/modal-size.enum.ts","../../../projects/credi-components/src/lib/modal/modal.component.ts","../../../projects/credi-components/src/lib/modal/modal.component.html","../../../projects/credi-components/src/lib/table-global/selection-headers-global/selection-headers-global.component.ts","../../../projects/credi-components/src/lib/table-global/selection-headers-global/selection-headers-global.component.html","../../../projects/credi-components/src/lib/pipes/status-translate.pipe.ts","../../../projects/credi-components/src/lib/table-global/table-global.component.ts","../../../projects/credi-components/src/lib/table-global/table-global.component.html","../../../projects/credi-components/src/lib/pipes/pipes.module.ts","../../../projects/credi-components/src/lib/modal/actions-modal/actions-modal.component.ts","../../../projects/credi-components/src/lib/modal/actions-modal/actions-modal.component.html","../../../projects/credi-components/src/lib/loading/loading.component.ts","../../../projects/credi-components/src/lib/loading/loading.component.html","../../../projects/credi-components/src/lib/item-data/item-data.component.ts","../../../projects/credi-components/src/lib/item-data/item-data.component.html","../../../projects/credi-components/src/lib/form-field/form-field.component.ts","../../../projects/credi-components/src/lib/form-field/form-field.component.html","../../../projects/credi-components/src/lib/dual-list/dual-list.component.ts","../../../projects/credi-components/src/lib/dual-list/dual-list.component.html","../../../projects/credi-components/src/lib/scrolling-window/scrolling-window.component.ts","../../../projects/credi-components/src/lib/scrolling-window/scrolling-window.component.html","../../../projects/credi-components/src/lib/credi-components.module.ts","../../../projects/credi-components/src/public-api.ts","../../../projects/credi-components/src/credi-components.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CrediComponentsService {\n\n  constructor() { }\n}\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'lib-credi-components',\r\n  template: ` <p>credi-components works!</p> `,\r\n  standalone: false,\r\n  styles: [],\r\n})\r\nexport class CrediComponentsComponent {}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n  Renderer2,\r\n  ViewChild,\r\n  signal,\r\n} from '@angular/core';\r\n\r\nexport interface IButtonVW {\r\n  color?: 'basic' | 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'white';\r\n  disabled?: boolean;\r\n  onlyIcon?: boolean;\r\n  transparent?: boolean;\r\n  shadow?: boolean;\r\n  iconLeft?: boolean;\r\n  grayColorDisable?: boolean;\r\n  tooltip?: string;\r\n  tooltipDisabled?: string;\r\n  icon?: string;\r\n  text?: string;\r\n  size?: 'xxs' | 'xs' | 'md' | 'xl';\r\n  round?: boolean;\r\n  action?: string | number;\r\n  lg?: boolean;\r\n  removeBackground?: boolean;\r\n  full?: boolean;\r\n  solid?: boolean;\r\n  hide?: boolean;\r\n  type?: 'submit' | 'button' | 'reset';\r\n}\r\n\r\nconst DEFAULT_BUTTON_CONFIG: IButtonVW = {\r\n  color: 'basic',\r\n  disabled: false,\r\n  onlyIcon: false,\r\n  transparent: false,\r\n  shadow: false,\r\n  tooltip: '',\r\n  tooltipDisabled: '',\r\n  grayColorDisable: true,\r\n  icon: '',\r\n  iconLeft: false,\r\n  text: '',\r\n  action: '',\r\n  size: 'md',\r\n  round: false,\r\n  lg: false,\r\n  removeBackground: false,\r\n  full: false,\r\n  solid: false,\r\n  hide: false,\r\n  type: 'submit',\r\n};\r\n\r\nconst VIEWPORT_MARGIN = 8;\r\nconst MENU_GAP = 4;\r\n\r\ntype MenuPlacement = 'above' | 'below';\r\ntype MenuFocusTarget = 'first' | 'last' | null;\r\n\r\n@Component({\r\n  selector: 'ssa-button',\r\n  templateUrl: './button.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./button.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ButtonComponent implements OnDestroy {\r\n  private static nextId = 0;\r\n\r\n  @Input()\r\n  set properties(value: IButtonVW) {\r\n    this.button = { ...DEFAULT_BUTTON_CONFIG, ...value };\r\n\r\n    if (this.button.disabled || this.button.hide) {\r\n      this.closeMenu();\r\n    }\r\n  }\r\n\r\n  @Input()\r\n  set otherActions(value: IButtonVW[]) {\r\n    const actions = (value ?? []).map((item) => ({ ...DEFAULT_BUTTON_CONFIG, ...item }));\r\n    this.menuActions.set(actions);\r\n\r\n    if (!actions.length) {\r\n      this.closeMenu();\r\n    }\r\n  }\r\n\r\n  get otherActions(): IButtonVW[] {\r\n    return this.menuActions();\r\n  }\r\n\r\n  @Output() clickButton = new EventEmitter<IButtonVW>();\r\n\r\n  @ViewChild('menuTrigger') private menuTrigger?: ElementRef<HTMLButtonElement>;\r\n  @ViewChild('menuPanel') private menuPanel?: ElementRef<HTMLDivElement>;\r\n\r\n  readonly instanceId = ButtonComponent.nextId++;\r\n  readonly triggerId = `button-sa-trigger-${this.instanceId}`;\r\n  readonly menuId = `button-sa-menu-${this.instanceId}`;\r\n\r\n  button: IButtonVW = { ...DEFAULT_BUTTON_CONFIG };\r\n  readonly menuOpen = signal(false);\r\n  readonly menuPositioned = signal(false);\r\n  readonly menuPlacement = signal<MenuPlacement>('below');\r\n  readonly menuTop = signal(0);\r\n  readonly menuLeft = signal(0);\r\n  readonly menuWidth = signal(0);\r\n  readonly menuMaxHeight = signal(0);\r\n\r\n  private readonly menuActions = signal<IButtonVW[]>([]);\r\n  private menuAttachedToBody = false;\r\n  private removeDocumentClickListener?: () => void;\r\n  private removeViewportResizeListener?: () => void;\r\n  private removeCapturedScrollListener?: () => void;\r\n  private readonly handleCapturedScroll = (): void => {\r\n    if (this.menuOpen()) {\r\n      this.updateMenuPosition();\r\n      this.changeDetectorRef.detectChanges();\r\n    }\r\n  };\r\n\r\n  constructor(\r\n    @Inject(DOCUMENT) private readonly document: Document,\r\n    private readonly renderer: Renderer2,\r\n    private readonly changeDetectorRef: ChangeDetectorRef,\r\n  ) {}\r\n\r\n  ngOnDestroy(): void {\r\n    this.removeGlobalListeners();\r\n    this.detachMenuPanel();\r\n  }\r\n\r\n  onClick(button: IButtonVW): void {\r\n    if (button.disabled) {\r\n      return;\r\n    }\r\n\r\n    this.clickButton.emit(button);\r\n    this.closeMenu();\r\n  }\r\n\r\n  toggleMenu(): void {\r\n    if (this.menuOpen()) {\r\n      this.closeMenu();\r\n      return;\r\n    }\r\n\r\n    this.openMenu(null);\r\n  }\r\n\r\n  onTriggerKeydown(event: KeyboardEvent): void {\r\n    if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') {\r\n      return;\r\n    }\r\n\r\n    event.preventDefault();\r\n    this.openMenu(event.key === 'ArrowDown' ? 'first' : 'last');\r\n  }\r\n\r\n  onMenuKeydown(event: KeyboardEvent): void {\r\n    if (event.key === 'Escape') {\r\n      event.preventDefault();\r\n      this.closeMenu(true);\r\n      return;\r\n    }\r\n\r\n    if (event.key === 'Tab') {\r\n      this.closeMenu();\r\n      return;\r\n    }\r\n\r\n    const menuItems = this.getEnabledMenuItems();\r\n    if (!menuItems.length) {\r\n      return;\r\n    }\r\n\r\n    const activeIndex = menuItems.indexOf(this.document.activeElement as HTMLButtonElement);\r\n    let nextIndex: number | undefined;\r\n\r\n    switch (event.key) {\r\n      case 'ArrowDown':\r\n        nextIndex = activeIndex < 0 ? 0 : (activeIndex + 1) % menuItems.length;\r\n        break;\r\n      case 'ArrowUp':\r\n        nextIndex = activeIndex <= 0 ? menuItems.length - 1 : activeIndex - 1;\r\n        break;\r\n      case 'Home':\r\n        nextIndex = 0;\r\n        break;\r\n      case 'End':\r\n        nextIndex = menuItems.length - 1;\r\n        break;\r\n      default:\r\n        return;\r\n    }\r\n\r\n    event.preventDefault();\r\n    menuItems[nextIndex].focus();\r\n  }\r\n\r\n  closeMenu(restoreFocus = false): void {\r\n    if (!this.menuOpen() && !this.menuAttachedToBody) {\r\n      return;\r\n    }\r\n\r\n    this.menuOpen.set(false);\r\n    this.menuPositioned.set(false);\r\n    this.removeGlobalListeners();\r\n    this.detachMenuPanel();\r\n\r\n    if (restoreFocus) {\r\n      this.menuTrigger?.nativeElement.focus();\r\n    }\r\n  }\r\n\r\n  getTooltip(btnConfig: { disabled?: boolean; tooltip?: string; tooltipDisabled?: string }): string {\r\n    if (btnConfig.disabled) {\r\n      return btnConfig.tooltipDisabled ? btnConfig.tooltipDisabled : 'Botón deshabilitado';\r\n    }\r\n\r\n    return btnConfig.tooltip ?? '';\r\n  }\r\n\r\n  getButtonClasses(btnConfig: IButtonVW, space: boolean, isMain: boolean): Record<string, boolean> {\r\n    return {\r\n      lg: btnConfig.lg ?? false,\r\n      space,\r\n      'menu-trigger': isMain && this.otherActions.length > 0,\r\n      shadow: btnConfig.shadow ?? false,\r\n      full: btnConfig.full ?? false,\r\n      solid: btnConfig.solid ?? false,\r\n      'gray-color': btnConfig.grayColorDisable ?? false,\r\n      transparent: btnConfig.transparent ?? false,\r\n      'remove-background': btnConfig.removeBackground ?? false,\r\n      round: Boolean(isMain && btnConfig.round && btnConfig.onlyIcon),\r\n      icon: Boolean(btnConfig.icon && (!btnConfig.onlyIcon || !isMain)),\r\n      'only-icon': Boolean(isMain && btnConfig.onlyIcon),\r\n      disabled: btnConfig.disabled ?? false,\r\n    };\r\n  }\r\n\r\n  private openMenu(focusTarget: MenuFocusTarget): void {\r\n    if (!this.otherActions.length || this.button.disabled || this.button.hide || !this.menuTrigger || !this.menuPanel) {\r\n      return;\r\n    }\r\n\r\n    this.attachMenuPanel();\r\n    this.registerGlobalListeners();\r\n    this.menuOpen.set(true);\r\n    this.menuPositioned.set(false);\r\n    this.changeDetectorRef.detectChanges();\r\n    this.updateMenuPosition();\r\n    this.menuPositioned.set(true);\r\n    this.changeDetectorRef.detectChanges();\r\n\r\n    if (focusTarget) {\r\n      const menuItems = this.getEnabledMenuItems();\r\n      const targetIndex = focusTarget === 'first' ? 0 : menuItems.length - 1;\r\n      menuItems[targetIndex]?.focus();\r\n    }\r\n  }\r\n\r\n  private updateMenuPosition(): void {\r\n    if (!this.menuOpen() || !this.menuTrigger || !this.menuPanel) {\r\n      return;\r\n    }\r\n\r\n    const triggerRect = this.menuTrigger.nativeElement.getBoundingClientRect();\r\n    const panel = this.menuPanel.nativeElement;\r\n    const viewport = this.document.defaultView;\r\n    const viewportWidth = this.document.documentElement.clientWidth || viewport?.innerWidth || 0;\r\n    const viewportHeight = this.document.documentElement.clientHeight || viewport?.innerHeight || 0;\r\n    const availableBelow = Math.max(0, viewportHeight - triggerRect.bottom - MENU_GAP - VIEWPORT_MARGIN);\r\n    const availableAbove = Math.max(0, triggerRect.top - MENU_GAP - VIEWPORT_MARGIN);\r\n    const naturalMenuHeight = panel.scrollHeight;\r\n    const openAbove = naturalMenuHeight > availableBelow && availableAbove > availableBelow;\r\n    const availableHeight = openAbove ? availableAbove : availableBelow;\r\n    const renderedMenuHeight = Math.min(naturalMenuHeight, availableHeight);\r\n    const maximumViewportWidth = Math.max(0, viewportWidth - VIEWPORT_MARGIN * 2);\r\n    const naturalMenuWidth = Math.ceil(\r\n      Math.max(panel.scrollWidth, ...Array.from(panel.children).map((item) => item.getBoundingClientRect().width)),\r\n    );\r\n\r\n    this.menuPlacement.set(openAbove ? 'above' : 'below');\r\n    this.menuMaxHeight.set(availableHeight);\r\n    this.menuWidth.set(Math.min(Math.max(triggerRect.width, naturalMenuWidth), maximumViewportWidth));\r\n    const preferredMenuLeft =\r\n      triggerRect.left + this.menuWidth() > viewportWidth - VIEWPORT_MARGIN\r\n        ? triggerRect.right - this.menuWidth()\r\n        : triggerRect.left;\r\n    this.menuLeft.set(\r\n      Math.min(\r\n        Math.max(preferredMenuLeft, VIEWPORT_MARGIN),\r\n        Math.max(VIEWPORT_MARGIN, viewportWidth - VIEWPORT_MARGIN - this.menuWidth()),\r\n      ),\r\n    );\r\n    this.menuTop.set(\r\n      openAbove\r\n        ? Math.max(VIEWPORT_MARGIN, triggerRect.top - MENU_GAP - renderedMenuHeight)\r\n        : triggerRect.bottom + MENU_GAP,\r\n    );\r\n  }\r\n\r\n  private getEnabledMenuItems(): HTMLButtonElement[] {\r\n    if (!this.menuPanel) {\r\n      return [];\r\n    }\r\n\r\n    return Array.from(\r\n      this.menuPanel.nativeElement.querySelectorAll<HTMLButtonElement>('button[role=\"menuitem\"]:not(:disabled)'),\r\n    );\r\n  }\r\n\r\n  private attachMenuPanel(): void {\r\n    if (!this.menuPanel || this.menuAttachedToBody) {\r\n      return;\r\n    }\r\n\r\n    this.renderer.appendChild(this.document.body, this.menuPanel.nativeElement);\r\n    this.menuAttachedToBody = true;\r\n  }\r\n\r\n  private detachMenuPanel(): void {\r\n    const panel = this.menuPanel?.nativeElement;\r\n    if (this.menuAttachedToBody && panel?.parentNode === this.document.body) {\r\n      this.renderer.removeChild(this.document.body, panel);\r\n    }\r\n    this.menuAttachedToBody = false;\r\n  }\r\n\r\n  private registerGlobalListeners(): void {\r\n    if (this.removeDocumentClickListener) {\r\n      return;\r\n    }\r\n\r\n    this.removeDocumentClickListener = this.renderer.listen(this.document, 'click', (event: MouseEvent) => {\r\n      const target = event.target;\r\n      if (\r\n        target instanceof Node &&\r\n        (this.menuPanel?.nativeElement.contains(target) || this.menuTrigger?.nativeElement.contains(target))\r\n      ) {\r\n        return;\r\n      }\r\n\r\n      this.closeMenu();\r\n      this.changeDetectorRef.detectChanges();\r\n    });\r\n\r\n    const viewport = this.document.defaultView;\r\n    if (viewport) {\r\n      this.removeViewportResizeListener = this.renderer.listen(viewport, 'resize', () => {\r\n        if (this.menuOpen()) {\r\n          this.updateMenuPosition();\r\n          this.changeDetectorRef.detectChanges();\r\n        }\r\n      });\r\n    }\r\n\r\n    this.document.addEventListener('scroll', this.handleCapturedScroll, true);\r\n    this.removeCapturedScrollListener = () =>\r\n      this.document.removeEventListener('scroll', this.handleCapturedScroll, true);\r\n  }\r\n\r\n  private removeGlobalListeners(): void {\r\n    this.removeDocumentClickListener?.();\r\n    this.removeViewportResizeListener?.();\r\n    this.removeCapturedScrollListener?.();\r\n    this.removeDocumentClickListener = undefined;\r\n    this.removeViewportResizeListener = undefined;\r\n    this.removeCapturedScrollListener = undefined;\r\n  }\r\n}\r\n","<ng-container\r\n  [ngTemplateOutlet]=\"buttonContentTemplate\"\r\n  [ngTemplateOutletContext]=\"{ button: button, space: false, isMain: true }\"\r\n></ng-container>\r\n\r\n@if (otherActions.length) {\r\n  <div\r\n    #menuPanel\r\n    class=\"button-sa-menu\"\r\n    [class.open-above]=\"menuPlacement() === 'above'\"\r\n    [class.positioned]=\"menuPositioned()\"\r\n    [hidden]=\"!menuOpen()\"\r\n    [id]=\"menuId\"\r\n    [style.top.px]=\"menuTop()\"\r\n    [style.left.px]=\"menuLeft()\"\r\n    [style.width.px]=\"menuWidth()\"\r\n    [style.max-height.px]=\"menuMaxHeight()\"\r\n    role=\"menu\"\r\n    tabindex=\"-1\"\r\n    [attr.aria-labelledby]=\"triggerId\"\r\n    (keydown)=\"onMenuKeydown($event)\"\r\n  >\r\n    @for (otherBtn of otherActions; track $index) {\r\n      <ng-container\r\n        [ngTemplateOutlet]=\"buttonContentTemplate\"\r\n        [ngTemplateOutletContext]=\"{ button: otherBtn, space: true, isMain: false }\"\r\n      ></ng-container>\r\n    }\r\n  </div>\r\n}\r\n\r\n<ng-template #buttonContentTemplate let-btnConfig=\"button\" let-space=\"space\" let-isMain=\"isMain\">\r\n  @if (isMain && !otherActions.length && !btnConfig.hide) {\r\n    <button\r\n      [class]=\"btnConfig.size + ' button-content ' + btnConfig.color\"\r\n      [ngClass]=\"getButtonClasses(btnConfig, space, isMain)\"\r\n      (click)=\"$event.stopPropagation(); onClick(btnConfig)\"\r\n      [disabled]=\"btnConfig.disabled\"\r\n      [attr.title]=\"getTooltip(btnConfig) || null\"\r\n      [type]=\"btnConfig.type\"\r\n    >\r\n      @if (btnConfig.icon && btnConfig.iconLeft) {\r\n        <mat-icon fontSet=\"material-symbols-outlined\">{{ btnConfig.icon }}</mat-icon>\r\n      }\r\n      @if (!btnConfig.onlyIcon) {\r\n        <span class=\"text\">{{ btnConfig.text }}</span>\r\n      }\r\n      @if (btnConfig.icon && !btnConfig.iconLeft) {\r\n        <mat-icon fontSet=\"material-symbols-outlined\">{{ btnConfig.icon }}</mat-icon>\r\n      }\r\n    </button>\r\n  }\r\n\r\n  @if (isMain && otherActions.length && !btnConfig.hide) {\r\n    <button\r\n      #menuTrigger\r\n      [id]=\"triggerId\"\r\n      [class]=\"btnConfig.size + ' button-content ' + btnConfig.color\"\r\n      [ngClass]=\"getButtonClasses(btnConfig, space, isMain)\"\r\n      (click)=\"toggleMenu()\"\r\n      (keydown)=\"onTriggerKeydown($event)\"\r\n      [disabled]=\"btnConfig.disabled\"\r\n      [attr.title]=\"getTooltip(btnConfig) || null\"\r\n      [type]=\"btnConfig.type\"\r\n      aria-haspopup=\"menu\"\r\n      [attr.aria-expanded]=\"menuOpen()\"\r\n      [attr.aria-controls]=\"menuId\"\r\n    >\r\n      @if (btnConfig.icon && btnConfig.iconLeft) {\r\n        <mat-icon fontSet=\"material-symbols-outlined\">{{ btnConfig.icon }}</mat-icon>\r\n      }\r\n      @if (!btnConfig.onlyIcon) {\r\n        <span class=\"text\">{{ btnConfig.text }}</span>\r\n      }\r\n      @if (btnConfig.icon && !btnConfig.iconLeft) {\r\n        <mat-icon fontSet=\"material-symbols-outlined\">{{ btnConfig.icon }}</mat-icon>\r\n      }\r\n    </button>\r\n  }\r\n\r\n  @if (!isMain && !btnConfig.hide) {\r\n    <button\r\n      role=\"menuitem\"\r\n      tabindex=\"-1\"\r\n      [class]=\"btnConfig.size + ' button-content ' + btnConfig.color\"\r\n      [ngClass]=\"getButtonClasses(btnConfig, space, isMain)\"\r\n      (click)=\"onClick(btnConfig)\"\r\n      [disabled]=\"btnConfig.disabled\"\r\n      [attr.title]=\"getTooltip(btnConfig) || null\"\r\n      [type]=\"btnConfig.type\"\r\n    >\r\n      <span class=\"text\">{{ btnConfig.text }}</span>\r\n      @if (btnConfig.icon) {\r\n        <mat-icon fontSet=\"material-symbols-outlined\">{{ btnConfig.icon }}</mat-icon>\r\n      }\r\n    </button>\r\n  }\r\n</ng-template>\r\n","import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges, ViewChild, ElementRef } from '@angular/core';\r\n\r\nexport interface IAutoCompleteSearch {\r\n  data: any[];\r\n  label?: string;\r\n  searchKeys: string[];\r\n  fixed?: boolean;\r\n  displayKey: string;\r\n}\r\n\r\n@Component({\r\n  selector: 'ssa-autocomplete-search',\r\n  templateUrl: './autocomplete-search.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./autocomplete-search.component.scss'],\r\n})\r\nexport class AutocompleteSearchComponent implements OnChanges {\r\n  @Input() data: any[] = [];\r\n  @Input() searchKeys: string[] = [];\r\n  @Input() displayKey: string = '';\r\n  @Input() placeholder: string = 'Buscar...';\r\n  @Input() typeForm = false;\r\n  @Input() fixed = false;\r\n  @Input() cleanDataSelected = false;\r\n  @Input() clearInput = false;\r\n  @Input() searchTerm: string = '';\r\n  @Output() itemSelected = new EventEmitter<any>();\r\n  @ViewChild('inputSearch', { static: false }) inputEl!: ElementRef;\r\n  @ViewChild('suggestionsList', { static: false }) suggestionsEl!: ElementRef;\r\n\r\n  filteredSuggestions: any[] = [];\r\n  isSelected = false;\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['clearInput'] && this.clearInput) {\r\n      this.searchTerm = '';\r\n      this.itemSelected.emit(null);\r\n      this.isSelected = false;\r\n    }\r\n  }\r\n\r\n  filterSuggestions(): void {\r\n    const term = this.searchTerm.trim().toLowerCase();\r\n\r\n    if (!term) {\r\n      this.filteredSuggestions = [];\r\n      return;\r\n    }\r\n\r\n    this.filteredSuggestions = this.data.filter((item) =>\r\n      this.searchKeys.some((key) => (item[key] || '').toString().toLowerCase().includes(term)),\r\n    );\r\n    if (this.fixed) this.updateSuggestionsPosition();\r\n  }\r\n\r\n  selectSuggestion(suggestion: any): void {\r\n    this.searchTerm = '';\r\n    if (this.cleanDataSelected) {\r\n      this.searchTerm = suggestion.label;\r\n      this.isSelected = true;\r\n    }\r\n    this.filteredSuggestions = [];\r\n    this.itemSelected.emit(suggestion);\r\n  }\r\n\r\n  clearSearch() {\r\n    this.isSelected = false;\r\n    this.searchTerm = '';\r\n    this.itemSelected.emit(null);\r\n  }\r\n\r\n  updateSuggestionsPosition() {\r\n    if (!this.inputEl || !this.suggestionsEl) return;\r\n    const rect = this.inputEl.nativeElement.getBoundingClientRect();\r\n    const list = this.suggestionsEl.nativeElement;\r\n    list.style.top = rect.bottom + 8 + 'px';\r\n    list.style.left = rect.left + 'px';\r\n    list.style.minWidth = rect.width + 'px';\r\n    list.style.width = rect.width + 'px';\r\n    list.style.maxWidth = rect.width + 'px';\r\n  }\r\n}\r\n","<section class=\"search\" [ngClass]=\"{ 'type-form': typeForm }\">\r\n  <div class=\"input-search\" #inputSearch>\r\n    <mat-icon *ngIf=\"!typeForm\" fontSet=\"material-symbols-outlined\">search</mat-icon>\r\n    <input\r\n      id=\"input_search\"\r\n      type=\"text\"\r\n      [placeholder]=\"placeholder\"\r\n      [(ngModel)]=\"searchTerm\"\r\n      autocomplete=\"off\"\r\n      (input)=\"filterSuggestions()\"\r\n    />\r\n    <mat-icon *ngIf=\"cleanDataSelected\" fontSet=\"material-symbols-outlined\" (click)=\"clearSearch()\" onkeydown=\"\"\r\n      >close</mat-icon\r\n    >\r\n  </div>\r\n  <div\r\n    #suggestionsList\r\n    class=\"suggestions-list\"\r\n    [ngClass]=\"{ 'suggestions-list--fixed': fixed }\"\r\n    *ngIf=\"filteredSuggestions.length || (searchTerm && searchTerm.length > 0 && !isSelected)\"\r\n  >\r\n    <ul *ngIf=\"filteredSuggestions.length\">\r\n      <li *ngFor=\"let suggestion of filteredSuggestions\" (click)=\"selectSuggestion(suggestion)\" onkeypress=\"\">\r\n        {{ suggestion[displayKey] }}\r\n      </li>\r\n    </ul>\r\n    <ul *ngIf=\"filteredSuggestions.length === 0 && searchTerm && searchTerm.length > 0 && !isSelected\">\r\n      <li>No se encontraron coincidencias</li>\r\n    </ul>\r\n  </div>\r\n</section>\r\n","import { Component, ContentChild, Input, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ssa-fieldset',\r\n  templateUrl: './fieldset.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./fieldset.component.scss'],\r\n})\r\nexport class FieldsetComponent {\r\n  @Input() label = '';\r\n  @Input()\r\n  set collapsible(value: boolean) {\r\n    this._collapsible = value;\r\n    if (!value) {\r\n      this.collapsed = false;\r\n    }\r\n  }\r\n\r\n  get collapsible(): boolean {\r\n    return this._collapsible;\r\n  }\r\n\r\n  @ContentChild('dataContent') dataContent!: TemplateRef<any>;\r\n\r\n  @Input()\r\n  set openCmpnt(value: boolean) {\r\n    this.collapsed = !value;\r\n  }\r\n\r\n  collapsed = false;\r\n  private _collapsible = true;\r\n\r\n  toggleCollapse() {\r\n    if (!this.collapsible) {\r\n      return;\r\n    }\r\n\r\n    this.collapsed = !this.collapsed;\r\n  }\r\n}\r\n","<fieldset class=\"collapsible-fieldset form-section\" [class.collapsed]=\"collapsed\">\r\n  <legend\r\n    (click)=\"collapsible && toggleCollapse()\"\r\n    (keydown.enter)=\"collapsible && toggleCollapse()\"\r\n    [attr.tabindex]=\"collapsible ? 0 : null\"\r\n  >\r\n    {{ label }}\r\n  </legend>\r\n  <div *ngIf=\"!collapsed\">\r\n    <ng-container *ngTemplateOutlet=\"dataContent\"></ng-container>\r\n  </div>\r\n  <div\r\n    class=\"collapsed-text\"\r\n    *ngIf=\"collapsed\"\r\n    (click)=\"toggleCollapse()\"\r\n    (keydown.enter)=\"toggleCollapse()\"\r\n    tabindex=\"0\"\r\n  >\r\n    Expandir\r\n  </div>\r\n</fieldset>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ssa-empty-data',\r\n  templateUrl: './empty-data.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./empty-data.component.scss'],\r\n})\r\nexport class EmptyDataComponent {\r\n  @Input() text = 'No se encontraron datos';\r\n}\r\n","<mat-card class=\"no-data-card\">\r\n  <mat-card-content style=\"width: 100%\">\r\n    <p>{{ text }}</p>\r\n  </mat-card-content>\r\n</mat-card>\r\n","import { Component, Input } from '@angular/core';\r\n\r\nexport interface IChat {\r\n  name: string;\r\n  type: string;\r\n  date: string;\r\n  message: string;\r\n  position: 'left' | 'right' | 'central';\r\n}\r\n@Component({\r\n  selector: 'ssa-chat',\r\n  templateUrl: './chat.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./chat.component.scss'],\r\n})\r\nexport class ChatComponent {\r\n  @Input() chatData: IChat[] = [];\r\n\r\n  getAnimationClass(position: string): string[] {\r\n    const baseClass = ['message', position, 'animate__animated'];\r\n    switch (position) {\r\n      case 'left':\r\n        return [...baseClass, 'animate__fadeInLeft'];\r\n      case 'right':\r\n        return [...baseClass, 'animate__fadeInRight'];\r\n      case 'central':\r\n        return [...baseClass, 'animate__fadeInDown'];\r\n      default:\r\n        return baseClass;\r\n    }\r\n  }\r\n}\r\n","<div class=\"chat-container\">\r\n  <div *ngFor=\"let message of chatData\" [ngClass]=\"getAnimationClass(message.position)\">\r\n    <div class=\"bubble\">\r\n      <div class=\"header\">\r\n        <span class=\"name\">\r\n          {{ message.name }} -\r\n          <span class=\"type\">({{ message.type }})</span>\r\n        </span>\r\n        <span class=\"date\">{{ message.date | date: 'short' }}</span>\r\n      </div>\r\n      <p class=\"content\">{{ message.message }}</p>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnChanges, Output } from '@angular/core';\r\nexport interface IItemCardExpanded {\r\n  label: string;\r\n  value: string | number;\r\n}\r\nexport interface IDataCardExpanded {\r\n  key: string;\r\n  icon?: string;\r\n  title?: string;\r\n  extraTitle?: string;\r\n  dataTop: IItemCardExpanded[];\r\n  dataMiddle: IItemCardExpanded[];\r\n  dataBot: IItemCardExpanded[];\r\n}\r\n@Component({\r\n  selector: 'ssa-card-data-expanded',\r\n  templateUrl: './card-data-expanded.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./card-data-expanded.component.scss'],\r\n})\r\nexport class CardDataExpandedComponent implements OnChanges {\r\n  @Input() itemSelected: any | null = MOCK_DATA_CARD_EXPANDED[0];\r\n  @Input() data: IDataCardExpanded[] = MOCK_DATA_CARD_EXPANDED;\r\n  @Output() selectedEmit = new EventEmitter();\r\n\r\n  animationClass = '';\r\n\r\n  ngOnChanges() {\r\n    this.data = this.data.sort((a, b) => {\r\n      const constA = parseInt(a.key, 10);\r\n      const constB = parseInt(b.key, 10);\r\n      if (isNaN(constA) || isNaN(constB)) {\r\n        return a.key.localeCompare(b.key);\r\n      }\r\n\r\n      return constB - constA;\r\n    });\r\n  }\r\n\r\n  get sortedData(): any[] {\r\n    return this.data;\r\n    /* if (!this.itemSelected) {\r\n      return this.data;\r\n    }\r\n    return [...this.data.filter((item) => item.key !== this.itemSelected?.key)]; */\r\n  }\r\n\r\n  selectItem(item: any) {\r\n    this.itemSelected = item;\r\n    this.selectedEmit.emit(item);\r\n    this.animationClass = '';\r\n    setTimeout(() => {\r\n      this.animationClass = 'animate__animated animate__fadeInDown';\r\n    }, 0);\r\n  }\r\n\r\n  resetAnimation() {\r\n    this.animationClass = '';\r\n  }\r\n}\r\n\r\nexport const MOCK_DATA_CARD_EXPANDED: IDataCardExpanded[] = [\r\n  {\r\n    key: 'card1',\r\n    icon: 'home',\r\n    title: 'Información del Hogar',\r\n    extraTitle: 'Detalles',\r\n    dataTop: [{ label: 'Dirección', value: 'Calle Principal 123' }],\r\n    dataMiddle: [\r\n      { label: 'Habitaciones', value: 3 },\r\n      { label: 'Baños', value: 2 },\r\n      { label: 'Tamaño', value: '150 m²' },\r\n    ],\r\n    dataBot: [\r\n      { label: 'Propietario', value: 'Juan Pérez' },\r\n      { label: 'Construcción', value: 2010 },\r\n    ],\r\n  },\r\n  {\r\n    key: 'card2',\r\n    icon: 'home',\r\n    title: 'Información Laboral',\r\n    dataTop: [{ label: 'Empresa', value: 'Compañía XYZ' }],\r\n    dataMiddle: [\r\n      { label: 'Años de Servicio', value: 5 },\r\n      { label: 'Departamento', value: 'Desarrollo' },\r\n    ],\r\n    dataBot: [{ label: 'Contacto', value: 'Recursos Humanos' }],\r\n  },\r\n  {\r\n    key: 'card3',\r\n    icon: 'home',\r\n    title: 'Información del Vehículo',\r\n    dataTop: [{ label: 'Marca', value: 'Toyota' }],\r\n    dataMiddle: [\r\n      { label: 'Color', value: 'Azul' },\r\n      { label: 'Placa', value: 'ABC-123' },\r\n    ],\r\n    dataBot: [{ label: 'Propietario', value: 'Ana García' }],\r\n  },\r\n];\r\n","<div *ngIf=\"data.length === 0\">\r\n  <ssa-empty-data text=\"No hay datos\"></ssa-empty-data>\r\n</div>\r\n<div class=\"bucle\">\r\n  <!-- <ng-container *ngIf=\"itemSelected && data.length !== 0\">\r\n    <ng-container *ngTemplateOutlet=\"cardClaimTemplate; context: { item: itemSelected }\"></ng-container>\r\n  </ng-container> -->\r\n  <ng-container *ngFor=\"let item of sortedData\">\r\n    <ng-container *ngTemplateOutlet=\"cardClaimTemplate; context: { item: item }\"></ng-container>\r\n  </ng-container>\r\n</div>\r\n\r\n<ng-template #cardClaimTemplate let-item=\"item\">\r\n  <div\r\n    class=\"card-item\"\r\n    [ngClass]=\"{\r\n      selected: itemSelected?.key === item.key,\r\n      disabled: item.FHRespuestaFinal,\r\n    }\"\r\n    (click)=\"selectItem(item)\"\r\n    onkeypress=\"\"\r\n  >\r\n    <div class=\"card-content\">\r\n      <section class=\"title-card\">\r\n        <div class=\"w-full\">\r\n          <h1>\r\n            <span *ngIf=\"item.title\">\r\n              <mat-icon *ngIf=\"item.icon\" fontSet=\"material-symbols-outlined\">\r\n                {{ item.icon }}\r\n              </mat-icon>\r\n              {{ item.title }}\r\n            </span>\r\n            <span class=\"extra-title\">{{ item.extraTitle ?? '' }}</span>\r\n          </h1>\r\n          <p class=\"data-item\" *ngFor=\"let item of item.dataTop\">\r\n            {{ item.label }} <b>{{ item.value }}</b>\r\n          </p>\r\n        </div>\r\n      </section>\r\n    </div>\r\n    <ng-container *ngIf=\"itemSelected?.key === item.key\">\r\n      <section\r\n        class=\"extra\"\r\n        [ngClass]=\"animationClass\"\r\n        (animationend)=\"resetAnimation()\"\r\n        *ngIf=\"item.dataMiddle.length > 0\"\r\n      >\r\n        <p class=\"data-item\" *ngFor=\"let item of item.dataMiddle\">\r\n          {{ item.label }} <b>{{ item.value }}</b>\r\n        </p>\r\n      </section>\r\n      <section\r\n        class=\"footer\"\r\n        [ngClass]=\"animationClass\"\r\n        (animationend)=\"resetAnimation()\"\r\n        *ngIf=\"item.dataBot.length > 0\"\r\n      >\r\n        <p class=\"data-item\" *ngFor=\"let item of item.dataBot\">\r\n          {{ item.label }} <b>{{ item.value }}</b>\r\n        </p>\r\n      </section>\r\n    </ng-container>\r\n  </div>\r\n</ng-template>\r\n","import { Component, Input, TemplateRef, ContentChild, EventEmitter, Output } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ssa-accordion',\r\n  templateUrl: './accordion.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./accordion.component.scss'],\r\n})\r\nexport class AccordionComponent {\r\n  @Input() expanded = false;\r\n  @Input() smallHeader = false;\r\n  @Input() colorBar = '0';\r\n  @Input() icon = '';\r\n  @Input() main = '';\r\n  @Input() side: string | undefined;\r\n  @Input() buttonsTemplate?: TemplateRef<any>;\r\n  @Output() panelExpanded = new EventEmitter<boolean>();\r\n\r\n  @ContentChild('dataContent') dataContent!: TemplateRef<any>;\r\n\r\n  get hasSideText(): boolean {\r\n    return !!this.side;\r\n  }\r\n\r\n  onPanelOpened(expanded: boolean) {\r\n    this.panelExpanded.emit(expanded);\r\n  }\r\n\r\n  getBarColor2(value: string): string {\r\n    const newValue = parseInt(value, 10);\r\n    // Convierte el porcentaje (0-100) a un valor entre 255 (gris claro) y 0 (rojo)\r\n    const intensity = 255 - Math.floor(newValue * 2.55);\r\n    const color = `rgb(255, ${intensity}, ${intensity})`;\r\n    return `linear-gradient(90deg,rgba(129, 145, 145, 1) 0%, ${color} 100%);`;\r\n  }\r\n\r\n  getBarColor(value: string): string {\r\n    const percentage = parseInt(value, 10); // Convierte \"50%\" a 50\r\n\r\n    // Asegurarse de que el porcentaje esté dentro del rango 0-100\r\n    const clampedPercentage = Math.max(0, Math.min(100, percentage));\r\n\r\n    // Definimos el color de inicio del degradado (el verde fijo)\r\n    const startColor = 'rgba(129, 145, 145, 1)'; // Tu verde original\r\n\r\n    // Calculamos el color final del degradado basado en el porcentaje\r\n    // Esto hará que el color final varíe de rojo (0%) a verde (100%)\r\n    // O ajusta los valores para el rango de color que necesites.\r\n    // Ejemplo: Rojo -> Amarillo -> Verde\r\n    let endColor: string;\r\n\r\n    const red = Math.floor(255 * ((100 - clampedPercentage) / 50));\r\n    endColor = `rgb(${red}, 0, 0)`;\r\n\r\n    // Si prefieres una transición simple de Rojo (0%) a Verde (100%) en el color final:\r\n    // const red = Math.floor(255 * (1 - clampedPercentage / 100));\r\n    // const green = Math.floor(255 * (clampedPercentage / 100));\r\n    // const endColor = `rgb(${red}, ${green}, 0)`;\r\n\r\n    // Retorna el valor completo para la propiedad `background`\r\n    // Nota: Para degradados, el navegador necesita el valor completo.\r\n    return `linear-gradient(90deg, ${startColor} 80%, ${endColor} 100%)`;\r\n  }\r\n}\r\n","<mat-accordion class=\"custom-accordion tree\" multi>\r\n  <mat-expansion-panel [expanded]=\"expanded\" (opened)=\"onPanelOpened(true)\" (closed)=\"onPanelOpened(false)\">\r\n    <mat-expansion-panel-header [ngClass]=\"{ small: smallHeader }\">\r\n      <div\r\n        class=\"bar\"\r\n        [ngStyle]=\"{\r\n          width: colorBar,\r\n        }\"\r\n      ></div>\r\n      <!-- ,\r\n          'background-color': getBarColor(colorBar), -->\r\n      <mat-panel-title>\r\n        <div class=\"flex-titlte\">\r\n          <div class=\"title-content\">\r\n            <mat-icon *ngIf=\"icon\" fontSet=\"material-symbols-outlined\">{{ icon }}</mat-icon>\r\n            <div class=\"text\">\r\n              <div class=\"main\">{{ main }}</div>\r\n              <div class=\"side\" *ngIf=\"hasSideText\">{{ side }}</div>\r\n            </div>\r\n          </div>\r\n          <ng-container *ngTemplateOutlet=\"buttonsTemplate || null\"></ng-container>\r\n        </div>\r\n      </mat-panel-title>\r\n    </mat-expansion-panel-header>\r\n    <div class=\"data-container\">\r\n      <ng-container *ngTemplateOutlet=\"dataContent\"></ng-container>\r\n    </div>\r\n  </mat-expansion-panel>\r\n</mat-accordion>\r\n","import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ssa-accordion-horizontal',\r\n  templateUrl: './accordion-horizontal.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./accordion-horizontal.component.scss'],\r\n})\r\nexport class AccordionHorizontalComponent {\r\n  @Input() title = '';\r\n  @Input() open = true;\r\n  @Output() isOpen = new EventEmitter<boolean>();\r\n  @ContentChild('dataContent') contentTemplate!: TemplateRef<any>;\r\n\r\n  activeIndex = 0;\r\n  contentTemplates: TemplateRef<any>[] = [];\r\n\r\n  setActive(index: number) {\r\n    this.activeIndex = index;\r\n  }\r\n\r\n  changeStatus() {\r\n    this.open = !this.open;\r\n    this.isOpen.emit(this.open);\r\n  }\r\n}\r\n","<div class=\"horizontal-accordion\">\r\n  <div class=\"accordion-panel\" [class.open]=\"open\">\r\n    <div class=\"header\" [ngClass]=\"{ 'header-closed': !open }\" (click)=\"changeStatus()\" onkeypress=\"\">\r\n      <button mat-icon-button *ngIf=\"!open\">\r\n        <mat-icon fontSet=\"material-symbols-outlined\">keyboard_double_arrow_right</mat-icon>\r\n      </button>\r\n      <h4 [ngClass]=\"{ 'rotated-title': !open }\">{{ title }}</h4>\r\n      <button mat-icon-button *ngIf=\"open\">\r\n        <mat-icon fontSet=\"material-symbols-outlined\">keyboard_double_arrow_left</mat-icon>\r\n      </button>\r\n    </div>\r\n\r\n    <div class=\"panel-content\" *ngIf=\"open && contentTemplate\">\r\n      <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { MatCheckboxChange } from '@angular/material/checkbox';\r\nexport interface ICheck {\r\n  id?: number;\r\n  name: string;\r\n  selected: boolean;\r\n  hide?: boolean;\r\n  value?: any;\r\n  color?: ThemePalette;\r\n  emptyMessage?: string;\r\n  childrens?: ICheck[];\r\n  isExpanded?: boolean;\r\n  disabled?: boolean;\r\n}\r\n\r\n@Component({\r\n  selector: 'ssa-tree-multi-check',\r\n  templateUrl: './tree-multi-check.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./tree-multi-check.component.scss'],\r\n})\r\nexport class TreeMultiCheckComponent implements OnInit {\r\n  @Output() selectionChange = new EventEmitter();\r\n  @Output() selectAll = new EventEmitter();\r\n\r\n  @Input() itemsCheck!: ICheck;\r\n\r\n  allComplete: boolean = false;\r\n\r\n  ngOnInit() {\r\n    this.mostrarSeleccionados();\r\n  }\r\n\r\n  updateAllComplete() {\r\n    this.allComplete = this.itemsCheck.childrens?.every((t) => t.selected) ?? false;\r\n    this.mostrarSeleccionados();\r\n  }\r\n\r\n  toggleExpanded(check: ICheck): void {\r\n    check.isExpanded = !check.isExpanded;\r\n  }\r\n\r\n  someComplete(): boolean {\r\n    if (this.itemsCheck.childrens == null) {\r\n      return false;\r\n    }\r\n    return this.itemsCheck.childrens.some((t) => t.selected) && !this.allComplete;\r\n  }\r\n\r\n  setAll(selected: boolean) {\r\n    this.allComplete = selected;\r\n    for (const t of this.itemsCheck.childrens ?? []) {\r\n      t.selected = selected;\r\n    }\r\n    this.mostrarSeleccionados();\r\n  }\r\n\r\n  setCheckComplete(check: ICheck, selected: boolean, principalCheck = false) {\r\n    check.selected = selected;\r\n    if (selected && principalCheck) {\r\n      this.selectAll.emit(selected);\r\n    }\r\n    for (const child of check.childrens ?? []) {\r\n      this.setCheckComplete(child, selected);\r\n    }\r\n    this.updateParentICheck(this.itemsCheck);\r\n  }\r\n\r\n  onCheckboxChange(check: ICheck, event: MatCheckboxChange) {\r\n    this.setCheckComplete(check, event.checked);\r\n  }\r\n\r\n  updateParentICheck(parentICheck: ICheck): void {\r\n    if (!parentICheck.childrens) {\r\n      return;\r\n    }\r\n\r\n    const allChildrenSelected = parentICheck.childrens.every((child) => child.selected);\r\n\r\n    parentICheck.selected = allChildrenSelected;\r\n\r\n    for (const child of parentICheck.childrens) {\r\n      this.updateParentICheck(child);\r\n    }\r\n\r\n    this.mostrarSeleccionados();\r\n  }\r\n\r\n  someParentComplete(parentICheck: ICheck): boolean {\r\n    if (!parentICheck.childrens) {\r\n      return false;\r\n    }\r\n    const allChildrenComplete = parentICheck.childrens.every((t) => t.selected);\r\n    const someChildrenComplete = parentICheck.childrens.some((t) => t.selected);\r\n    return someChildrenComplete && !allChildrenComplete;\r\n  }\r\n\r\n  getNestedSelected(checks: ICheck[] | undefined): ICheck[] {\r\n    if (!checks) {\r\n      return [];\r\n    }\r\n    const selected: ICheck[] = [];\r\n    for (const check of checks) {\r\n      if (check.selected) {\r\n        selected.push(check);\r\n      }\r\n      if (check.childrens) {\r\n        selected.push(...this.getNestedSelected(check.childrens));\r\n      }\r\n    }\r\n    return selected;\r\n  }\r\n\r\n  mostrarSeleccionados() {\r\n    const selectedTree = this.itemsCheck.childrens\r\n      ?.map((child) => this.buildSelectedTree(child))\r\n      .filter((child) => child !== null);\r\n\r\n    this.selectionChange.emit(selectedTree);\r\n  }\r\n\r\n  private buildSelectedTree(check: ICheck): ICheck | null {\r\n    let selectedSubchecks: ICheck[] = [];\r\n\r\n    if (check.childrens && check.childrens?.length > 0) {\r\n      selectedSubchecks = [];\r\n      for (const child of check.childrens) {\r\n        const selectedChild = this.buildSelectedTree(child);\r\n        if (selectedChild !== null) {\r\n          selectedSubchecks.push(selectedChild);\r\n        }\r\n      }\r\n    }\r\n\r\n    if (check.selected || selectedSubchecks.length > 0) {\r\n      const selectedCheck: ICheck = {\r\n        ...check,\r\n      };\r\n      if (selectedSubchecks.length > 0) {\r\n        selectedCheck.childrens = selectedSubchecks;\r\n      } else {\r\n        delete selectedCheck.childrens;\r\n      }\r\n      return selectedCheck;\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  toggleAll(selected: boolean) {\r\n    // Marca/desmarca el nodo raíz\r\n    this.itemsCheck.selected = selected;\r\n\r\n    // Marca/desmarca todo el árbol con la misma lógica que el checkbox principal\r\n    this.setCheckComplete(this.itemsCheck, selected);\r\n\r\n    // Actualiza selección final\r\n    this.mostrarSeleccionados();\r\n  }\r\n}\r\n","<section class=\"example-section\" *ngIf=\"itemsCheck\">\r\n  <span class=\"empty-message\" *ngIf=\"(itemsCheck.childrens ?? []).length === 0\">\r\n    {{ itemsCheck.emptyMessage ?? 'No se encontraron' }}\r\n  </span>\r\n  <span class=\"principal-check\" *ngIf=\"!itemsCheck.hide && (itemsCheck.childrens ?? []).length > 0\">\r\n    <mat-checkbox\r\n      [matTooltip]=\"itemsCheck.selected ? 'Desmarcar todos' : 'Marcar todos'\"\r\n      class=\"example-margin\"\r\n      [checked]=\"itemsCheck.selected\"\r\n      [color]=\"itemsCheck.color\"\r\n      [indeterminate]=\"someParentComplete(itemsCheck)\"\r\n      (change)=\"setCheckComplete(itemsCheck, $event.checked, true)\"\r\n      [disabled]=\"itemsCheck.disabled\"\r\n    >\r\n      {{ itemsCheck.name }}\r\n    </mat-checkbox>\r\n    <ssa-button\r\n      style=\"margin-right: 8px\"\r\n      *ngIf=\"itemsCheck.childrens && itemsCheck.childrens.length > 0\"\r\n      [properties]=\"{\r\n        color: 'primary',\r\n        size: 'xs',\r\n        text: 'Mi botón',\r\n        icon: itemsCheck.isExpanded ? 'expand_less' : 'expand_more',\r\n        onlyIcon: true,\r\n        round: true,\r\n        transparent: true,\r\n      }\"\r\n      (clickButton)=\"toggleExpanded(itemsCheck)\"\r\n    ></ssa-button>\r\n  </span>\r\n  <span\r\n    class=\"example-list-section\"\r\n    [ngClass]=\"{\r\n      'with-children': itemsCheck.childrens && itemsCheck.childrens.length > 0,\r\n    }\"\r\n  >\r\n    <ng-container *ngIf=\"itemsCheck.childrens && itemsCheck.childrens.length > 0 && itemsCheck.isExpanded\">\r\n      <ng-container *ngTemplateOutlet=\"checkTemplate; context: { childrens: itemsCheck.childrens }\"></ng-container>\r\n    </ng-container>\r\n  </span>\r\n</section>\r\n\r\n<ng-template #checkTemplate let-childrens=\"childrens\">\r\n  <ul class=\"check-list\">\r\n    <li *ngFor=\"let children of childrens\" class=\"check-item animate__animated animate__fadeInDown\">\r\n      <div class=\"check-container\">\r\n        <mat-checkbox\r\n          [checked]=\"children.selected\"\r\n          [color]=\"children.color ?? 'primary'\"\r\n          [indeterminate]=\"someParentComplete(children)\"\r\n          (change)=\"setCheckComplete(children, $event.checked)\"\r\n          [matTooltip]=\"\r\n            children.childrens && children.childrens.length > 0\r\n              ? children.selected\r\n                ? 'Desmarcar todos'\r\n                : 'Marcar todos'\r\n              : ''\r\n          \"\r\n        >\r\n          {{ children.name }}\r\n        </mat-checkbox>\r\n\r\n        <ssa-button\r\n          style=\"margin-right: 4px\"\r\n          *ngIf=\"children.childrens && children.childrens.length > 0\"\r\n          [properties]=\"{\r\n            color: 'basic',\r\n            size: 'xs',\r\n            text: 'Mi botón',\r\n            icon: children.isExpanded ? 'expand_less' : 'expand_more',\r\n            onlyIcon: true,\r\n            round: true,\r\n            transparent: true,\r\n          }\"\r\n          (clickButton)=\"toggleExpanded(children)\"\r\n        ></ssa-button>\r\n      </div>\r\n\r\n      <ul *ngIf=\"children.childrens && children.childrens.length > 0 && children.isExpanded\" class=\"children-list\">\r\n        <ng-container *ngTemplateOutlet=\"checkTemplate; context: { childrens: children.childrens }\"></ng-container>\r\n      </ul>\r\n    </li>\r\n  </ul>\r\n</ng-template>\r\n","import { booleanAttribute, Component, ContentChild, Input, TemplateRef } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ssa-tab',\r\n  template: '',\r\n  standalone: false,\r\n})\r\nexport class TabComponent {\r\n  @Input() label!: string;\r\n  @Input() icon?: string;\r\n  @Input() end = false;\r\n  @Input() widthPadding = true;\r\n  @Input() actionClick = '';\r\n  @Input({ transform: booleanAttribute }) disabled = false;\r\n  @ContentChild(TemplateRef) content!: TemplateRef<any>;\r\n}\r\n","import { Component, ContentChildren, QueryList, Output, EventEmitter, Input } from '@angular/core';\r\nimport { TabComponent } from './tab/tab.component';\r\n\r\n@Component({\r\n  selector: 'ssa-tab-vertical',\r\n  templateUrl: './tab-vertical.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./tab-vertical.component.scss'],\r\n})\r\nexport class TabVerticalComponent {\r\n  @Input() height = '100';\r\n  @Input() showBtnCollasable = false;\r\n  @Input() onlyIcons = false;\r\n  @Input() widthPadding = true;\r\n  @Input() selectedIndex = 0;\r\n  @Output() selectedTabIndex = new EventEmitter();\r\n  @Output() clickTab = new EventEmitter();\r\n  @ContentChildren(TabComponent) tabs!: QueryList<TabComponent>;\r\n\r\n  get activeTabWidthPadding(): boolean {\r\n    try {\r\n      const list = this.tabs?.toArray() || [];\r\n      const t: any = list[this.selectedIndex];\r\n      return t && typeof t.widthPadding !== 'undefined' ? !!t.widthPadding : !!this.widthPadding;\r\n    } catch (e) {\r\n      return !!this.widthPadding;\r\n    }\r\n  }\r\n\r\n  selectTab(index: number, action) {\r\n    if (this.tabs.toArray()[index]?.disabled) {\r\n      return;\r\n    }\r\n    this.selectedIndex = index;\r\n    this.selectedTabIndex.emit(this.selectedIndex);\r\n    if (action) {\r\n      this.clickTab.emit(action);\r\n    }\r\n  }\r\n}\r\n","<div class=\"vertical-tabs-container\" [ngStyle]=\"{ height: height + '%' }\">\r\n  <button\r\n    *ngIf=\"showBtnCollasable\"\r\n    class=\"btn-collapsed\"\r\n    [ngClass]=\"{ 'show-labels': onlyIcons }\"\r\n    [matTooltip]=\"onlyIcons ? 'Ocultar nombres' : 'Mostrar nombres'\"\r\n    (click)=\"onlyIcons = !onlyIcons\"\r\n  ></button>\r\n  <div class=\"li-list\" [ngClass]=\"{ 'only-icons': onlyIcons }\">\r\n    <ul class=\"tabs-list\">\r\n      <ng-container *ngFor=\"let tab of tabs.toArray(); index as i\">\r\n        <li *ngIf=\"!tab.end\" [class.active]=\"i === selectedIndex\" [class.disabled]=\"tab.disabled\">\r\n          <button type=\"button\" [disabled]=\"tab.disabled\" (click)=\"selectTab(i, tab.actionClick)\">\r\n            <mat-icon *ngIf=\"tab.icon\" fontSet=\"material-symbols-outlined\" [matTooltip]=\"tab.label\">{{\r\n              tab.icon\r\n            }}</mat-icon>\r\n            <span *ngIf=\"!onlyIcons || !tab.icon\">{{ tab.label }}</span>\r\n          </button>\r\n        </li>\r\n      </ng-container>\r\n    </ul>\r\n\r\n    <ul class=\"tabs-list\">\r\n      <ng-container *ngFor=\"let tab of tabs.toArray(); index as i\">\r\n        <li *ngIf=\"tab.end\" [class.active]=\"i === selectedIndex\" [class.disabled]=\"tab.disabled\">\r\n          <button type=\"button\" [disabled]=\"tab.disabled\" (click)=\"selectTab(i, tab.actionClick)\">\r\n            <mat-icon *ngIf=\"tab.icon\" fontSet=\"material-symbols-outlined\" [matTooltip]=\"tab.label\">{{\r\n              tab.icon\r\n            }}</mat-icon>\r\n            <span *ngIf=\"!onlyIcons || !tab.icon\">{{ tab.label }}</span>\r\n          </button>\r\n        </li>\r\n      </ng-container>\r\n    </ul>\r\n  </div>\r\n\r\n  <div class=\"tab-content\" [ngClass]=\"{ 'width-padding': activeTabWidthPadding }\">\r\n    <ng-container\r\n      *ngIf=\"tabs.toArray()[selectedIndex]?.content\"\r\n      [ngTemplateOutlet]=\"tabs.toArray()[selectedIndex].content\"\r\n    ></ng-container>\r\n  </div>\r\n</div>\r\n","export interface TableSelection<T> {\r\n  readonly selected: T[];\r\n  hasValue(): boolean;\r\n  isSelected(row: T): boolean;\r\n  select(row: T): void;\r\n  deselect(row: T): void;\r\n  toggle(row: T): void;\r\n  clear(): void;\r\n}\r\n\r\nexport interface TableColumnDefinition {\r\n  coin?: string;\r\n  value: string;\r\n  pipe?: any;\r\n  format?: string;\r\n  align?: string;\r\n  width?: string;\r\n  minWidth?: string | number;\r\n  keyColor?: string;\r\n}\r\n\r\nexport type TableColumnSource = Record<string, TableColumnDefinition>;\r\n\r\nexport type TableSortDirection = 'asc' | 'desc' | '';\r\n\r\nexport interface TableSortState {\r\n  active: string;\r\n  direction: TableSortDirection;\r\n}\r\n\r\nexport interface TableSearchPayload {\r\n  text: string;\r\n  columns: string[];\r\n  sort: TableSortState;\r\n}\r\n\r\nexport function areAllRowsSelected<T>(selection: TableSelection<T>, rows: T[]): boolean {\r\n  return rows.length > 0 && rows.every((row) => selection.isSelected(row));\r\n}\r\n\r\nexport function getSelectionUniverseRows<T>(\r\n  selectAllPages: boolean,\r\n  paginatorFront: boolean,\r\n  frontFilteredRows: T[],\r\n  dataSource: T[],\r\n): T[] {\r\n  if (selectAllPages && paginatorFront) {\r\n    return Array.isArray(frontFilteredRows) ? frontFilteredRows : [];\r\n  }\r\n  return Array.isArray(dataSource) ? dataSource : [];\r\n}\r\n\r\nexport function toggleRowsSelection<T>(selection: TableSelection<T>, rows: T[]): T[] {\r\n  if (!rows.length) {\r\n    return selection.selected;\r\n  }\r\n\r\n  const shouldDeselect = areAllRowsSelected(selection, rows);\r\n  rows.forEach((row) => {\r\n    if (shouldDeselect) {\r\n      selection.deselect(row);\r\n    } else {\r\n      selection.select(row);\r\n    }\r\n  });\r\n  return selection.selected;\r\n}\r\n\r\nexport function toggleTableRow<T>(selection: TableSelection<T>, row: T): T[] {\r\n  selection.toggle(row);\r\n  return selection.selected;\r\n}\r\n\r\nexport function clearTableSelection<T>(selection: TableSelection<T>): T[] {\r\n  selection.clear();\r\n  return selection.selected;\r\n}\r\n\r\nexport function toggleAllTableRows<T>(selection: TableSelection<T>, rows: T[]): T[] | undefined {\r\n  if (!rows.length) {\r\n    return undefined;\r\n  }\r\n  return toggleRowsSelection(selection, rows);\r\n}\r\n\r\nexport function toggleAllTableRowsAndEmit<T>(\r\n  selection: TableSelection<T>,\r\n  rows: T[],\r\n  emit: (selectedRows: T[]) => void,\r\n): void {\r\n  const selectedRows = toggleAllTableRows(selection, rows);\r\n  if (selectedRows) {\r\n    emit(selectedRows);\r\n  }\r\n}\r\n\r\nexport function toggleTableRowAndEmit<T>(\r\n  selection: TableSelection<T>,\r\n  row: T,\r\n  emit: (selectedRows: T[]) => void,\r\n): void {\r\n  emit(toggleTableRow(selection, row));\r\n}\r\n\r\nexport function clearTableSelectionAndEmit<T>(selection: TableSelection<T>, emit: (selectedRows: T[]) => void): void {\r\n  emit(clearTableSelection(selection));\r\n}\r\n\r\nexport function getCheckboxLabel<T>(\r\n  selection: TableSelection<T>,\r\n  row: T | undefined,\r\n  allRowsSelected: boolean,\r\n): string {\r\n  if (!row) {\r\n    return `${allRowsSelected ? 'deselect' : 'select'} all`;\r\n  }\r\n  const position = (row as { position?: number }).position;\r\n  return `${selection.isSelected(row) ? 'deselect' : 'select'} row ${(position ?? 0) + 1}`;\r\n}\r\n\r\nexport function selectRowsInRange<T>(\r\n  selection: TableSelection<T>,\r\n  rows: T[],\r\n  startIndex: number,\r\n  endIndex: number,\r\n): T[] {\r\n  const start = Math.min(startIndex, endIndex);\r\n  const end = Math.max(startIndex, endIndex);\r\n\r\n  for (let index = start; index <= end; index++) {\r\n    const row = rows[index];\r\n    if (row && !selection.isSelected(row)) {\r\n      selection.select(row);\r\n    }\r\n  }\r\n\r\n  return selection.selected;\r\n}\r\n\r\nexport function synchronizeSelection<T>(selection: TableSelection<T>, rows: T[], preserveOtherPages: boolean): boolean {\r\n  if (!selection.hasValue()) {\r\n    return false;\r\n  }\r\n\r\n  if (!rows.length) {\r\n    selection.clear();\r\n    return true;\r\n  }\r\n\r\n  if (preserveOtherPages) {\r\n    return false;\r\n  }\r\n\r\n  const currentRows = new Set(rows);\r\n  const stillSelected = selection.selected.filter((row) => currentRows.has(row));\r\n  if (stillSelected.length === selection.selected.length) {\r\n    return false;\r\n  }\r\n\r\n  selection.clear();\r\n  stillSelected.forEach((row) => selection.select(row));\r\n  return true;\r\n}\r\n\r\nexport function synchronizeSelectionAndEmit<T>(\r\n  selection: TableSelection<T>,\r\n  rows: T[],\r\n  preserveOtherPages: boolean,\r\n  emit: (selectedRows: T[]) => void,\r\n): void {\r\n  if (synchronizeSelection(selection, rows, preserveOtherPages)) {\r\n    emit(selection.selected);\r\n  }\r\n}\r\n\r\nexport interface TableSelectionControllerConfig {\r\n  getSelection: () => TableSelection<any>;\r\n  getSelectionUniverseRows: () => any[];\r\n  getRangeRows: () => any[];\r\n  isActionCellClick: (event?: MouseEvent) => boolean;\r\n  multiSelectEnabled: () => boolean;\r\n  handleMultiSelection: (row: any, event?: MouseEvent) => void;\r\n  handleSingleSelection: (row: any) => void;\r\n  getColumnSource: () => TableColumnSource;\r\n  getDataSource: () => any[];\r\n  preserveOtherPages: () => boolean;\r\n  emitSelection: (rows: any[]) => void;\r\n  emitSelectedItem: (row: any | null) => void;\r\n}\r\n\r\nexport class TableSelectionController {\r\n  constructor(private readonly config: TableSelectionControllerConfig) {}\r\n\r\n  isAllSelected(): boolean {\r\n    return areAllRowsSelected(this.config.getSelection(), this.config.getSelectionUniverseRows());\r\n  }\r\n\r\n  toggleAllRows(): void {\r\n    toggleAllTableRowsAndEmit(\r\n      this.config.getSelection(),\r\n      this.config.getSelectionUniverseRows(),\r\n      this.config.emitSelection,\r\n    );\r\n  }\r\n\r\n  toggleRow(row: any): void {\r\n    toggleTableRowAndEmit(this.config.getSelection(), row, this.config.emitSelection);\r\n  }\r\n\r\n  selectRange(startIndex: number, endIndex: number): void {\r\n    this.config.emitSelection(\r\n      selectRowsInRange(this.config.getSelection(), this.config.getRangeRows(), startIndex, endIndex),\r\n    );\r\n  }\r\n\r\n  resetMultipleSelection(): void {\r\n    clearTableSelectionAndEmit(this.config.getSelection(), this.config.emitSelection);\r\n    this.config.emitSelectedItem(null);\r\n  }\r\n\r\n  isSelected(row: any, event?: MouseEvent): void {\r\n    handleTableRowSelection(\r\n      row,\r\n      event,\r\n      this.config.isActionCellClick(event),\r\n      this.config.multiSelectEnabled(),\r\n      () => this.config.handleMultiSelection(row, event),\r\n      () => this.config.handleSingleSelection(row),\r\n    );\r\n  }\r\n\r\n  checkboxLabel(row?: any): string {\r\n    return getCheckboxLabel(this.config.getSelection(), row, this.isAllSelected());\r\n  }\r\n\r\n  getCellClasses(element: any, column: any): string {\r\n    return getTableCellClasses(element, column, this.config.getColumnSource());\r\n  }\r\n\r\n  syncSelectionWithData(): void {\r\n    synchronizeSelectionAndEmit(\r\n      this.config.getSelection(),\r\n      Array.isArray(this.config.getDataSource()) ? this.config.getDataSource() : [],\r\n      this.config.preserveOtherPages(),\r\n      this.config.emitSelection,\r\n    );\r\n  }\r\n}\r\n\r\nexport function getSearchableColumnKeys(columns: TableColumnSource): string[] {\r\n  return Object.keys(columns).filter((key) => key !== 'select' && key !== 'actions');\r\n}\r\n\r\nexport function filterTableRows(rows: any[], query: string, keys: string[]): any[] {\r\n  const normalizedQuery = query.trim().toLowerCase();\r\n  if (!normalizedQuery) {\r\n    return rows;\r\n  }\r\n\r\n  return rows.filter((row) =>\r\n    keys.some((key) => {\r\n      const value = row?.[key];\r\n      return value !== null && value !== undefined && String(value).toLowerCase().includes(normalizedQuery);\r\n    }),\r\n  );\r\n}\r\n\r\nexport function filterFrontTableRows(paginatorFront: boolean, rows: any[], query: string, keys: string[]): any[] {\r\n  if (!paginatorFront || !Array.isArray(rows)) {\r\n    return [];\r\n  }\r\n  return filterTableRows(rows, query, keys);\r\n}\r\n\r\nexport function getSelectableTableColumns(columns: TableColumnSource): TableColumnSource {\r\n  return Object.fromEntries(Object.entries(columns).filter(([key]) => key !== 'select' && key !== 'actions'));\r\n}\r\n\r\nexport function getTableCellClasses(element: any, column: any, columnSource: TableColumnSource): string {\r\n  const classes = [column.value.align, column.value.width];\r\n  if (column.value.keyColor) {\r\n    const key = columnSource[column.key]?.keyColor;\r\n    if (key) {\r\n      classes.push('color-' + element[key]);\r\n    }\r\n  }\r\n  return classes.filter(Boolean).join(' ');\r\n}\r\n\r\nexport function resolveSingleSelection<T>(\r\n  selectable: boolean,\r\n  selectedItem: T | null | undefined,\r\n  row: T,\r\n): { selectedItem: T | null; selectedRow: T | null } {\r\n  if (selectable && selectedItem === row) {\r\n    return { selectedItem: null, selectedRow: null };\r\n  }\r\n  return { selectedItem: row, selectedRow: row };\r\n}\r\n\r\nexport function handleTableRowSelection<T>(\r\n  row: T,\r\n  event: MouseEvent | undefined,\r\n  actionCellClicked: boolean,\r\n  multiSelectEnabled: boolean,\r\n  handleMultiSelection: () => void,\r\n  handleSingleSelection: () => void,\r\n): void {\r\n  if (actionCellClicked) {\r\n    return;\r\n  }\r\n  if (multiSelectEnabled) {\r\n    handleMultiSelection();\r\n    return;\r\n  }\r\n  handleSingleSelection();\r\n}\r\n\r\nexport function buildTableSearchPayload(text: string, columns: string[], sort: TableSortState): TableSearchPayload {\r\n  return { text, columns, sort };\r\n}\r\n\r\nexport function normalizeTableKeys(findItemKeys: string | string[]): string[] {\r\n  return Array.isArray(findItemKeys) ? findItemKeys : [findItemKeys];\r\n}\r\n\r\nexport function paginateTableRows(dataPage: any, rows: any[]): any[] {\r\n  const { currentPage, rowsPerPage } = dataPage;\r\n  if (!Array.isArray(rows)) {\r\n    throw new TypeError('El listado debe ser un array');\r\n  }\r\n  if (currentPage < 0) {\r\n    throw new TypeError('La página actual no puede ser negativa');\r\n  }\r\n  if (rowsPerPage < 1) {\r\n    throw new TypeError('Las filas por página no pueden ser menores a 1');\r\n  }\r\n\r\n  const begin = currentPage * rowsPerPage;\r\n  return rows.slice(begin, begin + rowsPerPage);\r\n}\r\n\r\nexport function routeTableMutation(\r\n  item: any,\r\n  findItemKeys: string | string[],\r\n  paginatorFront: boolean,\r\n  allRows: any[],\r\n  frontMutation: (item: any, keys: string[]) => void,\r\n  datasourceMutation: (item: any, keys: string[]) => void,\r\n): void {\r\n  if (!item) {\r\n    return;\r\n  }\r\n\r\n  const keys = normalizeTableKeys(findItemKeys);\r\n  if (paginatorFront && Array.isArray(allRows)) {\r\n    frontMutation(item, keys);\r\n    return;\r\n  }\r\n  datasourceMutation(item, keys);\r\n}\r\n\r\nexport function mutateTableRows(\r\n  rows: any[],\r\n  item: any,\r\n  keys: string[],\r\n  mutation: (rows: any[], item: any, keys: string[]) => boolean,\r\n  onMutation: () => void,\r\n): void {\r\n  if (mutation(rows, item, keys)) {\r\n    onMutation();\r\n  }\r\n}\r\n\r\nexport interface TableMutationControllerConfig {\r\n  getFindItemKeys: () => string | string[];\r\n  isFrontPaginated: () => boolean;\r\n  getAllRows: () => any[];\r\n  getDataSource: () => any[];\r\n  getCurrentPage: () => number;\r\n  getPageSize: () => number;\r\n  getFrontFilteredRows: () => any[];\r\n  recomputeFrontFilteredRows: () => void;\r\n  adjustCurrentPageAfterDelete: () => void;\r\n  paginatorFrontFn: (dataPage: any, rows: any[]) => any;\r\n  refreshDatasource: () => void;\r\n}\r\n\r\nexport class TableMutationController {\r\n  constructor(private readonly config: TableMutationControllerConfig) {}\r\n\r\n  handleDelete(item: any): void {\r\n    this.routeMutation(item, deleteMatchingRow, true);\r\n  }\r\n\r\n  handleUpdate(item: any): void {\r\n    this.routeMutation(item, updateMatchingRow, false);\r\n  }\r\n\r\n  private routeMutation(\r\n    item: any,\r\n    mutation: (rows: any[], item: any, keys: string[]) => boolean,\r\n    adjustPage: boolean,\r\n  ): void {\r\n    if (!item) {\r\n      return;\r\n    }\r\n\r\n    const keys = normalizeTableKeys(this.config.getFindItemKeys());\r\n    if (this.config.isFrontPaginated() && Array.isArray(this.config.getAllRows())) {\r\n      this.mutateFrontRows(item, keys, mutation, adjustPage);\r\n      return;\r\n    }\r\n\r\n    mutateTableRows(this.config.getDataSource(), item, keys, mutation, this.config.refreshDatasource);\r\n  }\r\n\r\n  private mutateFrontRows(\r\n    item: any,\r\n    keys: string[],\r\n    mutation: (rows: any[], item: any, keys: string[]) => boolean,\r\n    adjustPage: boolean,\r\n  ): void {\r\n    mutateTableRows(this.config.getAllRows(), item, keys, mutation, () => {\r\n      this.config.recomputeFrontFilteredRows();\r\n      if (adjustPage) {\r\n        this.config.adjustCurrentPageAfterDelete();\r\n      }\r\n      this.config.paginatorFrontFn(\r\n        { currentPage: this.config.getCurrentPage(), rowsPerPage: this.config.getPageSize() },\r\n        this.config.getFrontFilteredRows(),\r\n      );\r\n    });\r\n  }\r\n}\r\n\r\nexport function buildTableColumnSource(\r\n  changeHeader: boolean,\r\n  allColumns: TableColumnSource,\r\n  columnSource: TableColumnSource,\r\n  visibleColumns: TableColumnSource,\r\n  actionsColumn: TableColumnSource,\r\n  transformAction: (column: TableColumnDefinition) => TableColumnDefinition = (column) => column,\r\n): TableColumnSource {\r\n  const source = changeHeader && Object.keys(allColumns).length > 0 ? visibleColumns : columnSource;\r\n  const result = { ...source };\r\n  const selectColumn = columnSource['select'];\r\n  const actionColumn = changeHeader ? actionsColumn['actions'] : columnSource['actions'];\r\n\r\n  if (changeHeader && selectColumn) {\r\n    result['select'] = selectColumn;\r\n  }\r\n  if (actionColumn) {\r\n    result['actions'] = transformAction(actionColumn);\r\n  }\r\n  return result;\r\n}\r\n\r\nexport function findMatchingRowIndex(rows: any[], item: any, keys: string[]): number {\r\n  return rows.findIndex((row) => keys.every((key) => row[key] === item[key]));\r\n}\r\n\r\nexport function deleteMatchingRow(rows: any[], item: any, keys: string[]): boolean {\r\n  const index = findMatchingRowIndex(rows, item, keys);\r\n  if (index < 0) {\r\n    return false;\r\n  }\r\n  rows.splice(index, 1);\r\n  return true;\r\n}\r\n\r\nexport function updateMatchingRow(rows: any[], item: any, keys: string[]): boolean {\r\n  const index = findMatchingRowIndex(rows, item, keys);\r\n  if (index < 0) {\r\n    return false;\r\n  }\r\n  rows[index] = { ...rows[index], ...item };\r\n  return true;\r\n}\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ssa-spinner',\r\n  templateUrl: './spinner.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./spinner.component.scss'],\r\n})\r\nexport class SpinnerComponent {\r\n  @Input() text = '';\r\n}\r\n","<div class=\"spin-content\">\r\n  <span class=\"spin\"></span>\r\n  <span class=\"text\">{{ text }}</span>\r\n</div>\r\n","export enum ESizeModal {\r\n  SMALL = 'xs',\r\n  MEDIUM = 'md',\r\n  EXTRALARGE = 'xl',\r\n  FULLSCREEN = 'full',\r\n}\r\n","import { Component, ContentChild, ElementRef, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\r\n\r\nexport enum ESizeModal {\r\n  SMALL = 'xs',\r\n  MEDIUM = 'md',\r\n  EXTRALARGE = 'xl',\r\n  FULLSCREEN = 'full',\r\n}\r\n\r\n@Component({\r\n  selector: 'ssa-modal',\r\n  templateUrl: './modal.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./modal.component.scss'],\r\n})\r\nexport class ModalComponent {\r\n  @Input() titleModal = '';\r\n  @Input() subTitleModal = '';\r\n  @Input() icon = '';\r\n  @Input() uppercase = true;\r\n  @Input() showModal = false;\r\n  @Input() removeBackground = false;\r\n  @Input() isCloseable = true;\r\n  @Input() size: string = ESizeModal.MEDIUM;\r\n  @Input() template!: TemplateRef<ElementRef>;\r\n  @Output() clickClose = new EventEmitter<boolean>();\r\n  @ContentChild('containerTemplate') containerTemplate!: TemplateRef<any>;\r\n  @ContentChild('templateFooter') templateFooter!: TemplateRef<any>;\r\n  sizeModal = ESizeModal;\r\n\r\n  closeModal() {\r\n    this.clickClose.emit(false);\r\n  }\r\n\r\n  closeModalOverlay(event: MouseEvent) {\r\n    const targetElement = event.target as HTMLElement;\r\n    const isClickOverlay = targetElement.classList.contains('modal-overlay');\r\n    if (isClickOverlay && this.isCloseable) {\r\n      this.closeModal();\r\n    }\r\n  }\r\n}\r\n","<div class=\"modal-overlay\" [ngClass]=\"{ active: showModal }\" (click)=\"closeModalOverlay($event)\" onkeydown=\"\">\r\n  <div\r\n    class=\"modal-container\"\r\n    [ngClass]=\"{\r\n      'modal-container--without-background': removeBackground,\r\n      'modal-size-xs': size === sizeModal.SMALL,\r\n      'modal-size-md': size === sizeModal.MEDIUM,\r\n      'modal-size-xl': size === sizeModal.EXTRALARGE,\r\n      'modal-size-full': size === sizeModal.FULLSCREEN,\r\n    }\"\r\n  >\r\n    <section class=\"header\">\r\n      <div class=\"header-content\">\r\n        <mat-icon fontSet=\"material-symbols-outlined\" *ngIf=\"icon\">{{ icon }}</mat-icon>\r\n        <div class=\"header-text\">\r\n          <h1 *ngIf=\"titleModal\">\r\n            <span>{{ titleModal }}</span>\r\n          </h1>\r\n          <p *ngIf=\"subTitleModal\">\r\n            {{ subTitleModal }}\r\n          </p>\r\n        </div>\r\n      </div>\r\n      <button class=\"header__close\" (click)=\"closeModal()\" *ngIf=\"isCloseable\">\r\n        <mat-icon fontSet=\"material-symbols-outlined\">close</mat-icon>\r\n      </button>\r\n    </section>\r\n    <section class=\"content\">\r\n      <ng-container *ngTemplateOutlet=\"template\"></ng-container>\r\n      <ng-container *ngTemplateOutlet=\"containerTemplate\"></ng-container>\r\n    </section>\r\n    <section class=\"actions-modal\" *ngIf=\"templateFooter\">\r\n      <ng-container *ngTemplateOutlet=\"templateFooter\"></ng-container>\r\n    </section>\r\n  </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { ESizeModal } from '../../modal/modal-size.enum';\r\n\r\n@Component({\r\n  selector: 'ssa-selection-headers-global',\r\n  templateUrl: './selection-headers-global.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./selection-headers-global.component.scss'],\r\n})\r\nexport class SelectionHeadersGlobalComponent implements OnChanges {\r\n  @Input() originalObject: any = {};\r\n  @Input() onlyIcon = true;\r\n  @Input() size: 'xs' | 'md' | 'xl' = 'xs';\r\n  @Output() selectedObjectChange = new EventEmitter<any>();\r\n\r\n  selectedFields: { [key: string]: boolean } = {};\r\n  showModal = false;\r\n  sizeModal = ESizeModal;\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['originalObject']) {\r\n      this.initializeSelectedFields();\r\n    }\r\n  }\r\n\r\n  toggleSelection(field: string): void {\r\n    const selectedCount = this.countSelected();\r\n\r\n    if (selectedCount === 1 && this.selectedFields[field]) {\r\n      return;\r\n    }\r\n\r\n    this.selectedFields[field] = !this.selectedFields[field];\r\n    this.emitSelectedObject();\r\n  }\r\n\r\n  emitSelectedObject(): void {\r\n    const result: any = {};\r\n\r\n    Object.keys(this.selectedFields).forEach((key) => {\r\n      if (this.selectedFields[key]) {\r\n        result[key] = { ...this.originalObject[key] };\r\n      }\r\n    });\r\n\r\n    this.selectedObjectChange.emit(result);\r\n  }\r\n\r\n  getObjectKeys(obj: any): string[] {\r\n    return Object.keys(obj || {});\r\n  }\r\n\r\n  countSelected(): number {\r\n    return Object.values(this.selectedFields).filter(Boolean).length;\r\n  }\r\n\r\n  getSelectedObject(): any {\r\n    const result: any = {};\r\n    Object.keys(this.selectedFields).forEach((key) => {\r\n      if (this.selectedFields[key]) {\r\n        result[key] = { ...this.originalObject[key] };\r\n      }\r\n    });\r\n    return result;\r\n  }\r\n\r\n  private initializeSelectedFields(): void {\r\n    const previousSelection = { ...this.selectedFields };\r\n    this.selectedFields = {};\r\n    this.getObjectKeys(this.originalObject).forEach((key, index) => {\r\n      this.selectedFields[key] = previousSelection[key] ?? index < 7;\r\n    });\r\n    this.emitSelectedObject();\r\n  }\r\n}\r\n","<div class=\"selection-container\">\r\n  <ssa-button\r\n    [properties]=\"{\r\n      size: size,\r\n      round: false,\r\n      icon: 'list',\r\n      text: onlyIcon ? '' : 'Seleccionar columnas',\r\n      onlyIcon: onlyIcon,\r\n      tooltip: 'Seleccionar columnas',\r\n    }\"\r\n    (clickButton)=\"showModal = true\"\r\n  ></ssa-button>\r\n</div>\r\n\r\n<ssa-modal\r\n  titleModal=\"Selecciona los campos que deseas incluir\"\r\n  icon=\"person\"\r\n  [showModal]=\"showModal\"\r\n  [template]=\"selectHeadersTemplate\"\r\n  [isCloseable]=\"true\"\r\n  [size]=\"sizeModal.MEDIUM\"\r\n  (clickClose)=\"showModal = false\"\r\n>\r\n</ssa-modal>\r\n\r\n<ng-template #selectHeadersTemplate>\r\n  <div class=\"field-list\">\r\n    <div\r\n      *ngFor=\"let field of getObjectKeys(originalObject)\"\r\n      class=\"field-item\"\r\n      [class.selected]=\"selectedFields[field]\"\r\n      (click)=\"toggleSelection(field)\"\r\n    >\r\n      {{ originalObject[field]?.value || field }}\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'statusTranslate',\r\n  standalone: false,\r\n})\r\nexport class StatusTranslatePipe implements PipeTransform {\r\n  translations: { [key: string]: { [key: string]: string } } = {\r\n    default: {\r\n      //estados de solicitud\r\n      PREA: 'Preaprobada',\r\n      INIC: 'Iniciada',\r\n      ESTU: 'En Estudio',\r\n      INHA: 'Inhabilitada',\r\n      DEST: 'Desestimada',\r\n      HABI: 'Habilitada',\r\n      ESTA: 'En Análisis de Estudio',\r\n      ENAN: 'En Análisis de Preaprobación',\r\n\r\n      //controles crediticios\r\n      APRO: 'Aprobado',\r\n      RECH: 'Rechazado',\r\n      COMP: 'Completo',\r\n      '': 'Sin Estado',\r\n      ' ': '-',\r\n      null: 'Sin Estado',\r\n\r\n      ERRO: 'Error',\r\n    },\r\n\r\n    // documents icons\r\n    icons: {\r\n      //sin imagen\r\n      '0': 'attach_file_off',\r\n      //a la espera de análisis\r\n      '1': 'file_present',\r\n      //aprobado\r\n      '2': 'task',\r\n      //exceptuado\r\n      '3': 'task',\r\n      //no legible\r\n      '4': 'scan_delete',\r\n      //no corresponde\r\n      '5': 'scan_delete',\r\n      //falta doc-\r\n      '6': 'scan_delete',\r\n\r\n      '': 'unknown_document',\r\n      ' ': 'unknown_document',\r\n      null: 'unknown_document',\r\n    },\r\n\r\n    // documents status\r\n    stats: {\r\n      //sin imagen\r\n      '0': 'await',\r\n      //a la espera de análisis\r\n      '1': 'ready',\r\n      //aprobado\r\n      '2': 'ok',\r\n      //exceptuado\r\n      '3': 'ok-not-ok',\r\n      //no legible\r\n      '4': 'not-ok',\r\n      //no corresponde\r\n      '5': 'not-ok',\r\n      //falta doc-\r\n      '6': 'not-ok',\r\n\r\n      '': '',\r\n      ' ': '',\r\n      null: '',\r\n    },\r\n  };\r\n\r\n  transform(value: string, type: string = 'default'): string {\r\n    const translationSet = this.translations[type] || this.translations['default'];\r\n    return translationSet[value] || value;\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  Output,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  ViewChild,\r\n  booleanAttribute,\r\n  signal,\r\n} from '@angular/core';\r\nimport { IButtonVW } from '../button/button.component';\r\nimport {\r\n  TableColumnDefinition as TableColumnDefinitionVW,\r\n  TableColumnSource as TableColumnSourceVW,\r\n  buildTableColumnSource,\r\n  buildTableSearchPayload,\r\n  filterFrontTableRows,\r\n  getSearchableColumnKeys,\r\n  getSelectionUniverseRows,\r\n  getSelectableTableColumns,\r\n  paginateTableRows,\r\n  resolveSingleSelection,\r\n  TableMutationController,\r\n  TableSelectionController,\r\n} from './table-common';\r\n\r\ntype SortDirectionVW = 'asc' | 'desc' | '';\r\ntype SortStateVW = { active: string; direction: SortDirectionVW };\r\ntype TableSearchPayloadVW = { text: string; columns: string[]; sort: SortStateVW };\r\ntype TablePageEventVW = { pageIndex: number; pageSize: number };\r\ninterface RenderedTableRowVW {\r\n  row: any;\r\n  index: number;\r\n}\r\n\r\nclass SimpleSelectionModel<T = any> {\r\n  private readonly rows = signal<T[]>([]);\r\n\r\n  get selected(): T[] {\r\n    return this.rows();\r\n  }\r\n\r\n  hasValue(): boolean {\r\n    return this.rows().length > 0;\r\n  }\r\n\r\n  isSelected(row: T): boolean {\r\n    return this.rows().includes(row);\r\n  }\r\n\r\n  select(row: T): void {\r\n    if (!this.isSelected(row)) {\r\n      this.rows.update((current) => [...current, row]);\r\n    }\r\n  }\r\n\r\n  deselect(row: T): void {\r\n    this.rows.update((current) => current.filter((r) => r !== row));\r\n  }\r\n\r\n  toggle(row: T): void {\r\n    if (this.isSelected(row)) {\r\n      this.deselect(row);\r\n    } else {\r\n      this.select(row);\r\n    }\r\n  }\r\n\r\n  clear(): void {\r\n    this.rows.set([]);\r\n  }\r\n}\r\n\r\n@Component({\r\n  selector: 'ssa-table-global',\r\n  templateUrl: './table-global.component.html',\r\n  styleUrls: ['./table-global.component.scss'],\r\n  standalone: false,\r\n})\r\nexport class TableGlobalComponent implements OnChanges, OnDestroy {\r\n  @Input() tableTitle: string = '';\r\n  @Input() searchVisible: boolean = false;\r\n  @Input() hideHeaders = false;\r\n  @Input() buttonsTable: IButtonVW[] = [];\r\n  @Input() changeHeader: boolean = false;\r\n  @Input() changeHeaderPosition: 'r' | 'l' = 'l';\r\n  @Input() exportable = false;\r\n  @Input() exportFileName = 'reporte';\r\n  @Input() allColumns: any = {};\r\n  @Input() actionsColumn: any = { actions: { value: 'Acciones', pipe: '', format: '' } };\r\n  @Output() columnsChange = new EventEmitter<any>();\r\n  @Input() columnSource: TableColumnSourceVW = {};\r\n  @Input() emptyMessage = 'No se encontraron datos';\r\n  @Input() actionTemplate!: TemplateRef<any>;\r\n  @Input() actionTemplateContext: any = {};\r\n  @Input() isCollapssable = false;\r\n  @Input() stickyHeader = true;\r\n  @Input() centerHeaders = true;\r\n  @Input() gridBorders = false;\r\n  @Input() disableEvents = true;\r\n  @Input() minWidth = 'none';\r\n  @Input() collapseRow = false;\r\n  @Input() titleCollapse = 'Tabla oculta';\r\n  @Input() rowClass: (row: any) => string = () => '';\r\n  @Input() dataSource: any[] = [];\r\n  @Input() mode: string = '';\r\n  @Input() selectable: boolean = false;\r\n  @Input() selectedItem: any;\r\n  @Input() multiSelectDisabled: boolean = false;\r\n  @Input() selectAllPages: boolean = false;\r\n  @Input() resetSelection: number = 0;\r\n  @Input() loading: boolean = false;\r\n  @Input({ transform: booleanAttribute }) optimization = false;\r\n\r\n  @Output() selectedItemChange = new EventEmitter<any>();\r\n  @Output() clickbtn = new EventEmitter<any>();\r\n  @Output() checkboxSelectionChange = new EventEmitter<any[]>();\r\n  @Output() sortChange = new EventEmitter<SortStateVW>();\r\n  @Output() searchChange = new EventEmitter<TableSearchPayloadVW>();\r\n\r\n  Object = Object;\r\n  selection = new SimpleSelectionModel<any>();\r\n  private readonly tableMutations = new TableMutationController({\r\n    getFindItemKeys: () => this.findItemKeys,\r\n    isFrontPaginated: () => this.paginatorFront,\r\n    getAllRows: () => this.allRows,\r\n    getDataSource: () => this.dataSource,\r\n    getCurrentPage: () => this.currentPage,\r\n    getPageSize: () => this.pageSize,\r\n    getFrontFilteredRows: () => this.frontFilteredRows,\r\n    recomputeFrontFilteredRows: () => this.recomputeFrontFilteredRows(),\r\n    adjustCurrentPageAfterDelete: () => this.adjustCurrentPageAfterDelete(),\r\n    paginatorFrontFn: (data, rows) => this.paginatorFrontFn(data, rows),\r\n    refreshDatasource: () => this.refreshDatasource(),\r\n  });\r\n  private readonly tableSelection = new TableSelectionController({\r\n    getSelection: () => this.selection,\r\n    getSelectionUniverseRows: () => this.getSelectionUniverseRows(),\r\n    getRangeRows: () => this.dataSource,\r\n    isActionCellClick: (event) => this.isActionCellClick(event),\r\n    multiSelectEnabled: () => !!this.columnSource?.['select'] && !this.multiSelectDisabled,\r\n    handleMultiSelection: (row, event) => this.handleMultiSelection(row, event),\r\n    handleSingleSelection: (row) => this.handleSingleSelection(row),\r\n    getColumnSource: () => this.columnSource,\r\n    getDataSource: () => this.dataSource,\r\n    preserveOtherPages: () => this.selectAllPages,\r\n    emitSelection: (rows) => this.checkboxSelectionChange.emit(rows),\r\n    emitSelectedItem: (row) => this.selectedItemChange.emit(row),\r\n  });\r\n\r\n  private visibleColumns: any = {};\r\n  private lastSelectedIndex: number = -1;\r\n  private lastSortState: SortStateVW = { active: '', direction: '' };\r\n  private frontFilteredRows: any[] = [];\r\n  private searchDebounceTimeout: ReturnType<typeof setTimeout> | undefined;\r\n\r\n  readonly searchText = signal<string>('');\r\n  readonly loadingRows = signal<boolean>(false);\r\n  readonly sortState = signal<SortStateVW>({ active: '', direction: '' });\r\n  readonly hasHorizontalOverflow = signal(false);\r\n  readonly renderedRows = signal<RenderedTableRowVW[]>([]);\r\n  readonly virtualTopSpacerHeight = signal(0);\r\n  readonly virtualBottomSpacerHeight = signal(0);\r\n\r\n  private tableResizeObserver?: ResizeObserver;\r\n  private automaticPageSizeTimeout?: ReturnType<typeof setTimeout>;\r\n  private pageChangeTimeout?: ReturnType<typeof setTimeout>;\r\n  private loadingRowsTimeout?: ReturnType<typeof setTimeout>;\r\n  private tableScrollWrapperElement?: HTMLElement;\r\n  private readonly virtualizationThreshold = 50;\r\n  private readonly virtualizationOverscan = 8;\r\n  private readonly textCollator = new Intl.Collator('es', { numeric: true, sensitivity: 'base' });\r\n\r\n  @ViewChild('tableScrollWrapper')\r\n  set tableScrollWrapper(wrapper: ElementRef<HTMLElement> | undefined) {\r\n    this.tableResizeObserver?.disconnect();\r\n    this.tableResizeObserver = undefined;\r\n\r\n    if (!wrapper) {\r\n      this.tableScrollWrapperElement = undefined;\r\n      this.hasHorizontalOverflow.set(false);\r\n      return;\r\n    }\r\n\r\n    const wrapperElement = wrapper.nativeElement;\r\n    this.tableScrollWrapperElement = wrapperElement;\r\n    this.updateHorizontalOverflow(wrapperElement);\r\n    this.refreshRenderedRows(wrapperElement.scrollTop);\r\n    this.scheduleAutomaticPageSize();\r\n\r\n    if (typeof ResizeObserver !== 'undefined') {\r\n      this.tableResizeObserver = new ResizeObserver(() => {\r\n        this.updateHorizontalOverflow(wrapperElement);\r\n        this.scheduleAutomaticPageSize();\r\n      });\r\n      this.tableResizeObserver.observe(wrapperElement);\r\n      if (wrapperElement.parentElement) {\r\n        this.tableResizeObserver.observe(wrapperElement.parentElement);\r\n      }\r\n      const table = wrapperElement.querySelector('.table-global');\r\n      if (table) {\r\n        this.tableResizeObserver.observe(table);\r\n      }\r\n    }\r\n  }\r\n\r\n  displayedColumns: string[] = [];\r\n  displayedColumnEntries: Array<{ key: string; value: TableColumnDefinitionVW }> = [];\r\n  allPossibleColumnEntries: Array<{ key: string; value: TableColumnDefinitionVW }> = [];\r\n  selectableColumns: TableColumnSourceVW = {};\r\n  buttonsTableProperties: IButtonVW[] = [];\r\n\r\n  @Input() sizeTable: 'xxs' | 'xs' | 'md' = 'md';\r\n  private pageSizeWasProvided = false;\r\n  private internalPageSize = 10;\r\n\r\n  @Input()\r\n  set pageSize(value: number | null | undefined) {\r\n    if (value == null) {\r\n      return;\r\n    }\r\n    this.pageSizeWasProvided = true;\r\n    this.internalPageSize = value;\r\n  }\r\n\r\n  get pageSize(): number {\r\n    return this.internalPageSize;\r\n  }\r\n\r\n  @Input() currentPage = 0;\r\n  @Input() totalItems = 0;\r\n  @Input() allRows: any[] = [];\r\n  private readonly defaultPageSizeOptions = [5, 10, 15, 20, 25, 50, 100, 200];\r\n  private configuredPageSizeOptions = [...this.defaultPageSizeOptions];\r\n  private automaticPageSize?: number;\r\n  private internalPageSizeOptions = [...this.defaultPageSizeOptions];\r\n\r\n  @Input()\r\n  set pageSizeOptions(value: number[] | null | undefined) {\r\n    this.configuredPageSizeOptions = Array.isArray(value) ? [...value] : [...this.defaultPageSizeOptions];\r\n    this.refreshPageSizeOptions();\r\n  }\r\n\r\n  get pageSizeOptions(): number[] {\r\n    return this.internalPageSizeOptions;\r\n  }\r\n\r\n  get minConfiguredPageSize(): number {\r\n    return this.configuredPageSizeOptions[0] ?? 0;\r\n  }\r\n\r\n  @Input() paginator: boolean = false;\r\n  @Input() paginatorFront: boolean = false;\r\n  @Input() stickyPaginator: boolean = true;\r\n  @Output() paginatorData = new EventEmitter<{ currentPage: number; rowsPerPage: number }>();\r\n\r\n  @Input() deleteItem: any = null;\r\n  @Input() updateItem: any = null;\r\n  @Input() findItemKeys: string | string[] = ['subProductCode'];\r\n  @Input() paintRows: boolean = true;\r\n\r\n  private readonly maxFrontPageSize = 200;\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (this.handleRowMutationChanges(changes)) {\r\n      return;\r\n    }\r\n    this.initializeVisibleColumns();\r\n    this.refreshTemplateCaches();\r\n    this.resetPaginatorOnAllRowsChange(changes);\r\n    this.scheduleAutomaticPageSize();\r\n\r\n    if (this.paginatorFront) {\r\n      this.refreshFrontPaginatorData();\r\n      return;\r\n    }\r\n\r\n    this.refreshDatasource();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.tableResizeObserver?.disconnect();\r\n    if (this.automaticPageSizeTimeout) {\r\n      clearTimeout(this.automaticPageSizeTimeout);\r\n    }\r\n    if (this.pageChangeTimeout) {\r\n      clearTimeout(this.pageChangeTimeout);\r\n    }\r\n    if (this.loadingRowsTimeout) {\r\n      clearTimeout(this.loadingRowsTimeout);\r\n    }\r\n    if (this.searchDebounceTimeout) {\r\n      clearTimeout(this.searchDebounceTimeout);\r\n    }\r\n  }\r\n\r\n  updateHorizontalOverflow(wrapper: HTMLElement): void {\r\n    this.hasHorizontalOverflow.set(wrapper.scrollWidth > wrapper.clientWidth);\r\n  }\r\n\r\n  onTableScroll(event: Event): void {\r\n    const wrapper = event.currentTarget as HTMLElement;\r\n    this.refreshRenderedRows(wrapper.scrollTop);\r\n  }\r\n\r\n  get totalPages(): number {\r\n    return Math.max(1, Math.ceil(this.totalItems / (this.pageSize || 1)));\r\n  }\r\n\r\n  getRowTrackKey(index: number, row: any): string | number {\r\n    const keys = Array.isArray(this.findItemKeys) ? this.findItemKeys : [this.findItemKeys];\r\n    const values = keys.map((key) => row?.[key]);\r\n\r\n    return values.every((value) => value !== undefined && value !== null && value !== '')\r\n      ? values.map(String).join('|')\r\n      : index;\r\n  }\r\n\r\n  handlePageEvent(e: TablePageEventVW): void {\r\n    const rowsPerPage = this.paginatorFront ? Math.min(e.pageSize, this.maxFrontPageSize) : e.pageSize;\r\n    this.loadingRows.set(true);\r\n    if (this.tableScrollWrapperElement) {\r\n      this.tableScrollWrapperElement.scrollTop = 0;\r\n    }\r\n    if (this.pageChangeTimeout) {\r\n      clearTimeout(this.pageChangeTimeout);\r\n    }\r\n    this.pageChangeTimeout = setTimeout(() => {\r\n      const data = { currentPage: e.pageIndex, rowsPerPage };\r\n      this.pageSizeWasProvided = true;\r\n      this.internalPageSize = rowsPerPage;\r\n      this.currentPage = e.pageIndex;\r\n\r\n      if (this.paginatorFront) {\r\n        const length = this.paginatorFrontFn(data, this.frontFilteredRows);\r\n        this.loadingPageSize(length);\r\n        this.syncSelectionWithData();\r\n        return;\r\n      }\r\n      this.paginatorData.emit(data);\r\n    }, 100);\r\n  }\r\n\r\n  goFirst(): void {\r\n    if (this.currentPage > 0) {\r\n      this.handlePageEvent({ pageIndex: 0, pageSize: this.pageSize });\r\n    }\r\n  }\r\n\r\n  goPrev(): void {\r\n    if (this.currentPage > 0) {\r\n      this.handlePageEvent({ pageIndex: this.currentPage - 1, pageSize: this.pageSize });\r\n    }\r\n  }\r\n\r\n  goNext(): void {\r\n    if (this.currentPage < this.totalPages - 1) {\r\n      this.handlePageEvent({ pageIndex: this.currentPage + 1, pageSize: this.pageSize });\r\n    }\r\n  }\r\n\r\n  goLast(): void {\r\n    if (this.currentPage < this.totalPages - 1) {\r\n      this.handlePageEvent({ pageIndex: this.totalPages - 1, pageSize: this.pageSize });\r\n    }\r\n  }\r\n\r\n  onPageSizeChange(newSize: number): void {\r\n    if (!newSize || newSize === this.pageSize) {\r\n      return;\r\n    }\r\n    const startIndex = this.currentPage * this.pageSize;\r\n    const newPageIndex = Math.floor(startIndex / newSize);\r\n    this.handlePageEvent({ pageIndex: newPageIndex, pageSize: newSize });\r\n  }\r\n\r\n  getRangeLabel(): string {\r\n    if (!this.totalItems || !this.pageSize) {\r\n      return `0 de ${this.totalItems} items`;\r\n    }\r\n    const startIndex = this.currentPage * this.pageSize;\r\n    const endIndex = Math.min(startIndex + this.pageSize, this.totalItems);\r\n    return `${startIndex + 1} - ${endIndex} de ${this.totalItems} items`;\r\n  }\r\n\r\n  loadingPageSize(length: number | any[]): void {\r\n    const rowCount = Array.isArray(length) ? length.length : length;\r\n    let timer = 200;\r\n    if (rowCount > 100) {\r\n      timer = 1000;\r\n    }\r\n    if (rowCount > 200) {\r\n      timer = 1500;\r\n    }\r\n    if (this.loadingRowsTimeout) {\r\n      clearTimeout(this.loadingRowsTimeout);\r\n    }\r\n    this.loadingRowsTimeout = setTimeout(() => {\r\n      this.loadingRows.set(false);\r\n    }, timer);\r\n  }\r\n\r\n  paginatorFrontFn(dataPage: any, rows: any[] = this.allRows): any[] {\r\n    this.dataSource = paginateTableRows(dataPage, rows);\r\n    this.refreshRenderedRows();\r\n    this.syncSelectionWithData();\r\n    return this.dataSource;\r\n  }\r\n\r\n  getContext(element: any, index: number): any {\r\n    return { ...this.actionTemplateContext, item: element, index };\r\n  }\r\n\r\n  async onExportExcel(): Promise<void> {\r\n    let onlyVisibleColumns = true;\r\n\r\n    if (this.changeHeader) {\r\n      onlyVisibleColumns = this.confirmOnlyVisibleColumns();\r\n    }\r\n\r\n    const columns = (onlyVisibleColumns ? this.displayedColumnEntries : this.allPossibleColumnEntries).filter(\r\n      (column) => column.key !== 'select' && column.key !== 'actions',\r\n    );\r\n    const rows = this.paginatorFront ? this.allRows : this.dataSource;\r\n\r\n    const header = columns.map((column) => column.value.value);\r\n    const body = (rows ?? []).map((row) => columns.map((column) => row?.[column.key] ?? ''));\r\n\r\n    this.downloadExcel(this.exportFileName, [header, ...body]);\r\n  }\r\n\r\n  isAllSelected(): boolean {\r\n    return this.tableSelection.isAllSelected();\r\n  }\r\n\r\n  toggleAllRows(): void {\r\n    this.tableSelection.toggleAllRows();\r\n  }\r\n\r\n  toggleRow(element: any): void {\r\n    this.tableSelection.toggleRow(element);\r\n  }\r\n\r\n  selectRange(startIndex: number, endIndex: number): void {\r\n    this.tableSelection.selectRange(startIndex, endIndex);\r\n  }\r\n\r\n  resetMultipleSelection(): void {\r\n    this.tableSelection.resetMultipleSelection();\r\n  }\r\n\r\n  getDisplayedColumns(): string[] {\r\n    return Object.keys(this.getColumnSource() || {});\r\n  }\r\n\r\n  getColumnMinWidth(column: { value: TableColumnDefinitionVW }): string {\r\n    const configuredMinWidth = column.value.minWidth;\r\n    if (typeof configuredMinWidth === 'number') {\r\n      return `${configuredMinWidth}px`;\r\n    }\r\n    if (configuredMinWidth?.trim()) {\r\n      return configuredMinWidth.trim();\r\n    }\r\n\r\n    const widthClass = column.value.width?.match(/^col-(\\d+)$/);\r\n    return widthClass ? `${widthClass[1]}px` : '100px';\r\n  }\r\n\r\n  shouldDisableRowEvents(): boolean {\r\n    return this.disableEvents && !this.selectable && !this.columnSource?.['select'] && !this.hasActionsColumn();\r\n  }\r\n\r\n  isSelected(row: any, event?: MouseEvent): void {\r\n    this.tableSelection.isSelected(row, event);\r\n  }\r\n\r\n  checkboxLabel(row?: any): string {\r\n    return this.tableSelection.checkboxLabel(row);\r\n  }\r\n\r\n  onSortClick(key: string): void {\r\n    if (key === 'select' || key === 'actions') {\r\n      return;\r\n    }\r\n\r\n    const current = this.sortState();\r\n    let direction: SortDirectionVW;\r\n\r\n    if (current.active !== key) {\r\n      direction = 'asc';\r\n    } else if (current.direction === 'asc') {\r\n      direction = 'desc';\r\n    } else if (current.direction === 'desc') {\r\n      direction = '';\r\n    } else {\r\n      direction = 'asc';\r\n    }\r\n\r\n    const next: SortStateVW = { active: direction ? key : '', direction };\r\n    this.sortState.set(next);\r\n    this.sortData(next);\r\n  }\r\n\r\n  sortData(sortData: SortStateVW): void {\r\n    this.lastSortState = {\r\n      active: sortData?.active ?? '',\r\n      direction: sortData?.direction ?? '',\r\n    };\r\n\r\n    if (this.paginatorFront) {\r\n      if (this.pageSize > 300) {\r\n        this.loadingRows.set(true);\r\n      }\r\n      const { active, direction } = sortData;\r\n\r\n      if (!active || direction === '') {\r\n        return;\r\n      }\r\n\r\n      this.allRows = this.sortRows(this.allRows, active, direction);\r\n      this.currentPage = 0;\r\n      this.recomputeFrontFilteredRows();\r\n      const data = { currentPage: this.currentPage, rowsPerPage: this.pageSize };\r\n      const length = this.paginatorFrontFn(data, this.frontFilteredRows);\r\n      this.loadingPageSize(length);\r\n\r\n      return;\r\n    }\r\n\r\n    if (this.paginator && !this.paginatorFront) {\r\n      this.sortChange.emit(sortData);\r\n      this.emitBackendSearch();\r\n      return;\r\n    }\r\n\r\n    const { active, direction } = sortData;\r\n    if (active && direction !== '') {\r\n      this.dataSource = this.sortRows(this.dataSource, active, direction);\r\n    }\r\n    this.sortChange.emit(sortData);\r\n  }\r\n\r\n  getCellClasses(element: any, column: any): string {\r\n    return this.tableSelection.getCellClasses(element, column);\r\n  }\r\n\r\n  onColumnsSelected(columns: any): void {\r\n    this.visibleColumns = columns;\r\n    this.refreshColumnCaches();\r\n    this.columnsChange.emit(columns);\r\n\r\n    if (this.paginatorFront) {\r\n      this.applyFrontSearchAndRepaginate(true);\r\n      return;\r\n    }\r\n\r\n    if (this.paginator && !this.paginatorFront) {\r\n      this.emitBackendSearch();\r\n    }\r\n  }\r\n\r\n  onSearchTextChange(value: string): void {\r\n    this.searchText.set(value ?? '');\r\n\r\n    if (this.searchDebounceTimeout) {\r\n      clearTimeout(this.searchDebounceTimeout);\r\n    }\r\n\r\n    if (this.paginatorFront) {\r\n      this.searchDebounceTimeout = setTimeout(() => {\r\n        this.applyFrontSearchAndRepaginate(true);\r\n      }, 300);\r\n      return;\r\n    }\r\n\r\n    if (this.paginator && !this.paginatorFront) {\r\n      this.searchDebounceTimeout = setTimeout(() => {\r\n        this.emitBackendSearch();\r\n      }, 300);\r\n    }\r\n  }\r\n\r\n  getColumnSource(): { [key: string]: TableColumnDefinitionVW } {\r\n    return this.buildColumnSource();\r\n  }\r\n\r\n  getSelectableColumns(): any {\r\n    return getSelectableTableColumns(this.allColumns);\r\n  }\r\n\r\n  getAllPossibleColumns(): { [key: string]: TableColumnDefinitionVW } {\r\n    return this.buildAllPossibleColumns();\r\n  }\r\n\r\n  private sortRows(rows: any[], active: string, direction: SortDirectionVW): any[] {\r\n    if (!Array.isArray(rows)) {\r\n      return rows;\r\n    }\r\n    const isAsc = direction === 'asc';\r\n    const column = this.getColumnSource()[active] ?? this.allColumns?.[active];\r\n    const isNumericColumn = ['number', 'percent', 'currency'].includes(column?.pipe);\r\n\r\n    return [...rows].sort((a, b) => {\r\n      const valueA = a?.[active];\r\n      const valueB = b?.[active];\r\n\r\n      if (valueA == null) return 1;\r\n      if (valueB == null) return -1;\r\n\r\n      const comparison = isNumericColumn\r\n        ? this.compareNumericValues(valueA, valueB)\r\n        : this.textCollator.compare(String(valueA), String(valueB));\r\n      return comparison * (isAsc ? 1 : -1);\r\n    });\r\n  }\r\n\r\n  private compareNumericValues(valueA: unknown, valueB: unknown): number {\r\n    const numericA = this.parseNumericValue(valueA);\r\n    const numericB = this.parseNumericValue(valueB);\r\n\r\n    if (numericA !== null && numericB !== null) {\r\n      return numericA - numericB;\r\n    }\r\n    return this.textCollator.compare(String(valueA), String(valueB));\r\n  }\r\n\r\n  private parseNumericValue(value: unknown): number | null {\r\n    if (typeof value === 'number') {\r\n      return Number.isFinite(value) ? value : null;\r\n    }\r\n    if (typeof value !== 'string') {\r\n      return null;\r\n    }\r\n\r\n    const directValue = Number(value.trim());\r\n    if (Number.isFinite(directValue)) {\r\n      return directValue;\r\n    }\r\n\r\n    const isNegative = value.includes('-') || /^\\s*\\(.*\\)\\s*$/.test(value);\r\n    const sanitizedValue = value.replace(/[^\\d,.-]/g, '').replace(/-/g, '');\r\n    if (!/\\d/.test(sanitizedValue)) {\r\n      return null;\r\n    }\r\n    const decimalSeparatorIndex = Math.max(sanitizedValue.lastIndexOf(','), sanitizedValue.lastIndexOf('.'));\r\n    const integerPart = sanitizedValue.slice(0, decimalSeparatorIndex).replace(/[.,]/g, '');\r\n    const decimalPart = sanitizedValue.slice(decimalSeparatorIndex + 1).replace(/[.,]/g, '');\r\n    const normalizedValue = decimalSeparatorIndex >= 0 ? `${integerPart}.${decimalPart}` : sanitizedValue;\r\n    const numericValue = Number(normalizedValue);\r\n\r\n    return Number.isFinite(numericValue) ? numericValue * (isNegative ? -1 : 1) : null;\r\n  }\r\n\r\n  private syncSelectionWithData(): void {\r\n    this.tableSelection.syncSelectionWithData();\r\n  }\r\n\r\n  private emitBackendSearch(): void {\r\n    this.searchChange.emit(\r\n      buildTableSearchPayload(\r\n        this.searchText() ?? '',\r\n        this.getVisibleSearchableColumnKeys(),\r\n        this.getCurrentSortState(),\r\n      ),\r\n    );\r\n  }\r\n\r\n  private applyFrontSearchAndRepaginate(resetPage: boolean): void {\r\n    if (!this.paginatorFront) {\r\n      return;\r\n    }\r\n\r\n    this.recomputeFrontFilteredRows();\r\n\r\n    if (resetPage) {\r\n      this.currentPage = 0;\r\n    }\r\n\r\n    const data = { currentPage: this.currentPage, rowsPerPage: this.pageSize };\r\n    const length = this.paginatorFrontFn(data, this.frontFilteredRows);\r\n    this.loadingPageSize(length);\r\n  }\r\n\r\n  private recomputeFrontFilteredRows(): void {\r\n    if (!this.paginatorFront) {\r\n      this.frontFilteredRows = [];\r\n      return;\r\n    }\r\n\r\n    const keys = this.getVisibleSearchableColumnKeys();\r\n    this.frontFilteredRows = filterFrontTableRows(this.paginatorFront, this.allRows, this.searchText() ?? '', keys);\r\n    this.totalItems = this.frontFilteredRows.length;\r\n  }\r\n\r\n  private getVisibleSearchableColumnKeys(): string[] {\r\n    return getSearchableColumnKeys(this.getColumnSource());\r\n  }\r\n\r\n  private getCurrentSortState(): SortStateVW {\r\n    return this.sortState() ?? this.lastSortState;\r\n  }\r\n\r\n  private getSelectionUniverseRows(): any[] {\r\n    return getSelectionUniverseRows(this.selectAllPages, this.paginatorFront, this.frontFilteredRows, this.dataSource);\r\n  }\r\n\r\n  private handleRowMutationChanges(changes: SimpleChanges): boolean {\r\n    const onlyMutationInputsChanged = Object.keys(changes).length === 1;\r\n\r\n    if (changes['deleteItem'] && !changes['deleteItem'].firstChange && changes['deleteItem'].currentValue !== null) {\r\n      this.tableMutations.handleDelete(changes['deleteItem'].currentValue);\r\n      if (onlyMutationInputsChanged) {\r\n        return true;\r\n      }\r\n    }\r\n\r\n    if (changes['updateItem'] && !changes['updateItem'].firstChange && changes['updateItem'].currentValue !== null) {\r\n      this.tableMutations.handleUpdate(changes['updateItem'].currentValue);\r\n      if (onlyMutationInputsChanged) {\r\n        return true;\r\n      }\r\n    }\r\n\r\n    if (changes['resetSelection'] && !changes['resetSelection'].firstChange) {\r\n      const currentValue = changes['resetSelection'].currentValue;\r\n      const previousValue = changes['resetSelection'].previousValue;\r\n      if (currentValue > previousValue) {\r\n        this.resetMultipleSelection();\r\n      }\r\n      if (onlyMutationInputsChanged) {\r\n        return true;\r\n      }\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  private initializeVisibleColumns(): void {\r\n    if (this.changeHeader && Object.keys(this.allColumns).length > 0 && Object.keys(this.visibleColumns).length === 0) {\r\n      this.visibleColumns = { ...this.allColumns };\r\n    }\r\n  }\r\n\r\n  private refreshTemplateCaches(): void {\r\n    this.refreshColumnCaches();\r\n    this.buttonsTableProperties = (this.buttonsTable ?? []).map((btn) => ({\r\n      ...btn,\r\n      size: 'xs',\r\n      round: false,\r\n      tooltip: btn.tooltip ?? btn.text ?? '',\r\n    }));\r\n  }\r\n\r\n  private refreshColumnCaches(): void {\r\n    const displayedColumnSource = this.buildColumnSource();\r\n    this.displayedColumns = Object.keys(displayedColumnSource || {});\r\n    this.displayedColumnEntries = this.displayedColumns.map((key) => ({\r\n      key,\r\n      value: displayedColumnSource[key],\r\n    }));\r\n\r\n    const allPossibleColumns = this.buildAllPossibleColumns();\r\n    this.allPossibleColumnEntries = Object.keys(allPossibleColumns || {}).map((key) => ({\r\n      key,\r\n      value: allPossibleColumns[key],\r\n    }));\r\n    this.selectableColumns = this.buildSelectableColumns();\r\n  }\r\n\r\n  private buildColumnSource(): TableColumnSourceVW {\r\n    return buildTableColumnSource(\r\n      this.changeHeader,\r\n      this.allColumns,\r\n      this.columnSource,\r\n      this.visibleColumns,\r\n      this.actionsColumn,\r\n      (column) => this.getActionsColumnDefinition(column),\r\n    );\r\n  }\r\n\r\n  private buildAllPossibleColumns(): TableColumnSourceVW {\r\n    return buildTableColumnSource(\r\n      this.changeHeader,\r\n      this.allColumns,\r\n      this.columnSource,\r\n      this.allColumns,\r\n      this.actionsColumn,\r\n      (column) => this.getActionsColumnDefinition(column),\r\n    );\r\n  }\r\n\r\n  private getActionsColumnDefinition(actionsColumn: TableColumnDefinitionVW): TableColumnDefinitionVW {\r\n    return { ...actionsColumn, align: actionsColumn.align ?? 'to-center' };\r\n  }\r\n\r\n  private buildSelectableColumns(): TableColumnSourceVW {\r\n    return getSelectableTableColumns(this.allColumns || {});\r\n  }\r\n\r\n  private resetPaginatorOnAllRowsChange(changes: SimpleChanges): void {\r\n    if (changes['allRows'] && !changes['allRows'].firstChange && this.paginatorFront) {\r\n      this.currentPage = 0;\r\n    }\r\n  }\r\n\r\n  private refreshFrontPaginatorData(): void {\r\n    if (this.pageSize > 300) {\r\n      this.loadingRows.set(true);\r\n    }\r\n    const data = { currentPage: this.currentPage, rowsPerPage: this.pageSize };\r\n    this.recomputeFrontFilteredRows();\r\n    const length = this.paginatorFrontFn(data, this.frontFilteredRows);\r\n    this.loadingPageSize(length);\r\n    this.syncSelectionWithData();\r\n  }\r\n\r\n  private refreshDatasource(): void {\r\n    this.syncSelectionWithData();\r\n    this.refreshRenderedRows();\r\n    if (this.loadingRows()) {\r\n      this.loadingPageSize(this.dataSource);\r\n    }\r\n  }\r\n\r\n  private refreshRenderedRows(scrollTop = this.tableScrollWrapperElement?.scrollTop ?? 0): void {\r\n    const rows = Array.isArray(this.dataSource) ? this.dataSource : [];\r\n    const rowHeight = this.getVirtualRowHeight();\r\n\r\n    if (!this.optimization || rows.length <= this.virtualizationThreshold) {\r\n      this.renderedRows.set(rows.map((row, index) => ({ row, index })));\r\n      this.virtualTopSpacerHeight.set(0);\r\n      this.virtualBottomSpacerHeight.set(0);\r\n      return;\r\n    }\r\n\r\n    const viewportHeight = this.tableScrollWrapperElement?.clientHeight || rowHeight * 20;\r\n    const visibleRowCount = Math.ceil(viewportHeight / rowHeight);\r\n    const maxStartIndex = Math.max(0, rows.length - visibleRowCount);\r\n    const startIndex = Math.min(\r\n      Math.max(0, Math.floor(scrollTop / rowHeight) - this.virtualizationOverscan),\r\n      maxStartIndex,\r\n    );\r\n    const endIndex = Math.min(rows.length, startIndex + visibleRowCount + this.virtualizationOverscan * 2);\r\n\r\n    this.renderedRows.set(rows.slice(startIndex, endIndex).map((row, offset) => ({ row, index: startIndex + offset })));\r\n    this.virtualTopSpacerHeight.set(startIndex * rowHeight);\r\n    this.virtualBottomSpacerHeight.set((rows.length - endIndex) * rowHeight);\r\n  }\r\n\r\n  private getVirtualRowHeight(): number {\r\n    const rowHeights: Record<typeof this.sizeTable, number> = { xxs: 20, xs: 27, md: 39 };\r\n    return rowHeights[this.sizeTable];\r\n  }\r\n\r\n  private scheduleAutomaticPageSize(): void {\r\n    if (this.pageSizeWasProvided || (!this.paginator && !this.paginatorFront)) {\r\n      return;\r\n    }\r\n    if (this.automaticPageSizeTimeout) {\r\n      clearTimeout(this.automaticPageSizeTimeout);\r\n    }\r\n    this.automaticPageSizeTimeout = setTimeout(() => this.applyAutomaticPageSize());\r\n  }\r\n\r\n  private applyAutomaticPageSize(): void {\r\n    const wrapper = this.tableScrollWrapperElement;\r\n    if (!wrapper || this.pageSizeWasProvided) {\r\n      return;\r\n    }\r\n\r\n    const container = wrapper.parentElement;\r\n    const containerHeight = container?.clientHeight ?? 0;\r\n    const headerActionsHeight = container?.querySelector<HTMLElement>('.header-actions')?.offsetHeight ?? 0;\r\n    const paginatorHeight = container?.querySelector<HTMLElement>('.table-paginator-global')?.offsetHeight ?? 0;\r\n    const availableTableHeight = containerHeight\r\n      ? containerHeight - headerActionsHeight - paginatorHeight\r\n      : wrapper.clientHeight;\r\n    if (availableTableHeight <= 0) {\r\n      return;\r\n    }\r\n\r\n    const rowHeights: Record<typeof this.sizeTable, number> = { xxs: 20, xs: 27, md: 39 };\r\n    const headerHeight = this.hideHeaders ? 0 : this.sizeTable === 'xxs' ? 27 : 39;\r\n    const calculatedPageSize = Math.max(\r\n      1,\r\n      Math.floor((availableTableHeight - headerHeight) / rowHeights[this.sizeTable]),\r\n    );\r\n    const nextPageSize = this.paginatorFront ? Math.min(calculatedPageSize, this.maxFrontPageSize) : calculatedPageSize;\r\n\r\n    this.automaticPageSize = nextPageSize;\r\n    this.refreshPageSizeOptions();\r\n    if (nextPageSize === this.internalPageSize) {\r\n      return;\r\n    }\r\n\r\n    this.internalPageSize = nextPageSize;\r\n    this.currentPage = 0;\r\n\r\n    if (this.paginatorFront) {\r\n      this.recomputeFrontFilteredRows();\r\n      this.paginatorFrontFn({ currentPage: 0, rowsPerPage: nextPageSize }, this.frontFilteredRows);\r\n      return;\r\n    }\r\n\r\n    this.paginatorData.emit({ currentPage: 0, rowsPerPage: nextPageSize });\r\n  }\r\n\r\n  private refreshPageSizeOptions(): void {\r\n    const options = this.automaticPageSize\r\n      ? [...this.configuredPageSizeOptions, this.automaticPageSize]\r\n      : [...this.configuredPageSizeOptions];\r\n    this.internalPageSizeOptions = [...new Set(options.filter((option) => option > 0))].sort(\r\n      (left, right) => left - right,\r\n    );\r\n  }\r\n\r\n  private isActionCellClick(event?: MouseEvent): boolean {\r\n    if (!event) {\r\n      return false;\r\n    }\r\n\r\n    const target = event.target as HTMLElement;\r\n    return !!target.closest('[data-cell-key=\"actions\"]');\r\n  }\r\n\r\n  private hasActionsColumn(): boolean {\r\n    return !!this.columnSource?.['actions'] || (this.changeHeader && !!this.actionsColumn?.['actions']);\r\n  }\r\n\r\n  private handleMultiSelection(row: any, event?: MouseEvent): void {\r\n    if (event?.shiftKey && this.lastSelectedIndex >= 0) {\r\n      const currentIndex = this.dataSource.indexOf(row);\r\n      this.selectRange(this.lastSelectedIndex, currentIndex);\r\n      return;\r\n    }\r\n\r\n    this.toggleRow(row);\r\n    this.lastSelectedIndex = this.dataSource.indexOf(row);\r\n  }\r\n\r\n  private handleSingleSelection(row: any): void {\r\n    const selection = resolveSingleSelection(this.selectable, this.selectedItem, row);\r\n    this.selectedItem = selection.selectedItem;\r\n    this.selectedItemChange.emit(selection.selectedRow);\r\n  }\r\n\r\n  private adjustCurrentPageAfterDelete(): void {\r\n    const totalPages = Math.ceil(this.totalItems / this.pageSize);\r\n    if (this.currentPage >= totalPages && this.currentPage > 0) {\r\n      this.currentPage = totalPages - 1;\r\n    }\r\n  }\r\n\r\n  private confirmOnlyVisibleColumns(): boolean {\r\n    if (typeof globalThis.confirm !== 'function') {\r\n      return true;\r\n    }\r\n    return globalThis.confirm('Desea imprimir solo las columnas visibles?');\r\n  }\r\n\r\n  private downloadExcel(fileName: string, rows: unknown[][]): void {\r\n    const htmlRows = rows\r\n      .map((row) => `<tr>${row.map((cell) => `<td>${this.escapeHtml(String(cell ?? ''))}</td>`).join('')}</tr>`)\r\n      .join('');\r\n    const html = `<html><head><meta charset=\"utf-8\" /></head><body><table>${htmlRows}</table></body></html>`;\r\n    const blob = new Blob([html], { type: 'application/vnd.ms-excel;charset=utf-8;' });\r\n    const link = document.createElement('a');\r\n    const url = URL.createObjectURL(blob);\r\n\r\n    link.href = url;\r\n    link.download = `${fileName || 'reporte'}.xls`;\r\n    link.click();\r\n    URL.revokeObjectURL(url);\r\n  }\r\n\r\n  private escapeHtml(value: string): string {\r\n    return value\r\n      .replace(/&/g, '&amp;')\r\n      .replace(/</g, '&lt;')\r\n      .replace(/>/g, '&gt;')\r\n      .replace(/\"/g, '&quot;')\r\n      .replace(/'/g, '&#039;');\r\n  }\r\n}\r\n","<div class=\"container-table\">\r\n  <div class=\"header-actions\">\r\n    <section class=\"header-firts\">\r\n      @if (tableTitle) {\r\n        <div class=\"table-title\">\r\n          {{ tableTitle }}\r\n        </div>\r\n      }\r\n      <section [class.w-full]=\"collapseRow\">\r\n        @if (collapseRow) {\r\n          <ssa-button\r\n            [properties]=\"{\r\n              text: titleCollapse,\r\n              color: 'primary',\r\n              size: 'xs',\r\n              round: false,\r\n              icon: 'unfold_more',\r\n            }\"\r\n            (clickButton)=\"collapseRow = false\"\r\n          ></ssa-button>\r\n        }\r\n        @if (isCollapssable && !collapseRow) {\r\n          <ssa-button\r\n            [properties]=\"{\r\n              size: 'xs',\r\n              round: false,\r\n              onlyIcon: true,\r\n              icon: collapseRow ? 'unfold_more' : 'unfold_less',\r\n              tooltip: 'Ocultar tabla',\r\n            }\"\r\n            (clickButton)=\"collapseRow = true\"\r\n          ></ssa-button>\r\n        }\r\n      </section>\r\n      @if (changeHeader && !collapseRow && changeHeaderPosition === 'l' && dataSource && dataSource.length > 0) {\r\n        <ssa-selection-headers-global\r\n          [onlyIcon]=\"isCollapssable || searchVisible\"\r\n          [originalObject]=\"selectableColumns\"\r\n          (selectedObjectChange)=\"onColumnsSelected($event)\"\r\n        ></ssa-selection-headers-global>\r\n      }\r\n    </section>\r\n\r\n    @if (\r\n      (((buttonsTable && buttonsTable.length) || changeHeader) &&\r\n        ((isCollapssable && !collapseRow) || !isCollapssable)) ||\r\n      searchVisible ||\r\n      exportable\r\n    ) {\r\n      <section class=\"buttons-table\">\r\n        @if (searchVisible && !collapseRow) {\r\n          <div class=\"input-search-table\">\r\n            <span class=\"material-symbols-outlined\">search</span>\r\n            <input\r\n              [value]=\"searchText()\"\r\n              (input)=\"onSearchTextChange($any($event.target).value)\"\r\n              placeholder=\"Buscar\"\r\n              [style.margin-right]=\"searchText().length ? '4px' : '32px'\"\r\n            />\r\n            @if (searchText().length) {\r\n              <span\r\n                class=\"material-symbols-outlined clear-icon animate__animated animate__rubberBand\"\r\n                (click)=\"onSearchTextChange('')\"\r\n                (keydown.enter)=\"onSearchTextChange('')\"\r\n                tabindex=\"0\"\r\n                >close</span\r\n              >\r\n            }\r\n          </div>\r\n        }\r\n        @for (btn of buttonsTableProperties; track $index) {\r\n          <ssa-button [properties]=\"btn\" (clickButton)=\"clickbtn.emit(btn)\"></ssa-button>\r\n        }\r\n        @if (changeHeader && changeHeaderPosition === 'r' && dataSource && dataSource.length > 0) {\r\n          <ssa-selection-headers-global\r\n            [onlyIcon]=\"true\"\r\n            [originalObject]=\"selectableColumns\"\r\n            (selectedObjectChange)=\"onColumnsSelected($event)\"\r\n          ></ssa-selection-headers-global>\r\n        }\r\n        @if (exportable) {\r\n          <ssa-button\r\n            [properties]=\"{\r\n              size: 'xs',\r\n              round: false,\r\n              onlyIcon: true,\r\n              icon: 'download',\r\n              color: 'success',\r\n              tooltip: 'Exportar a Excel',\r\n            }\"\r\n            (clickButton)=\"onExportExcel()\"\r\n          ></ssa-button>\r\n        }\r\n      </section>\r\n    }\r\n  </div>\r\n\r\n  @if (loading) {\r\n    <div class=\"load-window\">\r\n      <ssa-spinner text=\"Cargando...\"></ssa-spinner>\r\n    </div>\r\n  } @else if (!loadingRows() && (!dataSource || dataSource.length === 0)) {\r\n    <div class=\"no-data-container\">\r\n      <ssa-empty-data [text]=\"emptyMessage\"></ssa-empty-data>\r\n    </div>\r\n  } @else if (!collapseRow) {\r\n    <div\r\n      #tableScrollWrapper\r\n      class=\"table-scroll-wrapper\"\r\n      [class.has-horizontal-overflow]=\"hasHorizontalOverflow()\"\r\n      (scroll)=\"onTableScroll($event)\"\r\n    >\r\n      <table\r\n        class=\"table-global custom-table credi-controls\"\r\n        [class.rows-alternating]=\"paintRows\"\r\n        [class.grid-borders]=\"gridBorders\"\r\n        [style.min-width]=\"minWidth\"\r\n      >\r\n        @if (!hideHeaders) {\r\n          <thead>\r\n            <tr\r\n              [class.sticky]=\"stickyHeader\"\r\n              [class.center-headers]=\"centerHeaders\"\r\n              [class.table-global-header-xxs]=\"sizeTable === 'xxs'\"\r\n            >\r\n              @for (column of displayedColumnEntries; track column.key) {\r\n                @switch (column.key) {\r\n                  @case ('select') {\r\n                    <th\r\n                      class=\"{{ column.value.align }} {{ column.value.width }} column-select sticky-column-left\"\r\n                      [style.min-width]=\"getColumnMinWidth(column)\"\r\n                    >\r\n                      <input\r\n                        type=\"checkbox\"\r\n                        class=\"global-checkbox\"\r\n                        [disabled]=\"multiSelectDisabled\"\r\n                        [checked]=\"selection.hasValue() && isAllSelected()\"\r\n                        [indeterminate]=\"selection.hasValue() && !isAllSelected()\"\r\n                        (change)=\"toggleAllRows()\"\r\n                        [attr.aria-label]=\"checkboxLabel()\"\r\n                      />\r\n                    </th>\r\n                  }\r\n                  @case ('actions') {\r\n                    <th\r\n                      class=\"{{ column.value.align }} {{ column.value.width }} sticky-column-right\"\r\n                      [style.min-width]=\"getColumnMinWidth(column)\"\r\n                    >\r\n                      {{ column.value.value }}\r\n                    </th>\r\n                  }\r\n                  @default {\r\n                    <th\r\n                      class=\"{{ column.value.align }} {{ column.value.width }} sortable\"\r\n                      [style.min-width]=\"getColumnMinWidth(column)\"\r\n                      (click)=\"onSortClick(column.key)\"\r\n                      (keydown.enter)=\"onSortClick(column.key)\"\r\n                      tabindex=\"0\"\r\n                    >\r\n                      <span class=\"header-cell-content\">\r\n                        <span class=\"header-label\">{{ column.value.value }}</span>\r\n                        <span class=\"sort-icon\" [class.active]=\"sortState().active === column.key\">\r\n                          @if (sortState().active === column.key && sortState().direction === 'asc') {\r\n                            <span class=\"material-symbols-outlined\">arrow_upward</span>\r\n                          } @else if (sortState().active === column.key && sortState().direction === 'desc') {\r\n                            <span class=\"material-symbols-outlined\">arrow_downward</span>\r\n                          } @else {\r\n                            <span class=\"material-symbols-outlined\">unfold_more</span>\r\n                          }\r\n                        </span>\r\n                      </span>\r\n                    </th>\r\n                  }\r\n                }\r\n              }\r\n            </tr>\r\n          </thead>\r\n        }\r\n        <tbody>\r\n          @if (virtualTopSpacerHeight() > 0) {\r\n            <tr class=\"virtual-spacer-row\" aria-hidden=\"true\" [style.height.px]=\"virtualTopSpacerHeight()\">\r\n              <td [attr.colspan]=\"displayedColumnEntries.length || 1\"></td>\r\n            </tr>\r\n          }\r\n          @for (renderedRow of renderedRows(); track getRowTrackKey(renderedRow.index, renderedRow.row)) {\r\n            @let row = renderedRow.row;\r\n            @let index = renderedRow.index;\r\n            <tr\r\n              (click)=\"isSelected(row, $event)\"\r\n              (keydown)=\"(null)\"\r\n              [class.active]=\"row === selectedItem && selectable\"\r\n              [class.row-checked]=\"selection.isSelected(row)\"\r\n              [class.table-global-row-xxs]=\"sizeTable === 'xxs'\"\r\n              [class.table-global-row-xs]=\"sizeTable === 'xs'\"\r\n              [class.remove-events]=\"shouldDisableRowEvents()\"\r\n              [class.prevent-select]=\"columnSource['select'] && !multiSelectDisabled\"\r\n              [class.row-selectable]=\"selectable || (columnSource['select'] && !multiSelectDisabled)\"\r\n              [class.row-alternate]=\"paintRows && index % 2 === 1\"\r\n              [class]=\"'row-table ' + rowClass(row)\"\r\n            >\r\n              @for (column of displayedColumnEntries; track column.key) {\r\n                <td\r\n                  [attr.data-cell-key]=\"column.key\"\r\n                  [title]=\"row[column.key] ?? ''\"\r\n                  [class]=\"getCellClasses(row, column)\"\r\n                  [class.sticky-column-left]=\"column.key === 'select'\"\r\n                  [class.sticky-column-right]=\"column.key === 'actions'\"\r\n                  [style.min-width]=\"getColumnMinWidth(column)\"\r\n                  (click)=\"column.key === 'actions' ? $event.stopPropagation() : null\"\r\n                  (keydown)=\"column.key === 'actions' ? $event.stopPropagation() : null\"\r\n                >\r\n                  <div class=\"text\">\r\n                    @switch (column.key) {\r\n                      @case ('select') {\r\n                        <input\r\n                          type=\"checkbox\"\r\n                          class=\"global-checkbox\"\r\n                          (click)=\"$event.stopPropagation()\"\r\n                          (keydown)=\"$event.stopPropagation()\"\r\n                          (change)=\"toggleRow(row)\"\r\n                          [checked]=\"selection.isSelected(row)\"\r\n                          [attr.aria-label]=\"checkboxLabel(row)\"\r\n                        />\r\n                      }\r\n                      @case ('actions') {\r\n                        <div>\r\n                          <ng-container\r\n                            *ngTemplateOutlet=\"actionTemplate; context: getContext(row, index)\"\r\n                          ></ng-container>\r\n                        </div>\r\n                      }\r\n                      @default {\r\n                        @switch (column.value.pipe) {\r\n                          @case ('date') {\r\n                            {{\r\n                              (row[column.key] | date: column.value.format ?? '1.2-2') ?? row[column.key] ?? 'Sin datos'\r\n                            }}\r\n                          }\r\n                          @case ('number') {\r\n                            {{ (row[column.key] | number: column.value.format ?? '1.2-2') ?? 'Sin datos' }}\r\n                          }\r\n                          @case ('percent') {\r\n                            {{ row[column.key] / 100 | percent: column.value.format ?? '1.2-2' }}\r\n                          }\r\n                          @case ('currency') {\r\n                            {{\r\n                              row[column.key]\r\n                                | currency: '(' + column.value.coin + ')' : 'symbol' : column.value.format ?? '1.2-2'\r\n                            }}\r\n                          }\r\n                          @case ('status') {\r\n                            {{ (row[column.key] | statusTranslate) ?? 'Sin datos' }}\r\n                          }\r\n                          @default {\r\n                            {{ row[column.key] ?? 'Sin datos' }}\r\n                          }\r\n                        }\r\n                      }\r\n                    }\r\n                  </div>\r\n                </td>\r\n              }\r\n            </tr>\r\n          }\r\n          @if (virtualBottomSpacerHeight() > 0) {\r\n            <tr class=\"virtual-spacer-row\" aria-hidden=\"true\" [style.height.px]=\"virtualBottomSpacerHeight()\">\r\n              <td [attr.colspan]=\"displayedColumnEntries.length || 1\"></td>\r\n            </tr>\r\n          }\r\n        </tbody>\r\n      </table>\r\n    </div>\r\n\r\n    @if ((paginator || paginatorFront) && !loadingRows() && totalItems > 0) {\r\n      <div class=\"table-paginator-global bg\" [class.sticky-paginator]=\"stickyPaginator\" [style.min-width]=\"minWidth\">\r\n        @if (totalItems > minConfiguredPageSize) {\r\n          <div class=\"page-size-select\">\r\n            <span>Filas por página:</span>\r\n            <select\r\n              [value]=\"pageSize\"\r\n              (change)=\"onPageSizeChange(+$any($event.target).value)\"\r\n              aria-label=\"Filas por página\"\r\n            >\r\n              @for (opt of pageSizeOptions; track opt) {\r\n                <option [value]=\"opt\" [selected]=\"opt === pageSize\">{{ opt }}</option>\r\n              }\r\n            </select>\r\n          </div>\r\n        }\r\n        <span class=\"range-label\">{{ getRangeLabel() }}</span>\r\n        @if (totalItems > minConfiguredPageSize) {\r\n          <button\r\n            type=\"button\"\r\n            class=\"paginator-btn\"\r\n            [disabled]=\"currentPage === 0\"\r\n            (click)=\"goFirst()\"\r\n            aria-label=\"Primera página\"\r\n          >\r\n            <span class=\"material-symbols-outlined\">first_page</span>\r\n          </button>\r\n          <button\r\n            type=\"button\"\r\n            class=\"paginator-btn\"\r\n            [disabled]=\"currentPage === 0\"\r\n            (click)=\"goPrev()\"\r\n            aria-label=\"Página anterior\"\r\n          >\r\n            <span class=\"material-symbols-outlined\">chevron_left</span>\r\n          </button>\r\n          <button\r\n            type=\"button\"\r\n            class=\"paginator-btn\"\r\n            [disabled]=\"currentPage >= totalPages - 1\"\r\n            (click)=\"goNext()\"\r\n            aria-label=\"Página siguiente\"\r\n          >\r\n            <span class=\"material-symbols-outlined\">chevron_right</span>\r\n          </button>\r\n          <button\r\n            type=\"button\"\r\n            class=\"paginator-btn\"\r\n            [disabled]=\"currentPage >= totalPages - 1\"\r\n            (click)=\"goLast()\"\r\n            aria-label=\"Última página\"\r\n          >\r\n            <span class=\"material-symbols-outlined\">last_page</span>\r\n          </button>\r\n        }\r\n      </div>\r\n    }\r\n  }\r\n\r\n  @if (loadingRows()) {\r\n    <div class=\"loading-data-container\" aria-live=\"polite\">\r\n      <ssa-spinner text=\"Cargando registros...\"></ssa-spinner>\r\n    </div>\r\n  }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { StatusTranslatePipe } from './status-translate.pipe';\r\n\r\n@NgModule({\r\n  declarations: [StatusTranslatePipe],\r\n\r\n  exports: [StatusTranslatePipe],\r\n})\r\nexport class PipesModule {}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nexport enum EActionsModal {\r\n  CONFIRM = 'confirm',\r\n  RESET = 'reset',\r\n  CLOSE = 'close',\r\n}\r\n\r\n@Component({\r\n  selector: 'ssa-actions-modal',\r\n  templateUrl: './actions-modal.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./actions-modal.component.scss'],\r\n})\r\nexport class ActionsModalComponent {\r\n  @Input() disabledConfirm = false;\r\n  @Input() textConfirm = 'Confirmar';\r\n  @Input() textReset: string | null = 'Limpiar';\r\n  @Input() textClose = 'Cancelar';\r\n  @Input() buttonConfirmPermitCode = -1;\r\n  @Output() clickBtn = new EventEmitter<EActionsModal>();\r\n\r\n  actions = EActionsModal;\r\n}\r\n","<div class=\"actions-modal\">\r\n  <ssa-button\r\n    *ngIf=\"textReset\"\r\n    [properties]=\"{ size: 'xs', color: 'danger', text: textReset }\"\r\n    (clickButton)=\"clickBtn.emit(actions.RESET)\"\r\n  >\r\n  </ssa-button>\r\n\r\n  <ssa-button\r\n    [properties]=\"{\r\n      size: 'xs',\r\n      color: 'primary',\r\n      text: textConfirm,\r\n      disabled: disabledConfirm,\r\n    }\"\r\n    (clickButton)=\"clickBtn.emit(actions.CONFIRM)\"\r\n  >\r\n  </ssa-button>\r\n\r\n  <ssa-button\r\n    [properties]=\"{ size: 'xs', color: 'basic', text: textClose }\"\r\n    (clickButton)=\"clickBtn.emit(actions.CLOSE)\"\r\n  >\r\n  </ssa-button>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport const loading$ = new BehaviorSubject<boolean>(false);\r\nexport const loadingGeneral$ = new BehaviorSubject<boolean>(false);\r\n\r\n@Component({\r\n  selector: 'ssa-loading',\r\n  templateUrl: './loading.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./loading.component.scss'],\r\n})\r\nexport class LoadingComponent {\r\n  @Input() show = false;\r\n  @Input() showGeneral = false;\r\n\r\n  constructor() {\r\n    loading$.subscribe((show) => {\r\n      this.show = show;\r\n    });\r\n    loadingGeneral$.subscribe((show) => {\r\n      this.showGeneral = show;\r\n    });\r\n  }\r\n}\r\n","<div class=\"loading\" *ngIf=\"show || showGeneral\">\r\n  <mat-spinner></mat-spinner>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnChanges, Output } from '@angular/core';\r\n\r\nexport interface IdDefaultOpt {\r\n  label: string;\r\n  value: number | string;\r\n}\r\n\r\n@Component({\r\n  selector: 'ssa-item-data',\r\n  templateUrl: './item-data.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./item-data.component.scss'],\r\n})\r\nexport class ItemDataComponent implements OnChanges {\r\n  @Input() transparent = false;\r\n  @Input() icon = '';\r\n  @Input() iconAction = ''; //border_color para editar\r\n  @Input() label = '';\r\n  @Input() title = '';\r\n  @Input() substring = 0;\r\n  @Input() value: string | number = '';\r\n  @Input() options: IdDefaultOpt[] = [];\r\n  @Input() pipeType = '';\r\n  @Input() pipe = '';\r\n  @Input() coin = 'AR$';\r\n  @Input() minWidth = '150px';\r\n  @Input() color: 'blue' | 'neutral' = 'blue';\r\n  @Output() clickAction = new EventEmitter();\r\n\r\n  applyPipe = '';\r\n\r\n  ngOnChanges(): void {\r\n    this.value = this.getValue;\r\n    this.applyPipe = this.getPipeFormat(this.pipe || this.pipeType);\r\n  }\r\n\r\n  get getValue() {\r\n    const value: IdDefaultOpt[] = this.options.filter((item: IdDefaultOpt) => item.value === this.value);\r\n    return value && value.length > 0 ? value[0].label : this.value;\r\n  }\r\n\r\n  get getString() {\r\n    const value = this.value.toString();\r\n    return this.substring ? value.substring(0, this.substring) + '...' : value;\r\n  }\r\n\r\n  get hasValue(): boolean {\r\n    return this.value !== null && this.value !== undefined && this.value !== '';\r\n  }\r\n\r\n  getPipeFormat(type: string): string {\r\n    switch (type) {\r\n      case 'number':\r\n        return '1.0-0';\r\n      case 'date':\r\n        return 'dd/MM/yyyy HH:mm';\r\n      case 'onlyDate':\r\n        return 'dd/MM/yyyy';\r\n      case 'currency':\r\n        return '1.2-2';\r\n      case 'percent':\r\n        return '1.0-2';\r\n      default:\r\n        return '';\r\n    }\r\n  }\r\n\r\n  click() {\r\n    if (this.iconAction) this.clickAction.emit();\r\n  }\r\n\r\n  get formatCuit() {\r\n    if (this.value) {\r\n      const cleanedValue = String(this.value).replace(/\\D/g, '');\r\n      if (cleanedValue.length < 10 || cleanedValue.length > 12) {\r\n        return cleanedValue;\r\n      }\r\n      const part1 = cleanedValue.substring(0, 2);\r\n      const part2 = cleanedValue.substring(2, cleanedValue.length - 1);\r\n      const part3 = cleanedValue.substring(cleanedValue.length - 1);\r\n\r\n      return `${part1}-${part2}-${part3}`;\r\n    }\r\n    return this.value;\r\n  }\r\n}\r\n","<div\r\n  [class]=\"'item ' + color\"\r\n  [ngClass]=\"{ 'with-action': iconAction, 'item--transparent': transparent }\"\r\n  [ngStyle]=\"{ minWidth: minWidth }\"\r\n  (click)=\"click()\"\r\n  (keypress.enter)=\"click()\"\r\n  onkeydown=\"\"\r\n>\r\n  <div class=\"description\" [matTooltip]=\"hasValue && substring ? value.toString() : ''\">\r\n    <mat-icon class=\"item-icon\" fontSet=\"material-symbols-outlined\" *ngIf=\"icon\">\r\n      {{ icon }}\r\n    </mat-icon>\r\n    <div class=\"content\">\r\n      <div class=\"t-side\">{{ label }}</div>\r\n      <ng-container *ngIf=\"hasValue\">\r\n        <div class=\"t-main\" [ngSwitch]=\"pipeType\">\r\n          <span *ngSwitchCase=\"'cuit'\">\r\n            {{ formatCuit }}\r\n          </span>\r\n          <span *ngSwitchCase=\"'number'\">\r\n            {{ value | number: applyPipe }}\r\n          </span>\r\n          <span *ngSwitchCase=\"'date'\">\r\n            {{ value | date: applyPipe }}\r\n          </span>\r\n          <span *ngSwitchCase=\"'onlyDate'\">\r\n            {{ value | date: applyPipe }}\r\n          </span>\r\n          <span *ngSwitchCase=\"'currency'\">\r\n            {{ value | currency: coin : 'symbol' : applyPipe }}\r\n          </span>\r\n          <span *ngSwitchCase=\"'percent'\">\r\n            {{ (value | number: '1.2-2') + '%' }}\r\n          </span>\r\n          <span *ngSwitchDefault>\r\n            {{ getString }}\r\n          </span>\r\n        </div>\r\n      </ng-container>\r\n      <span class=\"t-main\" *ngIf=\"!hasValue\"> No Disponible </span>\r\n    </div>\r\n  </div>\r\n\r\n  <mat-icon *ngIf=\"iconAction\" fontSet=\"material-symbols-outlined\">{{ iconAction }}</mat-icon>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { IAutoCompleteSearch } from '../autocomplete-search/autocomplete-search.component';\r\nimport { IButtonVW } from '../button/button.component';\r\n\r\nexport interface FieldConfig {\r\n  key: string;\r\n  label: string;\r\n  type:\r\n    | 'number'\r\n    | 'text'\r\n    | 'textarea'\r\n    | 'select'\r\n    | 'date'\r\n    | 'checkbox'\r\n    | 'radio'\r\n    | 'group'\r\n    | 'autocomplete'\r\n    | 'money'\r\n    | 'percentage'\r\n    | 'hidden';\r\n  children?: FieldConfig[];\r\n  maxLength?: number;\r\n  minlength?: number;\r\n  min?: number;\r\n  max?: number;\r\n  maxDate?: Date;\r\n  maxToday?: boolean;\r\n  showCounter?: boolean;\r\n  upperCase?: boolean;\r\n  defaultValue?: any;\r\n  mask?: string;\r\n  icon?: string;\r\n  btns?: IButtonVW[];\r\n  hint?: string;\r\n  class?: string;\r\n  half?: boolean;\r\n  checkSN?: boolean;\r\n  multiple?: boolean;\r\n  dateToday?: boolean;\r\n  rows?: number;\r\n  disabled?: boolean;\r\n  radioDirection?: 'row' | 'column';\r\n  search?: IAutoCompleteSearch;\r\n  nameLabelKey?: string;\r\n  nameValueKey?: string;\r\n  options?: {\r\n    value: string | number;\r\n    label: string;\r\n    disabled?: boolean;\r\n    permitCode?: number;\r\n  }[];\r\n  validations?: {\r\n    name?: string;\r\n    validator: any;\r\n    message?: string;\r\n  }[];\r\n}\r\n\r\n@Component({\r\n  selector: 'ssa-form-field',\r\n  templateUrl: './form-field.component.html',\r\n  styleUrls: ['./form-field.component.scss'],\r\n  standalone: false,\r\n})\r\nexport class FormFieldComponent implements OnInit {\r\n  @Output() clickBtnEvent = new EventEmitter<IButtonVW>();\r\n  @Input() btns: IButtonVW[] = [];\r\n  @Input() form!: FormGroup;\r\n  @Input()\r\n  set field(value: FieldConfig | any) {\r\n    if (value) {\r\n      value.maxLength = value.maxLength ?? 100;\r\n      this._field = value;\r\n    } else {\r\n      this._field = undefined as any;\r\n    }\r\n  }\r\n\r\n  @Input() key = '';\r\n  @Input() dateToday = false;\r\n  @Input() label = '';\r\n  @Input() nameLabelKey = 'label';\r\n  @Input() nameValueKey = 'value';\r\n  @Input() type:\r\n    | 'number'\r\n    | 'text'\r\n    | 'select'\r\n    | 'date'\r\n    | 'checkbox'\r\n    | 'textarea'\r\n    | 'radio'\r\n    | 'group'\r\n    | 'autocomplete'\r\n    | 'money'\r\n    | 'hidden'\r\n    | 'percentage' = 'text';\r\n  @Input() maxLength = 100;\r\n  @Input() showCounter = false;\r\n  @Input() readonly = false;\r\n  @Input() disable = false;\r\n  @Input() multiple = false;\r\n  @Input() icon = '';\r\n  @Input() hint = '';\r\n  @Input() half = true;\r\n  @Input() maxDate: Date | null = null;\r\n  @Input() maxToday = false;\r\n  @Input() checkSN = false;\r\n  @Input() upperCase = false;\r\n  @Input() search: IAutoCompleteSearch = {\r\n    data: [],\r\n    searchKeys: [],\r\n    label: '',\r\n    displayKey: '',\r\n  };\r\n  @Input() mask = '';\r\n  @Input() rows = 3;\r\n  @Input() radioDirection = 'row';\r\n  @Input() labelBold = false;\r\n  @Input() options: {\r\n    value: string | number;\r\n    label: string;\r\n    permitCode?: number;\r\n  }[] = [];\r\n  @Input() validations: { name: string; validator: any; message: string }[] = [];\r\n  @Output() emitSelectSearch = new EventEmitter();\r\n\r\n  readonly today: Date = new Date();\r\n\r\n  get field(): FieldConfig {\r\n    return (\r\n      this._field ?? {\r\n        key: this.key,\r\n        label: this.label,\r\n        type: this.type,\r\n        maxLength: this.maxLength,\r\n        showCounter: this.showCounter,\r\n        mask: this.mask,\r\n        rows: this.rows,\r\n        radioDirection: this.radioDirection,\r\n        half: this.half,\r\n        upperCase: this.upperCase,\r\n        dateToday: this.dateToday,\r\n        maxDate: this.maxDate ?? undefined,\r\n        maxToday: this.maxToday,\r\n        options: this.options,\r\n        validations: this.validations,\r\n        nameLabelKey: this.nameLabelKey,\r\n        nameValueKey: this.nameValueKey,\r\n        checkSN: this.checkSN,\r\n        btns: this.btns,\r\n      }\r\n    );\r\n  }\r\n  private _field!: FieldConfig;\r\n  characterCount: { [key: string]: number } = {};\r\n\r\n  ngOnInit(): void {\r\n    if (!this.form) return;\r\n    const control = this.form.get(this.field.key);\r\n    if (!control) return;\r\n\r\n    if (this.field.upperCase) {\r\n      control.valueChanges.subscribe((value) => {\r\n        if (value && typeof value === 'string') {\r\n          const upperValue = value.toUpperCase();\r\n          if (value !== upperValue) {\r\n            control.setValue(upperValue, { emitEvent: false });\r\n          }\r\n        }\r\n      });\r\n    }\r\n\r\n    if (this.field.type === 'number' || this.field.type === 'percentage') {\r\n      control.valueChanges.subscribe((value) => {\r\n        if (value !== null && value !== '' && typeof value === 'string') {\r\n          const num = Number(value);\r\n          if (!isNaN(num)) {\r\n            control.setValue(num, { emitEvent: false });\r\n          }\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  hasError(fieldKey: string): boolean {\r\n    const control = this.form.get(fieldKey);\r\n    return (control?.invalid && (control.dirty || control.touched)) ?? false;\r\n  }\r\n\r\n  get getValue() {\r\n    return this.form.get(this.field.key)?.value ?? '';\r\n  }\r\n\r\n  getErrorMessage(fieldKey: string): string {\r\n    const control = this.form.get(fieldKey);\r\n    if (!control?.errors) return '';\r\n\r\n    const errorMessages: Record<string, (e: any) => string> = {\r\n      required: () => 'Este campo es obligatorio.',\r\n      minlength: (e) => `Debe tener al menos ${e.requiredLength} caracteres.`,\r\n      maxlength: (e) => `Debe tener máximo ${e.requiredLength} caracteres.`,\r\n      min: (e) => `Debe ser un número mayor o igual a ${e.min}.`,\r\n      max: (e) => `Debe ser un número menor o igual a ${e.max}.`,\r\n      minAge: (e) => `La edad mínima debe ser ${e.requiredAge} años.`,\r\n      maxAge: (e) => `La edad máxima debe ser ${e.requiredAge} años.`,\r\n      lessThanFamilyGroup: () => 'Debe ser menor que el Grupo Familiar.',\r\n      pattern: () => 'Formato inválido.',\r\n      dateRangeInvalid: () => 'Rango de fechas inválido.',\r\n      dateRange: () => 'Rango de fechas inválido.',\r\n      minToday: () => 'La fecha debe ser al menos hoy.',\r\n      maxToday: () => 'La fecha debe ser menor o igual a hoy.',\r\n      email: () => 'Debe ser un correo electrónico válido.',\r\n      fechaInvalida: () => 'Fecha inválida.',\r\n      prestamoMayorCero: () => 'El número de préstamo debe ser mayor que cero.',\r\n    };\r\n\r\n    const errorKey = Object.keys(control.errors).find((key) => errorMessages[key]);\r\n    return errorKey ? errorMessages[errorKey](control.errors[errorKey]) : 'Campo inválido.';\r\n  }\r\n\r\n  updateCharacterCount(fieldKey: string): void {\r\n    const control = this.form.get(fieldKey);\r\n    this.characterCount[fieldKey] = control?.value?.length || 0;\r\n  }\r\n\r\n  handleProcessSelection(event) {\r\n    const control = this.form.get(this.field.key);\r\n    if (control) {\r\n      control.setValue(event?.value ?? event);\r\n      control.markAsDirty();\r\n      control.markAsTouched();\r\n    }\r\n    this.emitSelectSearch.emit(event);\r\n  }\r\n\r\n  getBtn(btn: IButtonVW): IButtonVW {\r\n    return { ...btn, onlyIcon: true, size: 'xl', round: false };\r\n  }\r\n}\r\n","<div class=\"my-input\">\r\n  <form [formGroup]=\"form\" [ngClass]=\"{ radio: field.type === 'radio' }\" *ngIf=\"field.type !== 'hidden'\">\r\n    <!-- Campo de texto -->\r\n    <!-- Campo de texto con validaciones y contador -->\r\n    <mat-form-field *ngIf=\"field.type === 'text' || field.type === 'number' || field.type === 'money'\" class=\"field\">\r\n      <mat-label [ngStyle]=\"{ 'font-weight': labelBold ? 'bold' : 'normal' }\">{{ field.label }}</mat-label>\r\n      <input\r\n        [readonly]=\"readonly\"\r\n        matInput\r\n        [type]=\"field.type === 'money' ? 'text' : field.type\"\r\n        [ngClass]=\"{ upperCase: field.upperCase }\"\r\n        placeholder=\"Ingrese el valor\"\r\n        [formControlName]=\"field.key\"\r\n        [maxlength]=\"field.maxLength!\"\r\n        (input)=\"updateCharacterCount(field.key)\"\r\n        [mask]=\"field.type === 'money' ? 'separator.2' : field.mask || ''\"\r\n        [thousandSeparator]=\"field.type === 'money' ? '.' : ''\"\r\n        [decimalMarker]=\"field.type === 'money' ? ',' : '.'\"\r\n        [separatorLimit]=\"field.type === 'money' ? '99999999999' : ''\"\r\n        [prefix]=\"field.type === 'money' ? '$ ' : ''\"\r\n      />\r\n      <mat-hint align=\"start\" *ngIf=\"showCounter || field.showCounter\">\r\n        {{ characterCount[field.key] || 0 }}<span *ngIf=\"field.maxLength\">/{{ field.maxLength }}</span>\r\n      </mat-hint>\r\n      <mat-error *ngIf=\"hasError(field.key)\">\r\n        {{ getErrorMessage(field.key) }}\r\n      </mat-error>\r\n    </mat-form-field>\r\n\r\n    <!-- Campo de porcentaje -->\r\n    <mat-form-field *ngIf=\"field.type === 'percentage'\" class=\"field\">\r\n      <mat-label [ngStyle]=\"{ 'font-weight': labelBold ? 'bold' : 'normal' }\">{{ field.label }}</mat-label>\r\n      <input\r\n        [readonly]=\"readonly\"\r\n        matInput\r\n        type=\"text\"\r\n        placeholder=\"0.00\"\r\n        [formControlName]=\"field.key\"\r\n        [maxlength]=\"field.maxLength!\"\r\n        (input)=\"updateCharacterCount(field.key)\"\r\n        mask=\"separator.2\"\r\n        [thousandSeparator]=\"','\"\r\n        [separatorLimit]=\"'999'\"\r\n        suffix=\" %\"\r\n      />\r\n      <mat-hint align=\"start\" *ngIf=\"showCounter || field.showCounter\">\r\n        {{ characterCount[field.key] || 0 }}<span *ngIf=\"field.maxLength\">/{{ field.maxLength }}</span>\r\n      </mat-hint>\r\n      <mat-error *ngIf=\"hasError(field.key)\">\r\n        {{ getErrorMessage(field.key) }}\r\n      </mat-error>\r\n    </mat-form-field>\r\n\r\n    <!-- Campo de textarea -->\r\n    <mat-form-field *ngIf=\"field.type === 'textarea'\" class=\"field\">\r\n      <mat-label [ngStyle]=\"{ 'font-weight': labelBold ? 'bold' : 'normal' }\">{{ field.label }}</mat-label>\r\n      <textarea\r\n        [readonly]=\"readonly\"\r\n        matInput\r\n        [type]=\"field.type\"\r\n        placeholder=\"Ingrese el valor\"\r\n        [formControlName]=\"field.key\"\r\n        (input)=\"updateCharacterCount(field.key)\"\r\n        [mask]=\"field.mask || ''\"\r\n        [rows]=\"field.rows\"\r\n      ></textarea>\r\n      <mat-hint align=\"start\" *ngIf=\"showCounter || field.showCounter\">\r\n        {{ characterCount[field.key] || 0 }}<span *ngIf=\"field.maxLength\">/{{ field.maxLength }}</span>\r\n      </mat-hint>\r\n      <mat-error *ngIf=\"hasError(field.key)\">\r\n        {{ getErrorMessage(field.key) }}\r\n      </mat-error>\r\n    </mat-form-field>\r\n\r\n    <mat-form-field *ngIf=\"field.type === 'select' && !(multiple || field.multiple)\" class=\"field\">\r\n      <mat-label [ngStyle]=\"{ 'font-weight': labelBold ? 'bold' : 'normal' }\">{{ field.label }}</mat-label>\r\n      <mat-select [formControlName]=\"field.key\">\r\n        <mat-option\r\n          *ngFor=\"let option of field.options\"\r\n          [value]=\"option[field.nameValueKey ?? 'value']\"\r\n          [disabled]=\"option.disabled\"\r\n        >\r\n          {{ option[field.nameLabelKey ?? 'label'] }}\r\n        </mat-option>\r\n      </mat-select>\r\n      <mat-hint *ngIf=\"field.hint\"> {{ field.hint }} </mat-hint>\r\n      <mat-error *ngIf=\"hasError(field.key)\">\r\n        {{ getErrorMessage(field.key) }}\r\n      </mat-error>\r\n    </mat-form-field>\r\n\r\n    <!-- Campo select multiple -->\r\n    <mat-form-field\r\n      *ngIf=\"field.type === 'select' && (multiple || field.multiple)\"\r\n      class=\"field\"\r\n      appearance=\"fill\"\r\n      floatLabel=\"always\"\r\n    >\r\n      <mat-icon matPrefix fontSet=\"material-symbols-outlined\" *ngIf=\"field.icon\">{{ field.icon }}</mat-icon>\r\n      <mat-icon matPrefix fontSet=\"material-symbols-outlined\" *ngIf=\"icon\">{{ icon }}</mat-icon>\r\n      <mat-label [ngStyle]=\"{ 'font-weight': labelBold ? 'bold' : 'normal' }\"> {{ field.label }}</mat-label>\r\n      <mat-select [formControlName]=\"field.key\" multiple>\r\n        <mat-option *ngFor=\"let topping of field.options\" [value]=\"topping.value\">{{ topping.label }}</mat-option>\r\n      </mat-select>\r\n      <mat-hint *ngIf=\"field.hint\"> {{ field.hint }} </mat-hint>\r\n    </mat-form-field>\r\n\r\n    <!-- Campo de fecha -->\r\n    <mat-form-field *ngIf=\"field.type === 'date'\" class=\"field\">\r\n      <mat-label [ngStyle]=\"{ 'font-weight': labelBold ? 'bold' : 'normal' }\">{{ field.label }}</mat-label>\r\n      <input\r\n        [readonly]=\"readonly\"\r\n        matInput\r\n        [matDatepicker]=\"datePicker\"\r\n        placeholder=\"Formato dd/mm/aaaa\"\r\n        [formControlName]=\"field.key\"\r\n        (click)=\"datePicker.open()\"\r\n        [min]=\"field.dateToday ? today : null\"\r\n        [max]=\"field.maxDate ? field.maxDate : field.maxToday ? today : null\"\r\n      />\r\n      <mat-datepicker-toggle matSuffix [for]=\"datePicker\"></mat-datepicker-toggle>\r\n      <mat-datepicker #datePicker></mat-datepicker>\r\n      <mat-error *ngIf=\"hasError(field.key)\">\r\n        {{ getErrorMessage(field.key) }}\r\n      </mat-error>\r\n    </mat-form-field>\r\n\r\n    <!-- Checkbox -->\r\n    <div *ngIf=\"field.type === 'checkbox'\" class=\"min-height\" [ngClass]=\"{ half: field.half }\">\r\n      <mat-checkbox *ngIf=\"!field.checkSN\" color=\"warn\" [formControlName]=\"field.key\" [disabled]=\"!!field.disabled\">\r\n        {{ field.label }}\r\n      </mat-checkbox>\r\n\r\n      <mat-checkbox\r\n        *ngIf=\"field.checkSN\"\r\n        color=\"warn\"\r\n        [checked]=\"form.get(field.key)?.value === 'S'\"\r\n        (change)=\"form.get(field.key)?.setValue($event.checked ? 'S' : 'N'); form.get(field.key)?.markAsDirty()\"\r\n        [disabled]=\"!!field.disabled || form.get(field.key)?.disabled\"\r\n      >\r\n        {{ field.label }}\r\n      </mat-checkbox>\r\n\r\n      <mat-error *ngIf=\"hasError(field.key)\">\r\n        {{ getErrorMessage(field.key) }}\r\n      </mat-error>\r\n    </div>\r\n\r\n    <!-- Radio Button -->\r\n    <div *ngIf=\"field.type === 'radio'\" [ngClass]=\"{ half: field.half }\">\r\n      <label for=\"\" *ngIf=\"field.label\" [ngStyle]=\"{ 'font-weight': labelBold ? 'bold' : 'normal' }\"\r\n        >{{ field.label }}:\r\n      </label>\r\n      <mat-radio-group [formControlName]=\"field.key\" color=\"warn\" [class]=\"field.radioDirection\">\r\n        <ng-container *ngFor=\"let option of field.options\">\r\n          <mat-radio-button [value]=\"option.value\" [disabled]=\"option.disabled\">\r\n            <div style=\"cursor: pointer\">{{ option.label }}</div>\r\n          </mat-radio-button>\r\n        </ng-container>\r\n      </mat-radio-group>\r\n      <mat-error *ngIf=\"hasError(field.key)\">\r\n        {{ getErrorMessage(field.key) }}\r\n      </mat-error>\r\n    </div>\r\n\r\n    <div *ngIf=\"field.type === 'autocomplete' && field.search\" [ngClass]=\"{ half: field.half }\">\r\n      <label class=\"label-search\" for=\"input_search\" [ngStyle]=\"{ 'font-weight': labelBold ? 'bold' : 'normal' }\">\r\n        {{ field.search.label ?? 'Concesionario' }}\r\n      </label>\r\n      <ssa-autocomplete-search\r\n        [clearInput]=\"!getValue\"\r\n        [data]=\"field.search.data\"\r\n        [searchKeys]=\"field.search.searchKeys\"\r\n        [displayKey]=\"field.search.displayKey\"\r\n        [typeForm]=\"true\"\r\n        [fixed]=\"!!field.search.fixed\"\r\n        [cleanDataSelected]=\"true\"\r\n        (itemSelected)=\"handleProcessSelection($event)\"\r\n      >\r\n      </ssa-autocomplete-search>\r\n    </div>\r\n  </form>\r\n\r\n  <ssa-button *ngFor=\"let btn of field.btns\" [properties]=\"getBtn(btn)\" (clickButton)=\"clickBtnEvent.emit(btn)\">\r\n  </ssa-button>\r\n</div>\r\n","import { Component, EventEmitter, Input, Output, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ssa-dual-list',\r\n  templateUrl: './dual-list.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./dual-list.component.scss'],\r\n})\r\nexport class DualListComponent implements OnChanges {\r\n  @Input() leftOptions: any[] = [];\r\n  @Input() rightOptions: any[] = [];\r\n  @Input() label = 'label';\r\n  @Input() value = 'value';\r\n  @Input() lftHeader = 'Left Header';\r\n  @Input() rghtHeader = 'Right Header';\r\n  @Output() newChanges = new EventEmitter<{\r\n    action: string;\r\n    leftOptions: any[];\r\n    rightOptions: any[];\r\n    selectedOptions: any[];\r\n  }>();\r\n\r\n  pendingSelection: { fromLeft: any[]; fromRight: any[] } = {\r\n    fromLeft: [],\r\n    fromRight: [],\r\n  };\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (changes['leftOptions'] || changes['rightOptions']) {\r\n      this.pendingSelection = { fromLeft: [], fromRight: [] };\r\n    }\r\n  }\r\n\r\n  public togglePendingSelection(item: any, action: 'fromLeft' | 'fromRight'): void {\r\n    const exists = this.pendingSelection[action].findIndex((i) => item[this.value] === i[this.value]);\r\n\r\n    if (exists !== -1) {\r\n      this.pendingSelection[action].splice(exists, 1);\r\n      return;\r\n    }\r\n\r\n    this.pendingSelection[action].push(item);\r\n  }\r\n\r\n  public transferSelectedOptions(from: 'fromLeft' | 'fromRight'): void {\r\n    const source = from === 'fromLeft' ? this.leftOptions : this.rightOptions;\r\n    const target = from === 'fromLeft' ? this.rightOptions : this.leftOptions;\r\n\r\n    const listChanges = this.pendingSelection[from];\r\n\r\n    const updatedSource = this.removeOptionsFromCollection(source, listChanges);\r\n    const updatedTarget = listChanges.concat(target);\r\n\r\n    if (from === 'fromLeft') {\r\n      this.leftOptions = updatedSource;\r\n      this.rightOptions = updatedTarget;\r\n    } else {\r\n      this.rightOptions = updatedSource;\r\n      this.leftOptions = updatedTarget.sort((a, b) => a[this.label].localeCompare(b[this.label]));\r\n    }\r\n    this.newChanges.emit({\r\n      action: from,\r\n      leftOptions: this.leftOptions,\r\n      rightOptions: this.rightOptions,\r\n      selectedOptions: listChanges,\r\n    });\r\n    this.pendingSelection = { fromLeft: [], fromRight: [] };\r\n  }\r\n\r\n  private removeOptionsFromCollection(collection: any[], optionsToRemove: any[]): any[] {\r\n    const collectionWithoutOptions = collection.filter((option) => !optionsToRemove.includes(option));\r\n\r\n    return collectionWithoutOptions;\r\n  }\r\n}\r\n","<div class=\"dual-list\">\r\n  <section class=\"dual-list-column\">\r\n    <h2 class=\"dual-list-column__header\">{{ lftHeader }}</h2>\r\n    <ul class=\"dual-list-column-list\">\r\n      <li *ngIf=\"!leftOptions.length\" class=\"dual-list-column__empty\">Sin opciones disponibles</li>\r\n      <li\r\n        *ngFor=\"let item of leftOptions\"\r\n        class=\"dual-list-column__option\"\r\n        [ngClass]=\"{\r\n          'dual-list-column__option--selected': pendingSelection.fromLeft.includes(item),\r\n        }\"\r\n        (click)=\"togglePendingSelection(item, 'fromLeft')\"\r\n        (keydown)=\"('')\"\r\n      >\r\n        {{ item[label] }}\r\n      </li>\r\n    </ul>\r\n  </section>\r\n\r\n  <section class=\"dual-list-actions\">\r\n    <ssa-button\r\n      [properties]=\"{\r\n        size: 'md',\r\n        color: 'primary',\r\n        solid: !!pendingSelection.fromLeft.length,\r\n        tooltip: 'Agregar Seleccionados',\r\n        icon: 'arrow_right_alt',\r\n        onlyIcon: true,\r\n        disabled: !pendingSelection.fromLeft.length,\r\n      }\"\r\n      (clickButton)=\"transferSelectedOptions('fromLeft')\"\r\n    >\r\n    </ssa-button>\r\n    <ssa-button\r\n      [properties]=\"{\r\n        size: 'md',\r\n        color: 'basic',\r\n        tooltip: 'Quitar Seleccionados',\r\n        icon: 'arrow_left_alt',\r\n        onlyIcon: true,\r\n        disabled: !pendingSelection.fromRight.length,\r\n      }\"\r\n      (clickButton)=\"transferSelectedOptions('fromRight')\"\r\n    >\r\n    </ssa-button>\r\n  </section>\r\n\r\n  <section class=\"dual-list-column\">\r\n    <h2 class=\"dual-list-column__header\">{{ rghtHeader }}</h2>\r\n    <ul class=\"dual-list-column-list\">\r\n      <li *ngIf=\"!rightOptions.length\" class=\"dual-list-column__empty\">Sin opciones disponibles</li>\r\n      <li\r\n        *ngFor=\"let item of rightOptions\"\r\n        class=\"dual-list-column__option\"\r\n        [ngClass]=\"{\r\n          'dual-list-column__option--selected': pendingSelection.fromRight.includes(item),\r\n        }\"\r\n        (click)=\"togglePendingSelection(item, 'fromRight')\"\r\n        (keydown)=\"('')\"\r\n      >\r\n        {{ item[label] }}\r\n      </li>\r\n    </ul>\r\n  </section>\r\n</div>\r\n","import {\r\n  AfterViewChecked,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostListener,\r\n  Input,\r\n  Output,\r\n  TemplateRef,\r\n  ViewChild,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'ssa-scrolling-window',\r\n  templateUrl: './scrolling-window.component.html',\r\n  standalone: false,\r\n  styleUrls: ['./scrolling-window.component.scss'],\r\n})\r\nexport class ScrollingWindowComponent implements AfterViewChecked {\r\n  @Input() titleWindow = '';\r\n  @Input() subTitleWindow = '';\r\n  @Input() icon = '';\r\n  @Input() width = '400px';\r\n  @Input() openWindow = false;\r\n  @Input() fullHeight = false;\r\n  @Input() contentTemplate!: TemplateRef<any>;\r\n  @Output() closeWindow = new EventEmitter();\r\n  @Input() closeOnEscape = false;\r\n  @Input() disableScroll = false;\r\n\r\n  @ViewChild('windowRef', { static: false }) windowRef!: ElementRef;\r\n  parentHeight: string = 'auto';\r\n\r\n  ngAfterViewChecked() {\r\n    if (!this.fullHeight) {\r\n      const parent = this.windowRef.nativeElement.parentElement;\r\n      if (parent) {\r\n        const parentHeight = parent.offsetHeight + parent.offsetHeight / 4;\r\n        this.parentHeight = `${Math.trunc(parentHeight)}px`;\r\n      }\r\n    }\r\n  }\r\n\r\n  get getPostition() {\r\n    return this.openWindow ? 'calc(100% - ' + this.width + ')' : '100%';\r\n  }\r\n\r\n  @HostListener('document:keydown', ['$event'])\r\n  onKeyDown(event: KeyboardEvent) {\r\n    if (event.key === 'Escape' && this.closeOnEscape && this.openWindow) {\r\n      this.closeWindow.emit();\r\n    }\r\n  }\r\n}\r\n","<div\r\n  #windowRef\r\n  class=\"window window--right\"\r\n  [ngClass]=\"{ open: openWindow, fullHeight: fullHeight }\"\r\n  [ngStyle]=\"{\r\n    'max-width': width,\r\n    left: getPostition,\r\n    height: !fullHeight ? parentHeight : 'auto',\r\n    'overflow-y': !fullHeight ? 'auto' : 'hidden',\r\n  }\"\r\n>\r\n  <div class=\"window-header\">\r\n    <div class=\"window-title\">\r\n      <mat-icon fontSet=\"material-symbols-outlined\">{{ icon }}</mat-icon>\r\n      <div>\r\n        <h1 class=\"\">\r\n          {{ titleWindow }}\r\n        </h1>\r\n        <p *ngIf=\"subTitleWindow\">{{ subTitleWindow }}</p>\r\n      </div>\r\n    </div>\r\n    <button mat-icon-button title=\"Regresar\" [ngClass]=\"{ 'small-button': !fullHeight }\" (click)=\"closeWindow.emit()\">\r\n      <mat-icon fontSet=\"material-symbols-outlined\">close</mat-icon>\r\n    </button>\r\n  </div>\r\n  <div class=\"window-content\" [style.overflowY]=\"disableScroll ? 'hidden' : 'auto'\">\r\n    <ng-container *ngIf=\"contentTemplate\">\r\n      <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n    </ng-container>\r\n  </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatRippleModule } from '@angular/material/core';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { CrediComponentsComponent } from './credi-components.component';\r\nimport { ButtonComponent } from './button/button.component';\r\nimport { AutocompleteSearchComponent } from './autocomplete-search/autocomplete-search.component';\r\nimport { FieldsetComponent } from './fieldset/fieldset.component';\r\nimport { EmptyDataComponent } from './empty-data/empty-data.component';\r\nimport { ChatComponent } from './chat/chat.component';\r\nimport { CardDataExpandedComponent } from './card-data-expanded/card-data-expanded.component';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { AccordionComponent } from './accordion/accordion.component';\r\nimport { AccordionHorizontalComponent } from './accordion-horizontal/accordion-horizontal.component';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { TreeMultiCheckComponent } from './tree-multi-check/tree-multi-check.component';\r\nimport { TabVerticalComponent } from './tab-vertical/tab-vertical.component';\r\nimport { TabComponent } from './tab-vertical/tab/tab.component';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { TableGlobalComponent } from './table-global/table-global.component';\r\nimport { SelectionHeadersGlobalComponent } from './table-global/selection-headers-global/selection-headers-global.component';\r\nimport { PipesModule } from './pipes/pipes.module';\r\nimport { ActionsModalComponent } from './modal/actions-modal/actions-modal.component';\r\nimport { ModalComponent } from './modal/modal.component';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { LoadingComponent } from './loading/loading.component';\r\nimport { ItemDataComponent } from './item-data/item-data.component';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { FormFieldComponent } from './form-field/form-field.component';\r\nimport { DualListComponent } from './dual-list/dual-list.component';\r\nimport { ScrollingWindowComponent } from './scrolling-window/scrolling-window.component';\r\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\r\nimport { SpinnerComponent } from './spinner/spinner.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    CrediComponentsComponent,\r\n    ButtonComponent,\r\n    AutocompleteSearchComponent,\r\n    FieldsetComponent,\r\n    EmptyDataComponent,\r\n    ChatComponent,\r\n    SpinnerComponent,\r\n    CardDataExpandedComponent,\r\n    AccordionComponent,\r\n    AccordionHorizontalComponent,\r\n    TreeMultiCheckComponent,\r\n    TabVerticalComponent,\r\n    TabComponent,\r\n    TableGlobalComponent,\r\n    SelectionHeadersGlobalComponent,\r\n    ActionsModalComponent,\r\n    ModalComponent,\r\n    LoadingComponent,\r\n    ItemDataComponent,\r\n    FormFieldComponent,\r\n    DualListComponent,\r\n    ScrollingWindowComponent,\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    PipesModule,\r\n    NgxMaskDirective,\r\n    MatButtonModule,\r\n    MatIconModule,\r\n    MatCardModule,\r\n    MatFormFieldModule,\r\n    MatTooltipModule,\r\n    MatRippleModule,\r\n    MatMenuModule,\r\n    MatExpansionModule,\r\n    MatSelectModule,\r\n    MatCheckboxModule,\r\n    MatInputModule,\r\n    MatDatepickerModule,\r\n    MatRadioModule,\r\n    MatTreeModule,\r\n    MatPaginatorModule,\r\n    MatProgressBarModule,\r\n    MatTableModule,\r\n    MatSortModule,\r\n    MatProgressSpinnerModule,\r\n  ],\r\n  exports: [\r\n    CrediComponentsComponent,\r\n    ButtonComponent,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    MatButtonModule,\r\n    MatIconModule,\r\n    MatCardModule,\r\n    MatFormFieldModule,\r\n    MatTooltipModule,\r\n    MatRippleModule,\r\n    MatMenuModule,\r\n    MatExpansionModule,\r\n    MatSelectModule,\r\n    MatCheckboxModule,\r\n    MatInputModule,\r\n    MatDatepickerModule,\r\n    MatRadioModule,\r\n    MatTreeModule,\r\n    MatPaginatorModule,\r\n    MatProgressBarModule,\r\n    MatTableModule,\r\n    MatSortModule,\r\n    MatProgressSpinnerModule,\r\n    AutocompleteSearchComponent,\r\n    FieldsetComponent,\r\n    EmptyDataComponent,\r\n    ChatComponent,\r\n    SpinnerComponent,\r\n    CardDataExpandedComponent,\r\n    AccordionComponent,\r\n    AccordionHorizontalComponent,\r\n    TreeMultiCheckComponent,\r\n    TabVerticalComponent,\r\n    TabComponent,\r\n    TableGlobalComponent,\r\n    SelectionHeadersGlobalComponent,\r\n    ActionsModalComponent,\r\n    ModalComponent,\r\n    LoadingComponent,\r\n    ItemDataComponent,\r\n    FormFieldComponent,\r\n    DualListComponent,\r\n    ScrollingWindowComponent,\r\n  ],\r\n  providers: [provideNgxMask()],\r\n})\r\nexport class CrediComponentsModule {}\r\n","/*\r\n * Public API Surface of credi-components\r\n */\r\nexport * from './lib/credi-components.service';\r\nexport * from './lib/credi-components.component';\r\nexport * from './lib/credi-components.module';\r\n\r\n// Exportar componentes\r\nexport * from './lib/button/button.component';\r\nexport * from './lib/autocomplete-search/autocomplete-search.component';\r\nexport * from './lib/fieldset/fieldset.component';\r\nexport * from './lib/empty-data/empty-data.component';\r\nexport * from './lib/chat/chat.component';\r\nexport * from './lib/card-data-expanded/card-data-expanded.component';\r\nexport * from './lib/accordion/accordion.component';\r\nexport * from './lib/accordion-horizontal/accordion-horizontal.component';\r\nexport * from './lib/form-field/form-field.component';\r\nexport * from './lib/item-data/item-data.component';\r\nexport * from './lib/loading/loading.component';\r\nexport * from './lib/modal/modal.component';\r\nexport * from './lib/scrolling-window/scrolling-window.component';\r\nexport * from './lib/spinner/spinner.component';\r\nexport * from './lib/table-global/table-global.component';\r\nexport * from './lib/table-global/selection-headers-global/selection-headers-global.component';\r\nexport * from './lib/table-global/table-common';\r\nexport * from './lib/tab-vertical/tab-vertical.component';\r\nexport * from './lib/tab-vertical/tab/tab.component';\r\nexport * from './lib/dual-list/dual-list.component';\r\nexport * from './lib/tree-multi-check/tree-multi-check.component';\r\n\r\nexport * from './lib/modal/actions-modal/actions-modal.component';\r\n\r\n// Exportar pipes\r\nexport * from './lib/pipes/pipes.module';\r\nexport * from './lib/pipes/status-translate.pipe';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i3.EmptyDataComponent","i4.ButtonComponent","ESizeModal","i2.ButtonComponent","i3.ModalComponent","i3.ButtonComponent","i4.EmptyDataComponent","i5.SpinnerComponent","i6.SelectionHeadersGlobalComponent","i7.StatusTranslatePipe","i4","i7","i11.ButtonComponent","i12.AutocompleteSearchComponent"],"mappings":"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"}