{"version":3,"file":"usitsdasdesign-dds-ng-shared-expandable-row.mjs","sources":["../../src/app/dds/shared/expandable-row/expandable-row.directive.ts","../../src/app/dds/shared/expandable-row/expandable-row.module.ts","../../src/app/dds/shared/expandable-row/usitsdasdesign-dds-ng-shared-expandable-row.ts"],"sourcesContent":["import { Directive, ElementRef, HostListener, Input, OnInit, Renderer2 } from '@angular/core';\nimport { KeyCodes, TableClass } from '@usitsdasdesign/dds-ng/shared';\n\n@Directive({\n  selector: '[ddsExpandableRow]',\n  standalone: true,\n})\nexport class ExpandableRowDirective implements OnInit {\n  public isExpanded = false;\n\n  @Input('ddsExpandableRow') expandableRowContent: any;\n\n  // Toggle the expanded state on click\n  @HostListener('click') click() {\n    this.isExpanded = !this.isExpanded;\n    this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-expanded', `${this.isExpanded}`);\n    this.toggleClassNameRow(TableClass.expandableRowExpanded);\n    this.toggleClassNameRowContent(TableClass.expandableRowExpanded);\n  }\n\n  // Toggle the expanded state on keydown (SPACE or ENTER)\n  @HostListener('keydown', ['$event']) keydown(event: KeyboardEvent) {\n    if (event.keyCode === KeyCodes.SPACE || event.keyCode === KeyCodes.ENTER) {\n      event.preventDefault();\n      this.isExpanded = !this.isExpanded;\n      this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-expanded', `${this.isExpanded}`);\n      this.toggleClassNameRow(TableClass.expandableRowExpanded);\n      this.toggleClassNameRowContent(TableClass.expandableRowExpanded);\n    }\n  }\n\n  constructor(private elementRef: ElementRef, private renderer: Renderer2) { }\n\n  // Initialize the directive\n  public ngOnInit(): void {\n    this.setClassNameTable(TableClass.expandableTable);\n    this.toggleClassNameRow(TableClass.expandableRow);\n    this.toggleClassNameRowContent(TableClass.expandableRowContent);\n    this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-expanded', `${this.isExpanded}`);\n  }\n\n  // Add a class to the table element\n  private setClassNameTable(className: string): void {\n    this.elementRef.nativeElement.offsetParent.classList.add(className);\n  }\n\n  // Toggle a class on the row element\n  private toggleClassNameRow(className: string): void {\n    this.elementRef.nativeElement.classList.toggle(className);\n  }\n\n  // Toggle a class on the row content element(s)\n  private toggleClassNameRowContent(className: string): void {\n    const rowContentEl = this.expandableRowContent;\n\n    if (rowContentEl && rowContentEl.length) {\n      rowContentEl.forEach((row) => row.classList.toggle(className));\n    } else if (rowContentEl) {\n      rowContentEl.classList.toggle(className);\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ExpandableRowDirective } from './expandable-row.directive';\n\n@NgModule({\n  declarations: [],\n  imports: [ExpandableRowDirective],\n  exports: [ExpandableRowDirective],\n})\nexport class ExpandableRowModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAOa,sBAAsB,CAAA;;IAMV,KAAK,GAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU;AAClC,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,eAAe,EAAE,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;AAChG,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,qBAAqB,CAAC;AACzD,QAAA,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,qBAAqB,CAAC;IAClE;;AAGqC,IAAA,OAAO,CAAC,KAAoB,EAAA;AAC/D,QAAA,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,KAAK,EAAE;YACxE,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU;AAClC,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,eAAe,EAAE,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;AAChG,YAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,qBAAqB,CAAC;AACzD,YAAA,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,qBAAqB,CAAC;QAClE;IACF;IAEA,WAAA,CAAoB,UAAsB,EAAU,QAAmB,EAAA;QAAnD,IAAA,CAAA,UAAU,GAAV,UAAU;QAAsB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAvBrD,IAAA,CAAA,UAAU,GAAG,KAAK;IAuBkD;;IAGpE,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,eAAe,CAAC;AAClD,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,aAAa,CAAC;AACjD,QAAA,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAC/D,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,eAAe,EAAE,CAAA,EAAG,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;IAClG;;AAGQ,IAAA,iBAAiB,CAAC,SAAiB,EAAA;AACzC,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;IACrE;;AAGQ,IAAA,kBAAkB,CAAC,SAAiB,EAAA;QAC1C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;IAC3D;;AAGQ,IAAA,yBAAyB,CAAC,SAAiB,EAAA;AACjD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB;AAE9C,QAAA,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,EAAE;AACvC,YAAA,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChE;aAAO,IAAI,YAAY,EAAE;AACvB,YAAA,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;QAC1C;IACF;8GArDW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,CAAA,kBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;sBAIE,KAAK;uBAAC,kBAAkB;;sBAGxB,YAAY;uBAAC,OAAO;;sBAQpB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MCbxB,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAnB,mBAAmB,EAAA,OAAA,EAAA,CAHpB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CACtB,sBAAsB,CAAA,EAAA,CAAA,CAAA;+GAErB,mBAAmB,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,sBAAsB,CAAC;oBACjC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA;;;ACPD;;AAEG;;;;"}