{"version":3,"file":"usitsdasdesign-dds-ng-accordion.mjs","sources":["../../src/app/dds/accordion/typings.ts","../../src/app/dds/accordion/accordion-item/constants.ts","../../src/app/dds/accordion/accordion/accordion.component.ts","../../src/app/dds/accordion/accordion/accordion.component.html","../../src/app/dds/accordion/accordion-item/accordion-item.component.ts","../../src/app/dds/accordion/accordion-item/accordion-item.component.html","../../src/app/dds/accordion/accordion.module.ts","../../src/app/dds/accordion/usitsdasdesign-dds-ng-accordion.ts"],"sourcesContent":["import { Size } from '@usitsdasdesign/dds-ng/shared';\n\nexport interface AccordionOptions {\n  size?: Size | string;\n  customClass?: string;\n  disabled?: boolean;\n  isOpen?: boolean;\n  isMulti?: boolean;\n  isInverse?: boolean;\n}\n\nexport interface AccordionItemOptions {\n  size?: Size | string;\n  icon?: string;\n  customClass?: string;\n  isOpen?: boolean;\n  disabled?: boolean;\n  isMulti?: boolean;\n  [key: string]: any;\n}\n\nexport enum AccordionClass {\n  wrap = 'dds-accordion-wrap',\n}\n","import { Size } from '@usitsdasdesign/dds-ng/shared';\nimport { ThemeClassesMap, ThemeMapEnum } from '@usitsdasdesign/dds-ng/core/theme';\n\nexport const themeClassesMap: ThemeClassesMap = {\n  [ThemeMapEnum.Size]: {\n    [Size.lg]: 'dds-accordion__item_lg',\n    [Size.sm]: 'dds-accordion__item_sm',\n  },\n};\n\nexport const DEFAULT_ICON = 'dds-icon_arrow-down';\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { AdditionalClass, Size } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { AccordionItemComponent } from '../accordion-item/accordion-item.component';\n\n@Component({\n  selector: 'dds-accordion',\n  templateUrl: './accordion.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule]\n})\nexport class AccordionComponent implements OnChanges {\n  // Binds the disabled class to the host element if the disabled input is true.\n  @HostBinding(`class.${AdditionalClass.disabled}`) @Input() disabled: boolean | undefined;\n\n  // The size of the accordion, which can be a predefined Size or a custom string.\n  @Input() size: Size | string | undefined = this.ddsConfig.getConfig().size;\n\n  // Custom CSS class to be applied to the accordion.\n  @Input() customClass: string | undefined;\n\n  // Indicates whether the accordion is open.\n  @Input() isOpen: boolean | undefined;\n\n  // Indicates whether multiple accordion items can be open simultaneously.\n  @Input() isMulti: boolean | undefined;\n\n  // Indicates whether the accordion should use an inverse color scheme.\n  @Input() isInverse: boolean | undefined;\n\n  public accordionItems: AccordionItemComponent[] = [];\n\n  constructor(private ddsConfig: DdsConfigService) { }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    const changesArr: Array<keyof AccordionItemComponent> = Object.keys(changes) as\n      Array<keyof AccordionItemComponent>;\n\n    changesArr.forEach((change) => {\n      this.updateItemsOption(change, changes[change].currentValue);\n    });\n  }\n\n  // Adds an accordion item to the list of managed items.\n  public addAccordionItem(accordionItem: AccordionItemComponent): void {\n    this.accordionItems.push(accordionItem);\n  }\n\n  // Removes an accordion item from the list of managed items.\n  public removeAccordionItem(accordionItem: AccordionItemComponent): void {\n    const index = this.accordionItems.indexOf(accordionItem);\n\n    if (index !== -1) {\n      this.accordionItems.splice(index, 1);\n    }\n  }\n\n  // Closes all accordion items except the one specified.\n  public closeAccordionItem(openAccordionItem: AccordionItemComponent): void {\n    this.accordionItems.forEach((accordionItem: AccordionItemComponent) => {\n      if (accordionItem !== openAccordionItem) {\n        accordionItem.isOpen = false;\n        accordionItem.cdr.detectChanges();\n      }\n    });\n  }\n\n  // Closes all accordion items.\n  public closeAll(): void {\n    this.accordionItems.forEach((accordionItem: AccordionItemComponent) => {\n      accordionItem.isOpen = false;\n      accordionItem.itemChanged.emit(accordionItem);\n      accordionItem.cdr.detectChanges();\n    });\n  }\n\n  // Updates a specified option for all accordion items.\n  private updateItemsOption<K extends keyof AccordionItemComponent>(\n    option: K,\n    value: AccordionItemComponent[K]\n  ): void {\n    this.accordionItems.forEach((accordionItem) => {\n      accordionItem[option] = value;\n      accordionItem.cdr.detectChanges();\n    });\n  }\n}\n","<div class=\"dds-accordion {{customClass}}\"\n     [ngClass]=\"{\n        'dds-accordion_inverse': isInverse\n      }\"\n     role=\"list\">\n  <ng-content></ng-content>\n</div>","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { ThemeClassesMap, ThemeModule } from '@usitsdasdesign/dds-ng/core/theme';\nimport { generateId } from '@usitsdasdesign/dds-ng/core/utils';\nimport { ListItemComponent } from '@usitsdasdesign/dds-ng/list';\nimport { AdditionalClass, Size } from '@usitsdasdesign/dds-ng/shared';\nimport { AccordionComponent } from '../accordion/accordion.component';\nimport { AccordionClass } from '../typings';\nimport { DEFAULT_ICON, themeClassesMap } from './constants';\n\n@Component({\n  selector: 'dds-accordion-item',\n  templateUrl: './accordion-item.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [CommonModule, FocusHandlerModule, ThemeModule]\n})\nexport class AccordionItemComponent implements OnInit, OnDestroy {\n  // Binds the class of the host element to AccordionClass.wrap.\n  @HostBinding('class') class = AccordionClass.wrap;\n\n  // Binds the disabled class of the host element based on the disabled input property.\n  @HostBinding(`class.${AdditionalClass.disabled}`) @Input() disabled: boolean | undefined;\n\n  // Reference to the accordion button element.\n  @ViewChild('accordionBtnRef') accordionBtnRef: ElementRef<ListItemComponent>;\n\n  // The size of the accordion item.\n  @Input() size: Size | string | undefined;\n\n  // Custom CSS class for the accordion item.\n  @Input() customClass: string | undefined;\n\n  // Icon for the accordion item. Defaults to DEFAULT_ICON.\n  @Input() icon: string | undefined = DEFAULT_ICON;\n\n  // Indicates whether the accordion item is open.\n  @Input() isOpen: boolean | undefined;\n\n  // Indicates whether multiple accordion items can be open simultaneously.\n  @Input() isMulti: boolean | undefined;\n\n  // Event emitted when the accordion item state changes.\n  @Output() itemChanged = new EventEmitter<AccordionItemComponent>();\n\n  public isInverse: boolean;\n  public themeConfig: ThemeClassesMap = themeClassesMap;\n  public contentId: string;\n  public headerId: string;\n\n  constructor(public cdr: ChangeDetectorRef, private accordion: AccordionComponent) { }\n\n  public ngOnInit(): void {\n    this.headerId = generateId();\n    this.contentId = generateId();\n    this.accordion.addAccordionItem(this);\n    this.setValueFromParent();\n  }\n\n  public ngOnDestroy(): void {\n    this.accordion.removeAccordionItem(this);\n  }\n\n  // Toggles the open state of the accordion item.\n  // If isMulti is false, closes other accordion items in the parent accordion.\n  // Emits the itemChanged event.\n  public selectAccordionItem(): void {\n    if (!this.isMulti) {\n      this.accordion.closeAccordionItem(this);\n    }\n\n    this.isOpen = !this.isOpen;\n    this.itemChanged.emit(this);\n  }\n\n  // Sets initial values for the accordion item from the parent accordion.\n  // Detects changes to update the view.\n  private setValueFromParent(): void {\n    this.disabled ||= this.accordion.disabled;\n    this.size ||= this.accordion.size;\n    this.isOpen ||= this.accordion.isOpen;\n    this.isMulti ||= this.accordion.isMulti;\n    this.isInverse ||= !!this.accordion.isInverse;\n\n    this.cdr.detectChanges();\n  }\n}\n","<div [ngClass]=\"{\n      'dds-accordion__item_open': isOpen\n     }\"\n     [size]=\"size\"\n     [ddsTheme]=\"themeConfig\"\n     class=\"dds-accordion__item {{customClass}}\"\n     role=\"listitem\">\n\n  <button [attr.aria-expanded]=\"isOpen\"\n          [attr.aria-disabled]=\"disabled\"\n          [attr.aria-controls]=\"contentId\"\n          [disabled]=\"disabled\"\n          [attr.id]=\"headerId\"\n          [ngClass]=\"{\n            'dds-accordion__header_disabled': disabled\n          }\"\n          ddsFocus\n          class=\"dds-accordion__header\"\n          (click)=\"selectAccordionItem()\"\n          #accordionBtnRef>\n    <div class=\"dds-accordion__header-wrap\">\n      <ng-content select=\"[header]\"></ng-content>\n    </div>\n    <span role=\"presentation\"\n          action\n          class=\"dds-accordion__icon dds-icon {{icon}}\"></span>\n  </button>\n\n  <div class=\"dds-accordion__body\"\n       [attr.id]=\"contentId\"\n       [attr.aria-labelledby]=\"headerId\"\n       role=\"region\">\n    <ng-content select=\"[content]\"></ng-content>\n  </div>\n\n</div>\n","import { NgModule } from '@angular/core';\nimport { AccordionItemComponent } from './accordion-item/accordion-item.component';\nimport { AccordionComponent } from './accordion/accordion.component';\n\n@NgModule({\n  declarations: [],\n  imports: [AccordionComponent, AccordionItemComponent],\n  exports: [AccordionComponent, AccordionItemComponent],\n})\nexport class AccordionModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AccordionComponent"],"mappings":"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"}