{"version":3,"file":"edsis-component-select.mjs","sources":["../../../library/component/select/select.component.ts","../../../library/component/select/option.component.ts","../../../library/component/select/edsis-component-select.ts"],"sourcesContent":["import {\n  booleanAttribute,\n  Component,\n  computed,\n  ElementRef,\n  effect,\n  forwardRef,\n  inject,\n  input,\n  signal,\n  viewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { type ConnectedPosition, OverlayModule } from '@angular/cdk/overlay';\nimport { MAT_OPTION_PARENT_COMPONENT, type MatOption } from '@angular/material/core';\nimport { MatSelect } from '@angular/material/select';\nimport { takeUntil } from 'rxjs';\nimport { FormFieldContext } from '@edsis/component/form';\nimport {\n  type ComponentDensity,\n  type ComponentRadius,\n  densityBaseValue,\n  radiusBaseValue,\n} from '@edsis/component/utils/core';\n\nconst ITEM_ALIGNED_POSITIONS: ConnectedPosition[] = [\n  {\n    originX: 'start',\n    originY: 'top',\n    overlayX: 'start',\n    overlayY: 'top',\n  },\n  {\n    originX: 'end',\n    originY: 'top',\n    overlayX: 'end',\n    overlayY: 'top',\n  },\n  {\n    originX: 'start',\n    originY: 'bottom',\n    overlayX: 'start',\n    overlayY: 'bottom',\n    panelClass: 'mat-mdc-select-panel-above',\n  },\n  {\n    originX: 'end',\n    originY: 'bottom',\n    overlayX: 'end',\n    overlayY: 'bottom',\n    panelClass: 'mat-mdc-select-panel-above',\n  },\n];\n\n/**\n * Custom shadcn-styled select.\n */\n@Component({\n  selector: 'SelectField',\n  exportAs: 'matSelect',\n  encapsulation: ViewEncapsulation.None,\n  imports: [OverlayModule],\n  host: {\n    class: 'mat-mdc-select',\n    role: 'combobox',\n    'aria-haspopup': 'listbox',\n    '[style.--radius-base]': 'radiusBase()',\n    '[style.--spacing-base]': 'densityBase()',\n  },\n  providers: [\n    { provide: MatSelect, useExisting: forwardRef(() => SelectComponent) },\n    { provide: MAT_OPTION_PARENT_COMPONENT, useExisting: forwardRef(() => SelectComponent) },\n  ],\n  styleUrl: './select.component.css',\n  template: `\n    <div\n      cdk-overlay-origin\n      class=\"mat-mdc-select-trigger\"\n      (click)=\"open()\"\n      #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n      #trigger\n    >\n      <div class=\"mat-mdc-select-value\" [attr.id]=\"_valueId\">\n        @if (empty) {\n          <span class=\"mat-mdc-select-placeholder mat-mdc-select-min-line\">{{ placeholder }}</span>\n        } @else {\n          <span class=\"mat-mdc-select-value-text\">\n            @if (customTrigger) {\n              <ng-content select=\"mat-select-trigger\" />\n            } @else {\n              <span class=\"mat-mdc-select-min-line\">{{ triggerValue }}</span>\n            }\n          </span>\n        }\n      </div>\n\n      <div class=\"mat-mdc-select-arrow-wrapper\">\n        <div class=\"mat-mdc-select-arrow\">\n          <svg viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" focusable=\"false\" aria-hidden=\"true\">\n            <path d=\"M7 10l5 5 5-5z\" />\n          </svg>\n        </div>\n      </div>\n    </div>\n\n    <ng-template\n      cdk-connected-overlay\n      cdkConnectedOverlayHasBackdrop\n      cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n      [cdkConnectedOverlayDisableClose]=\"true\"\n      [cdkConnectedOverlayPanelClass]=\"_overlayPanelClass\"\n      [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\n      [cdkConnectedOverlayOrigin]=\"_preferredOverlayOrigin || fallbackOverlayOrigin\"\n      [cdkConnectedOverlayPositions]=\"_positions\"\n      [cdkConnectedOverlayWidth]=\"_overlayWidth\"\n      [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n      [cdkConnectedOverlayUsePopover]=\"_popoverLocation\"\n      (detach)=\"close()\"\n      (backdropClick)=\"close()\"\n      (overlayKeydown)=\"_handleOverlayKeydown($event)\"\n    >\n      <div\n        class=\"mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open select-panel\"\n        [class]=\"panelClass\"\n        [style.--radius-base]=\"radiusBase()\"\n        [style.--spacing-base]=\"densityBase()\"\n      >\n        @if (search()) {\n          <div class=\"select-search\">\n            <input\n              #searchInput\n              type=\"search\"\n              class=\"select-search-input\"\n              autocomplete=\"off\"\n              spellcheck=\"false\"\n              [value]=\"searchQuery()\"\n              [placeholder]=\"searchPlaceholder()\"\n              [attr.aria-label]=\"searchPlaceholder()\"\n              [attr.aria-controls]=\"id + '-panel'\"\n              (input)=\"onSearchInput($event)\"\n              (keydown)=\"onSearchKeydown($event)\"\n            />\n          </div>\n        }\n\n        <div\n          #panel\n          role=\"listbox\"\n          tabindex=\"-1\"\n          class=\"select-options\"\n          [class.mat-select-panel-animations-enabled]=\"!_animationsDisabled\"\n          [class.mat-primary]=\"_parentFormField?.color === 'primary'\"\n          [class.mat-accent]=\"_parentFormField?.color === 'accent'\"\n          [class.mat-warn]=\"_parentFormField?.color === 'warn'\"\n          [class.mat-undefined]=\"!_parentFormField?.color\"\n          [attr.id]=\"id + '-panel'\"\n          [attr.aria-multiselectable]=\"multiple\"\n          [attr.aria-label]=\"ariaLabel || null\"\n          [attr.aria-labelledby]=\"_getPanelAriaLabelledby()\"\n          (keydown)=\"_handleKeydown($event)\"\n        >\n          <ng-content />\n        </div>\n\n        @if (searchQuery().trim() && visibleOptionCount() === 0) {\n          <div class=\"select-empty\" role=\"status\">{{ searchEmptyText() }}</div>\n        }\n      </div>\n    </ng-template>\n  `,\n})\nexport class SelectComponent extends MatSelect {\n  private readonly formFieldContext = inject(FormFieldContext, { optional: true });\n  readonly radius = input<ComponentRadius>('inherit');\n  readonly density = input<ComponentDensity>('inherit');\n  readonly search = input(false, { transform: booleanAttribute });\n  readonly searchPlaceholder = input('Search options');\n  readonly searchEmptyText = input('No options found.');\n\n  protected readonly radiusBase = computed(() => radiusBaseValue(this.radius()));\n  protected readonly densityBase = computed(() => densityBaseValue(this.density()));\n  protected readonly searchQuery = signal('');\n  protected readonly visibleOptionCount = signal(0);\n\n  private readonly searchInput = viewChild<ElementRef<HTMLInputElement>>('searchInput');\n  private readonly hiddenOptions = new Set<MatOption>();\n\n  constructor() {\n    super();\n    this._positions = ITEM_ALIGNED_POSITIONS;\n\n    effect(() => {\n      if (!this.search() && this.searchQuery()) {\n        this.resetSearch();\n      }\n    });\n\n    const ctx = this.formFieldContext;\n    if (ctx) {\n      effect(() => {\n        const describedBy = ctx.describedBy();\n        if (describedBy) {\n          this.userAriaDescribedBy = describedBy;\n        }\n      });\n    }\n  }\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.formFieldContext?.control.set(this.ngControl?.control ?? null);\n  }\n\n  override ngAfterContentInit(): void {\n    super.ngAfterContentInit();\n\n    this._keyManager.skipPredicate(\n      (option) => this.hiddenOptions.has(option) || (!this.panelOpen && option.disabled),\n    );\n\n    this.options.changes.pipe(takeUntil(this._destroy)).subscribe(() => {\n      this.applySearch(this.searchQuery());\n    });\n\n    this.optionSelectionChanges.pipe(takeUntil(this._destroy)).subscribe((event) => {\n      if (event.isUserInput && this.multiple && this.search() && this.panelOpen) {\n        this.focusSearchInput();\n      }\n    });\n\n    this.visibleOptionCount.set(this.options.length);\n  }\n\n  override open(): void {\n    const wasOpen = this.panelOpen;\n    super.open();\n\n    if (!wasOpen && this.panelOpen && this.search()) {\n      this.resetSearch();\n      this.focusSearchInput();\n    }\n  }\n\n  override close(): void {\n    const wasOpen = this.panelOpen;\n    super.close();\n\n    if (wasOpen) {\n      this.resetSearch();\n    }\n  }\n\n  protected onSearchInput(event: Event): void {\n    const query = (event.target as HTMLInputElement).value;\n    this.searchQuery.set(query);\n    this.applySearch(query);\n  }\n\n  protected onSearchKeydown(event: KeyboardEvent): void {\n    switch (event.key) {\n      case 'ArrowDown':\n      case 'ArrowUp':\n      case 'PageDown':\n      case 'PageUp':\n      case 'Enter':\n      case 'Tab':\n        this._handleKeydown(event);\n        event.stopPropagation();\n        break;\n      case 'Escape':\n        event.preventDefault();\n        event.stopPropagation();\n        this.close();\n        this.focus();\n        break;\n    }\n  }\n\n  private resetSearch(): void {\n    this.searchQuery.set('');\n    this.applySearch('');\n  }\n\n  private focusSearchInput(): void {\n    queueMicrotask(() => this.searchInput()?.nativeElement.focus());\n  }\n\n  private applySearch(query: string): void {\n    if (!this.options) {\n      return;\n    }\n\n    const normalizedQuery = query.trim().toLocaleLowerCase();\n    const groupVisibility = new Map<HTMLElement, boolean>();\n    this.hiddenOptions.clear();\n\n    for (const option of this.options) {\n      const visible =\n        !normalizedQuery || option.viewValue.toLocaleLowerCase().includes(normalizedQuery);\n      const optionElement = option._getHostElement();\n      optionElement.hidden = !visible;\n\n      if (!visible) {\n        this.hiddenOptions.add(option);\n      }\n\n      const groupElement = optionElement.closest<HTMLElement>('mat-optgroup');\n      if (groupElement) {\n        groupVisibility.set(groupElement, (groupVisibility.get(groupElement) ?? false) || visible);\n      }\n    }\n\n    for (const [groupElement, visible] of groupVisibility) {\n      groupElement.hidden = !visible;\n    }\n\n    const visibleOptions = this.options.filter((option) => !this.hiddenOptions.has(option));\n    this.visibleOptionCount.set(visibleOptions.length);\n\n    if (normalizedQuery && this.panelOpen) {\n      const activeOption =\n        visibleOptions.find((option) => option.selected && !option.disabled) ??\n        visibleOptions.find((option) => !option.disabled);\n      this._keyManager.setActiveItem(activeOption ?? -1);\n    }\n  }\n}\n","import { Component, forwardRef, ViewEncapsulation } from '@angular/core';\nimport { MatOption, MatPseudoCheckbox, MatRipple } from '@angular/material/core';\n\n/**\n * Option for `<SelectField>`.\n */\n@Component({\n  selector: 'SelectItem',\n  imports: [MatPseudoCheckbox, MatRipple],\n  encapsulation: ViewEncapsulation.None,\n  exportAs: 'matOption',\n  providers: [{ provide: MatOption, useExisting: forwardRef(() => OptionComponent) }],\n  template: `\n    @if (multiple) {\n      <mat-pseudo-checkbox\n        class=\"mat-mdc-option-pseudo-checkbox\"\n        [disabled]=\"disabled\"\n        [state]=\"selected ? 'checked' : 'unchecked'\"\n        aria-hidden=\"true\"\n      />\n    }\n\n    <ng-content select=\"mat-icon\" />\n\n    <span class=\"mdc-list-item__primary-text\" #text><ng-content /></span>\n\n    @if (!multiple && selected && !hideSingleSelectionIndicator) {\n      <mat-pseudo-checkbox\n        class=\"mat-mdc-option-pseudo-checkbox\"\n        [disabled]=\"disabled\"\n        state=\"checked\"\n        aria-hidden=\"true\"\n        appearance=\"minimal\"\n      />\n    }\n\n    @if (group && group._inert) {\n      <span class=\"cdk-visually-hidden\">({{ group.label }})</span>\n    }\n\n    <div\n      class=\"mat-mdc-option-ripple mat-focus-indicator\"\n      aria-hidden=\"true\"\n      mat-ripple\n      [matRippleTrigger]=\"_getHostElement()\"\n      [matRippleDisabled]=\"disabled || disableRipple\"\n    ></div>\n  `,\n  styleUrl: './option.component.css',\n})\nexport class OptionComponent extends MatOption {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}