{"version":3,"file":"usitsdasdesign-dds-ng-select.mjs","sources":["../../src/app/dds/select/select/constants.ts","../../src/app/dds/select/select/select.component.ts","../../src/app/dds/select/select/select.component.html","../../src/app/dds/select/select.module.ts","../../src/app/dds/select/usitsdasdesign-dds-ng-select.ts"],"sourcesContent":["export const DEFAULT_ICON = 'dds-icon_arrow-down';\nexport const INDENT = 0;\nexport const SHIFT = 0;\nexport const DEFAULT_HEADING_PROP = 'heading';\nexport const DEFAULT_VALUE_PROP = 'value';\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Optional,\n  Output,\n  Self,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport { ContextMenuComponent, ContextMenuModule } from '@usitsdasdesign/dds-ng/context-menu';\nimport {\n  DestroyCtor,\n  DestroyMixin,\n  ErrorStateCtor,\n  ErrorStateMixin,\n  FormAccessorCtor,\n  FormAccessorMixin,\n  I18nCtor,\n  I18nMixin,\n  ResponsivenessCtor,\n  ResponsivenessMixin,\n} from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { coerceBooleanProperty, generateId } from '@usitsdasdesign/dds-ng/core/utils';\nimport { AdditionalClass, ErrorState, KeyCodes, LabelPosition, PositionState, Size } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { I18nModule, I18nService, ITranslation } from '@usitsdasdesign/dds-ng/shared/i18n';\nimport { ResizeHandlerModule, ResizeHandlerService } from '@usitsdasdesign/dds-ng/shared/resize-handler';\nimport { StickerDirective, StickerModule } from '@usitsdasdesign/dds-ng/sticker';\nimport { SelectItemOptions } from '../typings';\nimport { DEFAULT_HEADING_PROP, DEFAULT_VALUE_PROP, DEFAULT_ICON, SHIFT } from './constants';\n\nconst SelectBase: DestroyCtor & I18nCtor & ResponsivenessCtor & FormAccessorCtor & ErrorStateCtor = DestroyMixin(\n  I18nMixin(ResponsivenessMixin(FormAccessorMixin(ErrorStateMixin())))\n);\n\n@Component({\n  selector: 'dds-select',\n  templateUrl: './select.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, StickerModule, FocusHandlerModule, ContextMenuModule, ResizeHandlerModule, I18nModule],\n})\nexport class SelectComponent extends SelectBase implements OnInit, AfterViewInit, OnChanges {\n  // Host binding to add a disabled class based on the disabled input property\n  @HostBinding(`class.${AdditionalClass.disabled}`) @Input() disabled: boolean | undefined;\n\n  // ViewChild to access the StickerDirective instance\n  @ViewChild('stickerDir') sticker: StickerDirective;\n\n  // ViewChild to access the select button element\n  @ViewChild('selectBtn') selectBtn: ElementRef<HTMLElement>;\n\n  // Input properties for various configurations and states\n  @Input() label: string | undefined;\n  @Input() description: string | undefined;\n  @Input() placeholder: string | undefined;\n  @Input() errorMessage: string | undefined;\n  @Input() customClass: string | undefined;\n  @Input() ariaLabel: string | undefined;\n  @Input() ariaControls: string | undefined;\n  @Input() icon: string | undefined = DEFAULT_ICON;\n  @Input() labelPosition: LabelPosition | string | undefined = this.ddsConfig.getConfig().labelPosition;\n  @Input() size: Size | string | undefined = this.ddsConfig.getConfig().size;\n  @Input() errorState: string | ErrorState | undefined = this.ddsConfig.getConfig().errorState;\n  @Input() isResponsive: boolean | undefined = this.ddsConfig.getConfig().isResponsive;\n  @Input() isError: boolean | undefined;\n  @Input() headingProp: string | undefined = DEFAULT_HEADING_PROP;\n  @Input() valueProp: string | undefined = DEFAULT_VALUE_PROP;\n  @Input() groupingListProp: string | undefined;\n  @Input() isInverse: boolean | undefined;\n  @Input() isRequired: boolean | undefined = false;\n  @Input() isLoading: boolean | undefined = false;\n  @Input() isLoadingWithCounter: boolean | undefined = false;\n  @Input() selectedItemTemplate: TemplateRef<any> | undefined;\n  @Input() placeholderTemplate: TemplateRef<any> | undefined;\n  @Input() optionsTemplate: TemplateRef<any> | undefined;\n  @Input() loadingTemplate: TemplateRef<any> | undefined;\n\n  // Input properties for sticker configurations\n  @Input() stickerWidth: number | string | undefined;\n  @Input() stickerMaxHeight: number | string | undefined;\n  @Input() stickerCustomClass: string | undefined;\n  @Input() stickerIndent: number | undefined = this.ddsConfig.getConfig().stickerIndent;\n  @Input() stickerShift: number | undefined = SHIFT;\n  @Input() stickerIsDisabled: boolean | undefined;\n  @Input() stickerPosition: PositionState | string | undefined = this.ddsConfig.getConfig().stickerPosition;\n  @Input() stickerIsDynamic: boolean | undefined = true;\n\n  // List of items to be displayed in the select dropdown\n  @Input()\n  set list(list: any[] | undefined) {\n    this._list = list?.map((item) => {\n      if (typeof item === 'object') {\n        return item;\n      } else {\n        return {\n          value: item,\n          heading: item,\n        };\n      }\n    });\n\n    if (!this.firstChange && this.value) {\n      this.setActiveItem(this.value);\n    }\n  }\n  get list(): any[] | undefined {\n    return this._list;\n  }\n\n  // The currently selected value\n  @Input()\n  set value(value: any | undefined) {\n    this._value = value;\n    if (!this.firstChange) {\n      this.setActiveItem(this.value);\n    }\n  }\n  get value(): any | undefined {\n    return this._value;\n  }\n\n  @Output() valueChanged: EventEmitter<any> = new EventEmitter();\n  @Output() stickerShown: EventEmitter<void> = new EventEmitter();\n  @Output() stickerHidden: EventEmitter<void> = new EventEmitter();\n\n  public selectOpen: boolean = false;\n  public selectedItem: SelectItemOptions;\n  public isExternalLabel: boolean;\n  public isSizeLg: boolean;\n  public isSizeSm: boolean;\n  public popupAriaLabel: string;\n  public activeItemId: number;\n  public id: string;\n\n  private _list: SelectItemOptions[] = [];\n  private _value: string;\n  private firstChange = true;\n  private keyboardTrigger: boolean;\n  private contextMenu: ContextMenuComponent;\n\n  // Returns the text indicating whether the select is expanded\n  get isExpandedText(): string {\n    return this.selectOpen ? 'expanded' : '';\n  }\n\n  constructor(\n    @Optional() @Self() public ngControl: NgControl,\n    @Optional() public parentForm: NgForm,\n    @Optional() public parentFormGroup: FormGroupDirective,\n    public cdr: ChangeDetectorRef,\n    public resizeService: ResizeHandlerService,\n    public i18n: I18nService,\n    private ddsConfig: DdsConfigService\n  ) {\n    super();\n\n    if (this.ngControl !== null) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  public ngOnInit(): void {\n    super.ngOnInit();\n    this.checkSize(this.size);\n    this.checkLabelPosition(this.labelPosition);\n    this.id = generateId();\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    this.checkSize(changes.size);\n    this.checkLabelPosition(changes.labelPosition);\n\n    if (changes.isRequired) {\n      this.isRequired = coerceBooleanProperty(changes.isRequired.currentValue);\n    }\n\n    if (changes.isLoading && !changes.isLoading.currentValue) {\n      if (this.keyboardTrigger) this.setActiveItemWithKeaboard(this.contextMenu);\n      this.setActiveItem(this.value);\n    }\n\n    super.ngOnChanges(changes);\n  }\n\n  public ngAfterViewInit(): void {\n    if (this.value) {\n      this.setActiveItem(this.value);\n    }\n\n    this.firstChange = false;\n  }\n\n  // Toggles the select dropdown open or closed\n  public toggleSelect(): void {\n    this.selectOpen = !this.selectOpen;\n    this.keyboardTrigger = false;\n  }\n\n  // Handles the event when the dropdown is hidden\n  public onHidden(): void {\n    this.selectOpen = false;\n    this.checkError();\n    this.onModelTouched();\n    this.stickerHidden.emit();\n    this.cdr.detectChanges();\n  }\n\n  // Handles the event when the dropdown is shown\n  public onShown(el: HTMLElement): void {\n    this.selectOpen = true;\n    this.stickerShown.emit();\n    el.blur();\n  }\n\n  // Prevents default event behavior for specific key events\n  public preventEvent(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      event.preventDefault();\n    }\n  }\n\n  // Handles keydown events for the select button\n  public handleKeydown(event: KeyboardEvent) {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      this.keyboardTrigger = true;\n      this.sticker.show();\n      this.onModelTouched();\n    }\n  }\n\n  // Handles keydown events for the context menu\n  public handleKeydownMenu(event: KeyboardEvent): void {\n    if (this.selectOpen && event.keyCode === KeyCodes.TAB) {\n      this.selectBtn.nativeElement.focus();\n      this.sticker.hide();\n    }\n  }\n\n  // Initializes the context menu component\n  public contextMenuInit(contextMenu: ContextMenuComponent): void {\n    this.contextMenu = contextMenu;\n    this.setActiveItemWithKeaboard(this.contextMenu);\n  }\n\n  // Changes the selected item in the dropdown\n  public changeItem(item: SelectItemOptions): void {\n    const itemValue =  item[this.valueProp];\n\n    this.value = itemValue;\n    this.onModelChange(itemValue);\n    this.valueChanged.emit(itemValue);\n    this.checkError();\n    this.close();\n  }\n\n  // Writes a new value to the element\n  public writeValue(value: any): void {\n    this.value = value;\n    super.writeValue(value);\n    this.cdr.markForCheck();\n  }\n\n  // Sets the disabled state of the component\n  public setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n    this.cdr.markForCheck();\n  }\n\n  // Resets the selected value\n  public reset(): void {\n    this.value = null;\n    this.onModelChange(null);\n    this.valueChanged.emit(null);\n    this.checkError();\n    this.cdr.markForCheck();\n  }\n\n  // Closes the dropdown\n  public close(): void {\n    this.sticker.hide();\n  }\n\n  // Sets the active item in the context menu using the keyboard\n  private setActiveItemWithKeaboard(contextMenu: ContextMenuComponent): void {\n    setTimeout(() => {\n      const ctxMenuItems = contextMenu.contextMenuItems;\n      let flatList = [];\n\n      if (this.groupingListProp) {\n        this.list?.forEach((groupingItem) => {\n          if (groupingItem[this.groupingListProp]) {\n            flatList = [...flatList, ...groupingItem[this.groupingListProp]];\n          }\n        });\n      } else {\n        flatList = this.list;\n      }\n\n      const activeItemIndex = flatList?.findIndex((item) => item.active);\n\n      ctxMenuItems.forEach((ctxMenuItem, index) => {\n        ctxMenuItem.isSelected(false);\n\n        if (activeItemIndex === index) {\n          ctxMenuItem.isSelected(true);\n        }\n      });\n\n      if (this.keyboardTrigger) {\n        let activeFocusedItemIndex = 0;\n\n        flatList?.forEach((item, i) => {\n          if (this.selectedItem && item[this.headingProp] === this.selectedItem[this.headingProp]) {\n            activeFocusedItemIndex = i;\n          }\n        });\n\n        contextMenu.keyManager.setActiveItem(activeFocusedItemIndex);\n      }\n    });\n  }\n\n  // Sets the active item in the list based on the value\n  private setActiveItem(value: any) {\n    setTimeout(() => {\n      this.list?.forEach((selectItem) => {\n        if (this.groupingListProp && selectItem[this.groupingListProp]) {\n          selectItem[this.groupingListProp].forEach((item) => {\n            item.active = false;\n\n            if (value === item[this.valueProp]) {\n              this.selectedItem = item;\n              item.active = true;\n            }\n          });\n        } else {\n          selectItem.active = false;\n\n          if (value === selectItem[this.valueProp]) {\n            this.selectedItem = selectItem;\n            selectItem.active = true;\n          }\n        }\n      });\n\n      if (!value) {\n        this.selectedItem = null;\n      }\n\n      this.cdr.detectChanges();\n    });\n  }\n\n  // Checks the label position and updates the external label flag\n  private checkLabelPosition(labelPosition: unknown): void {\n    if (labelPosition) {\n      this.isExternalLabel = this.labelPosition === LabelPosition.external;\n    }\n  }\n\n  // Checks the size and updates the size flags\n  private checkSize(size: unknown): void {\n    if (size) {\n      this.isSizeLg = this.size === Size.lg;\n      this.isSizeSm = this.size === Size.sm;\n      this.cdr.markForCheck();\n    }\n  }\n\n  // Sets the i18n texts for the component\n  protected setI18nTexts(translation: ITranslation): void {\n    this.popupAriaLabel = translation.SELECT.A11Y.POPUP_ARIA_LABEL;\n    this.cdr.detectChanges();\n  }\n}\n","<div [ngClass]=\"{\n      'dds-select_lg': isSizeLg && isExternalLabel,\n      'dds-select_sm': isSizeSm && isExternalLabel,\n      'dds-select_external': isExternalLabel || !label,\n      'dds-select_disabled': disabled,\n      'dds-select_error': _isError,\n      'dds-select_inverse': isInverse,\n      'show': selectOpen\n     }\"\n     class=\"dds-select {{customClass}}\">\n\n  @if ((label && isExternalLabel) || description) {\n    <div class=\"dds-select__text-wrap\">\n      @if (label && isExternalLabel) {\n        <label class=\"dds-select__title\">{{ label }}\n          @if (isRequired) {\n            <span class=\"dds-required\"></span>\n          }\n        </label>\n      }\n      @if (description) {\n        <span class=\"dds-select__description\">{{description}}</span>\n      }\n    </div>\n  }\n\n  <button [ddsSticker]=\"selectList\"\n          [stickerWidth]=\"stickerWidth\"\n          [stickerShift]=\"stickerShift\"\n          [stickerMaxHeight]=\"stickerMaxHeight\"\n          [stickerIsDisabled]=\"stickerIsDisabled\"\n          [stickerPosition]=\"stickerPosition\"\n          [stickerIndent]=\"stickerIndent\"\n          [stickerIsOutsideClick]=\"smallDevice\"\n          [stickerIsResponsive]=\"isResponsive\"\n          [stickerCustomClass]=\"stickerCustomClass\"\n          [stickerIsDynamic]=\"stickerIsDynamic\"\n          [disabled]=\"disabled\"\n          [attr.aria-disabled]=\"disabled\"\n          [attr.aria-invalid]=\"_isError\"\n          [attr.aria-expanded]=\"selectOpen\"\n          [attr.aria-required]=\"isRequired || _isFormControlRequired\"\n          [attr.aria-label]=\"ariaLabel || label\"\n          [attr.aria-controls]=\"id\"\n          role=\"combobox\"\n          data-qa=\"select\"\n          aria-haspopup=\"dialog\"\n          ddsFocus\n          class=\"dds-select__field\"\n          (onShown)=\"onShown(selectBtn)\"\n          (onHidden)=\"onHidden()\"\n          (click)=\"toggleSelect()\"\n          (keydown)=\"handleKeydown($event);preventEvent($event)\"\n          (keyup)=\"preventEvent($event)\"\n          #stickerDir=\"dds-sticker\"\n          #selectBtn>\n    @if (label && !isExternalLabel) {\n      <label class=\"dds-select__title\">{{ label }}\n        @if (isRequired) {\n          <span class=\"dds-required\"></span>\n        }\n      </label>\n    }\n    @if (selectedItem) {\n      <span class=\"dds-select__active-item\">\n        <ng-container *ngTemplateOutlet=\"selectedItemTemplate || defaultSelectedItemTemplate; context: { $implicit: selectedItem, component: this }\"></ng-container>\n      </span>\n    } @else {\n      <span class=\"dds-select__placeholder\">\n        <ng-container\n                      *ngTemplateOutlet=\"placeholderTemplate || defaultPlaceholderTemplate; context: { $implicit: placeholder, component: this }\"></ng-container>\n      </span>\n    }\n\n\n    <ng-template #defaultSelectedItemTemplate\n                 let-selectedItem>{{ selectedItem[headingProp] }}</ng-template>\n\n    <ng-template #defaultPlaceholderTemplate\n                 let-placeholder>{{ placeholder }}</ng-template>\n\n    <span class=\"dds-select__icon dds-icon {{icon}}\"></span>\n  </button>\n\n  <span class=\"hidden-aria-polite\"\n            aria-live=\"polite\">{{isExpandedText}}</span>\n\n  @if (_isError) {\n    <span class=\"dds-select__error\">{{errorMessage}}</span>\n  }\n\n  <ng-template #selectList>\n    <ng-container *ngTemplateOutlet=\"optionsTemplate || defaultTemplate; context: {ctx: this}\"></ng-container>\n    <ng-template #defaultTemplate>\n      <dds-context-menu [size]=\"size\"\n                        [label]=\"label\"\n                        [maxHeight]=\"stickerMaxHeight\"\n                        [isResponsive]=\"isResponsive\"\n                        [ariaLabel]=\"popupAriaLabel\"\n                        [activeItemId]=\"activeItemId\"\n                        [isRequired]=\"isRequired\"\n                        [isInverse]=\"isInverse\"\n                        [isLoading]=\"isLoading\"\n                        [isLoadingWithCounter]=\"isLoadingWithCounter\"\n                        [loadingTemplate]=\"loadingTemplate\"\n                        [id]=\"id\"\n                        ddsResize\n                        class=\"dds-select__list\"\n                        (keyPressed)=\"handleKeydownMenu($event)\"\n                        (onInit)=\"contextMenuInit($event)\"\n                        (closed)=\"close()\">\n          @for (item of list; track item) {\n            <dds-context-menu-item [counter]=\"item?.counter\"\n                                   [customClass]=\"item?.customClass\"\n                                   [disabled]=\"item?.disabled\"\n                                   (selectedItem)=\"changeItem(item)\">\n              {{item[headingProp]}}\n            </dds-context-menu-item>\n          }\n      </dds-context-menu>\n    </ng-template>\n  </ng-template>\n</div>\n","import { NgModule } from '@angular/core';\nimport { SelectComponent } from './select/select.component';\n\n@NgModule({\n  declarations: [],\n  imports: [SelectComponent],\n  exports: [SelectComponent],\n})\nexport class SelectModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}