{"version":3,"file":"ieeesa-npm-presentation.mjs","sources":["../../../projects/presentation/src/lib/components/form-error/form-error.component.ts","../../../projects/presentation/src/lib/components/form-error/form-error.component.html","../../../projects/presentation/src/lib/models/form-control-types.model.ts","../../../projects/presentation/src/lib/pipes/safe.pipe.ts","../../../projects/presentation/src/lib/components/form-support-text/form-support-text.component.ts","../../../projects/presentation/src/lib/components/form-support-text/form-support-text.component.html","../../../projects/presentation/src/lib/services/form-utility.service.ts","../../../projects/presentation/src/lib/components/autocomplete/autocomplete.component.ts","../../../projects/presentation/src/lib/components/autocomplete/autocomplete.component.html","../../../projects/presentation/src/lib/components/icon-button/icon-button.component.ts","../../../projects/presentation/src/lib/components/icon-button/icon-button.component.html","../../../projects/presentation/src/lib/components/checkbox/checkbox.component.ts","../../../projects/presentation/src/lib/components/checkbox/checkbox.component.html","../../../projects/presentation/src/lib/date-formats.ts","../../../projects/presentation/src/lib/services/datepicker.service.ts","../../../projects/presentation/src/lib/components/date-picker-header/date-picker-header.component.ts","../../../projects/presentation/src/lib/components/date-picker-header/date-picker-header.component.html","../../../projects/presentation/src/lib/models/calendar.model.ts","../../../projects/presentation/src/lib/components/date-picker/date-picker.component.ts","../../../projects/presentation/src/lib/components/date-picker/date-picker.component.html","../../../projects/presentation/src/lib/models/input-field-type.model.ts","../../../projects/presentation/src/lib/components/input/input.component.ts","../../../projects/presentation/src/lib/components/input/input.component.html","../../../projects/presentation/src/lib/components/radio/radio.component.ts","../../../projects/presentation/src/lib/components/radio/radio.component.html","../../../projects/presentation/src/lib/validation-patterns.ts","../../../projects/presentation/src/lib/models/search.model.ts","../../../projects/presentation/src/lib/components/search/search.component.ts","../../../projects/presentation/src/lib/components/search/search.component.html","../../../projects/presentation/src/lib/components/select/select.component.ts","../../../projects/presentation/src/lib/components/select/select.component.html","../../../projects/presentation/src/lib/components/text-area/text-area.component.ts","../../../projects/presentation/src/lib/components/text-area/text-area.component.html","../../../projects/presentation/src/lib/components/add-form-group/add-form-group.component.ts","../../../projects/presentation/src/lib/components/add-form-group/add-form-group.component.html","../../../projects/presentation/src/lib/components/time-picker/time-picker.component.ts","../../../projects/presentation/src/lib/components/time-picker/time-picker.component.html","../../../projects/presentation/src/lib/components/slide-toggle/slide-toggle.component.ts","../../../projects/presentation/src/lib/components/slide-toggle/slide-toggle.component.html","../../../projects/presentation/src/lib/directives/file-upload/file-upload.directive.ts","../../../projects/presentation/src/lib/models/align-browsed-files.model.ts","../../../projects/presentation/src/lib/services/file-upload.service.ts","../../../projects/presentation/src/lib/components/file-download/file-download.component.ts","../../../projects/presentation/src/lib/components/file-download/file-download.component.html","../../../projects/presentation/src/lib/components/file-upload/file-upload.component.ts","../../../projects/presentation/src/lib/components/file-upload/file-upload.component.html","../../../projects/presentation/src/lib/models/color-format.model.ts","../../../projects/presentation/src/lib/components/color-picker/color-picker.component.ts","../../../projects/presentation/src/lib/components/color-picker/color-picker.component.html","../../../projects/presentation/src/lib/directives/text-truncated/text-truncated.directive.ts","../../../projects/presentation/src/lib/components/multi-select-autocomplete/multi-select-autocomplete.component.ts","../../../projects/presentation/src/lib/components/multi-select-autocomplete/multi-select-autocomplete.component.html","../../../projects/presentation/src/lib/directives/observe-dom-change/observe-dom-change.directive.ts","../../../projects/presentation/src/lib/components/rich-text-editor/rich-text-editor.component.ts","../../../projects/presentation/src/lib/components/rich-text-editor/rich-text-editor.component.html","../../../projects/presentation/src/lib/directives/dynamic-form-field/dynamic-form-field.directive.ts","../../../projects/presentation/src/lib/directives/focus-invalid-form-field/focus-invalid-form-field.directive.ts","../../../projects/presentation/src/lib/components/dynamic-form/dynamic-form.component.ts","../../../projects/presentation/src/lib/components/dynamic-form/dynamic-form.component.html","../../../projects/presentation/src/lib/components/footer/footer.component.ts","../../../projects/presentation/src/lib/components/footer/footer.component.html","../../../projects/presentation/src/lib/components/menu/menu.component.ts","../../../projects/presentation/src/lib/components/menu/menu.component.html","../../../projects/presentation/src/lib/models/profile-menu.model.ts","../../../projects/presentation/src/lib/components/image-preview/image-preview.component.ts","../../../projects/presentation/src/lib/components/image-preview/image-preview.component.html","../../../projects/presentation/src/lib/services/break-point-observer.service.ts","../../../projects/presentation/src/lib/components/header/header.component.ts","../../../projects/presentation/src/lib/components/header/header.component.html","../../../projects/presentation/src/lib/directives/set-background/set-background.directive.ts","../../../projects/presentation/src/lib/components/legend/legend.component.ts","../../../projects/presentation/src/lib/components/legend/legend.component.html","../../../projects/presentation/src/lib/components/list/list.component.ts","../../../projects/presentation/src/lib/components/list/list.component.html","../../../projects/presentation/src/lib/components/toggle-button/toggle-button.component.ts","../../../projects/presentation/src/lib/components/toggle-button/toggle-button.component.html","../../../projects/presentation/src/lib/components/modal/modal.component.ts","../../../projects/presentation/src/lib/components/modal/modal.component.html","../../../projects/presentation/src/lib/components/modal-confirmation/modal-confirmation.component.ts","../../../projects/presentation/src/lib/components/modal-confirmation/modal-confirmation.component.html","../../../projects/presentation/src/lib/components/modal-info/modal-info.component.ts","../../../projects/presentation/src/lib/components/modal-info/modal-info.component.html","../../../projects/presentation/src/lib/components/navigation-menu/navigation-menu.component.ts","../../../projects/presentation/src/lib/components/navigation-menu/navigation-menu.component.html","../../../projects/presentation/src/lib/components/notification/notification.component.ts","../../../projects/presentation/src/lib/components/notification/notification.component.html","../../../projects/presentation/src/lib/components/welcome/welcome.component.ts","../../../projects/presentation/src/lib/components/welcome/welcome.component.html","../../../projects/presentation/src/lib/models/chip-option.model.ts","../../../projects/presentation/src/lib/components/chips/chips.component.ts","../../../projects/presentation/src/lib/components/chips/chips.component.html","../../../projects/presentation/src/lib/components/filter/filter.component.ts","../../../projects/presentation/src/lib/components/filter/filter.component.html","../../../projects/presentation/src/lib/components/loader/loader.component.ts","../../../projects/presentation/src/lib/components/loader/loader.component.html","../../../projects/presentation/src/lib/models/table-schema.model.ts","../../../projects/presentation/src/lib/components/data-table/data-table.component.ts","../../../projects/presentation/src/lib/components/data-table/data-table.component.html","../../../projects/presentation/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/presentation/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/presentation/src/lib/components/tile/tile.component.ts","../../../projects/presentation/src/lib/components/tile/tile.component.html","../../../projects/presentation/src/lib/models/custom-properties.model.ts","../../../projects/presentation/src/lib/components/tabs/tabs.component.ts","../../../projects/presentation/src/lib/components/tabs/tabs.component.html","../../../projects/presentation/src/lib/models/button-type.model.ts","../../../projects/presentation/src/lib/components/card/card.component.ts","../../../projects/presentation/src/lib/components/card/card.component.html","../../../projects/presentation/src/lib/components/accordion/accordion.component.ts","../../../projects/presentation/src/lib/components/accordion/accordion.component.html","../../../projects/presentation/src/lib/components/inactive-tenant/inactive-tenant.component.ts","../../../projects/presentation/src/lib/components/inactive-tenant/inactive-tenant.component.html","../../../projects/presentation/src/lib/components/export-format-popover/export-format-popover.component.ts","../../../projects/presentation/src/lib/components/export-format-popover/export-format-popover.component.html","../../../projects/presentation/src/lib/components/filter-popover/filter-popover.component.ts","../../../projects/presentation/src/lib/components/filter-popover/filter-popover.component.html","../../../projects/presentation/src/lib/components/policy-confirmation-dialog/policy-confirmation-dialog.component.ts","../../../projects/presentation/src/lib/components/policy-confirmation-dialog/policy-confirmation-dialog.component.html","../../../projects/presentation/src/lib/components/export-success-dialog/export-success-dialog.component.ts","../../../projects/presentation/src/lib/components/export-success-dialog/export-success-dialog.component.html","../../../projects/presentation/src/lib/components/home-group-selection/home-group-selection.component.ts","../../../projects/presentation/src/lib/components/home-group-selection/home-group-selection.component.html","../../../projects/presentation/src/lib/components/credit-selection/credit-selection.component.ts","../../../projects/presentation/src/lib/components/credit-selection/credit-selection.component.html","../../../projects/presentation/src/lib/models/accordion-info.model.ts","../../../projects/presentation/src/lib/models/allowed-file-types.model.ts","../../../projects/presentation/src/lib/models/link-type.model.ts","../../../projects/presentation/src/lib/models/export-format-popover.model.ts","../../../projects/presentation/src/lib/models/home-group-selection.model.ts","../../../projects/presentation/src/lib/models/credit-selection.model.ts","../../../projects/presentation/src/lib/pipes/timezone-format.pipe.ts","../../../projects/presentation/src/lib/presentation.module.ts","../../../projects/presentation/src/lib/components/stepper/stepper.component.ts","../../../projects/presentation/src/lib/components/stepper/stepper.component.html","../../../projects/presentation/src/public-api.ts","../../../projects/presentation/src/ieeesa-npm-presentation.ts"],"sourcesContent":["import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\n\r\n/**\r\n * Implements and displays form error messages and form submission error response message on submission of form.\r\n * @export\r\n * @class FormErrorComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-form-error',\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  templateUrl: './form-error.component.html',\r\n  styleUrls: ['./form-error.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class FormErrorComponent {\r\n  @Input() formGroup!: FormGroup;\r\n  @Input() config!: FieldConfig;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  @Input() submitResponse!: any;\r\n}\r\n","<ng-container *ngIf=\"formGroup && config?.controlName\">\r\n  <div\r\n    class=\"ieeesa-body-sm-12 ieeesa-form-error\"\r\n    *ngIf=\"\r\n      formGroup.controls[config.controlName]?.touched ||\r\n      (formGroup.controls[config.controlName]?.dirty &&\r\n        formGroup.controls[config.controlName]?.invalid)\r\n    \"\r\n    role=\"alert\"\r\n    aria-live=\"polite\"\r\n    [attr.aria-invalid]=\"formGroup.controls[config.controlName].invalid\"\r\n  >\r\n    <p\r\n      *ngIf=\"formGroup.controls[config.controlName].errors?.['validStartDate']\"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.invalidDateTimeErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"formGroup.controls[config.controlName].errors?.['pastStartDate']\"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.pastDateTimeErrorMessage || config.invalidDateTimeErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"\r\n        formGroup.controls[config.controlName].errors?.['validEndDate'] &&\r\n        !formGroup.controls[config.controlName].errors?.[\r\n          'checkboxSelectionRequired'\r\n        ]\r\n      \"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.invalidDateTimeErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"formGroup.controls[config.controlName].errors?.['validStartTime']\"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.invalidDateTimeErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"formGroup.controls[config.controlName].errors?.['pastStartTime']\"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.pastDateTimeErrorMessage || config.invalidDateTimeErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"formGroup.controls[config.controlName].errors?.['validEndTime']\"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.invalidDateTimeErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"formGroup.controls[config.controlName].errors?.['pastEndDate']\"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.pastDateTimeErrorMessage || config.invalidDateTimeErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"formGroup.controls[config.controlName].errors?.['pastEndTime']\"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.pastDateTimeErrorMessage || config.invalidDateTimeErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"formGroup.controls[config.controlName].errors?.['invalidEndDateTime']\"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.invalidDateTimeErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"\r\n        formGroup.controls[config.controlName].errors?.['required'] ||\r\n        formGroup.controls[config.controlName].errors?.[\r\n          'checkboxSelectionRequired'\r\n        ]\r\n      \"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.requiredErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"\r\n        formGroup.controls[config.controlName].errors?.['minlength'] ||\r\n        (formGroup.controls[config.controlName].errors?.['matDatepickerMin'] &&\r\n          !formGroup.controls[config.controlName].errors?.['validEndDate'])\r\n      \"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.minErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"\r\n        formGroup.controls[config.controlName].errors?.['maxlength'] ||\r\n        formGroup.controls[config.controlName].errors?.['max']\r\n      \"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.maxErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"formGroup.controls[config.controlName].errors?.['pattern']\"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.patternErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"formGroup.controls[config.controlName].errors?.['email']\"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.invalidEmailErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"\r\n        formGroup.controls[config.controlName].errors?.['invalidStartDateRange']\r\n      \"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.invalidDateRangeErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"\r\n        formGroup.controls[config.controlName].errors?.['invalidEndDateRange']\r\n      \"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.invalidDateRangeErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"formGroup.controls[config.controlName].errors?.['invalidColor']\"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.invalidColorErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"formGroup.controls[config.controlName].errors?.['maxFileSize']\"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.maxFileSizeErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"formGroup.controls[config.controlName].errors?.['invalidFileType']\"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.allowedFileTypeErrorMessage }}\r\n    </p>\r\n    <p\r\n      *ngIf=\"\r\n        formGroup.controls[config.controlName].errors?.[\r\n          'maxFilesUploadLimitReached'\r\n        ]\r\n      \"\r\n      class=\"ieeesa-form-error--text m-0\"\r\n    >\r\n      {{ config.maxFilesUploadLimitErrorMessage }}\r\n    </p>\r\n  </div>\r\n  <div\r\n    class=\"ieeesa-form-error\"\r\n    *ngIf=\"\r\n      (formGroup.controls[config.controlName]?.touched ||\r\n        formGroup.controls[config.controlName]?.dirty) &&\r\n      submitResponse\r\n    \"\r\n  >\r\n    <p class=\"ieeesa-form-error--text mt-1\">\r\n      {{ submitResponse }}\r\n    </p>\r\n  </div>\r\n</ng-container>\r\n","/* eslint-disable no-unused-vars */\r\nexport enum FormControlType {\r\n  INPUT = 'INPUT',\r\n  TEXT_AREA = 'TEXT_AREA',\r\n  SELECT = 'SELECT',\r\n  SEARCH = 'SEARCH',\r\n  DATE = 'DATE',\r\n  CHECKBOX = 'CHECKBOX',\r\n  RADIO = 'RADIO',\r\n  AUTO_COMPLETE = 'AUTO_COMPLETE',\r\n  MULTI_SELECT_AUTO_COMPLETE = 'MULTI_SELECT_AUTO_COMPLETE',\r\n  ADD_FORM_GROUP = 'ADD_FORM_GROUP',\r\n  TIME_PICKER = 'TIME_PICKER',\r\n  SLIDE_TOGGLE = 'SLIDE_TOGGLE',\r\n  COLOR_PICKER = 'COLOR_PICKER',\r\n  FILE_UPLOAD = 'FILE_UPLOAD',\r\n  RICH_TEXT_EDITOR = 'RICH_TEXT_EDITOR'\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {\r\n  DomSanitizer,\r\n  SafeHtml,\r\n  SafeStyle,\r\n  SafeScript,\r\n  SafeUrl,\r\n  SafeResourceUrl,\r\n} from '@angular/platform-browser';\r\nimport { SafeType } from '@ieeesa-npm/models';\r\n\r\n/**\r\n * SafePipe is using DomSanitizer service which helps to prevent attackers from injecting malicious client-side scripts into web pages, which is often referred to as Cross-site Scripting or XSS.\r\n * @export\r\n * @class SafePipe\r\n * @implements {PipeTransform}\r\n */\r\n@Pipe({\r\n  name: 'safe',\r\n  standalone: true,\r\n})\r\nexport class SafePipe implements PipeTransform {\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(protected sanitizer: DomSanitizer) {}\r\n  transform(\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    value: any,\r\n    type: string\r\n  ): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\r\n    switch (type) {\r\n      case SafeType.HTML:\r\n        return this.sanitizer.bypassSecurityTrustHtml(value);\r\n      case SafeType.STYLE:\r\n        return this.sanitizer.bypassSecurityTrustStyle(value);\r\n      case SafeType.SCRIPT:\r\n        return this.sanitizer.bypassSecurityTrustScript(value);\r\n      case SafeType.URL:\r\n        return this.sanitizer.bypassSecurityTrustUrl(value);\r\n      case SafeType.RESOURCE_URL:\r\n        return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n      default:\r\n        throw new Error(`Invalid safe type specified: ${type}`);\r\n    }\r\n  }\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n  forwardRef,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { SafePipe } from '../../pipes/safe.pipe';\r\nimport { SafeType } from '@ieeesa-npm/models';\r\nimport { LinkEventEmitType } from '../../models/event-emit-type.model';\r\n@Component({\r\n  selector: 'ieeesa-form-support-text',\r\n  standalone: true,\r\n  templateUrl: './form-support-text.component.html',\r\n  styleUrls: ['./form-support-text.component.scss'],\r\n  imports: [CommonModule, forwardRef(() => SafePipe)],\r\n})\r\nexport class FormSupportTextComponent implements OnDestroy, AfterViewInit {\r\n  @Input() formGroup!: FormGroup;\r\n  @Input() config!: FieldConfig;\r\n  safeType: string = SafeType.HTML;\r\n  @Output() supportTextLinkClick = new EventEmitter<LinkEventEmitType>();\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(public elementRef: ElementRef) {}\r\n  /**\r\n   * Emits supportTextLinkClick event on click of form support text link\r\n   * Passes linkType if available\r\n   * @param {Event} event\r\n   * @memberof FormSupportTextComponent\r\n   */\r\n  onAnchorElementClick(event: Event): void {\r\n    event.preventDefault();\r\n    if (this.config?.linkType)\r\n      this.supportTextLinkClick.emit({\r\n        event: event,\r\n        linkType: this.config?.linkType,\r\n      });\r\n    else this.supportTextLinkClick.emit({ event: event });\r\n  }\r\n  /**\r\n   * Adds click event to the anchor tags using querySelectorAll\r\n   * @memberof FormSupportTextComponent\r\n   */\r\n  ngAfterViewInit(): void {\r\n    const anchorTags = this.elementRef?.nativeElement?.querySelectorAll('a');\r\n    anchorTags?.forEach((anchor: HTMLAnchorElement) => {\r\n      anchor.addEventListener('click', this.onAnchorElementClick.bind(this));\r\n    });\r\n  }\r\n  /**\r\n   * Removing the event listeners on destroy\r\n   * @memberof FormSupportTextComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    const anchorTags = this.elementRef?.nativeElement?.querySelectorAll('a');\r\n    anchorTags?.forEach((anchor: HTMLAnchorElement) => {\r\n      anchor.removeEventListener('click', this.onAnchorElementClick);\r\n    });\r\n  }\r\n}\r\n","<p\r\n  class=\"pt-1 m-0 ieeesa-body-sm-14 ieeesa-form-support-text\"\r\n  [id]=\"config?.ariaDescribedById ?? ''\"\r\n  *ngIf=\"\r\n    config?.supportMessage &&\r\n    config?.controlName &&\r\n    ((formGroup.controls[config.controlName]?.untouched &&\r\n      (formGroup.controls[config.controlName]?.pristine ||\r\n        formGroup.controls[config.controlName]?.valid)) ||\r\n      (formGroup.controls[config.controlName]?.touched &&\r\n        formGroup.controls[config.controlName]?.valid))\r\n  \"\r\n  [attr.aria-hidden]=\"\r\n    formGroup.controls[config.controlName]?.touched &&\r\n    formGroup.controls[config.controlName]?.valid\r\n  \"\r\n  [innerHTML]=\"config?.supportMessage | safe : safeType\"\r\n></p>\r\n","import { Injectable } from '@angular/core';\r\nimport { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms';\r\nimport { FieldConfig } from '../models/field-config.model';\r\nimport { FormControlType } from '../models/form-control-types.model';\r\n\r\n/**\r\n * Creates form fields configuration and form group based on passed parameters.\r\n * @export\r\n * @class FormUtilityService\r\n */\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class FormUtilityService {\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(private fb: FormBuilder) {}\r\n  /**\r\n   * Returns form fields configuration based on passed control name and type.\r\n   * @param {string} controlName\r\n   * @param {string} controlType\r\n   * @return {FieldConfig}\r\n   * @memberof FormUtilityService\r\n   */\r\n  getFormFieldConfig(controlName: string, controlType: string): FieldConfig {\r\n    return {\r\n      controlName: controlName,\r\n      type: controlType,\r\n    };\r\n  }\r\n  /**\r\n   * Creates and returns form group with passed control name added.\r\n   * @param {string} controlName\r\n   * @return {FormGroup}\r\n   * @memberof FormUtilityService\r\n   */\r\n  getFormGroup(\r\n    controlName: string,\r\n    formControlConfig?: FieldConfig\r\n  ): FormGroup {\r\n    if (formControlConfig?.type === FormControlType.CHECKBOX) {\r\n      const group = this.fb.group({});\r\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n      const formArray = new FormArray<any>([]);\r\n      formControlConfig?.checkboxOptions?.forEach((control) => {\r\n        formArray.push(new FormControl(control.checked));\r\n      });\r\n      group.addControl(controlName, formArray);\r\n      return group;\r\n    }\r\n    return this.fb.group({\r\n      [controlName]: [],\r\n    });\r\n  }\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { debounceTime, filter, fromEvent, map, Subject, takeUntil } from 'rxjs';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport {\r\n  MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,\r\n  MatAutocompleteModule,\r\n} from '@angular/material/autocomplete';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { AutoCompleteOption } from '../../models/autocomplete-option.model';\r\nimport { SelectOption } from '@ieeesa-npm/models';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport * as autocompleteConstInfo from '../../assets/constants.json';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\nimport { FormSupportTextComponent } from '../form-support-text/form-support-text.component';\r\n\r\n/**\r\n * Provides auto suggestion for the entered input by filtering the options from the given list of options.\r\n * @export\r\n * @class AutocompleteComponent\r\n * @implements {OnInit}\r\n * @implements {FormField}\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-autocomplete',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    FormErrorComponent,\r\n    FormSupportTextComponent,\r\n    MatOptionModule,\r\n    MatAutocompleteModule,\r\n    MatInputModule,\r\n    MatIconModule,\r\n    MatButtonModule,\r\n  ],\r\n  providers: [\r\n    {\r\n      provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,\r\n      useValue: { overlayPanelClass: 'ieeesa-autocomplete-overlay-pane' },\r\n    },\r\n  ],\r\n  templateUrl: './autocomplete.component.html',\r\n  styleUrls: ['./autocomplete.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AutocompleteComponent\r\n  implements OnInit, FormField, OnDestroy, AfterViewInit\r\n{\r\n  config!: FieldConfig;\r\n  group!: FormGroup;\r\n  value = '';\r\n  autoCompleteOptionList!: AutoCompleteOption[];\r\n  @Input()\r\n  set autoCompleteOptions(value: AutoCompleteOption[]) {\r\n    this.autoCompleteOptionList = value;\r\n  }\r\n  get autoCompleteOptions(): AutoCompleteOption[] {\r\n    return this.autoCompleteOptionList;\r\n  }\r\n  @Input() isSelectedOptionsVisible = true;\r\n  @Output() autoCompleteSearchValue = new EventEmitter<string>();\r\n  @Output() autoCompleteClearSearchValue = new EventEmitter<string>();\r\n  @Output() autoCompleteOptionSelected = new EventEmitter<AutoCompleteOption>();\r\n  @ViewChild('autoComplete') autoComplete!: ElementRef;\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  autocompleteConstInfo: any = autocompleteConstInfo;\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(\r\n    private formUtilityService: FormUtilityService,\r\n    private elementRef: ElementRef<HTMLElement>\r\n  ) {}\r\n  private formOverlayScrollContainer?: HTMLElement;\r\n  private readonly preferredAutocompleteOverlayHeight = 168;\r\n  private readonly overlayWheelListener = (event: WheelEvent): void => {\r\n    const target = event.target as Element | null;\r\n    if (target?.closest('.cdk-overlay-pane')) return;\r\n\r\n    const formBody = this.formOverlayScrollContainer;\r\n    if (!formBody || formBody.scrollHeight <= formBody.clientHeight) return;\r\n\r\n    formBody.scrollTop += event.deltaY;\r\n    formBody.scrollLeft += event.deltaX;\r\n    formBody.dispatchEvent(new Event('scroll'));\r\n    event.preventDefault();\r\n  };\r\n  private readonly formScrollListener = (): void => {\r\n    const formBody = this.formOverlayScrollContainer;\r\n    if (!formBody) return;\r\n\r\n    this.updateOverlayClipBounds(formBody);\r\n  };\r\n  /**\r\n   * Implementation of ngOnInit lifecycle hook method to initialize components instance properties.\r\n   * @memberof AutocompleteComponent\r\n   */\r\n  ngOnInit(): void {\r\n    this.config =\r\n      this.config ??\r\n      this.formUtilityService.getFormFieldConfig(\r\n        'autocomplete',\r\n        FormControlType.AUTO_COMPLETE\r\n      );\r\n    this.group =\r\n      this.group ?? this.formUtilityService.getFormGroup('autocomplete');\r\n    this.autoCompleteOptions =\r\n      this.config?.autoCompleteOptions ?? this.autoCompleteOptions;\r\n  }\r\n\r\n  /**\r\n   * Initialize the form control change event once the form control is ready on ngAfterViewInit by calling onValueChanges method.\r\n   * @memberof AutocompleteComponent\r\n   */\r\n  ngAfterViewInit(): void {\r\n    this.onValueChanges();\r\n  }\r\n  /**\r\n   * Emits an autoCompleteSearchValue change event when the value is changed and value is greater than minCharToSearch or equal to zero.\r\n   * @memberof AutocompleteComponent\r\n   */\r\n  onValueChanges(): void {\r\n    fromEvent(this.autoComplete?.nativeElement, 'keyup')\r\n      .pipe(\r\n        takeUntil(this.destroy$),\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        map((event: any) => {\r\n          return event?.target?.value;\r\n        }),\r\n        filter(\r\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n          (res: any) =>\r\n            res?.length <\r\n              this.autocompleteConstInfo.autocomplete.minCharToSearch &&\r\n            res?.length !== 0\r\n        ),\r\n        debounceTime(this.autocompleteConstInfo.autocomplete.debounceTime)\r\n      )\r\n      .subscribe((text: string) => {\r\n        this.autoCompleteClearSearchValue.emit(text);\r\n      });\r\n    this.group?.controls[this.config?.controlName]?.valueChanges\r\n      .pipe(\r\n        takeUntil(this.destroy$),\r\n        filter(\r\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n          (res: any) =>\r\n            res?.length >=\r\n              this.autocompleteConstInfo.autocomplete.minCharToSearch ||\r\n            res?.length === 0\r\n        ),\r\n        debounceTime(this.autocompleteConstInfo.autocomplete.debounceTime)\r\n      )\r\n      .subscribe((text: string) => {\r\n        this.autoCompleteSearchValue.emit(text);\r\n      });\r\n  }\r\n  /**\r\n   * Emits the selected option when the form on change event is triggered and returns option.\r\n   * @param {AutoCompleteOption} data // data is an selected option of autoCompleteOptions.\r\n   * @return {AutoCompleteOption} // Returns selected option  as AutoCompleteOption\r\n   * @memberof AutocompleteComponent\r\n   */\r\n  onChange(data: AutoCompleteOption): AutoCompleteOption {\r\n    this.autoCompleteOptionSelected.emit(data);\r\n    return data;\r\n  }\r\n  /**\r\n   * Display the selected option name\r\n   * @param {AutoCompleteOption} option\r\n   * @return {string}\r\n   * @memberof AutocompleteComponent\r\n   */\r\n  displayOptionName(option: AutoCompleteOption): string {\r\n    return option?.name ? option.name : '';\r\n  }\r\n  /**\r\n   * Takes the index and the current item as arguments and needs to return the unique identifier for this item.\r\n   * @param {number} index\r\n   * @param {SelectOption} option\r\n   * @return {(number | string)}\r\n   * @memberof AutocompleteComponent\r\n   */\r\n  trackByFn(index: number, option: SelectOption): number | string {\r\n    return option.id;\r\n  }\r\n  /**\r\n   * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n   * @memberof AutocompleteComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.clearOverlayClipBounds();\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n\r\n  onAutocompleteOpen(): void {\r\n    this.setOverlayClipBounds();\r\n    setTimeout(() => {\r\n      const formBody = this.formOverlayScrollContainer;\r\n      if (formBody) {\r\n        this.makeRoomForAutocompleteOverlay(formBody);\r\n      }\r\n    });\r\n  }\r\n\r\n  onAutocompleteClose(): void {\r\n    this.clearOverlayClipBounds();\r\n  }\r\n\r\n  private setOverlayClipBounds(): void {\r\n    const formBody = this.getFormOverlayScrollContainer();\r\n    const documentElement = this.elementRef.nativeElement.ownerDocument\r\n      .documentElement;\r\n    const viewportHeight =\r\n      this.elementRef.nativeElement.ownerDocument.defaultView?.innerHeight ?? 0;\r\n\r\n    if (!formBody || !viewportHeight) return;\r\n\r\n    this.updateOverlayClipBounds(formBody);\r\n    this.formOverlayScrollContainer = formBody;\r\n    formBody.addEventListener('scroll', this.formScrollListener);\r\n    this.elementRef.nativeElement.ownerDocument.addEventListener(\r\n      'wheel',\r\n      this.overlayWheelListener,\r\n      { capture: true, passive: false }\r\n    );\r\n    documentElement.classList.add('ieeesa-form-overlay-open');\r\n  }\r\n\r\n  private getFormOverlayScrollContainer(): HTMLElement | null {\r\n    const candidates = [\r\n      this.elementRef.nativeElement.closest('.ieeesa-dynamic-form__body'),\r\n      this.elementRef.nativeElement.closest('.ieeesa-stepper__content'),\r\n    ] as (HTMLElement | null)[];\r\n\r\n    return (\r\n      candidates.find((element) => {\r\n        if (!element) return false;\r\n\r\n        const overflowY = getComputedStyle(element).overflowY;\r\n        return (\r\n          (overflowY === 'auto' || overflowY === 'scroll') &&\r\n          element.scrollHeight > element.clientHeight\r\n        );\r\n      }) ??\r\n      candidates.find((element) => !!element) ??\r\n      null\r\n    );\r\n  }\r\n\r\n  private updateOverlayClipBounds(formBody: HTMLElement): void {\r\n    const documentElement = this.elementRef.nativeElement.ownerDocument\r\n      .documentElement;\r\n    const viewportHeight =\r\n      this.elementRef.nativeElement.ownerDocument.defaultView?.innerHeight ?? 0;\r\n\r\n    if (!viewportHeight) return;\r\n\r\n    const formBodyRect = formBody.getBoundingClientRect();\r\n    documentElement.style.setProperty(\r\n      '--ieeesa-form-overlay-clip-top',\r\n      `${Math.max(0, Math.floor(formBodyRect.top))}px`\r\n    );\r\n    documentElement.style.setProperty(\r\n      '--ieeesa-form-overlay-clip-bottom',\r\n      `${Math.max(0, viewportHeight - Math.ceil(formBodyRect.bottom))}px`\r\n    );\r\n  }\r\n\r\n  private makeRoomForAutocompleteOverlay(formBody: HTMLElement): void {\r\n    const inputElement = this.autoComplete?.nativeElement as HTMLElement | null;\r\n    if (!inputElement) return;\r\n\r\n    const formBodyRect = formBody.getBoundingClientRect();\r\n    const inputRect = inputElement.getBoundingClientRect();\r\n    const availableHeight = formBodyRect.bottom - inputRect.bottom - 12;\r\n    const missingHeight =\r\n      this.preferredAutocompleteOverlayHeight - availableHeight;\r\n\r\n    if (missingHeight <= 0) return;\r\n\r\n    const maxScrollTop = formBody.scrollHeight - formBody.clientHeight;\r\n    const nextScrollTop = Math.min(\r\n      maxScrollTop,\r\n      formBody.scrollTop + Math.ceil(missingHeight)\r\n    );\r\n\r\n    if (nextScrollTop === formBody.scrollTop) return;\r\n\r\n    formBody.scrollTop = nextScrollTop;\r\n    formBody.dispatchEvent(new Event('scroll'));\r\n  }\r\n\r\n  private clearOverlayClipBounds(): void {\r\n    this.formOverlayScrollContainer?.removeEventListener(\r\n      'scroll',\r\n      this.formScrollListener\r\n    );\r\n    this.elementRef.nativeElement.ownerDocument.removeEventListener(\r\n      'wheel',\r\n      this.overlayWheelListener,\r\n      true\r\n    );\r\n    this.formOverlayScrollContainer = undefined;\r\n    const documentElement = this.elementRef.nativeElement.ownerDocument\r\n      .documentElement;\r\n    documentElement.classList.remove('ieeesa-form-overlay-open');\r\n    documentElement.style.removeProperty('--ieeesa-form-overlay-clip-top');\r\n    documentElement.style.removeProperty('--ieeesa-form-overlay-clip-bottom');\r\n  }\r\n}\r\n","<div\r\n  class=\"ieeesa-autocomplete\"\r\n  [formGroup]=\"group\"\r\n  *ngIf=\"group\"\r\n  [ngClass]=\"\r\n    config.isLabelAlignedLeft\r\n      ? 'ieeesa-autocomplete-field__label-left'\r\n      : 'ieeesa-autocomplete-field__label-top'\r\n  \"\r\n>\r\n  <mat-label class=\"ieeesa-body-sm-14 ieeesa-autocomplete__label\">{{\r\n    config.label\r\n  }}</mat-label>\r\n  <mat-form-field class=\"ieeesa-autocomplete__mat-form\" appearance=\"outline\">\r\n    <input\r\n      matInput\r\n      class=\"ieeesa-autocomplete__input\"\r\n      [matAutocomplete]=\"auto\"\r\n      matAutocompletePosition=\"below\"\r\n      [placeholder]=\"config.placeholder ?? ''\"\r\n      [formControlName]=\"config.controlName\"\r\n      [name]=\"config.controlName\"\r\n      [attr.aria-label]=\"config.ariaLabel\"\r\n      [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n      #autoComplete\r\n    />\r\n    <mat-autocomplete\r\n      #auto=\"matAutocomplete\"\r\n      (optionSelected)=\"onChange($event.option.value)\"\r\n      (opened)=\"onAutocompleteOpen()\"\r\n      (closed)=\"onAutocompleteClose()\"\r\n      [displayWith]=\"displayOptionName\"\r\n      class=\"ieeesa-autocomplete__autocomplete-list\"\r\n    >\r\n      <mat-option\r\n        *ngFor=\"let option of autoCompleteOptions; trackBy: trackByFn\"\r\n        [value]=\"option\"\r\n      >\r\n        <span>{{ option.name }}</span>\r\n      </mat-option>\r\n    </mat-autocomplete>\r\n    <button\r\n      type=\"button\"\r\n      matSuffix\r\n      mat-icon-button\r\n      [attr.aria-label]=\"autocompleteConstInfo.ariaLabel.clear\"\r\n      *ngIf=\"value\"\r\n      (click)=\"value = ''\"\r\n    >\r\n      <i class=\"fa-solid fa-xmark ieeesa-autocomplete__cancel-icon\"></i>\r\n    </button>\r\n  </mat-form-field>\r\n  <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n  <ieeesa-form-support-text\r\n    [formGroup]=\"group\"\r\n    [config]=\"config\"\r\n  ></ieeesa-form-support-text>\r\n</div>\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IconButton } from '@ieeesa-npm/models';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n/**\r\n * Creates svg icon as button component.\r\n * @export\r\n * @class IconButtonComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-icon-button',\r\n  standalone: true,\r\n  imports: [CommonModule, MatTooltipModule],\r\n  templateUrl: './icon-button.component.html',\r\n  styleUrls: ['./icon-button.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class IconButtonComponent {\r\n  @Input() iconButton!: IconButton;\r\n  @Input() isLabelNeeded = false;\r\n  @Output() iconButtonClick = new EventEmitter<IconButton>();\r\n  /**\r\n   * Emits the clicked icon button information.\r\n   * @param {Event} IconButton\r\n   * @memberof IconButtonComponent\r\n   */\r\n  onClick(event: IconButton) {\r\n    this.iconButtonClick.emit(event);\r\n  }\r\n}\r\n","<button\r\n  type=\"button\"\r\n  class=\"ieeesa-icon-button border-0 ieeesa-icon-button__{{ iconButton.id }}\"\r\n  [attr.aria-label]=\"iconButton.ariaLabel\"\r\n  [matTooltip]=\"iconButton.toolTip\"\r\n  [disabled]=\"iconButton.disabled\"\r\n  (click)=\"onClick(iconButton)\"\r\n>\r\n  <svg\r\n    class=\"ieeesa-icon-button__svg\"\r\n    [ngClass]=\"\r\n      iconButton.disabled\r\n        ? 'ieeesa-icon-button__disabled'\r\n        : 'ieeesa-icon-button__enabled'\r\n    \"\r\n    *ngIf=\"iconButton?.iconURL\"\r\n  >\r\n    <use [attr.xlink:href]=\"iconButton.iconURL\"></use>\r\n  </svg>\r\n  <span class=\"ieeesa-icon-button__label\" *ngIf=\"isLabelNeeded\">{{\r\n    iconButton?.label\r\n  }}</span>\r\n</button>\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewEncapsulation,\r\n  OnDestroy,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { CheckboxOption, IconButton } from '@ieeesa-npm/models';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\nimport { FormSupportTextComponent } from '../form-support-text/form-support-text.component';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { IconButtonComponent } from '../icon-button/icon-button.component';\r\n\r\n/**\r\n * Provides implementation of all types of checkboxes.\r\n * @export\r\n * @class CheckboxComponent\r\n * @implements {OnInit}\r\n * @implements {FormField}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-checkbox',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    MatListModule,\r\n    MatButtonModule,\r\n    MatInputModule,\r\n    FormsModule,\r\n    MatFormFieldModule,\r\n    FormErrorComponent,\r\n    ReactiveFormsModule,\r\n    MatCheckboxModule,\r\n    FormSupportTextComponent,\r\n    IconButtonComponent,\r\n  ],\r\n  templateUrl: './checkbox.component.html',\r\n  styleUrls: ['./checkbox.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CheckboxComponent implements OnInit, FormField, OnDestroy {\r\n  config!: FieldConfig;\r\n  group!: FormGroup;\r\n  private _checkboxes!: CheckboxOption[];\r\n  @Input() isLabelNeeded = true;\r\n  /**\r\n   * Input property to get checkbox options.\r\n   * @memberof CheckboxComponent\r\n   * @usageNotes const checkboxes = [{ id: 1, name:\"Angular\"}]\r\n   */\r\n  @Input()\r\n  set checkboxes(value: CheckboxOption[]) {\r\n    this._checkboxes = value;\r\n  }\r\n  get checkboxes(): CheckboxOption[] {\r\n    return this._checkboxes;\r\n  }\r\n  @Input()\r\n  set recreateCheckboxOptionsControl(value: CheckboxOption[]) {\r\n    if (this.group && value) {\r\n      this._checkboxes = value;\r\n      this.recreateFormControl();\r\n    }\r\n  }\r\n  selectedCheckboxesInfo = new SelectionModel<CheckboxOption>(true, []);\r\n  @Output() checkboxSelection = new EventEmitter<CheckboxOption>();\r\n  @Output() checkboxOptionsAndSelection = new EventEmitter<CheckboxOption[]>();\r\n  @Output() selectedCheckboxes = new EventEmitter<CheckboxOption[]>();\r\n  @Output() ctaButtonClick = new EventEmitter<IconButton>();\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(private formUtilityService: FormUtilityService) {}\r\n\r\n  /**\r\n   * Implementation of ngOnInit lifecycle hook method of component to initialize component instance properties\r\n   *  and emits whenever the checkboxes selection state changes\r\n   * @memberof CheckboxComponent\r\n   */\r\n  ngOnInit(): void {\r\n    this.createFormGroupAndInitializeProperties();\r\n    this.selectedCheckboxesInfo.changed\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((result) => {\r\n        this.selectedCheckboxes.emit(result?.source?.selected);\r\n        this.checkboxOptionsAndSelection.emit(this.checkboxes);\r\n      });\r\n  }\r\n  /**\r\n   * Recreate form controls whenever the new set of checkboxes are loaded when component is already initialized\r\n   * @memberof CheckboxComponent\r\n   */\r\n  recreateFormControl(): void {\r\n    this.config = this.formUtilityService.getFormFieldConfig(\r\n      'checkbox',\r\n      FormControlType.CHECKBOX\r\n    );\r\n    this.config.checkboxOptions = this.checkboxes;\r\n    this.group = this.formUtilityService.getFormGroup('checkbox', this.config);\r\n  }\r\n  /**\r\n   * Creates form group and initializes components properties from config.\r\n   * @memberof CheckboxComponent\r\n   */\r\n  createFormGroupAndInitializeProperties(): void {\r\n    this.config =\r\n      this.config ??\r\n      this.formUtilityService.getFormFieldConfig(\r\n        'checkbox',\r\n        FormControlType.CHECKBOX\r\n      );\r\n    this.checkboxes = this.config?.checkboxOptions ?? this.checkboxes;\r\n    this.config.checkboxOptions = this.checkboxes;\r\n    this.group =\r\n      this.group ??\r\n      this.formUtilityService.getFormGroup('checkbox', this.config);\r\n  }\r\n  /**\r\n   * Sets checkbox selection and emits selected option on change event.\r\n   * @param {CheckboxOption} option\r\n   * @param {boolean} checked\r\n   * @memberof CheckboxComponent\r\n   */\r\n  onChange(option: CheckboxOption, checked: boolean): void {\r\n    option.checked = !checked;\r\n    this.checkboxSelection.emit(option);\r\n  }\r\n  /**\r\n   * Allows Angular to detect the specific checkbox option that needs to change or be added instead of rebuilding the whole checkbox options in DOM by tracking option unique Id.\r\n   * @param {number} index\r\n   * @return {number}\r\n   * @memberof CheckboxComponent\r\n   */\r\n  trackById(\r\n    index: number,\r\n    option: CheckboxOption | IconButton\r\n  ): number | string {\r\n    return option.id;\r\n  }\r\n  /**\r\n   * Emits ctaButtonClick event along with clicked button information.\r\n   * @param {IconButton} event\r\n   * @memberof CheckboxComponent\r\n   */\r\n  onCheckboxCTAButtonClick(event: IconButton): void {\r\n    this.ctaButtonClick.emit(event);\r\n  }\r\n  /**\r\n   * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n   * @memberof CheckboxComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n}\r\n","<div\r\n  [formGroup]=\"group\"\r\n  class=\"ieeesa-checkbox-field\"\r\n  *ngIf=\"group\"\r\n  [ngClass]=\"\r\n    config?.isLabelAlignedLeft\r\n      ? 'ieeesa-checkbox-field__label-left'\r\n      : 'ieeesa-checkbox-field__label-top'\r\n  \"\r\n>\r\n  <mat-label class=\"ieeesa-body-sm-14 ieeesa-checkbox-field__label\">{{\r\n    config?.label\r\n  }}</mat-label>\r\n  <ng-container [formArrayName]=\"config?.controlName ?? 'checkboxes'\">\r\n    <mat-list class=\"p-0\" role=\"group\" [attr.aria-label]=\"config?.ariaLabel\">\r\n      <ng-container\r\n        *ngFor=\"let option of checkboxes; let i = index; trackBy: trackById\"\r\n      >\r\n        <mat-checkbox\r\n          [formControlName]=\"i\"\r\n          (change)=\"\r\n            onChange(option, option.checked);\r\n            selectedCheckboxesInfo.toggle(option)\r\n          \"\r\n          [disabled]=\"option.disabled\"\r\n          [checked]=\"option.checked\"\r\n        >\r\n          {{ option.name }}\r\n        </mat-checkbox>\r\n        <ng-container *ngIf=\"option.checked\">\r\n          <ng-container\r\n            *ngFor=\"\r\n              let button of option?.ctaButton;\r\n              let i = index;\r\n              trackBy: trackById\r\n            \"\r\n          >\r\n            <ieeesa-icon-button\r\n              class=\"px-5\"\r\n              [iconButton]=\"button\"\r\n              [isLabelNeeded]=\"isLabelNeeded\"\r\n              (iconButtonClick)=\"onCheckboxCTAButtonClick($event)\"\r\n            >\r\n            </ieeesa-icon-button>\r\n          </ng-container>\r\n        </ng-container>\r\n      </ng-container>\r\n    </mat-list>\r\n  </ng-container>\r\n  <ieeesa-form-support-text\r\n    [formGroup]=\"group\"\r\n    [config]=\"config\"\r\n  ></ieeesa-form-support-text>\r\n  <ieeesa-form-error\r\n    *ngIf=\"config && group\"\r\n    [formGroup]=\"group\"\r\n    [config]=\"config\"\r\n  >\r\n  </ieeesa-form-error>\r\n</div>\r\n","export const DateFormats = {\r\n  display: {\r\n    dateInput: 'DD MMM YYYY',\r\n    monthYearA11yLabel: 'MMMM YYYY',\r\n    daysFormat: 'ddd',\r\n    monthFormat: 'YYYY-MM',\r\n    fullMonthLabel: 'MMM',\r\n    month: 'M',\r\n  },\r\n};\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n/**\r\n * DatepickerService is used in date-picker and date-picker-header component to get date range, isRangeSelection, and selected date(s).\r\n * @export\r\n * @class DatepickerService\r\n */\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class DatepickerService implements OnDestroy {\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  range = new Subject<{ start: Date | string; end: Date | string }>();\r\n  range$ = this.range.asObservable();\r\n  selectedRange!: { start: Date | string; end: Date | string };\r\n  selectedDate!: Date | string;\r\n  isRangeSelection = false;\r\n  constructor() {\r\n    this.range$?.pipe(takeUntil(this.destroy$)).subscribe((range) => {\r\n      this.selectedRange = {\r\n        start: range.start,\r\n        end: range.end,\r\n      };\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Returns the calendar type.\r\n   * @return {boolean}\r\n   * @memberof DatepickerService\r\n   */\r\n  getCalendarType(): boolean {\r\n    return this.isRangeSelection;\r\n  }\r\n  /**\r\n   * Returns selected range\r\n   * @return {({ start: Date | string; end: Date | string })}\r\n   * @memberof DatepickerService\r\n   */\r\n  getSelectedRange(): { start: Date | string; end: Date | string } {\r\n    return this.selectedRange;\r\n  }\r\n  /**\r\n   * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n   * @memberof DatePickerHeaderComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n}\r\n","import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatCalendar, MatDatepickerModule } from '@angular/material/datepicker';\r\nimport {\r\n  DateAdapter,\r\n  MAT_DATE_FORMATS,\r\n  MatDateFormats,\r\n  MatNativeDateModule,\r\n} from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FormGroup } from '@angular/forms';\r\nimport moment_ from 'moment';\r\nimport { DatepickerService } from '../../services/datepicker.service';\r\nimport { DateFormats } from '../../date-formats';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as datePickerInfo from '../../assets/constants.json';\r\nconst moment = moment_;\r\n\r\n/**\r\n * Provides implementation of date picker custom header and being used in date-picker component.\r\n * @export\r\n * @class DatePickerHeaderComponent\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-date-picker-header',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    MatDatepickerModule,\r\n    MatFormFieldModule,\r\n    MatNativeDateModule,\r\n    MatIconModule,\r\n  ],\r\n  templateUrl: './date-picker-header.component.html',\r\n  styleUrls: ['./date-picker-header.component.scss'],\r\n})\r\nexport class DatePickerHeaderComponent implements OnInit, OnDestroy {\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  @Input() group!: FormGroup;\r\n  arrowDirection = false;\r\n  range!: { start: string; end: string };\r\n  isRangeSelection = false;\r\n  selectedDate!: string;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  datePickerInfo: any = datePickerInfo;\r\n\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    public calendar: MatCalendar<Date>,\r\n    // eslint-disable-next-line no-unused-vars\r\n    public dateAdapter: DateAdapter<Date>,\r\n    // eslint-disable-next-line no-unused-vars\r\n    @Inject(MAT_DATE_FORMATS) public dateFormats: MatDateFormats,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private datepickerService: DatepickerService // eslint-disable-next-line no-empty-function\r\n  ) {}\r\n\r\n  /**\r\n   * Implementation of ngOnInit lifecycle hook method to initialize components instance properties.\r\n   * @memberof DatePickerHeaderComponent\r\n   */\r\n  ngOnInit(): void {\r\n    this.isRangeSelection = this.datepickerService.getCalendarType();\r\n    const selectedRange = this.datepickerService.getSelectedRange();\r\n    if (selectedRange) {\r\n      this.setRange(selectedRange);\r\n    }\r\n    this.datepickerService.range$\r\n      ?.pipe(takeUntil(this.destroy$))\r\n      .subscribe((range) => {\r\n        this.setRange(range);\r\n      });\r\n    this.selectedDate = this.datepickerService.selectedDate\r\n      ? moment(this.datepickerService.selectedDate).format(\r\n          DateFormats.display.dateInput\r\n        )\r\n      : '';\r\n  }\r\n\r\n  /**\r\n   * Sets the min and max date range.\r\n   * @param {({ start: Date | string; end: Date | string })} range\r\n   * @memberof DatePickerHeaderComponent\r\n   */\r\n  setRange(range: { start: Date | string; end: Date | string }): void {\r\n    this.range = {\r\n      start:\r\n        moment(range.start).date() +\r\n        ' ' +\r\n        moment(range.start).format(DateFormats.display.fullMonthLabel),\r\n      end:\r\n        moment(range.end).date() +\r\n        ' ' +\r\n        moment(range.end).format(DateFormats.display.fullMonthLabel),\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Implementation of getMonthLabel method to get the month label.\r\n   * @readonly\r\n   * @return {string}\r\n   * @memberof DatePickerHeaderComponent\r\n   */\r\n  get getMonthLabel(): string {\r\n    if (this.dateAdapter?.format) {\r\n      return this.dateAdapter.format(\r\n        this.calendar.activeDate,\r\n        this.dateFormats.display.monthYearA11yLabel\r\n      );\r\n    }\r\n    return '';\r\n  }\r\n\r\n  /**\r\n   * Sets previous month in a calendar on click of previous month arrow in date picker.\r\n   * @param {('month' | 'year')} mode\r\n   * @memberof DatePickerHeaderComponent\r\n   */\r\n  setPreviousMonth(mode: 'month' | 'year'): void {\r\n    this.calendar.activeDate =\r\n      mode === 'month'\r\n        ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, -1)\r\n        : this.dateAdapter.addCalendarYears(this.calendar.activeDate, -1);\r\n  }\r\n\r\n  /**\r\n   * Sets next month in a calendar on click of previous month arrow in date picker.\r\n   * @param {('month' | 'year')} mode\r\n   * @memberof DatePickerHeaderComponent\r\n   */\r\n  setNextMonth(mode: 'month' | 'year'): void {\r\n    this.calendar.activeDate =\r\n      mode === 'month'\r\n        ? this.dateAdapter.addCalendarMonths(this.calendar.activeDate, 1)\r\n        : this.dateAdapter.addCalendarYears(this.calendar.activeDate, 1);\r\n  }\r\n\r\n  /**\r\n   * Sets the calendar current view on the open of year drop down in date picker.\r\n   * @memberof DatePickerHeaderComponent\r\n   */\r\n  setCalendarView(): void {\r\n    this.calendar.currentView =\r\n      this.calendar.currentView === 'month' ? 'multi-year' : 'month';\r\n    this.arrowDirection = !this.arrowDirection;\r\n  }\r\n  /**\r\n   * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n   * @memberof DatePickerHeaderComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n}\r\n","<div class=\"ieeesa-datepicker-header--selected-date-container\">\r\n  <p\r\n    class=\"ieeesa-label-lg-bold-16 ieeesa-datepicker-header__select-date-label\"\r\n  >\r\n    {{ datePickerInfo.datePicker.selectDateLabel }}\r\n  </p>\r\n  <p\r\n    class=\"headline-lg-34 ieeesa-datepicker-header__selected-date m-0\"\r\n    *ngIf=\"range || isRangeSelection\"\r\n  >\r\n    {{ range.start }} - {{ range.end }}\r\n  </p>\r\n  <p\r\n    class=\"headline-lg-34 ieeesa-datepicker-header__selected-date m-0\"\r\n    *ngIf=\"!isRangeSelection\"\r\n  >\r\n    {{ selectedDate }}\r\n  </p>\r\n</div>\r\n<div class=\"ieeesa-datepicker-header--content m-0\">\r\n  <button\r\n    mat-button\r\n    type=\"button\"\r\n    class=\"ieeesa-datepicker-header--content--period-button ieeesa-label-lg-16 text-start\"\r\n    (click)=\"setCalendarView()\"\r\n    [attr.aria-label]=\"getMonthLabel\"\r\n    cdkAriaLive=\"polite\"\r\n  >\r\n    {{ getMonthLabel }}\r\n    <i\r\n      *ngIf=\"!arrowDirection\"\r\n      class=\"ieeesa-datepicker-header--content--period-button--arrow-icon fa-solid fa-arrow-down\"\r\n    ></i>\r\n    <i\r\n      *ngIf=\"arrowDirection\"\r\n      class=\"ieeesa-datepicker-header--content--period-button--arrow-icon fa-solid fa-arrow-up\"\r\n    ></i>\r\n  </button>\r\n  <button\r\n    mat-button\r\n    type=\"button\"\r\n    class=\"ieeesa-label-lg-16 ieeesa-datepicker-header--content--arrow-left-btn\"\r\n    [attr.aria-label]=\"datePickerInfo.ariaLabel.previousMonth\"\r\n    cdkAriaLive=\"polite\"\r\n    (click)=\"setPreviousMonth('month')\"\r\n  >\r\n    <i class=\"ieeesa-datepicker-header__arrow-left fa-solid fa-arrow-left\"></i>\r\n  </button>\r\n  <button\r\n    mat-button\r\n    type=\"button\"\r\n    class=\"ieeesa-label-lg-16 ieeesa-datepicker-header--content--arrow-right-btn text-end\"\r\n    [attr.aria-label]=\"datePickerInfo.ariaLabel.nextMonth\"\r\n    cdkAriaLive=\"polite\"\r\n    (click)=\"setNextMonth('month')\"\r\n  >\r\n    <i\r\n      class=\"ieeesa-datepicker-header__arrow-right fa-solid fa-arrow-right\"\r\n    ></i>\r\n  </button>\r\n</div>\r\n","export enum CalendarType {\r\n  // eslint-disable-next-line no-unused-vars\r\n  SINGLE_DATE_SELECTION = 1,\r\n  // eslint-disable-next-line no-unused-vars\r\n  CALENDAR = 2,\r\n  // eslint-disable-next-line no-unused-vars\r\n  DATE_RANGE_SELECTION = 3,\r\n}\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Injectable,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n  FormBuilder,\r\n  FormControl,\r\n  FormGroup,\r\n  ReactiveFormsModule,\r\n  Validators,\r\n} from '@angular/forms';\r\nimport {\r\n  MomentDateAdapter,\r\n  MAT_MOMENT_DATE_ADAPTER_OPTIONS,\r\n} from '@angular/material-moment-adapter';\r\nimport {\r\n  DateAdapter,\r\n  MAT_DATE_FORMATS,\r\n  MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport {\r\n  MAT_DATEPICKER_SCROLL_STRATEGY,\r\n  MatDatepickerModule,\r\n} from '@angular/material/datepicker';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { Overlay } from '@angular/cdk/overlay';\r\nimport moment_ from 'moment';\r\nimport { DatePickerHeaderComponent } from '../../components/date-picker-header/date-picker-header.component';\r\nimport { DateFormats } from '../../date-formats';\r\nimport { FieldConfig } from '../..//models/field-config.model';\r\nimport { CalendarType } from '../../models/calendar.model';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport { DatepickerService } from '../../services/datepicker.service';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport * as buttonActionsInfo from '../../assets/constants.json';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\nimport { FormSupportTextComponent } from '../form-support-text/form-support-text.component';\r\nimport { SelectedDate } from '../../models/selected-date.model';\r\nconst moment = moment_;\r\n\r\n@Injectable()\r\nexport class CustomDateAdapter extends MomentDateAdapter {\r\n  /**\r\n   * Overrides the getDayOfWeekNames method of MomentDateAdapter to show first letter of day in capital in date picker header.\r\n   * @return {string[]}\r\n   * @memberof CustomDateAdapter\r\n   */\r\n  override getDayOfWeekNames(): string[] {\r\n    return ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\r\n  }\r\n}\r\n\r\n/**\r\n * Date selection of type SINGLE_DATE_SELECTION, DATE_RANGE_SELECTION and CALENDAR and handling of calendar events.\r\n * @export\r\n * @class DatePickerComponent\r\n * @implements {FormField}\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-date-picker',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    FormErrorComponent,\r\n    MatExpansionModule,\r\n    MatMenuModule,\r\n    MatIconModule,\r\n    MatInputModule,\r\n    MatFormFieldModule,\r\n    MatDatepickerModule,\r\n    DatePickerHeaderComponent,\r\n    MatButtonModule,\r\n    FormSupportTextComponent,\r\n  ],\r\n  providers: [\r\n    { provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } },\r\n    {\r\n      provide: DateAdapter,\r\n      useClass: CustomDateAdapter,\r\n      deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],\r\n    },\r\n    {\r\n      provide: MAT_DATE_FORMATS,\r\n      useValue: DateFormats,\r\n    },\r\n    {\r\n      provide: MAT_DATEPICKER_SCROLL_STRATEGY,\r\n      useFactory: (overlay: Overlay) => () =>\r\n        overlay.scrollStrategies.reposition(),\r\n      deps: [Overlay],\r\n    },\r\n  ],\r\n  templateUrl: './date-picker.component.html',\r\n  styleUrls: ['./date-picker.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DatePickerComponent implements FormField, OnInit, OnDestroy {\r\n  config!: FieldConfig;\r\n  group!: FormGroup;\r\n  datePickerHeader = DatePickerHeaderComponent;\r\n  calendarTypes = CalendarType;\r\n  private _selectedDates: string[] = [];\r\n  /**\r\n   * Gets preselected dates as an input.\r\n   * @memberof DatePickerComponent\r\n   */\r\n  @Input()\r\n  set selectedDates(value: string[]) {\r\n    this._selectedDates = value;\r\n    if (\r\n      this.formControlName &&\r\n      this.selectedDates?.length === 1 &&\r\n      this.selectedDates[0] !== undefined &&\r\n      this.calendarType === CalendarType.SINGLE_DATE_SELECTION\r\n    ) {\r\n      this.datepickerService.selectedDate = value[0];\r\n      this.createFormGroup(value[0]);\r\n      this.datepickerService.isRangeSelection = false;\r\n    }\r\n  }\r\n  /**\r\n   * Returns selected dates\r\n   * @readonly\r\n   * @type {string[]}\r\n   * @memberof DatePickerComponent\r\n   */\r\n  get selectedDates(): string[] {\r\n    return this._selectedDates;\r\n  }\r\n  private _selectedRange: string[] = [];\r\n  /**\r\n   * Gets preselected date range as an input.\r\n   * @memberof DatePickerComponent\r\n   */\r\n  @Input()\r\n  set selectedRange(value: string[]) {\r\n    this._selectedRange = value;\r\n    if (\r\n      this.selectedRange?.length === 2 &&\r\n      this.calendarType === CalendarType.DATE_RANGE_SELECTION\r\n    ) {\r\n      this.createFormGroupWithRangeControls(value[0], value[1]);\r\n      this.setDateRange(value[0], value[1]);\r\n      this.datepickerService.isRangeSelection = true;\r\n    }\r\n  }\r\n  /**\r\n   * Returns selected date range\r\n   * @readonly\r\n   * @type {string[]}\r\n   * @memberof DatePickerComponent\r\n   */\r\n  get selectedRange(): string[] {\r\n    return this._selectedRange;\r\n  }\r\n\r\n  @Input() calendarType: CalendarType = CalendarType.SINGLE_DATE_SELECTION;\r\n  @Input() formControlName!: string;\r\n  @Input() placeholderLabel = '';\r\n  @Input() isDisabled = false;\r\n  @Input() isLabelAlignedLeft = false;\r\n  @Input() datepickerLabel = '';\r\n  @Input() dateRange!: { minDate: string; maxDate: string };\r\n  @Input() minDate!: Date | moment.Moment;\r\n  @Input() maxDate!: Date | moment.Moment;\r\n  @Output() selectedDate = new EventEmitter<SelectedDate>();\r\n  @Output() selectedDateRange = new EventEmitter<{\r\n    startDate: string;\r\n    endDate: string;\r\n  }>();\r\n  calendarSelectedDate!: Date;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  buttonActionsInfo: any = buttonActionsInfo;\r\n  private formOverlayScrollContainer?: HTMLElement;\r\n  private readonly overlayWheelListener = (event: WheelEvent): void => {\r\n    const target = event.target as Element | null;\r\n    if (target?.closest('.cdk-overlay-pane')) return;\r\n\r\n    const formBody = this.formOverlayScrollContainer;\r\n    if (!formBody || formBody.scrollHeight <= formBody.clientHeight) return;\r\n\r\n    formBody.scrollTop += event.deltaY;\r\n    formBody.scrollLeft += event.deltaX;\r\n    event.preventDefault();\r\n  };\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private fb: FormBuilder,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private changeDetectorRef: ChangeDetectorRef,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private datepickerService: DatepickerService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private formUtilityService: FormUtilityService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private elementRef: ElementRef<HTMLElement> // eslint-disable-next-line no-empty-function,\r\n  ) {}\r\n  /**\r\n   * Implementation of  ngOnInit lifecycle hook method to creates config if its undefined and sets components instance variables if config is defined. Sets the form group value if form group is defined.\r\n   * @memberof DatePickerComponent\r\n   */\r\n  ngOnInit(): void {\r\n    if (!this.config) {\r\n      const controlName = this.formControlName ?? 'datepicker';\r\n      this.config = this.formUtilityService.getFormFieldConfig(\r\n        controlName,\r\n        FormControlType.DATE\r\n      );\r\n      if (\r\n        this.config &&\r\n        this.calendarType === CalendarType.DATE_RANGE_SELECTION\r\n      ) {\r\n        this.config.dateRangeControls = {\r\n          startDate: 'startDate',\r\n          endDate: 'endDate',\r\n        };\r\n      }\r\n    } else {\r\n      this.initializePropertiesFromConfig();\r\n    }\r\n    if (!this.group) {\r\n      if (this.calendarType === CalendarType.SINGLE_DATE_SELECTION) {\r\n        this.createFormGroup();\r\n      } else if (this.calendarType === CalendarType.DATE_RANGE_SELECTION) {\r\n        this.createFormGroupWithRangeControls();\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Initializes properties from the config input\r\n   * @memberof DatePickerComponent\r\n   */\r\n  initializePropertiesFromConfig(): void {\r\n    this.calendarType =\r\n      this.config?.datePicker?.calendarType ??\r\n      CalendarType.SINGLE_DATE_SELECTION;\r\n    this.placeholderLabel = this.config?.datePicker?.placeholderLabel ?? '';\r\n    this.datepickerLabel = this.config?.datePicker?.label ?? '';\r\n    this.isLabelAlignedLeft =\r\n      this.config?.datePicker?.isLabelAlignedLeft ?? false;\r\n    this.dateRange = this.config?.datePicker?.dateRange ?? {\r\n      minDate: '',\r\n      maxDate: '',\r\n    };\r\n    this.isDisabled = !!this.config.disabled;\r\n    if (\r\n      this.config.datePicker?.calendarType === CalendarType.DATE_RANGE_SELECTION\r\n    ) {\r\n      this.group.addControl('startDate', new FormControl());\r\n      this.group.addControl('endDate', new FormControl());\r\n    }\r\n  }\r\n  /**\r\n   * Handle date change event and emits the selected date.\r\n   * @memberof DatePickerComponent\r\n   */\r\n  onDateChange(): void {\r\n    this.selectedDate.emit({\r\n      date: this.group?.get(this.config?.controlName)?.value,\r\n      controlName: this.config?.controlName\r\n    });\r\n    this.datepickerService.selectedDate = this.group?.get(\r\n      this.config.controlName\r\n    )?.value;\r\n    this.datepickerService.isRangeSelection = false;\r\n  }\r\n\r\n  /**\r\n   * Sets and emits selected date range\r\n   * @memberof DatePickerComponent\r\n   */\r\n  onDateRangeChange(): void {\r\n    this.datepickerService.isRangeSelection = true;\r\n    this.setDateRange(\r\n      this.group.value.startDate ?? '',\r\n      this.group.value.endDate ?? ''\r\n    );\r\n\r\n    this.selectedDateRange.emit({\r\n      startDate: this.group.value.startDate ?? '',\r\n      endDate: this.group.value.endDate ?? '',\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Sets the min and max date range.\r\n   * @param {(string | Date)} startDate\r\n   * @param {(string | Date)} endDate\r\n   * @memberof DatePickerComponent\r\n   */\r\n  setDateRange(startDate: string | Date, endDate: string | Date): void {\r\n    this.datepickerService.range.next({\r\n      start: startDate,\r\n      end: endDate,\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Creates form group and initializes form value\r\n   * @param {string} [date]\r\n   * @memberof DatePickerComponent\r\n   */\r\n  createFormGroup(date?: string): void {\r\n    this.group = this.fb.group({\r\n      [this.formControlName ? this.formControlName : 'datepicker']: date\r\n        ? [moment(date).utc(true).format()]\r\n        : [],\r\n    });\r\n  }\r\n  /**\r\n   * Creates form group with range type of controls and sets the min and max range values.\r\n   * @param {string} [startDate]\r\n   * @param {string} [endDate]\r\n   * @memberof DatePickerComponent\r\n   */\r\n  createFormGroupWithRangeControls(startDate?: string, endDate?: string): void {\r\n    this.group = this.fb.group({\r\n      startDate: startDate ? [moment(startDate).utc(true).format()] : [],\r\n      endDate: endDate ? [moment(endDate).utc(true).format()] : [],\r\n    });\r\n  }\r\n  /**\r\n   * Checks if the form control has required validator.\r\n   * @return {boolean}\r\n   * @memberof DatePickerComponent\r\n   */\r\n  isRequired(): boolean {\r\n    return this.group?.controls[this.config?.controlName]?.hasValidator(\r\n      Validators.required\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Sets the updated selected date using datepicker service which will be shown in datepicker header\r\n   * @param {string} controlName\r\n   * @memberof DatePickerComponent\r\n   */\r\n  onDatePickerOpen(controlName: string) {\r\n    this.scrollFieldIntoViewForCalendar();\r\n    this.setOverlayClipBounds();\r\n    this.datepickerService.selectedDate = this.group.get(controlName)?.value;\r\n  }\r\n\r\n  onDatePickerClose(): void {\r\n    this.clearOverlayClipBounds();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.clearOverlayClipBounds();\r\n  }\r\n\r\n  private setOverlayClipBounds(): void {\r\n    const formBody = this.getFormOverlayScrollContainer();\r\n    const documentElement = this.elementRef.nativeElement.ownerDocument\r\n      .documentElement;\r\n    const viewportHeight =\r\n      this.elementRef.nativeElement.ownerDocument.defaultView?.innerHeight ?? 0;\r\n\r\n    if (!formBody || !viewportHeight) return;\r\n\r\n    const formBodyRect = formBody.getBoundingClientRect();\r\n    documentElement.style.setProperty(\r\n      '--ieeesa-form-overlay-clip-top',\r\n      `${Math.max(0, Math.floor(formBodyRect.top))}px`\r\n    );\r\n    documentElement.style.setProperty(\r\n      '--ieeesa-form-overlay-clip-bottom',\r\n      `${Math.max(0, viewportHeight - Math.ceil(formBodyRect.bottom))}px`\r\n    );\r\n    this.formOverlayScrollContainer = formBody;\r\n    this.elementRef.nativeElement.ownerDocument.addEventListener(\r\n      'wheel',\r\n      this.overlayWheelListener,\r\n      { capture: true, passive: false }\r\n    );\r\n    documentElement.classList.add('ieeesa-form-overlay-open');\r\n  }\r\n\r\n  private scrollFieldIntoViewForCalendar(): void {\r\n    const formBody = this.getFormOverlayScrollContainer();\r\n    const dateField = this.elementRef.nativeElement.querySelector(\r\n      'input[matInput]'\r\n    ) as HTMLElement | null;\r\n\r\n    if (!formBody || !dateField) return;\r\n\r\n    const formBodyRect = formBody.getBoundingClientRect();\r\n    const dateFieldRect = dateField.getBoundingClientRect();\r\n    const targetTop = formBodyRect.top + 16;\r\n    const scrollDelta = dateFieldRect.top - targetTop;\r\n\r\n    if (scrollDelta > 0) {\r\n      formBody.scrollTop += scrollDelta;\r\n    }\r\n  }\r\n\r\n  private getFormOverlayScrollContainer(): HTMLElement | null {\r\n    const candidates = [\r\n      this.elementRef.nativeElement.closest('.ieeesa-dynamic-form__body'),\r\n      this.elementRef.nativeElement.closest('.ieeesa-stepper__content'),\r\n    ] as (HTMLElement | null)[];\r\n\r\n    return (\r\n      candidates.find((element) => {\r\n        if (!element) return false;\r\n\r\n        const overflowY = getComputedStyle(element).overflowY;\r\n        return (\r\n          (overflowY === 'auto' || overflowY === 'scroll') &&\r\n          element.scrollHeight > element.clientHeight\r\n        );\r\n      }) ??\r\n      candidates.find((element) => !!element) ??\r\n      null\r\n    );\r\n  }\r\n\r\n  private clearOverlayClipBounds(): void {\r\n    this.elementRef.nativeElement.ownerDocument.removeEventListener(\r\n      'wheel',\r\n      this.overlayWheelListener,\r\n      true\r\n    );\r\n    this.formOverlayScrollContainer = undefined;\r\n    const documentElement = this.elementRef.nativeElement.ownerDocument\r\n      .documentElement;\r\n    documentElement.classList.remove('ieeesa-form-overlay-open');\r\n    documentElement.style.removeProperty('--ieeesa-form-overlay-clip-top');\r\n    documentElement.style.removeProperty('--ieeesa-form-overlay-clip-bottom');\r\n  }\r\n}","<div class=\"ieeesa-datepicker\">\r\n  <div\r\n    [formGroup]=\"group\"\r\n    *ngIf=\"calendarType === calendarTypes.SINGLE_DATE_SELECTION\"\r\n    class=\"ieeesa-datepicker--single-selection\"\r\n    [ngClass]=\"!isRequired() ? 'ieeesa-datepicker__valid-date' : ''\"\r\n    [ngClass]=\"{\r\n      'ieeesa-datepicker__valid-date': !isRequired(),\r\n      'ieeesa-datepicker__label-left': isLabelAlignedLeft,\r\n      'ieeesa-datepicker__label-top': !isLabelAlignedLeft\r\n    }\"\r\n  >\r\n    <mat-label\r\n      *ngIf=\"datepickerLabel\"\r\n      class=\"ieeesa-body-sm-14 ieeesa-datepicker__label\"\r\n      >{{ datepickerLabel }}\r\n    </mat-label>\r\n    <mat-form-field>\r\n      <input\r\n        matInput\r\n        (dateInput)=\"onDateChange()\"\r\n        (click)=\"picker.open()\"\r\n        [matDatepicker]=\"picker\"\r\n        [attr.aria-label]=\"config.ariaLabel\"\r\n        [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n        [min]=\"config?.datePicker?.minDate ?? minDate\"\r\n        [max]=\"config?.datePicker?.maxDate ?? maxDate\"\r\n        [formControlName]=\"config.controlName\"\r\n        [placeholder]=\"\r\n          placeholderLabel ?? buttonActionsInfo?.datePicker?.dateFormatLabel\r\n        \"\r\n        #calendar\r\n        readonly\r\n      />\r\n      <mat-datepicker-toggle\r\n        class=\"mat-datepicker-toggle\"\r\n        matIconSuffix\r\n        [for]=\"picker\"\r\n      >\r\n        <svg matDatepickerToggleIcon class=\"ieeesa-datepicker__datepicker-icon\">\r\n          <use\r\n            [attr.xlink:href]=\"buttonActionsInfo?.datePicker?.datePickerIcon\"\r\n          ></use>\r\n        </svg>\r\n      </mat-datepicker-toggle>\r\n      <mat-datepicker\r\n        #picker\r\n        yPosition=\"below\"\r\n        [calendarHeaderComponent]=\"datePickerHeader\"\r\n        (opened)=\"onDatePickerOpen(config.controlName)\"\r\n        (closed)=\"onDatePickerClose()\"\r\n      >\r\n      </mat-datepicker>\r\n    </mat-form-field>\r\n    <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\">\r\n    </ieeesa-form-error>\r\n    <ieeesa-form-support-text\r\n      [formGroup]=\"group\"\r\n      [config]=\"config\"\r\n    ></ieeesa-form-support-text>\r\n  </div>\r\n\r\n  <div\r\n    [formGroup]=\"group\"\r\n    *ngIf=\"calendarType === calendarTypes.DATE_RANGE_SELECTION\"\r\n    class=\"ieeesa-datepicker--multi-selection\"\r\n    [ngClass]=\"\r\n      isLabelAlignedLeft\r\n        ? 'ieeesa-datepicker__label-left'\r\n        : 'ieeesa-datepicker__label-top'\r\n    \"\r\n  >\r\n    <mat-label\r\n      *ngIf=\"datepickerLabel\"\r\n      class=\"ieeesa-datepicker__label ieeesa-body-sm-14\"\r\n      >{{ datepickerLabel }}\r\n    </mat-label>\r\n    <mat-form-field>\r\n      <mat-date-range-input [rangePicker]=\"rangePicker\" [formGroup]=\"group\">\r\n        <input\r\n          matStartDate\r\n          matInput\r\n          [formControlName]=\"config.dateRangeControls?.startDate ?? ''\"\r\n          [placeholder]=\"buttonActionsInfo?.datePicker?.dateFormatLabel + ' - '\"\r\n          (dateChange)=\"onDateRangeChange()\"\r\n        />\r\n        <input\r\n          matEndDate\r\n          matInput\r\n          [formControlName]=\"config.dateRangeControls?.endDate ?? ''\"\r\n          [placeholder]=\"buttonActionsInfo?.datePicker?.dateFormatLabel\"\r\n          (dateChange)=\"onDateRangeChange()\"\r\n        />\r\n      </mat-date-range-input>\r\n      <mat-datepicker-toggle\r\n        class=\"mat-datepicker-toggle\"\r\n        matIconSuffix\r\n        [for]=\"rangePicker\"\r\n      ></mat-datepicker-toggle>\r\n      <mat-date-range-picker\r\n        #rangePicker\r\n        yPosition=\"below\"\r\n        [calendarHeaderComponent]=\"datePickerHeader\"\r\n        (dateInput)=\"onDateRangeChange()\"\r\n        (opened)=\"onDatePickerOpen(config.controlName)\"\r\n        (closed)=\"onDatePickerClose()\"\r\n      >\r\n      </mat-date-range-picker>\r\n    </mat-form-field>\r\n  </div>\r\n\r\n  <div\r\n    *ngIf=\"calendarType === calendarTypes.CALENDAR\"\r\n    class=\"ieeesa-datepicker--calendar\"\r\n  >\r\n    <mat-calendar\r\n      [headerComponent]=\"datePickerHeader\"\r\n      [(selected)]=\"calendarSelectedDate\"\r\n    >\r\n    </mat-calendar>\r\n  </div>\r\n</div>\r\n","/* eslint-disable no-unused-vars */\r\nexport enum InputFieldType {\r\n  EMAIL = 'EMAIL',\r\n  NUMBER = 'NUMBER',\r\n  TEXT = 'TEXT',\r\n}\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { InputFieldType } from '../../models/input-field-type.model';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport * as buttonActionsInfo from '../../assets/constants.json';\r\nimport { FormSupportTextComponent } from '../form-support-text/form-support-text.component';\r\n\r\n/**\r\n * Provides implementation of input type number, email and text\r\n * @export\r\n * @class InputComponent\r\n * @implements {FormField}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-input',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    FormErrorComponent,\r\n    MatInputModule,\r\n    MatIconModule,\r\n    FormSupportTextComponent,\r\n  ],\r\n  templateUrl: './input.component.html',\r\n  styleUrls: ['./input.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class InputComponent implements FormField {\r\n  config!: FieldConfig;\r\n  group!: FormGroup;\r\n  invalidChars = ['-', '+', 'e'];\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  buttonActionsInfo: any = buttonActionsInfo;\r\n  @Output() inputValueChange = new EventEmitter<string | number>();\r\n\r\n  /**\r\n   * Handles keyboard event of type keydown to restrict invalid characters.\r\n   * @param {KeyboardEvent} event\r\n   * @memberof InputComponent\r\n   */\r\n  onKeyDown(event: KeyboardEvent): void {\r\n    if (\r\n      (this.invalidChars.includes(event.key.toLowerCase()) ||\r\n        (this.config.isInteger && event.key.toLowerCase() === '.')) &&\r\n      this.config.isNumber\r\n    ) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n  /**\r\n   * Clears the form group control value of type input\r\n   * @memberof InputComponent\r\n   */\r\n  clear(): void {\r\n    this.group.get(this.config.controlName)?.setValue('');\r\n  }\r\n\r\n  /**\r\n   * Handles form control input on change event to set min and max value errors\r\n   * @memberof InputComponent\r\n   */\r\n  onChange(): void {\r\n    const inputControl = this.group?.get(this.config?.controlName);\r\n    if (\r\n      this.config.max &&\r\n      this.config.isNumber &&\r\n      Number(inputControl?.value) > this.config.max\r\n    ) {\r\n      inputControl?.setErrors({\r\n        maxlength: true,\r\n      });\r\n    }\r\n    if (\r\n      this.config.min &&\r\n      this.config.isNumber &&\r\n      inputControl?.value !== '' &&\r\n      Number(inputControl?.value) < this.config.min\r\n    ) {\r\n      inputControl?.setErrors({\r\n        minlength: true,\r\n      });\r\n    }\r\n    this.inputValueChange.emit(inputControl?.value);\r\n  }\r\n  /**\r\n   * Returns input field type\r\n   * @memberof InputComponent\r\n   */\r\n  getInputFieldType(): string {\r\n    if (this.config?.isEmail) {\r\n      return InputFieldType.EMAIL;\r\n    } else if (this.config?.isNumber) {\r\n      return InputFieldType.NUMBER;\r\n    }\r\n    return InputFieldType.TEXT;\r\n  }\r\n}\r\n","<div\r\n  [formGroup]=\"group\"\r\n  class=\"ieeesa-input-field\"\r\n  [ngClass]=\"\r\n    config.isLabelAlignedLeft\r\n      ? 'ieeesa-input-field__label-left'\r\n      : 'ieeesa-input-field__label-top'\r\n  \"\r\n>\r\n  <mat-label class=\"ieeesa-body-sm-14 ieeesa-input-field__label\">{{\r\n    config.label\r\n  }}</mat-label>\r\n  <mat-form-field>\r\n    <input\r\n      class=\"ieeesa-input-field__content ieeesa-body-lg-16\"\r\n      [type]=\"getInputFieldType()\"\r\n      [attr.aria-label]=\"config.ariaLabel\"\r\n      [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n      [min]=\"config.min ?? null\"\r\n      [max]=\"config.max ?? null\"\r\n      [maxlength]=\"config.maxLength ?? null\"\r\n      [minlength]=\"config.minLength ?? null\"\r\n      [placeholder]=\"config.placeholder ?? ''\"\r\n      [formControlName]=\"config.controlName\"\r\n      [name]=\"config.controlName\"\r\n      (keydown)=\"onKeyDown($event)\"\r\n      (input)=\"onChange()\"\r\n      autocomplete=\"off\"\r\n      matInput\r\n    />\r\n    <button\r\n      *ngIf=\"\r\n        group.get(this.config.controlName)?.value &&\r\n        group.get(this.config.controlName)?.valid &&\r\n        this.config?.clear\r\n      \"\r\n      matSuffix\r\n      mat-icon-button\r\n      [attr.aria-label]=\"buttonActionsInfo.ariaLabel.clear\"\r\n      class=\"ieeesa-input-field__btn--clear\"\r\n      (click)=\"clear()\"\r\n    >\r\n      <i class=\"fa-regular fa-circle-xmark ieeesa-input-field__icon--clear\"></i>\r\n    </button>\r\n    <ng-container\r\n      *ngIf=\"\r\n        group.get(this.config.controlName)?.invalid &&\r\n        (group.get(this.config.controlName)?.dirty ||\r\n          group.get(this.config.controlName)?.touched)\r\n      \"\r\n      matSuffix>\r\n      <i\r\n        class=\"fa-solid fa-circle-exclamation ieeesa-input-field__icon--warning\"\r\n        [attr.aria-label]=\"buttonActionsInfo.ariaLabel.warning\"\r\n        role=\"img\"\r\n      ></i>\r\n    </ng-container>\r\n  </mat-form-field>\r\n  <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n  <ieeesa-form-support-text [formGroup]=\"group\" [config]=\"config\"></ieeesa-form-support-text>\r\n</div>","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { RadioOption } from '../../models/radio-option.model';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\n\r\n/**\r\n * Provides implementation of form field radio type component\r\n * @export\r\n * @class RadioComponent\r\n * @implements {OnInit}\r\n * @implements {FormField}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-radio',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    MatRadioModule,\r\n    ReactiveFormsModule,\r\n    FormErrorComponent,\r\n    MatFormFieldModule,\r\n  ],\r\n  templateUrl: './radio.component.html',\r\n  styleUrls: ['./radio.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class RadioComponent implements OnInit, FormField {\r\n  config!: FieldConfig;\r\n  group!: FormGroup;\r\n  @Input() formControlName = 'radio';\r\n  private radioGroups: RadioOption[] = [];\r\n  @Input()\r\n  set radioGroup(value: RadioOption[]) {\r\n    this.radioGroups = value;\r\n  }\r\n  get radioGroup(): RadioOption[] {\r\n    return this.radioGroups;\r\n  }\r\n  @Input() isDisabled = false;\r\n  @Output() selectedRadioOption = new EventEmitter<RadioOption>();\r\n\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(private formUtilityService: FormUtilityService) {}\r\n\r\n  /**\r\n   * Implementation of ngOnInit lifecycle hook method to create form group and initialize components instance properties\r\n   * @memberof RadioComponent\r\n   */\r\n  ngOnInit(): void {\r\n    if (!this.group) {\r\n      this.group =\r\n        this.group ??\r\n        this.formUtilityService.getFormGroup(this.formControlName);\r\n    }\r\n    this.initializeConfigProperties();\r\n  }\r\n\r\n  /**\r\n   * Initializes the components instance properties from config else it defines config\r\n   * @memberof RadioComponent\r\n   */\r\n  initializeConfigProperties(): void {\r\n    if (this.config?.radioOptions) {\r\n      this.radioGroup = this.config.radioOptions;\r\n      this.isDisabled = this.config?.disabled ?? false;\r\n    }\r\n    this.config =\r\n      this.config ??\r\n      this.formUtilityService.getFormFieldConfig(\r\n        this.formControlName,\r\n        FormControlType.RADIO\r\n      );\r\n  }\r\n\r\n  /**\r\n   * Handles radio selection event on change of it\r\n   * @param {RadioOption} value\r\n   * @memberof RadioComponent\r\n   */\r\n  onChange(value: RadioOption): void {\r\n    this.selectedRadioOption.emit(value);\r\n  }\r\n  /**\r\n   * Allows Angular to detect the specific radio option that needs to change or be added instead of rebuilding the whole radio options in DOM by tracking option unique Id.\r\n   * @param {number} index\r\n   * @return {number}\r\n   * @memberof RadioComponent\r\n   */\r\n  trackById(index: number, radio: RadioOption): number | string {\r\n    return radio.id;\r\n  }\r\n}\r\n","<div [formGroup]=\"group\" class=\"ieeesa-radio-field\" *ngIf=\"group\">\r\n  <mat-label\r\n    class=\"ieeesa-body-sm-14 ieeesa-radio-field__label\"\r\n    [ngClass]=\"\r\n      config.isLabelAlignedLeft\r\n        ? 'ieeesa-radio-field__label-left'\r\n        : 'ieeesa-radio-field__label-top'\r\n    \"\r\n    >{{ config.label }}</mat-label\r\n  >\r\n  <mat-radio-group\r\n    [formControlName]=\"config.controlName\"\r\n    [disabled]=\"isDisabled\"\r\n    [attr.aria-label]=\"config.ariaLabel\"\r\n  >\r\n    <mat-radio-button\r\n      *ngFor=\"let radio of radioGroup; trackBy: trackById\"\r\n      [value]=\"radio.label\"\r\n      [name]=\"radio.label\"\r\n      [aria-label]=\"radio.label\"\r\n      [id]=\"'' + radio.id\"\r\n      (change)=\"onChange(radio)\"\r\n      [checked]=\"radio.checked\"\r\n      class=\"ieeesa-radio-field__button\"\r\n    >\r\n      {{ radio.label }}\r\n    </mat-radio-button>\r\n  </mat-radio-group>\r\n  <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n</div>\r\n","export const ValidationPatterns = {\r\n  alphanumeric: /^[a-zA-Z0-9 _-]+$/,\r\n  mixOfAlphanumeric: /^[0-9]*[a-zA-Z]+[a-zA-Z0-9 _()-]*$/,\r\n  numeric: '^0|[1-9][0-9]*$',\r\n  email: /^[a-z0-9._%+-]+@[a-z0-9.-]+\\\\.[a-z]{2,4}$/,\r\n};\r\n","export enum SearchType {\r\n  // eslint-disable-next-line no-unused-vars\r\n  EMAIL = 'EMAIL',\r\n  // eslint-disable-next-line no-unused-vars\r\n  AUTO = 'AUTO',\r\n  // eslint-disable-next-line no-unused-vars\r\n  ON_CLICK = 'ON_CLICK',\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n  Subject,\r\n  debounceTime,\r\n  distinctUntilChanged,\r\n  filter,\r\n  fromEvent,\r\n  map,\r\n  takeUntil,\r\n} from 'rxjs';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { ValidationPatterns } from '../../validation-patterns';\r\nimport { SearchType } from '../../models/search.model';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\nimport * as searchInfo from '../../assets/constants.json';\r\nimport { FormSupportTextComponent } from '../form-support-text/form-support-text.component';\r\nconst MIN_CHAR = 3;\r\n/**\r\n * Component support search capability and used as a form filed with type search and independently as search component.\r\n * @export\r\n * @class SearchComponent\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n * @implements {OnDestroy}\r\n * @implements {FormField}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-search',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    FormErrorComponent,\r\n    MatFormFieldModule,\r\n    MatInputModule,\r\n    MatIconModule,\r\n    FormSupportTextComponent,\r\n  ],\r\n  templateUrl: './search.component.html',\r\n  styleUrls: ['./search.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SearchComponent\r\n  implements OnInit, AfterViewInit, OnDestroy, FormField\r\n{\r\n  config!: FieldConfig;\r\n  group!: FormGroup;\r\n  @Input() formControlName = 'search';\r\n  @Input() placeholderLabel = '';\r\n  @Input() searchTerm = '';\r\n  @Input() supportMessage!: string;\r\n  @Input() searchType: SearchType = SearchType.AUTO;\r\n  @Output() searchValue = new EventEmitter();\r\n  @ViewChild('searchControl') searchControl!: ElementRef;\r\n  @Input() minCharacterToSearch = MIN_CHAR;\r\n  searchResponse!: string;\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  searchInfo: any = searchInfo;\r\n  isSearchValueEmitted = false;\r\n\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private cd: ChangeDetectorRef,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private formUtilityService: FormUtilityService // eslint-disable-next-line no-empty-function\r\n  ) {}\r\n\r\n  /**\r\n   * Implementation of ngOnInit lifecycle hook method to initialize config and form group if its undefined\r\n   * @memberof SearchComponent\r\n   */\r\n  ngOnInit(): void {\r\n    if (this.config?.searchType) this.searchType = this.config?.searchType;\r\n    this.config =\r\n      this.config ??\r\n      this.formUtilityService.getFormFieldConfig(\r\n        this.formControlName,\r\n        FormControlType.SEARCH\r\n      );\r\n    this.group =\r\n      this.group ?? this.formUtilityService.getFormGroup(this.formControlName);\r\n    this.config.supportMessage =\r\n      this.config?.supportMessage ?? this.supportMessage;\r\n  }\r\n\r\n  /**\r\n   * Handles form control search keyup event and emits searched value\r\n   * @memberof SearchComponent\r\n   */\r\n  ngAfterViewInit() {\r\n    this.group\r\n      ?.get(this.config?.controlName)\r\n      ?.setValue(this.config?.value ?? this.searchTerm);\r\n    if (this.searchType === SearchType.AUTO && this.searchControl) {\r\n      fromEvent(this.searchControl?.nativeElement, 'keyup')\r\n        .pipe(\r\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n          map((event: any) => {\r\n            return event.target.value;\r\n          }),\r\n          filter(\r\n            (res) => res.length >= this.minCharacterToSearch || res.length === 0\r\n          ),\r\n          debounceTime(this.searchInfo.autocomplete.debounceTime),\r\n          distinctUntilChanged()\r\n        )\r\n        .pipe(takeUntil(this.destroy$))\r\n        .subscribe((text: string) => {\r\n          this.searchValue.emit(text);\r\n        });\r\n    } else if (this.searchType === SearchType.ON_CLICK) {\r\n      fromEvent<KeyboardEvent>(this.searchControl?.nativeElement, 'keyup')\r\n        .pipe(\r\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n          filter(\r\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n            (e: any) =>\r\n              e.key === 'Enter' &&\r\n              (e?.target?.value?.length >= this.minCharacterToSearch ||\r\n                e?.target?.value?.length === 0)\r\n          ),\r\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n          map((event: any) => {\r\n            return event?.target?.value;\r\n          }),\r\n          debounceTime(this.searchInfo.autocomplete.debounceTime)\r\n        )\r\n        .pipe(takeUntil(this.destroy$))\r\n        .subscribe((text: string) => {\r\n          if (!this.isSearchValueEmitted) this.searchValue.emit(text);\r\n          this.isSearchValueEmitted = false;\r\n        });\r\n    }\r\n    this.cd.detectChanges();\r\n  }\r\n\r\n  /**\r\n   * Stops typing keystrokes from bubbling up to a parent control (such as an\r\n   * Angular Material `mat-select`) that would otherwise consume them. This is\r\n   * required when the search input is rendered inside a `mat-select` dropdown,\r\n   * where the space bar activates the highlighted option instead of typing a\r\n   * space, and letter keys trigger the built-in typeahead. Navigation and\r\n   * dismissal keys (Arrow keys, Enter, Escape, Tab) are allowed to propagate so\r\n   * the parent dropdown keeps its keyboard behaviour.\r\n   * @param {KeyboardEvent} event - The keydown event raised by the search input.\r\n   * @memberof SearchComponent\r\n   */\r\n  onSearchKeyDown(event: KeyboardEvent): void {\r\n    const propagatableKeys = [\r\n      'ArrowUp',\r\n      'ArrowDown',\r\n      'ArrowLeft',\r\n      'ArrowRight',\r\n      'Enter',\r\n      'Escape',\r\n      'Tab',\r\n    ];\r\n    if (!propagatableKeys.includes(event.key)) {\r\n      event.stopPropagation();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Validates email based on defined validation patterns\r\n   * @param {string} email\r\n   * @return {boolean}\r\n   * @memberof SearchComponent\r\n   */\r\n  isValidateEmail(email: string): boolean {\r\n    const regularExpression = ValidationPatterns.email;\r\n    return regularExpression.test(String(email).toLowerCase());\r\n  }\r\n\r\n  /**\r\n   * Clears search response on change of form search control value\r\n   * @memberof SearchComponent\r\n   */\r\n  onChange(): void {\r\n    this.searchResponse = '';\r\n  }\r\n\r\n  /**\r\n   * Clears search response and emits searched value on search input change\r\n   * @memberof SearchComponent\r\n   */\r\n  onSearchInputChange(): void {\r\n    this.isSearchValueEmitted = false;\r\n    if (this.group.get(this.config.controlName)?.value === '') {\r\n      this.searchValue.emit(this.group.get(this.config.controlName)?.value);\r\n    }\r\n    if (this.searchTerm.length === 0) {\r\n      this.searchResponse = '';\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Emits the searchValue event along with the searched term while clicking on the search icon\r\n   * @memberof SearchComponent\r\n   */\r\n  onSearchClick(): void {\r\n    const searchTextValue = this.group.get(this.config.controlName)?.value;\r\n    if (\r\n      searchTextValue?.length >= this.minCharacterToSearch ||\r\n      searchTextValue?.length === 0\r\n    ) {\r\n      this.isSearchValueEmitted = true;\r\n      this.searchValue.emit(searchTextValue);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n   * @memberof SearchComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n}\r\n","<div\r\n  [formGroup]=\"group\"\r\n  class=\"ieeesa-search-field\"\r\n  *ngIf=\"group\"\r\n  [ngClass]=\"\r\n    config.isLabelAlignedLeft\r\n      ? 'ieeesa-search-field__label-left'\r\n      : 'ieeesa-search-field__label-top'\r\n  \"\r\n>\r\n  <mat-label class=\"ieeesa-body-sm-14 ieeesa-search-field__label\"\r\n    >{{ config.label }}</mat-label\r\n  >\r\n  <mat-form-field appearance=\"outline\">\r\n    <span class=\"ieeesa-search-field__content ieeesa-body-md-16\">\r\n      <input\r\n        matInput\r\n        autocomplete=\"off\"\r\n        [type]=\"searchType\"\r\n        [formControlName]=\"config.controlName\"\r\n        [placeholder]=\"placeholderLabel\"\r\n        [attr.aria-label]=\"config.ariaLabel\"\r\n        [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n        (change)=\"onChange()\"\r\n        (input)=\"onSearchInputChange()\"\r\n        (keydown)=\"onSearchKeyDown($event)\"\r\n        bindon-ngModel=\"searchTerm\"\r\n        #searchControl\r\n      />\r\n      <button\r\n        mat-button\r\n        (click)=\"onSearchClick()\"\r\n        type=\"button\"\r\n        [attr.aria-label]=\"searchInfo?.ariaLabel?.search\"\r\n        class=\"ieeesa-search-field__button\"\r\n      >\r\n      <svg\r\n    class=\"ieeesa-search-field__search-icon\"\r\n  >\r\n    <use [attr.xlink:href]=\"searchInfo?.search?.searchIcon\"></use>\r\n  </svg>\r\n      </button>\r\n    </span>\r\n  </mat-form-field>\r\n  <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n  <ieeesa-form-support-text\r\n    [formGroup]=\"group\"\r\n    [config]=\"config\"\r\n  ></ieeesa-form-support-text>\r\n</div>\r\n","import {\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  OnInit,\r\n  AfterViewInit,\r\n  OnDestroy,\r\n  ViewChildren,\r\n  QueryList,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport {\r\n  MAT_SELECT_CONFIG,\r\n  MAT_SELECT_SCROLL_STRATEGY,\r\n  MatSelectModule,\r\n} from '@angular/material/select';\r\nimport { Overlay } from '@angular/cdk/overlay';\r\nimport { SelectOption } from '@ieeesa-npm/models';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { SearchType } from '../../models/search.model';\r\nimport { SearchComponent } from '../../components/search/search.component';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport * as dropdownInfo from '../../assets/constants.json';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\nimport { FormSupportTextComponent } from '../form-support-text/form-support-text.component';\r\nimport { SelectOpenedState } from '../../models/select-opened-state.model';\r\n\r\n/**\r\n * Component implementation supports select type of form filed and select type is configurable to support single selection or multi-selection with multilevel or single level.\r\n * @export\r\n * @class SelectComponent\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-select',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    SearchComponent,\r\n    ReactiveFormsModule,\r\n    FormErrorComponent,\r\n    MatFormFieldModule,\r\n    MatInputModule,\r\n    MatIconModule,\r\n    MatSelectModule,\r\n    FormSupportTextComponent,\r\n  ],\r\n  providers: [\r\n    {\r\n      provide: MAT_SELECT_CONFIG,\r\n      useValue: { overlayPanelClass: 'ieeesa-select-overlay-pane' },\r\n    },\r\n    {\r\n      provide: MAT_SELECT_SCROLL_STRATEGY,\r\n      useFactory: (overlay: Overlay) => () =>\r\n        overlay.scrollStrategies.reposition(),\r\n      deps: [Overlay],\r\n    },\r\n  ],\r\n  templateUrl: './select.component.html',\r\n  styleUrls: ['./select.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SelectComponent implements OnInit, AfterViewInit, OnDestroy {\r\n  @ViewChildren(SearchComponent)\r\n  formFields!: QueryList<SearchComponent>;\r\n  group!: FormGroup;\r\n  config!: FieldConfig;\r\n  arrowDirection = false;\r\n  searchType = SearchType.AUTO;\r\n  sortedOptions!: SelectOption[];\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  dropdownInfo: any = dropdownInfo;\r\n  private _dropdownOptions!: SelectOption[];\r\n  private _selectedOptions!: SelectOption | SelectOption[];\r\n  private _isSortNeeded = true;\r\n  private unsortedDropdownOptions!: SelectOption[];\r\n  private formOverlayScrollContainer?: HTMLElement;\r\n  private readonly overlayWheelListener = (event: WheelEvent): void => {\r\n    const target = event.target as Element | null;\r\n    if (target?.closest('.cdk-overlay-pane')) return;\r\n\r\n    const formBody = this.formOverlayScrollContainer;\r\n    if (!formBody || formBody.scrollHeight <= formBody.clientHeight) return;\r\n\r\n    formBody.scrollTop += event.deltaY;\r\n    formBody.scrollLeft += event.deltaX;\r\n    event.preventDefault();\r\n  };\r\n  /**\r\n   * Takes isSortNeeded as input to check if the passed options are sorted or not.\r\n   * @memberof SelectComponent\r\n   */\r\n  @Input()\r\n  set isSortNeeded(value: boolean) {\r\n    this._isSortNeeded = value;\r\n    if (!value && this.unsortedDropdownOptions)\r\n      this._dropdownOptions = this.unsortedDropdownOptions;\r\n  }\r\n  get isSortNeeded(): boolean {\r\n    return this._isSortNeeded;\r\n  }\r\n  /**\r\n   * Sets the dropdown options for selection.\r\n   * @memberof SelectComponent\r\n   */\r\n  @Input()\r\n  set dropdownOptions(value: SelectOption[]) {\r\n    if (value) this.unsortedDropdownOptions = [...value];\r\n    if (this.isSortNeeded && Array.isArray(value)) {\r\n      this._dropdownOptions = this.arraySorting(value);\r\n    } else {\r\n      this._dropdownOptions = value;\r\n    }\r\n  }\r\n  get dropdownOptions(): SelectOption[] {\r\n    return this._dropdownOptions;\r\n  }\r\n  /**\r\n   * Sets the selected option\r\n   * @memberof SelectComponent\r\n   */\r\n  @Input()\r\n  set selectedOptions(value: SelectOption | SelectOption[]) {\r\n    if (Array.isArray(value)) {\r\n      this._selectedOptions = this.arraySorting(value);\r\n    } else {\r\n      this._selectedOptions = value;\r\n    }\r\n\r\n    if (this.config?.controlName && this.group) {\r\n      this.group.get(this.config.controlName)?.setValue(this._selectedOptions);\r\n    }\r\n  }\r\n  get selectedOptions(): SelectOption | SelectOption[] {\r\n    return this._selectedOptions;\r\n  }\r\n  @Input() formControlName = 'select';\r\n  @Input() isMultiLevel = false;\r\n  @Input() isLabelAlignedLeft = false;\r\n  @Input() selectLabel = '';\r\n  @Input() isMultiSelect = false;\r\n  @Input() isDisabled = false;\r\n  @Input() isSearch = false;\r\n  @Input() placeholderText = this.dropdownInfo.dropdown.placeholderText;\r\n  @Output() optionSelected = new EventEmitter<SelectOption>();\r\n  @Output() optionSearched = new EventEmitter<string>();\r\n  @Output() dropdownOpenedChange = new EventEmitter<SelectOpenedState>();\r\n\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private formUtilityService: FormUtilityService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private elementRef: ElementRef<HTMLElement> // eslint-disable-next-line no-empty-function\r\n  ) {}\r\n\r\n  /**\r\n   * Initializes components instance properties from config if its defined otherwise creates form group and config.\r\n   * @memberof SelectComponent\r\n   */\r\n  ngOnInit(): void {\r\n    this.updateArrowDirection(false);\r\n    this.group =\r\n      this.group ?? this.formUtilityService.getFormGroup(this.formControlName);\r\n    this.config =\r\n      this.config ??\r\n      this.formUtilityService.getFormFieldConfig(\r\n        this.formControlName,\r\n        FormControlType.SELECT\r\n      );\r\n    if (this.config) {\r\n      this.isMultiSelect = this.config.isMultiSelect ?? false;\r\n      this.dropdownOptions =\r\n        this.config?.dropdownOptions ?? this.dropdownOptions;\r\n      this.selectedOptions = this.selectedOptions ?? this.config?.value;\r\n      this.selectLabel = this.config?.label ?? this.selectLabel;\r\n      this.placeholderText = this.config?.placeholder ?? this.placeholderText;\r\n      this.isMultiSelect = this.config?.isMultiSelect ?? this.isMultiSelect;\r\n      this.isDisabled = this.config?.disabled ?? this.isDisabled;\r\n      this.searchType = this.config?.searchType ?? this.searchType;\r\n      this.isSortNeeded = this.config?.isSortNeeded ?? this.isSortNeeded;\r\n      this.isSearch = this.config?.isSearch ?? this.isSearch;\r\n    }\r\n    this.group.get(this.config.controlName)?.setValue(this.selectedOptions);\r\n  }\r\n\r\n  /**\r\n   * Emits selected option on changes the selected option.\r\n   * @param {SelectOption} event\r\n   * @memberof SelectComponent\r\n   */\r\n  onChange(event: SelectOption): void {\r\n    this.optionSelected.emit(event);\r\n  }\r\n\r\n  /**\r\n   * Sets the select dropdown arrow direction\r\n   * @param {boolean} opened\r\n   * @memberof SelectComponent\r\n   */\r\n  updateArrowDirection(opened: boolean): void {\r\n    this.arrowDirection = opened;\r\n    if (opened) {\r\n      this.prepareSelectOverlayPosition();\r\n    } else {\r\n      this.clearOverlayClipBounds();\r\n    }\r\n    this.dropdownOpenedChange.emit({\r\n      controlName: this.config?.controlName,\r\n      opened: opened,\r\n    });\r\n  }\r\n\r\n  prepareSelectOverlayPosition(): void {\r\n    this.setOverlayClipBounds();\r\n    setTimeout(() => {\r\n      const overlayPane = this.elementRef.nativeElement.ownerDocument\r\n        .querySelector('.ieeesa-select-overlay-pane');\r\n      if (!overlayPane) {\r\n        this.clearOverlayClipBounds();\r\n        return;\r\n      }\r\n\r\n      this.keepTopSelectPanelInsideFormBody();\r\n    }, 150);\r\n  }\r\n\r\n  /**\r\n   * Clears form overlay bounds when the component is destroyed while open.\r\n   * @memberof SelectComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.clearOverlayClipBounds();\r\n  }\r\n\r\n  private setOverlayClipBounds(): void {\r\n    const formBody = this.getFormOverlayScrollContainer();\r\n    const documentElement = this.elementRef.nativeElement.ownerDocument\r\n      .documentElement;\r\n    const viewportHeight =\r\n      this.elementRef.nativeElement.ownerDocument.defaultView?.innerHeight ?? 0;\r\n\r\n    if (!formBody || !viewportHeight) return;\r\n\r\n    const formBodyRect = formBody.getBoundingClientRect();\r\n    documentElement.style.setProperty(\r\n      '--ieeesa-form-overlay-clip-top',\r\n      `${Math.max(0, Math.floor(formBodyRect.top))}px`\r\n    );\r\n    documentElement.style.setProperty(\r\n      '--ieeesa-form-overlay-clip-bottom',\r\n      `${Math.max(0, viewportHeight - Math.ceil(formBodyRect.bottom))}px`\r\n    );\r\n    this.formOverlayScrollContainer = formBody;\r\n    this.elementRef.nativeElement.ownerDocument.addEventListener(\r\n      'wheel',\r\n      this.overlayWheelListener,\r\n      { capture: true, passive: false }\r\n    );\r\n    documentElement.classList.add('ieeesa-form-overlay-open');\r\n  }\r\n\r\n  private getFormOverlayScrollContainer(): HTMLElement | null {\r\n    const candidates = [\r\n      this.elementRef.nativeElement.closest('.ieeesa-dynamic-form__body'),\r\n      this.elementRef.nativeElement.closest('.ieeesa-stepper__content'),\r\n    ] as (HTMLElement | null)[];\r\n\r\n    return (\r\n      candidates.find((element) => {\r\n        if (!element) return false;\r\n\r\n        const overflowY = getComputedStyle(element).overflowY;\r\n        return (\r\n          (overflowY === 'auto' || overflowY === 'scroll') &&\r\n          element.scrollHeight > element.clientHeight\r\n        );\r\n      }) ??\r\n      candidates.find((element) => !!element) ??\r\n      null\r\n    );\r\n  }\r\n\r\n  private clearOverlayClipBounds(): void {\r\n    this.elementRef.nativeElement.ownerDocument.removeEventListener(\r\n      'wheel',\r\n      this.overlayWheelListener,\r\n      true\r\n    );\r\n    this.formOverlayScrollContainer = undefined;\r\n    const documentElement = this.elementRef.nativeElement.ownerDocument\r\n      .documentElement;\r\n    documentElement.classList.remove('ieeesa-form-overlay-open');\r\n    documentElement.style.removeProperty('--ieeesa-form-overlay-clip-top');\r\n    documentElement.style.removeProperty('--ieeesa-form-overlay-clip-bottom');\r\n    documentElement.style.removeProperty('--ieeesa-form-select-panel-top');\r\n    documentElement.style.removeProperty('--ieeesa-form-select-panel-max-height');\r\n    documentElement.classList.remove('ieeesa-form-top-select-open');\r\n  }\r\n\r\n  private keepTopSelectPanelInsideFormBody(): void {\r\n    const formBody = this.formOverlayScrollContainer;\r\n    const selectTrigger = this.elementRef.nativeElement.querySelector(\r\n      '.mat-mdc-select-trigger'\r\n    );\r\n    const overlayPane = this.elementRef.nativeElement.ownerDocument\r\n      .querySelector('.ieeesa-select-overlay-pane') as HTMLElement | null;\r\n    const selectPanel = overlayPane?.querySelector(\r\n      '.mat-mdc-select-panel'\r\n    ) as HTMLElement | null;\r\n\r\n    if (!formBody || !selectTrigger || !overlayPane || !selectPanel) return;\r\n\r\n    const formBodyRect = formBody.getBoundingClientRect();\r\n    const triggerRect = selectTrigger.getBoundingClientRect();\r\n    const triggerOffsetFromFormTop = triggerRect.top - formBodyRect.top;\r\n    const minimumSpaceBelow = 120;\r\n\r\n    if (\r\n      !overlayPane.classList.contains('mat-mdc-select-panel-above') ||\r\n      triggerOffsetFromFormTop > minimumSpaceBelow\r\n    ) {\r\n      return;\r\n    }\r\n\r\n    const top = triggerRect.bottom + 4;\r\n    const maxHeight = Math.max(\r\n      96,\r\n      Math.floor(formBodyRect.bottom - top - 8)\r\n    );\r\n    const documentElement = this.elementRef.nativeElement.ownerDocument\r\n      .documentElement;\r\n\r\n    overlayPane.style.top = `${Math.round(top)}px`;\r\n    overlayPane.style.bottom = 'auto';\r\n    selectPanel.style.maxHeight = `${maxHeight}px`;\r\n    documentElement.style.setProperty(\r\n      '--ieeesa-form-select-panel-top',\r\n      `${Math.round(top)}px`\r\n    );\r\n    documentElement.style.setProperty(\r\n      '--ieeesa-form-select-panel-max-height',\r\n      `${maxHeight}px`\r\n    );\r\n    documentElement.classList.add('ieeesa-form-top-select-open');\r\n  }\r\n\r\n  /**\r\n   * Takes the index and the current option as arguments and needs to return the unique identifier for this option.\r\n   * @param {number} index\r\n   * @param {SelectOption} option\r\n   * @return {(number | string)}\r\n   * @memberof SelectComponent\r\n   */\r\n  trackByFn(index: number, option: SelectOption): number | string {\r\n    return option.id;\r\n  }\r\n\r\n  /**\r\n   * Emits searched options on filtering options in select dropdown\r\n   * @param {string} searchText\r\n   * @memberof SelectComponent\r\n   */\r\n  onOptionSearch(searchText: string) {\r\n    this.optionSearched.emit(searchText);\r\n  }\r\n\r\n  /**\r\n   * Compares the two passed options\r\n   * @param {any} option1\r\n   * @param {any} option2\r\n   * @return {boolean}\r\n   * @memberof SelectComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  comparer(option1: any, option2: any): boolean {\r\n    return option1 && option2 ? option1.id === option2.id : option1 === option2;\r\n  }\r\n\r\n  /**\r\n   * Sorts the options\r\n   * @memberof SelectComponent\r\n   */\r\n  ngAfterViewInit(): void {\r\n    if (this.isSortNeeded && Array.isArray(this.dropdownOptions)) {\r\n      this.dropdownOptions = this.arraySorting(this.dropdownOptions);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Sorts the options by using arraySorting method\r\n   * @memberof SelectComponent\r\n   */\r\n  sortOptions(): void {\r\n    if (this.isSortNeeded && Array.isArray(this.dropdownOptions)) {\r\n      this.sortedOptions = this.arraySorting(this.dropdownOptions);\r\n    } else {\r\n      this.sortedOptions = this.dropdownOptions;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Utility method to sort dropdown options in ascending order.\r\n   * @param {SelectOption[]} list\r\n   * @return {SelectOption[]}\r\n   * @memberof SelectComponent\r\n   */\r\n  arraySorting(list: SelectOption[]): SelectOption[] {\r\n    const clonedValue = [...list];\r\n    const sort = clonedValue.sort((a, b) => {\r\n      if (a.name.toLowerCase() === b.name.toLowerCase()) return 0;\r\n      if (a.name.toLowerCase() === 'all') return -1;\r\n      if (b.name.toLowerCase() === 'all') return 1;\r\n      if (a.name.toLowerCase() < b.name.toLowerCase()) return -1;\r\n      if (a.name.toLowerCase() > b.name.toLowerCase()) return 1;\r\n      return 0;\r\n    });\r\n    return sort;\r\n  }\r\n}\r\n","<div\r\n  [formGroup]=\"group\"\r\n  class=\"ieeesa-select-field\"\r\n  *ngIf=\"group\"\r\n  [ngClass]=\"\r\n    isLabelAlignedLeft\r\n      ? 'ieeesa-select-field__label-left'\r\n      : 'ieeesa-select-field__label-top'\r\n  \"\r\n>\r\n  <mat-label class=\"ieeesa-body-sm-14 ieeesa-select-field__label\">{{\r\n    selectLabel\r\n  }}</mat-label>\r\n  <mat-form-field\r\n    [ngClass]=\"\r\n      arrowDirection\r\n        ? 'ieeesa-select-field__arrow-up'\r\n        : 'ieeesa-select-field__arrow-down'\r\n    \"\r\n  >\r\n    <mat-select\r\n      disableOptionCentering\r\n      *ngIf=\"isMultiSelect\"\r\n      (click)=\"prepareSelectOverlayPosition()\"\r\n      (openedChange)=\"updateArrowDirection($event)\"\r\n      (selectionChange)=\"onChange($event.value)\"\r\n      [formControlName]=\"config.controlName\"\r\n      [multiple]=\"isMultiSelect\"\r\n      [disabled]=\"isDisabled\"\r\n      [aria-label]=\"config.ariaLabel ?? ''\"\r\n      [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n      [placeholder]=\"placeholderText\"\r\n      [compareWith]=\"comparer\"\r\n    >\r\n      <ieeesa-search\r\n        *ngIf=\"isSearch && arrowDirection\"\r\n        [searchType]=\"searchType\"\r\n        (searchValue)=\"onOptionSearch($event)\"\r\n      ></ieeesa-search>\r\n      <ng-container\r\n        *ngIf=\"!isMultiLevel\"\r\n        [ngTemplateOutlet]=\"dropdownOptionsTemplateRef\"\r\n        [ngTemplateOutletContext]=\"{ data: dropdownOptions }\"\r\n      >\r\n      </ng-container>\r\n      <ng-container *ngIf=\"isMultiLevel\">\r\n        <mat-optgroup\r\n          *ngFor=\"let option of dropdownOptions; trackBy: trackByFn\"\r\n          [label]=\"option.name\"\r\n        >\r\n          <ng-container\r\n            [ngTemplateOutlet]=\"dropdownOptionsTemplateRef\"\r\n            [ngTemplateOutletContext]=\"{ data: option.option_groups }\"\r\n          >\r\n          </ng-container>\r\n        </mat-optgroup>\r\n      </ng-container>\r\n      <ng-template #dropdownOptionsTemplateRef let-options=\"data\">\r\n        <mat-option\r\n          *ngFor=\"let option of options; trackBy: trackByFn\"\r\n          [value]=\"option\"\r\n        >\r\n          {{ option.name }}\r\n        </mat-option>\r\n      </ng-template>\r\n    </mat-select>\r\n\r\n    <mat-select\r\n      disableOptionCentering\r\n      [compareWith]=\"comparer\"\r\n      *ngIf=\"!isMultiSelect\"\r\n      (click)=\"prepareSelectOverlayPosition()\"\r\n      [multiple]=\"isMultiSelect\"\r\n      (openedChange)=\"updateArrowDirection($event)\"\r\n      (selectionChange)=\"onChange($event.value)\"\r\n      [formControlName]=\"config.controlName\"\r\n      [disabled]=\"isDisabled\"\r\n      [aria-label]=\"config.ariaLabel ?? ''\"\r\n      [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n      [placeholder]=\"placeholderText\"\r\n    >\r\n      <ieeesa-search\r\n        *ngIf=\"isSearch && arrowDirection\"\r\n        [searchType]=\"searchType\"\r\n        (searchValue)=\"onOptionSearch($event)\"\r\n      ></ieeesa-search>\r\n      <ng-container\r\n        *ngIf=\"!isMultiLevel\"\r\n        [ngTemplateOutlet]=\"dropdownOptionsTemplateRef\"\r\n        [ngTemplateOutletContext]=\"{ data: dropdownOptions }\"\r\n      >\r\n      </ng-container>\r\n      <ng-container *ngIf=\"isMultiLevel\">\r\n        <mat-optgroup\r\n          *ngFor=\"let option of dropdownOptions; trackBy: trackByFn\"\r\n          [label]=\"option.name\"\r\n        >\r\n          <ng-container\r\n            [ngTemplateOutlet]=\"dropdownOptionsTemplateRef\"\r\n            [ngTemplateOutletContext]=\"{ data: option.option_groups }\"\r\n          >\r\n          </ng-container>\r\n        </mat-optgroup>\r\n      </ng-container>\r\n      <ng-template #dropdownOptionsTemplateRef let-options=\"data\">\r\n        <mat-option\r\n          *ngFor=\"let option of options; trackBy: trackByFn\"\r\n          [value]=\"option\"\r\n        >\r\n          {{ option.name }}\r\n        </mat-option>\r\n      </ng-template>\r\n    </mat-select>\r\n  </mat-form-field>\r\n  <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n  <ieeesa-form-support-text\r\n    [formGroup]=\"group\"\r\n    [config]=\"config\"\r\n  ></ieeesa-form-support-text>\r\n</div>\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport * as constantsInfo from '../../assets/constants.json';\r\nimport { TextFieldModule } from '@angular/cdk/text-field';\r\nimport { FormSupportTextComponent } from '../form-support-text/form-support-text.component';\r\nimport { LinkEventEmitType } from '../../models/event-emit-type.model';\r\n\r\n@Component({\r\n  selector: 'ieeesa-text-area',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    FormErrorComponent,\r\n    MatFormFieldModule,\r\n    MatInputModule,\r\n    TextFieldModule,\r\n    FormSupportTextComponent,\r\n  ],\r\n  templateUrl: './text-area.component.html',\r\n  styleUrls: ['./text-area.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TextAreaComponent implements OnInit, FormField {\r\n  config!: FieldConfig;\r\n  group!: FormGroup;\r\n  @Input() remainingCharsLeftMessage!: string;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  constants: any = constantsInfo;\r\n  leftCharCount!: number;\r\n  @Output() supportTextLinkClick = new EventEmitter<LinkEventEmitType>();\r\n  @Output() inputValueChange = new EventEmitter<string>();\r\n  /**\r\n   * Initializes the leftCharCount and remainingCharsLeftMessage\r\n   * @memberof TextAreaComponent\r\n   */\r\n  ngOnInit(): void {\r\n    this.remainingCharsLeftMessage =\r\n      this.remainingCharsLeftMessage ??\r\n      this.config?.remainingCharsLeftMessage ??\r\n      this.constants?.textarea?.leftCharacters;\r\n    this.leftCharCount =\r\n      this.config?.maxCharCount ?? this.config?.maxRangeLimit ?? 0;\r\n    if (this.config?.value && this.config?.maxCharCount) {\r\n      this.leftCharCount =\r\n        this.config?.maxCharCount - this.config?.value?.length;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Calculates the remaining characters count on change of form control value and sets the remaining count.\r\n   * @memberof TextAreaComponent\r\n   */\r\n  onChange(event: Event): void {\r\n    let count = 0;\r\n    if (this.config?.maxCharCount) {\r\n      count =\r\n        this.config?.maxCharCount -\r\n        (event.target as HTMLInputElement)?.value?.length;\r\n    } else if (\r\n      this.config?.maxRangeLimit &&\r\n      (this.group?.get(this.config?.controlName)?.valid ||\r\n        (event.target as HTMLInputElement)?.value === '')\r\n    ) {\r\n      const inputRanges = (event.target as HTMLInputElement)?.value?.split(',');\r\n      const validRangesCount: number = inputRanges?.filter(\r\n        (input: string) => input !== ''\r\n      )?.length;\r\n      count = this.config.maxRangeLimit - validRangesCount;\r\n    }\r\n    this.leftCharCount = count > 0 ? count : 0;\r\n    this.inputValueChange.emit((event.target as HTMLInputElement)?.value);\r\n  }\r\n  /**\r\n   * Emits supportTextLinkClick event on click of form support text link\r\n   * @param {LinkEventEmitType} event\r\n   * @memberof TextAreaComponent\r\n   */\r\n  onSupportTextLinkClick(event: LinkEventEmitType) {\r\n    this.supportTextLinkClick.emit(event);\r\n  }\r\n}\r\n","<div\r\n  class=\"ieeesa-text-area-field\"\r\n  [formGroup]=\"group\"\r\n  [ngClass]=\"\r\n    config.isLabelAlignedLeft\r\n      ? 'ieeesa-text-area-field__label-left'\r\n      : 'ieeesa-text-area-field__label-top'\r\n  \"\r\n>\r\n  <mat-label class=\"ieeesa-body-sm-14 ieeesa-text-area-field__label\">\r\n    <span\r\n      class=\"d-flex justify-content-between\"\r\n      *ngIf=\"config?.maxCharCount || config?.maxRangeLimit\"\r\n    >\r\n      <span class=\"ieeesa-text-area-field__label-text\">\r\n        {{ config.label }}\r\n      </span>\r\n      <span>\r\n        <span class=\"ieeesa-text-area-field__left-char-count\">{{\r\n          leftCharCount\r\n        }}</span\r\n        ><span class=\"ieeesa-text-area-field__left-char-text\">{{\r\n          remainingCharsLeftMessage\r\n        }}</span>\r\n      </span>\r\n    </span>\r\n    <ng-container *ngIf=\"!config?.maxCharCount && !config?.maxRangeLimit\">\r\n      {{ config.label }}\r\n    </ng-container>\r\n  </mat-label>\r\n  <mat-form-field appearance=\"fill\">\r\n    <textarea\r\n      [name]=\"config.name ?? ''\"\r\n      cdkTextareaAutosize\r\n      matInput\r\n      [attr.aria-label]=\"config.ariaLabel ?? ''\"\r\n      [attr.aria-multiline]=\"config?.ariaMultiline ?? true\"\r\n      [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n      [placeholder]=\"config.placeholder ?? ''\"\r\n      [formControlName]=\"config.controlName\"\r\n      [maxlength]=\"config.maxLength ?? constants.textarea.maxLengthDefault\"\r\n      [readonly]=\"config.isReadonly\"\r\n      (input)=\"onChange($event)\"\r\n      class=\"ieeesa-text-area-field__content ieeesa-body-lg-18 {{\r\n        config.controlName\r\n      }}\"\r\n      [ngClass]=\"\r\n        config.isResize\r\n          ? 'ieeesa-text-area-field__resize'\r\n          : 'ieeesa-text-area-field__no-resize'\r\n      \"\r\n    >\r\n  {{ config.value }}</textarea\r\n    >\r\n  </mat-form-field>\r\n  <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n  <ieeesa-form-support-text\r\n    [formGroup]=\"group\"\r\n    [config]=\"config\"\r\n    (supportTextLinkClick)=\"onSupportTextLinkClick($event)\"\r\n  ></ieeesa-form-support-text>\r\n</div>\r\n","import { Component, EventEmitter, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport * as buttonActionsInfo from '../../assets/constants.json';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\n@Component({\r\n  selector: 'ieeesa-add-form-group',\r\n  standalone: true,\r\n  imports: [CommonModule, ReactiveFormsModule, MatInputModule, MatButtonModule],\r\n  templateUrl: './add-form-group.component.html',\r\n  styleUrls: ['./add-form-group.component.scss'],\r\n})\r\nexport class AddFormGroupComponent implements FormField {\r\n  config!: FieldConfig;\r\n  group!: FormGroup;\r\n  @Output() addFormGroup = new EventEmitter<Event>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  buttonActionsInfo: any = buttonActionsInfo;\r\n\r\n  /**\r\n   * Emits the addFormGroup event on click of add form group button.\r\n   * @param {Event} event\r\n   * @memberof AddFormGroupComponent\r\n   */\r\n  onAddFormGroup(event: Event): void {\r\n    this.addFormGroup.emit(event);\r\n  }\r\n}\r\n","<ng-container class=\"ieeesa-add-form-group\" [formGroup]=\"group\">\r\n  <mat-label class=\"ieeesa-body-sm-14 ieeesa-add-form-group__label\">{{\r\n    config?.label\r\n  }}</mat-label>\r\n  <button\r\n    [disabled]=\"config?.disabled\"\r\n    type=\"button\"\r\n    mat-button\r\n    matSuffix\r\n    [attr.aria-label]=\"buttonActionsInfo?.ariaLabel?.addFormGroup\"\r\n    class=\"mat-tertiary-button ieeesa-add-form-group__action\"\r\n    (click)=\"onAddFormGroup($event)\"\r\n  >\r\n    <i class=\"fa-solid fa-plus\"></i>\r\n    {{ buttonActionsInfo?.button?.add }}\r\n  </button>\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  OnDestroy,\r\n  Output,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport { TextFieldModule } from '@angular/cdk/text-field';\r\nimport { FormSupportTextComponent } from '../form-support-text/form-support-text.component';\r\nimport * as constantsInfo from '../../assets/constants.json';\r\nimport { SelectedTime } from '../../models/selected-time.model';\r\n@Component({\r\n  selector: 'ieeesa-time-picker',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    MatFormFieldModule,\r\n    MatIconModule,\r\n    MatInputModule,\r\n    NgxMaterialTimepickerModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    FormErrorComponent,\r\n    TextFieldModule,\r\n    FormSupportTextComponent,\r\n  ],\r\n  templateUrl: './time-picker.component.html',\r\n  styleUrls: ['./time-picker.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TimePickerComponent implements OnDestroy {\r\n  config!: FieldConfig;\r\n  group!: FormGroup;\r\n  @Output() formTimeSelected = new EventEmitter<SelectedTime>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  constants: any = constantsInfo;\r\n  @ViewChild('picker') picker!: ElementRef;\r\n\r\n  private formOverlayScrollContainer?: HTMLElement;\r\n  private readonly overlayWheelListener = (event: WheelEvent): void => {\r\n    const target = event.target as Element | null;\r\n    if (target?.closest('.timepicker-overlay')) return;\r\n\r\n    const formBody = this.formOverlayScrollContainer;\r\n    if (!formBody || formBody.scrollHeight <= formBody.clientHeight) return;\r\n\r\n    formBody.scrollTop += event.deltaY;\r\n    formBody.scrollLeft += event.deltaX;\r\n    event.preventDefault();\r\n  };\r\n\r\n  constructor(private elementRef: ElementRef<HTMLElement>) {}\r\n\r\n  /**\r\n   * Handles form time selection event\r\n   * @type {void}\r\n   * @memberof TimePickerComponent\r\n   */\r\n  onTimeSelection(time: string): void {\r\n    this.group.markAsDirty();\r\n    this.formTimeSelected.emit({\r\n      time: time,\r\n      controlName: this.config.controlName,\r\n    });\r\n  }\r\n\r\n  onTimePickerOpen(): void {\r\n    this.setOverlayClipBounds();\r\n  }\r\n\r\n  onTimePickerClose(): void {\r\n    this.clearOverlayClipBounds();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.clearOverlayClipBounds();\r\n  }\r\n\r\n  private setOverlayClipBounds(): void {\r\n    const formBody = this.getFormOverlayScrollContainer();\r\n    const documentElement = this.elementRef.nativeElement.ownerDocument\r\n      .documentElement;\r\n    const viewportHeight =\r\n      this.elementRef.nativeElement.ownerDocument.defaultView?.innerHeight ?? 0;\r\n\r\n    if (!formBody || !viewportHeight) return;\r\n\r\n    const formBodyRect = formBody.getBoundingClientRect();\r\n    documentElement.style.setProperty(\r\n      '--ieeesa-form-overlay-clip-top',\r\n      `${Math.max(0, Math.floor(formBodyRect.top))}px`\r\n    );\r\n    documentElement.style.setProperty(\r\n      '--ieeesa-form-overlay-clip-bottom',\r\n      `${Math.max(0, viewportHeight - Math.ceil(formBodyRect.bottom))}px`\r\n    );\r\n    this.formOverlayScrollContainer = formBody;\r\n    this.elementRef.nativeElement.ownerDocument.addEventListener(\r\n      'wheel',\r\n      this.overlayWheelListener,\r\n      { capture: true, passive: false }\r\n    );\r\n    documentElement.classList.add('ieeesa-form-overlay-open');\r\n  }\r\n\r\n  private getFormOverlayScrollContainer(): HTMLElement | null {\r\n    const candidates = [\r\n      this.elementRef.nativeElement.closest('.ieeesa-dynamic-form__body'),\r\n      this.elementRef.nativeElement.closest('.ieeesa-stepper__content'),\r\n    ] as (HTMLElement | null)[];\r\n\r\n    return (\r\n      candidates.find((element) => {\r\n        if (!element) return false;\r\n\r\n        const overflowY = getComputedStyle(element).overflowY;\r\n        return (\r\n          (overflowY === 'auto' || overflowY === 'scroll') &&\r\n          element.scrollHeight > element.clientHeight\r\n        );\r\n      }) ??\r\n      candidates.find((element) => !!element) ??\r\n      null\r\n    );\r\n  }\r\n\r\n  private clearOverlayClipBounds(): void {\r\n    this.elementRef.nativeElement.ownerDocument.removeEventListener(\r\n      'wheel',\r\n      this.overlayWheelListener,\r\n      true\r\n    );\r\n    this.formOverlayScrollContainer = undefined;\r\n    const documentElement = this.elementRef.nativeElement.ownerDocument\r\n      .documentElement;\r\n    documentElement.classList.remove('ieeesa-form-overlay-open');\r\n    documentElement.style.removeProperty('--ieeesa-form-overlay-clip-top');\r\n    documentElement.style.removeProperty('--ieeesa-form-overlay-clip-bottom');\r\n  }\r\n}\r\n","<div\r\n  class=\"ieeesa-time-picker-field\"\r\n  [formGroup]=\"group\"\r\n  [ngClass]=\"\r\n    config.isLabelAlignedLeft\r\n      ? 'ieeesa-time-picker-field__label-left'\r\n      : 'ieeesa-time-picker-field__label-top'\r\n  \"\r\n>\r\n  <mat-label class=\"ieeesa-body-sm-14 ieeesa-time-picker-field__label\">{{\r\n    config.label\r\n  }}</mat-label>\r\n  <mat-form-field appearance=\"fill\">\r\n    <input\r\n      matInput\r\n      [ngxTimepicker]=\"picker\"\r\n      [format]=\"\r\n        config?.is24HoursTimeFormat\r\n          ? config?.hour24\r\n          : constants?.timePicker?.defaultTimeFormat\r\n      \"\r\n      [attr.aria-label]=\"config.ariaLabel ?? ''\"\r\n      [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n      [placeholder]=\"config.placeholder ?? ''\"\r\n      [formControlName]=\"config.controlName\"\r\n      [readonly]=\"config.isReadonly\"\r\n      class=\"ieeesa-time-picker-field__content ieeesa-body-lg-18\"\r\n    />\r\n    <button\r\n      type=\"button\"\r\n      class=\"ieeesa-time-picker-field__toggle-icon\"\r\n      (click)=\"picker.open()\"\r\n      matSuffix\r\n      [attr.aria-label]=\"config.ariaLabel ?? ''\"\r\n    >\r\n      <svg ngxMaterialTimepickerToggleIcon>\r\n        <use [attr.xlink:href]=\"constants?.timePicker?.timePickerIcon\"></use>\r\n      </svg>\r\n    </button>\r\n    <ngx-material-timepicker\r\n      #picker\r\n      (timeSet)=\"onTimeSelection($event)\"\r\n      (opened)=\"onTimePickerOpen()\"\r\n      (closed)=\"onTimePickerClose()\"\r\n    ></ngx-material-timepicker>\r\n  </mat-form-field>\r\n  <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n  <ieeesa-form-support-text\r\n    [formGroup]=\"group\"\r\n    [config]=\"config\"\r\n  ></ieeesa-form-support-text>\r\n</div>\r\n","import {\r\n  AfterViewInit,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  MatSlideToggleChange,\r\n  MatSlideToggleModule,\r\n} from '@angular/material/slide-toggle';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormErrorComponent } from '../../components/form-error/form-error.component';\r\nimport { FormSupportTextComponent } from '../form-support-text/form-support-text.component';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { SlideToggleOption } from '../../models/slide-toggle-options.model';\r\n\r\n@Component({\r\n  selector: 'ieeesa-slide-toggle',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    MatSlideToggleModule,\r\n    FormErrorComponent,\r\n    FormSupportTextComponent,\r\n  ],\r\n  templateUrl: './slide-toggle.component.html',\r\n  styleUrls: ['./slide-toggle.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SlideToggleComponent implements OnInit, AfterViewInit {\r\n  config!: FieldConfig;\r\n  group!: FormGroup;\r\n  @Input() formControlName = 'slideToggle';\r\n  slideToggleOption!: SlideToggleOption;\r\n  /**\r\n   * Input property to get slide toggle options\r\n   * @memberof SlideToggleComponent\r\n   * @usageNotes const slideToggleOption = [{ id: 1, label: 'Change toggle', checked: true, disabled: false}]\r\n   */\r\n  @Input()\r\n  set slideToggle(value: SlideToggleOption) {\r\n    this.slideToggleOption = value;\r\n  }\r\n  get slideToggle(): SlideToggleOption {\r\n    return this.slideToggleOption;\r\n  }\r\n  @Input() isDisabled = false;\r\n  @Input() canShowIcon = false;\r\n  @Output() slideToggleChange: EventEmitter<SlideToggleOption> =\r\n    new EventEmitter<SlideToggleOption>();\r\n  @ViewChild('slideToggle', { read: ElementRef })\r\n  matSlideToggleElement!: ElementRef;\r\n  crossIconSVG =\r\n    'M10.333 3.205L9.62801 2.5L6.83301 5.295L4.03801 2.5L3.33301 3.205L6.12801 6L3.33301 8.795L4.03801 9.5L6.83301 6.705L9.62801 9.5L10.333 8.795L7.53801 6L10.333 3.205Z';\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private formUtilityService: FormUtilityService // eslint-disable-next-line no-empty-function\r\n  ) {}\r\n  /**\r\n   * On slide toggle sets slideToggleOption checked and emit slideToggleChange event emitter.\r\n   * @param {MatSlideToggleChange} toggle\r\n   * @memberof SlideToggleComponent\r\n   */\r\n  onSlideToggleChange(toggle: MatSlideToggleChange) {\r\n    if (this.slideToggleOption) {\r\n      this.slideToggleOption.checked = toggle?.checked;\r\n      this.slideToggleChange.emit(this.slideToggleOption);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Initiates component and set slideToggleOption.\r\n   * @memberof SlideToggleComponent\r\n   */\r\n  ngOnInit(): void {\r\n    this.config =\r\n      this.config ??\r\n      this.formUtilityService.getFormFieldConfig(\r\n        'slideToggle',\r\n        FormControlType.SLIDE_TOGGLE\r\n      );\r\n    this.group =\r\n      this.group ?? this.formUtilityService.getFormGroup('slideToggle');\r\n    this.slideToggleOption =\r\n      this.config?.slideToggleOption ?? this.slideToggleOption;\r\n    this.isDisabled = this.config?.disabled ?? this.isDisabled;\r\n  }\r\n  /**\r\n   * Updates the cross icon path for the off state of the slide toggle button.\r\n   * @memberof SlideToggleComponent\r\n   */\r\n  ngAfterViewInit(): void {\r\n    if (this.matSlideToggleElement && this.canShowIcon) {\r\n      this.matSlideToggleElement?.nativeElement\r\n        ?.querySelector('.mdc-switch__icon--off')\r\n        .firstChild.setAttribute('d', this.crossIconSVG);\r\n    }\r\n  }\r\n}\r\n","<div [formGroup]=\"group\" class=\"ieeesa-slide-toggle-field\" *ngIf=\"group\">\r\n  <mat-slide-toggle\r\n    [formControlName]=\"config.controlName\"\r\n    [aria-label]=\"config.ariaLabel ?? slideToggleOption.ariaLabel ?? ''\"\r\n    [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n    [checked]=\"slideToggleOption.checked\"\r\n    [disabled]=\"isDisabled\"\r\n    [(ngModel)]=\"slideToggleOption.checked\"\r\n    (change)=\"onSlideToggleChange($event)\"\r\n    [hideIcon]=\"!canShowIcon\"\r\n    #slideToggle\r\n    >{{ slideToggleOption?.label }}</mat-slide-toggle\r\n  >\r\n  <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n  <ieeesa-form-support-text\r\n    [formGroup]=\"group\"\r\n    [config]=\"config\"\r\n  ></ieeesa-form-support-text>\r\n</div>\r\n","import {\r\n  Directive,\r\n  EventEmitter,\r\n  HostBinding,\r\n  HostListener,\r\n  Input,\r\n  Output,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Directive, enables to drag and drop files on the predefined area and emits the event with dropped files to upload.\r\n * @export\r\n * @class FileUploadDirective\r\n */\r\n@Directive({\r\n  selector: '[ieeesaFileUpload]',\r\n  standalone: true,\r\n})\r\nexport class FileUploadDirective {\r\n  @Input() allowedFileTypes: string[] = [];\r\n  @Input() isMultiFileUpload = false;\r\n  @Output() fileDropped = new EventEmitter<File | FileList>();\r\n\r\n  /**\r\n   * Binds the 'multiple' attribute based on the value of allowMultiple property.\r\n   * @readonly\r\n   * @type {(string | null)}\r\n   * @memberof FileUploadDirective\r\n   */\r\n  @HostBinding('attr.multiple') get isMultiple(): string | null {\r\n    return this.isMultiFileUpload ? 'multiple' : null;\r\n  }\r\n  /**\r\n   * Host listener for 'dragover' event.\r\n   * Prevents default behavior and stops event propagation.\r\n   * @param {DragEvent} event\r\n   * @memberof FileUploadDirective\r\n   */\r\n  @HostListener('dragover', ['$event']) onDragOver(event: DragEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n  }\r\n\r\n  /**\r\n   * Host listener for 'dragleave' event.\r\n   * Prevents default behavior and stops event propagation.\r\n   * @param {DragEvent} event\r\n   * @memberof FileUploadDirective\r\n   */\r\n  @HostListener('dragleave', ['$event']) onDragLeave(event: DragEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n  }\r\n\r\n  /**\r\n   * Host listener for 'drop' event.\r\n   * Prevents default behavior, stops event propagation, and emits dropped files.\r\n   * @param {DragEvent} event -DragEvent object.\r\n   * @memberof FileUploadDirective\r\n   */\r\n  @HostListener('drop', ['$event']) onDrop(event: DragEvent): void {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    const files = event.dataTransfer?.files;\r\n    if (files && files.length > 0) {\r\n      this.fileDropped.emit(files);\r\n    }\r\n  }\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nexport enum AlignBrowsedFiles {\r\n  DEFAULT = 'default',\r\n  BOTTOM = 'bottom',\r\n}\r\n","import {\r\n  HttpBackend,\r\n  HttpClient,\r\n  HttpEvent,\r\n  HttpEventType,\r\n  HttpHeaders,\r\n} from '@angular/common/http';\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport {\r\n  AlertsService,\r\n  HttpService,\r\n  LoaderNotificationService,\r\n} from '@ieeesa-npm/utility';\r\nimport { AlertType } from '@ieeesa-npm/models';\r\nimport {\r\n  FileUploadPresignedUrl,\r\n  GetFileDownloadPresignedUrlByAttachmentIdPayload,\r\n  GetFileDownloadPresignedUrlByAttachmentIdResponse,\r\n  GetFileDownloadPresignedUrlPayload,\r\n  GetFileUploadPresignedUrlPayload,\r\n} from '../models/file-upload-presigned-url-res.model';\r\nimport {\r\n  catchError,\r\n  concatMap,\r\n  from,\r\n  last,\r\n  map,\r\n  Observable,\r\n  Subject,\r\n  take,\r\n  takeUntil,\r\n  tap,\r\n} from 'rxjs';\r\nimport * as constants from '../assets/constants.json';\r\nimport { FileUploadPayload } from '../models/file-upload-payload-model';\r\nimport {\r\n  FileAttachmentInfo,\r\n  GetFileUploadPresignedUrlsResponse,\r\n} from '../models/file-upload-response.model';\r\nimport { DeleteFileResponse } from '../models/file-info.model';\r\nimport { DownloadAttachment } from '../models/download-file.model';\r\n\r\n/**\r\n * This service interacts with the server to obtain pre-signed URLs for file upload and uploads files to Amazon S3.\r\n * @class FileUploadService\r\n */\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class FileUploadService implements OnDestroy {\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  constants = constants;\r\n  apiBaseUrl!: string;\r\n  fileByteArray: Uint8Array | undefined;\r\n  httpClient: HttpClient;\r\n  isFileUploading = false;\r\n  filesNameOfUploadFailed!: string[];\r\n  noOfFilesUploadedSuccessfully = 0;\r\n  uploadedFileName = '';\r\n\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    public httpService: HttpService,\r\n    handler: HttpBackend,\r\n    // eslint-disable-next-line no-unused-vars\r\n    public alertService: AlertsService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    public loaderNotificationService: LoaderNotificationService\r\n  ) {\r\n    this.httpClient = new HttpClient(handler);\r\n  }\r\n\r\n  /**\r\n   * Sets the base URL for API requests.\r\n   * @param {string} apiBaseUrl -API base URL.\r\n   * @memberof FileUploadService\r\n   */\r\n  setApiBaseUrl(apiBaseUrl: string) {\r\n    this.apiBaseUrl = apiBaseUrl;\r\n  }\r\n  /**\r\n   * Gets API base URL for API requests.\r\n   * @return {*}  {string}\r\n   * @memberof FileUploadService\r\n   */\r\n  getApiBaseUrl(): string {\r\n    return this.apiBaseUrl;\r\n  }\r\n  /**\r\n   * Retrieves presigned URL for uploading files to Amazon S3 bucket.\r\n   * @param {(File | FileList)} file\r\n   * @return {Observable<FileUploadPresignedUrl>}\r\n   * @memberof FileUploadService\r\n   */\r\n  getFileUploadPresignedUrl(\r\n    file: File | FileList,\r\n    appId: string\r\n  ): Observable<FileUploadPresignedUrl> {\r\n    let fileName = '';\r\n    if (Object.values(file).length) fileName = Object.values(file)[0].name;\r\n    else fileName = (file as File).name;\r\n    const fileUploadPresignedUrlPayload: GetFileUploadPresignedUrlPayload = {\r\n      payload: {\r\n        fileName: fileName,\r\n        tenantAppId: appId as string,\r\n      },\r\n    };\r\n    return this.httpService\r\n      .postData(\r\n        `${this.apiBaseUrl}/configurations/s3/uploadFileUrl`,\r\n        fileUploadPresignedUrlPayload\r\n      )\r\n      .pipe(\r\n        map((response) => {\r\n          return response;\r\n        }),\r\n        catchError((errorRes) => {\r\n          throw errorRes;\r\n        })\r\n      );\r\n  }\r\n  /**\r\n   * Gets pre-signed URL for the files to be uploaded in S3 bucket\r\n   * @param {FileUploadPayload} fileUploadPayload\r\n   * @param {string} fileUploadAPIPath\r\n   * @return {Observable<GetFileUploadPresignedUrlsResponse>}\r\n   * @memberof FileUploadService\r\n   */\r\n  getPreSignedURL(\r\n    fileUploadPayload: FileUploadPayload,\r\n    fileUploadAPIPath: string\r\n  ): Observable<GetFileUploadPresignedUrlsResponse> {\r\n    return this.httpService\r\n      .postData(`${this.apiBaseUrl}/${fileUploadAPIPath}`, fileUploadPayload)\r\n      .pipe(\r\n        map((response) => {\r\n          return response;\r\n        }),\r\n        catchError((errorRes) => {\r\n          throw errorRes;\r\n        })\r\n      );\r\n  }\r\n\r\n  /**\r\n   * Uploads file to AWS S3 using a pre-signed URL.\r\n   * @param {string} preSignedUrl\r\n   * @param files\r\n   * @param isMultipleFileUpload\r\n   * @return {Observable<any>} -Returns an observable that emits the response after uploading the file to S3.\r\n   * @memberof FileUploadService\r\n   */\r\n  uploadFileToS3(\r\n    preSignedUrl: FileAttachmentInfo[] | string,\r\n    files: File | FileList,\r\n    isMultipleFileUpload = false\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  ): Observable<any> {\r\n    this.loaderNotificationService.show();\r\n    const filesArray = [];\r\n    this.filesNameOfUploadFailed = [];\r\n    this.uploadedFileName = '';\r\n    if (isMultipleFileUpload) {\r\n      Object.values(files).forEach((file: File) => {\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        filesArray.push({\r\n          preSignedUrl: (preSignedUrl as FileAttachmentInfo[]).find(\r\n            (fileInfo: FileAttachmentInfo) =>\r\n              fileInfo.fileName === (file as File).name &&\r\n              fileInfo.errorMessage === null\r\n          )?.preSignedUrl,\r\n          fileObj: file as File,\r\n          fileType: (file as File).type,\r\n          fileSize: (file as File).size,\r\n        });\r\n      });\r\n    } else {\r\n      filesArray.push({\r\n        preSignedUrl: preSignedUrl as string,\r\n        fileObj: files as File,\r\n        fileType: (files as File).type,\r\n        fileSize: (files as File).size,\r\n      });\r\n    }\r\n    return from(filesArray).pipe(\r\n      concatMap((file) =>\r\n        this.httpCallToAWS(\r\n          file.preSignedUrl,\r\n          file.fileObj,\r\n          file.fileType,\r\n          file.fileSize\r\n        )\r\n      ),\r\n      take(filesArray.length)\r\n    );\r\n  }\r\n  /**\r\n   * Makes http call to AWS to upload file in S3 bucket\r\n   * @param {string} preSignedUrl\r\n   * @param {File} file\r\n   * @param {string} fileType\r\n   * @param {number} fileSize\r\n   * @return {*}  {Observable<any>}\r\n   * @memberof FileUploadService\r\n   */\r\n  httpCallToAWS(\r\n    preSignedUrl: string,\r\n    file: File,\r\n    fileType: string,\r\n    fileSize: number\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  ): Observable<any> {\r\n    const headers = new HttpHeaders();\r\n    headers.append('Content-Type', fileType?.toString());\r\n    headers.append('Content-Length', fileSize?.toString());\r\n    return this.httpClient\r\n      .put(preSignedUrl, file, {\r\n        reportProgress: true,\r\n        observe: 'events',\r\n        headers: headers,\r\n      })\r\n      .pipe(\r\n        takeUntil(this.destroy$),\r\n        map((event) => this.getEventMessage(event, file)),\r\n        tap((message) => this.showProgress(message)),\r\n        last(),\r\n        catchError((errorRes) => {\r\n          this.loaderNotificationService.hide();\r\n          throw errorRes;\r\n        })\r\n      );\r\n  }\r\n\r\n  /**\r\n   * Gets file upload progress.\r\n   * @param {*} message\r\n   * @memberof FileUploadService\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars, no-unused-vars, no-empty-function, @typescript-eslint/no-empty-function\r\n  showProgress(message: any) {}\r\n\r\n  /**\r\n   * Return distinct message for sent, upload progress, & response events.\r\n   * @param {HttpEvent<any>} event\r\n   * @param {(File | FileList)} file\r\n   * @return {*}\r\n   * @memberof FileUploadService\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  getEventMessage(event: HttpEvent<any>, file: File) {\r\n    let fileName = '';\r\n    let fileSize: number | string = 0;\r\n    fileName = (file as File).name;\r\n    fileSize = (file as File).size;\r\n    switch (event.type) {\r\n      case HttpEventType.Sent:\r\n        return `Uploading file \"${fileName}\" of size ${fileSize}.`;\r\n      case HttpEventType.UploadProgress:\r\n        // eslint-disable-next-line no-case-declarations\r\n        const percentDone = event?.total\r\n          ? Math.round((100 * event.loaded) / event.total)\r\n          : 0;\r\n        return `File \"${fileName}\" is ${percentDone}% uploaded.`;\r\n      case HttpEventType.Response:\r\n        this.loaderNotificationService.hide();\r\n        if (event.status === 200) {\r\n          this.noOfFilesUploadedSuccessfully++;\r\n          this.uploadedFileName = fileName;\r\n          return true;\r\n        }\r\n        this.filesNameOfUploadFailed.push(fileName);\r\n        return false;\r\n\r\n      default:\r\n        return `File \"${fileName}\" surprising upload event: ${event.type}.`;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Converts file to byte array.\r\n   * @param {File} file\r\n   * @memberof FileUploadService\r\n   */\r\n  convertFileToByteArray(file: File): void {\r\n    const reader = new FileReader();\r\n    reader.onloadend = () => {\r\n      const arrayBuffer = reader?.result as ArrayBuffer;\r\n      this.fileByteArray = new Uint8Array(arrayBuffer);\r\n    };\r\n    reader.onerror = () => {\r\n      this.alertService?.showMessage({\r\n        status: 'custom',\r\n        message: this.constants?.fileUpload?.message?.error?.ER1002,\r\n        alertType: AlertType?.ERROR,\r\n        isCloseNeeded: true,\r\n      });\r\n    };\r\n    reader.readAsArrayBuffer(file);\r\n  }\r\n\r\n  /**\r\n   * Resets file byte array format to undefined.\r\n   * @memberof FileUploadService\r\n   */\r\n  clearFileByteArray(): void {\r\n    this.fileByteArray = undefined;\r\n  }\r\n\r\n  /**\r\n   * Sets file upload status.\r\n   * @param {boolean} status\r\n   * @memberof FileUploadService\r\n   */\r\n  setFileUploadStatus(status: boolean): void {\r\n    this.isFileUploading = status;\r\n  }\r\n\r\n  /**\r\n   * Returns file upload status.\r\n   * @return {boolean}\r\n   * @memberof FileUploadService\r\n   */\r\n  getFileUploadStatus(): boolean {\r\n    return this.isFileUploading;\r\n  }\r\n\r\n  /**\r\n   * Retrieves presigned URL for downloading files to Amazon S3 bucket.\r\n   * @param {(File | FileList)} file\r\n   * @return {Observable<string>}\r\n   * @memberof FileUploadService\r\n   */\r\n  getFileDownloadPresignedUrls(\r\n    file: File | FileList | string | DownloadAttachment,\r\n    isPublicAPI?: boolean,\r\n    domainUrl?: string,\r\n    presignedApiUrl?: string\r\n  ): Observable<string | GetFileDownloadPresignedUrlByAttachmentIdResponse> {\r\n    let fileName = '';\r\n    if (typeof file === 'string') fileName = file;\r\n    else if (Object?.values(file)?.length)\r\n      fileName = Object?.values(file)?.[0]?.name;\r\n    else fileName = (file as File).name;\r\n    let httpRequest!: Observable<\r\n      string | GetFileDownloadPresignedUrlByAttachmentIdResponse\r\n    >;\r\n    if (isPublicAPI) {\r\n      const fileDownloadPresignedUrlPayload: GetFileDownloadPresignedUrlPayload =\r\n        {\r\n          payload: {\r\n            fileName: fileName,\r\n            domain: domainUrl as string,\r\n          },\r\n        };\r\n      httpRequest = this.httpService.postData(\r\n        `${this.apiBaseUrl}/configurations/public/downloadFileUrl`,\r\n        fileDownloadPresignedUrlPayload\r\n      );\r\n    } else if (presignedApiUrl) {\r\n      const fileDownloadPresignedUrlByAttachmentIdPayload: GetFileDownloadPresignedUrlByAttachmentIdPayload =\r\n        {\r\n          payload: {\r\n            attachmentId: (file as DownloadAttachment).attachmentId,\r\n            preSignedDuration: this.constants?.fileDownload?.preSignedDuration,\r\n          },\r\n        };\r\n      httpRequest = this.httpService.postData(\r\n        `${this.apiBaseUrl}${presignedApiUrl}`,\r\n        fileDownloadPresignedUrlByAttachmentIdPayload\r\n      );\r\n    } else {\r\n      httpRequest = this.httpService.getData(\r\n        `${this.apiBaseUrl}/configurations/s3/downloadFileUrl/${fileName}`\r\n      );\r\n    }\r\n    return httpRequest.pipe(\r\n      map((response) => {\r\n        return response;\r\n      }),\r\n      catchError((errorRes) => {\r\n        throw errorRes;\r\n      })\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Downloads file to AWS S3 using a presigned URL.\r\n   * @return {Observable<any>}\r\n   * @memberof FileUploadService\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  downloadFile(fileDownloadPresignedUrl: string): Observable<any> {\r\n    return this.httpClient.get(fileDownloadPresignedUrl).pipe(\r\n      map((response) => {\r\n        return response;\r\n      }),\r\n      catchError((errorRes) => {\r\n        throw errorRes;\r\n      })\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Validates the total size of the files uploaded.\r\n   * @param {(File | FileList)} files -The files to be validated.\r\n   * @param {number} maxFileSize\r\n   * @param {boolean} isMultiFileUpload\r\n   * @return {boolean} -Returns true if the total size of files is within the specified limit, otherwise false.\r\n   * @memberof FileUploadService\r\n   */\r\n  validateFileSize(\r\n    files: File | FileList,\r\n    maxFileSize: number,\r\n    isMultiFileUpload: boolean\r\n  ): boolean {\r\n    if (isMultiFileUpload) {\r\n      let totalSize = 0;\r\n      Object.values(files).forEach((file: File) => {\r\n        totalSize += file.size;\r\n      });\r\n      return totalSize / (1024 * 1024) <= maxFileSize;\r\n    }\r\n    return (files as File).size / (1024 * 1024) <= maxFileSize;\r\n  }\r\n\r\n  /**\r\n   * Validates the file types of the uploaded files.\r\n   * @param {(File | FileList)} files\r\n   * @param {string[]} allowedFileTypes\r\n   * @param {boolean} isMultiFileUpload\r\n   * @return {boolean} -Returns true if all files have valid extensions, otherwise false.\r\n   * @memberof FileUploadService\r\n   */\r\n  validateFileTypes(\r\n    files: File | FileList,\r\n    allowedFileTypes: string[],\r\n    isMultiFileUpload: boolean\r\n  ): boolean {\r\n    const validateSingleFile = (file: File): boolean => {\r\n      const fileExtension = this.getFileExtension(file.name);\r\n      return allowedFileTypes?.includes(fileExtension);\r\n    };\r\n    if (isMultiFileUpload) {\r\n      let allFilesValid = true;\r\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n      Object.values(files)?.forEach((fileItem: any) => {\r\n        if (!validateSingleFile(fileItem)) {\r\n          allFilesValid = false;\r\n        }\r\n      });\r\n      return allFilesValid;\r\n    }\r\n    return validateSingleFile(files as File);\r\n  }\r\n\r\n  /**\r\n   * Extracts and returns the extension of a file from its name.\r\n   * @private\r\n   * @param {string} fileName\r\n   * @return {string} -The file extension in lowercase.\r\n   * @memberof FileUploadService\r\n   */\r\n  private getFileExtension(fileName: string): string {\r\n    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n    return fileName?.split('.').pop()!.toLowerCase();\r\n  }\r\n  /**\r\n   * Delete the file from AWS S3 based on the given fileId along with deleteFileApiPath.\r\n   * @return {Observable<DeleteFileResponse>}\r\n   * @memberof FileUploadService\r\n   */\r\n  deleteFile(deleteFileApiPath: string): Observable<DeleteFileResponse> {\r\n    return this.httpService\r\n      .putData(`${this.apiBaseUrl}/${deleteFileApiPath}`, {})\r\n      .pipe(\r\n        map((response) => {\r\n          return response;\r\n        }),\r\n        catchError((error) => {\r\n          throw error;\r\n        })\r\n      );\r\n  }\r\n\r\n  /**\r\n   * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n   * @memberof FileUploadService\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\nimport { FileUploadService } from '../../services/file-upload.service';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport * as constants from '../../assets/constants.json';\r\nimport { IconButtonComponent } from '../icon-button/icon-button.component';\r\nimport { FileDownloadAndDeleteConfig } from '../../models/file-download-config.model';\r\nimport { DownloadAttachment } from '../../models/download-file.model';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { saveAs } from 'file-saver';\r\nimport { AlertsService } from '@ieeesa-npm/utility';\r\nimport { AlertType, AlignType } from '@ieeesa-npm/models';\r\n\r\n@Component({\r\n  selector: 'ieeesa-file-download',\r\n  standalone: true,\r\n  imports: [CommonModule, MatListModule, MatIconModule, IconButtonComponent],\r\n  templateUrl: './file-download.component.html',\r\n  styleUrls: ['./file-download.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class FileDownloadComponent implements OnInit, OnDestroy {\r\n  constants = constants;\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  preSignedUrl!: string;\r\n  fileName!: string;\r\n  alignType = AlignType;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  @Input() downloadFiles: File | FileList | any | DownloadAttachment[] = [];\r\n  @Input() fileDownloadAndDeleteConfig!: FileDownloadAndDeleteConfig;\r\n  @Input() isPublicAPI?: boolean;\r\n  @Input() domainUrl?: string;\r\n  @Output() downloadSelectedFile = new EventEmitter<\r\n    File | DownloadAttachment\r\n  >();\r\n  @Output() deleteSelectedFile = new EventEmitter<File | DownloadAttachment>();\r\n  fileDeleteBtn = this.constants?.fileDownload?.buttons[0];\r\n  @Input() apiBaseUrl!: string;\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    public formUtilityService: FormUtilityService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private fileUploadService: FileUploadService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private alertService: AlertsService\r\n  ) {}\r\n\r\n  /**\r\n   * Sets API base URL to file upload service\r\n   * @memberof FileDownloadComponent\r\n   */\r\n  ngOnInit(): void {\r\n    if (this.apiBaseUrl) {\r\n      this.fileUploadService.setApiBaseUrl(this.apiBaseUrl);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Gets the download AWS pre-signed URL from API on button click or emit the downloadSelectedFile if canDownloadFileInternally flg is true.\r\n   * @param {File } file\r\n   * @memberof FileDownloadedComponent\r\n   */\r\n  onDownloadFile(file: File | DownloadAttachment): void {\r\n    if (this.fileDownloadAndDeleteConfig?.canDownloadFileInternally) {\r\n      this.getFileDownloadPresignedUrls(file);\r\n    } else {\r\n      this.downloadSelectedFile.emit(file);\r\n    }\r\n  }\r\n  /**\r\n   * Retrieves pre-signed URL for downloading the selected file from Amazon S3 bucket.\r\n   * @memberof FileDownloadedComponent\r\n   */\r\n  getFileDownloadPresignedUrls(file: File | DownloadAttachment): void {\r\n    this.fileUploadService\r\n      .getFileDownloadPresignedUrls(\r\n        file,\r\n        this.isPublicAPI,\r\n        this.domainUrl,\r\n        this.fileDownloadAndDeleteConfig?.downloadFileAPIUrl\r\n      )\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        next: (response: any) => {\r\n          if (response.body === 'string') {\r\n            this.preSignedUrl = response.body;\r\n            this.fileName = (file as File).name;\r\n          } else {\r\n            this.preSignedUrl = response.body.preSignedUrl;\r\n            this.fileName = response.body.fileName;\r\n          }\r\n          this.downloadFileFromS3(this.preSignedUrl);\r\n        },\r\n        error: (error: Error) => {\r\n          this.alertService?.showMessage({\r\n            status: 'custom',\r\n            message: error?.message || this.constants?.fileDownload?.message?.errors?.['ER1002'],\r\n            alertType: AlertType.ERROR,\r\n            isCloseNeeded: true,\r\n          });\r\n        },\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Emits deleteSelectedFile event or deletes the selected file by calling deleteFile() if the file can be deleted internally.\r\n   * @param {number} index\r\n   * @param {File } file\r\n   * @memberof FileDownloadedComponent\r\n   */\r\n  onDeleteFile(file: File | DownloadAttachment, index: number): void {\r\n    if (this.fileDownloadAndDeleteConfig?.canDeleteFileInternally) {\r\n      this.deleteFile(this.downloadFiles[index]?.attachmentId, index);\r\n    } else {\r\n      this.deleteSelectedFile.emit(file);\r\n    }\r\n  }\r\n  /**\r\n   * Deletes the file by given attachmentId, index.\r\n   * @param {string} attachmentId\r\n   * @param {number} index\r\n   * @memberof UploadAttachmentsComponent\r\n   */\r\n  deleteFile(attachmentId: string, index: number): void {\r\n    this.fileUploadService\r\n      .deleteFile(\r\n        `${this.fileDownloadAndDeleteConfig.deleteFileAPIUrl}${attachmentId}`\r\n      )\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        // eslint-disable-next-line no-empty-function, @typescript-eslint/no-empty-function\r\n        next: () => {\r\n          this.downloadFiles.splice(index, 1);\r\n        },\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        error: (error: any) => {\r\n          this.alertService?.showMessage({\r\n            status: 'custom',\r\n            message: error?.message || this.constants?.fileDownload?.message?.errors?.['ER1002'],\r\n            alertType: AlertType.ERROR,\r\n            isCloseNeeded: true,\r\n          });\r\n        },\r\n      });\r\n  }\r\n  /**\r\n   * Returns unique identifier for the file list.\r\n   * @param {number} index\r\n   * @return {(number | string)}\r\n   * @memberof FileDownloadComponent\r\n   */\r\n  trackByFn(index: number): number | string {\r\n    return index;\r\n  }\r\n  /**\r\n   * Cleans up resources when the component is destroyed.\r\n   * @memberof FileDownloadComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n\r\n  /**\r\n   * Download the file using generated presigned Url.\r\n   * @param {string} fileDownloadPresignedUrl\r\n   * @param {string} fileName\r\n   * @memberof FileDownloadComponent\r\n   */\r\n  downloadFileFromS3(fileDownloadPresignedUrl: string): void {\r\n    saveAs(fileDownloadPresignedUrl);\r\n  }\r\n}\r\n","<div class=\"ieeesa-file-download\">\r\n  <mat-list\r\n    [ngClass]=\"\r\n      fileDownloadAndDeleteConfig?.alignType === alignType.VERTICAL\r\n        ? ''\r\n        : 'ieeesa-file-download__align-horizontal'\r\n    \"\r\n  >\r\n    <ng-container\r\n      *ngFor=\"let item of downloadFiles; let index = index; trackBy: trackByFn\"\r\n    >\r\n      <mat-list-item\r\n        [ngClass]=\"\r\n          fileDownloadAndDeleteConfig?.alignType === alignType.VERTICAL\r\n            ? ''\r\n            : 'ieeesa-list-file-by-horizontal'\r\n        \"\r\n      >\r\n        <button\r\n          mat-button\r\n          type=\"button\"\r\n          [disabled]=\"!fileDownloadAndDeleteConfig?.isDownloadNeeded\"\r\n          (click)=\"onDownloadFile(item)\"\r\n          class=\"ieeesa-btn-label-lg-bold-16 ieeesa-file-download__file-download-button\"\r\n        >\r\n          {{ item.fileName }}\r\n        </button>\r\n        <ieeesa-icon-button\r\n          *ngIf=\"fileDownloadAndDeleteConfig?.isDeleteNeeded\"\r\n          class=\"ieeesa-file-download--file-delete-button\"\r\n          [iconButton]=\"fileDeleteBtn\"\r\n          [isLabelNeeded]=\"false\"\r\n          (iconButtonClick)=\"onDeleteFile(item, index)\"\r\n        >\r\n        </ieeesa-icon-button>\r\n      </mat-list-item>\r\n    </ng-container>\r\n  </mat-list>\r\n</div>\r\n","import {\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport * as constants from '../../assets/constants.json';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FormErrorComponent } from '../form-error/form-error.component';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { FormSupportTextComponent } from '../form-support-text/form-support-text.component';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { FileUploadDirective } from '../../directives/file-upload/file-upload.directive';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { AllowedFileTypes } from '../../models/allowed-file-types.model';\r\nimport { FileUploadService } from '../../services/file-upload.service';\r\nimport { IconButtonComponent } from '../icon-button/icon-button.component';\r\nimport { AlignBrowsedFiles } from '../../models/align-browsed-files.model';\r\nimport { AlignType } from '@ieeesa-npm/models';\r\nimport { FileUploadStatus } from '../../models/file-upload-status.model';\r\nimport { FileDownloadComponent } from '../file-download/file-download.component';\r\nimport { FileDownloadAndDeleteConfig } from '../../models/file-download-config.model';\r\nimport { DownloadAttachment } from '../../models/download-file.model';\r\n/**\r\n * Provides functionality for uploading files to aws s3 bucket.\r\n * @export\r\n * @class FileUploadComponent\r\n * @implements {OnInit}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-file-upload',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    FormErrorComponent,\r\n    MatFormFieldModule,\r\n    MatInputModule,\r\n    MatButtonModule,\r\n    FormSupportTextComponent,\r\n    MatProgressBarModule,\r\n    FileUploadDirective,\r\n    IconButtonComponent,\r\n    FileDownloadComponent,\r\n  ],\r\n  templateUrl: './file-upload.component.html',\r\n  styleUrls: ['./file-upload.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class FileUploadComponent implements OnInit {\r\n  @ViewChild('fileField') fileField!: ElementRef;\r\n  constants = constants;\r\n  fileUploadLabel = this.constants?.fileUpload?.label;\r\n  fileUploadAriaLabel = this.constants?.fileUpload?.ariaLabel;\r\n  fileUploadIconUrl = this.constants?.fileUpload?.iconUrl;\r\n  fileUploadBtn = this.constants?.fileUpload?.buttons[0];\r\n  allowedFileTypeErrorMessage =\r\n    this.constants?.fileUpload?.message?.error?.invalidFileFormat;\r\n  @Input() maxFileSizeErrorMessage =\r\n    this.constants?.fileUpload?.message?.error?.invalidFileSize;\r\n  allowedFileTypesAndSizeText = '';\r\n  config!: FieldConfig;\r\n  group!: FormGroup;\r\n  isValidFileType = false;\r\n  isValidFileSize = false;\r\n  isValidMaxFileUploadLimit = false;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  selectedFiles: FileList | File | any = [];\r\n  selectedFileNames = '';\r\n  isFormField = false;\r\n  totalSize = 0;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  uploadedFiles: FileList | File | any = [];\r\n  @Input() actionButtonAlign!: AlignType;\r\n  alignmentType = AlignType;\r\n  isUploadButtonDisabled = false;\r\n  @Input() formControlName = 'fileUpload';\r\n  @Input() isFileSelected = false;\r\n  @Input() supportMessage!: string;\r\n  @Input() allowedFileTypes: AllowedFileTypes[] = [];\r\n  @Input() isMultiFileUpload = false;\r\n  @Input() isUploadInProgress = false;\r\n  @Input() fileUploadHeading!: string;\r\n  @Input() isAllowAnyFileType = false;\r\n  @Input() alignBrowsedFiles = AlignBrowsedFiles.DEFAULT;\r\n  @Input() isUploadButtonNeeded = false;\r\n  // Default maximum allowed upload file size is 2mb.\r\n  @Input() maxUploadFileSize = 2;\r\n  private uploadedSizeValue = 0;\r\n  @Input() alignFileUploadErrorMessageTo = AlignType.BOTTOM;\r\n  @Input() maxFilesUploadedOnce: number =\r\n    this.constants?.fileUpload?.limit?.maxFilesUploadedOnce;\r\n  @Input() maxFilesUploadLimitErrorMessage = '';\r\n  private _fileUploadStatus!: FileUploadStatus;\r\n\r\n  @Input() get fileUploadStatus(): FileUploadStatus {\r\n    return this._fileUploadStatus;\r\n  }\r\n  set fileUploadStatus(value: FileUploadStatus) {\r\n    this._fileUploadStatus = value;\r\n  }\r\n\r\n  @Input()\r\n  get uploadedSize(): number {\r\n    return this.uploadedSizeValue;\r\n  }\r\n\r\n  set uploadedSize(value: number) {\r\n    this.uploadedSizeValue = value;\r\n  }\r\n  private _fileDownloadAndDeleteConfig!: FileDownloadAndDeleteConfig;\r\n  @Input()\r\n  set fileDownloadAndDeleteConfig(value: FileDownloadAndDeleteConfig) {\r\n    this._fileDownloadAndDeleteConfig = value;\r\n  }\r\n  get fileDownloadAndDeleteConfig(): FileDownloadAndDeleteConfig {\r\n    return this._fileDownloadAndDeleteConfig;\r\n  }\r\n  @Output() uploadSelectedFiles = new EventEmitter<File | FileList>();\r\n  @Output() downloadSelectedFile = new EventEmitter<\r\n    File | DownloadAttachment\r\n  >();\r\n  apiBaseUrl!: string;\r\n  selectedFileNamesCount = 0;\r\n\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    public formUtilityService: FormUtilityService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    public fileUploadService: FileUploadService // eslint-disable-next-line no-empty-function\r\n  ) {}\r\n  /**\r\n   * Initializes component properties and retrieves configuration.\r\n   * @memberof FileUploadComponent\r\n   */\r\n  ngOnInit(): void {\r\n    this.isFormField = !!this.config;\r\n    this.apiBaseUrl = this.fileUploadService.getApiBaseUrl();\r\n    this.config =\r\n      this.config ??\r\n      this.formUtilityService.getFormFieldConfig(\r\n        'fileUpload',\r\n        FormControlType.FILE_UPLOAD\r\n      );\r\n    this.group =\r\n      this.group ?? this.formUtilityService.getFormGroup('fileUpload');\r\n    this.config.supportMessage =\r\n      this.config?.supportMessage ?? this.supportMessage;\r\n    this.isMultiFileUpload =\r\n      this.config?.isMultiFileUpload ?? this.isMultiFileUpload;\r\n    this.maxUploadFileSize =\r\n      this.config?.maxUploadFileSize ?? this.maxUploadFileSize;\r\n    this.allowedFileTypes =\r\n      this.config?.allowedFileTypes ?? this.allowedFileTypes;\r\n    this.isAllowAnyFileType =\r\n      this.config?.isAllowAnyFileType ?? this.isAllowAnyFileType;\r\n    this.alignBrowsedFiles =\r\n      this.config?.alignBrowsedFiles ?? this.alignBrowsedFiles;\r\n    this.isUploadButtonNeeded =\r\n      this.config?.isUploadButtonNeeded ?? this.isUploadButtonNeeded;\r\n    this.actionButtonAlign =\r\n      this.config?.actionButtonAlign ?? this.actionButtonAlign;\r\n    this.alignFileUploadErrorMessageTo =\r\n      this.config?.alignFileUploadErrorMessageTo ??\r\n      this.alignFileUploadErrorMessageTo;\r\n    this.getAllowedFileFormatSizeMessage();\r\n    this.fileUploadHeading =\r\n      this.config?.fileUploadHeading ??\r\n      this.fileUploadHeading ??\r\n      this.fileUploadLabel.fileUpload;\r\n    this.config.allowedFileTypeErrorMessage =\r\n      this.config?.allowedFileTypeErrorMessage ??\r\n      this.allowedFileTypeErrorMessage;\r\n    this.config.maxFileSizeErrorMessage =\r\n      this.config?.maxFileSizeErrorMessage ?? this.maxFileSizeErrorMessage;\r\n    this.isFileSelected = this.config?.isFileSelected ?? this.isFileSelected;\r\n    this.maxFilesUploadedOnce =\r\n      this.config?.maxFilesUploadedOnce ?? this.maxFilesUploadedOnce;\r\n    this.maxFilesUploadLimitErrorMessage =\r\n      this.config?.maxFilesUploadLimitErrorMessage ??\r\n      this.maxFilesUploadLimitErrorMessage;\r\n  }\r\n  /**\r\n   * Formats allowed file format and size message in required format.\r\n   * @memberof FileUploadComponent\r\n   */\r\n  getAllowedFileFormatSizeMessage(): void {\r\n    const supportedFileFormatText = this.allowedFileTypes.join(', ');\r\n    this.allowedFileTypesAndSizeText = `${this.fileUploadLabel?.allowedFileSize1}\r\n    ${this.maxUploadFileSize}`;\r\n    if (this.isMultiFileUpload) {\r\n      this.allowedFileTypesAndSizeText += ` ${this.constants?.fileUpload?.label?.mb}`;\r\n    }\r\n    if (!this.isAllowAnyFileType) {\r\n      this.allowedFileTypesAndSizeText += `${this.fileUploadLabel?.allowedFileSize2} ${this.fileUploadLabel?.allowedFileFormat} ${supportedFileFormatText}.`;\r\n    }\r\n  }\r\n  /**\r\n   * Handles the selected file(s) and emits FileUpload event emitter for uploading the file(s).\r\n   * @param {(File | FileList)} file\r\n   * @memberof FileUploadComponent\r\n   */\r\n  getFile(file: File | FileList): void {\r\n    this.selectedFiles = [];\r\n    this.selectedFileNames = '';\r\n    this.fileUploadStatus = {\r\n      alreadyExistsFiles: [],\r\n      filesNameOfUploadFailed: [],\r\n      noOfFilesUploadedSuccessfully: 0,\r\n      isUploadingStart: false,\r\n      uploadedFiles: this.fileUploadStatus?.uploadedFiles ?? [],\r\n    };\r\n    this.selectedFileNamesCount = 0;\r\n    const fileUploadFormControl = this.group?.get(\r\n      this.config?.controlName ?? 'fileUpload'\r\n    );\r\n    if (fileUploadFormControl) {\r\n      fileUploadFormControl.markAsDirty();\r\n    }\r\n    if (this.isMultiFileUpload) {\r\n      const isValid = this.validateFile(file);\r\n      this.isFileSelected = isValid;\r\n      if (isValid) {\r\n        if (file) {\r\n          Object.values(file).forEach((fileItem: File) => {\r\n            this.selectedFiles?.push(fileItem);\r\n            this.totalSize += fileItem.size;\r\n          });\r\n        }\r\n      }\r\n\r\n      if (this.selectedFiles?.length) {\r\n        this.selectedFileNamesCount = this.selectedFiles.length;\r\n        const selectedFilesNames: string[] = [];\r\n        // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\r\n        this.selectedFiles?.forEach((file: File, index: number) => {\r\n          selectedFilesNames.push(file.name);\r\n        });\r\n        this.selectedFileNames = selectedFilesNames?.join(', ').toString();\r\n        this.group\r\n          .get(this.config?.controlName)\r\n          ?.setValue(this.selectedFileNames);\r\n        this.fileUploadBtn.disabled = false;\r\n        if (this.isFormField)\r\n          this.uploadSelectedFiles?.emit(this.selectedFiles);\r\n      }\r\n    } else {\r\n      const fileItem = Object.values(file)[0];\r\n      const isValid = this.validateFile(fileItem);\r\n      if (isValid) {\r\n        this.isFileSelected = isValid;\r\n        this.selectedFileNames = fileItem.name;\r\n        this.totalSize = fileItem.size;\r\n        this.fileUploadService?.convertFileToByteArray(fileItem);\r\n        this.group\r\n          .get(this.config.controlName)\r\n          ?.setValue(this.selectedFileNames);\r\n        if (this.isFormField) this.uploadSelectedFiles.emit(fileItem);\r\n        this.selectedFiles = file;\r\n        this.fileUploadBtn.disabled = false;\r\n      }\r\n    }\r\n  }\r\n  /**\r\n   * Validates the selected file(s) format and size.\r\n   * @param {(File | FileList)} file\r\n   * @return {boolean}\r\n   * @memberof FileUploadComponent\r\n   */\r\n  validateFile(file: File | FileList): boolean {\r\n    this.isValidFileType = !this.isAllowAnyFileType\r\n      ? this.fileUploadService.validateFileTypes(\r\n          file,\r\n          this.allowedFileTypes,\r\n          this.isMultiFileUpload\r\n        )\r\n      : true;\r\n    if (this.isMultiFileUpload) {\r\n      this.isValidMaxFileUploadLimit =\r\n        Object.values(file).length <=\r\n        this.constants?.fileUpload?.limit?.maxFilesUploadedOnce;\r\n      if (!this.isValidMaxFileUploadLimit) {\r\n        this.group?.get(this.config?.controlName)?.setErrors({\r\n          maxFilesUploadLimitReached: true,\r\n        });\r\n        return false;\r\n      }\r\n    }\r\n    if (!this.isValidFileType) {\r\n      this.group?.get(this.config?.controlName)?.setErrors({\r\n        invalidFileType: true,\r\n      });\r\n      return false;\r\n    }\r\n    this.isValidFileSize = this.fileUploadService.validateFileSize(\r\n      file,\r\n      this.maxUploadFileSize,\r\n      this.isMultiFileUpload\r\n    );\r\n    if (!this.isValidFileSize) {\r\n      this.group?.get(this.config?.controlName)?.setErrors({\r\n        maxFileSize: true,\r\n      });\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n  /**\r\n   * Initiates the file upload process for independent file upload component.\r\n   * @memberof FileUploadComponent\r\n   */\r\n  onUpload(): void {\r\n    this.uploadSelectedFiles.emit(this.selectedFiles);\r\n    if (this.fileUploadService?.getFileUploadStatus()) {\r\n      this.uploadedFiles = this.selectedFiles;\r\n    }\r\n  }\r\n  /**\r\n   * Clears the form group control value of type input and resets other file upload properties.\r\n   * @memberof FileUploadComponent\r\n   */\r\n  resetUpload(): void {\r\n    this.fileUploadService.clearFileByteArray();\r\n    this.uploadedFiles = [];\r\n    this.isUploadInProgress = false;\r\n    this.selectedFileNames = '';\r\n    this.selectedFiles = [];\r\n    this.isFileSelected = false;\r\n    this.group.get(this.config?.controlName)?.setValue('');\r\n    this.fileUploadBtn.disabled = true;\r\n    this.selectedFileNamesCount = 0;\r\n  }\r\n  /**\r\n   * Removes the selected file from the uploaded files list.\r\n   * @param {number} index\r\n   * @memberof FileUploadComponent\r\n   */\r\n  onDeleteFile(file: File, index: number): void {\r\n    this.totalSize = 0;\r\n    this.uploadedFiles.splice(index, 1);\r\n  }\r\n  /**\r\n   * For tab key keydown event it passes event and restricts other keys from keyboard.\r\n   * @param {KeyboardEvent} event -Keydown event object.\r\n   * @memberof FileUploadComponent\r\n   */\r\n  onKeyDown(event: KeyboardEvent): void {\r\n    if (event.key !== 'Tab') event.preventDefault();\r\n  }\r\n  /**\r\n   * Emits downloadSelectedFile event.\r\n   * @memberof FileUploadComponent\r\n   */\r\n  downloadFile(file: File | DownloadAttachment): void {\r\n    this.downloadSelectedFile.emit(file);\r\n  }\r\n  /**\r\n   * Returns unique identifier for the file list.\r\n   * @param {number} index\r\n   * @return {(number | string)}\r\n   * @memberof FileUploadComponent\r\n   */\r\n  trackByFn(index: number): number | string {\r\n    return index;\r\n  }\r\n  /**\r\n   * Triggers and opens the file browse window when the Browse button is clicked.\r\n   * @memberof FileUploadComponent\r\n   */\r\n  fileClick(): void {\r\n    this.fileField.nativeElement.click();\r\n  }\r\n  /**\r\n   * Returns the failed file names with comma separation.\r\n   * @param {string[]} fileNames\r\n   * @return {*}  {string}\r\n   * @memberof FileUploadComponent\r\n   */\r\n  displayFileNames(fileNames: string[]): string {\r\n    return fileNames.length ? fileNames.join(',') : '';\r\n  }\r\n  /**\r\n   * Removes the unselected file from the browsed or selected files and emits uploadSelectedFiles event with the selected files.\r\n   * @param {number} index\r\n   * @memberof FileUploadComponent\r\n   */\r\n  removeFile(index: number): void {\r\n    this.selectedFiles.splice(index, 1);\r\n    const fileNames: string[] = this.selectedFileNames.split(',');\r\n    fileNames.splice(index, 1);\r\n    this.selectedFileNames = fileNames.join(',');\r\n    this.uploadSelectedFiles.emit(this.selectedFiles);\r\n    this.selectedFileNamesCount--;\r\n    if (this.selectedFiles.length === 0) {\r\n      this.resetUpload();\r\n      this.fileUploadStatus.noOfFilesUploadedSuccessfully = 0;\r\n      this.fileUploadStatus.filesNameOfUploadFailed = [];\r\n      this.fileUploadStatus.alreadyExistsFiles = [];\r\n    }\r\n  }\r\n  /**\r\n   * Enables or disables the file upload button.\r\n   * @param {boolean} enable\r\n   * @memberof FileUploadComponent\r\n   */\r\n  canEnableUploadButton(enable: boolean): void {\r\n    this.isUploadButtonDisabled = enable;\r\n  }\r\n  /**\r\n   * Based on isMultiFileUpload flag return files to download.\r\n   * @memberof FileUploadComponent\r\n   */\r\n  getFilesToDownload(): DownloadAttachment[] {\r\n    if (this.isMultiFileUpload) {\r\n      return this.fileUploadStatus.uploadedFiles;\r\n    }\r\n    return this.uploadedFiles;\r\n  }\r\n  /**\r\n   * TrackByFunction is called for each file in the collection and return a unique identifier for that file.\r\n   * @param {number} index\r\n   * @param {File} file\r\n   * @return {File}\r\n   * @memberof FileUploadComponent\r\n   */\r\n  trackByFunc(index: number, file: File): File {\r\n    return file;\r\n  }\r\n  /**\r\n   * Sets empty value to file form control once it is clicked.\r\n   * @param {Event} event\r\n   * @memberof FileUploadComponent\r\n   */\r\n  setEmptyValue(event: Event) {\r\n    (event.target as HTMLInputElement).value = '';\r\n  }\r\n  /**\r\n   * Removes the file from selectedFiles once the file uploaded successfully to AWS S3.\r\n   * @param {File} file\r\n   * @memberof FileUploadComponent\r\n   */\r\n  removeSelectedFileInUploadedFiles(fileName: string): void {\r\n    const index = this.selectedFiles.findIndex(\r\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n      (selectedFile: any) => selectedFile.name === fileName\r\n    );\r\n    this.selectedFiles.splice(index, 1);\r\n  }\r\n  /**\r\n   * Returns the count of files selected for the upload.\r\n   * @return {number}\r\n   * @memberof FileUploadComponent\r\n   */\r\n  getSelectedFileCount(): number {\r\n    return this.selectedFileNamesCount;\r\n  }\r\n}\r\n","<div\r\n  [formGroup]=\"group\"\r\n  class=\"ieeesa-file-upload\"\r\n  [ngClass]=\"\r\n    config.isLabelAlignedLeft\r\n      ? 'ieeesa-file-upload__label-left'\r\n      : 'ieeesa-file-upload__label-top'\r\n  \"\r\n>\r\n  <mat-label class=\"ieeesa-body-sm-14 ieeesa-file-upload__label\">{{\r\n    config.label\r\n  }}</mat-label>\r\n  <ieeesa-file-download\r\n    [fileDownloadAndDeleteConfig]=\"fileDownloadAndDeleteConfig\"\r\n    [apiBaseUrl]=\"apiBaseUrl\"\r\n    [downloadFiles]=\"getFilesToDownload()\"\r\n    (downloadSelectedFile)=\"downloadFile($event)\"\r\n  ></ieeesa-file-download>\r\n  <div\r\n    class=\"ieeesa-file-upload__upload p-4\"\r\n    ieeesaFileUpload\r\n    (fileDropped)=\"getFile($event)\"\r\n  >\r\n    <p class=\"ieeesa-file-upload__upload__heading m-0 ieeesa-label-lg-bold-16\">\r\n      {{ fileUploadHeading }}\r\n    </p>\r\n    <div class=\"ieeesa-file-upload__upload__browse-files\">\r\n      <button\r\n        mat-button\r\n        (click)=\"fileClick()\"\r\n        class=\"ieeesa-file-upload__browse-btn mat-tertiary-button\"\r\n        [attr.aria-label]=\"fileUploadAriaLabel.browseFiles\"\r\n        type=\"button\"\r\n        [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n      >\r\n        {{ fileUploadLabel.browseFiles }}\r\n      </button>\r\n      <ng-container *ngIf=\"isMultiFileUpload\">\r\n        <input\r\n          type=\"file\"\r\n          #fileField\r\n          (change)=\"getFile($any($event).target.files)\"\r\n          hidden\r\n          [accept]=\"allowedFileTypes\"\r\n          [multiple]=\"true\"\r\n          [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n          (click)=\"setEmptyValue($event)\"\r\n          [ngClass]=\"'ieeesa-file-input'\"\r\n        />\r\n      </ng-container>\r\n      <ng-container *ngIf=\"!isMultiFileUpload\">\r\n        <input\r\n          type=\"file\"\r\n          #fileField\r\n          (change)=\"getFile($any($event).target.files)\"\r\n          hidden\r\n          [accept]=\"allowedFileTypes\"\r\n          [disabled]=\"fileUploadStatus?.isUploadingStart\"\r\n          (click)=\"setEmptyValue($event)\"\r\n          [ngClass]=\"'ieeesa-file-input'\"\r\n        />\r\n      </ng-container>\r\n\r\n      <p\r\n        class=\"ieeesa-file-upload__allowed-file-text m-0 ieeesa-label-md-14\"\r\n        [attr.aria-label]=\"allowedFileTypesAndSizeText\"\r\n      >\r\n        {{ allowedFileTypesAndSizeText }}\r\n      </p>\r\n    </div>\r\n    <div\r\n      class=\"ieeesa-file-upload__upload-wrapper d-flex\"\r\n      *ngIf=\"isFileSelected\"\r\n    >\r\n      <ng-container [ngSwitch]=\"alignBrowsedFiles\">\r\n        <ng-container *ngSwitchCase=\"'default'\">\r\n          <mat-form-field>\r\n            <input\r\n              class=\"ieeesa-file-upload__upload-wrapper__input-field ieeesa-body-lg-16\"\r\n              type=\"text\"\r\n              value=\"selectedFileNames\"\r\n              [placeholder]=\"config.placeholder ?? ''\"\r\n              [formControlName]=\"config.controlName\"\r\n              [name]=\"config.controlName\"\r\n              [attr.aria-label]=\"\r\n                config.ariaLabel ?? fileUploadAriaLabel.fileUploadInput\r\n              \"\r\n              [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n              autocomplete=\"off\"\r\n              (keydown)=\"onKeyDown($event)\"\r\n              matInput\r\n            />\r\n            <button\r\n              type=\"button\"\r\n              class=\"ieeesa-file-upload__upload-wrapper--clear-icon-btn\"\r\n              matSuffix\r\n              mat-icon-button\r\n              [attr.aria-label]=\"fileUploadAriaLabel.removeFileIcon\"\r\n              (click)=\"resetUpload()\"\r\n            >\r\n              <i\r\n                class=\"fa-regular fa-circle-xmark ieeesa-input-field-upload__icon--clear\"\r\n              ></i>\r\n            </button>\r\n          </mat-form-field>\r\n          <ieeesa-icon-button\r\n            class=\"ieeesa-file-upload__upload-wrapper--upload-btn d-flex align-items-center\"\r\n            [iconButton]=\"fileUploadBtn\"\r\n            [isLabelNeeded]=\"false\"\r\n            (iconButtonClick)=\"onUpload()\"\r\n            *ngIf=\"!isFormField\"\r\n          >\r\n          </ieeesa-icon-button>\r\n        </ng-container>\r\n        <ng-container *ngSwitchCase=\"'bottom'\">\r\n          <div class=\"ieeesa-display-browsed-files-bottom\">\r\n            <p class=\"ieeesa-file-upload__progress__text\">\r\n              {{\r\n                fileUploadStatus.noOfFilesUploadedSuccessfully +\r\n                  \" \" +\r\n                  fileUploadLabel?.of +\r\n                  \" \" +\r\n                  getSelectedFileCount() +\r\n                  \" \" +\r\n                  fileUploadLabel?.filesUploaded\r\n              }}\r\n            </p>\r\n            <ng-container>\r\n              <p\r\n                class=\"d-flex pt-1 m-0 ieeesa-label-md-14 align-items-center ieeesa-display-selected-files\"\r\n                *ngFor=\"\r\n                  let file of selectedFiles;\r\n                  let i = index;\r\n                  trackBy: trackByFunc\r\n                \"\r\n              >\r\n                {{ file?.name }}\r\n                <button\r\n                  type=\"button\"\r\n                  class=\"ieeesa-file-upload__upload-wrapper--clear-icon-btn\"\r\n                  matSuffix\r\n                  mat-icon-button\r\n                  [attr.aria-label]=\"fileUploadAriaLabel.removeFileIcon\"\r\n                  (click)=\"removeFile(i)\"\r\n                >\r\n                  <i\r\n                    class=\"fa-regular fa-circle-xmark ieeesa-input-field-upload__icon--clear\"\r\n                  ></i>\r\n                </button>\r\n              </p>\r\n            </ng-container>\r\n            <p\r\n              *ngIf=\"fileUploadStatus?.filesNameOfUploadFailed?.length\"\r\n              class=\"ieeesa-file-upload__error__text\"\r\n            >\r\n              {{\r\n                fileUploadLabel?.uploadFor +\r\n                  \" \" +\r\n                  displayFileNames(fileUploadStatus.filesNameOfUploadFailed) +\r\n                  \" \" +\r\n                  fileUploadLabel?.uploadErrorMsg\r\n              }}\r\n            </p>\r\n            <p\r\n              *ngIf=\"fileUploadStatus?.alreadyExistsFiles?.length\"\r\n              class=\"ieeesa-file-upload__error__text\"\r\n            >\r\n              {{\r\n                displayFileNames(fileUploadStatus.alreadyExistsFiles) +\r\n                  \" \" +\r\n                  fileUploadLabel?.fileAlreadyExists\r\n              }}\r\n            </p>\r\n          </div>\r\n        </ng-container>\r\n      </ng-container>\r\n    </div>\r\n    <ng-container *ngIf=\"!isFormField\">\r\n      <div class=\"ieeesa-file-upload__progress\" *ngIf=\"isUploadInProgress\">\r\n        <p class=\"ieeesa-file-upload__progress__text\">\r\n          {{ fileUploadLabel?.uploadProgress }}\r\n        </p>\r\n        <mat-progress-bar\r\n          class=\"ieeesa-file-upload__progress--bar\"\r\n          mode=\"determinate\"\r\n          [value]=\"uploadedSize\"\r\n        ></mat-progress-bar>\r\n      </div>\r\n    </ng-container>\r\n    <ieeesa-form-error\r\n      *ngIf=\"alignFileUploadErrorMessageTo === alignmentType.MIDDLE\"\r\n      [formGroup]=\"group\"\r\n      [config]=\"config\"\r\n    ></ieeesa-form-error>\r\n    <div\r\n      *ngIf=\"isUploadButtonNeeded && isFileSelected\"\r\n      [ngClass]=\"{\r\n          'justify-content-end': actionButtonAlign === alignmentType.LEFT,\r\n          'justify-content-center': actionButtonAlign === alignmentType.MIDDLE,\r\n          'justify-content-start': actionButtonAlign === alignmentType.RIGHT,\r\n        }\"\r\n    >\r\n      <button\r\n        type=\"submit\"\r\n        mat-button\r\n        class=\"mat-primary-button ieeesa-dynamic-form__actions--right-btn\"\r\n        [disabled]=\"\r\n          !isFileSelected ||\r\n          fileUploadStatus.isUploadingStart ||\r\n          fileUploadStatus.noOfFilesUploadedSuccessfully > 0\r\n        \"\r\n      >\r\n        {{ fileUploadLabel?.upload }}\r\n      </button>\r\n    </div>\r\n  </div>\r\n</div>\r\n<ieeesa-form-error\r\n  *ngIf=\"alignFileUploadErrorMessageTo === alignmentType.BOTTOM\"\r\n  [formGroup]=\"group\"\r\n  [config]=\"config\"\r\n></ieeesa-form-error>\r\n<ieeesa-form-support-text\r\n  [formGroup]=\"group\"\r\n  [config]=\"config\"\r\n></ieeesa-form-support-text>\r\n","/* eslint-disable no-unused-vars */\r\nexport enum ColorFormat {\r\n    hex = 'hex',\r\n    rgba = 'rgba',\r\n    hsla = 'hsla'\r\n}\r\nexport enum ColorsAnimation {\r\n    popup = 'popup',\r\n    slidein = 'slide-in'\r\n}\r\nexport interface PaletteColor {\r\n    name: string;\r\n    hexCode: string;\r\n}","import {\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgxColorsModule, NgxColorsTriggerDirective } from 'ngx-colors';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FormErrorComponent } from '../form-error/form-error.component';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport {\r\n  ColorFormat,\r\n  ColorsAnimation,\r\n  PaletteColor,\r\n} from '../../models/color-format.model';\r\nimport { FormSupportTextComponent } from '../form-support-text/form-support-text.component';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\nimport * as constants from '../../assets/constants.json';\r\n@Component({\r\n  selector: 'ieeesa-color-picker',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    MatFormFieldModule,\r\n    NgxColorsModule,\r\n    ReactiveFormsModule,\r\n    FormErrorComponent,\r\n    FormSupportTextComponent,\r\n  ],\r\n  templateUrl: './color-picker.component.html',\r\n  styleUrls: ['./color-picker.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ColorPickerComponent implements OnInit, OnDestroy {\r\n  @ViewChild(NgxColorsTriggerDirective, { static: true })\r\n  colorPickerDirective!: NgxColorsTriggerDirective;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  colorPickerTexts: any = constants?.colorPicker;\r\n  paletteColors: PaletteColor[] = this.colorPickerTexts?.paletteColors;\r\n  paletteContainer!: HTMLElement;\r\n  group!: FormGroup;\r\n  config!: FieldConfig;\r\n  @Output() colorPickerChange = new EventEmitter<string>();\r\n  @Output() colorPickerSliderChange = new EventEmitter<string>();\r\n  @Input() defaultColor!: string;\r\n  canShowPalette = false;\r\n  @Input() palette: string[] = this.paletteColors?.map(\r\n    (color: PaletteColor) => color.hexCode\r\n  );\r\n  @Input() overlayClassName = 'ieeesa-color-picker__overlay';\r\n  @Input() colorFormat = ColorFormat.hex;\r\n  @Input() colorAnimation = ColorsAnimation.popup;\r\n  @Input() formControlName = 'colorPicker';\r\n  @Input() paletteSelectLabel = this.colorPickerTexts?.label?.select;\r\n  @Input() paletteCancelLabel = this.colorPickerTexts?.label?.cancel;\r\n  @Input() colorPickerLabel!: string;\r\n  @Input() isColorCodeLabelNeeded = true;\r\n  @Input() isArrowIconNeeded = true;\r\n  @Input() canHideTextInput = false;\r\n  @Input() canHideColorPicker = false;\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private elementRef: ElementRef,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private formUtilityService: FormUtilityService // eslint-disable-next-line no-empty-function\r\n  ) {}\r\n  ngOnInit() {\r\n    this.group =\r\n      this.group ?? this.formUtilityService.getFormGroup(this.formControlName);\r\n    this.config =\r\n      this.config ??\r\n      this.formUtilityService.getFormFieldConfig(\r\n        this.formControlName,\r\n        FormControlType.COLOR_PICKER\r\n      );\r\n    if (this.config) {\r\n      this.colorPickerLabel = this.config?.label ?? this.colorPickerLabel;\r\n      this.palette = this.config?.palette ?? this.palette;\r\n      this.defaultColor = this.config?.defaultColor ?? this.defaultColor;\r\n      this.colorFormat = this.config?.colorFormat ?? this.colorFormat;\r\n      this.overlayClassName =\r\n        this.config?.overlayClassName ?? this.overlayClassName;\r\n      this.isColorCodeLabelNeeded =\r\n        this.config?.isColorCodeLabelNeeded ?? this.isColorCodeLabelNeeded;\r\n      this.isArrowIconNeeded =\r\n        this.config?.isArrowIconNeeded ?? this.isArrowIconNeeded;\r\n      this.canHideTextInput =\r\n        this.config?.canHideTextInput ?? this.canHideTextInput;\r\n      this.canHideColorPicker =\r\n        this.config?.canHideColorPicker ?? this.canHideColorPicker;\r\n    }\r\n    this.group.get(this.config.controlName)?.setValue(this.defaultColor);\r\n  }\r\n  /**\r\n   * Sets the color to form group control.\r\n   * @memberof ColorPickerComponent\r\n   * @param {string} color\r\n   * @returns {void}\r\n   */\r\n  inputChange(color: string): void {\r\n    this.defaultColor = color;\r\n    this.group?.get(this.config?.controlName)?.setValue(color);\r\n    this.colorPickerChange.emit(color);\r\n  }\r\n  /**\r\n   * Sets canShowPalette to true when the palette is opened.\r\n   * @memberof ColorPickerComponent\r\n   * @returns {void}\r\n   */\r\n  onOpenPalette(): void {\r\n    this.canShowPalette = true;\r\n    this.colorPickerEventHandlers(true);\r\n  }\r\n  /**\r\n   * Sets canShowPalette to false when the palette is closed.\r\n   * @memberof ColorPickerComponent\r\n   * @returns {void}\r\n   */\r\n  onClosePalette(): void {\r\n    this.canShowPalette = false;\r\n    this.elementRef?.nativeElement\r\n      ?.querySelector('.ieeesa-color-picker__toggle-icon')\r\n      ?.focus();\r\n  }\r\n  /**\r\n   * Gets triggered when the the alpha, hue or Lightness sliders are changed\r\n   * @param {string} color\r\n   */\r\n  onSliderChange(color: string) {\r\n    this.colorPickerSliderChange.emit(color);\r\n  }\r\n  /**\r\n   * Toggles the palette panel.\r\n   * @memberof ColorPickerComponent\r\n   * @returns {void}\r\n   */\r\n  togglePalette(): void {\r\n    this.canShowPalette = !this.canShowPalette;\r\n    if (this.canShowPalette) this.colorPickerDirective?.openPanel();\r\n    else this.colorPickerDirective?.closePanel();\r\n  }\r\n  /**\r\n   * Listening the color picker events to achieve the accessibility for color palette.\r\n   * canAddListener false remove the event listeners which we calls in ngDestroy,\r\n   * canAddListener true adding the event listeners while opening the color palette.\r\n   * @memberof ColorPickerComponent\r\n   * @param {boolean} canAddListener\r\n   * @returns {void}\r\n   */\r\n  colorPickerEventHandlers(canAddListener: boolean): void {\r\n    this.paletteContainer =\r\n      this.colorPickerDirective?.panelRef?.location?.nativeElement?.querySelector(\r\n        'ngx-colors-panel .opened'\r\n      ) as HTMLElement;\r\n    setTimeout(() => {\r\n      if (this.paletteContainer) {\r\n        this.paletteContainer.role = 'application';\r\n        this.paletteContainer.tabIndex = 0;\r\n        this.paletteContainer.ariaLabel = this.colorPickerTexts?.ariaLabel?.palette;\r\n        const colorPallettes = this.paletteContainer.querySelectorAll(\r\n          '.colors .circle.wrapper.color'\r\n        );\r\n        const moreColorsArrowButton = this.paletteContainer.querySelector(\r\n          '.colors .circle.button'\r\n        ) as HTMLElement;\r\n        const lastElement = this.paletteContainer.querySelector(\r\n          '.g-input input'\r\n        ) as HTMLElement;\r\n        if (colorPallettes?.length) {\r\n          const colorPallettesList = Array.from(\r\n            colorPallettes\r\n          ) as HTMLElement[];\r\n          colorPallettesList.push(moreColorsArrowButton);\r\n          colorPallettesList.push(lastElement);\r\n          const keyDownHandlerForColorPalettes = (event: KeyboardEvent) => {\r\n            this.colorPickerKeyDownHandler(colorPallettesList, event);\r\n          };\r\n          colorPallettesList?.forEach((element: HTMLElement, index) => {\r\n            if (index !== colorPallettesList?.length - 1) {\r\n              element.tabIndex = 0;\r\n              element.role = 'button';\r\n              element.ariaLabel = this.paletteColors[index]?.name;\r\n            } else {\r\n              element.ariaLabel =\r\n                this.colorPickerTexts?.ariaLabel?.hexCodeInput;\r\n            }\r\n            if (index === 0) element.focus();\r\n            if (index === colorPallettesList?.length - 2) {\r\n              element.ariaLabel = this.colorPickerTexts?.ariaLabel?.next;\r\n              // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n              const clickHandlerForMoreColorsButton = (event: any) => {\r\n                setTimeout(() => {\r\n                  const list =\r\n                  this.paletteContainer?.querySelector('.nav-wrapper')?.childNodes;\r\n                  const gradientButtons: HTMLElement[] = [];\r\n                  list?.forEach((element) =>\r\n                    gradientButtons.push(element as HTMLElement)\r\n                  );\r\n                  if (gradientButtons?.length) {\r\n                    const lastElement = this.paletteContainer.querySelector(\r\n                      '.g-input input'\r\n                    ) as HTMLElement;\r\n                    gradientButtons.push(lastElement);\r\n                    gradientButtons?.forEach(\r\n                      (element: HTMLElement, index: number) => {\r\n                        if (index === 0) {\r\n                          element.ariaLabel =\r\n                            this.colorPickerTexts?.ariaLabel?.back;\r\n                          element.focus();\r\n                          const clickHandlerForGradientPreviousButton = (\r\n                            // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n                            event: any\r\n                          ) => {\r\n                            this.onOpenPalette();\r\n                            event.preventDefault();\r\n                          };\r\n                          const keyDownHandlerForGradientButtons = (\r\n                            event: KeyboardEvent\r\n                          ) => {\r\n                            this.colorPickerKeyDownHandler(\r\n                              gradientButtons,\r\n                              event\r\n                            );\r\n                          };\r\n                          element?.removeEventListener(\r\n                            'click',\r\n                            clickHandlerForGradientPreviousButton\r\n                          );\r\n                          element?.removeEventListener(\r\n                            'keydown',\r\n                            clickHandlerForGradientPreviousButton\r\n                          );\r\n                          if (canAddListener) {\r\n                            element?.addEventListener(\r\n                              'click',\r\n                              clickHandlerForGradientPreviousButton\r\n                            );\r\n                            element?.addEventListener(\r\n                              'keydown',\r\n                              keyDownHandlerForGradientButtons\r\n                            );\r\n                          }\r\n                        }\r\n                        element.role = 'button';\r\n                        element.tabIndex = 0;\r\n                        if (\r\n                          element?.innerText?.trim() ===\r\n                          this.colorPickerTexts?.label?.select\r\n                        ) {\r\n                          element.ariaLabel =\r\n                            this.colorPickerTexts?.ariaLabel?.select;\r\n                          element?.classList?.add('select');\r\n                        } else if (\r\n                          element?.innerText?.trim() ===\r\n                          this.colorPickerTexts?.label?.cancel\r\n                        ) {\r\n                          element.ariaLabel =\r\n                            this.colorPickerTexts?.ariaLabel?.cancel;\r\n                          element?.classList?.add('cancel');\r\n                        }\r\n                        if (index === gradientButtons?.length - 1) {\r\n                          element.role = '';\r\n                        }\r\n                      }\r\n                    );\r\n                  }\r\n                  event.preventDefault();\r\n                }, 250);\r\n              };\r\n              element.removeEventListener(\r\n                'click',\r\n                clickHandlerForMoreColorsButton\r\n              );\r\n              if (canAddListener) {\r\n                element.addEventListener(\r\n                  'click',\r\n                  clickHandlerForMoreColorsButton\r\n                );\r\n              }\r\n            }\r\n            element.removeEventListener(\r\n              'keydown',\r\n              keyDownHandlerForColorPalettes\r\n            );\r\n            if (canAddListener) {\r\n              element.addEventListener(\r\n                'keydown',\r\n                keyDownHandlerForColorPalettes\r\n              );\r\n            }\r\n          });\r\n        }\r\n      }\r\n    }, 250);\r\n  }\r\n  /**\r\n   * Listens keydown event handles to make the palette focusable.\r\n   * @memberof ColorPickerComponent\r\n   * @param {HTMLElement[]} colorPallettesList\r\n   * @param {KeyboardEvent} event\r\n   * @returns {void}\r\n   */\r\n  colorPickerKeyDownHandler(\r\n    colorPallettesList: HTMLElement[],\r\n    event: KeyboardEvent\r\n  ): void {\r\n    const firstElement = colorPallettesList[0];\r\n    const lastElement = colorPallettesList[colorPallettesList.length - 1];\r\n    if (event.code === 'Tab') {\r\n      if (event.shiftKey) {\r\n        if (document.activeElement === firstElement) {\r\n          lastElement.focus();\r\n          event.preventDefault();\r\n        }\r\n      } else if (document.activeElement === lastElement) {\r\n        if (this.paletteContainer?.querySelector('.nav-wrapper')) {\r\n          (\r\n            this.paletteContainer?.querySelector('.nav-wrapper')\r\n              ?.childNodes[0] as HTMLElement\r\n          ).focus();\r\n        } else firstElement.focus();\r\n        event.preventDefault();\r\n      }\r\n    }\r\n    if (event.code === 'Space' || event.code === 'Enter') {\r\n      const targetElement = event.target as HTMLElement;\r\n      if (targetElement?.classList?.contains('button'))\r\n        targetElement?.dispatchEvent(new Event('click'));\r\n      else targetElement?.firstChild?.dispatchEvent(new Event('click'));\r\n      event.preventDefault();\r\n    }\r\n  }\r\n  /**\r\n   * Removing the active listeners while component get destroyed.\r\n   */\r\n  ngOnDestroy() {\r\n    this.colorPickerEventHandlers(false);\r\n  }\r\n}\r\n","<div\r\n  [formGroup]=\"group\"\r\n  [ngClass]=\"\r\n    config?.isLabelAlignedLeft\r\n      ? 'ieeesa-color-picker__label-left'\r\n      : 'ieeesa-color-picker__label-top'\r\n  \"\r\n>\r\n  <mat-label\r\n    class=\"ieeesa-body-sm-14 ieeesa-color-picker__label\"\r\n    *ngIf=\"colorPickerLabel\"\r\n    >{{ colorPickerLabel }}</mat-label\r\n  >\r\n  <div class=\"d-flex\">\r\n    <ngx-colors\r\n      class=\"ieeesa-color-picker\"\r\n      ngx-colors-trigger\r\n      [acceptLabel]=\"paletteSelectLabel\"\r\n      [cancelLabel]=\"paletteCancelLabel\"\r\n      [palette]=\"palette\"\r\n      (input)=\"inputChange($event)\"\r\n      (open)=\"onOpenPalette()\"\r\n      (close)=\"onClosePalette()\"\r\n      (slider)=\"onSliderChange($event)\"\r\n      [overlayClassName]=\"overlayClassName\"\r\n      [formControlName]=\"config.controlName\"\r\n      [format]=\"colorFormat\"\r\n      [hideTextInput]=\"canHideTextInput\"\r\n      [colorsAnimation]=\"colorAnimation\"\r\n      [hideColorPicker]=\"canHideColorPicker\"\r\n      [ariaLabel]=\"colorPickerTexts?.ariaLabel?.colorPicker\"\r\n      [ariaDescription]=\"colorPickerTexts?.ariaDescription\"\r\n    >\r\n    </ngx-colors>\r\n    <button\r\n      class=\"ieeesa-color-picker__toggle-icon\"\r\n      *ngIf=\"isArrowIconNeeded\"\r\n      type=\"button\"\r\n      (click)=\"togglePalette()\"\r\n      [attr.aria-label]=\"colorPickerTexts?.ariaLabel?.colorPicker\"\r\n      [attr.aria-describedby]=\"colorPickerTexts?.ariaDescribedById\"\r\n    >\r\n      <i\r\n        class=\"fa-solid\"\r\n        [ngClass]=\"canShowPalette ? 'fa-caret-up' : 'fa-caret-down'\"\r\n      ></i>\r\n    </button>\r\n    <span\r\n      class=\"ieeesa-color-picker--selected ieeesa-body-md-14\"\r\n      *ngIf=\"isColorCodeLabelNeeded && defaultColor\"\r\n      >{{ defaultColor }}</span\r\n    >\r\n  </div>\r\n  <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n  <ieeesa-form-support-text\r\n    [formGroup]=\"group\"\r\n    [config]=\"config\"\r\n  ></ieeesa-form-support-text>\r\n</div>\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\nimport { MatTooltip } from '@angular/material/tooltip';\r\n/**\r\n * Checks the text is truncated\r\n * @export\r\n * @class TextTruncatedDirective\r\n */\r\n@Directive({\r\n  selector: '[matTooltip][ieeesaTextTruncated]',\r\n  standalone: true,\r\n})\r\nexport class TextTruncatedDirective {\r\n  @Input() elementClassNameToAddTooltip!: string;\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    public tooltip: MatTooltip,\r\n    // eslint-disable-next-line no-unused-vars\r\n    public elementRef: ElementRef<HTMLElement> // eslint-disable-next-line no-empty-function\r\n  ) {}\r\n  @HostListener('mouseenter') mouseOver() {\r\n    this.showTooltip();\r\n  }\r\n  @HostListener('mouseleave') mouseOut() {\r\n    this.hideTooltip();\r\n  }\r\n  @HostListener('touchstart') touchStart() {\r\n    this.showTooltip();\r\n  }\r\n  @HostListener('touchend') touchEnd() {\r\n    this.hideTooltip();\r\n  }\r\n  /**\r\n   * Shows the tooltip based on text overflow exists or not\r\n   * @memberof TextTruncatedDirective\r\n   */\r\n  showTooltip() {\r\n    const element = this.elementClassNameToAddTooltip\r\n      ? (this.elementRef?.nativeElement.querySelector(\r\n          this.elementClassNameToAddTooltip\r\n        ) as HTMLElement)\r\n      : this.elementRef?.nativeElement;\r\n    this.tooltip.disabled = element?.scrollWidth <= element?.clientWidth;\r\n  }\r\n  /**\r\n   * Disables the tooltip\r\n   * @memberof TextTruncatedDirective\r\n   */\r\n  hideTooltip() {\r\n    this.tooltip.disabled = true;\r\n  }\r\n}\r\n","import { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  MatAutocompleteModule,\r\n  MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,\r\n  MatAutocompleteTrigger,\r\n} from '@angular/material/autocomplete';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { Subject, fromEvent } from 'rxjs';\r\nimport { map, takeUntil, debounceTime } from 'rxjs/operators';\r\nimport * as autocompleteConstInfo from '../../assets/constants.json';\r\nimport { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\nimport { AutoCompleteOption } from '../../models/autocomplete-option.model';\r\nimport { SelectOption } from '@ieeesa-npm/models';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { FormErrorComponent } from '../form-error/form-error.component';\r\nimport { FormSupportTextComponent } from '../form-support-text/form-support-text.component';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { TextTruncatedDirective } from '../../directives/text-truncated/text-truncated.directive';\r\n/**\r\n * MultiSelectAutocompleteComponent allows to search the option(s) from the list and select the option(s) from the autocomplete search results.\r\n * @class MultiSelectAutocompleteComponent\r\n * @implements {OnInit}\r\n * @implements {FormField}\r\n * @implements {OnDestroy}\r\n * @implements {AfterViewInit}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-multi-select-autocomplete',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    FormErrorComponent,\r\n    FormSupportTextComponent,\r\n    MatOptionModule,\r\n    MatAutocompleteModule,\r\n    MatInputModule,\r\n    MatIconModule,\r\n    MatButtonModule,\r\n    MatCheckboxModule,\r\n    MatChipsModule,\r\n    MatTooltipModule,\r\n    TextTruncatedDirective,\r\n  ],\r\n  providers: [\r\n    {\r\n      provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS,\r\n      useValue: {\r\n        overlayPanelClass: 'ieeesa-multi-select-autocomplete-overlay-panel',\r\n      },\r\n    },\r\n  ],\r\n  templateUrl: './multi-select-autocomplete.component.html',\r\n  styleUrls: ['./multi-select-autocomplete.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MultiSelectAutocompleteComponent\r\n  implements OnInit, FormField, OnDestroy, AfterViewInit\r\n{\r\n  separatorKeysCodes: number[] = [ENTER, COMMA];\r\n  config!: FieldConfig;\r\n  group!: FormGroup;\r\n  selectedOptions: SelectOption[] = [];\r\n  autoCompleteOptionList!: AutoCompleteOption[];\r\n  /**\r\n   * Sets the options for multi select autocomplete.\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  @Input()\r\n  set multiSelectAutoCompleteOptions(value: AutoCompleteOption[]) {\r\n    this.autoCompleteOptionList = value;\r\n  }\r\n  /**\r\n   * Returns the autocomplete options list.\r\n   * @readonly\r\n   * @type {AutoCompleteOption[]}\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  get multiSelectAutoCompleteOptions(): AutoCompleteOption[] {\r\n    return this.autoCompleteOptionList;\r\n  }\r\n  @Output() multiSelectAutoCompleteSearchValue = new EventEmitter<string>();\r\n  @Output() multiSelectAutoCompleteClearSearchValue =\r\n    new EventEmitter<string>();\r\n  @Output() multiSelectAutoCompleteOptionsSelected = new EventEmitter<\r\n    AutoCompleteOption[]\r\n  >();\r\n  @ViewChild('multiSelectAutoComplete') multiSelectAutoComplete!: ElementRef;\r\n  @ViewChild('autocompleteTrigger') matACTrigger!: MatAutocompleteTrigger;\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  autocompleteConstInfo: any = autocompleteConstInfo;\r\n  removeIconURL =\r\n    this.autocompleteConstInfo?.multiSelectAutoComplete?.icons?.remove;\r\n  clearAllIconURL =\r\n    this.autocompleteConstInfo?.multiSelectAutoComplete?.icons?.clearAll;\r\n  clearAll =\r\n    this.autocompleteConstInfo?.multiSelectAutoComplete?.label.clearAll;\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private formUtilityService: FormUtilityService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private readonly changeDetectorRef: ChangeDetectorRef // eslint-disable-next-line no-empty-function\r\n  ) {}\r\n\r\n  /**\r\n   * Implementation of ngOnInit lifecycle hook method to initialize components instance properties.\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  ngOnInit(): void {\r\n    this.config =\r\n      this.config ??\r\n      this.formUtilityService.getFormFieldConfig(\r\n        'multiSelectAutocomplete',\r\n        FormControlType.AUTO_COMPLETE\r\n      );\r\n    this.group =\r\n      this.group ??\r\n      this.formUtilityService.getFormGroup('multiSelectAutocomplete');\r\n    this.multiSelectAutoCompleteOptions =\r\n      this.config?.multiSelectAutoCompleteOptions ??\r\n      this.multiSelectAutoCompleteOptions;\r\n    if (this.config?.value) this.selectedOptions = this.config?.value;\r\n  }\r\n\r\n  /**\r\n   * Initialize the form control change event once the form control is ready on ngAfterViewInit by calling onValueChanges method.\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  ngAfterViewInit(): void {\r\n    if (this.selectedOptions?.length)\r\n      this.group?.get(this.config?.controlName)?.setErrors(null);\r\n    this.onValueChanges();\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  /**\r\n   * Emits an multiSelectAutoCompleteSearchValue change event when the value is changed and value is greater than minCharToSearch or equal to zero.\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  onValueChanges(): void {\r\n    // Search is driven off the raw keyup stream (not the reactive control's\r\n    // valueChanges) so type-ahead keeps working even when the control uses\r\n    // updateOn: 'blur' (which defers valueChanges until blur). Below the min\r\n    // character count we emit the clear-search event; at/above it we emit the\r\n    // search value so the parent fetches options.\r\n    fromEvent(this.multiSelectAutoComplete?.nativeElement, 'keyup')\r\n      .pipe(\r\n        takeUntil(this.destroy$),\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        map((event: any) => event?.target?.value ?? ''),\r\n        debounceTime(this.autocompleteConstInfo?.autocomplete?.debounceTime)\r\n      )\r\n      .subscribe((text: string) => {\r\n        const minChar =\r\n          this.autocompleteConstInfo?.autocomplete?.minCharToSearch;\r\n        if (text === '') {\r\n          this.handleFieldError();\r\n          this.multiSelectAutoCompleteClearSearchValue.emit(text);\r\n        } else if (text.length < minChar) {\r\n          this.multiSelectAutoCompleteClearSearchValue.emit(text);\r\n        } else {\r\n          this.multiSelectAutoCompleteSearchValue.emit(text);\r\n        }\r\n      });\r\n\r\n    // valueChanges still handles the empty-reset case (e.g. programmatic clears\r\n    // and the blur-flushed control value) to re-sync field validity.\r\n    this.group?.controls[this.config?.controlName]?.valueChanges\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((value: string | SelectOption[]) => {\r\n        // Only react to the empty-string transition (user cleared the typed\r\n        // text). Do NOT also match an empty array: handleFieldError() itself\r\n        // calls setValue(this.selectedOptions) — which is [] when empty — and\r\n        // would re-enter this branch and recurse until a stack overflow. The\r\n        // validators already handle the empty-array case.\r\n        if (value === '') {\r\n          this.handleFieldError();\r\n        }\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Handles field error by setting the appropriate form control errors.\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  handleFieldError(): void {\r\n    this.group?.controls[this.config?.controlName]?.setValue(\r\n      this.selectedOptions\r\n    );\r\n    if (this.selectedOptions?.length) {\r\n      this.group?.get(this.config?.controlName)?.setErrors({\r\n        required: false,\r\n      });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Adds a newly entered option to the selectedOptions array.\r\n   * @param {*} event -The event containing the input and value.\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  add(event: MatChipInputEvent): void {\r\n    if (this.autoCompleteOptionList.length) return;\r\n    const control = this.group?.get(this.config?.controlName);\r\n    const input = event?.chipInput?.inputElement;\r\n    const value = (event?.value || '').trim();\r\n    if (value.length === 0) return;\r\n    // Validate the raw token before accepting it. With updateOn: 'blur' the\r\n    // control's errors are not computed while the input is focused, so we must\r\n    // flush validation against the typed value (rather than read stale/absent\r\n    // control.errors) — otherwise out-of-bounds free text would be added and\r\n    // then skipped by skipWhenArray once it becomes a selection.\r\n    control?.setValue(value, { emitEvent: false });\r\n    control?.updateValueAndValidity({ emitEvent: false });\r\n    const minLength = control?.errors?.['minlength']?.requiredLength;\r\n    const maxLength = control?.errors?.['maxlength']?.requiredLength;\r\n    if (\r\n      (value.length >= minLength && value.length <= maxLength) ||\r\n      (minLength === undefined && maxLength === undefined)\r\n    ) {\r\n      this.selectedOptions.push({ id: '', name: value });\r\n      if (input) input.value = '';\r\n      // Also reset the reactive control so the search text is fully cleared\r\n      // after an Enter-added org (parity with the dropdown-select path).\r\n      this.clearSearchInput();\r\n      this.formatSelectedOption(this.selectedOptions);\r\n    }\r\n  }\r\n  /**\r\n   * Removes a selected option from the selectedOptions array.\r\n   * @param {SelectOption} removedOption -The option to remove.\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  onOptionRemoved(removedOption: SelectOption): void {\r\n    const index = this.selectedOptions?.findIndex(\r\n      (option: SelectOption) => option.id === removedOption.id\r\n    );\r\n    if (index >= 0) {\r\n      this.selectedOptions?.splice(index, 1);\r\n    }\r\n    if (this.selectedOptions?.length === 0) {\r\n      this.group.value[this.config?.controlName] = '';\r\n      this.group?.controls[this.config?.controlName].setValue('');\r\n      this.selectedOptions = [];\r\n      this.autoCompleteOptionList = [];\r\n      this.handleFieldError();\r\n    }\r\n    this.formatSelectedOption(this.selectedOptions);\r\n  }\r\n\r\n  /**\r\n   * Handles the selection of an autocomplete option.\r\n   * @param {AutoCompleteOption} option  -The selected autocomplete option.\r\n   * @return {AutoCompleteOption}\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  onChange(option: any): AutoCompleteOption {\r\n    const value = option?.value;\r\n    if (this.isCheckboxSelected(value)) {\r\n      this.onOptionRemoved(value);\r\n    } else {\r\n      this.selectedOptions.push(value);\r\n    }\r\n    this.formatSelectedOption(this.selectedOptions);\r\n    requestAnimationFrame(() => {\r\n      // Clear the typed search term after selection so the input is empty and\r\n      // ready for the next search, while the selection remains as a chip.\r\n      // Done here (inside rAF) so it runs after Material's [displayWith] writes\r\n      // the option's display value back into the input on optionSelected.\r\n      this.clearSearchInput();\r\n      this.multiSelectAutoComplete?.nativeElement.focus();\r\n    });\r\n    // Drop the previously fetched options so the dropdown does not re-open with\r\n    // stale results when the user clicks back into the now-empty input. Deferred\r\n    // to a macrotask so it runs AFTER Material has fully finished processing this\r\n    // selection (clearing it earlier desyncs the option/checkbox state and drops\r\n    // the chip). The list repopulates from the parent search on the next keystroke.\r\n    setTimeout(() => {\r\n      this.autoCompleteOptionList = [];\r\n    });\r\n    return value;\r\n  }\r\n\r\n  /**\r\n   * Clears the typeahead search text from both the reactive form control and the\r\n   * native input element without touching the selected chips. Uses\r\n   * `emitEvent: false` so the valueChanges search stream is not re-triggered.\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  private clearSearchInput(): void {\r\n    // Clear only the visible search text in the native input. The reactive\r\n    // control's value must stay bound to the selected options (chips), so we do\r\n    // NOT set it to '' here — that would drop the selection and re-trigger the\r\n    // required validator. handleFieldError() re-syncs the control value to\r\n    // selectedOptions and clears the required error when chips exist.\r\n    if (this.multiSelectAutoComplete?.nativeElement) {\r\n      this.multiSelectAutoComplete.nativeElement.value = '';\r\n    }\r\n    this.handleFieldError();\r\n  }\r\n\r\n  /**\r\n   * Fires when focus leaves the search input (click outside / tab away). If text\r\n   * was typed but never committed as a chip (i.e. nothing was picked from the\r\n   * dropdown), clear it so stale search text is not left behind. Deferred with a\r\n   * short timeout so that if the blur was caused by clicking a dropdown option,\r\n   * onChange commits the selection first (and has already cleared the text),\r\n   * making this a no-op in that case. Clicking back into the same field does not\r\n   * blur it, so the text is preserved while the user is still editing.\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  onInputBlur(): void {\r\n    setTimeout(() => {\r\n      const hasLeftoverText =\r\n        !!this.multiSelectAutoComplete?.nativeElement?.value?.trim();\r\n      if (hasLeftoverText) {\r\n        this.clearSearchInput();\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Formats the selected options and emits the multiSelectAutoCompleteOptionSelected event.\r\n   * @param {SelectOption[]} selectedOptions -Array of selected options.\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  formatSelectedOption(selectedOptions: SelectOption[]) {\r\n    const formattedOptions = selectedOptions?.map((option) => {\r\n      return {\r\n        id: option.id,\r\n        name: option.name,\r\n      };\r\n    });\r\n    this.multiSelectAutoCompleteOptionsSelected?.emit(formattedOptions);\r\n  }\r\n\r\n  /**\r\n   * Displays the name of the option\r\n   * @param {AutoCompleteOption} option\r\n   * @return {*}  {string}\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  displayOptionName(option: AutoCompleteOption): string {\r\n    return option?.name ? option.name : '';\r\n  }\r\n\r\n  /**\r\n   * Tracks the option by its index or id.\r\n   * @param {number} index\r\n   * @param {SelectOption} option\r\n   * @return {*}  {(number | string)}\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  trackByFn(index: number, option: SelectOption): number | string {\r\n    return option.id;\r\n  }\r\n\r\n  /**\r\n   * Checks if the checkbox is selected.\r\n   * @param {AutoCompleteOption} option\r\n   * @return {*}  {boolean}\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  isCheckboxSelected(option: AutoCompleteOption): boolean {\r\n    return this.selectedOptions?.some((item) => item.id === option.id);\r\n  }\r\n\r\n  /**\r\n   * Clears all selected options.\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  clearSelections(): void {\r\n    this.group.value[this.config?.controlName] = '';\r\n    this.group?.controls[this.config?.controlName].setValue('');\r\n    this.selectedOptions = [];\r\n    this.autoCompleteOptionList = [];\r\n    this.formatSelectedOption(this.selectedOptions);\r\n    this.handleFieldError();\r\n  }\r\n\r\n  /**\r\n   * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n   * @memberof MultiSelectAutocompleteComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n}\r\n","<div\r\n  class=\"ieeesa-multi-select-autocomplete\"\r\n  [formGroup]=\"group\"\r\n  *ngIf=\"group\"\r\n  [ngClass]=\"\r\n    config.isLabelAlignedLeft\r\n      ? 'ieeesa-multi-select-autocomplete-field__label-left'\r\n      : 'ieeesa-multi-select-autocomplete-field__label-top'\r\n  \"\r\n>\r\n  <mat-label class=\"ieeesa-body-sm-14 ieeesa-multi-select-autocomplete__label\"\r\n    >{{ config.label }}</mat-label\r\n  >\r\n  <mat-form-field\r\n    class=\"ieeesa-multi-select-autocomplete__mat-form-field\"\r\n    appearance=\"outline\"\r\n  >\r\n    <mat-chip-grid\r\n      #chipGrid\r\n      [attr.aria-label]=\"autocompleteConstInfo?.multiSelectAutoComplete?.ariaLabel?.selectedOptions\"\r\n    >\r\n      <mat-chip-row\r\n        *ngFor=\"let option of selectedOptions; trackBy: trackByFn\"\r\n        [attr.aria-label]=\"option?.name\"\r\n        [removable]=\"true\"\r\n        (removed)=\"onOptionRemoved(option)\"\r\n      >\r\n        <p\r\n          ieeesaTextTruncated\r\n          [matTooltip]=\"option.name\"\r\n          class=\"ieeesa-label-lg-bold-16 m-0\"\r\n        >\r\n          {{ option.name }}\r\n        </p>\r\n        <button\r\n          matChipRemove\r\n          [attr.aria-label]=\"autocompleteConstInfo?.multiSelectAutoComplete?.ariaLabel?.removeOption + option.name\"\r\n        >\r\n          <svg class=\"ieeesa-chip__svg-avatar\" matChipAvatar>\r\n            <use [attr.xlink:href]=\"removeIconURL\"></use>\r\n          </svg>\r\n        </button>\r\n      </mat-chip-row>\r\n    </mat-chip-grid>\r\n    <input\r\n      matInput\r\n      class=\"ieeesa-multi-select-autocomplete__input ieeesa-title-sm-16\"\r\n      [matAutocomplete]=\"matAutocomplete\"\r\n      [placeholder]=\"config.placeholder ?? ''\"\r\n      [formControlName]=\"config.controlName\"\r\n      [name]=\"config.controlName\"\r\n      [attr.aria-label]=\"config.ariaLabel\"\r\n      [aria-describedby]=\"config.ariaDescribedById ?? ''\"\r\n      #multiSelectAutoComplete\r\n      [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n      (matChipInputTokenEnd)=\"add($event)\"\r\n      (blur)=\"onInputBlur()\"\r\n      [matChipInputFor]=\"chipGrid\"\r\n    />\r\n    <mat-autocomplete\r\n      #matAutocomplete=\"matAutocomplete\"\r\n      (optionSelected)=\"onChange($event.option)\"\r\n      [displayWith]=\"displayOptionName\"\r\n      class=\"ieeesa-multi-select-autocomplete__autocomplete-list\"\r\n    >\r\n      <mat-option\r\n        *ngFor=\"let option of autoCompleteOptionList; trackBy: trackByFn\"\r\n        [value]=\"option\"\r\n      >\r\n        <mat-checkbox color=\"primary\" [checked]=\"isCheckboxSelected(option)\">\r\n        </mat-checkbox>\r\n        {{ option.name }}\r\n      </mat-option>\r\n    </mat-autocomplete>\r\n    <button\r\n      type=\"button\"\r\n      matSuffix\r\n      mat-icon-button\r\n      [matTooltip]=\"clearAll\"\r\n      [attr.aria-label]=\"autocompleteConstInfo.ariaLabel.clear\"\r\n      *ngIf=\"selectedOptions.length > 0\"\r\n      (click)=\"clearSelections()\"\r\n    >\r\n      <svg class=\"ieeesa-multi-select-autocomplete__svg-clear-all\">\r\n        <use [attr.xlink:href]=\"clearAllIconURL\"></use>\r\n      </svg>\r\n    </button>\r\n  </mat-form-field>\r\n  <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </ieeesa-form-error>\r\n  <ieeesa-form-support-text\r\n    [formGroup]=\"group\"\r\n    [config]=\"config\"\r\n  ></ieeesa-form-support-text>\r\n</div>\r\n","import {\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n  selector: '[ieeesaObserveDomChange]',\r\n  standalone: true,\r\n})\r\nexport class ObserveDomChangeDirective implements OnInit, OnDestroy {\r\n  observer!: MutationObserver;\r\n  @Input() isSubTreeAttributeNeeded = false;\r\n  @Input() observedElementClassName!: string;\r\n  @Output()\r\n  public domChange = new EventEmitter();\r\n  @Output() domNodesChange = new EventEmitter<MutationRecord[]>();\r\n\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(private elementRef: ElementRef) {}\r\n  /**\r\n   * Observes the dom changes and emits dom change event.\r\n   * @memberof ObserveDomChangeDirective\r\n   */\r\n  ngOnInit(): void {\r\n    this.observer = new MutationObserver((mutations: MutationRecord[]) => {\r\n      mutations?.forEach((mutation: MutationRecord) =>\r\n        this.domChange?.emit(mutation)\r\n      );\r\n      this.domNodesChange.emit(mutations);\r\n    });\r\n    this.observer?.observe(\r\n      this.observedElementClassName\r\n        ? this.elementRef?.nativeElement.querySelector(\r\n            this.observedElementClassName\r\n          )\r\n        : this.elementRef?.nativeElement,\r\n      {\r\n        attributes: true,\r\n        childList: true,\r\n        characterData: true,\r\n        subtree: this.isSubTreeAttributeNeeded,\r\n      }\r\n    );\r\n  }\r\n  /**\r\n   * Disconnects the observer when the directive is destroyed.\r\n   * @memberof ObserveDomChangeDirective\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.observer?.disconnect();\r\n  }\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport {\r\n  EditorConfig,\r\n  NgxSimpleTextEditorModule,\r\n  ST_BUTTONS,\r\n} from 'ngx-simple-text-editor';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { FormUtilityService } from '../../services/form-utility.service';\r\nimport { FormErrorComponent } from '../form-error/form-error.component';\r\nimport { FormSupportTextComponent } from '../form-support-text/form-support-text.component';\r\nimport * as constants from '../../assets/constants.json';\r\nimport { ObserveDomChangeDirective } from '../../directives/observe-dom-change/observe-dom-change.directive';\r\n\r\n@Component({\r\n  selector: 'ieeesa-rich-text-editor',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    NgxSimpleTextEditorModule,\r\n    MatFormFieldModule,\r\n    ReactiveFormsModule,\r\n    FormErrorComponent,\r\n    FormSupportTextComponent,\r\n    ObserveDomChangeDirective,\r\n  ],\r\n  templateUrl: './rich-text-editor.component.html',\r\n  styleUrls: ['./rich-text-editor.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class RichTextEditorComponent implements OnInit, AfterViewInit {\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  richTextEditorTexts: any = constants?.richTextEditor;\r\n  group!: FormGroup;\r\n  config!: FieldConfig;\r\n  contentElementClassName = '.st-area';\r\n  @ViewChild('editor') rtEditor!: ElementRef;\r\n  private editorContentValue = '';\r\n  @Input() set value(value: string) {\r\n    this.editorContentValue = value;\r\n    if (this.group)\r\n      this.group.get(this.config.controlName)?.setValue(this.value);\r\n  }\r\n  get value(): string {\r\n    return this.editorContentValue;\r\n  }\r\n  @Input() editorLabel = this.richTextEditorTexts?.label?.editor;\r\n  @Input() formControlName = 'richTextEditor';\r\n  @Input() isEditorLabelNeeded = true;\r\n  private editorConfigInfo: EditorConfig = {\r\n    placeholder: '',\r\n    buttons: [],\r\n  };\r\n  /**\r\n   * Sets the editor config info.\r\n   * @param {EditorConfig} editorConfig\r\n   * @memberof RichTextEditorComponent\r\n   */\r\n  @Input() set editorConfig(editorConfig: EditorConfig) {\r\n    this.editorConfigInfo = editorConfig;\r\n    if (editorConfig?.buttons?.length) {\r\n      this.editorConfigInfo.buttons = editorConfig?.buttons;\r\n      this.setToolbarButtonType();\r\n    } else {\r\n      this.editorConfigInfo.buttons = ST_BUTTONS;\r\n    }\r\n  }\r\n  /**\r\n   * Returns the editor config info.\r\n   * @returns {EditorConfig}\r\n   * @memberof RichTextEditorComponent\r\n   */\r\n  get editorConfig(): EditorConfig {\r\n    return this.editorConfigInfo;\r\n  }\r\n  @Output() richTextEditorContentChange = new EventEmitter<string>();\r\n  colorPickerInput!: HTMLInputElement;\r\n  colorPickerButton!: HTMLElement;\r\n  operatingSystemName!: string;\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private elementRef: ElementRef,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private renderer: Renderer2,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private formUtilityService: FormUtilityService // eslint-disable-next-line no-empty-function\r\n  ) {}\r\n  /**\r\n   * Initializes the form group and config details.\r\n   * @memberof RichTextEditorComponent\r\n   */\r\n  ngOnInit(): void {\r\n    this.group =\r\n      this.group ?? this.formUtilityService.getFormGroup(this.formControlName);\r\n    this.config =\r\n      this.config ??\r\n      this.formUtilityService.getFormFieldConfig(\r\n        this.formControlName,\r\n        FormControlType.RICH_TEXT_EDITOR\r\n      );\r\n    if (this.config) {\r\n      this.editorLabel = this.config?.label ?? this.editorLabel;\r\n      this.value = this.config?.value ?? this.value;\r\n      this.editorConfig.buttons = this.config.editorConfig?.buttons?.length\r\n        ? this.config.editorConfig?.buttons\r\n        : this.editorConfig?.buttons;\r\n    }\r\n    this.group.get(this.config.controlName)?.setValue(this.value);\r\n    this.operatingSystemName = this.getOperatingSystemName();\r\n  }\r\n  /**\r\n   * Sets RTE toolbar buttons button type to button.\r\n   * @returns {void}\r\n   * @memberof RichTextEditorComponent\r\n   */\r\n  ngAfterViewInit(): void {\r\n    this.setToolbarButtonType();\r\n    if (['Mac OS', 'iOS']?.includes(this.operatingSystemName)) {\r\n      this.setColorPickerInputStyle();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Sets the height and width of the input field color to open the color picker in Safari.\r\n   * @memberof RichTextEditorComponent\r\n   * @returns {void}\r\n   */\r\n  setColorPickerInputStyle(): void {\r\n    this.colorPickerInput?.removeAttribute('onmousedown');\r\n    this.colorPickerInput?.removeAttribute('onselectstart');\r\n    this.colorPickerButton = this.elementRef?.nativeElement?.querySelector(\r\n      'st-color-picker button'\r\n    ) as HTMLButtonElement;\r\n    if (this.colorPickerButton) {\r\n      this.renderer?.setStyle(this.colorPickerButton, 'position', 'relative');\r\n      this.renderer?.setStyle(this.colorPickerButton, 'width', '130px');\r\n    }\r\n    if (this.colorPickerInput) {\r\n      this.renderer?.setStyle(this.colorPickerInput, 'width', '130px');\r\n      this.renderer?.setStyle(this.colorPickerInput, 'height', '34px');\r\n      this.renderer?.setStyle(this.colorPickerInput, 'opacity', '0');\r\n      this.renderer?.setStyle(this.colorPickerInput, 'position', 'absolute');\r\n      this.renderer?.setStyle(this.colorPickerInput, 'left', '0');\r\n      this.renderer?.setStyle(this.colorPickerInput, 'top', '0');\r\n    }\r\n    const paletteIcon =\r\n      this.elementRef?.nativeElement?.querySelector('st-color-picker i');\r\n    if (paletteIcon) {\r\n      this.renderer?.setStyle(paletteIcon, 'position', 'absolute');\r\n      this.renderer?.setStyle(paletteIcon, 'left', '90px');\r\n      this.renderer?.setStyle(paletteIcon, 'top', '12px');\r\n      this.renderer?.setStyle(paletteIcon, 'padding-left', '10px');\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Sets RTE toolbar buttons button type to button to prevent form submit event when the toolbar buttons clicked.\r\n   */\r\n  setToolbarButtonType(): void {\r\n    const editorToolbar = this.elementRef?.nativeElement?.querySelectorAll(\r\n      '.st-toolbar button'\r\n    ) as HTMLElement[];\r\n    editorToolbar?.forEach((toolBarButton: HTMLElement) => {\r\n      this.renderer?.setAttribute(toolBarButton, 'type', 'button');\r\n    });\r\n    this.colorPickerInput = this.elementRef?.nativeElement?.querySelector(\r\n      '.st-toolbar input.st-color-picker'\r\n    ) as HTMLInputElement;\r\n    if (this.colorPickerInput)\r\n      this.renderer?.setAttribute(\r\n        this.colorPickerInput,\r\n        'aria-label',\r\n        this.richTextEditorTexts?.ariaLabel?.colorPicker\r\n      );\r\n  }\r\n  /**\r\n   * Emits the typed editor content to consuming components.\r\n   * @returns {void}\r\n   * @memberof RichTextEditorComponent\r\n   */\r\n  onRichTextEditorContentChange(): void {\r\n    const richTextEditorElement = this.elementRef?.nativeElement.querySelector(\r\n      this.contentElementClassName\r\n    ) as HTMLElement;\r\n    if (richTextEditorElement)\r\n      this.richTextEditorContentChange.emit(richTextEditorElement.innerHTML);\r\n  }\r\n  /**\r\n   * Gets the operating system name of the client machine.\r\n   * @memberof RichTextEditorComponent\r\n   * @returns {string}\r\n   */\r\n  getOperatingSystemName(): string {\r\n    const userAgent = window.navigator.userAgent,\r\n      platform =\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        (window.navigator as any)?.userAgentData?.platform ||\r\n        window.navigator.platform,\r\n      macosPlatforms = ['macOS', 'Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'],\r\n      windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'],\r\n      iosPlatforms = ['iPhone', 'iPad', 'iPod'];\r\n    let os = '';\r\n    if (macosPlatforms.indexOf(platform) !== -1) {\r\n      os = 'Mac OS';\r\n    } else if (iosPlatforms.indexOf(platform) !== -1) {\r\n      os = 'iOS';\r\n    } else if (windowsPlatforms.indexOf(platform) !== -1) {\r\n      os = 'Windows';\r\n    } else if (/Android/.test(userAgent)) {\r\n      os = 'Android';\r\n    } else if (/Linux/.test(platform)) {\r\n      os = 'Linux';\r\n    }\r\n    return os;\r\n  }\r\n}\r\n","<div\r\n  [formGroup]=\"group\"\r\n  [ngClass]=\"\r\n    config?.isLabelAlignedLeft\r\n      ? 'ieeesa-rich-text-editor__label-left'\r\n      : 'ieeesa-rich-text-editor__label-top'\r\n  \"\r\n  class=\"ieeesa-rich-text-editor\"\r\n>\r\n  <mat-label\r\n    class=\"ieeesa-body-sm-14 ieeesa-rich-text-editor__label\"\r\n    *ngIf=\"isEditorLabelNeeded\"\r\n    >{{ editorLabel }}</mat-label\r\n  >\r\n  <st-editor\r\n    [config]=\"editorConfig\"\r\n    [ariaLabel]=\"richTextEditorTexts?.ariaLabel.editor\"\r\n    [formControlName]=\"config.controlName\"\r\n    ieeesaObserveDomChange      \r\n    [observedElementClassName]=\"contentElementClassName\"  \r\n    [isSubTreeAttributeNeeded]=\"true\"\r\n    (domNodesChange)=\"onRichTextEditorContentChange()\"\r\n  ></st-editor>\r\n  <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"></ieeesa-form-error>\r\n  <ieeesa-form-support-text\r\n    [formGroup]=\"group\"\r\n    [config]=\"config\"\r\n  ></ieeesa-form-support-text>\r\n</div>\r\n","import {\r\n  ComponentRef,\r\n  Directive,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  Type,\r\n  ViewContainerRef,\r\n} from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormField } from '../../models/form-field.model';\r\nimport { InputComponent } from '../../components/input/input.component';\r\nimport { AutocompleteComponent } from '../../components/autocomplete/autocomplete.component';\r\nimport { CheckboxComponent } from '../../components/checkbox/checkbox.component';\r\nimport { DatePickerComponent } from '../../components/date-picker/date-picker.component';\r\nimport { RadioComponent } from '../../components/radio/radio.component';\r\nimport { SearchComponent } from '../../components/search/search.component';\r\nimport { SelectComponent } from '../../components/select/select.component';\r\nimport { TextAreaComponent } from '../../components/text-area/text-area.component';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { CheckboxOption } from '@ieeesa-npm/models';\r\nimport { AddFormGroupComponent } from '../../components/add-form-group/add-form-group.component';\r\nimport { TimePickerComponent } from '../../components/time-picker/time-picker.component';\r\nimport { SelectedDate } from '../../models/selected-date.model';\r\nimport { SelectedTime } from '../../models/selected-time.model';\r\nimport { LinkEventEmitType } from '../../models/event-emit-type.model';\r\nimport { SlideToggleComponent } from '../../components/slide-toggle/slide-toggle.component';\r\nimport { SlideToggleOption } from '../../models/slide-toggle-options.model';\r\nimport { FileUploadComponent } from '../../components/file-upload/file-upload.component';\r\nimport { SelectOpenedState } from '../../models/select-opened-state.model';\r\nimport { ColorPickerComponent } from '../../components/color-picker/color-picker.component';\r\nimport { RadioOption } from '../../models/radio-option.model';\r\nimport { IconButton } from '@ieeesa-npm/models';\r\nimport { MultiSelectAutocompleteComponent } from '../../components/multi-select-autocomplete/multi-select-autocomplete.component';\r\nimport { AutoCompleteOption } from '../../models/autocomplete-option.model';\r\nimport { RichTextEditorComponent } from '../../components/rich-text-editor/rich-text-editor.component';\r\nimport { FileUploadStatus } from '../../models/file-upload-status.model';\r\nimport { FileDownloadAndDeleteConfig } from '../../models/file-download-config.model';\r\n\r\nconst components: { [type: string]: Type<FormField> } = {\r\n  [FormControlType.INPUT]: InputComponent,\r\n  [FormControlType.TEXT_AREA]: TextAreaComponent,\r\n  [FormControlType.SELECT]: SelectComponent,\r\n  [FormControlType.SEARCH]: SearchComponent,\r\n  [FormControlType.DATE]: DatePickerComponent,\r\n  [FormControlType.CHECKBOX]: CheckboxComponent,\r\n  [FormControlType.RADIO]: RadioComponent,\r\n  [FormControlType.AUTO_COMPLETE]: AutocompleteComponent,\r\n  [FormControlType.ADD_FORM_GROUP]: AddFormGroupComponent,\r\n  [FormControlType.TIME_PICKER]: TimePickerComponent,\r\n  [FormControlType.SLIDE_TOGGLE]: SlideToggleComponent,\r\n  [FormControlType.COLOR_PICKER]: ColorPickerComponent,\r\n  [FormControlType.FILE_UPLOAD]: FileUploadComponent,\r\n  [FormControlType.MULTI_SELECT_AUTO_COMPLETE]:\r\n    MultiSelectAutocompleteComponent,\r\n  [FormControlType.RICH_TEXT_EDITOR]: RichTextEditorComponent,\r\n};\r\n\r\n/**\r\n * Provides the implementation of DynamicFormFieldDirective which hosts and creates the form fields components dynamically.\r\n * @export\r\n * @class DynamicFormFieldDirective\r\n * @implements {FormField}\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\n@Directive({\r\n  selector: '[ieeesaDynamicFormField]',\r\n  standalone: true,\r\n})\r\nexport class DynamicFormFieldDirective implements FormField, OnInit, OnDestroy {\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  private _config!: FieldConfig;\r\n  private _group!: FormGroup;\r\n  /**\r\n   * Sets the form field configuration\r\n   * @memberof DynamicFormFieldDirective\r\n   */\r\n  @Input()\r\n  set config(value: FieldConfig) {\r\n    this._config = value;\r\n    if (this.component) {\r\n      this.loadComponent();\r\n    }\r\n  }\r\n  get config(): FieldConfig {\r\n    return this._config;\r\n  }\r\n\r\n  /**\r\n   * Sets the form group\r\n   * @memberof DynamicFormFieldDirective\r\n   */\r\n  @Input()\r\n  set group(value: FormGroup) {\r\n    if (this.component?.instance) {\r\n      this.component.instance.group = value;\r\n    }\r\n    this._group = value;\r\n  }\r\n  get group(): FormGroup {\r\n    return this._group;\r\n  }\r\n  private _fileUploadStatus!: FileUploadStatus;\r\n\r\n  @Input() get fileUploadStatus(): FileUploadStatus {\r\n    return this._fileUploadStatus;\r\n  }\r\n  set fileUploadStatus(value: FileUploadStatus) {\r\n    if (this.component?.instance) {\r\n      this.component.instance.fileUploadStatus = value;\r\n    }\r\n    this._fileUploadStatus = value;\r\n  }\r\n\r\n  private _fileDownloadAndDeleteConfig!: FileDownloadAndDeleteConfig;\r\n  @Input()\r\n  set fileDownloadAndDeleteConfig(value: FileDownloadAndDeleteConfig) {\r\n    if (this.component?.instance) {\r\n      this.component.instance.fileUploadStatus = value;\r\n    }\r\n    this._fileDownloadAndDeleteConfig = value;\r\n  }\r\n  get fileDownloadAndDeleteConfig(): FileDownloadAndDeleteConfig {\r\n    return this._fileDownloadAndDeleteConfig;\r\n  }\r\n\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  private _submitResponse!: any;\r\n  /**\r\n   * Sets the submit response of form submit event\r\n   * @memberof DynamicFormFieldDirective\r\n   */\r\n  @Input()\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  set submitResponse(value: any) {\r\n    if (this.component?.instance) {\r\n      this.component.instance.submitResponse = value;\r\n    }\r\n    this._submitResponse = value;\r\n  }\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  get submitResponse(): any {\r\n    return this._submitResponse;\r\n  }\r\n\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  private _searchResponse!: any;\r\n  /**\r\n   * Sets the form search response of form search apply.\r\n   * @memberof DynamicFormFieldDirective\r\n   */\r\n  @Input()\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  set searchResponse(value: any) {\r\n    if (this.component?.instance) {\r\n      this.component.instance.searchResponse = value;\r\n    }\r\n    this._searchResponse = value;\r\n  }\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  get searchResponse(): any {\r\n    return this._searchResponse;\r\n  }\r\n\r\n  @Output() formSearchApply = new EventEmitter<Event>();\r\n  @Output() formDropdownSelected = new EventEmitter<Event>();\r\n  @Output() formDateSelected = new EventEmitter<SelectedDate>();\r\n  @Output() formTimeSelected = new EventEmitter<SelectedTime>();\r\n  @Output() formSelectedDateRange = new EventEmitter<{\r\n    startDate: string;\r\n    endDate: string;\r\n  }>();\r\n  @Output() formSelectSearch = new EventEmitter<{\r\n    searchEvent: Event;\r\n    controlName: string;\r\n  }>();\r\n  @Output() formAutoCompleteSearch = new EventEmitter<string>();\r\n  @Output() autoCompleteClearSearchValue = new EventEmitter<string>();\r\n  @Output() autoCompleteOptionSelected = new EventEmitter<Event>();\r\n  @Output() formCheckboxSelection = new EventEmitter<CheckboxOption>();\r\n  @Output() formInputValue = new EventEmitter<string | number>();\r\n  @Output() addFormGroup = new EventEmitter<Event>();\r\n  @Output() supportTextLinkClick = new EventEmitter<LinkEventEmitType>();\r\n  @Output() formSlideToggleChange = new EventEmitter<SlideToggleOption>();\r\n  @Output() dropdownOpenedChange = new EventEmitter<SelectOpenedState>();\r\n  @Output() formColorPickerChange = new EventEmitter<string>();\r\n  @Output() formFileUpload = new EventEmitter<File | FileList>();\r\n  @Output() formRadioOptionSelected = new EventEmitter<RadioOption>();\r\n  @Output() ctaButtonClick = new EventEmitter<IconButton>();\r\n  @Output() formMultiSelectAutoCompleteSearch = new EventEmitter<string>();\r\n  @Output() multiSelectAutoCompleteClearSearchValue =\r\n    new EventEmitter<string>();\r\n  @Output() multiSelectAutoCompleteOptionsSelected = new EventEmitter<\r\n    AutoCompleteOption[]\r\n  >();\r\n  @Output() formRichTextEditorContentChange = new EventEmitter<string>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  component!: ComponentRef<any>;\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(public container: ViewContainerRef) {}\r\n\r\n  /**\r\n   * Implementation of ngOnInit lifecycle hook method to call loadComponents method.\r\n   * @memberof DynamicFormFieldDirective\r\n   */\r\n  ngOnInit(): void {\r\n    this.loadComponent();\r\n  }\r\n\r\n  /**\r\n   * Creates the component dynamically and initializes the instance properties of created component, also handles the created component events.\r\n   * @memberof DynamicFormFieldDirective\r\n   */\r\n  loadComponent(): void {\r\n    if (!components[this.config?.type]) {\r\n      const supportedTypes = Object.keys(components).join(', ');\r\n      throw new Error(\r\n        `Trying to use an unsupported type (${this.config.type}).\r\n            Supported types: ${supportedTypes}`\r\n      );\r\n    }\r\n    this.component = this.container.createComponent(\r\n      components[this.config?.type]\r\n    );\r\n    if (this.component?.instance) {\r\n      this.component.instance.config = this.config;\r\n      this.component.instance.group = this.group;\r\n      this.component.instance.submitResponse = this.submitResponse;\r\n      this.component.instance.searchResponse = this.searchResponse;\r\n      if (this.config.type === FormControlType.FILE_UPLOAD) {\r\n        this.component.instance.fileUploadStatus = this.fileUploadStatus;\r\n        this.component.instance.fileDownloadAndDeleteConfig = this.fileDownloadAndDeleteConfig;\r\n      }\r\n      if (this.config.type === FormControlType.SEARCH) {\r\n        this.component.instance.searchValue\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: Event) => {\r\n            this.formSearchApply.emit(event);\r\n          });\r\n      } else if (this.config.type === FormControlType.CHECKBOX) {\r\n        this.component.instance.checkboxSelection\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: CheckboxOption) => {\r\n            this.formCheckboxSelection.emit(event);\r\n          });\r\n        this.component.instance.ctaButtonClick\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: IconButton) => {\r\n            this.ctaButtonClick.emit(event);\r\n          });\r\n      } else if (this.config.type === FormControlType.SELECT) {\r\n        this.component.instance.optionSelected\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: Event) => {\r\n            this.formDropdownSelected.emit(event);\r\n          });\r\n        this.component.instance.optionSearched\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: Event) => {\r\n            this.formSelectSearch.emit({\r\n              searchEvent: event,\r\n              controlName: this.config.controlName,\r\n            });\r\n          });\r\n        this.component.instance.dropdownOpenedChange\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: SelectOpenedState) => {\r\n            this.dropdownOpenedChange.emit(event);\r\n          });\r\n      } else if (this.config.type === FormControlType.DATE) {\r\n        this.component.instance.selectedDate\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: string) => {\r\n            this.formDateSelected.emit({\r\n              date: event,\r\n              controlName: this.config.controlName,\r\n            });\r\n          });\r\n        this.component.instance.selectedDateRange\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: { startDate: string; endDate: string }) => {\r\n            this.formSelectedDateRange.emit(event);\r\n          });\r\n      } else if (this.config.type === FormControlType.AUTO_COMPLETE) {\r\n        this.component.instance.autoCompleteSearchValue\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: string) => {\r\n            this.formAutoCompleteSearch.emit(event);\r\n          });\r\n        this.component.instance.autoCompleteClearSearchValue\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: string) => {\r\n            this.autoCompleteClearSearchValue.emit(event);\r\n          });\r\n        this.component.instance.autoCompleteOptionSelected\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: Event) => {\r\n            this.autoCompleteOptionSelected.emit(event);\r\n          });\r\n      } else if (\r\n        this.config.type === FormControlType.MULTI_SELECT_AUTO_COMPLETE\r\n      ) {\r\n        this.component.instance.multiSelectAutoCompleteSearchValue\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: string) => {\r\n            this.formMultiSelectAutoCompleteSearch.emit(event);\r\n          });\r\n        this.component.instance.multiSelectAutoCompleteClearSearchValue\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: string) => {\r\n            this.multiSelectAutoCompleteClearSearchValue.emit(event);\r\n          });\r\n        this.component.instance.multiSelectAutoCompleteOptionsSelected\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: AutoCompleteOption[]) => {\r\n            this.multiSelectAutoCompleteOptionsSelected.emit(event);\r\n          });\r\n      } else if (this.config.type === FormControlType.TIME_PICKER) {\r\n        this.component.instance.formTimeSelected\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: string) => {\r\n            this.formTimeSelected.emit({\r\n              time: event,\r\n              controlName: this.component.instance.config.controlName,\r\n            });\r\n          });\r\n      } else if (this.config.type === FormControlType.INPUT) {\r\n        this.component.instance.inputValueChange\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: string | number) => {\r\n            this.formInputValue.emit(event);\r\n          });\r\n      } else if (this.config.type === FormControlType.ADD_FORM_GROUP) {\r\n        this.component.instance.addFormGroup\r\n          .pipe(takeUntil(this.destroy$))\r\n          .subscribe((event: Event) => {\r\n            this.addFormGroup.emit(event);\r\n          });\r\n      } else if (this.config.type === FormControlType.TEXT_AREA) {\r\n        this.component?.instance?.supportTextLinkClick\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: LinkEventEmitType) => {\r\n            this.supportTextLinkClick.emit(event);\r\n          });\r\n        this.component?.instance?.inputValueChange\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: string) => {\r\n            this.formInputValue.emit(event);\r\n          });\r\n      } else if (this.config.type === FormControlType.SLIDE_TOGGLE) {\r\n        this.component.instance.slideToggleChange\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: SlideToggleOption) => {\r\n            this.formSlideToggleChange.emit(event);\r\n          });\r\n      } else if (this.config.type === FormControlType.COLOR_PICKER) {\r\n        this.component.instance.colorPickerChange\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: string) => {\r\n            this.formColorPickerChange.emit(event);\r\n          });\r\n      } else if (this.config.type === FormControlType.FILE_UPLOAD) {\r\n        this.component.instance.uploadSelectedFiles\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: File | FileList) => {\r\n            this.formFileUpload.emit(event);\r\n          });\r\n      } else if (this.config.type === FormControlType.RADIO) {\r\n        this.component.instance.selectedRadioOption\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: RadioOption) => {\r\n            this.formRadioOptionSelected.emit(event);\r\n          });\r\n      } else if (this.config.type === FormControlType.RICH_TEXT_EDITOR) {\r\n        this.component.instance.richTextEditorContentChange\r\n          ?.pipe(takeUntil(this.destroy$))\r\n          ?.subscribe((event: string) => {\r\n            this.formRichTextEditorContentChange.emit(event);\r\n          });\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n   * @memberof DynamicFormFieldDirective\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n}\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n/**\r\n * Directive used to set the focus of first invalid field of the form when the form is submitted\r\n * @export\r\n * @class FocusInvalidFormFieldDirective\r\n */\r\n@Directive({\r\n  selector: '[ieeesaFocusInvalidFormField]',\r\n  standalone: true,\r\n})\r\nexport class FocusInvalidFormFieldDirective {\r\n  // eslint-disable-next-line no-empty-function, no-unused-vars\r\n  constructor(private el: ElementRef) {}\r\n  /**\r\n   * Listens to the ngSubmit event and apply focus to first invalid form field\r\n   * @memberof FocusInvalidFormFieldDirective\r\n   */\r\n  @HostListener('ngSubmit') submitForm() {\r\n    const invalidElement = this.el.nativeElement.querySelector(\r\n      '.ieeesa-dynamic-form__form-field input.ng-invalid,.ieeesa-dynamic-form__form-field mat-select.ng-invalid, .ieeesa-dynamic-form__form-field text-area.ng-invalid, .ieeesa-dynamic-form__form-field mat-checkbox.ng-invalid, .ieeesa-dynamic-form__form-field mat-radio-button.ng-invalid'\r\n    ) as HTMLElement;\r\n    invalidElement?.focus();\r\n  }\r\n}\r\n","import {\r\n  AfterContentInit,\r\n  AfterViewInit,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  QueryList,\r\n  ViewChildren,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n  FormArray,\r\n  FormBuilder,\r\n  FormControl,\r\n  FormGroup,\r\n  ReactiveFormsModule,\r\n  Validators,\r\n} from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { FormModel } from '../../models/form.model';\r\nimport { FieldConfig } from '../../models/field-config.model';\r\nimport { FormGrid } from '../../models/form-grid.model';\r\nimport { DynamicFormFieldDirective } from '../../directives/dynamic-form-field/dynamic-form-field.directive';\r\nimport { AlignType, IconButton, CheckboxOption } from '@ieeesa-npm/models';\r\nimport { FocusInvalidFormFieldDirective } from '../../directives/focus-invalid-form-field/focus-invalid-form-field.directive';\r\nimport { FormControlType } from '../../models/form-control-types.model';\r\nimport { SelectedDate } from '../../models/selected-date.model';\r\nimport { SelectedTime } from '../../models/selected-time.model';\r\nimport { LinkEventEmitType } from '../../models/event-emit-type.model';\r\nimport { SlideToggleOption } from '../../models/slide-toggle-options.model';\r\nimport { SelectOpenedState } from '../../models/select-opened-state.model';\r\nimport { RadioOption } from '../../models/radio-option.model';\r\nimport { AutoCompleteOption } from '../../models/autocomplete-option.model';\r\nimport { TextTruncatedDirective } from '../../directives/text-truncated/text-truncated.directive';\r\nimport { FileUploadStatus } from '../../models/file-upload-status.model';\r\nimport { FileDownloadAndDeleteConfig } from '../../models/file-download-config.model';\r\n\r\n/**\r\n * Creates a reactive form dynamically based on the passed form field configuration and handles the form events.\r\n * @export\r\n * @class DynamicFormComponent\r\n * @implements {OnInit}\r\n * @implements {AfterContentInit}\r\n */\r\n@Component({\r\n  exportAs: 'dynamicForm',\r\n  selector: 'ieeesa-dynamic-form',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    DynamicFormFieldDirective,\r\n    MatButtonModule,\r\n    ScrollingModule,\r\n    FocusInvalidFormFieldDirective,\r\n    TextTruncatedDirective,\r\n  ],\r\n  templateUrl: './dynamic-form.component.html',\r\n  styleUrls: ['./dynamic-form.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DynamicFormComponent\r\n  implements OnInit, AfterContentInit, AfterViewInit\r\n{\r\n  @ViewChildren(DynamicFormFieldDirective)\r\n  formFields!: QueryList<DynamicFormFieldDirective>;\r\n  private _formGroups!: FormModel;\r\n  /**\r\n   * FormGroups passed an an input and which contains configuration information of every form fields.\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  @Input()\r\n  set formGroups(value: FormModel) {\r\n    this._formGroups = value;\r\n    this.createFormGroupArray();\r\n  }\r\n  get formGroups(): FormModel {\r\n    return this._formGroups;\r\n  }\r\n\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  private _submitResponse!: any;\r\n  /**\r\n   * Sets submit response on form submit\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  @Input()\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  set submitResponse(value: any) {\r\n    this._submitResponse = value;\r\n  }\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  get submitResponse(): any {\r\n    return this._submitResponse;\r\n  }\r\n\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  private _searchResponse!: any;\r\n  /**\r\n   * Sets search response on form search event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  @Input()\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  set searchResponse(value: any) {\r\n    this._searchResponse = value;\r\n  }\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  get searchResponse(): any {\r\n    return this._searchResponse;\r\n  }\r\n  private _fileUploadStatus!: FileUploadStatus;\r\n\r\n  @Input() get fileUploadStatus(): FileUploadStatus {\r\n    return this._fileUploadStatus;\r\n  }\r\n  set fileUploadStatus(value: FileUploadStatus) {\r\n    this._fileUploadStatus = value;\r\n  }\r\n  @Input() colWidth!: FormGrid;\r\n  @Input() isLegendVisible!: boolean;\r\n  @Input() rightButtonLabel!: string;\r\n  @Input() leftButtonLabel!: string;\r\n  @Input() isSubmitButtonDisabled = false;\r\n  @Input() isLeftButtonDisabled = false;\r\n  @Input() isLeftButtonNeeded = false;\r\n  @Input() isRightButtonNeeded = true;\r\n  @Input() actionButtonAlign!: AlignType;\r\n  private _fileDownloadAndDeleteConfig!: FileDownloadAndDeleteConfig;\r\n  @Input()\r\n  set fileDownloadAndDeleteConfig(value: FileDownloadAndDeleteConfig) {\r\n    this._fileDownloadAndDeleteConfig = value;\r\n  }\r\n  get fileDownloadAndDeleteConfig(): FileDownloadAndDeleteConfig {\r\n    return this._fileDownloadAndDeleteConfig;\r\n  }\r\n  alignmentType = AlignType;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  @Output() formSubmit: EventEmitter<any> = new EventEmitter<any>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  @Output() formChange: EventEmitter<any> = new EventEmitter<any>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  @Output() formInput: EventEmitter<any> = new EventEmitter<any>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  @Output() formLeftButtonClicked: EventEmitter<any> = new EventEmitter<any>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  @Output() formSearchApply: EventEmitter<any> = new EventEmitter<Event>();\r\n  @Output() formGroupsReference = new EventEmitter<FormGroup[]>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  @Output() dropdownChange: EventEmitter<any> = new EventEmitter<Event>();\r\n  @Output() formCheckboxSelection = new EventEmitter<CheckboxOption>();\r\n  @Output() formDateSelected = new EventEmitter<SelectedDate>();\r\n  @Output() formSelectSearch = new EventEmitter<{\r\n    searchEvent: Event;\r\n    controlName: string;\r\n  }>();\r\n  @Output() formControlChange = new EventEmitter<Event>();\r\n  @Output() formAutoCompleteSearch: EventEmitter<string> =\r\n    new EventEmitter<string>();\r\n  @Output() formAutoCompleteClearSearchValue: EventEmitter<string> =\r\n    new EventEmitter<string>();\r\n  @Output() autoCompleteOptionSelected = new EventEmitter<FormGroup[]>();\r\n  @Output() formAfterContentInit = new EventEmitter<FormGroup[]>();\r\n  @Output() formSelectedDateRange = new EventEmitter<{\r\n    startDate: string;\r\n    endDate: string;\r\n  }>();\r\n  @Output() addFormGroup = new EventEmitter<Event>();\r\n  @Output() formTimeSelected = new EventEmitter<SelectedTime>();\r\n  @Output() supportTextLinkClick = new EventEmitter<LinkEventEmitType>();\r\n  @Output() formSlideToggleChange = new EventEmitter<SlideToggleOption>();\r\n  @Output() formFileUpload = new EventEmitter<File | FileList>();\r\n  @Output() dropdownOpenedChange = new EventEmitter<SelectOpenedState>();\r\n  @Output() formColorPickerChange = new EventEmitter<string>();\r\n  @Output() formRadioOptionSelected = new EventEmitter<RadioOption>();\r\n  @Output() ctaButtonClick = new EventEmitter<IconButton>();\r\n  @Output() formMultiSelectAutoCompleteSearch: EventEmitter<string> =\r\n    new EventEmitter<string>();\r\n  @Output() formMultiSelectAutoCompleteClearSearchValue: EventEmitter<string> =\r\n    new EventEmitter<string>();\r\n  @Output() multiSelectAutoCompleteOptionsSelected = new EventEmitter<\r\n    AutoCompleteOption[]\r\n  >();\r\n  @Output() formRichTextEditorContentChange = new EventEmitter<string>();\r\n  form!: FormGroup;\r\n  formGroupArray: FormGroup[] = [];\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  formControlArray: any[] = [];\r\n  legendsArray: string[] = [];\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(private fb: FormBuilder, private elementRef: ElementRef) {}\r\n\r\n  /**\r\n   * Implementation of ngOnInit lifecycle hook method to create form group\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  ngOnInit(): void {\r\n    this.createFormGroupArray();\r\n  }\r\n\r\n  /**\r\n   * Emit generated form reference on ngAfterContentInit lifecycle hook.\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  ngAfterContentInit(): void {\r\n    this.formAfterContentInit.emit(this.formGroupArray);\r\n  }\r\n  /**\r\n   * Sets the focus to the first field.\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  ngAfterViewInit(): void {\r\n    const firstFocusableElement = this.elementRef.nativeElement.querySelector(\r\n      'input, mat-select, textarea, mat-checkbox, mat-radio-button'\r\n    ) as HTMLElement;\r\n    setTimeout(() => firstFocusableElement?.focus(), 0);\r\n  }\r\n  /**\r\n   * Creates form group on the basis of formGroups configuration input\r\n   * @return {void}\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  createFormGroupArray(): void {\r\n    this.formGroupArray = [];\r\n    this.formControlArray = [];\r\n    this.legendsArray = [];\r\n    if (!this.formGroups) {\r\n      return;\r\n    }\r\n    this.formGroups?.formGroup?.forEach((element) => {\r\n      const controls = element.controls.filter(\r\n        (control) => control.type !== 'button'\r\n      );\r\n      this.formGroupArray.push(this.createGroup(controls));\r\n      this.formControlArray.push(controls);\r\n      this.legendsArray.push(element.legend);\r\n    });\r\n    this.form = this.fb.group({\r\n      children: this.formGroupArray,\r\n    });\r\n\r\n    this.formGroupsReference.emit(this.formGroupArray);\r\n  }\r\n  /**\r\n   * Incrementally adds a single control to an existing form group at the given\r\n   * group index WITHOUT rebuilding the whole form. This preserves every other\r\n   * live control (including controls that are not part of the static config,\r\n   * e.g. dynamically-populated dropdowns) along with their current values and\r\n   * options.\r\n   * @param {number} groupIndex - Index of the target form group.\r\n   * @param {FieldConfig} control - Field configuration of the control to add.\r\n   * @param {number} [position] - Optional position within the group's controls;\r\n   * defaults to appending at the end.\r\n   * @return {void}\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  addControlToGroup(\r\n    groupIndex: number,\r\n    control: FieldConfig,\r\n    position?: number\r\n  ): void {\r\n    const group = this.formGroupArray?.[groupIndex];\r\n    const controls = this.formControlArray?.[groupIndex];\r\n    if (!group || !controls) {\r\n      return;\r\n    }\r\n    // Avoid duplicates if the control is already present.\r\n    if (group.get(control.controlName)) {\r\n      return;\r\n    }\r\n    if (control.type === FormControlType.CHECKBOX) {\r\n      group.addControl(control.controlName, this.createFormArray(control));\r\n    } else {\r\n      group.addControl(control.controlName, this.createControl(control));\r\n    }\r\n    if (position === undefined || position < 0 || position >= controls.length) {\r\n      controls.push(control);\r\n    } else {\r\n      controls.splice(position, 0, control);\r\n    }\r\n  }\r\n  /**\r\n   * Incrementally removes a single control from an existing form group by its\r\n   * control name WITHOUT rebuilding the whole form. Other live controls and\r\n   * their values/options are left untouched.\r\n   * @param {number} groupIndex - Index of the target form group.\r\n   * @param {string} controlName - Name of the control to remove.\r\n   * @return {void}\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  removeControlFromGroup(groupIndex: number, controlName: string): void {\r\n    const group = this.formGroupArray?.[groupIndex];\r\n    const controls = this.formControlArray?.[groupIndex];\r\n    if (!group || !controls) {\r\n      return;\r\n    }\r\n    if (group.get(controlName)) {\r\n      group.removeControl(controlName);\r\n    }\r\n    const configIndex = controls.findIndex(\r\n      (config: FieldConfig) => config.controlName === controlName\r\n    );\r\n    if (configIndex > -1) {\r\n      controls.splice(configIndex, 1);\r\n    }\r\n  }\r\n  /**\r\n   * Returns true when the live form group at the given index currently contains\r\n   * a control with the given name. Reflects the rendered form state (including\r\n   * controls added/removed incrementally), not the static config.\r\n   * @param {number} groupIndex - Index of the target form group.\r\n   * @param {string} controlName - Name of the control to look for.\r\n   * @return {boolean} Whether the control exists in the rendered group.\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  hasControlInGroup(groupIndex: number, controlName: string): boolean {\r\n    return !!this.formGroupArray?.[groupIndex]?.get(controlName);\r\n  }\r\n  /**\r\n   * Creates form group using form builder\r\n   * @param {any[]} controls\r\n   * @return {FormGroup}\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  createGroup(controls: any[]): FormGroup {\r\n    const group = this.fb.group({});\r\n    controls.forEach((control: FieldConfig) => {\r\n      if (control.type === FormControlType.CHECKBOX) {\r\n        group.addControl(control.controlName, this.createFormArray(control));\r\n      } else {\r\n        group.addControl(control.controlName, this.createControl(control));\r\n      }\r\n    });\r\n    return group;\r\n  }\r\n  /**\r\n   * Creates form array for Checkbox group and returns.\r\n   * @param {FieldConfig} controls\r\n   * @return {FormArray<any>}\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  createFormArray(controls: FieldConfig): FormArray<any> {\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    let formArray: FormArray<any>;\r\n    const group = this.fb.group({});\r\n    group.addControl(controls.controlName, this.createControl(controls));\r\n    const isRequiredValidator = group\r\n      ?.get(controls.controlName)\r\n      ?.hasValidator(Validators.required);\r\n    if (isRequiredValidator)\r\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n      formArray = new FormArray<any>(\r\n        [],\r\n        this.checkboxSelectionRequiredValidator(controls?.minSelectionRequired)\r\n      );\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    else formArray = new FormArray<any>([]);\r\n    controls?.checkboxOptions?.forEach((control) => {\r\n      formArray.push(\r\n        new FormControl({ value: control.checked, disabled: control.disabled })\r\n      );\r\n    });\r\n    return formArray;\r\n  }\r\n\r\n  /**\r\n   * Custom validator to set required filed validation error for the checkbox field type based on the number of configured minimum checkbox options to be selected whenever the filed configured with required.\r\n   * @param {number} [minSelectionRequired=1]\r\n   * @return {*}\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  checkboxSelectionRequiredValidator(minSelectionRequired = 1): any {\r\n    return function validate(formGroup: FormGroup) {\r\n      let checked = 0;\r\n      Object.keys(formGroup.controls).forEach((key) => {\r\n        const control = formGroup.controls[key];\r\n        if (control.value) {\r\n          checked++;\r\n        }\r\n      });\r\n      if (checked < minSelectionRequired) {\r\n        return {\r\n          checkboxSelectionRequired: true,\r\n        };\r\n      }\r\n      return false;\r\n    };\r\n  }\r\n  /**\r\n   * Creates form control based on form field configuration\r\n   * @param {FieldConfig} control\r\n   * @return {FormControl}\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  createControl(control: FieldConfig): FormControl {\r\n    const { disabled, validation, value, updateOn } = control;\r\n    return this.fb.control(\r\n      { disabled, value },\r\n      updateOn ? { validators: validation, updateOn } : validation\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Emits formGroupArray\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onFormSubmit(): void {\r\n    this.formSubmit.emit(this.formGroupArray);\r\n  }\r\n\r\n  /**\r\n   * Emits formGroupArray\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onLeftButtonClicked(): void {\r\n    this.formLeftButtonClicked.emit(this.formGroupArray);\r\n  }\r\n\r\n  /**\r\n   * Emits formGroupArray\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onFormChange(): void {\r\n    this.formChange.emit(this.formGroupArray);\r\n  }\r\n\r\n  /**\r\n   * Handles form field select type drop down selection event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onDropdownChange(): void {\r\n    this.dropdownChange.emit(this.formGroupArray);\r\n  }\r\n\r\n  /**\r\n   * Handles form input change event\r\n   * @param {Event} event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  formInputChange(event: Event): void {\r\n    this.formControlChange.emit(event);\r\n    this.formInput.emit(this.formGroupArray);\r\n  }\r\n\r\n  /**\r\n   * Handles form field search apply event\r\n   * @param {Event} event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onSearchApply(event: Event): void {\r\n    this.formSearchApply.emit(event);\r\n  }\r\n\r\n  /**\r\n   * Handles search event inside form field select\r\n   * @param {Event} event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onSelectSearch(event: { searchEvent: Event; controlName: string }): void {\r\n    this.formSelectSearch.emit(event);\r\n  }\r\n\r\n  /**\r\n   * Takes the index and the formGroup as arguments and needs to return the unique identifier for this formGroup.\r\n   * @param {number} index\r\n   * @param {FormGroup} formGroup\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  trackByFormGroup(index: number, formGroup: FormGroup) {\r\n    return formGroup.controls;\r\n  }\r\n\r\n  /**\r\n   * Handles form date selection event\r\n   * @param {SelectedDate} selectedDate\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onDateSelected(selectedDate: SelectedDate): void {\r\n    this.formDateSelected.emit(selectedDate);\r\n  }\r\n  /**\r\n   * Handles form time selection event\r\n   * @param {SelectedTime} selectedTime\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onTimeSelected(selectedTime: SelectedTime): void {\r\n    this.formTimeSelected.emit(selectedTime);\r\n  }\r\n  /**\r\n   * Emits selected form date range\r\n   * @param {{startDate: string, endDate: string}} dateRange\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onSelectedDateRange(dateRange: { startDate: string; endDate: string }) {\r\n    this.formSelectedDateRange.emit(dateRange);\r\n  }\r\n\r\n  /**\r\n   * Handles form field auto complete search event\r\n   * @param {string} event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onAutoCompleteSearch(event: string): void {\r\n    this.formAutoCompleteSearch.emit(event);\r\n  }\r\n  /**\r\n   * Handles form field auto complete search clear event\r\n   * @param {string} event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onAutoCompleteClearSearchValue(event: string): void {\r\n    this.formAutoCompleteClearSearchValue.emit(event);\r\n  }\r\n\r\n  /**\r\n   * Handles form field checkbox selection event\r\n   * @param {CheckboxOption} option\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onCheckboxSelection(option: CheckboxOption): void {\r\n    this.formCheckboxSelection.emit(option);\r\n  }\r\n\r\n  /**\r\n   * Handles form field auto complete option selection event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onAutoCompleteOptionSelected(): void {\r\n    this.autoCompleteOptionSelected.emit(this.formGroupArray);\r\n  }\r\n  /**\r\n   *\r\n   * Listens form field multi select auto complete search event and emits formMultiSelectAutoCompleteSearch event.\r\n   * @param {string} event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onMultiSelectAutoCompleteSearch(event: string): void {\r\n    this.formMultiSelectAutoCompleteSearch.emit(event);\r\n  }\r\n\r\n  /**\r\n   * Listens form field multi select auto complete search clear event and emits formMultiSelectAutoCompleteClearSearchValue event.\r\n   * @param {string} event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onMultiSelectAutoCompleteClearSearchValue(event: string): void {\r\n    this.formMultiSelectAutoCompleteClearSearchValue.emit(event);\r\n  }\r\n  /**\r\n   * Listens form field multi select auto complete option selection event and emits multiSelectAutoCompleteOptionSelected event.\r\n   * @param {AutoCompleteOption[]} event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onMultiSelectAutoCompleteOptionsSelected(event: AutoCompleteOption[]): void {\r\n    this.multiSelectAutoCompleteOptionsSelected.emit(event);\r\n  }\r\n\r\n  /**\r\n   * Handles form slide toggle event and emits formSlideToggleChange event.\r\n   * @param {SlideToggleOption} toggle\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onFormSlideToggleChange(toggle: SlideToggleOption): void {\r\n    this.formSlideToggleChange.emit(toggle);\r\n  }\r\n\r\n  /**\r\n   * Handles form color picker event and emits formColorPickerChange event.\r\n   * @param {string} colorCode\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onFormColorPickerChange(colorCode: string): void {\r\n    this.formColorPickerChange.emit(colorCode);\r\n  }\r\n\r\n  /**\r\n   * Handles form rich text editor event and emits formRichTextEditorContentChange event.\r\n   * @param {string} htmlMarkupText\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onFormRichTextEditorContentChange(htmlMarkupText: string): void {\r\n    this.formRichTextEditorContentChange.emit(htmlMarkupText);\r\n  }\r\n\r\n  /**\r\n   * Handles file upload event and emits formFileUpload event\r\n   * @param {(File | FileList)} file\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onFileUpload(file: File | FileList): void {\r\n    this.formFileUpload.emit(file);\r\n  }\r\n\r\n  /**\r\n   * Handles form field radio button selection event\r\n   * @param {RadioOption} option\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onRadioOptionSelection(option: RadioOption): void {\r\n    this.formRadioOptionSelected.emit(option);\r\n  }\r\n\r\n  /**\r\n   * Converts passed control name in hyphenated css class name\r\n   * @param {string} className\r\n   * @return {string}\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  getRowClassName(className: string): string {\r\n    return className\r\n      .replace(/([A-Z])/g, ' $1')\r\n      .toLowerCase()\r\n      .split(' ')\r\n      .join('-');\r\n  }\r\n  /**\r\n   * Emits the addFormGroup event\r\n   * @param {Event} event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onAddFormGroup(event: Event): void {\r\n    this.addFormGroup.emit(event);\r\n  }\r\n  /**\r\n   * Emits supportTextLinkClick event on click of form support text link\r\n   * @param {LinkEventEmitType} event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onSupportTextLinkClick(event: LinkEventEmitType): void {\r\n    this.supportTextLinkClick.emit(event);\r\n  }\r\n  /**\r\n   * Listens select form field dropdownOpenedChange event and emits dropdownOpenedChange event.\r\n   * @memberof DynamicFormComponent\r\n   * @param {SelectOpenedState} event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onDropdownOpenedChange(event: SelectOpenedState): void {\r\n    this.dropdownOpenedChange.emit(event);\r\n  }\r\n\r\n  /**\r\n   * Emits ctaButtonClick event along with clicked button information.\r\n   * @param {IconButton} event\r\n   * @memberof DynamicFormComponent\r\n   */\r\n  onCheckboxCTAButtonClick(event: IconButton): void {\r\n    this.ctaButtonClick.emit(event);\r\n  }\r\n}\r\n","<form\r\n  class=\"ieeesa-dynamic-form\"\r\n  [formGroup]=\"form\"\r\n  (change)=\"onFormChange()\"\r\n  (ngSubmit)=\"onFormSubmit()\"\r\n  (input)=\"formInputChange($event)\"\r\n  ieeesaFocusInvalidFormField\r\n>\r\n  <div class=\"ieeesa-dynamic-form__body\" cdkScrollable>\r\n  <fieldset\r\n    class=\"ieeesa-dynamic-form__fieldset\"\r\n    *ngFor=\"\r\n      let formGrp of formGroupArray;\r\n      let i = index;\r\n      trackBy: trackByFormGroup\r\n    \"\r\n    [attr.aria-label]=\"(!legendsArray[i] && isLegendVisible) ? 'Form section ' + (i + 1) : null\"\r\n  >\r\n    <legend\r\n      class=\"float-none w-auto p-2 ieeesa-dynamic-form__legend\"\r\n      *ngIf=\"isLegendVisible && legendsArray[i]\"\r\n    >\r\n      {{ legendsArray[i] }}\r\n    </legend>\r\n    <div class=\"row\">\r\n      <div\r\n        class=\"col-{{ colWidth.xs }} col-sm-{{ colWidth.sm }} col-md-{{\r\n          colWidth.md\r\n        }} col-lg-{{ colWidth.lg }} col-xl-{{ colWidth.xl }}\r\n        ieeesa-dynamic-form__form-field\"\r\n        [ngClass]=\"getRowClassName(formControlArray[i][j].controlName)\"\r\n        *ngFor=\"let control of formControlArray[i]; let j = index\"\r\n      >\r\n        <ng-template\r\n          ieeesaDynamicFormField\r\n          [config]=\"formControlArray[i][j]\"\r\n          [group]=\"formGrp\"\r\n          [submitResponse]=\"submitResponse\"\r\n          [searchResponse]=\"searchResponse\"\r\n          [fileUploadStatus]=\"fileUploadStatus\"\r\n          [fileDownloadAndDeleteConfig]=\"fileDownloadAndDeleteConfig\"\r\n          (formSearchApply)=\"onSearchApply($event)\"\r\n          (formDropdownSelected)=\"onFormChange(); onDropdownChange()\"\r\n          (formDateSelected)=\"onFormChange(); onDateSelected($event)\"\r\n          (formSelectedDateRange)=\"onSelectedDateRange($event)\"\r\n          (formSelectSearch)=\"onSelectSearch($event)\"\r\n          (formAutoCompleteSearch)=\"onAutoCompleteSearch($event)\"\r\n          (autoCompleteClearSearchValue)=\"\r\n            onAutoCompleteClearSearchValue($event)\r\n          \"\r\n          (autoCompleteOptionSelected)=\"\r\n            onFormChange(); onAutoCompleteOptionSelected()\r\n          \"\r\n          (formCheckboxSelection)=\"onCheckboxSelection($event)\"\r\n          (ctaButtonClick)=\"onCheckboxCTAButtonClick($event)\"\r\n          (formInputValue)=\"onFormChange()\"\r\n          (addFormGroup)=\"onAddFormGroup($event)\"\r\n          (formTimeSelected)=\"onFormChange(); onTimeSelected($event)\"\r\n          (supportTextLinkClick)=\"onSupportTextLinkClick($event)\"\r\n          (formSlideToggleChange)=\"onFormSlideToggleChange($event)\"\r\n          (formFileUpload)=\"onFileUpload($event)\"\r\n          (dropdownOpenedChange)=\"onDropdownOpenedChange($event)\"\r\n          (formColorPickerChange)=\"onFormColorPickerChange($event)\"\r\n          (formRadioOptionSelected)=\"onRadioOptionSelection($event)\"\r\n          (formMultiSelectAutoCompleteSearch)=\"\r\n            onMultiSelectAutoCompleteSearch($event)\r\n          \"\r\n          (multiSelectAutoCompleteClearSearchValue)=\"\r\n            onMultiSelectAutoCompleteClearSearchValue($event)\r\n          \"\r\n          (multiSelectAutoCompleteOptionsSelected)=\"\r\n            onFormChange(); onMultiSelectAutoCompleteOptionsSelected($event)\r\n          \"\r\n          (formRichTextEditorContentChange)=\"\r\n            onFormRichTextEditorContentChange($event)\r\n          \"\r\n        >\r\n        </ng-template>\r\n      </div>\r\n    </div>\r\n  </fieldset>\r\n  <ng-content select=\"[component]\"></ng-content>\r\n  </div>\r\n  <div class=\"row ieeesa-dynamic-form__actions-row\">\r\n    <div\r\n      class=\"col-12 ieeesa-dynamic-form__actions\"\r\n      [ngClass]=\"{\r\n        'justify-content-end': actionButtonAlign === alignmentType.LEFT,\r\n        'justify-content-center': actionButtonAlign === alignmentType.MIDDLE,\r\n        'justify-content-start': actionButtonAlign === alignmentType.RIGHT\r\n      }\"\r\n    >\r\n      <button\r\n        *ngIf=\"isRightButtonNeeded\"\r\n        type=\"submit\"\r\n        mat-button\r\n        class=\"mat-primary-button ieeesa-dynamic-form__actions--right-btn\"\r\n        [disabled]=\"isSubmitButtonDisabled\"\r\n      >\r\n        {{ rightButtonLabel }}\r\n      </button>\r\n      <button\r\n        *ngIf=\"isLeftButtonNeeded\"\r\n        type=\"button\"\r\n        mat-button\r\n        class=\"mat-tertiary-button ieeesa-dynamic-form__actions--left-btn\"\r\n        (click)=\"onLeftButtonClicked()\"\r\n        [disabled]=\"isLeftButtonDisabled\"\r\n      >\r\n        {{ leftButtonLabel }}\r\n      </button>\r\n    </div>\r\n  </div>\r\n</form>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FooterConfig, FooterLink } from '../../models/footer-config.model';\r\nimport * as screenTexts from '../../assets/constants.json';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\n\r\n/**\r\n * Implements & displays copyright information and IEEE quick access links.\r\n * @class FooterComponent\r\n * @implements {OnInit}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-footer',\r\n  standalone: true,\r\n  imports: [CommonModule, RouterModule, MatDividerModule],\r\n  templateUrl: './footer.component.html',\r\n  styleUrls: ['./footer.component.scss'],\r\n})\r\nexport class FooterComponent implements OnInit {\r\n  /**\r\n   * Input property to get the configuration information of footer copyright text and quick access links.\r\n   * @type {FooterConfig}\r\n   * @memberof FooterComponent\r\n   */\r\n  private footerConfigInfo!: FooterConfig;\r\n  @Input()\r\n  set footerConfig(value: FooterConfig) {\r\n    this.footerConfigInfo = value;\r\n  }\r\n  get footerConfig(): FooterConfig {\r\n    return this.footerConfigInfo;\r\n  }\r\n\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  screenTexts: any = screenTexts;\r\n  currentYear = new Date().getFullYear();\r\n\r\n  /**\r\n   * Initializes the component with default values if not provided.\r\n   * It should hide the the dashboard link if the user is not signed in.\r\n   * @return -returns nothing\r\n   * @memberof FooterComponent\r\n   */\r\n  ngOnInit(): void {\r\n    this.footerConfig = this.footerConfig ?? this.screenTexts['footer'];\r\n  }\r\n\r\n  /**\r\n   * TrackByFunction is called for each item in the collection and return a unique identifier for that item.\r\n   * @param {number} index -The index of the current item in the collection.\r\n   * @param {FooterLink} link -Link object with required properties.\r\n   * @return {string} -returns link label as an unique identifier.\r\n   * @memberof FooterComponent\r\n   */\r\n  trackByFunc(index: number, link: FooterLink): string {\r\n    return link.label;\r\n  }\r\n}\r\n","<footer class=\"sa-footer\">\r\n  <section class=\"sa-footer__links flex-align-center text-center\">\r\n    <ul class=\"list-unstyled flex-align-center flex-wrap\">\r\n      <li\r\n        class=\"d-flex align-items-center ieeesa-title-sm-14\"\r\n        *ngFor=\"\r\n          let link of footerConfig.links;\r\n          let i = index;\r\n          trackBy: trackByFunc\r\n        \"\r\n      >\r\n        <ng-container\r\n          *ngIf=\"link?.isRouterLink; then routerLink; else redirectUrl\"\r\n        >\r\n        </ng-container>\r\n        <ng-template #routerLink>\r\n          <a\r\n            [routerLink]=\"link.redirectUrl\"\r\n            [attr.aria-label]=\"link.ariaLabel\"\r\n            class=\"sa-footer__links-section__link\"\r\n            >{{ link.label }}</a\r\n          >\r\n        </ng-template>\r\n        <ng-template #redirectUrl>\r\n          <a\r\n            [attr.href]=\"link.redirectUrl\"\r\n            target=\"_blank\"\r\n            [attr.aria-label]=\"link.ariaLabel\"\r\n            class=\"sa-footer__links-section__link\"\r\n            >{{ link.label }}</a\r\n          >\r\n        </ng-template>\r\n        <mat-divider [vertical]=\"true\"></mat-divider>\r\n      </li>\r\n    </ul>\r\n    <img\r\n      class=\"sa-footer__links__logo\"\r\n      src=\"{{ footerConfig.ieeeLogo }}\"\r\n      alt=\"{{ screenTexts?.footer?.alt?.logo }}\"\r\n    />\r\n  </section>\r\n  <section class=\"sa-footer__copyright text-center\">\r\n    <p class=\"ieeesa-label-md-14 sa-footer__copyright__content\">\r\n      {{ footerConfig.copyright.textPart1 }} {{ currentYear }}\r\n      {{ footerConfig.copyright.textPart2 }}\r\n      <a\r\n        [attr.href]=\"footerConfig.copyright.link\"\r\n        target=\"_blank\"\r\n        class=\"sa-footer__copyright__hyperlink\"\r\n        >{{ footerConfig.copyright.hyperLinkPart3 }}</a\r\n      >\r\n      <br />\r\n      {{ footerConfig.copyright.textPart4 }}\r\n    </p>\r\n  </section>\r\n</footer>\r\n","import {\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule, NgClass } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { Menu } from '../../models/menu.model';\r\nimport * as constants from '../../assets/constants.json';\r\nimport { IconButton } from '@ieeesa-npm/models';\r\n\r\n/**\r\n * Creates menu and the menu items are icon based buttons\r\n * @export\r\n * @class MenuComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-menu',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    MatButtonModule,\r\n    MatMenuModule,\r\n    MatIconModule,\r\n    MatTooltipModule,\r\n    NgClass,\r\n  ],\r\n  templateUrl: './menu.component.html',\r\n  styleUrls: ['./menu.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class MenuComponent {\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  constants: any = constants;\r\n  @Input() menuItems!: Menu[];\r\n  @Input() button!: IconButton;\r\n  @Input() defaultIconSize = '';\r\n  @Input() isMarginBottomZero = false;\r\n  @Output() menuToggleButtonElement: EventEmitter<HTMLElement> =\r\n    new EventEmitter<HTMLElement>();\r\n  @Output() menuItemClick: EventEmitter<Menu> = new EventEmitter<Menu>();\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(private elementRef: ElementRef) {}\r\n  /**\r\n   * Emits the clicked menu item and emits menu button element event when its not triggered through mouse.\r\n   * @param {Menu} menu\r\n   * @memberof MenuComponent\r\n   */\r\n  onMenuItemClick(menu: Menu) {\r\n    this.menuItemClick.emit(menu);\r\n    const menuElement = this.elementRef.nativeElement.querySelector(\r\n      'button.mdc-icon-button'\r\n    );\r\n    this.menuToggleButtonElement.emit(menuElement);\r\n  }\r\n  /**\r\n   * Takes the index and the menu item as arguments and needs to return the unique identifier for this item.\r\n   * @param {number} index\r\n   * @param {Menu} menu\r\n   * @return {number}\r\n   * @memberof MenuComponent\r\n   */\r\n  trackByFn(index: number, menu: Menu): number {\r\n    return menu.id;\r\n  }\r\n}\r\n","<button\r\n  type=\"button\"\r\n  mat-icon-button\r\n  [ngClass]=\"{ 'ieeesa-menu__trigger': button?.iconURL }\"\r\n  [matMenuTriggerFor]=\"menu\"\r\n  [attr.aria-label]=\"constants?.ariaLabel?.menuIcon\"\r\n>\r\n  <svg\r\n    class=\"ieeesa-menu__button mt-md-2\"\r\n    *ngIf=\"button?.iconURL; else defaultIcon\"\r\n  >\r\n    <use [attr.xlink:href]=\"button.iconURL\"></use>\r\n  </svg>\r\n  <ng-template #defaultIcon\r\n    ><i class=\"fa-solid fa-ellipsis-vertical\" [ngClass]=\"defaultIconSize\"></i\r\n  ></ng-template>\r\n</button>\r\n<mat-menu\r\n  #menu=\"matMenu\"\r\n  class=\"ieeesa-menu\"\r\n  backdropClass=\"ieeesa-menu-overlay\"\r\n  [ngClass]=\"{ 'ieeesa-menu__pd-1': menuItems && menuItems.length > 0 }\"\r\n>\r\n  <ng-container *ngIf=\"menuItems && menuItems.length > 0\">\r\n    <ng-container *ngFor=\"let item of menuItems; trackBy: trackByFn\">\r\n      <button\r\n        mat-menu-item\r\n        class=\"ieeesa-menu__item\"\r\n        [ngClass]=\"{\r\n          'ieeesa-menu__item__mb-0': isMarginBottomZero\r\n        }\"\r\n        (click)=\"onMenuItemClick(item)\"\r\n        [attr.aria-label]=\"item.ariaLabel\"\r\n        [matTooltip]=\"item.toolTip\"\r\n        [matTooltipDisabled]=\"!item.isToolTipNeeded\"\r\n        [disabled]=\"item?.isDisabled\"\r\n      >\r\n        <svg class=\"ieeesa-menu__item__icon\" *ngIf=\"item.iconURL\">\r\n          <use [attr.xlink:href]=\"item.iconURL\"></use>\r\n        </svg>\r\n        <span class=\"ieeesa-menu__item__label ieeesa-label-md-14\"\r\n          >{{ item.label }}</span\r\n        >\r\n      </button>\r\n    </ng-container>\r\n  </ng-container>\r\n</mat-menu>\r\n","export enum UserProfileMenu {\r\n  // eslint-disable-next-line no-unused-vars\r\n  USER_PROFILE = 1,\r\n  // eslint-disable-next-line no-unused-vars\r\n  SIGN_OUT = 2,\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n  selector: 'ieeesa-image-preview',\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  templateUrl: './image-preview.component.html',\r\n  styleUrls: ['./image-preview.component.scss'],\r\n})\r\nexport class ImagePreviewComponent implements OnInit {\r\n  isSvg = false;\r\n  imageURL!: string;\r\n  @Input() imageAltText!: string;\r\n  @Input() set imageUrl(value: string) {\r\n    this.imageURL = value;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    const imageNameWithExtension = this.imageUrl?.substring(\r\n      this.imageUrl?.lastIndexOf('/') + 1,\r\n      this.imageUrl?.indexOf('?')\r\n    );\r\n    if (imageNameWithExtension) {\r\n      const [imageName, imageExtension] = imageNameWithExtension.split('.');\r\n      this.imageAltText = this.imageAltText ?? imageName;\r\n      this.isSvg = imageExtension.includes('svg');\r\n    }\r\n  }\r\n}\r\n","<div class=\"ieeesa-image-preview\">\r\n  <img\r\n    class=\"ieeesa-image-preview__image\"\r\n    alt=\"{{ imageAltText }}\"\r\n    [src]=\"imageURL\"\r\n  />\r\n</div>\r\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport * as constants from '../assets/constants.json';\r\n\r\n/**\r\n * BreakpointObserver utility service helps us to get the mobile view based on the configured breakpoint.\r\n * @export\r\n * @class BreakpointObserverService\r\n */\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class BreakpointObserverService {\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  constants: any = constants;\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private breakpointObserver: BreakpointObserver // eslint-disable-next-line no-empty-function\r\n  ) {}\r\n\r\n  /**\r\n   * Based on break point max-width it returns the Observable of BreakpointState\r\n   * @return {Observable<BreakpointState>}\r\n   * @memberof BreakpointObserverService\r\n   */\r\n  getBreakpoint(): Observable<BreakpointState> {\r\n    return this.breakpointObserver.observe(\r\n      '(max-width: ' + this.constants.breakPointMaxWidth + ')'\r\n    );\r\n  }\r\n}\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HeaderConfig } from '../../models/header-config.model';\r\nimport * as constants from '../../assets/constants.json';\r\nimport { RouterModule } from '@angular/router';\r\nimport { BreakpointObserverService } from '../../services/break-point-observer.service';\r\nimport {\r\n  AuthService,\r\n  StorageService,\r\n  AlertsService,\r\n} from '@ieeesa-npm/utility';\r\nimport { IconButton, AlertType } from '@ieeesa-npm/models';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MenuComponent } from '../menu/menu.component';\r\nimport { Menu } from '../../models/menu.model';\r\nimport { UserProfileMenu } from '../../models/profile-menu.model';\r\nimport { ImagePreviewComponent } from '../image-preview/image-preview.component';\r\nimport { FileUploadService } from '../../services/file-upload.service';\r\n/**\r\n * Implements & displays application logo, title, signed in user information, sign-out link, and hamburger link for mobile view.\r\n * @class HeaderComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-header',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    RouterModule,\r\n    MatButtonModule,\r\n    MenuComponent,\r\n    MatMenuModule,\r\n    ImagePreviewComponent,\r\n  ],\r\n  templateUrl: './header.component.html',\r\n  styleUrls: ['./header.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class HeaderComponent implements OnInit, OnDestroy {\r\n  private headerConfigInfo!: HeaderConfig;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  screenTexts: any = constants;\r\n  private profileMenuOptions: Menu[] =\r\n    this.screenTexts?.header?.userProfileMenuOptions;\r\n  menuItems!: Menu[];\r\n  // eslint-disable-next-line @typescript-eslint/no-inferrable-types\r\n  isMobileView = false;\r\n  imageUrl!: string;\r\n  logo!: string;\r\n  imageAltText!: string;\r\n  /**\r\n   * HeaderConfig represents the configurable properties required for header component.\r\n   * Input property of the component to get the configurable values such as logo, app title, signed in user name and logout redirect URL.\r\n   * @type {HeaderConfig}\r\n   * @memberof HeaderComponent\r\n   */\r\n  @Input()\r\n  set headerConfig(value: HeaderConfig) {\r\n    this.headerConfigInfo = value;\r\n    this.getImageUrl();\r\n  }\r\n  get headerConfig(): HeaderConfig {\r\n    return this.headerConfigInfo;\r\n  }\r\n  @Input()\r\n  set menuConfig(value: Menu[]) {\r\n    this.profileMenuOptions = value;\r\n    this.getMenuItems();\r\n  }\r\n  get menuConfig(): Menu[] {\r\n    return this.profileMenuOptions;\r\n  }\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n\r\n  @Output() toggleNavMenuClick = new EventEmitter<Event>();\r\n  @Output() profileMenuClick = new EventEmitter<Menu>();\r\n  userProfileIconButton: IconButton = this.screenTexts?.header?.buttons[0];\r\n  // eslint-disable-next-line no-unused-vars\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private breakPointObserverService: BreakpointObserverService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private authService: AuthService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private storageService: StorageService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private alertService: AlertsService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private fileUploadService: FileUploadService\r\n  ) {\r\n    breakPointObserverService\r\n      .getBreakpoint()\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((result) => {\r\n        this.isMobileView = result.matches;\r\n        this.getMenuItems();\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Sets the appBaseUrl and gets the logo download AWS pre-signed URL from API.\r\n   */\r\n  ngOnInit(): void {\r\n    this.getImageUrl();\r\n    this.imageAltText = this.screenTexts?.header?.alt?.logo;\r\n  }\r\n\r\n  /**\r\n   * Gets the logo download AWS pre-signed URL from API when isLogoFromAwsS3 is true.\r\n   */\r\n  getImageUrl(): void {\r\n    if (this.headerConfigInfo?.apiBaseUrl)\r\n      this.fileUploadService.setApiBaseUrl(this.headerConfigInfo.apiBaseUrl);\r\n    if (this.headerConfigInfo?.isLogoFromAwsS3) {\r\n      this.getFileDownloadPresignedUrls(this.headerConfigInfo?.logoUrl);\r\n    } else {\r\n      this.imageUrl = this.headerConfigInfo?.logoUrl;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Desktop event to navigate to logout page.\r\n   * Deletes the application specific and SSO related cookies.\r\n   * @memberof HeaderComponent\r\n   */\r\n  logout(): void {\r\n    this.authService?.deleteCookie(this.headerConfig?.cookieName);\r\n    this.storageService?.clearStorage();\r\n    window.location.href = this.headerConfig?.ssoSignOutUrl;\r\n  }\r\n  /**\r\n   * Emits toggleNavMenuClick event once hamburger icon is clicked.\r\n   * @param {Event} event\r\n   * @memberof HeaderComponent\r\n   */\r\n  toggleNavMenu(event: Event): void {\r\n    this.toggleNavMenuClick.emit(event);\r\n  }\r\n  /**\r\n   * Handles the profile menu item click event and calls the logout\r\n   * method when Sign Out button is clicked..\r\n   * @param {Menu} menu\r\n   * @memberof HeaderComponent\r\n   */\r\n  onUserProfileMenuClick(menu: Menu): void {\r\n    if (menu?.id === UserProfileMenu.SIGN_OUT) {\r\n      this.logout();\r\n    } else if (menu?.id === UserProfileMenu.USER_PROFILE) {\r\n      this.profileMenuClick.emit(menu);\r\n    }\r\n  }\r\n  /**\r\n   * Retrieves pre-signed URL for downloading the logo from Amazon S3 bucket.\r\n   * @memberof HeaderComponent\r\n   */\r\n  getFileDownloadPresignedUrls(fileName: string): void {\r\n    this.fileUploadService\r\n      .getFileDownloadPresignedUrls(\r\n        fileName,\r\n        this.headerConfigInfo?.isPublicAPI,\r\n        this.headerConfigInfo?.domainUrl\r\n      )\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe({\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        next: (response: any) => {\r\n          this.imageUrl = response?.body;\r\n        },\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        error: (error: Error) => {\r\n          this.alertService?.showMessage({\r\n            status: 'custom',\r\n            message: error?.message || this.screenTexts?.header?.errors?.['2029'],\r\n            alertType: AlertType.ERROR,\r\n            isCloseNeeded: true,\r\n          });\r\n        },\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Modifies the menu items based on mobile or desktop.\r\n   */\r\n  getMenuItems(): void {\r\n    if (this.isMobileView) {\r\n      this.menuItems = this.profileMenuOptions;\r\n    } else {\r\n      this.menuItems = this.profileMenuOptions?.slice(\r\n        0,\r\n        this.profileMenuOptions?.length - 1\r\n      );\r\n    }\r\n  }\r\n  /**\r\n   * Cleans up resources when the component is destroyed.\r\n   * @memberof HeaderComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n}\r\n","<header\r\n  class=\"ieeesa-header container-fluid d-flex align-items-center justify-content-between flex-wrap\"\r\n>\r\n  <div class=\"order-0 order-sm-0\">\r\n    <ieeesa-image-preview\r\n      class=\"ieeesa-header__logo\"\r\n      [imageUrl]=\"imageUrl\"\r\n      [imageAltText]=\"imageAltText\"\r\n    ></ieeesa-image-preview>\r\n  </div>\r\n  <div\r\n    class=\"order-2 order-sm-1 ieeesa-header__heading-container flex-align-center justify-content-start justify-content-sm-center\"\r\n  >\r\n    <button\r\n      type=\"button\"\r\n      (click)=\"toggleNavMenu($event)\"\r\n      *ngIf=\"headerConfig?.isSignedIn && isMobileView\"\r\n      [attr.aria-label]=\"screenTexts?.header?.ariaLabel?.hamburgerMenu\"\r\n      class=\"ieeesa-text-button d-block d-sm-none\"\r\n    >\r\n      <i class=\"fa-solid fa-bars ieeesa-header__hamburger-menu\"></i>\r\n    </button>\r\n    <h2 class=\"ieeesa-header__heading ieeesa-title-inter-lg-bold-24\">\r\n      {{ headerConfig.applicationName }}\r\n    </h2>\r\n  </div>\r\n  <div\r\n    class=\"order-1 order-sm-2 ieeesa-header__profile-container px-0 d-flex align-items-start align-items-sm-center justify-content-end\"\r\n  >\r\n    <a\r\n      class=\"ieeesa-header__help-icon-link\"\r\n      [attr.aria-label]=\"screenTexts?.header?.ariaLabel?.helpLink\"\r\n      href=\"{{ headerConfig.helpLink }}\"\r\n      target=\"_blank\"\r\n    >\r\n      <i class=\"fa-regular fa-circle-question ieeesa-header__help-icon\"></i>\r\n    </a>\r\n    <p\r\n      *ngIf=\"headerConfig.isSignedIn\"\r\n      class=\"ieeesa-header__user-name ieeesa-title-sm-16 m-0 d-none d-md-block\"\r\n    >\r\n      {{ headerConfig.userName }}\r\n    </p>\r\n    <div\r\n      *ngIf=\"headerConfig.isSignedIn\"\r\n      class=\"ieeesa-header__user-profile-wrapper\"\r\n    >\r\n      <ng-container>\r\n        <ieeesa-menu\r\n          [button]=\"userProfileIconButton\"\r\n          (menuItemClick)=\"onUserProfileMenuClick($event)\"\r\n          [isMarginBottomZero]=\"true\"\r\n          [menuItems]=\"menuItems\"\r\n        ></ieeesa-menu>\r\n      </ng-container>\r\n    </div>\r\n    <button\r\n      *ngIf=\"headerConfig.isSignedIn\"\r\n      class=\"ieeesa-text-button ieeesa-header__sign-out ieeesa-label-md-14 d-none d-md-block\"\r\n      (click)=\"logout()\"\r\n    >\r\n      {{ screenTexts?.header?.label?.signOut }}\r\n    </button>\r\n  </div>\r\n</header>\r\n","import {\r\n  Directive,\r\n  HostBinding,\r\n  Input,\r\n  OnInit,\r\n  forwardRef,\r\n} from '@angular/core';\r\nimport { SafeStyle } from '@angular/platform-browser';\r\nimport { SafePipe } from '../../pipes/safe.pipe';\r\nimport { SafeType } from '@ieeesa-npm/models';\r\nimport * as constants from '../../assets/constants.json';\r\n\r\n/**\r\n * Sets background color and image for the attached element.\r\n * @export\r\n * @class SetBackgroundDirective\r\n * @implements {OnInit}\r\n */\r\n@Directive({\r\n  selector: '[ieeesaSetBackground]',\r\n  providers: [forwardRef(() => SafePipe)],\r\n  standalone: true,\r\n})\r\nexport class SetBackgroundDirective implements OnInit {\r\n  @Input() background!: { color?: string; imgURL?: string };\r\n  @HostBinding('style.background') bg!: SafeStyle;\r\n  @HostBinding('style.background-size') bgSize = 'cover';\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  constants: any = constants;\r\n\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(private safePipe: SafePipe) {}\r\n\r\n  /**\r\n   * Sets the elements background color and image.\r\n   * @memberof SetBackgroundDirective\r\n   */\r\n  ngOnInit(): void {\r\n    const bgColor =\r\n      this.background?.color !== ''\r\n        ? this.background?.color\r\n        : this.constants.defaultWelcomeBgColor;\r\n    const bgValue =\r\n      this.background?.imgURL !== ''\r\n        ? `url('${this.background?.imgURL}') no-repeat center center`\r\n        : bgColor;\r\n    this.bg = this.safePipe.transform(bgValue, SafeType.STYLE);\r\n  }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Legend } from '../../models/legend.model';\r\nimport { SetBackgroundDirective } from '../../directives/set-background/set-background.directive';\r\n\r\n@Component({\r\n  selector: 'ieeesa-legend',\r\n  standalone: true,\r\n  imports: [CommonModule, SetBackgroundDirective],\r\n  templateUrl: './legend.component.html',\r\n  styleUrls: ['./legend.component.scss'],\r\n})\r\nexport class LegendComponent implements OnInit {\r\n  @Input() legends!: Legend[];\r\n  private isSortingNeeded = false;\r\n\r\n  @Input()\r\n  set isSorting(value: boolean) {\r\n    this.isSortingNeeded = value;\r\n  }\r\n  get isSorting(): boolean {\r\n    return this.isSortingNeeded;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if(this.isSortingNeeded){\r\n      this.legends?.sort((a, b) => {\r\n        return a?.hierarchy - b?.hierarchy\r\n      })\r\n    }\r\n  }\r\n\r\n  trackByFn(index: number, item: Legend): string {\r\n    return item.label;\r\n  }\r\n}\r\n","<div class=\"ieeesa-legend d-flex flex-column flex-wrap flex-sm-row\">\r\n  <div\r\n    *ngFor=\"let item of legends; trackBy: trackByFn\"\r\n    class=\"ieeesa-legend__indicator d-flex\"\r\n  >\r\n    <div\r\n      *ngIf=\"!item.iconUrl\"\r\n      class=\"ieeesa-legend__square\"\r\n      [ngClass]=\"item.color\"\r\n      ieeesaSetBackground\r\n      [background]=\"{ imgURL: '', color: item.color }\"\r\n    ></div>\r\n    <svg *ngIf=\"item.iconUrl\" class=\"ieeesa-legend__icon\" aria-hidden=\"true\">\r\n      <use [attr.xlink:href]=\"item.iconUrl\"></use>\r\n    </svg>\r\n    <p class=\"ieeesa-body-md-16 px-2\">{{ item.label }}</p>\r\n  </div>\r\n</div>\r\n","import {\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n  ViewEncapsulation,\r\n  forwardRef,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { ListHeader, ListItem } from '../../models/list-item.model';\r\nimport { MenuComponent } from '../menu/menu.component';\r\nimport { Menu } from '../../models/menu.model';\r\nimport { IconButtonComponent } from '../icon-button/icon-button.component';\r\nimport * as constants from '../../assets/constants.json';\r\nimport { SafePipe } from '../../pipes/safe.pipe';\r\nimport { SafeType, IconButton } from '@ieeesa-npm/models';\r\nimport { ObserveDomChangeDirective } from '../../directives/observe-dom-change/observe-dom-change.directive';\r\nimport { FileDownloadAndDeleteConfig } from '../../models/file-download-config.model';\r\nimport { FileDownloadComponent } from '../file-download/file-download.component';\r\nimport { DownloadAttachment } from '../../models/download-file.model';\r\nimport {\r\n  CdkDragDrop,\r\n  DragDropModule,\r\n  moveItemInArray,\r\n} from '@angular/cdk/drag-drop';\r\n@Component({\r\n  selector: 'ieeesa-list',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    MatListModule,\r\n    MatButtonModule,\r\n    MenuComponent,\r\n    IconButtonComponent,\r\n    FileDownloadComponent,\r\n    forwardRef(() => SafePipe),\r\n    ObserveDomChangeDirective,\r\n    DragDropModule,\r\n  ],\r\n  templateUrl: './list.component.html',\r\n  styleUrls: ['./list.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ListComponent implements OnDestroy {\r\n  listItems!: ListItem[];\r\n  listHeader!: ListHeader;\r\n  @Output() selectedItemAndAction = new EventEmitter<{\r\n    selectedMenu: Menu;\r\n    selectedItem: ListItem;\r\n  }>();\r\n  @Output() reorderedList = new EventEmitter<ListItem[]>();\r\n  @Input()\r\n  set listDataItems(listItem: ListItem[]) {\r\n    this.listItems = listItem;\r\n    this.getListItemsPositionAndLevel(this.listItems, 0);\r\n  }\r\n  get listDataItems(): ListItem[] {\r\n    return this.listItems;\r\n  }\r\n  @Input()\r\n  set listHeaderConfig(listHeaderDetail: ListHeader) {\r\n    this.listHeader = listHeaderDetail;\r\n  }\r\n  get listHeaderConfig(): ListHeader {\r\n    return this.listHeader;\r\n  }\r\n  @Output() hyperLinkAndButtonClick = new EventEmitter<Event>();\r\n  @Output() downloadSelectedFile = new EventEmitter<\r\n    File | DownloadAttachment\r\n  >();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  constants: any = constants;\r\n  @Input() indentation = this.constants?.list?.defaultIndentation;\r\n  dragAndDropIconUrl = this.constants?.list?.dragAndDropIconUrl;\r\n  addListButton!: IconButton;\r\n  safeType: string = SafeType.HTML;\r\n  @Input()\r\n  set addListButtonConfig(addListButton: IconButton) {\r\n    this.addListButton = addListButton;\r\n  }\r\n  get addListButtonConfig(): IconButton {\r\n    return this.addListButton;\r\n  }\r\n  @Output() domChangeEvent = new EventEmitter<MutationRecord>();\r\n  private _fileDownloadAndDeleteConfig!: FileDownloadAndDeleteConfig;\r\n  @Input()\r\n  set fileDownloadAndDeleteConfig(value: FileDownloadAndDeleteConfig) {\r\n    this._fileDownloadAndDeleteConfig = value;\r\n  }\r\n  get fileDownloadAndDeleteConfig(): FileDownloadAndDeleteConfig {\r\n    return this._fileDownloadAndDeleteConfig;\r\n  }\r\n  @Input() isReorderRequired = false;\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(public elementRef: ElementRef) {}\r\n  /**\r\n   * Emits hyperLinkAndButtonClick event on click of hyper link.\r\n   * @param {Event} event\r\n   * @memberof ListComponent\r\n   */\r\n  onAnchorElementClick(event: Event): void {\r\n    event.preventDefault();\r\n    this.hyperLinkAndButtonClick.emit(event);\r\n  }\r\n  /**\r\n   * Constructs the index position/number and itemLevel for each list item.\r\n   * @param {ListItem[]} items\r\n   * @param {number} itemLevel\r\n   * @param {string} [parentIndex]\r\n   * @memberof ListComponent\r\n   */\r\n  getListItemsPositionAndLevel(\r\n    items: ListItem[],\r\n    itemLevel: number,\r\n    parentIndex?: string\r\n  ): void {\r\n    items?.forEach((item, index) => {\r\n      const position = parentIndex ? parentIndex.slice(-1) === '.' ? `${parentIndex}${index + 1}` : `${parentIndex}.${index + 1}` : `${index + 1}.`;\r\n      item.position = position;\r\n      item.itemLevel = itemLevel;\r\n      const reorderedRank = isNaN(+position.slice(position.length - 1))\r\n        ? +position.slice(0, position?.length - 1)\r\n        : +position.slice(position?.lastIndexOf('.') + 1);\r\n      item.reorderedRank = reorderedRank;\r\n      if (item.subItems)\r\n        this.getListItemsPositionAndLevel(\r\n          item.subItems,\r\n          itemLevel + 1,\r\n          position\r\n        );\r\n    });\r\n  }\r\n  /**\r\n   * Emits the selected menu action and the item.\r\n   * @param {Menu} event\r\n   * @param {ListItem} item\r\n   * @memberof ListComponent\r\n   */\r\n  selectedMenuAction(event: Menu, item: ListItem): void {\r\n    this.selectedItemAndAction.emit({\r\n      selectedMenu: event,\r\n      selectedItem: item,\r\n    });\r\n  }\r\n  /**\r\n   * Returns unique identifier for the list.\r\n   * @param {number} index\r\n   * @param {ListItem} item\r\n   * @return {(number | string)}\r\n   * @memberof ListComponent\r\n   */\r\n  trackByFn(index: number, item: ListItem): number | string {\r\n    return item.id;\r\n  }\r\n  /**\r\n   * Emits hyperLinkAndButtonClick event on click of button.\r\n   * @memberof ListComponent\r\n   */\r\n  onClickAddItem(): void {\r\n    this.hyperLinkAndButtonClick.emit();\r\n  }\r\n  /**\r\n   * Adds click event to the anchor tags whenever dom changes.\r\n   * @memberof ListComponent\r\n   */\r\n  onDomChange(event: MutationRecord) {\r\n    const anchorTags = this.elementRef?.nativeElement?.querySelectorAll('a');\r\n    anchorTags?.forEach((anchor: HTMLAnchorElement) => {\r\n      anchor.addEventListener('click', this.onAnchorElementClick.bind(this));\r\n    });\r\n    this.domChangeEvent.emit(event);\r\n  }\r\n  /**\r\n   * Emits downloadSelectedFile event.\r\n   * @memberof ListComponent\r\n   */\r\n  downloadFile(file: File | DownloadAttachment): void {\r\n    this.downloadSelectedFile.emit(file);\r\n  }\r\n  /**\r\n   * Triggers when the item is dropped.\r\n   * @param {CdkDragDrop} event\r\n   * @param {ListItem[]} items\r\n   * @param {number} nestingLevel\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  drop(event: CdkDragDrop<any>, items: ListItem[], nestingLevel: number) {\r\n    if (event?.previousContainer === event?.container) {\r\n      moveItemInArray(items, event.previousIndex, event.currentIndex);\r\n    }\r\n    if (event.currentIndex !== event.previousIndex) {\r\n      this.getListItemsPositionAndLevel(this.listItems, nestingLevel);\r\n      this.reorderedList.emit(items);\r\n    }\r\n  }\r\n  /**\r\n   * Removing the event listeners on destroy.\r\n   * @memberof ListComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    const anchorTags = this.elementRef?.nativeElement?.querySelectorAll('a');\r\n    anchorTags?.forEach((anchor: HTMLAnchorElement) => {\r\n      anchor.removeEventListener('click', this.onAnchorElementClick);\r\n    });\r\n  }\r\n}\r\n","<div class=\"ieeesa-list-container\">\r\n  <div class=\"d-flex\">\r\n    <div>\r\n      <p *ngIf=\"listHeader?.title\" class=\"ieeesa-title-lg-24 mb-0\">\r\n        {{ listHeader.title }}\r\n      </p>\r\n      <p\r\n        *ngIf=\"listHeader?.description\"\r\n        class=\"ieeesa-body-md-14 ieeesa-list-description\"\r\n        [innerHTML]=\"listHeader.description | safe : safeType\"\r\n        ieeesaObserveDomChange\r\n        (domChange)=\"onDomChange($event)\"\r\n      ></p>\r\n    </div>\r\n    <ieeesa-icon-button\r\n      class=\"ieeesa-add-icon-button\"\r\n      *ngIf=\"listHeader?.canShowAddList\"\r\n      [iconButton]=\"addListButton\"\r\n      (iconButtonClick)=\"onClickAddItem()\"\r\n      [ngClass]=\"\r\n        addListButton?.disabled\r\n          ? 'ieeesa-list-container__actions--disabled'\r\n          : ''\r\n      \"\r\n    ></ieeesa-icon-button>\r\n  </div>\r\n\r\n  <ng-container\r\n    *ngTemplateOutlet=\"\r\n      recursiveList;\r\n      context: { $implicit: listItems, itemLevel: 0 }\r\n    \"\r\n  >\r\n  </ng-container>\r\n</div>\r\n<ng-template #recursiveList let-items let-itemLevel=\"itemLevel\">\r\n  <ng-container *ngIf=\"isReorderRequired\">\r\n    <mat-list\r\n      class=\"ieeesa-list-item\"\r\n      cdkDropList\r\n      cdkDropListData=\"items\"\r\n      (cdkDropListDropped)=\"drop($event, items, itemLevel)\"\r\n    >\r\n      <ng-container\r\n        *ngFor=\"let item of items; let index = index; trackBy: trackByFn\"\r\n      >\r\n        <div\r\n          class=\"ieeesa-list-item-container d-flex\"\r\n          [style.marginLeft.px]=\"itemLevel * indentation\"\r\n        >\r\n          <mat-list-item\r\n            [ngClass]=\"{\r\n              'ieeesa-list-item__root-level-item': itemLevel === 0,\r\n              'ieeesa-list-item__subitem': itemLevel > 0\r\n            }\"\r\n            [cdkDragData]=\"item\"\r\n            cdkDrag\r\n            cdkDragLockAxis=\"y\"\r\n          >\r\n            <ng-container\r\n              *ngTemplateOutlet=\"agendaItem; context: { $implicit: item }\"\r\n            ></ng-container>\r\n          </mat-list-item>\r\n        </div>\r\n        <ng-container *ngIf=\"item?.subItems\">\r\n          <ng-container\r\n            *ngTemplateOutlet=\"\r\n              recursiveList;\r\n              context: {\r\n                $implicit: item.subItems,\r\n                itemLevel: itemLevel + 1\r\n              }\r\n            \"\r\n          >\r\n          </ng-container>\r\n        </ng-container>\r\n      </ng-container>\r\n    </mat-list>\r\n  </ng-container>\r\n  <ng-container *ngIf=\"!isReorderRequired\">\r\n    <mat-list class=\"ieeesa-list-item\">\r\n      <ng-container\r\n        *ngFor=\"let item of items; let index = index; trackBy: trackByFn\"\r\n      >\r\n        <div\r\n          class=\"ieeesa-list-item-container d-flex\"\r\n          [style.marginLeft.px]=\"itemLevel * indentation\"\r\n        >\r\n          <mat-list-item\r\n            [ngClass]=\"{\r\n              'ieeesa-list-item__root-level-item': itemLevel === 0,\r\n              'ieeesa-list-item__subitem': itemLevel > 0\r\n            }\"\r\n          >\r\n            <ng-container\r\n              *ngTemplateOutlet=\"agendaItem; context: { $implicit: item }\"\r\n            ></ng-container>\r\n          </mat-list-item>\r\n        </div>\r\n        <ng-container *ngIf=\"item?.subItems\">\r\n          <ng-container\r\n            *ngTemplateOutlet=\"\r\n              recursiveList;\r\n              context: {\r\n                $implicit: item.subItems,\r\n                itemLevel: itemLevel + 1\r\n              }\r\n            \"\r\n          >\r\n          </ng-container>\r\n        </ng-container>\r\n      </ng-container>\r\n    </mat-list>\r\n  </ng-container>\r\n</ng-template>\r\n<ng-template #agendaItem let-item>\r\n  <div class=\"ieeesa-list-item-child d-flex\">\r\n    <span class=\"ieeesa-list-item__item d-flex\">\r\n      <svg class=\"drag-icon\" *ngIf=\"isReorderRequired\">\r\n        <use [attr.xlink:href]=\"dragAndDropIconUrl\"></use>\r\n      </svg>\r\n      <span class=\"list-number\">\r\n        {{ item?.position }}\r\n      </span>\r\n      <span>\r\n        <span class=\"item-name d-block\">{{ item?.title }}</span>\r\n        <span class=\"ieeesa-list-item__desc d-block\" *ngIf=\"item?.description\">\r\n          {{ item?.description }}\r\n        </span>\r\n        <ieeesa-file-download\r\n          class=\"ieeesa-list-item__list-file-download\"\r\n          *ngIf=\"item?.attachments?.length\"\r\n          [fileDownloadAndDeleteConfig]=\"fileDownloadAndDeleteConfig\"\r\n          [downloadFiles]=\"item?.attachments\"\r\n          (downloadSelectedFile)=\"downloadFile($event)\"\r\n        ></ieeesa-file-download>\r\n      </span>\r\n    </span>\r\n    <span class=\"ieeesa-menu__action\">\r\n      <ieeesa-menu\r\n        *ngIf=\"item?.actionMenus\"\r\n        class=\"ieeesa-menu__icon\"\r\n        [button]=\"item?.actionIcon\"\r\n        [menuItems]=\"item?.actionMenus\"\r\n        (menuItemClick)=\"selectedMenuAction($event, item)\"\r\n      ></ieeesa-menu>\r\n    </span>\r\n  </div>\r\n</ng-template>\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { ToggleButton } from '../../models/toggle-button.model';\r\nimport * as constants from '../../assets/constants.json';\r\n\r\n/**\r\n * ToggleButtonComponent allows users to select toggle between group of buttons.\r\n * The component takes an array of ToggleButton objects as an input, where each object contains id, label and isDisabled property. Default the first button is selected when selectedLabel is not provided.\r\n * @class ToggleButtonComponent\r\n * @implements {OnInit}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-toggle-button',\r\n  standalone: true,\r\n  imports: [CommonModule, MatButtonToggleModule],\r\n  templateUrl: './toggle-button.component.html',\r\n  styleUrls: ['./toggle-button.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ToggleButtonComponent implements OnInit {\r\n  /**\r\n   * Label of the selected button. Default is an empty string.\r\n   * @type {string}\r\n   */\r\n  @Input() selectedLabel = '';\r\n  /**\r\n   * An array of ToggleButton objects that represent the buttons in the toggle group.\r\n   * Each ToggleButton object must have properties: id, label, and isDisabled.\r\n   * @type {ToggleButton[]}\r\n   */\r\n  @Input() buttons!: ToggleButton[];\r\n  /**\r\n   * Event emitter that emits the selected ToggleButton object when a button is clicked.\r\n   * @type {EventEmitter<ToggleButton>}\r\n   */\r\n  @Output() toggleSelected: EventEmitter<ToggleButton> =\r\n    new EventEmitter<ToggleButton>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  constants: any = constants;\r\n  defaultTickIconURL = this.constants?.chips?.icons?.check?.iconURL;\r\n  @Input() canShowLabel = true;\r\n  selectedId = 0;\r\n\r\n  /**\r\n   * By default, the first button in a group is selected when selectedLabel is not provided.\r\n   * @return -returns nothing\r\n   */\r\n  ngOnInit(): void {\r\n    this.selectedLabel = !this.selectedLabel\r\n      ? this.buttons[0]?.label\r\n      : this.selectedLabel;\r\n    this.selectedId = this.buttons[0]?.id;\r\n  }\r\n  /**\r\n   * Updates the selectedLabel with the clicked button label and emits the toggleSelected event with the selected ToggleButton object.\r\n   * @param {ToggleButton} button -Selected ToggleButton object.\r\n   * @return -returns nothing\r\n   */\r\n  toggleButtonClicked(button: ToggleButton): void {\r\n    this.selectedLabel = button.label;\r\n    this.selectedId = button.id;\r\n    this.toggleSelected.emit(button);\r\n  }\r\n\r\n  /**\r\n   * TrackByFunction is called for each item in the collection and return a unique identifier for that item.\r\n   * @param {number} index -The index of the current item in the collection.\r\n   * @param {ToggleButton} button -The current button object from the collection being iterated.\r\n   * @return {number} -returns number\r\n   */\r\n  trackByFn(index: number, button: ToggleButton): number {\r\n    return button.id;\r\n  }\r\n}\r\n","<mat-button-toggle-group\r\n  class=\"ieeesa-toggle-btn-group\"\r\n  [value]=\"selectedLabel\"\r\n>\r\n  <mat-button-toggle\r\n    class=\"ieeesa-toggle-btn-group__button\"\r\n    *ngFor=\"let button of buttons; trackBy: trackByFn\"\r\n    [value]=\"button.label\"\r\n    [disabled]=\"button?.isDisabled ? button.isDisabled : false\"\r\n    (change)=\"toggleButtonClicked(button)\"\r\n  >\r\n    <ng-container\r\n      *ngIf=\"button?.canShowTickSelection && button?.id === selectedId\"\r\n    >\r\n      <svg\r\n        class=\"ieeesa-toggle-btn-group__button__icon me-1\"\r\n        *ngIf=\"button?.tickIconURL; else defaultTickIcon\"\r\n      >\r\n        <use [attr.xlink:href]=\"button?.tickIconURL\"></use>\r\n      </svg>\r\n      <ng-template #defaultTickIcon>\r\n        <svg class=\"ieeesa-toggle-btn-group__button__icon me-1\">\r\n          <use [attr.xlink:href]=\"defaultTickIconURL\"></use>\r\n        </svg>\r\n      </ng-template>\r\n    </ng-container>\r\n    <svg\r\n      class=\"ieeesa-toggle-btn-group__button__icon me-1\"\r\n      *ngIf=\"button?.isIconNeeded ?? false\"\r\n    >\r\n      <use [attr.xlink:href]=\"button?.iconURL\"></use>\r\n    </svg>\r\n\r\n    <span *ngIf=\"canShowLabel\" class=\"ieeesa-toggle-btn-group__button__label\">\r\n      {{ button.label }}</span\r\n    >\r\n  </mat-button-toggle>\r\n</mat-button-toggle-group>\r\n","import {\r\n  Component,\r\n  ComponentRef,\r\n  EventEmitter,\r\n  Inject,\r\n  OnDestroy,\r\n  OnInit,\r\n  ViewChild,\r\n  ViewContainerRef,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  MAT_DIALOG_DATA,\r\n  MatDialogModule,\r\n  MatDialogRef,\r\n} from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { ModalType } from '@ieeesa-npm/models';\r\nimport { ToggleButtonComponent } from '../../components/toggle-button/toggle-button.component';\r\nimport { ToggleButton } from '../../models/toggle-button.model';\r\nimport * as modalInfo from '../../assets/constants.json';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n/**\r\n * This component encapsulates the functionality of a modal dialog and implements reusable contents part of the modal components such as text content, loading another component into the modal and emitting modal events to consumed component.\r\n * It utilizes Angular Material's MatDialog module to display the modal dialog.\r\n * @usageNotes -Pass ModalComponent and data options as parameters to MatDialog open method as given below\r\n this.dialog.open(ConfirmationDialogComponent, {data: {}})\r\n * @class ModalComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-modal',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    MatButtonModule,\r\n    ToggleButtonComponent,\r\n    MatDialogModule,\r\n  ],\r\n  templateUrl: './modal.component.html',\r\n  styleUrls: ['./modal.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ModalComponent implements OnInit, OnDestroy {\r\n  @ViewChild('componentContainer', { read: ViewContainerRef, static: true })\r\n  componentContainer!: ViewContainerRef;\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  componentRef!: ComponentRef<any>;\r\n  formSubmit = new EventEmitter();\r\n  submitFormResponse = new EventEmitter();\r\n  formCancel = new EventEmitter();\r\n  toggleButtonClicked = new EventEmitter();\r\n  isComponentLoaded = false;\r\n  heading = '';\r\n  subHeading = '';\r\n  promptMessage = '';\r\n  leftButtonLabel = '';\r\n  rightButtonLabel = '';\r\n  closeAriaLabel = modalInfo?.ariaLabel?.close;\r\n  toggleButtons!: ToggleButton[];\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  componentReference: any;\r\n  modalType!: ModalType;\r\n  isCloseNeeded = false;\r\n  modalConfirm = new EventEmitter();\r\n  canCloseModal = true;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  componentData: any;\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    public dialogRef: MatDialogRef<ModalComponent>,\r\n    // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-explicit-any\r\n    @Inject(MAT_DIALOG_DATA) public modalData: any // eslint-disable-next-line no-empty-function, @typescript-eslint/no-empty-function\r\n  ) {}\r\n\r\n  /**\r\n   * Initializes the component.\r\n   * @return -returns nothing\r\n   */\r\n  ngOnInit(): void {\r\n    this.heading = this.modalData?.heading;\r\n    this.subHeading = this.modalData?.subHeading;\r\n    this.promptMessage = this.modalData?.promptMessage;\r\n    this.leftButtonLabel = this.modalData?.leftButtonLabel;\r\n    this.rightButtonLabel = this.modalData?.rightButtonLabel;\r\n    this.toggleButtons = this.modalData?.toggleButtons;\r\n    this.componentReference = this.modalData?.componentReference;\r\n    this.modalType = this.modalData?.modalType;\r\n    this.isCloseNeeded = this.modalData?.isCloseNeeded;\r\n    this.canCloseModal = this.modalData?.canCloseModal ?? true;\r\n    this.componentData = this.modalData?.componentData;\r\n    if (this.componentReference) {\r\n      this.loadComponent();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Emit onToggleButtonClicked event when a toggle button is selected.\r\n   * @param {ToggleButton} selected -Selected toggle button object.\r\n   */\r\n  onToggleButtonSelect(selected: ToggleButton) {\r\n    if (this.toggleButtons.length > 0) {\r\n      this.heading = selected?.label;\r\n    }\r\n    this.toggleButtonClicked.emit(selected);\r\n  }\r\n\r\n  /**\r\n   * Loads the component into the view container.\r\n   */\r\n  loadComponent() {\r\n    if (this.isComponentLoaded) {\r\n      this.componentRef.destroy();\r\n      this.componentContainer.clear();\r\n    }\r\n    this.componentRef = this.componentContainer.createComponent(\r\n      this.componentReference\r\n    );\r\n    // Generic data passing — pass data to dynamic component via the input name specified in modalData\r\n    if (this.modalData?.data2DynamicComponent !== null && this.modalData?.data2DynamicComponent !== undefined) {\r\n      const inputName = this.modalData?.dataInputName || 'personalizedUserIdleSessionInfo';\r\n      if (inputName in this.componentRef.instance) {\r\n        this.componentRef.instance[inputName] = this.modalData.data2DynamicComponent;\r\n      }\r\n    }\r\n    this.isComponentLoaded = true;\r\n    if (\r\n      this.modalType === ModalType.FORM ||\r\n      this.modalType === ModalType.FORM_AND_CONTENT\r\n    ) {\r\n      this.componentRef?.instance?.submitFormResponse\r\n        ?.pipe(takeUntil(this.destroy$))\r\n        .subscribe(\r\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n          (result: any) => {\r\n            this.submitFormResponse.emit(result);\r\n          }\r\n        );\r\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n      this.componentRef?.instance?.formCancel\r\n        ?.pipe(takeUntil(this.destroy$))\r\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n        .subscribe((result: any) => {\r\n          this.formCancel.emit(result);\r\n        });\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Handles the confirmation event.\r\n   * @param {boolean} value - The confirmation value.\r\n   */\r\n  onConfirm(value: boolean) {\r\n    this.modalConfirm.emit(value);\r\n    this.dialogRef.close();\r\n  }\r\n  /**\r\n   * Closes modal based on canCloseModal and emits an event.\r\n   * @param {boolean} value\r\n   * @memberof ModalComponent\r\n   */\r\n  onModalClose(value: boolean): void {\r\n    if (this.canCloseModal) this.dialogRef.close();\r\n    this.modalConfirm.emit(value);\r\n  }\r\n  /**\r\n   * Returns dialog type\r\n   * @return {number} value-Dialog type enum\r\n   */\r\n  getModalType(): boolean {\r\n    return (\r\n      this.modalType === ModalType.DIALOG ||\r\n      this.modalType === ModalType.CONTENT\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Cleans up resources when the component is destroyed.\r\n   */\r\n  ngOnDestroy() {\r\n    if (this.componentRef) {\r\n      this.componentRef.destroy();\r\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n      this.componentRef = null as any;\r\n    }\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n}\r\n","<div class=\"ieeesa-modal\">\r\n  <div mat-dialog-title class=\"ieeesa-modal-title px-0 m-0\">\r\n    <h4\r\n      class=\"ieeesa-modal-title__heading ieeesa-headline-lg-32 my-0\"\r\n      *ngIf=\"heading\"\r\n    >\r\n      <span>{{ heading }}</span>\r\n    </h4>\r\n    <p\r\n      class=\"ieeesa-modal-title__prompt-message ieeesa-headline-sm-26 m-0\"\r\n      *ngIf=\"promptMessage\"\r\n    >\r\n      <span>{{ promptMessage }}</span>\r\n    </p>\r\n    <p\r\n      class=\"ieeesa-modal-title__sub-heading ieeesa-body-md-14 text-left m-0\"\r\n      *ngIf=\"subHeading\"\r\n    >\r\n      {{ subHeading }}\r\n    </p>\r\n    <ieeesa-toggle-button\r\n      *ngIf=\"toggleButtons && toggleButtons.length > 0\"\r\n      class=\"float-end\"\r\n      [buttons]=\"toggleButtons\"\r\n      (toggleSelected)=\"onToggleButtonSelect($event)\"\r\n    ></ieeesa-toggle-button>\r\n  </div>\r\n  <div mat-dialog-content class=\"ieeesa-label-lg-16 px-0\">\r\n    <ng-container #componentContainer></ng-container>\r\n  </div>\r\n  <div\r\n    mat-dialog-actions\r\n    class=\"d-flex justify-content-end p-0 flex-nowrap\"\r\n    *ngIf=\"getModalType()\"\r\n  >\r\n    <button\r\n      mat-button\r\n      class=\"mat-secondary-button align-self-stretch\"\r\n      (click)=\"onConfirm(false)\"\r\n    >\r\n      {{ leftButtonLabel }}\r\n    </button>\r\n    <button\r\n      mat-button\r\n      class=\"mat-primary-button align-self-stretch\"\r\n      (click)=\"onConfirm(true)\"\r\n    >\r\n      {{ rightButtonLabel }}\r\n    </button>\r\n  </div>\r\n  <button\r\n    *ngIf=\"isCloseNeeded\"\r\n    [attr.aria-label]=\"closeAriaLabel\"\r\n    (click)=\"onModalClose(false)\"\r\n    class=\"ieeesa-modal__close-button\"\r\n  >\r\n    <i class=\"ieeesa-modal__close-icon fa fa-close\"></i>\r\n  </button>\r\n</div>\r\n","import { Component, Inject, ViewEncapsulation } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport {\r\n  MAT_DIALOG_DATA,\r\n  MatDialogRef,\r\n  MatDialogModule,\r\n} from \"@angular/material/dialog\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { AlignType, ConfirmationModalData } from '@ieeesa-npm/models';\r\n\r\n/**\r\n * ModalConfirmationComponent is used to get user confirmation and this component should be invoked by using Angular material MatDialog open method.\r\n * @usageNotes -Pass ModalConfirmationComponent and data options as parameters to MatDialog open method as given below\r\n this.dialog.open(ModalConfirmationComponent, {data: {}})\r\n * @class ModalConfirmationComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-modal-confirmation',\r\n  standalone: true,\r\n  imports: [CommonModule, MatDialogModule, MatButtonModule],\r\n  templateUrl: './modal-confirmation.component.html',\r\n  styleUrls: ['./modal-confirmation.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ModalConfirmationComponent {\r\n  alignmentType = AlignType;\r\n  constructor(\r\n    @Inject(MAT_DIALOG_DATA)\r\n    // eslint-disable-next-line no-unused-vars\r\n     public confirmationModalData: ConfirmationModalData,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private dialogRef: MatDialogRef<ModalConfirmationComponent> // eslint-disable-next-line no-empty-function\r\n  ) {\r\n    dialogRef.disableClose = true;\r\n  }\r\n\r\n  /**\r\n   * Handles the user confirmation and emits the confirmation value using the confirmationEvent.\r\n   * @param {boolean} confirmation -A boolean value indicating whether the user confirmed (true) or canceled (false) the action.\r\n   * @memberof ModalConfirmationComponent\r\n   * @returns - returns nothing\r\n   */\r\n  onConfirm(confirmation: boolean): void {\r\n    this.dialogRef.close(confirmation);\r\n  }\r\n}\r\n","<div class=\"ieeesa-confirmation\">\r\n  <div mat-dialog-content class=\"ieeesa-headline-sm-26 row\">\r\n    <span class=\"ieeesa-body-md-14 ieeesa-confirmation__content col px-0\">\r\n      <ng-container *ngIf=\"confirmationModalData.messageParts?.length; else plainMessage\">\r\n        <ng-container *ngFor=\"let part of confirmationModalData.messageParts\">\r\n          <strong *ngIf=\"part.bold\">{{ part.text }}</strong>\r\n          <ng-container *ngIf=\"!part.bold\">{{ part.text }}</ng-container>\r\n        </ng-container>\r\n      </ng-container>\r\n      <ng-template #plainMessage>{{ confirmationModalData.promptMessage }}</ng-template>\r\n    </span>\r\n  </div>\r\n  <div\r\n    mat-dialog-actions\r\n    class=\"d-flex p-2 row flex-nowrap\"\r\n    [ngClass]=\"{\r\n      'justify-content-start': confirmationModalData.actionButtonAlign === alignmentType.LEFT,\r\n      'justify-content-center': confirmationModalData.actionButtonAlign === alignmentType.MIDDLE,\r\n      'justify-content-end': confirmationModalData.actionButtonAlign === alignmentType.RIGHT,\r\n      \r\n    }\"\r\n  >\r\n    <button\r\n      mat-button\r\n      class=\"mat-tertiary-button col-sm-6\"\r\n      (click)=\"onConfirm(false)\"\r\n    >\r\n      {{ confirmationModalData.leftButtonLabel }}\r\n    </button>\r\n    <button\r\n      mat-button\r\n      class=\"mat-primary-button col-sm-6\"\r\n      (click)=\"onConfirm(true)\"\r\n    >\r\n      {{ confirmationModalData.rightButtonLabel }}\r\n    </button>\r\n  </div>\r\n</div>\r\n","import { Component, Inject, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  MAT_DIALOG_DATA,\r\n  MatDialogModule,\r\n  MatDialogRef,\r\n} from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { InfoModalData } from '@ieeesa-npm/models';\r\n\r\n/**\r\n * ModalInfoComponent is a simple informational dialog that displays a centered message\r\n * with a single dismissal button. \r\n *\r\n * @usageNotes - Pass ModalInfoComponent and data options as parameters to MatDialog open method:\r\n * this.dialog.open(ModalInfoComponent, { data: { message: '...', buttonLabel: 'OK' } })\r\n * @class ModalInfoComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-modal-info',\r\n  standalone: true,\r\n  imports: [CommonModule, MatDialogModule, MatButtonModule],\r\n  templateUrl: './modal-info.component.html',\r\n  styleUrls: ['./modal-info.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ModalInfoComponent {\r\n  constructor(\r\n    @Inject(MAT_DIALOG_DATA)\r\n    // eslint-disable-next-line no-unused-vars\r\n    public data: InfoModalData,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private dialogRef: MatDialogRef<ModalInfoComponent>\r\n  ) {\r\n    dialogRef.disableClose = true;\r\n  }\r\n\r\n  /**\r\n   * Closes the info dialog.\r\n   * @memberof ModalInfoComponent\r\n   */\r\n  onClose(): void {\r\n    this.dialogRef.close();\r\n  }\r\n}\r\n","<div class=\"ieeesa-modal-info\">\r\n  <div mat-dialog-content class=\"ieeesa-headline-sm-26 row\">\r\n    <span class=\"ieeesa-body-md-16\r\n     ieeesa-modal-info__content col px-0\">\r\n      {{ data.message }}\r\n    </span>\r\n  </div>\r\n  <div\r\n    mat-dialog-actions\r\n    class=\"d-flex p-2 row flex-nowrap justify-content-center\"\r\n  >\r\n    <button\r\n      mat-button\r\n      class=\"mat-tertiary-button\"\r\n      (click)=\"onClose()\"\r\n      [attr.aria-label]=\"data.buttonLabel\"\r\n    >\r\n      {{ data.buttonLabel  }}\r\n    </button>\r\n  </div>\r\n</div>\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  Input,\r\n  OnDestroy,\r\n  ViewEncapsulation,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { MatSidenav, MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MediaMatcher } from '@angular/cdk/layout';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SideMenuItem } from '../../models/navigation-menu.model';\r\nimport { provideAnimations } from '@angular/platform-browser/animations';\r\n/**\r\n * The component accepts menu items data as configurable input parameter and the menus are populated based on it.\r\n * The component checks the defined mobile device resolution and accordingly updates the side navigation menu view.\r\n * The component accepts menu opened/closed state as an input parameter. By default, the side menu is configured to open state.\r\n * @export\r\n * @class NavigationMenuComponent\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-navigation-menu',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    MatSidenavModule,\r\n    MatListModule,\r\n    MatExpansionModule,\r\n    MatButtonModule,\r\n    RouterModule,\r\n  ],\r\n  providers: [provideAnimations()],\r\n  templateUrl: './navigation-menu.component.html',\r\n  styleUrls: ['./navigation-menu.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NavigationMenuComponent implements OnDestroy {\r\n  @Input() isMenuOpen = true;\r\n  @Input() sideMenu!: SideMenuItem[];\r\n  @ViewChild('navMenu') navMenu!: MatSidenav;\r\n  mobileQuery: MediaQueryList;\r\n  mobileQueryListener: () => void;\r\n\r\n  constructor(\r\n    public changeDetectorRef: ChangeDetectorRef,\r\n    public media: MediaMatcher\r\n  ) {\r\n    this.mobileQuery = media.matchMedia('(max-width: 576px)');\r\n    this.mobileQueryListener = () => changeDetectorRef.detectChanges();\r\n    this.mobileQuery.addEventListener('change', () => {\r\n      this.mobileQueryListener();\r\n    });\r\n  }\r\n  /**\r\n   * Takes the index and the current item as arguments and needs to return the unique identifier for this item.\r\n   * @param {number} index\r\n   * @param {array} menuItems\r\n   * @return {number}\r\n   * @memberof NavigationMenuComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  trackByFn(index: number, menuItems: any): number {\r\n    return menuItems.id;\r\n  }\r\n  /**\r\n   * This method returns the status for menu to be opened or closed by default, basis on device resolution\r\n   * @return {boolean}\r\n   * @memberof NavigationMenuComponent\r\n   */\r\n  isMenuOpened(): boolean {\r\n    return this.mobileQuery.matches ? false : this.isMenuOpen;\r\n  }\r\n\r\n  /**\r\n   *  Toggles the navigation menu state.\r\n   * @memberof NavigationMenuComponent\r\n   */\r\n  toggleNavMenu(): void {\r\n    if (this.mobileQuery?.matches) {\r\n      this.navMenu?.toggle();\r\n    }\r\n  }\r\n  ngOnDestroy(): void {\r\n    this.mobileQuery.removeEventListener('change', () => {\r\n      this.mobileQueryListener();\r\n    });\r\n  }\r\n}\r\n","<div\r\n  class=\"ieeesa-sidenav\"\r\n  [ngClass]=\"mobileQuery?.matches ? 'ieeesa-sidenav--mobile' : ''\"\r\n>\r\n  <mat-sidenav-container class=\"ieeesa-sidenav__container\">\r\n    <mat-sidenav\r\n      role=\"navigation\"\r\n      #navMenu\r\n      [opened]=\"isMenuOpened()\"\r\n      [mode]=\"mobileQuery.matches ? 'over' : 'side'\"\r\n      [fixedInViewport]=\"mobileQuery.matches\"\r\n      [ngClass]=\"{ 'ieeesa-sidenav__container__mobile': mobileQuery.matches }\"\r\n    >\r\n      <mat-nav-list>\r\n        <ng-template #recursiveMenuList let-menuItems>\r\n          <ng-container\r\n            *ngFor=\"let item of menuItems; let i = index; trackBy: trackByFn\"\r\n          >\r\n            <ng-container *ngIf=\"item?.subMenuItems?.length; else subMenu\">\r\n              <mat-accordion>\r\n                <mat-expansion-panel>\r\n                  <mat-expansion-panel-header>\r\n                    <mat-panel-title>\r\n                      <div\r\n                        class=\"d-flex align-items-center ieeesa-label-lg-16 ieeesa-sidenav__container__menu-item\"\r\n                      >\r\n                        <svg\r\n                          *ngIf=\"item?.iconURL\"\r\n                          class=\"ieeesa-sidenav__container__menu-item-icon\"\r\n                          aria-label=\"\"\r\n                        >\r\n                          <use [attr.xlink:href]=\"item.iconURL\"></use>\r\n                        </svg>\r\n                        {{ item.displayName }}\r\n                      </div>\r\n                    </mat-panel-title>\r\n                  </mat-expansion-panel-header>\r\n                  <ng-container\r\n                    *ngTemplateOutlet=\"\r\n                      recursiveMenuList;\r\n                      context: { $implicit: item.subMenuItems }\r\n                    \"\r\n                  ></ng-container>\r\n                </mat-expansion-panel>\r\n              </mat-accordion>\r\n            </ng-container>\r\n            <ng-template #subMenu>\r\n              <a\r\n                mat-list-item\r\n                [routerLink]=\"[item.routeURL]\"\r\n                (click)=\"toggleNavMenu()\"\r\n                routerLinkActive=\"active-item\"\r\n              >\r\n                <div\r\n                  class=\"ieeesa-label-lg-16 d-flex align-items-center ieeesa-sidenav__container__menu-item\"\r\n                >\r\n                  <svg\r\n                    *ngIf=\"item?.iconURL\"\r\n                    class=\"ieeesa-sidenav__container__menu-item-icon\"\r\n                    aria-label=\"\"\r\n                  >\r\n                    <use [attr.xlink:href]=\"item.iconURL\"></use>\r\n                  </svg>\r\n                  {{ item.displayName }}\r\n                </div>\r\n              </a>\r\n            </ng-template>\r\n          </ng-container>\r\n        </ng-template>\r\n\r\n        <ng-container\r\n          *ngTemplateOutlet=\"\r\n            recursiveMenuList;\r\n            context: { $implicit: sideMenu }\r\n          \"\r\n        ></ng-container>\r\n      </mat-nav-list>\r\n    </mat-sidenav>\r\n  </mat-sidenav-container>\r\n</div>\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  forwardRef,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SafePipe } from '../../pipes/safe.pipe';\r\nimport { SafeType } from '@ieeesa-npm/models';\r\n/**\r\n * The NotificationComponent displays a notification with a heading, title, content, and an optional button.\r\n * Component can be reused in page not found, access denied, session expired notification, logged out pages.\r\n * @class NotificationComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-notification',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    MatIconModule,\r\n    MatButtonModule,\r\n    forwardRef(() => SafePipe),\r\n  ],\r\n  templateUrl: './notification.component.html',\r\n  styleUrls: ['./notification.component.scss'],\r\n})\r\nexport class NotificationComponent {\r\n  @Input() heading!: string;\r\n  @Input() title!: string;\r\n  @Input() content!: string;\r\n  @Input() buttonLabel!: string;\r\n  @Input() buttonIcon = true;\r\n  @Input() headingIconURL!:string;\r\n  @Input() buttonIconURL!:string;\r\n  @Output() notify = new EventEmitter();\r\n  safeType: string = SafeType.HTML;\r\n\r\n  /**\r\n   * Emits the notify event on clicking notify button.\r\n   */\r\n  onClick() {\r\n    this.notify.emit();\r\n  }\r\n}\r\n","<div class=\"ieeesa-notification flex-align-center row\">\r\n  <div class=\"ieeesa-notification__body col-md-4 col-lg-4 p-4\">\r\n    <svg class=\"ieeesa-notification__header-icon\" *ngIf=\"headingIconURL\">\r\n      <use [attr.xlink:href]=\"headingIconURL\"></use>\r\n    </svg>\r\n    <h1\r\n      class=\"ieeesa-notification__heading ieeesa-display-lg-57 text-capitalize\"\r\n      *ngIf=\"heading\"\r\n    >\r\n      {{ heading }}\r\n    </h1>\r\n    <p class=\"ieeesa-notification__title ieeesa-title-lg-bold-24\">\r\n      {{ title }}\r\n    </p>\r\n    <p\r\n      class=\"ieeesa-notification__message ieeesa-title-md-18\"\r\n      [innerHTML]=\"content | safe : safeType\"\r\n    ></p>\r\n    <button *ngIf=\"buttonLabel\"\r\n      mat-button\r\n      color=\"primary\"\r\n      class=\"ieeesa-notification__button ieeesa-label-lg-bold-16 mat-primary-button\"\r\n      (click)=\"onClick()\"\r\n    >\r\n      <svg class=\"ieeesa-notification__button__icon me-2\" *ngIf=\"buttonIconURL\">\r\n        <use [attr.xlink:href]=\"buttonIconURL\"></use>\r\n      </svg> \r\n      <i\r\n        *ngIf=\"buttonIcon && !buttonIconURL\"\r\n        class=\"fa-solid fa-arrow-left\"\r\n      ></i>\r\n      {{ buttonLabel }}\r\n    </button>\r\n  </div>\r\n</div>\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SetBackgroundDirective } from '../../directives/set-background/set-background.directive';\r\nimport { AppConfigInfo } from '../../models/app-config-info.model';\r\nimport { Router } from '@angular/router';\r\nimport * as constants from '../../assets/constants.json';\r\n\r\n/**\r\n * Provides reusable implementation to pre-login page by getting the application config information as an input to the component.\r\n * @export\r\n * @class WelcomeComponent\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-welcome',\r\n  standalone: true,\r\n  imports: [CommonModule, MatButtonModule, SetBackgroundDirective],\r\n  templateUrl: './welcome.component.html',\r\n  styleUrls: ['./welcome.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class WelcomeComponent implements OnInit {\r\n  /**\r\n   * AppConfigInfo data can be passed as input while calling this component using selector and it can also be passed as a route data.\r\n   * @usage <nesc-welcome [appConfigInfo]=\"appConfigInfo\"></nesc-welcome> or routes: Route[]=[{ path: 'landing', component: WelcomeComponent, data:{appConfigInfo:appConfigInfo} }]\r\n   * @type {AppConfigInfo}\r\n   * @memberof WelcomeComponent\r\n   */\r\n  @Input() appConfigInfo: AppConfigInfo = {\r\n    appTitle: '',\r\n    appDescription: '',\r\n    cookieName: '',\r\n    ssoSignOutUrl: '',\r\n    domainUrl: '',\r\n    createAccountUrl: '',\r\n  };\r\n  @Output() signInClick: EventEmitter<Event> = new EventEmitter<Event>();\r\n  @Output() signUpClick: EventEmitter<Event> = new EventEmitter<Event>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  constants: any = constants;\r\n  url: string = constants?.welcome?.buttons?.[0]?.url;\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(private router: Router) {}\r\n\r\n  ngOnInit(): void {\r\n    this.appConfigInfo.createAccountUrl =\r\n      this.appConfigInfo.createAccountUrl ?? this.url;\r\n  }\r\n\r\n  /**\r\n   * Navigates to passed sign up route url or emits the click event in case route url is not there.\r\n   * @param {Event} event\r\n   * @memberof WelcomeComponent\r\n   */\r\n  onCreateAccountClick(event: Event): void {\r\n    if (this.appConfigInfo?.domainUrl) {\r\n      const createAccountUrl = `${this.appConfigInfo?.createAccountUrl}?url=${this.appConfigInfo?.domainUrl}/&signinurl=${this.appConfigInfo?.domainUrl}${this.appConfigInfo?.signInRouteUrl}`;\r\n      window.open(createAccountUrl, '_blank');\r\n    } else {\r\n      this.signUpClick.emit(event);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Navigates to passed sign in route url or emits the click event in case route url is not there.\r\n   * @param {Event} event\r\n   * @memberof WelcomeComponent\r\n   */\r\n  onSignInClick(event: Event): void {\r\n    if (this.appConfigInfo?.signInRouteUrl) {\r\n      this.router.navigate([this.appConfigInfo?.signInRouteUrl]);\r\n    } else {\r\n      this.signInClick.emit(event);\r\n    }\r\n  }\r\n}\r\n","<div\r\n  *ngIf=\"appConfigInfo\"\r\n  class=\"ieeesa-welcome d-flex justify-content-center\"\r\n  ieeesaSetBackground\r\n  [background]=\"appConfigInfo.background ?? { color: '', imgURL: '' }\"\r\n>\r\n  <div\r\n    class=\"jumbotron ieeesa-welcome__note d-flex flex-column justify-content-between px-4 px-sm-5 px-md-5 px-lg-5 py-4 mx-2 mx-sm-4 mx-md-4 mx-lg-4 my-5\"\r\n  >\r\n    <ng-container>\r\n      <h1 class=\"ieeesa-display-md-47 ieeesa-welcome__note--heading\">\r\n        {{ appConfigInfo.appTitle }}\r\n      </h1>\r\n      <p class=\"ieeesa-title-lg-24 ieeesa-welcome__note--description\">\r\n        {{ appConfigInfo.appDescription }}\r\n      </p>\r\n    </ng-container>\r\n    <div\r\n      class=\"ieeesa-welcome__action d-flex align-items-center justify-content-between justify-content-sm-center justify-content-md-center justify-content-lg-center justify-content-xl-center flex-column flex-sm-row flex-md-row flex-lg-row flex-xl-row\"\r\n    >\r\n      <button\r\n        class=\"my-4 my-sm-5 my-md-5 my-lg-5 no-bg-color-btn btn ieeesa-welcome__action--register d-flex align-items-center justify-content-center ieeesa-label-lg-bold-16 order-2 order-sm-1 order-md-1 order-lg-1 order-xl-1\"\r\n        (click)=\"onCreateAccountClick($event)\"\r\n        rel=\"noopener noreferrer\"\r\n        [attr.ariaLabel]=\"constants?.welcome?.buttons?.[0]?.ariaLabel\"\r\n        target=\"_blank\"\r\n      >\r\n        {{ constants?.welcome?.buttons?.[0]?.label }}\r\n      </button>\r\n      <button\r\n        mat-raised-button\r\n        mat-button\r\n        class=\"mx-0 my-3 mx-sm-5 mx-md-5 mx-lg-5 mat-primary-button ieeesa-welcome__action--sign-in ieeesa-label-lg-bold-16 order-1 order-sm-2 order-md-2 order-lg-2 order-xl-2\"\r\n        (click)=\"onSignInClick($event)\"\r\n      >\r\n        {{ constants?.welcome?.buttons?.[1]?.label }}\r\n      </button>\r\n    </div>\r\n  </div>\r\n</div>\r\n","/* eslint-disable no-unused-vars */\r\nexport enum ChipOrientation {\r\n  HORIZONTAL = 'HORIZONTAL',\r\n  VERTICAL = 'VERTICAL',\r\n}\r\nexport enum ChipsType {\r\n  STATIC = ' STATIC',\r\n  TOGGLE = 'TOGGLE',\r\n  INPUT = 'INPUT',\r\n  AUTOCOMPLETE = 'AUTOCOMPLETE',\r\n  FORM_CONTROL = 'FORM_CONTROL',\r\n  AVATAR = 'AVATAR',\r\n}\r\nexport enum FilterOptionType {\r\n  CHECKBOX = 'CHECKBOX',\r\n  DROPDOWN = 'DROPDOWN',\r\n}\r\n\r\nexport interface ChipOption {\r\n  id: number | string;\r\n  name: string;\r\n  checked: boolean;\r\n  disabled?: boolean;\r\n  chipType: ChipsType;\r\n  optionType?: FilterOptionType;\r\n  canShowSelection?: boolean;\r\n}\r\n","import {\r\n  Component,\r\n  Input,\r\n  Output,\r\n  EventEmitter,\r\n  OnInit,\r\n  OnDestroy,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  MatChipListbox,\r\n  MatChipOption,\r\n  MatChipsModule,\r\n} from '@angular/material/chips';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { BreakpointObserverService } from '../../services/break-point-observer.service';\r\nimport {\r\n  ChipOption,\r\n  ChipOrientation,\r\n  ChipsType,\r\n} from '../../models/chip-option.model';\r\nimport { IconButton } from '@ieeesa-npm/models';\r\nimport * as constants from '../../assets/constants.json';\r\n\r\n/**\r\n * Chips component allow users to view information, make selections, filter content.\r\n * @export\r\n * @class ChipComponent\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-chips',\r\n  standalone: true,\r\n  imports: [CommonModule, MatChipsModule],\r\n  templateUrl: './chips.component.html',\r\n  styleUrls: ['./chips.component.scss'],\r\n})\r\nexport class ChipsComponent implements OnInit, OnDestroy {\r\n  defaultVisibleChips!: ChipOption[];\r\n  isMobileView = false;\r\n  labelViewAllOrLess!: string;\r\n  constants = constants;\r\n  chipsType = ChipsType;\r\n  orientations = ChipOrientation;\r\n  activeLabel: string = this.constants?.chips?.label?.viewLess;\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  private chips!: ChipOption[];\r\n  @Input()\r\n  set chipGroup(value: ChipOption[]) {\r\n    this.chips = value;\r\n    this.viewChips(this.activeLabel);\r\n  }\r\n  get chipGroup(): ChipOption[] {\r\n    return this.chips;\r\n  }\r\n  @Input() chipOrientation: ChipOrientation = this.orientations.HORIZONTAL;\r\n  @Input() noOfDefaultVisibleChips: number =\r\n    this.constants?.chips?.noOfDefaultVisibleChips;\r\n  @Input() hasViewMoreForDesktop = false;\r\n  @Input() hasViewMoreForMobile = false;\r\n  @Input() avatar!: IconButton;\r\n  @Input() arrow!: IconButton;\r\n  @Input() check!: IconButton;\r\n  @ViewChild(MatChipListbox) chipListBox!: MatChipListbox;\r\n  @Input() isViewMoreNeeded = false;\r\n  private hasChipToggledInfo!: boolean;\r\n  @Input()\r\n  get hasChipToggled() {\r\n    return this.hasChipToggledInfo;\r\n  }\r\n  set hasChipToggled(value: boolean) {\r\n    this.hasChipToggledInfo = value;\r\n    if (value) {\r\n      const lastSelectedChip = this.chipListBox?.selected as MatChipOption;\r\n      if (lastSelectedChip) lastSelectedChip.selected = false;\r\n    }\r\n  }\r\n  @Input() viewAllLabel: string = this.constants?.chips?.label?.viewAll;\r\n  @Input() viewLessLabel: string = this.constants?.chips?.label?.viewLess;\r\n  @Output() selectedChip = new EventEmitter();\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(public breakpointObserverService: BreakpointObserverService) {}\r\n  ngOnInit(): void {\r\n    this.breakpointObserverService\r\n      .getBreakpoint()\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((result) => {\r\n        this.isMobileView = result.matches;\r\n        this.getViewMore();\r\n        this.viewChips(this.activeLabel);\r\n      });\r\n  }\r\n  /**\r\n   * Onclick the chip, it emits selectedChip event with selected chip.\r\n   * @param {ChipOption} chip\r\n   * @memberof ChipComponent\r\n   */\r\n  onChipClick(chip: ChipOption): void {\r\n    chip.checked = !chip.checked;\r\n    this.selectedChip.emit(chip);\r\n    this.chipGroup.forEach((chipOption) => {\r\n      if (chipOption.id !== chip.id) chipOption.checked = false;\r\n    });\r\n  }\r\n  /**\r\n   * Shows list of chips on the basis of view more/less button state.\r\n   * @memberof ChipComponent\r\n   */\r\n  viewChips(clickedLabel: string): void {\r\n    if (this.isViewMoreNeeded) {\r\n      if (clickedLabel === this.constants?.chips?.label?.viewLess) {\r\n        this.activeLabel = this.constants?.chips?.label?.viewLess;\r\n        this.defaultVisibleChips = this.chips?.slice(\r\n          0,\r\n          this.constants?.chips?.noOfDefaultVisibleChips\r\n        );\r\n        this.labelViewAllOrLess = this.constants?.chips?.label?.viewAll;\r\n      } else {\r\n        this.defaultVisibleChips = this.chips;\r\n        this.labelViewAllOrLess = this.constants?.chips?.label?.viewLess;\r\n        this.activeLabel = this.constants?.chips?.label?.viewAll;\r\n      }\r\n    } else {\r\n      this.defaultVisibleChips = this.chips;\r\n    }\r\n  }\r\n  /**\r\n   * Sets the isViewMoreNeeded value based on hasViewMore and isMobileView values.\r\n   * @memberof ChipsComponent\r\n   */\r\n  getViewMore(): void {\r\n    this.isViewMoreNeeded =\r\n      (this.hasViewMoreForDesktop && !this.isMobileView) ||\r\n      (this.hasViewMoreForMobile && this.isMobileView);\r\n  }\r\n  /**\r\n   * Allows Angular to detect the specific chip option that needs to change or be added by tracking option unique Id.\r\n   * @param {number} index\r\n   * @param {ChipOption} option\r\n   * @return {*}  {(number | string)}\r\n   * @memberof ChipComponent\r\n   */\r\n  trackById(index: number, option: ChipOption): number | string {\r\n    return option.id;\r\n  }\r\n  /**\r\n   * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n   * @memberof GroupsComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n}\r\n","<div class=\"ieeesa-chip\">\r\n  <mat-chip-listbox\r\n    [attr.aria-label]=\"constants?.chips?.ariaLabel?.chipsList\"\r\n    [ngClass]=\"\r\n      chipOrientation === orientations.VERTICAL\r\n        ? 'mat-mdc-chip-set-stacked'\r\n        : ''\r\n    \"\r\n  >\r\n    <mat-chip-option\r\n      *ngFor=\"let chip of defaultVisibleChips; trackBy: trackById\"\r\n      (selectionChange)=\"onChipClick(chip)\"\r\n      [attr.aria-label]=\"chip?.name\"\r\n      [ngClass]=\"\r\n        chip?.checked && chip?.canShowSelection ? 'selected-checked-state' : ''\r\n      \"\r\n    >\r\n      <div class=\"d-flex align-items-center\">\r\n        <ng-container *ngIf=\"chip?.chipType === chipsType.AVATAR\">\r\n          <svg\r\n            class=\"ieeesa-chip__svg-avatar\"\r\n            *ngIf=\"avatar?.iconURL\"\r\n            matChipAvatar\r\n          >\r\n            <use [attr.xlink:href]=\"avatar?.iconURL\"></use>\r\n          </svg>\r\n        </ng-container>\r\n        <ng-container *ngIf=\"chip?.canShowSelection\">\r\n          <svg class=\"ieeesa-chip__svg-check-icon\" *ngIf=\"check?.iconURL\">\r\n            <use [attr.xlink:href]=\"check?.iconURL\"></use>\r\n          </svg>\r\n        </ng-container>\r\n        <p class=\"ieeesa-label-lg-bold-16 m-0\">{{ chip?.name }}</p>\r\n        <ng-container *ngIf=\"chip?.chipType === chipsType.TOGGLE\">\r\n          <svg\r\n            [ngClass]=\"\r\n              hasChipToggled && chip?.checked\r\n                ? 'ieeesa-chip__selected-state'\r\n                : 'ieeesa-chip__unselected-state'\r\n            \"\r\n            class=\"ieeesa-chip__svg-trailing-icon\"\r\n            *ngIf=\"arrow?.iconURL\"\r\n            matChipTrailingIcon\r\n          >\r\n            <use [attr.xlink:href]=\"arrow?.iconURL\"></use>\r\n          </svg>\r\n        </ng-container>\r\n      </div>\r\n    </mat-chip-option>\r\n  </mat-chip-listbox>\r\n  <button\r\n    *ngIf=\"isViewMoreNeeded && chipGroup.length > noOfDefaultVisibleChips\"\r\n    (click)=\"viewChips(labelViewAllOrLess)\"\r\n    class=\"ieeesa-view-more-or-less-button ieeesa-label-lg-bold-16\"\r\n  >\r\n    {{ labelViewAllOrLess }}\r\n  </button>\r\n</div>\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  OnDestroy,\r\n  ChangeDetectorRef,\r\n  ViewEncapsulation,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { BreakpointObserverService } from '../../services/break-point-observer.service';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { CheckboxOption, IconButton, SelectOption } from '@ieeesa-npm/models';\r\nimport { ChipOption, FilterOptionType } from '../../models/chip-option.model';\r\nimport { ChipsComponent } from '../chips/chips.component';\r\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\r\nimport { IconButtonComponent } from '../icon-button/icon-button.component';\r\nimport * as constants from '../../assets/constants.json';\r\nimport { FiltersAndOptions } from '../../models/filters-options.model';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { SelectComponent } from '../../components/select/select.component';\r\nimport { SelectOpenedState } from '../../models/select-opened-state.model';\r\n\r\n/**\r\n * Provides an implementation for group of filter.\r\n * @export\r\n * @class FilterComponent\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-filter',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    MatCheckboxModule,\r\n    MatIconModule,\r\n    MatButtonModule,\r\n    ChipsComponent,\r\n    CheckboxComponent,\r\n    IconButtonComponent,\r\n    ReactiveFormsModule,\r\n    MatSelectModule,\r\n    SelectComponent,\r\n  ],\r\n  templateUrl: './filter.component.html',\r\n  styleUrls: ['./filter.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class FilterComponent implements OnDestroy {\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  constants: any = constants;\r\n  arrow: IconButton = this.constants?.chips?.icons?.arrow;\r\n  check: IconButton = this.constants?.chips?.icons?.check;\r\n  removeIcon: IconButton = this.constants?.chips?.icons?.remove;\r\n  isFilterOpened = false;\r\n  selectedCheckboxes!: CheckboxOption[];\r\n  onFilterToggle = false;\r\n  isFilterActive = false;\r\n  isMobileView = false;\r\n  isApplyButtonDisabled = true;\r\n  filtersAndOptions = new Map<number | string, CheckboxOption[]>();\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  recreateCheckboxOptionsControl!: CheckboxOption[];\r\n  @ViewChild(SelectComponent) selectComponent!: SelectComponent;\r\n  private filteredTypeOptionsInfo!: ChipOption[];\r\n  private selectedFilterOptionType: FilterOptionType =\r\n    FilterOptionType.CHECKBOX;\r\n  @Input() set filterOptionType(optionType: FilterOptionType) {\r\n    this.selectedFilterOptionType = optionType;\r\n  }\r\n  get filterOptionType() {\r\n    return this.selectedFilterOptionType;\r\n  }\r\n  optionsType = FilterOptionType;\r\n  @Input()\r\n  set appliedFilterOptions(options: ChipOption[]) {\r\n    this.filteredTypeOptionsInfo = options;\r\n  }\r\n  get appliedFilterOptions() {\r\n    return this.filteredTypeOptionsInfo;\r\n  }\r\n  @Input() filterButton: IconButton = this.constants?.filter?.buttons[0];\r\n  @Input() filters!: ChipOption[];\r\n  @Input() canShowSelection = false;\r\n  private selectedFilterOptionsList!: CheckboxOption[];\r\n  selectedFilterDropDownList: SelectOption[] = [];\r\n  defaultSelectedFilterDropDownOptions: SelectOption[] = [];\r\n  selectedFilterId!: string | number;\r\n  prevSelectedFilterOptionsList: CheckboxOption[] = [];\r\n  @Input()\r\n  set selectedFilterOptions(options: CheckboxOption[]) {\r\n    if (options && this.selectedFilterId) {\r\n      this.filtersAndOptions.set(this.selectedFilterId, options);\r\n      this.setFilterSelectionOnOptionChange();\r\n      this.selectedFilterOptionsList = options;\r\n      if (\r\n        this.prevSelectedFilterOptionsList.length &&\r\n        this.prevSelectedFilterOptionsList[0].name !==\r\n          this.selectedFilterOptionsList?.[0]?.name\r\n      )\r\n        this.recreateCheckboxOptionsControl = options;\r\n      this.prevSelectedFilterOptionsList = this.selectedFilterOptionsList;\r\n    }\r\n    if (this.filterOptionType === this.optionsType.DROPDOWN) {\r\n      this.selectedFilterDropDownList = this.selectedFilterOptionsList.map(\r\n        (selectOption: CheckboxOption) => {\r\n          return { id: selectOption.id, name: selectOption.name ?? '' };\r\n        }\r\n      );\r\n    }\r\n  }\r\n  get selectedFilterOptions() {\r\n    return this.selectedFilterOptionsList;\r\n  }\r\n  @Output() selectedFilter = new EventEmitter<ChipOption>();\r\n  @Output() filteredOptions = new EventEmitter<FiltersAndOptions[]>();\r\n  @Output() removeFilteredOption = new EventEmitter();\r\n  @Output() filterDropdownSearch = new EventEmitter<string>();\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private breakpointObserverService: BreakpointObserverService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private changeDetectorReference: ChangeDetectorRef\r\n  ) {\r\n    this.breakpointObserverService\r\n      .getBreakpoint()\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((result) => {\r\n        this.isMobileView = result.matches;\r\n        this.filterButton.disabled = !this.isMobileView;\r\n      });\r\n  }\r\n  /**\r\n   * OnFilterSelected receives the selected filter from chip component, emits the selected filter and toggle the isFilterByOptionsVisible state.\r\n   * @param {ChipOption} type\r\n   * @memberof FilterComponent\r\n   */\r\n  onFilterSelected(type: ChipOption): void {\r\n    this.selectedFilterId = type.id;\r\n    if (type.checked) {\r\n      this.selectedFilter.emit(type);\r\n    }\r\n    this.isFilterOpened = type?.checked;\r\n    this.filterOptionType = type.optionType ?? this.optionsType.CHECKBOX;\r\n    this.onFilterToggle = false;\r\n  }\r\n  /**\r\n   * OnRemovalOfFilteredOption method receives removed chip from chip component and emits the event with removed chip.\r\n   * @param {ChipOption} option\r\n   * @memberof FilterComponent\r\n   */\r\n  onRemovalOfFilteredOption(option: ChipOption): void {\r\n    if (option?.name === this.constants?.filter?.label?.clearAll) {\r\n      this.appliedFilterOptions = [];\r\n      this.filtersAndOptions.forEach((options: CheckboxOption[]) => {\r\n        options?.forEach((option: CheckboxOption) => (option.checked = false));\r\n      });\r\n      this.removeFilteredOption.emit([]);\r\n    } else {\r\n      this.appliedFilterOptions = this.appliedFilterOptions.filter(\r\n        (res: ChipOption) => res.id !== option.id\r\n      );\r\n      this.appliedFilterOptions =\r\n        this.appliedFilterOptions.length === 1 ? [] : this.appliedFilterOptions;\r\n      this.filtersAndOptions.forEach((options: CheckboxOption[]) => {\r\n        options?.forEach((checkBoxOption: CheckboxOption) => {\r\n          if (checkBoxOption.id === option.id) checkBoxOption.checked = false;\r\n        });\r\n      });\r\n      this.removeFilteredOption.emit(this.getListOfSelectedCheckboxes());\r\n    }\r\n    this.setFilterSelectionOnOptionChange();\r\n  }\r\n  getListOfSelectedCheckboxes() {\r\n    const selectedFiltersAndOptions: FiltersAndOptions[] = [];\r\n    this.filtersAndOptions.forEach(\r\n      (value: CheckboxOption[], key: string | number) => {\r\n        const selectedOptions: CheckboxOption[] = [];\r\n        value?.forEach((option) => {\r\n          if (option.checked) selectedOptions.push(option);\r\n        });\r\n        if (selectedOptions.length)\r\n          selectedFiltersAndOptions.push({ [key]: selectedOptions });\r\n      }\r\n    );\r\n    return selectedFiltersAndOptions;\r\n  }\r\n  /**\r\n   * OnFilterApply toggles the isFilterByOptionsVisible state, emits the selected filter options and toggles the filter stateO\r\n   * @memberof FilterComponent\r\n   */\r\n  onFilterApply(): void {\r\n    this.isFilterOpened = !this.isFilterOpened;\r\n    this.filteredOptions.emit(this.getListOfSelectedCheckboxes());\r\n    this.onFilterToggle = true;\r\n    this.isApplyButtonDisabled = true;\r\n    this.changeDetectorReference.detectChanges();\r\n  }\r\n  /**\r\n   * SelectedFilterOptions method is called for every selection and deselection of filter option and stores the selected filter options.\r\n   * @param {FiltersAndOptions[]} values\r\n   * @memberof FilterComponent\r\n   */\r\n  selectedFilterOptionsInfo(values: CheckboxOption[]): void {\r\n    if (this.getListOfSelectedCheckboxes().length === 0)\r\n      this.isApplyButtonDisabled = true;\r\n    else this.isApplyButtonDisabled = false;\r\n    if (values && this.selectedFilterId) {\r\n      this.filtersAndOptions.set(this.selectedFilterId, values);\r\n      this.setFilterSelectionOnOptionChange();\r\n    }\r\n  }\r\n  /**\r\n   * OnFilterByIconClick method toggles the isFilterActive value.\r\n   * @memberof FilterComponent\r\n   */\r\n  onFilterByIconClick(): void {\r\n    this.isFilterActive = !this.isFilterActive;\r\n  }\r\n  /**\r\n   * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n   * @memberof FilterComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n\r\n  /**\r\n   * OnDropdownSelectionChange() is called for every drop down selection changes and sets selectedFilterOptionsList.\r\n   * @memberof FilterComponent\r\n   */\r\n  onDropdownSelectionChange(option: SelectOption): void {\r\n    if (option && this.selectedFilterId) {\r\n      const selectedOption: CheckboxOption[] = [\r\n        {\r\n          id: option.id,\r\n          name: option.name,\r\n          checked: true,\r\n          disabled: false,\r\n        },\r\n      ];\r\n      this.selectedFilterOptionsList?.map((option) => {\r\n        if (option.id === selectedOption[0].id) {\r\n          option.checked = true;\r\n        } else {\r\n          option.checked = false;\r\n        }\r\n      });\r\n      this.isApplyButtonDisabled = false;\r\n      this.filtersAndOptions.set(this.selectedFilterId, selectedOption);\r\n      this.setFilterSelectionOnOptionChange();\r\n    }\r\n  }\r\n\r\n  /**\r\n   * SetFilterSelectionOnOptionChange() called on every selection and deselection of filter option and sets canShowSelection flag to show or hide the tick mark of selected filter option.\r\n   * @memberof FilterComponent\r\n   */\r\n  setFilterSelectionOnOptionChange(): void {\r\n    if (this.canShowSelection) {\r\n      for (const [key, options] of this.filtersAndOptions) {\r\n        const filterOption = this.filters.find((chipOption) => {\r\n          return chipOption.name === key;\r\n        });\r\n        if (filterOption) {\r\n          filterOption.canShowSelection = options.some(\r\n            (option) => option.checked === true\r\n          );\r\n        }\r\n      }\r\n    }\r\n  }\r\n  /**\r\n   * Emits the filterDropdownSearch event with the searched text value.\r\n   * @param {string} searchText\r\n   * @memberof FilterComponent\r\n   */\r\n  onDropdownSearch(searchText: string): void {\r\n    this.filterDropdownSearch.emit(searchText);\r\n  }\r\n  /**\r\n   * Emits filterDropdownSearch event to reset the dropdown options to default when the dropdown is closed and sets search term empty.\r\n   * @param {SelectOpenedState} event\r\n   * @memberof FilterComponent\r\n   */\r\n  onDropdownOpenedChange(event: SelectOpenedState): void {\r\n    if (this.defaultSelectedFilterDropDownOptions?.length === 0) {\r\n      this.defaultSelectedFilterDropDownOptions =\r\n        this.selectedFilterDropDownList;\r\n    }\r\n    if (!event?.opened) {\r\n      this.selectedFilterDropDownList =\r\n        this.defaultSelectedFilterDropDownOptions;\r\n    }\r\n    if (\r\n      !event?.opened &&\r\n      this.selectComponent?.formFields?.toArray()?.[0]?.searchTerm\r\n    ) {\r\n      this.selectComponent.formFields.toArray()[0].searchTerm = '';\r\n    }\r\n  }\r\n}\r\n","<div class=\"ieeesa-filter\" *ngIf=\"filters && filters.length > 0\">\r\n  <div\r\n    class=\"d-flex flex-column flex-sm-column flex-md-column flex-lg-row flex-xl-row\"\r\n  >\r\n    <div class=\"d-flex align-items-center\">\r\n      <ieeesa-icon-button\r\n        [iconButton]=\"filterButton\"\r\n        (click)=\"onFilterByIconClick()\"\r\n      ></ieeesa-icon-button>\r\n      <p\r\n        class=\"ieeesa-label-lg-bold-16 m-0\"\r\n        *ngIf=\"!isMobileView || isFilterActive\"\r\n      >\r\n        {{ constants?.filter?.label?.filterBy }}\r\n      </p>\r\n    </div>\r\n    <div\r\n      [ngClass]=\"\r\n        !isMobileView\r\n          ? 'd-flex align-items-center'\r\n          : 'd-flex align-self-stretch flex-wrap align-items-center pt-sm-2 pt-md-2 pt-2'\r\n      \"\r\n      *ngIf=\"!isMobileView || isFilterActive\"\r\n    >\r\n      <ieeesa-chips\r\n        [chipGroup]=\"filters\"\r\n        [arrow]=\"arrow\"\r\n        [check]=\"check\"\r\n        [hasChipToggled]=\"onFilterToggle\"\r\n        (selectedChip)=\"onFilterSelected($event)\"\r\n      ></ieeesa-chips>\r\n    </div>\r\n  </div>\r\n  <ng-container *ngIf=\"!isMobileView || isFilterActive\">\r\n    <ieeesa-checkbox\r\n      [checkboxes]=\"selectedFilterOptions\"\r\n      [recreateCheckboxOptionsControl]=\"recreateCheckboxOptionsControl\"\r\n      (checkboxOptionsAndSelection)=\"selectedFilterOptionsInfo($event)\"\r\n      *ngIf=\"isFilterOpened && filterOptionType === optionsType.CHECKBOX\"\r\n      class=\"d-flex gap-2 ieeesa-filter__filter-options\"\r\n    ></ieeesa-checkbox>\r\n    <ieeesa-select\r\n      *ngIf=\"isFilterOpened && filterOptionType === optionsType.DROPDOWN\"\r\n      [isSortNeeded]=\"false\"\r\n      [dropdownOptions]=\"selectedFilterDropDownList\"\r\n      [isLabelAlignedLeft]=\"true\"\r\n      [selectLabel]=\"constants?.viewGroups?.filterByLabel\"\r\n      (optionSelected)=\"onDropdownSelectionChange($event)\"\r\n      (optionSearched)=\"onDropdownSearch($event)\"\r\n      (dropdownOpenedChange)=\"onDropdownOpenedChange($event)\"\r\n      [isSearch]=\"true\"\r\n    ></ieeesa-select>\r\n    <button\r\n      mat-button\r\n      *ngIf=\"isFilterOpened\"\r\n      class=\"mat-tertiary-button m-2\"\r\n      [disabled]=\"isApplyButtonDisabled\"\r\n      (click)=\"onFilterApply()\"\r\n    >\r\n      {{ constants?.filter?.label?.applyButton }}\r\n    </button>\r\n    <ieeesa-chips\r\n      [chipGroup]=\"appliedFilterOptions\"\r\n      [isViewMoreNeeded]=\"true\"\r\n      *ngIf=\"appliedFilterOptions\"\r\n      [arrow]=\"removeIcon\"\r\n      (selectedChip)=\"onRemovalOfFilteredOption($event)\"\r\n      class=\"d-flex gap-2 mt-2\"\r\n      [hasViewMoreForDesktop]=\"false\"\r\n      [hasViewMoreForMobile]=\"true\"\r\n    ></ieeesa-chips>\r\n  </ng-container>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport * as constants from '../../assets/constants.json';\r\n@Component({\r\n  selector: 'ieeesa-loader',\r\n  standalone: true,\r\n  imports: [CommonModule, MatProgressSpinnerModule],\r\n  templateUrl: './loader.component.html',\r\n  styleUrls: ['./loader.component.scss'],\r\n})\r\nexport class LoaderComponent {\r\n  @Input() diameter = 48;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  loader: any = constants;\r\n}\r\n","<div class=\"ieeesa-loader\">\r\n  <mat-progress-spinner\r\n    class=\"ieeesa-loader__progress-spinner\"\r\n    mode=\"indeterminate\"\r\n    [diameter]=\"diameter\"\r\n    [attr.aria-label]=\"loader.ariaLabel.spinner\"\r\n  ></mat-progress-spinner>\r\n  <div class=\"ieeesa-loader__overlay\"></div>\r\n</div>\r\n","/* eslint-disable no-unused-vars */\r\nexport enum TableColumnType {\r\n  TEXT = 'TEXT',\r\n  LINK = 'LINK',\r\n  SELECT = 'SELECT',\r\n  ADD = 'ADD',\r\n  EDIT = 'EDIT',\r\n  DELETE = 'DELETE',\r\n  ACTIONS = 'ACTIONS',\r\n  NESTED_TABLE = 'NESTED_TABLE',\r\n  SLIDE_TOGGLE = 'SLIDE_TOGGLE',\r\n}\r\n\r\nexport enum TableColumnSortDirection {\r\n  ASCENDING = 'asc',\r\n  DESCENDING = 'desc',\r\n  NO_SORT = '',\r\n}\r\n\r\nexport interface TableColumnSchema {\r\n  id: number;\r\n  columnDef: string;\r\n  heading: string;\r\n  columnType: TableColumnType;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  cellData: any;\r\n  isDateColumn?: boolean;\r\n  isStickyColumn?: boolean;\r\n  isStickyEndColumn?: boolean;\r\n  isSortableColumn?: boolean;\r\n  isHTMLCellData?: boolean;\r\n  isContentUnderLink?: boolean;\r\n  hasColumnActions?: boolean;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  showIconFlag?: (row: any) => boolean;\r\n  iconFlagUrl?: string;\r\n}\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n  AfterViewInit,\r\n  ViewEncapsulation,\r\n  OnDestroy,\r\n  forwardRef,\r\n  ElementRef,\r\n  HostListener,\r\n  Renderer2,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\r\nimport {\r\n  MatPaginator,\r\n  MatPaginatorModule,\r\n  PageEvent,\r\n} from '@angular/material/paginator';\r\nimport {\r\n  MatSort,\r\n  MatSortModule,\r\n  Sort,\r\n  SortDirection,\r\n} from '@angular/material/sort';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { BreakpointObserverService } from '../../services/break-point-observer.service';\r\nimport { SafePipe } from '../../pipes/safe.pipe';\r\nimport { SafeType, IconButton, CheckboxOption } from '@ieeesa-npm/models';\r\nimport { IconButtonComponent } from '../icon-button/icon-button.component';\r\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\r\nimport {\r\n  TableColumnSchema,\r\n  TableColumnSortDirection,\r\n  TableColumnType,\r\n} from '../../models/table-schema.model';\r\nimport { PaginatorConfig } from '../../models/paginator-config.model';\r\nimport { SearchComponent } from '../search/search.component';\r\nimport { FilterComponent } from '../filter/filter.component';\r\nimport { TableActions } from '../../models/table-actions.model';\r\nimport { ChipOption, ChipsType } from '../../models/chip-option.model';\r\nimport * as constants from '../../assets/constants.json';\r\nimport { SearchType } from '../../models/search.model';\r\nimport { FiltersAndOptions } from '../../models/filters-options.model';\r\nimport { TextTruncatedDirective } from '../../directives/text-truncated/text-truncated.directive';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MenuComponent } from '../menu/menu.component';\r\nimport { Menu } from '../../models/menu.model';\r\nimport {\r\n  animate,\r\n  state,\r\n  style,\r\n  transition,\r\n  trigger,\r\n} from '@angular/animations';\r\nimport { LegendComponent } from '../legend/legend.component';\r\nimport { Legend } from '../../models/legend.model';\r\nimport { TableColumnMenuInfo } from '../../models/table-column-menu-info.model';\r\nimport { SlideToggleComponent } from '../slide-toggle/slide-toggle.component';\r\nimport { SlideToggleOption } from '../../models/slide-toggle-options.model';\r\n\r\n/**\r\n * Provides a Material Design styled data-table that can be used to display rows of data with sortBy, filterBy, add/edit/delete table row data, pagination, search table data.\r\n * @export\r\n * @class DataTableComponent\r\n * @implements {OnInit}\r\n * @implements {AfterViewInit}\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-data-table',\r\n  standalone: true,\r\n  imports: [\r\n    forwardRef(() => SafePipe),\r\n    CommonModule,\r\n    MatIconModule,\r\n    MatSortModule,\r\n    SlideToggleComponent,\r\n    MatSlideToggleModule,\r\n    MatTableModule,\r\n    MatPaginatorModule,\r\n    MatCheckboxModule,\r\n    MatButtonModule,\r\n    CheckboxComponent,\r\n    IconButtonComponent,\r\n    SearchComponent,\r\n    FilterComponent,\r\n    TextTruncatedDirective,\r\n    MenuComponent,\r\n    MatTooltipModule,\r\n    MenuComponent,\r\n    MatTooltipModule,\r\n    MenuComponent,\r\n    LegendComponent,\r\n  ],\r\n  templateUrl: './data-table.component.html',\r\n  styleUrls: ['./data-table.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  animations: [\r\n    trigger('detailExpand', [\r\n      state(\r\n        'collapsed',\r\n        style({ height: '0px', minHeight: '0', display: 'none' })\r\n      ),\r\n      state('expanded', style({ height: '*' })),\r\n      transition(\r\n        'expanded <=> collapsed',\r\n        animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')\r\n      ),\r\n    ]),\r\n  ],\r\n})\r\nexport class DataTableComponent implements OnInit, AfterViewInit, OnDestroy {\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  private tableData!: any[];\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  private nestedTableData!: any[];\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  expandedElement: any;\r\n  @Input()\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  set tableDataInfo(value: any[]) {\r\n    this.tableData = value;\r\n    this.tableDataChanges();\r\n  }\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  get tableDataInfo(): any[] {\r\n    return this.tableData;\r\n  }\r\n\r\n  @Input()\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  set nestedTableDataInfo(value: any[]) {\r\n    this.nestedTableData = value;\r\n    this.tableDataChanges();\r\n  }\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  get nestedTableDataInfo(): any[] {\r\n    return this.nestedTableData;\r\n  }\r\n  private columnSchema!: TableColumnSchema[];\r\n  @Input()\r\n  set columnSchemaInfo(value: TableColumnSchema[]) {\r\n    this.columnSchema = value;\r\n    if (this.columnSchema)\r\n      this.displayedColumns = this.columnSchema?.map((c) => c?.columnDef);\r\n  }\r\n  get columnSchemaInfo(): TableColumnSchema[] {\r\n    return this.columnSchema;\r\n  }\r\n  private nestedTableColumnSchema!: TableColumnSchema[];\r\n  @Input()\r\n  set nestedTableColumnSchemaInfo(value: TableColumnSchema[]) {\r\n    this.nestedTableColumnSchema = value;\r\n    this.nestedTableDisplayedColumns = this.nestedTableColumnSchema?.map(\r\n      (c) => c?.columnDef\r\n    );\r\n    this.nestedTableDataSource = new MatTableDataSource(this.nestedTableData);\r\n  }\r\n  get nestedTableColumnSchemaInfo(): TableColumnSchema[] {\r\n    return this.nestedTableColumnSchema;\r\n  }\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  constants: any = constants;\r\n  @Input() tableActions!: TableActions;\r\n  @Input() hasNestedTable = false;\r\n  @Input() tableColumnActions!: Menu[];\r\n  @Input() tableColumnActionMenuSize = '';\r\n  @Input() tableRowActions!: Menu[];\r\n  @Input() nestedTableRowActions!: Menu[];\r\n  @Input() caption!: string;\r\n  @Input() viewAll!: string;\r\n  private paginatorConfiguration!: PaginatorConfig;\r\n  @Input()\r\n  set paginatorConfig(value: PaginatorConfig) {\r\n    this.paginatorConfiguration = value;\r\n  }\r\n  get paginatorConfig(): PaginatorConfig {\r\n    return this.paginatorConfiguration;\r\n  }\r\n  private nestedPaginatorConfiguration!: PaginatorConfig;\r\n  @Input()\r\n  set nestedPaginatorConfig(value: PaginatorConfig) {\r\n    this.nestedPaginatorConfiguration = value;\r\n    this.showNestedTablePaginationInfo =\r\n      '1 - ' +\r\n      +`${this.nestedPaginatorConfig.recordsPerPage}` +\r\n      ' of ' +\r\n      +`${this.nestedPaginatorConfig.totalRecords}`;\r\n  }\r\n  get nestedPaginatorConfig(): PaginatorConfig {\r\n    return this.nestedPaginatorConfiguration;\r\n  }\r\n  private legendsInfo!: Legend[];\r\n  @Input()\r\n  set legends(value: Legend[]) {\r\n    this.legendsInfo = value;\r\n  }\r\n  get legends(): Legend[] {\r\n    return this.legendsInfo;\r\n  }\r\n  private currentPageIndex = 0;\r\n  @Input()\r\n  set pageIndex(value: number) {\r\n    this.currentPageIndex = value;\r\n    if (this.paginator) {\r\n      this.paginator.pageIndex = value;\r\n    }\r\n  }\r\n  get pageIndex(): number {\r\n    return this.currentPageIndex;\r\n  }\r\n  private currentPageSize = 0;\r\n  @Input()\r\n  set pageSize(value: number) {\r\n    this.currentPageSize = value;\r\n    if (this.paginator) {\r\n      this.paginator.pageSize = value;\r\n    }\r\n  }\r\n  get pageSize(): number {\r\n    return this.currentPageSize;\r\n  }\r\n  @Input() searchPlaceHolderText!: string;\r\n  @Input() rowEditButton!: IconButton;\r\n  @Input() rowDeleteButton!: IconButton;\r\n  @Input() tableEditButton!: IconButton;\r\n  @Input() tableDeleteButton!: IconButton;\r\n  @Input() rowExpandButton!: IconButton;\r\n  @Input() rowCollapseButton!: IconButton;\r\n  @Input() isNestedTableHeaderNeeded = false;\r\n  @Input() addButton!: IconButton;\r\n  @Input() defaultColumnSortDirection: SortDirection =\r\n    TableColumnSortDirection.ASCENDING;\r\n  @Input() defaultSortedColumn!: string;\r\n  @Input() isClearSortNeeded = true;\r\n  @Input() filters!: ChipOption[];\r\n  @Input() selectedFilterOptions!: CheckboxOption[];\r\n  @Input() appliedFilterOptions!: ChipOption[];\r\n  @Input() searchType: SearchType = SearchType.ON_CLICK;\r\n  @Input() className!: string;\r\n  @Input() searchSupportMessage!: string;\r\n  @Input() inbuiltSortingNeeded = false;\r\n  @Input() isCellTextOverflowEllipsis = false;\r\n  @Input() isTableHeaderNeeded = true;\r\n  @Input() tableColumnsHeaderText = '';\r\n  @Input() verticalColumnHeaderNumber = 0;\r\n  @Input() scrollbarSupportMessage = '';\r\n  @Input() isScrollSupportMessageNeeded = false;\r\n  @Input() isStickyHeaderNeeded = false;\r\n  @Input() customStickyHeaderNeeded = false;\r\n  @Input() headerElementClassName = '';\r\n  @Input() minCharToSearch = this.constants?.search?.minCharToSearch;\r\n  @Output() rowSelected = new EventEmitter();\r\n  @Output() selectedRowToEdit = new EventEmitter();\r\n  @Output() selectedRowToDelete = new EventEmitter();\r\n  @Output() selectedRowsToDelete = new EventEmitter<TableColumnSchema[]>();\r\n  @Output() rowLink = new EventEmitter();\r\n  @Output() addRow = new EventEmitter();\r\n  @Output() columnDataOnRowLinkClick = new EventEmitter();\r\n  @Output() menuActionClick = new EventEmitter();\r\n  @Output() selectActionMenu = new EventEmitter();\r\n  @Output() paginationChange = new EventEmitter<PageEvent>();\r\n  @Output() selectedFilter = new EventEmitter<ChipOption>();\r\n  @Output() removeFilteredOption = new EventEmitter();\r\n  @Output() filteredOptions = new EventEmitter<FiltersAndOptions[]>();\r\n  @Output() searchedValue = new EventEmitter<string>();\r\n  @Output() sortChange = new EventEmitter<Sort>();\r\n  @Output() selectedRowsInfo = new EventEmitter<TableColumnSchema[]>();\r\n  @Output() rowExpansionClick = new EventEmitter();\r\n  @Output() tableColumnMenuActionClick =\r\n    new EventEmitter<TableColumnMenuInfo>();\r\n  @Output() tableColumnMenuToggleButton = new EventEmitter<HTMLElement>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  @Output() rowSlideToggle = new EventEmitter<{\r\n    slideToggle: SlideToggleOption;\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    rowData: any;\r\n  }>();\r\n  @ViewChild(MatSort) sort!: MatSort;\r\n  @ViewChild('paginator') paginator!: MatPaginator;\r\n  headerCellElement!: HTMLElement;\r\n  headerHeight!: DOMRect;\r\n  @ViewChild('tableContent') tableContent!: ElementRef<HTMLElement>;\r\n  @HostListener('document:scroll') setStickyTableHeader() {\r\n    if (this.elRef.nativeElement && this.customStickyHeaderNeeded) {\r\n      const dataTableContent = this.elRef.nativeElement\r\n        .querySelector('.ieeesa-data-table__content')\r\n        .getBoundingClientRect();\r\n      if (this.headerElementClassName)\r\n        this.headerHeight = document\r\n          ?.querySelector(this.headerElementClassName)\r\n          ?.getBoundingClientRect() as DOMRect;\r\n      if (dataTableContent) {\r\n        this.elRef.nativeElement\r\n          .querySelectorAll(' .mat-mdc-header-cell')\r\n          // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n          .forEach((column: any) => {\r\n            if (\r\n              dataTableContent.top <\r\n                (this.headerHeight ? this.headerHeight.bottom : 0) &&\r\n              dataTableContent.bottom > 0\r\n            ) {\r\n              this.renderer.setStyle(\r\n                column,\r\n                'top',\r\n                dataTableContent.top * -1 +\r\n                  (this.headerHeight ? this.headerHeight.height : 0) -\r\n                  1 +\r\n                  'px'\r\n              );\r\n              if (column.classList.contains('mat-mdc-table-sticky')) {\r\n                this.renderer.setStyle(column, 'zIndex', 2);\r\n              } else {\r\n                this.renderer.setStyle(column, 'position', 'sticky');\r\n                this.renderer.setStyle(column, 'zIndex', 1);\r\n              }\r\n            } else {\r\n              this.renderer.setStyle(column, 'top', 0 + 'px');\r\n            }\r\n          });\r\n      }\r\n    }\r\n  }\r\n  displayedColumns!: string[];\r\n  nestedTableDisplayedColumns!: string[];\r\n  isMobileView = false;\r\n  isScrollingEnabled = false;\r\n  resizeObserverForTableContent!: ResizeObserver;\r\n  resizeObserverForTableCell!: ResizeObserver;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  dataSource!: MatTableDataSource<any>;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  nestedTableDataSource!: MatTableDataSource<any>;\r\n  selectedRows = new SelectionModel<TableColumnSchema>(true, []);\r\n  pageLimit!: number;\r\n  pageOffset!: number;\r\n  columnType = TableColumnType;\r\n  isSearchActive = false;\r\n  clearAll = this.constants?.dataTable?.label?.clearAll;\r\n  noRecordFound = this.constants?.dataTable?.message?.noRecordFound;\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  showNestedTablePaginationInfo!: string;\r\n  private _searchResultMessage!: string;\r\n  @Input()\r\n  set searchResultMessage(value: string) {\r\n    this._searchResultMessage = value;\r\n  }\r\n  get searchResultMessage(): string {\r\n    return this._searchResultMessage;\r\n  }\r\n  safeType: SafeType = SafeType.HTML;\r\n  @Input() rowMenuActionIcon!: IconButton;\r\n  @Input() canDisableCheckbox = false;\r\n  @Input() isEllipsisRequiredForLink = false;\r\n  // eslint-disable-next-line no-unused-vars, no-empty-function\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private breakpointObserverService: BreakpointObserverService,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private elRef: ElementRef,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private renderer: Renderer2\r\n  ) {\r\n    this.breakpointObserverService\r\n      .getBreakpoint()\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((result) => {\r\n        this.isMobileView = result.matches;\r\n      });\r\n  }\r\n\r\n  /**\r\n   * Initializes the data table component and sets the table action buttons.\r\n   * @memberof DataTableComponent\r\n   */\r\n  ngOnInit(): void {\r\n    this.displayedColumns = this.columnSchema?.map((c) => c?.columnDef);\r\n    const tableActionButtons: IconButton[] = this.constants?.dataTable?.buttons;\r\n    this.rowEditButton = this.rowEditButton ?? tableActionButtons[3];\r\n    this.rowDeleteButton = this.rowDeleteButton ?? tableActionButtons[4];\r\n    this.addButton = this.addButton ?? tableActionButtons[2];\r\n    this.tableEditButton = this.tableEditButton ?? tableActionButtons[0];\r\n    this.tableEditButton.disabled = true;\r\n    this.tableDeleteButton = this.tableDeleteButton ?? tableActionButtons[1];\r\n    this.rowExpandButton = this.rowExpandButton ?? tableActionButtons[5];\r\n    this.rowCollapseButton =\r\n      this.rowCollapseButton ?? this.rowCollapseButton ?? tableActionButtons[6];\r\n    this.tableDeleteButton.disabled = true;\r\n    this.selectedRows.changed\r\n      .pipe(takeUntil(this.destroy$))\r\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n      .subscribe((result: any) => {\r\n        this.tableEditButton.disabled = false;\r\n        this.tableDeleteButton.disabled = false;\r\n        if (result?.source?.selected?.length === 0) {\r\n          this.tableEditButton.disabled = true;\r\n          this.tableDeleteButton.disabled = true;\r\n        } else if (\r\n          result?.source?.selected?.length === 1 &&\r\n          !result?.source?.selected?.[0]?.canDelete\r\n        ) {\r\n          this.tableDeleteButton.disabled = true;\r\n        } else if (result?.source?.selected?.length > 1) {\r\n          this.tableDeleteButton.disabled = false;\r\n          this.tableEditButton.disabled = true;\r\n        }\r\n      });\r\n    this.dataSource = new MatTableDataSource(this.tableData);\r\n    if (this.scrollbarSupportMessage) {\r\n      this.resizeObserverForTableContent = new ResizeObserver(\r\n        (element: ResizeObserverEntry[]) => {\r\n          this.isScrollingEnabled =\r\n            element[0]?.target?.scrollWidth > element[0]?.target?.clientWidth;\r\n        }\r\n      );\r\n    }\r\n    if (this.tableColumnsHeaderText && this.verticalColumnHeaderNumber)\r\n      this.resizeObserverForTableCell = new ResizeObserver(() => {\r\n        this.setMarginLeftForHeaderText();\r\n      });\r\n    this.tableDataChanges();\r\n  }\r\n\r\n  /**\r\n   * Initializes the sort feature of dataSource and set margin left for tableColumnsHeaderText if it isn't empty.\r\n   * @memberof DataTableComponent\r\n   */\r\n  ngAfterViewInit(): void {\r\n    if (this.inbuiltSortingNeeded) {\r\n      this.dataSource.sort = this.sort;\r\n      this.sort.disableClear = true;\r\n    }\r\n    this.headerCellElement = this.tableContent.nativeElement.querySelector(\r\n      '.mat-mdc-header-cell'\r\n    ) as HTMLElement;\r\n    this.resizeObserverForTableCell?.observe(this.headerCellElement);\r\n    this.resizeObserverForTableContent?.observe(\r\n      this.tableContent.nativeElement\r\n    );\r\n  }\r\n  /**\r\n   * Set margin left for table column header text based on width of columns.\r\n   * @memberof DataTableComponent\r\n   */\r\n  setMarginLeftForHeaderText(): void {\r\n    let columnsWidth = 0;\r\n    for (let column = 0; column < this.verticalColumnHeaderNumber; column++) {\r\n      const verticalColumnHeaderClassName =\r\n        '.mat-column-' + this.columnSchema[column].columnDef;\r\n      const columnElement = this.elRef?.nativeElement?.querySelector(\r\n        verticalColumnHeaderClassName\r\n      ) as HTMLElement;\r\n      if (columnElement) columnsWidth += columnElement?.offsetWidth;\r\n    }\r\n    const columnsHeaderElement = this.elRef?.nativeElement?.querySelector(\r\n      '.ieeesa-data-table__columns-header-text'\r\n    ) as HTMLElement;\r\n    if (columnsHeaderElement)\r\n      columnsHeaderElement.style.marginLeft = columnsWidth + 'px';\r\n  }\r\n  /**\r\n   * Sets the dataSource whenever the table data changes.\r\n   * @memberof DataTableComponent\r\n   */\r\n  tableDataChanges(): void {\r\n    if (this.dataSource) {\r\n      this.dataSource.data = this.tableData;\r\n      if (this.inbuiltSortingNeeded) this.dataSource.sort = this.sort;\r\n      this.selectedRows.clear();\r\n    }\r\n    if (this.nestedTableDataSource) {\r\n      this.nestedTableDataSource.data = this.nestedTableData;\r\n    }\r\n  }\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  /**\r\n   * SortTableData method emits the clicked table column name and sorting direction\r\n   * @param {Sort} sort\r\n   * @memberof DataTableComponent\r\n   */\r\n  sortTableData(sort: Sort): void {\r\n    this.sortChange.emit(sort);\r\n  }\r\n  /**\r\n   * Handle edit actions method emits the clicked row data\r\n   * @param {*} row\r\n   * @memberof DataTableComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  onRowActionClick(row: any) {\r\n    this.selectActionMenu.emit(row);\r\n  }\r\n  /**\r\n   * Emits the slide toggle option along with the selected row info.\r\n   * @param {SlideToggleOption} slideToggleOption\r\n   * @param {*} row\r\n   * @memberof DataTableComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  rowSlideToggleChange(slideToggleOption: SlideToggleOption, row: any) {\r\n    this.rowSlideToggle.emit({ slideToggle: slideToggleOption, rowData: row });\r\n  }\r\n  /**\r\n   * Menu item action method emits the clicked menu options\r\n   * @param {*} row\r\n   * @memberof DataTableComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  menuItemAction(row: any): void {\r\n    this.menuActionClick.emit(row);\r\n  }\r\n  /**\r\n   * OnSelectClick method emits the rowSelected event with selected row data.\r\n   * @param {*} row\r\n   * @param {boolean} checked\r\n   * @memberof DataTableComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  onSelectClick(row: any): void {\r\n    this.selectedRows.toggle(row);\r\n    row.checked = !row.checked;\r\n    this.rowSelected.emit(row);\r\n    this.selectedRowsInfo.emit(this.selectedRows.selected);\r\n  }\r\n  /**\r\n   * Emits tableColumnActionInfo event with tableColumnInfo and menuActionInfo.\r\n   * @param {TableColumnSchema} column\r\n   * @param {Menu} menuAction\r\n   * @memberof DataTableComponent\r\n   */\r\n  tableColumnActionClick(column: TableColumnSchema, menuAction: Menu): void {\r\n    this.tableColumnMenuActionClick.emit({\r\n      tableColumnInfo: column,\r\n      menuActionInfo: menuAction,\r\n    });\r\n  }\r\n  /**\r\n   * Emits tableColumnActionElement event with the selected HTML Element.\r\n   * @param {HTMLElement} element\r\n   * @memberof DataTableComponent\r\n   */\r\n  tableColumnActionElement(element: HTMLElement): void {\r\n    this.tableColumnMenuToggleButton.emit(element);\r\n  }\r\n  /**\r\n   * OnEditClick method emits the selectedRowToEdit event with the selected row data.\r\n   * @param {*} row\r\n   * @memberof DataTableComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  onEditClick(row: any): void {\r\n    this.selectedRowToEdit.emit(row);\r\n  }\r\n\r\n  /**\r\n   * OnDeleteClick method emits the selectedRowToDelete event with the selected row data.\r\n   * @param {*} row\r\n   * @memberof DataTableComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  onDeleteClick(row: any): void {\r\n    this.selectedRowToDelete.emit(row);\r\n  }\r\n\r\n  /**\r\n   *OnLinkClick method emits the event with row and column.\r\n   * @param {*} row\r\n   * @param {TableColumnSchema} [column]\r\n   * @memberof DataTableComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  onLinkClick(row: any, column?: TableColumnSchema): void {\r\n    this.rowLink.emit(row);\r\n    this.columnDataOnRowLinkClick.emit({ row, column });\r\n  }\r\n\r\n  /**\r\n   * OnTableEditClick method emits event with selected rows data when edit button clicked.\r\n   * @memberof DataTableComponent\r\n   */\r\n  onTableEditClick(): void {\r\n    this.selectedRowToEdit.emit(this.selectedRows.selected);\r\n  }\r\n\r\n  /**\r\n   * OnDeleteTableClick method emits event with selected row data when delete button clicked.\r\n   * @memberof DataTableComponent\r\n   */\r\n  onDeleteTableClick(): void {\r\n    this.selectedRowsToDelete.emit(this.selectedRows.selected);\r\n  }\r\n\r\n  /**\r\n   * OnAddClick method emits the add event when add button clicked.\r\n   * @memberof DataTableComponent\r\n   */\r\n  onAddClick(): void {\r\n    this.addRow.emit();\r\n  }\r\n\r\n  /**\r\n   * OnTableSearchClick method toggles the isSearchActive state when the search icon is clicked for the mobile view.\r\n   * @memberof DataTableComponent\r\n   */\r\n  onTableSearchClick(): void {\r\n    this.isSearchActive = !this.isSearchActive;\r\n  }\r\n\r\n  /**\r\n   * SelectedFilterInfo method emits the selectedFilter event with selected filter information.\r\n   * @param {ChipOption} option\r\n   * @memberof DataTableComponent\r\n   */\r\n  selectedFilterTypeInfo(option: ChipOption): void {\r\n    this.selectedFilter.emit(option);\r\n  }\r\n\r\n  /**\r\n   * Emits the rowExpansionClick event with the selected row data when the row is expanded.\r\n   * @param {*} row\r\n   * @memberof DataTableComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  onTableRowExpansionClick(row: any): void {\r\n    this.nestedTableDataSource.data = [];\r\n    if (this.expandedElement === row) this.rowExpansionClick.emit(row);\r\n  }\r\n\r\n  /**\r\n   * OnSelectedFilterOptions method emits the filteredOptions event with the selected options and adds \"Clear all\" option to clear the all selections.\r\n   * @param {CheckboxOption[]} options\r\n   * @memberof DataTableComponent\r\n   */\r\n  onSelectedFilterOptions(selectedOptions: FiltersAndOptions[]): void {\r\n    this.filteredOptions.emit(selectedOptions);\r\n    this.appliedFilterOptions = [];\r\n    selectedOptions?.forEach((options) => {\r\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars\r\n      for (const [key, value] of Object.entries(options)) {\r\n        value?.forEach((option) => {\r\n          if (option.checked) {\r\n            this.appliedFilterOptions.push({\r\n              id: option.id,\r\n              name: option.name as string,\r\n              checked: option.checked,\r\n              disabled: option.disabled,\r\n              chipType: ChipsType.TOGGLE,\r\n            });\r\n          }\r\n        });\r\n      }\r\n    });\r\n    this.appliedFilterOptions.push({\r\n      id: this.clearAll,\r\n      name: this.clearAll,\r\n      disabled: false,\r\n      checked: false,\r\n      chipType: ChipsType.STATIC,\r\n    });\r\n  }\r\n  /**\r\n   * OnRemovalOfFilteredOption method emits the removeFilteredOption event with removed option.\r\n   * @param {ChipOption} option\r\n   * @memberof DataTableComponent\r\n   */\r\n  onRemovalOfFilteredOption(options: FiltersAndOptions[]): void {\r\n    this.removeFilteredOption.emit(options);\r\n  }\r\n\r\n  /**\r\n   * SearchValue method emits the searched value and resets page index to zero.\r\n   * @param {string} value\r\n   * @memberof DataTableComponent\r\n   */\r\n  searchValue(value: string): void {\r\n    this.searchedValue.emit(value);\r\n    if (\r\n      this.paginator &&\r\n      (value?.length === 0 || value.trim()?.length >= this.minCharToSearch)\r\n    ) {\r\n      this.paginator.pageIndex = 0;\r\n    }\r\n  }\r\n  /**\r\n   * Handles the pagination for every page.\r\n   * @param {PageEvent} event\r\n   * @memberof DataTableComponent\r\n   */\r\n  handlePagination(event: PageEvent): void {\r\n    this.paginationChange.emit(event);\r\n  }\r\n  /**\r\n   * IsAllRowSelected method returns the boolean value by checking selectedRows and totalRows length.\r\n   * @return {*}  {boolean}\r\n   * @memberof DataTableComponent\r\n   */\r\n  isAllRowsSelected(): boolean {\r\n    if (this.canDisableCheckbox)\r\n      return (\r\n        this.selectedRows.selected.length ===\r\n        this.dataSource.data.filter((item) => !item?.disable)?.length\r\n      );\r\n    return this.selectedRows.selected.length === this.dataSource.data.length;\r\n  }\r\n\r\n  /**\r\n   * ToggleAllRowsSelection method clears selectedRows when all rows are selected else selects the all rows.\r\n   * @return {*}  {void}\r\n   * @memberof DataTableComponent\r\n   */\r\n  toggleAllRowsSelection(): void {\r\n    if (this.isAllRowsSelected()) this.selectedRows.clear();\r\n    else if (this.canDisableCheckbox)\r\n      this.selectedRows.select(\r\n        ...this.dataSource.data.filter((item) => !item?.disable)\r\n      );\r\n    else this.selectedRows.select(...this.dataSource.data);\r\n\r\n    this.selectedRowsInfo.emit(this.selectedRows.selected);\r\n  }\r\n\r\n  /**\r\n   * Allows Angular to detect the specific table row that needs to change or be added by tracking row unique Id.\r\n   * @param {number} index\r\n   * @param {TableColumnSchema} column\r\n   * @return {*}  {number}\r\n   * @memberof DataTableComponent\r\n   */\r\n  trackById(index: number, column: TableColumnSchema): number {\r\n    return column.id;\r\n  }\r\n  /**\r\n   * Sets the table row left border as per the legend color\r\n   * @param {string} color\r\n   * @return {*}\r\n   * @memberof DataTableComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  getRowBorderLeftColor(color: string): any {\r\n    return {\r\n      borderLeft: '5px solid ' + color,\r\n    };\r\n  }\r\n  /**\r\n   * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n   * @memberof DataTableComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.resizeObserverForTableCell?.unobserve(this.headerCellElement);\r\n    this.resizeObserverForTableContent?.unobserve(\r\n      this.tableContent.nativeElement\r\n    );\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n}\r\n","<div class=\"ieeesa-data-table d-flex flex-column container-fluid\">\r\n  <div\r\n    class=\"d-flex\"\r\n    [ngClass]=\"\r\n      isMobileView\r\n        ? 'flex-column ms-4'\r\n        : 'justify-content-center position-relative'\r\n    \"\r\n  >\r\n    <caption\r\n      class=\"ieeesa-data-table--caption\"\r\n      *ngIf=\"caption\"\r\n      [ngClass]=\"isMobileView ? 'ieeesa-title-lg-24' : 'ieeesa-title-md-18'\"\r\n    >\r\n      {{\r\n        caption\r\n      }}\r\n    </caption>\r\n    <p\r\n      *ngIf=\"isScrollingEnabled && isScrollSupportMessageNeeded\"\r\n      class=\"m-0 mb-2\"\r\n      [ngClass]=\"{ 'position-absolute bottom-0 end-0': !isMobileView }\"\r\n    >\r\n      {{ scrollbarSupportMessage }}\r\n    </p>\r\n  </div>\r\n  <div\r\n    *ngIf=\"tableActions\"\r\n    class=\"ieeesa-data-table__actions d-flex row justify-content-between align-items-lg-baseline p-sm-0\"\r\n    [ngClass]=\"isMobileView ? 'ieeesa-data-table__mobile-view-actions' : ''\"\r\n  >\r\n    <ng-container\r\n      *ngIf=\"!isMobileView\"\r\n      [ngTemplateOutlet]=\"filterTemplateRef\"\r\n      [ngTemplateOutletContext]=\"{ data: 'col-md-7 col-lg-6' }\"\r\n    ></ng-container>\r\n    <div\r\n      class=\"d-flex align-items-center gap-lg-4 gap-md-3 gap-sm-3 gap-3 col-md-5 col-lg-6 justify-content-end ps-0\"\r\n      [ngClass]=\"!tableActions?.isFilterNeeded ? 'col-md-12 col-lg-12' : ''\"\r\n    >\r\n      <ng-container *ngIf=\"!isMobileView\">\r\n        <ng-container *ngTemplateOutlet=\"ieeesaSearch\"> </ng-container>\r\n      </ng-container>\r\n      <ieeesa-icon-button\r\n        *ngIf=\"tableActions?.isAddNeeded\"\r\n        [iconButton]=\"addButton\"\r\n        (iconButtonClick)=\"onAddClick()\"\r\n        [ngClass]=\"\r\n          addButton?.disabled ? 'ieeesa-data-table__actions--disabled' : ''\r\n        \"\r\n      ></ieeesa-icon-button>\r\n      <ieeesa-icon-button\r\n        *ngIf=\"tableActions?.isEditNeeded\"\r\n        [iconButton]=\"tableEditButton\"\r\n        (iconButtonClick)=\"onTableEditClick()\"\r\n        [ngClass]=\"\r\n          selectedRows.selected.length !== 1\r\n            ? 'ieeesa-data-table__actions--disabled'\r\n            : ''\r\n        \"\r\n      ></ieeesa-icon-button>\r\n      <ieeesa-icon-button\r\n        *ngIf=\"tableActions?.isDeleteNeeded\"\r\n        [iconButton]=\"tableDeleteButton\"\r\n        (iconButtonClick)=\"onDeleteTableClick()\"\r\n        class=\"d-flex justify-content-between align-items-center\"\r\n        [ngClass]=\"\r\n          selectedRows.selected.length === 0 || tableDeleteButton.disabled\r\n            ? 'ieeesa-data-table__actions--disabled'\r\n            : ''\r\n        \"\r\n      ></ieeesa-icon-button>\r\n      <button\r\n        mat-button\r\n        *ngIf=\"tableActions?.isSearchNeeded\"\r\n        [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.search\"\r\n        class=\"d-flex d-sm-flex d-md-none d-lg-none d-xl-none ieeesa-data-table__actions--search-group-icon\"\r\n        type=\"button\"\r\n        (click)=\"onTableSearchClick()\"\r\n      >\r\n        <i class=\"fa-solid fa-magnifying-glass\"></i>\r\n      </button>\r\n    </div>\r\n  </div>\r\n  <ng-container\r\n    *ngIf=\"isMobileView\"\r\n    [ngTemplateOutlet]=\"filterTemplateRef\"\r\n    [ngTemplateOutletContext]=\"{ data: 'ieeesa-data-table__filter' }\"\r\n  >\r\n  </ng-container>\r\n  <ng-template #filterTemplateRef let-className=\"data\">\r\n    <ieeesa-filter\r\n      class=\"{{ className }} p-0\"\r\n      [filters]=\"filters\"\r\n      *ngIf=\"tableActions?.isFilterNeeded\"\r\n      [selectedFilterOptions]=\"selectedFilterOptions\"\r\n      [appliedFilterOptions]=\"appliedFilterOptions\"\r\n      (selectedFilter)=\"selectedFilterTypeInfo($event)\"\r\n      (removeFilteredOption)=\"onRemovalOfFilteredOption($event)\"\r\n      (filteredOptions)=\"onSelectedFilterOptions($event)\"\r\n    ></ieeesa-filter>\r\n  </ng-template>\r\n  <ng-container *ngIf=\"isMobileView && isSearchActive\">\r\n    <ng-container *ngTemplateOutlet=\"ieeesaSearch\"> </ng-container>\r\n  </ng-container>\r\n  <ng-template #ieeesaSearch>\r\n    <ieeesa-search\r\n      [placeholderLabel]=\"searchPlaceHolderText\"\r\n      [searchType]=\"searchType\"\r\n      (searchValue)=\"searchValue($event)\"\r\n      *ngIf=\"tableActions?.isSearchNeeded\"\r\n      class=\"ieeesa-data-table__search-wrapper mt-sm-2 md-sm-2 mt-2 md-2\"\r\n      [supportMessage]=\"searchSupportMessage\"\r\n    ></ieeesa-search>\r\n  </ng-template>\r\n  <p\r\n    class=\"ieeesa-data-table__search_result_label\"\r\n    *ngIf=\"searchResultMessage\"\r\n    [innerHTML]=\"searchResultMessage | safe : safeType\"\r\n  ></p>\r\n  <p\r\n    class=\"ieeesa-data-table__columns-header-text mb-0 ieeesa-title-md-18 text-center\"\r\n    *ngIf=\"tableColumnsHeaderText\"\r\n    [innerHTML]=\"tableColumnsHeaderText | safe : safeType\"\r\n  ></p>\r\n  <div\r\n    class=\"ieeesa-data-table__content\"\r\n    [ngClass]=\"\r\n      tableDataInfo && tableDataInfo.length === 0\r\n        ? 'ieeesa-data-table__no-table-data'\r\n        : ''\r\n    \"\r\n    #tableContent\r\n  >\r\n    <table\r\n      mat-table\r\n      [ngClass]=\"className\"\r\n      [dataSource]=\"dataSource\"\r\n      matSort\r\n      [matSortDisableClear]=\"isClearSortNeeded\"\r\n      [matSortActive]=\"defaultSortedColumn\"\r\n      [matSortDirection]=\"defaultColumnSortDirection\"\r\n      (matSortChange)=\"sortTableData($event)\"\r\n      [trackBy]=\"trackById\"\r\n      multiTemplateDataRows\r\n    >\r\n      <ng-container\r\n        *ngFor=\"\r\n          let column of columnSchemaInfo;\r\n          trackBy: trackById;\r\n          let id = index\r\n        \"\r\n        matColumnDef=\"{{ column?.columnDef }}\"\r\n        [sticky]=\"column?.isStickyColumn\"\r\n        [stickyEnd]=\"column?.isStickyEndColumn\"\r\n      >\r\n        <th\r\n          mat-header-cell\r\n          mat-sort-header\r\n          [disabled]=\"!column?.isSortableColumn\"\r\n          [ngSwitch]=\"column?.columnDef\"\r\n          class=\"ieeesa-data-table-header ieeesa-body-sm-bold-14\"\r\n          [ngClass]=\"\r\n            column?.columnDef === columnType?.SELECT\r\n              ? 'ieeesa-data-table__column-select'\r\n              : ''\r\n          \"\r\n          *matHeaderCellDef\r\n          [attr.aria-label]=\"column?.heading\"\r\n        >\r\n          <ng-container *ngSwitchCase=\"columnType?.SELECT\">\r\n            <mat-checkbox\r\n              (change)=\"$event ? toggleAllRowsSelection() : null\"\r\n              [checked]=\"selectedRows?.hasValue() && isAllRowsSelected()\"\r\n              [indeterminate]=\"selectedRows?.hasValue() && !isAllRowsSelected()\"\r\n              [aria-label]=\"constants?.dataTable?.ariaLabel?.selectAll\"\r\n            >\r\n            </mat-checkbox>\r\n          </ng-container>\r\n          <ng-container *ngSwitchDefault>\r\n            <span [ngClass]=\"{ 'me-2': column.hasColumnActions }\">{{\r\n              column.heading\r\n            }}</span>\r\n            <ng-container *ngIf=\"column.hasColumnActions\">\r\n              <ieeesa-menu\r\n                [menuItems]=\"tableColumnActions\"\r\n                [defaultIconSize]=\"tableColumnActionMenuSize\"\r\n                (menuItemClick)=\"tableColumnActionClick(column, $event)\"\r\n                (menuToggleButtonElement)=\"tableColumnActionElement($event)\"\r\n                class=\"ieeesa-data-table__column-menu\"\r\n              ></ieeesa-menu>\r\n            </ng-container>\r\n          </ng-container>\r\n        </th>\r\n        <td\r\n          mat-cell\r\n          class=\"ieeesa-data-table__cell-content ieeesa-title-sm-16\"\r\n          *matCellDef=\"let row\"\r\n          [ngClass]=\"\r\n            column?.columnDef === columnType?.SELECT\r\n              ? 'ieeesa-data-table__column-select'\r\n              : ''\r\n          \"\r\n        >\r\n          <ng-container\r\n            *ngTemplateOutlet=\"\r\n              tableData;\r\n              context: {\r\n                column: column,\r\n                row: row,\r\n                tableRowActions: tableRowActions\r\n              }\r\n            \"\r\n          ></ng-container>\r\n        </td>\r\n      </ng-container>\r\n      <ng-container matColumnDef=\"expandedDetail\">\r\n        <td\r\n          mat-cell\r\n          *matCellDef=\"let row\"\r\n          [attr.colspan]=\"displayedColumns?.length\"\r\n        >\r\n          <div\r\n            class=\"ieeesa-expanded-row\"\r\n            [@detailExpand]=\"row === expandedElement ? 'expanded' : 'collapsed'\"\r\n          >\r\n            <div class=\"ieeesa-nested-data-table\">\r\n              <table\r\n                #nestedTable\r\n                mat-table\r\n                [trackBy]=\"trackById\"\r\n                [dataSource]=\"nestedTableDataSource\"\r\n              >\r\n                <ng-container\r\n                  *ngFor=\"\r\n                    let column of nestedTableColumnSchemaInfo;\r\n                    trackBy: trackById;\r\n                    let id = index\r\n                  \"\r\n                  matColumnDef=\"{{ column?.columnDef }}\"\r\n                  [sticky]=\"column?.isStickyColumn\"\r\n                  [stickyEnd]=\"column?.isStickyEndColumn\"\r\n                >\r\n                  <th\r\n                    mat-header-cell\r\n                    [ngSwitch]=\"column?.columnDef\"\r\n                    class=\"ieeesa-data-table-header ieeesa-body-sm-bold-14\"\r\n                    [ngClass]=\"\r\n                      column?.columnDef === columnType?.SELECT\r\n                        ? 'ieeesa-data-table__column-select'\r\n                        : ''\r\n                    \"\r\n                    *matHeaderCellDef\r\n                    [attr.aria-label]=\"column?.heading\"\r\n                  >\r\n                    <ng-container *ngSwitchDefault>\r\n                      <span>{{ column.heading }}</span>\r\n                    </ng-container>\r\n                  </th>\r\n                  <td\r\n                    mat-cell\r\n                    class=\"ieeesa-data-table__cell-content ieeesa-title-sm-16\"\r\n                    *matCellDef=\"let row\"\r\n                    [ngClass]=\"\r\n                      column?.columnDef === columnType?.SELECT\r\n                        ? 'ieeesa-data-table__column-select'\r\n                        : ''\r\n                    \"\r\n                  >\r\n                    <ng-container\r\n                      *ngTemplateOutlet=\"\r\n                        tableData;\r\n                        context: {\r\n                          column: column,\r\n                          row: row,\r\n                          tableRowActions: nestedTableRowActions\r\n                        }\r\n                      \"\r\n                    ></ng-container>\r\n                  </td>\r\n                </ng-container>\r\n                <ng-container *ngIf=\"isNestedTableHeaderNeeded\">\r\n                  <tr\r\n                    mat-header-row\r\n                    class=\"ieeesa-data-table__header-row\"\r\n                    *matHeaderRowDef=\"\r\n                      nestedTableDisplayedColumns;\r\n                      sticky: false\r\n                    \"\r\n                  ></tr>\r\n                </ng-container>\r\n                <tr\r\n                  mat-row\r\n                  class=\"ieeesa-nested-data-table__cell-row\"\r\n                  *matRowDef=\"let row; columns: nestedTableDisplayedColumns\"\r\n                  [ngStyle]=\"\r\n                    row?.legendColor\r\n                      ? getRowBorderLeftColor(row?.legendColor)\r\n                      : ''\r\n                  \"\r\n                ></tr>\r\n              </table>\r\n            </div>\r\n            <ng-container *ngIf=\"row === expandedElement\">\r\n              <div\r\n                class=\"d-flex justify-content-between align-items-center ieeesa-expanded-row__footer\"\r\n                *ngIf=\"\r\n                  nestedPaginatorConfig.totalRecords >\r\n                    nestedPaginatorConfig.recordsPerPage &&\r\n                  nestedPaginatorConfig.recordsPerPage > 0\r\n                \"\r\n              >\r\n                <button\r\n                  mat-button\r\n                  (click)=\"onLinkClick(row)\"\r\n                  class=\"ieeesa-btn-label-lg-bold-16 ieeesa-data-table__cell-content-link\"\r\n                  [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.link\"\r\n                >\r\n                  {{ viewAll ?? \"\" }}\r\n                </button>\r\n                <span class=\"nested-element-detail__footer--detail\">{{\r\n                  showNestedTablePaginationInfo\r\n                }}</span>\r\n              </div>\r\n            </ng-container>\r\n          </div>\r\n        </td>\r\n      </ng-container>\r\n      <ng-container *ngIf=\"isTableHeaderNeeded\">\r\n        <tr\r\n          mat-header-row\r\n          class=\"ieeesa-data-table__header-row\"\r\n          *matHeaderRowDef=\"displayedColumns; sticky: false\"\r\n        ></tr>\r\n      </ng-container>\r\n      <tr\r\n        mat-row\r\n        class=\"ieeesa-data-table__cell-row\"\r\n        [ngClass]=\"(i + 1) % 2 === 0 ? 'even' : 'odd'\"\r\n        [ngStyle]=\"\r\n          row?.legendColor ? getRowBorderLeftColor(row?.legendColor) : ''\r\n        \"\r\n        *matRowDef=\"let row; columns: displayedColumns; let i = dataIndex\"\r\n      ></tr>\r\n      <ng-container *ngIf=\"hasNestedTable\">\r\n        <tr\r\n          mat-row\r\n          *matRowDef=\"let details; columns: ['expandedDetail']\"\r\n          class=\"ieeesa-row-expanded-table-detail\"\r\n        ></tr>\r\n      </ng-container>\r\n    </table>\r\n  </div>\r\n</div>\r\n<p\r\n  class=\"ieeesa-data-table__message ieeesa-title-lg-bold-24 text-center p-5\"\r\n  *ngIf=\"tableDataInfo && tableDataInfo.length === 0\"\r\n>\r\n  {{ noRecordFound }}\r\n</p>\r\n<div class=\"row ieeesa-data-table__pagination-container\">\r\n  <ieeesa-legend\r\n    class=\"col-sm-12 col-md-5 d-flex align-items-end px-4\"\r\n    *ngIf=\"legends?.length\"\r\n    [ngClass]=\"!tableActions?.isPaginationNeeded ? 'col-md-12' : ''\"\r\n    [legends]=\"legends\"\r\n    [isSorting]=\"true\"\r\n  ></ieeesa-legend>\r\n  <div\r\n    *ngIf=\"tableActions?.isPaginationNeeded\"\r\n    class=\"ieeesa-data-table__pagination d-flex flex-row-reverse col-sm-12 col-md-7\"\r\n    [ngClass]=\"!legends?.length ? 'col-md-12' : ''\"\r\n    [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.pagination\"\r\n  >\r\n    <mat-paginator\r\n      #paginator\r\n      [pageSize]=\"paginatorConfig?.recordsPerPage\"\r\n      [pageSizeOptions]=\"paginatorConfig.pageSizeOptions\"\r\n      (page)=\"handlePagination($event)\"\r\n      [length]=\"paginatorConfig?.totalRecords\"\r\n    ></mat-paginator>\r\n  </div>\r\n</div>\r\n<ng-template\r\n  #tableData\r\n  let-column=\"column\"\r\n  let-row=\"row\"\r\n  let-tableRowActions=\"tableRowActions\"\r\n>\r\n  <ng-container [ngSwitch]=\"column?.columnType\">\r\n    <ng-container *ngSwitchDefault>\r\n      <ng-container\r\n        *ngIf=\"isCellTextOverflowEllipsis; then ellipsisCell; else textWrapCell\"\r\n      >\r\n      </ng-container>\r\n      <ng-template #textWrapCell>\r\n        <p\r\n          class=\"m-0 ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\r\n          *ngIf=\"column?.isHTMLCellData\"\r\n          [innerHTML]=\"column?.cellData(row) | safe : safeType\"\r\n        ></p>\r\n        <ng-container *ngIf=\"!column?.isHTMLCellData\">\r\n          <p\r\n            class=\"m-0 ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\r\n          >\r\n            {{ column?.cellData(row) }}\r\n          </p></ng-container\r\n        >\r\n      </ng-template>\r\n      <ng-template #ellipsisCell>\r\n        <p\r\n          ieeesaTextTruncated\r\n          [matTooltip]=\"column?.cellData(row)\"\r\n          class=\"ieeesa-data-table__cell-content--ellipsis ieeesa-body-color-sm-14 ieeesa-data-table__cell-content--text\"\r\n        >\r\n          {{ column?.cellData(row) }}\r\n        </p>\r\n      </ng-template>\r\n    </ng-container>\r\n    <ng-container *ngSwitchCase=\"columnType?.LINK\">\r\n      <div class=\"ieeesa-cell-data\">\r\n        <div class=\"ieeesa-cell-data__link-row\">\r\n          <ng-container\r\n            *ngIf=\"\r\n              isEllipsisRequiredForLink;\r\n              then ellipsisCell;\r\n              else textWrapCell\r\n            \"\r\n          >\r\n          </ng-container>\r\n          <ng-template #ellipsisCell>\r\n            <button\r\n              mat-button\r\n              (click)=\"onLinkClick(row, column)\"\r\n              ieeesaTextTruncated\r\n              [elementClassNameToAddTooltip]=\"'.mdc-button .mdc-button__label'\"\r\n              class=\"ieeesa-btn-label-lg-bold-16 ieeesa-data-table__cell-content-link ieeesa-data-table__cell-content-link--ellipsis\"\r\n              [attr.aria-label]=\"column?.cellData(row)\"\r\n              [matTooltip]=\"row?.toolTipText ?? column?.cellData(row)\"\r\n            >\r\n              {{ column?.cellData(row) }}\r\n            </button>\r\n          </ng-template>\r\n          <ng-template #textWrapCell>\r\n            <button\r\n              mat-button\r\n              (click)=\"onLinkClick(row, column)\"\r\n              class=\"ieeesa-btn-label-lg-bold-16 ieeesa-data-table__cell-content-link\"\r\n              [attr.aria-label]=\"column?.cellData(row)\"\r\n              [matTooltip]=\"row?.toolTipText\"\r\n            >\r\n              {{ column?.cellData(row) }}\r\n            </button>\r\n          </ng-template>\r\n          <svg\r\n            *ngIf=\"column?.showIconFlag && column?.showIconFlag(row)\"\r\n            class=\"ieeesa-data-table__attendance-flag-icon\"\r\n            [attr.aria-label]=\"'Has attendance records'\"\r\n          >\r\n            <use [attr.xlink:href]=\"column?.iconFlagUrl ?? '/assets/images/sprites/sprites.svg#icon-attendance-flag'\"></use>\r\n          </svg>\r\n        </div>\r\n\r\n        <ng-container *ngIf=\"column?.isContentUnderLink\">\r\n          <p\r\n            class=\"ieeesa-body-sm-14 ieeesa-data-table__cell-content-under-link\"\r\n            *ngIf=\"column?.isHTMLCellData\"\r\n            [innerHTML]=\"row?.contentUnderLink | safe : safeType\"\r\n          ></p>\r\n          <p\r\n            class=\"ieeesa-body-sm-14 ieeesa-data-table__cell-content-under-link\"\r\n            *ngIf=\"!column?.isHTMLCellData\"\r\n          >\r\n            {{ row?.contentUnderLink }}\r\n          </p>\r\n        </ng-container>\r\n      </div>\r\n    </ng-container>\r\n    <ng-container *ngSwitchCase=\"columnType?.NESTED_TABLE\">\r\n      <ieeesa-icon-button\r\n        mat-button\r\n        *ngIf=\"row?.hasChildren\"\r\n        (iconButtonClick)=\"\r\n          expandedElement = expandedElement === row ? null : row;\r\n          onTableRowExpansionClick(row)\r\n        \"\r\n        [iconButton]=\"\r\n          expandedElement === row ? rowExpandButton : rowCollapseButton\r\n        \"\r\n      >\r\n      </ieeesa-icon-button>\r\n    </ng-container>\r\n    <ng-container *ngSwitchCase=\"columnType?.SELECT\">\r\n      <mat-checkbox\r\n        class=\"col-2\"\r\n        (click)=\"$event.stopPropagation()\"\r\n        (change)=\"$event ? onSelectClick(row) : null\"\r\n        [checked]=\"selectedRows.isSelected(row)\"\r\n        [aria-label]=\"constants?.dataTable?.ariaLabel?.select\"\r\n        [disabled]=\"row?.disable && canDisableCheckbox\"\r\n      >\r\n      </mat-checkbox>\r\n    </ng-container>\r\n    <ng-container *ngSwitchCase=\"columnType?.EDIT\">\r\n      <ieeesa-icon-button\r\n        [iconButton]=\"rowEditButton\"\r\n        (iconButtonClick)=\"onEditClick(row)\"\r\n      ></ieeesa-icon-button>\r\n    </ng-container>\r\n    <ng-container *ngSwitchCase=\"columnType?.DELETE\">\r\n      <ieeesa-icon-button\r\n        [iconButton]=\"rowDeleteButton\"\r\n        (iconButtonClick)=\"onDeleteClick(row)\"\r\n      ></ieeesa-icon-button>\r\n    </ng-container>\r\n    <ng-container *ngSwitchCase=\"columnType.SLIDE_TOGGLE\">\r\n      <ieeesa-slide-toggle\r\n        [slideToggle]=\"column?.cellData(row)\"\r\n        (slideToggleChange)=\"rowSlideToggleChange($event, row)\"\r\n        [canShowIcon]=\"true\"\r\n      ></ieeesa-slide-toggle>\r\n    </ng-container>\r\n    <ng-container *ngSwitchCase=\"columnType?.ACTIONS\">\r\n      <ieeesa-menu\r\n        [button]=\"rowMenuActionIcon\"\r\n        [menuItems]=\"tableRowActions ?? row.menuAction\"\r\n        (click)=\"menuItemAction(row)\"\r\n        (menuItemClick)=\"onRowActionClick($event)\"\r\n      ></ieeesa-menu>\r\n    </ng-container>\r\n  </ng-container>\r\n</ng-template>\r\n","import { Component, Input, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport {\r\n  ActivatedRoute,\r\n  Data,\r\n  NavigationEnd,\r\n  Router,\r\n  RouterModule,\r\n} from '@angular/router';\r\nimport * as screenTexts from '../../assets/constants.json';\r\nimport { Breadcrumb } from '../../models/breadcrumb.model';\r\n\r\n/**\r\n * Reusable breadcrumb component for displaying and navigating through a hierarchy of pages.\r\n * @class BreadcrumbComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-breadcrumb',\r\n  standalone: true,\r\n  imports: [CommonModule, RouterModule],\r\n  templateUrl: './breadcrumb.component.html',\r\n  styleUrls: ['./breadcrumb.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class BreadcrumbComponent implements OnDestroy {\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  breadcrumbTexts: any = screenTexts;\r\n  /**\r\n   * Initial route for the breadcrumb component.\r\n   * @type {string}\r\n   * @default '/'\r\n   * @memberof BreadcrumbComponent\r\n   */\r\n  @Input() breadcrumbInitialRoute = '/';\r\n  /**\r\n   * Initial label for the breadcrumb component.\r\n   * @type {string}\r\n   * @default breadcrumbTexts?.breadcrumb?.label?.initial\r\n   * @memberof BreadcrumbComponent\r\n   */\r\n  @Input() breadcrumbInitialRouteLabel =\r\n    this.breadcrumbTexts?.breadcrumb?.label?.initial;\r\n  breadcrumbs!: Breadcrumb[];\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  static readonly ROUTE_DATA_BREADCRUMB = 'breadcrumb';\r\n  // eslint-disable-next-line no-unused-vars\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    public activatedRoute: ActivatedRoute,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private router: Router\r\n  ) {\r\n    this.breadcrumbs = [];\r\n    this.setRouteData();\r\n  }\r\n\r\n  /**\r\n   * Sets up the subscription to router events to update breadcrumbs.\r\n   * @memberof BreadcrumbComponent\r\n   */\r\n  setRouteData() {\r\n    this.router.events\r\n      .pipe(\r\n        filter((event) => event instanceof NavigationEnd),\r\n        takeUntil(this.destroy$)\r\n      )\r\n      .subscribe(() => {\r\n        this.breadcrumbs = this.createBreadcrumbs(this.activatedRoute.root);\r\n      });\r\n  }\r\n\r\n  /**\r\n   *\r\n   * Recursively gets the breadcrumb items for the given route.\r\n   * @param {ActivatedRoute} route - The activated route.\r\n   * @param {string} [url=''] - The current URL.\r\n   * @param {Breadcrumb[]} [breadcrumbs=[]] - The current breadcrumb items.\r\n   * @return {Breadcrumb[]} - The array of breadcrumb items.\r\n   * @memberof BreadcrumbComponent\r\n   */\r\n  createBreadcrumbs(\r\n    route: ActivatedRoute,\r\n    url = '',\r\n    breadcrumbs: Breadcrumb[] = []\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  ): any {\r\n    const children: ActivatedRoute[] = route.children;\r\n\r\n    if (children.length === 0) {\r\n      return breadcrumbs;\r\n    }\r\n\r\n    for (const child of children) {\r\n      const routeURL: string = child.snapshot.url\r\n        .map((segment) => segment.path)\r\n        .join('/');\r\n      if (routeURL !== '') {\r\n        url += `/${routeURL}`;\r\n      }\r\n\r\n      const routeData: Data = child.snapshot.data;\r\n      const label =\r\n        child.snapshot.data[BreadcrumbComponent.ROUTE_DATA_BREADCRUMB];\r\n      // Capture query params from the route snapshot so breadcrumb links preserve them\r\n      const snapshotQueryParams = child.snapshot.queryParams ?? {};\r\n      const queryParams = Object.keys(snapshotQueryParams).length > 0\r\n        ? snapshotQueryParams\r\n        : undefined;\r\n      if (\r\n        routeData['breadcrumbData'] &&\r\n        routeData['breadcrumbData'].breadcrumb &&\r\n        label\r\n      ) {\r\n        const newLabel = routeData['breadcrumbData'].breadcrumb;\r\n        const actionLabel = routeData['breadcrumbData'].actionBreadcrumb;\r\n        const breadcrumbUrl = routeData['breadcrumbData'].breadcrumbUrl ?? url;\r\n        const actionBreadcrumbUrl =\r\n          routeData['breadcrumbData'].actionBreadcrumbUrl ?? url;\r\n        const breadcrumbParams =\r\n          routeData['breadcrumbData'].queryParam ?? queryParams;\r\n        const actionBreadcrumbParams =\r\n          routeData['breadcrumbData'].actionBreadcrumbParams ?? breadcrumbParams;\r\n        breadcrumbs.push({\r\n          label: newLabel,\r\n          url: breadcrumbUrl,\r\n          params: breadcrumbParams,\r\n        });\r\n        if (actionLabel) {\r\n          breadcrumbs.push({\r\n            label: actionLabel,\r\n            url: actionBreadcrumbUrl,\r\n            params: actionBreadcrumbParams,\r\n          });\r\n        }\r\n      } else if (label) {\r\n        breadcrumbs.push({ label, url, params: queryParams });\r\n      }\r\n      return this.createBreadcrumbs(child, url, breadcrumbs);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Takes the index and the current item as arguments and needs to return the unique identifier for this item.\r\n   * @param {number} index\r\n   * @return {number}\r\n   * @memberof BreadcrumbComponent\r\n   */\r\n  trackByFn(index: number): number {\r\n    return index;\r\n  }\r\n\r\n  /**\r\n   * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n   * @memberof BreadcrumbComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(true);\r\n    this.destroy$.unsubscribe();\r\n  }\r\n}\r\n","<ul class=\"ieeesa-breadcrumb breadcrumb\">\r\n  <li>\r\n    <a\r\n      [routerLink]=\"breadcrumbInitialRoute\"\r\n      class=\"ieeesa-body-sm-14 text-decoration-none\"\r\n      >{{ breadcrumbInitialRouteLabel }}\r\n    </a>\r\n  </li>\r\n\r\n  <li\r\n    *ngFor=\"\r\n      let breadcrumb of breadcrumbs;\r\n      let last = last;\r\n      let i = index;\r\n      trackBy: trackByFn\r\n    \"\r\n  >\r\n    <ng-container *ngIf=\"!last; else disableLink\">\r\n      <a\r\n        [routerLink]=\"breadcrumb?.url\"\r\n        [queryParams]=\"breadcrumb?.params\"\r\n        class=\"ieeesa-body-sm-14 text-decoration-none\"\r\n        >{{ breadcrumb.label }}</a\r\n      >\r\n    </ng-container>\r\n    <ng-template #disableLink>\r\n      <span class=\"ieeesa-body-sm-14\">{{ breadcrumb.label }}</span>\r\n    </ng-template>\r\n  </li>\r\n</ul>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Button, Tile } from '../../models/tile.model';\r\nimport { AlignType } from '@ieeesa-npm/models';\r\n\r\n/**\r\n * Creates tile component.\r\n * @export\r\n * @class TileComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-tile',\r\n  standalone: true,\r\n  imports: [CommonModule, MatCardModule, MatButtonModule],\r\n  templateUrl: './tile.component.html',\r\n  styleUrls: ['./tile.component.scss'],\r\n})\r\nexport class TileComponent {\r\n  alignmentType = AlignType;\r\n  private tilesInfo!: Tile[];\r\n  /**\r\n   * Input property to get the tiles info.\r\n   * @type {Tile}\r\n   * @memberof TileComponent\r\n   */\r\n  @Input() set tiles(value: Tile[]) {\r\n    this.tilesInfo = value;\r\n  }\r\n\r\n  get tiles(): Tile[] {\r\n    return this.tilesInfo;\r\n  }\r\n  /**\r\n   * Emits the click event\r\n   * @type {EventEmitter}\r\n   * @memberof TileComponent\r\n   */\r\n  @Output() tileClicked = new EventEmitter<Tile>();\r\n\r\n  private buttonAlignment = AlignType.RIGHT;\r\n\r\n  /**\r\n   * Sets tile buttons alignment type..\r\n   * @type {string} accepts Left, Right and Middle as values\r\n   * @memberof TileComponent\r\n   */\r\n  @Input() set buttonAlignmentInfo(value: AlignType) {\r\n    this.buttonAlignment = value;\r\n  }\r\n\r\n  get buttonAlignmentInfo(): AlignType {\r\n    return this.buttonAlignment;\r\n  }\r\n\r\n  trackByFn(index: number, item: Tile): string {\r\n    return item?.title;\r\n  }\r\n\r\n  trackByButtonFn(index: number, item: Button): string {\r\n    return item?.id;\r\n  }\r\n\r\n  onTileButtonClicked(tile: Tile): void {\r\n    this.tileClicked?.emit(tile);\r\n  }\r\n}\r\n","<div class=\"d-flex flex-column flex-wrap flex-sm-row flex-container\">\r\n    <mat-card\r\n      *ngFor=\"let tile of tiles; trackBy: trackByFn\"\r\n      class=\"ieeesa-tile d-flex\"\r\n      [ngClass]=\"{ 'ieeesa-tile--inactive': !tile?.isActive }\"\r\n    >\r\n      <mat-card-header class=\"ieeesa-tile__header ieeesa-headline-sm-24\">\r\n        <mat-card-title>{{ tile?.title }}</mat-card-title>\r\n      </mat-card-header>\r\n      <mat-card-content class=\"ieeesa-tile__content ieeesa-body-color-sm-14\">\r\n        <p>{{ tile?.description }}</p>\r\n      </mat-card-content>\r\n      <mat-card-actions\r\n        class=\"ieeesa-tile__actions d-flex flex-nowrap\"\r\n        [ngClass]=\"{\r\n          'justify-content-start':\r\n            buttonAlignmentInfo === alignmentType.LEFT,\r\n          'justify-content-end':\r\n            buttonAlignmentInfo === alignmentType.RIGHT,\r\n          'justify-content-center':\r\n            buttonAlignmentInfo === alignmentType.MIDDLE\r\n        }\"\r\n      >\r\n        <button\r\n          *ngFor=\"let button of tile?.buttons; trackBy: trackByButtonFn\"\r\n          mat-button\r\n          [disabled]=\"button?.isDisabled\"\r\n          class=\"mat-tertiary-button ieeesa-tile__actions__button\"\r\n          (click)=\"onTileButtonClicked(tile)\"\r\n        >\r\n          <span\r\n            class=\"ieeesa-btn-label-lg-bold-16 ieeesa-tile__actions__button__label\"\r\n            >{{ button?.label }}\r\n            <i\r\n              *ngIf=\"button?.isRightArrowNeeded\"\r\n              class=\"fa fa-arrow-right\"\r\n              aria-hidden=\"true\"\r\n            ></i\r\n          ></span>\r\n        </button>\r\n      </mat-card-actions>\r\n    </mat-card>\r\n</div>\r\n","/* eslint-disable no-unused-vars */\r\nexport enum CustomProperties {\r\n  EVENT_ID = 'eventId',\r\n  MEETING_ID = 'meetingId',\r\n  ROUTE_PATHS = 'routePaths',\r\n  API_BASE_URL = 'apiBaseURL',\r\n  API_DOMAIN_URL = 'apiDomainURL',\r\n  USER_PERMISSIONS = 'userPermissions',\r\n  ACTION_TYPE = 'actionType',\r\n  IS_VIEW_ONLY = 'isViewOnly',\r\n  IS_MEMBER_OF_GROUP = 'isMemberOfGroup',\r\n  TENANT_FEATURES = 'tenantFeatures',\r\n}\r\n","/* eslint-disable no-empty-function */\r\nimport {\r\n  Component,\r\n  ComponentRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n  ViewContainerRef,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  MatTabChangeEvent,\r\n  MatTabGroup,\r\n  MatTabsModule,\r\n} from '@angular/material/tabs';\r\nimport { Tab } from '../../models/tab.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ModalConfirmationComponent } from '../modal-confirmation/modal-confirmation.component';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as constants from '../../assets/constants.json';\r\nimport { FormGroup } from '@angular/forms';\r\nimport {\r\n  EventsAndMeetingRouteConfig,\r\n  UserPermission,\r\n  ConfirmationModalData\r\n} from '@ieeesa-npm/models';\r\nimport { CustomProperties } from '../../models/custom-properties.model';\r\n\r\n@Component({\r\n  selector: 'ieeesa-tabs',\r\n  standalone: true,\r\n  imports: [CommonModule, MatTabsModule],\r\n  templateUrl: './tabs.component.html',\r\n  styleUrls: ['./tabs.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TabsComponent implements OnInit, OnDestroy {\r\n  @ViewChild('componentContainer', { read: ViewContainerRef, static: true })\r\n  componentContainer!: ViewContainerRef;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  componentRef!: ComponentRef<any>;\r\n  isComponentLoaded = false;\r\n  previousTabIndex = 0;\r\n  private isFormValuesChanged = false;\r\n  @Input() selectedTabIndex = 0;\r\n  private _tabs: Tab[] = [];\r\n  @Input()\r\n  set tabs(tab: Tab[]) {\r\n    this._tabs = tab;\r\n  }\r\n  get tabs(): Tab[] {\r\n    return this._tabs;\r\n  }\r\n  @Input()\r\n  set isFormChanged(status: boolean) {\r\n    this.isFormValuesChanged = status;\r\n  }\r\n  get isFormChanged(): boolean {\r\n    return this.isFormValuesChanged;\r\n  }\r\n  @Input() confirmationModalConfig!: ConfirmationModalData;\r\n  @Output() selectedIndexChange = new EventEmitter<MatTabChangeEvent>();\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  formCancel = new EventEmitter<any>();\r\n  formSubmit = new EventEmitter<FormGroup[]>();\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  constants: any = constants;\r\n  modalConfigTexts = this.constants?.modalConfig;\r\n  @Input() isViewOnly!: string | boolean;\r\n  @Input() isMemberOfGroup!: string | boolean;\r\n  @Input() eventId!: string;\r\n  @Input() meetingId!: string;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  @Input() actionType!: any;\r\n  @Input() routePaths!: EventsAndMeetingRouteConfig;\r\n  @Input() apiBaseURL!: string;\r\n  @Input() apiDomainURL!: string;\r\n  @Input() userPermissions!: UserPermission[];\r\n  @Input() isInlineMode = false;\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  @Input() tenantFeatures: any[] | undefined;\r\n  customProperties = [\r\n    CustomProperties.EVENT_ID,\r\n    CustomProperties.MEETING_ID,\r\n    CustomProperties.ROUTE_PATHS,\r\n    CustomProperties.API_BASE_URL,\r\n    CustomProperties.API_DOMAIN_URL,\r\n    CustomProperties.USER_PERMISSIONS,\r\n    CustomProperties.ACTION_TYPE,\r\n    CustomProperties.IS_VIEW_ONLY,\r\n    CustomProperties.IS_MEMBER_OF_GROUP,\r\n    CustomProperties.TENANT_FEATURES,\r\n  ];\r\n  // eslint-disable-next-line no-unused-vars\r\n  constructor(public dialog: MatDialog) {}\r\n  /**\r\n   * Verifies tabs count and calls createComponent() to load selected component.\r\n   * @memberof TabsComponent\r\n   */\r\n  ngOnInit(): void {\r\n    this.previousTabIndex = this.selectedTabIndex ?? 0;\r\n    if (\r\n      this.tabs?.length > 0 &&\r\n      this.tabs?.[this.selectedTabIndex]?.componentRef\r\n    ) {\r\n      this.createComponent(this.tabs?.[this.selectedTabIndex]);\r\n    }\r\n  }\r\n  /**\r\n   * Opens confirmation modal on tab change event when leaving with unsaved changes.\r\n   * @param {MatTabGroup} tab\r\n   * @param event\r\n   * @memberof TabsComponent\r\n   */\r\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n  onTabChange(tab: MatTabGroup, event: MatTabChangeEvent): void {\r\n    if (tab?.selectedIndex !== this.previousTabIndex && this.isFormChanged) {\r\n      const dialogRef = this.dialog?.open(ModalConfirmationComponent, {\r\n        data: this.confirmationModalConfig,\r\n        width: this.modalConfigTexts?.width,\r\n        autoFocus: this.modalConfigTexts?.autoFocus,\r\n        ariaLabel: this.modalConfigTexts?.ariaLabel,\r\n        panelClass: [\r\n          'ieeesa-modal-confirm-dialog',\r\n          'ieeesa-cancel-modal-confirm-dialog',\r\n        ],\r\n      });\r\n      dialogRef\r\n        ?.afterClosed()\r\n        ?.pipe(takeUntil(this.destroy$))\r\n        ?.subscribe((result) => {\r\n          if (result) {\r\n            this.previousTabIndex = event.index;\r\n            this.loadSelectedTabContent(event);\r\n          } else {\r\n            tab.selectedIndex = this.previousTabIndex;\r\n          }\r\n        });\r\n    } else if (tab?.selectedIndex !== this.previousTabIndex) {\r\n      this.previousTabIndex = event.index;\r\n      this.loadSelectedTabContent(event);\r\n    }\r\n  }\r\n  /**\r\n   * Loads the respective component on tab change event when componentRef is available.\r\n   * @param {MatTabChangeEvent} event\r\n   * @memberof TabsComponent\r\n   */\r\n  loadSelectedTabContent(event: MatTabChangeEvent): void {\r\n    this.isFormChanged = false;\r\n    this.selectedIndexChange.emit(event);\r\n    if (this.tabs?.[event.index]?.componentRef)\r\n      this.createComponent(this.tabs?.[event.index]);\r\n  }\r\n  /**\r\n   * Dynamically loads the component in the DOM container based on the passed tab and clears the previously loaded component before loading the new one.\r\n   * @param {Tab} tab\r\n   * @memberof TabsComponent\r\n   */\r\n  createComponent(tab: Tab): void {\r\n    if (this.isComponentLoaded) {\r\n      this.componentRef.destroy();\r\n      this.componentContainer.clear();\r\n    }\r\n    this.componentRef = this.componentContainer?.createComponent(\r\n      tab.componentRef\r\n    );\r\n    this.setCustomComponentProperties(this.customProperties as []);\r\n    // Set isInlineMode only if the component supports it (e.g., CreateModifyMeetingComponent)\r\n    if (this.isInlineMode && this.componentRef?.instance && 'isInlineMode' in this.componentRef.instance) {\r\n      this.componentRef.setInput('isInlineMode', this.isInlineMode);\r\n    }\r\n    this.componentRef?.instance?.formCancel\r\n      ?.pipe(takeUntil(this.destroy$))\r\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n      .subscribe((result: any) => {\r\n        this.formCancel.emit(result);\r\n      });\r\n    this.componentRef?.instance?.formSubmit\r\n      ?.pipe(takeUntil(this.destroy$))\r\n      .subscribe((result: FormGroup[]) => {\r\n        this.formSubmit.emit(result);\r\n      });\r\n    this.isComponentLoaded = true;\r\n  }\r\n  /**\r\n   * Sets dynamic input property which is being sent by the consumer component and its value is not undefined for the component loaded by the tab component.\r\n   * @param {[]} properties\r\n   * @memberof TabsComponent\r\n   */\r\n  setCustomComponentProperties(properties: []): void {\r\n    const thisObj = this as object;\r\n    // Tab components declare different subsets of these inputs; setting an undeclared one throws NG0303.\r\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n    const declaredInputs =\r\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n      (this.componentRef?.componentType as any)?.['ɵcmp']?.inputs ?? {};\r\n    properties.forEach((property) => {\r\n      if (\r\n        property in thisObj &&\r\n        thisObj[property] !== undefined &&\r\n        property in declaredInputs\r\n      ) {\r\n        this.componentRef?.setInput(property, thisObj[property]);\r\n      }\r\n    });\r\n  }\r\n  /**\r\n   * Returns unique identifier for the tab.\r\n   * @param {number} index\r\n   * @param {Tab} option\r\n   * @return {*}  {(number | string)}\r\n   * @memberof TabsComponent\r\n   */\r\n  trackByFn(index: number, option: Tab): number | string {\r\n    return option.id;\r\n  }\r\n  /**\r\n   * Cleans up resources when the component is destroyed\r\n   * @memberof TabsComponent\r\n   */\r\n  ngOnDestroy() {\r\n    if (this.componentRef) {\r\n      this.componentRef.destroy();\r\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n      this.componentRef = null as any;\r\n    }\r\n  }\r\n}\r\n","<mat-tab-group\r\n  #tabGroup\r\n  class=\"ieeesa-tab-group\"\r\n  (selectedTabChange)=\"onTabChange(tabGroup, $event)\"\r\n  [selectedIndex]=\"selectedTabIndex\"\r\n>\r\n  <mat-tab\r\n    *ngFor=\"let tab of tabs; trackBy: trackByFn\"\r\n    [label]=\"tab?.label ?? ''\"\r\n    [disabled]=\"tab?.disabled\"\r\n  >\r\n  </mat-tab>\r\n</mat-tab-group>\r\n<ng-container #componentContainer></ng-container>\r\n","/* eslint-disable no-unused-vars */\r\nexport enum ButtonType {\r\n    NORMAL = 'NORMAL',\r\n    ICON = 'ICON'\r\n}","import { CommonModule } from '@angular/common';\r\nimport {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { BreakpointObserverService } from '../../services/break-point-observer.service';\r\nimport { ButtonType } from '../../models/button-type.model';\r\nimport { CardButton } from '../../models/card-button.model';\r\nimport { CardInfo } from '../../models/card-info.model';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { IconButtonComponent } from '../icon-button/icon-button.component';\r\nimport { AlignType } from '@ieeesa-npm/models';\r\n\r\n@Component({\r\n  selector: 'ieeesa-card',\r\n  standalone: true,\r\n  imports: [CommonModule, MatCardModule, MatButtonModule, IconButtonComponent],\r\n  templateUrl: './card.component.html',\r\n  styleUrls: ['./card.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CardComponent implements OnDestroy {\r\n  isMobileView = false;\r\n  destroy$ = new Subject<boolean>();\r\n  alignmentType = AlignType;\r\n  buttonType = ButtonType;\r\n  @Input() buttonAlignmentInfo = AlignType.LEFT;\r\n  @Output() actionButtonClicked = new EventEmitter<CardButton>();\r\n\r\n  private cardDetails!: CardInfo;\r\n  @Input() set cardInfo(value: CardInfo) {\r\n    this.cardDetails = value;\r\n  }\r\n  get cardInfo(): CardInfo {\r\n    return this.cardDetails;\r\n  }\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    private breakPointObserverService: BreakpointObserverService\r\n  ) {\r\n    this.breakPointObserverService\r\n      .getBreakpoint()\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((result) => {\r\n        this.isMobileView = result.matches;\r\n      });\r\n  }\r\n  /**\r\n   * Emits the action button click event.\r\n   * @type {Button}\r\n   * @memberof CardComponent\r\n   */\r\n  onActionButtonClicked(button: CardButton): void {\r\n    this.actionButtonClicked.emit(button);\r\n  }\r\n  /**\r\n   * Keep tracks the button based on the ID in the DOM tree.\r\n   * @memberof CardComponent\r\n   */\r\n  trackByButtonFn(index: number, item: CardButton): number {\r\n    return item?.id;\r\n  }\r\n  /**\r\n   * Performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n   * @memberof CardComponent\r\n   */\r\n  ngOnDestroy() {\r\n    this.destroy$?.next(true);\r\n    this.destroy$?.unsubscribe();\r\n  }\r\n}\r\n","<mat-card\r\n  *ngIf=\"cardInfo\"\r\n  class=\"ieeesa-card mt-3 d-flex\"\r\n  [ngClass]=\"isMobileView ? 'ieeesa-card__min-height' : ''\"\r\n>\r\n  <mat-card-header class=\"ieeesa-card__header p-0\">\r\n    <mat-card-title-group>\r\n      <mat-card-title\r\n        class=\"ieeesa-card__header--title ieeesa-headline-sm-24 p-0\"\r\n      >\r\n        {{ cardInfo?.title }}\r\n      </mat-card-title>\r\n      <mat-card-subtitle\r\n        class=\"ieeesa-card__header--sub-title ieeesa-body-md-14\"\r\n        *ngIf=\"cardInfo?.subTitle\"\r\n      >\r\n        {{ cardInfo?.subTitle }}\r\n      </mat-card-subtitle>\r\n    </mat-card-title-group>\r\n  </mat-card-header>\r\n  <ng-container\r\n    *ngTemplateOutlet=\"\r\n      cardActions;\r\n      context: { $implicit: cardInfo?.headerActions }\r\n    \"\r\n  ></ng-container>\r\n  <mat-card-content class=\"ieeesa-card__content p-0\">\r\n    <ng-content select=\"[component]\"></ng-content>\r\n    <ng-content select=\"[description]\"></ng-content>\r\n  </mat-card-content>\r\n  <ng-container\r\n    *ngTemplateOutlet=\"\r\n      cardActions;\r\n      context: { $implicit: cardInfo?.footerActions }\r\n    \"\r\n  ></ng-container>\r\n  <ng-template #cardActions let-actions>\r\n    <mat-card-actions\r\n      class=\"ieeesa-card--actions d-flex flex-nowrap p-0\"\r\n      [ngClass]=\"{\r\n        'justify-content-start': buttonAlignmentInfo === alignmentType.LEFT,\r\n        'justify-content-end': buttonAlignmentInfo === alignmentType.RIGHT,\r\n        'justify-content-center': buttonAlignmentInfo === alignmentType.MIDDLE\r\n      }\"\r\n      *ngIf=\"actions?.length\"\r\n    >\r\n      <ng-container *ngFor=\"let button of actions; trackBy: trackByButtonFn\">\r\n        <ng-container\r\n          *ngIf=\"button?.buttonType === buttonType.ICON; else normalButton\"\r\n        >\r\n          <ieeesa-icon-button\r\n            [iconButton]=\"button\"\r\n            (iconButtonClick)=\"onActionButtonClicked(button)\"\r\n          >\r\n          </ieeesa-icon-button>\r\n        </ng-container>\r\n        <ng-template #normalButton>\r\n          <button\r\n            mat-button\r\n            (click)=\"onActionButtonClicked(button)\"\r\n            class=\"mat-tertiary-button\"\r\n            *ngIf=\"button?.isVisible\"\r\n          >\r\n            <span\r\n              class=\"ieeesa-card--actions__label ieeesa-btn-label-lg-bold-16\"\r\n            >\r\n              {{ button?.label }}\r\n            </span>\r\n          </button>\r\n        </ng-template>\r\n      </ng-container>\r\n    </mat-card-actions>\r\n  </ng-template>\r\n</mat-card>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatAccordion, MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { AccordionInfo } from '../../models/accordion-info.model';\r\nimport { BreakpointObserverService } from '../../services/break-point-observer.service';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'ieeesa-accordion',\r\n  standalone: true,\r\n  templateUrl: './accordion.component.html',\r\n  styleUrls: ['./accordion.component.scss'],\r\n  imports: [CommonModule, MatExpansionModule, MatButtonModule, MatIconModule],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AccordionComponent implements OnDestroy {\r\n  destroy$: Subject<boolean> = new Subject<boolean>();\r\n  @ViewChild(MatAccordion)\r\n  accordion!: MatAccordion;\r\n  isMobileView = false;\r\n  private accordionDetails!: AccordionInfo;\r\n  @Input() set accordionInfo(value: AccordionInfo) {\r\n    this.accordionDetails = value;\r\n  }\r\n  get accordionInfo(): AccordionInfo {\r\n    return this.accordionDetails;\r\n  }\r\n  @Output() accordionOpened = new EventEmitter<boolean>();\r\n  // eslint-disable-next-line no-unused-vars\r\n  constructor(private breakpointObserverService: BreakpointObserverService) {\r\n    this.breakpointObserverService\r\n      .getBreakpoint()\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((result: { matches: boolean }) => {\r\n        this.isMobileView = result?.matches;\r\n      });\r\n  }\r\n  /**\r\n   * Emits accordionOpened event with true when accordion is expanded or false if accordion is collapsed.\r\n   * @param {boolean} isExpanded\r\n   * @memberof AccordionComponent\r\n   */\r\n  setOpenedStatus(isExpanded: boolean): void {\r\n    this.accordionOpened.emit(isExpanded);\r\n  }\r\n  /**\r\n   * Performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n   * @memberof AccordionComponent\r\n   */\r\n  ngOnDestroy(): void {\r\n    this.destroy$?.next(true);\r\n    this.destroy$?.unsubscribe();\r\n  }\r\n}\r\n","<div class=\"ieeesa-accordion\" *ngIf=\"accordionInfo\">\r\n  <mat-accordion class=\"ieeesa-accordion__mat-accordion\">\r\n    <mat-expansion-panel\r\n      [disabled]=\"accordionInfo?.isDisabled\"\r\n      (opened)=\"setOpenedStatus(true)\"\r\n      (closed)=\"setOpenedStatus(false)\"\r\n    >\r\n      <mat-expansion-panel-header\r\n        class=\"ieeesa-accordion__panel-header\"\r\n        [ngClass]=\"{ 'accordion-header': isMobileView }\"\r\n      >\r\n        <mat-panel-title\r\n          class=\"ieeesa-accordion__header--title ieeesa-title-lg-24\"\r\n          >{{ accordionInfo?.title }}</mat-panel-title\r\n        >\r\n      </mat-expansion-panel-header>\r\n      <ng-content select=\"[actions]\"></ng-content>\r\n      <ng-content select=\"[component]\"></ng-content>\r\n    </mat-expansion-panel>\r\n  </mat-accordion>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { InactiveTenantDisplay } from '../../models/inactive-tenant.model';\r\nimport { SetBackgroundDirective } from '../../directives/set-background/set-background.directive';\r\nimport { AppConfigInfo } from '../../models/app-config-info.model';\r\n/**\r\n * Provides reusable implementation to Inactive tenant error page by getting the application config and display contents information as an input to the component.\r\n * @export\r\n * @class InactiveTenantComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-inactive-tenant',\r\n  templateUrl: './inactive-tenant.component.html',\r\n  styleUrls: ['./inactive-tenant.component.scss'],\r\n  imports: [CommonModule, SetBackgroundDirective],\r\n  standalone: true,\r\n})\r\nexport class InactiveTenantComponent {\r\n  /**\r\n   * AppConfigInfo data can be passed as input while calling this component using selector.\r\n   * @usage <nesc-inactive-tenant [appConfigInfo]=\"appConfigInfo\" [inactiveTenantDisplay]=\"inactiveTenantDisplay\"></nesc-inactive-tenant> or routes: Route[]=[{ path: 'landing', component: InactiveTenantComponent, data:{appConfigInfo:appConfigInfo} }]\r\n   * @type {AppConfigInfo}\r\n   * @type {InactiveTenantDisplay}\r\n   * @memberof InactiveTenantComponent\r\n   */\r\n  @Input() appConfigInfo: AppConfigInfo = {\r\n    appTitle: '',\r\n    appDescription: '',\r\n    cookieName: '',\r\n    ssoSignOutUrl: '',\r\n    domainUrl: '',\r\n    createAccountUrl: '',\r\n  };\r\n  @Input() inactiveTenantDisplay: InactiveTenantDisplay = {\r\n    helpLink: '',\r\n    errorMessage: '',\r\n    supportText: '',\r\n  };\r\n}\r\n","<div\r\n  class=\"ieeesa-inactive-tenant d-flex justify-content-center\"\r\n  ieeesaSetBackground\r\n  [background]=\"appConfigInfo.background ?? { color: '', imgURL: '' }\"\r\n>\r\n  <div\r\n    class=\"jumbotron ieeesa-inactive-tenant__note d-flex flex-column justify-content-between text-center px-4 py-4 my-5\"\r\n  >\r\n    <div\r\n      class=\"mb-0 ieeesa-title-lg-24 ieeesa-inactive-tenant__note--description\"\r\n    >\r\n      <p class=\"mb-0\">\r\n        {{ inactiveTenantDisplay?.errorMessage }}\r\n      </p>\r\n      <p class=\"mb-0\">\r\n        {{ inactiveTenantDisplay?.supportText }}\r\n      </p>\r\n      <a\r\n        class=\"pointer\"\r\n        href=\"mailto:{{ inactiveTenantDisplay?.helpLink }}\"\r\n        rel=\"noopener noreferrer\"\r\n        >{{ inactiveTenantDisplay?.helpLink }}</a\r\n      >\r\n    </div>\r\n  </div>\r\n</div>\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ExportFormat, ExportFormatOption } from '../../models/export-format-popover.model';\r\n\r\n/**\r\n * ExportFormatPopoverComponent renders a popover presenting format selection\r\n * cards (CSV / Excel). Positioned via CSS absolute below the trigger element.\r\n *\r\n * @export\r\n * @class ExportFormatPopoverComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-export-format-popover',\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  templateUrl: './export-format-popover.component.html',\r\n  styleUrls: ['./export-format-popover.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ExportFormatPopoverComponent {\r\n  /** Array of format options to display in the popover */\r\n  @Input() formatOptions: ExportFormatOption[] = [];\r\n\r\n  /**\r\n   * @deprecated No longer used for positioning; kept for backwards compatibility.\r\n   */\r\n  @Input() origin?: unknown;\r\n\r\n  /** Controls visibility */\r\n  private _isOpen = false;\r\n  @Input()\r\n  set isOpen(value: boolean) {\r\n    // Clear any previously highlighted format each time the popover opens, so it\r\n    // always opens with no pre-selected format.\r\n    if (value && !this._isOpen) {\r\n      this.selectedFormat = null;\r\n    }\r\n    this._isOpen = value;\r\n  }\r\n  get isOpen(): boolean {\r\n    return this._isOpen;\r\n  }\r\n\r\n  /** Title text displayed at the top of the popover */\r\n  @Input() popoverTitle = 'Select the file format for attendance export.';\r\n\r\n  /** Subtitle map for format options (keyed by ExportFormat value) */\r\n  @Input() formatSubtitles: Record<string, string> = {\r\n    csv: 'Comma separated file',\r\n    xls: 'Spreadsheet File',\r\n  };\r\n\r\n  /** Tracks the currently selected format for visual highlight */\r\n  selectedFormat: ExportFormat | null = null;\r\n\r\n  /** Emits when user selects a format */\r\n  @Output() formatSelected = new EventEmitter<ExportFormat>();\r\n\r\n  /** Emits when the popover should be closed (backdrop click or after selection). */\r\n  @Output() closed = new EventEmitter<void>();\r\n\r\n  /**\r\n   * Handles format option selection via click or Enter key.\r\n   * @param {ExportFormat} format\r\n   */\r\n  onFormatSelect(format: ExportFormat): void {\r\n    this.selectedFormat = format;\r\n    this.formatSelected.emit(format);\r\n    this.closed.emit();\r\n  }\r\n\r\n  /**\r\n   * Closes the popover via backdrop click.\r\n   */\r\n  onBackdropClick(): void {\r\n    this.closed.emit();\r\n  }\r\n\r\n  /**\r\n   * TrackBy function for *ngFor on format options.\r\n   */\r\n  // eslint-disable-next-line no-unused-vars\r\n  trackByFormat(index: number, option: ExportFormatOption): string {\r\n    return option.value;\r\n  }\r\n}\r\n\r\n","<!-- Backdrop -->\r\n<div\r\n  *ngIf=\"isOpen\"\r\n  class=\"ieeesa-export-format-popover__backdrop\"\r\n  aria-hidden=\"true\"\r\n  role=\"presentation\"\r\n  (click)=\"onBackdropClick()\"\r\n  (document:keydown.escape)=\"onBackdropClick()\"\r\n></div>\r\n\r\n<!-- Popover -->\r\n<div *ngIf=\"isOpen\" class=\"ieeesa-export-format-popover\" role=\"listbox\">\r\n  <p class=\"ieeesa-export-format-popover__title\">{{ popoverTitle }}</p>\r\n  <div class=\"ieeesa-export-format-popover__options\">\r\n    <button\r\n      *ngFor=\"let option of formatOptions; trackBy: trackByFormat\"\r\n      class=\"ieeesa-export-format-popover__option\"\r\n      [class.ieeesa-export-format-popover__option--selected]=\"selectedFormat === option.value\"\r\n      role=\"option\"\r\n      [attr.aria-selected]=\"selectedFormat === option.value\"\r\n      [attr.aria-label]=\"option.ariaLabel\"\r\n      (click)=\"onFormatSelect(option.value)\"\r\n      (keydown.enter)=\"onFormatSelect(option.value)\"\r\n    >\r\n      <span class=\"ieeesa-export-format-popover__option-label\">{{ option.label }}</span>\r\n      <span class=\"ieeesa-export-format-popover__option-subtitle\">\r\n        {{ formatSubtitles[option.value] }}\r\n      </span>\r\n    </button>\r\n  </div>\r\n</div>\r\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnChanges,\r\n  Output,\r\n  SimpleChanges,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport {\r\n  FilterPopoverCategory,\r\n  FilterPopoverOption,\r\n  FilterPopoverSelection,\r\n} from '../../models/filter-popover.model';\r\n\r\n/**\r\n * FilterPopoverComponent renders a configurable multi-category filter popup.\r\n * Positioned via CSS absolute — parent must wrap trigger + this component\r\n * in a `position: relative` container.\r\n *\r\n * Supports single or multi-category mode:\r\n * - Single category: left nav is hidden, only checkbox list shown.\r\n * - Multi-category: left nav with category selection + right panel.\r\n *\r\n * @export\r\n * @class FilterPopoverComponent\r\n * @implements {OnChanges}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-filter-popover',\r\n  standalone: true,\r\n  imports: [CommonModule, FormsModule, MatCheckboxModule],\r\n  templateUrl: './filter-popover.component.html',\r\n  styleUrls: ['./filter-popover.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class FilterPopoverComponent implements OnChanges {\r\n  /** Controls visibility */\r\n  @Input() isOpen = false;\r\n\r\n  /** Filter categories with their options — parent defines what to show */\r\n  @Input() categories: FilterPopoverCategory[] = [];\r\n\r\n  /** Header title text */\r\n  @Input() title = 'Filters';\r\n\r\n  /** Clear all button text */\r\n  @Input() clearAllLabel = 'Clear all';\r\n\r\n  /** Select all link text */\r\n  @Input() selectAllLabel = 'Select all';\r\n\r\n  /** Deselect all link text */\r\n  @Input() deselectAllLabel = 'Deselect all';\r\n\r\n  /** Reset button text */\r\n  @Input() resetLabel = 'Reset';\r\n\r\n  /** Apply button text */\r\n  @Input() applyLabel = 'Apply';\r\n\r\n  /** No results message */\r\n  @Input() noResultsMessage = 'No results found';\r\n\r\n  /** Search placeholder prefix (appended with category label) */\r\n  @Input() searchPlaceholderPrefix = 'Search';\r\n\r\n  /** Emits the current selection when user clicks Apply */\r\n  @Output() filterApplied = new EventEmitter<FilterPopoverSelection>();\r\n\r\n  /** Emits when user clicks Reset */\r\n  @Output() filterReset = new EventEmitter<void>();\r\n\r\n  /** Emits when the popover should be closed (backdrop click or after Apply). */\r\n  @Output() closed = new EventEmitter<void>();\r\n\r\n  /** Currently active category index */\r\n  activeCategoryIndex = 0;\r\n\r\n  /** Search term for filtering options */\r\n  searchTerm = '';\r\n\r\n  /** Internal working copy of categories */\r\n  workingCategories: FilterPopoverCategory[] = [];\r\n\r\n  /**\r\n   * Refreshes working copy when opening or categories change.\r\n   */\r\nngOnChanges(changes: SimpleChanges): void {\r\n  if (changes['isOpen'] && this.isOpen) {\r\n    this.initWorkingCopy();\r\n    return;\r\n  }\r\n\r\n  // Only refresh categories while closed so we don't clobber in-progress user selections.\r\n  if (changes['categories'] && !this.isOpen) {\r\n    this.initWorkingCopy();\r\n  }\r\n}\r\n\r\n  /** Whether this is a single-category filter (hides left nav) */\r\n  get isSingleCategory(): boolean {\r\n    return this.workingCategories.length === 1;\r\n  }\r\n\r\n  /** Total number of selected options across all categories */\r\n  get totalSelectedCount(): number {\r\n    return this.workingCategories.reduce(\r\n      (sum, cat) => sum + (cat.selectedCount ?? 0), 0\r\n    );\r\n  }\r\n\r\n  /** Currently active category */\r\n  get activeCategory(): FilterPopoverCategory | undefined {\r\n    return this.workingCategories[this.activeCategoryIndex];\r\n  }\r\n\r\n  /** Options filtered by search term for the active category */\r\n  get filteredOptions(): FilterPopoverOption[] {\r\n    if (!this.activeCategory) return [];\r\n    if (!this.searchTerm.trim()) return this.activeCategory.options;\r\n    const term = this.searchTerm.toLowerCase();\r\n    return this.activeCategory.options.filter((opt) =>\r\n      opt.label.toLowerCase().includes(term)\r\n    );\r\n  }\r\n\r\n  /** Whether all visible options are checked */\r\n  get isAllVisibleSelected(): boolean {\r\n    const visible = this.filteredOptions;\r\n    return visible.length > 0 && visible.every((opt) => opt.checked);\r\n  }\r\n\r\n  /** Selects a category from the left nav */\r\n  onCategorySelect(index: number): void {\r\n    this.activeCategoryIndex = index;\r\n    this.searchTerm = '';\r\n  }\r\n\r\n  /** Toggles a single checkbox option */\r\n  onOptionToggle(option: FilterPopoverOption): void {\r\n    option.checked = !option.checked;\r\n    this.recalculateSelectedCount(this.activeCategoryIndex);\r\n  }\r\n\r\n  /** Toggles all visible options */\r\n  onSelectAll(): void {\r\n    const shouldSelect = !this.isAllVisibleSelected;\r\n    this.filteredOptions.forEach((opt) => (opt.checked = shouldSelect));\r\n    this.recalculateSelectedCount(this.activeCategoryIndex);\r\n  }\r\n\r\n  /** Applies filter and emits selection */\r\n  onApply(): void {\r\n    const selection: FilterPopoverSelection = {};\r\n    this.workingCategories.forEach((cat) => {\r\n      const selected = cat.options.filter((opt) => opt.checked).map((opt) => opt.label);\r\n      if (selected.length > 0) {\r\n        selection[cat.id] = selected;\r\n      }\r\n    });\r\n    this.filterApplied.emit(selection);\r\n    this.closed.emit();\r\n  }\r\n\r\n  /** Resets all selections */\r\n  onReset(): void {\r\n    this.workingCategories.forEach((cat) => {\r\n      cat.options.forEach((opt) => (opt.checked = false));\r\n      cat.selectedCount = 0;\r\n    });\r\n    this.searchTerm = '';\r\n    this.filterReset.emit();\r\n  }\r\n\r\n  /** Clears all (same as reset) */\r\n  onClearAll(): void {\r\n    this.onReset();\r\n  }\r\n\r\n  /** Closes via backdrop click */\r\n  onBackdropClick(): void {\r\n    this.closed.emit();\r\n  }\r\n\r\n  // eslint-disable-next-line no-unused-vars\r\n  trackByCategory(index: number): number {\r\n    return index;\r\n  }\r\n\r\n  // eslint-disable-next-line no-unused-vars\r\n  trackByOption(_index: number, option: FilterPopoverOption): string {\r\n    return option.id;\r\n  }\r\n\r\n  // --- Private ---\r\n\r\n  private initWorkingCopy(): void {\r\n    this.workingCategories = this.categories.map((cat) => ({\r\n      ...cat,\r\n      options: cat.options.map((opt) => ({ ...opt })),\r\n      selectedCount: cat.options.filter((opt) => opt.checked).length,\r\n    }));\r\n    this.activeCategoryIndex = 0;\r\n    this.searchTerm = '';\r\n  }\r\n\r\n  private recalculateSelectedCount(categoryIndex: number): void {\r\n    const cat = this.workingCategories[categoryIndex];\r\n    if (cat) {\r\n      cat.selectedCount = cat.options.filter((opt) => opt.checked).length;\r\n    }\r\n  }\r\n}\r\n","<!-- Backdrop -->\r\n<div\r\n  *ngIf=\"isOpen\"\r\n  class=\"ieeesa-filter-popover__backdrop\"\r\n  aria-hidden=\"true\"\r\n  role=\"presentation\"\r\n  (click)=\"onBackdropClick()\"\r\n  (document:keydown.escape)=\"onBackdropClick()\"\r\n></div>\r\n\r\n<!-- Filter Panel -->\r\n<div *ngIf=\"isOpen\" class=\"ieeesa-filter-popover\" role=\"dialog\" aria-modal=\"true\" [attr.aria-label]=\"title\">\r\n  <!-- Header -->\r\n  <div class=\"ieeesa-filter-popover__header\">\r\n    <div class=\"ieeesa-filter-popover__header-left\">\r\n      <svg class=\"ieeesa-filter-popover__header-icon\">\r\n        <use xlink:href=\"/assets/images/sprites/sprites.svg#icon-filter-attendees\"></use>\r\n      </svg>\r\n      <span class=\"ieeesa-filter-popover__header-title\">{{ title }}</span>\r\n      <span\r\n        *ngIf=\"totalSelectedCount > 0\"\r\n        class=\"ieeesa-filter-popover__badge ieeesa-filter-popover__badge--header\"\r\n      >\r\n        {{ totalSelectedCount }}\r\n      </span>\r\n    </div>\r\n    <button\r\n      *ngIf=\"totalSelectedCount > 0\"\r\n      class=\"ieeesa-filter-popover__clear-all\"\r\n      (click)=\"onClearAll()\"\r\n      type=\"button\"\r\n    >\r\n      {{ clearAllLabel }}\r\n    </button>\r\n  </div>\r\n\r\n  <!-- Body -->\r\n  <div class=\"ieeesa-filter-popover__body\">\r\n    <!-- Left Nav (hidden for single category) -->\r\n    <div *ngIf=\"!isSingleCategory\" class=\"ieeesa-filter-popover__nav\">\r\n      <button\r\n        *ngFor=\"let category of workingCategories; let i = index; trackBy: trackByCategory\"\r\n        class=\"ieeesa-filter-popover__nav-item\"\r\n        [class.ieeesa-filter-popover__nav-item--active]=\"i === activeCategoryIndex\"\r\n        (click)=\"onCategorySelect(i)\"\r\n        type=\"button\"\r\n      >\r\n        <span class=\"ieeesa-filter-popover__nav-label\">{{ category.label }}</span>\r\n        <span\r\n          *ngIf=\"category.selectedCount && category.selectedCount > 0\"\r\n          class=\"ieeesa-filter-popover__badge ieeesa-filter-popover__badge--nav\"\r\n        >\r\n          {{ category.selectedCount }}\r\n        </span>\r\n      </button>\r\n    </div>\r\n\r\n    <!-- Right Content -->\r\n    <div class=\"ieeesa-filter-popover__content\">\r\n      <!-- Search -->\r\n      <div class=\"ieeesa-filter-popover__search-wrapper\">\r\n        <svg class=\"ieeesa-filter-popover__search-icon\">\r\n          <use xlink:href=\"/assets/images/sprites/sprites.svg#icon-search\"></use>\r\n        </svg>\r\n        <input\r\n          type=\"text\"\r\n          class=\"ieeesa-filter-popover__search-input\"\r\n          [placeholder]=\"searchPlaceholderPrefix + ' ' + (activeCategory?.label ?? '') + '...'\"\r\n          [(ngModel)]=\"searchTerm\"\r\n          [attr.aria-label]=\"searchPlaceholderPrefix + ' ' + (activeCategory?.label ?? '')\"\r\n        />\r\n      </div>\r\n\r\n      <!-- Select All -->\r\n      <button\r\n        class=\"ieeesa-filter-popover__select-all\"\r\n        (click)=\"onSelectAll()\"\r\n        type=\"button\"\r\n      >\r\n        {{ isAllVisibleSelected ? deselectAllLabel : selectAllLabel }}\r\n      </button>\r\n\r\n      <!-- Options List -->\r\n      <div class=\"ieeesa-filter-popover__options-list\">\r\n        <div\r\n          *ngFor=\"let option of filteredOptions; trackBy: trackByOption\"\r\n          class=\"ieeesa-filter-popover__option\"\r\n        >\r\n          <mat-checkbox\r\n            [checked]=\"option.checked\"\r\n            (change)=\"onOptionToggle(option)\"\r\n            [attr.aria-label]=\"option.label\"\r\n            color=\"primary\"\r\n          >\r\n            {{ option.label }}\r\n          </mat-checkbox>\r\n        </div>\r\n        <div\r\n          *ngIf=\"filteredOptions.length === 0\"\r\n          class=\"ieeesa-filter-popover__no-results\"\r\n        >\r\n          {{ noResultsMessage }}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n\r\n  <!-- Footer -->\r\n  <div class=\"ieeesa-filter-popover__footer\">\r\n    <button\r\n      class=\"ieeesa-filter-popover__btn-reset\"\r\n      (click)=\"onReset()\"\r\n      type=\"button\"\r\n    >\r\n      {{ resetLabel }}\r\n    </button>\r\n    <button\r\n      class=\"ieeesa-filter-popover__btn-apply\"\r\n      (click)=\"onApply()\"\r\n      type=\"button\"\r\n    >\r\n      {{ applyLabel }}\r\n    </button>\r\n  </div>\r\n</div>\r\n","import { Component, Inject, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  MAT_DIALOG_DATA,\r\n  MatDialogRef,\r\n  MatDialogModule,\r\n} from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { PolicyConfirmationDialogData } from '../../models/policy-confirmation-dialog.model';\r\n\r\n/**\r\n * PolicyConfirmationDialogComponent is a reusable confirmation dialog that displays\r\n * a configurable title, body text, and Cancel/Confirm action buttons.\r\n * Used for the IEEE Data Access and Use Policy confirmation in the attendance export flow.\r\n *\r\n * Opens via `MatDialog.open(PolicyConfirmationDialogComponent, { data: PolicyConfirmationDialogData })`.\r\n * Returns `true` on confirm, `false` on cancel or close.\r\n *\r\n * @export\r\n * @class PolicyConfirmationDialogComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-policy-confirmation-dialog',\r\n  standalone: true,\r\n  imports: [CommonModule, MatDialogModule, MatButtonModule],\r\n  templateUrl: './policy-confirmation-dialog.component.html',\r\n  styleUrls: ['./policy-confirmation-dialog.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class PolicyConfirmationDialogComponent {\r\n  /** Text before the hyperlink */\r\n  bodyTextBefore = '';\r\n  /** Text after the hyperlink */\r\n  bodyTextAfter = '';\r\n\r\n  constructor(\r\n    @Inject(MAT_DIALOG_DATA)\r\n    // eslint-disable-next-line no-unused-vars\r\n    public data: PolicyConfirmationDialogData,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private dialogRef: MatDialogRef<PolicyConfirmationDialogComponent>\r\n  ) {\r\n    dialogRef.disableClose = true;\r\n    this.splitBodyText();\r\n  }\r\n\r\n  /**\r\n   * Splits the bodyText around the policyLinkText so the template can render\r\n   * the link portion as a hyperlink.\r\n   * @memberof PolicyConfirmationDialogComponent\r\n   */\r\n  private splitBodyText(): void {\r\n    if (this.data.policyUrl && this.data.policyLinkText) {\r\n      const index = this.data.bodyText.indexOf(this.data.policyLinkText);\r\n      if (index > -1) {\r\n        this.bodyTextBefore = this.data.bodyText.substring(0, index);\r\n        this.bodyTextAfter = this.data.bodyText.substring(\r\n          index + this.data.policyLinkText.length\r\n        );\r\n        return;\r\n      }\r\n    }\r\n    this.bodyTextBefore = this.data.bodyText;\r\n    this.bodyTextAfter = '';\r\n  }\r\n\r\n  /**\r\n   * Handles the Confirm button click — closes the dialog returning `true`.\r\n   * @memberof PolicyConfirmationDialogComponent\r\n   */\r\n  onConfirm(): void {\r\n    this.dialogRef.close(true);\r\n  }\r\n\r\n  /**\r\n   * Handles the Cancel button click — closes the dialog returning `false`.\r\n   * @memberof PolicyConfirmationDialogComponent\r\n   */\r\n  onCancel(): void {\r\n    this.dialogRef.close(false);\r\n  }\r\n\r\n  /**\r\n   * Handles the X (close) button click — closes the dialog returning `false`.\r\n   * @memberof PolicyConfirmationDialogComponent\r\n   */\r\n  onClose(): void {\r\n    this.dialogRef.close(false);\r\n  }\r\n}\r\n","<div class=\"ieeesa-policy-confirmation-dialog\">\r\n  <div class=\"ieeesa-policy-confirmation-dialog__header\">\r\n    <h2 class=\"ieeesa-policy-confirmation-dialog__title\">{{ data.title }}</h2>\r\n    <button\r\n      class=\"ieeesa-policy-confirmation-dialog__close-btn\"\r\n      [attr.aria-label]=\"'Close ' + data.title + ' dialog'\"\r\n      (click)=\"onClose()\"\r\n    >\r\n      <i class=\"fa-solid fa-xmark\"></i>\r\n    </button>\r\n  </div>\r\n  <hr class=\"ieeesa-policy-confirmation-dialog__divider\" />\r\n  <div class=\"ieeesa-policy-confirmation-dialog__body\">\r\n    <ng-container *ngIf=\"data.policyUrl && data.policyLinkText && bodyTextBefore !== data.bodyText; else plainText\">\r\n      {{ bodyTextBefore }}<a\r\n        [href]=\"data.policyUrl\"\r\n        target=\"_blank\"\r\n        rel=\"noopener noreferrer\"\r\n        class=\"ieeesa-policy-confirmation-dialog__policy-link\"\r\n        [attr.aria-label]=\"data.policyLinkText + ' (opens in new tab)'\"\r\n      >{{ data.policyLinkText }}</a>{{ bodyTextAfter }}\r\n    </ng-container>\r\n    <ng-template #plainText>{{ data.bodyText }}</ng-template>\r\n  </div>\r\n  <hr class=\"ieeesa-policy-confirmation-dialog__divider\" />\r\n  <div class=\"ieeesa-policy-confirmation-dialog__footer\">\r\n    <button\r\n      mat-button\r\n      class=\"mat-tertiary-button ieeesa-policy-confirmation-dialog__btn-cancel\"\r\n      [attr.aria-label]=\"data.cancelLabel\"\r\n      (click)=\"onCancel()\"\r\n    >\r\n      {{ data.cancelLabel }}\r\n    </button>\r\n    <button\r\n      mat-button\r\n      class=\"mat-primary-button ieeesa-policy-confirmation-dialog__btn-confirm\"\r\n      [attr.aria-label]=\"data.confirmLabel\"\r\n      (click)=\"onConfirm()\"\r\n    >\r\n      {{ data.confirmLabel }}\r\n    </button>\r\n  </div>\r\n</div>\r\n","import { Component, Inject, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n  MAT_DIALOG_DATA,\r\n  MatDialogRef,\r\n  MatDialogModule,\r\n} from '@angular/material/dialog';\r\nimport { ExportSuccessDialogData } from '../../models/export-success-dialog.model';\r\n\r\n/**\r\n * ExportSuccessDialogComponent displays a centered success message after\r\n * a file export completes. Shows the filename in bold and a single \"Close\" button.\r\n *\r\n * Opens via `MatDialog.open(ExportSuccessDialogComponent, { data: ExportSuccessDialogData })`.\r\n *\r\n * @export\r\n * @class ExportSuccessDialogComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-export-success-dialog',\r\n  standalone: true,\r\n  imports: [CommonModule, MatDialogModule],\r\n  templateUrl: './export-success-dialog.component.html',\r\n  styleUrls: ['./export-success-dialog.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ExportSuccessDialogComponent {\r\n  constructor(\r\n    @Inject(MAT_DIALOG_DATA)\r\n    // eslint-disable-next-line no-unused-vars\r\n    public data: ExportSuccessDialogData,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private dialogRef: MatDialogRef<ExportSuccessDialogComponent>\r\n  ) {}\r\n\r\n  /**\r\n   * Handles the Close button click — closes the dialog.\r\n   * @memberof ExportSuccessDialogComponent\r\n   */\r\n  onClose(): void {\r\n    this.dialogRef.close();\r\n  }\r\n}\r\n","<div class=\"ieeesa-export-success-dialog\">\r\n  <div class=\"ieeesa-export-success-dialog__content\">\r\n    <span class=\"ieeesa-export-success-dialog__message\">{{ data.message }}</span>\r\n    <span class=\"ieeesa-export-success-dialog__filename\">{{ data.filename }}</span>\r\n  </div>\r\n  <div class=\"ieeesa-export-success-dialog__actions\">\r\n    <button\r\n      class=\"ieeesa-export-success-dialog__btn-close\"\r\n      [attr.aria-label]=\"data.closeLabel\"\r\n      (click)=\"onClose()\"\r\n    >\r\n      {{ data.closeLabel }}\r\n    </button>\r\n  </div>\r\n</div>\r\n","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport {\r\n  HomeGroupSelectionData,\r\n  HomeGroupSelectionResult,\r\n  QualifyingGroup,\r\n} from '../../models/home-group-selection.model';\r\n\r\n/**\r\n * HomeGroupSelectionComponent is a generic, reusable dialog for selecting a\r\n * home Working Group to receive reciprocal attendance credit (SP3M-18).\r\n *\r\n * It is shown when an attendee (or an admin acting on their behalf) qualifies\r\n * for reciprocal credit in more than one home Working Group and must choose\r\n * which one should receive the credit. The first qualifying group is\r\n * pre-selected so Submit is enabled immediately; Submit is disabled only if no\r\n * group is selected.\r\n *\r\n * This component is feature-agnostic — all display text is supplied by the\r\n * caller via MAT_DIALOG_DATA (HomeGroupSelectionData). It performs no API calls;\r\n * it collects the selection and returns it so the caller can re-submit.\r\n *\r\n * Footer:\r\n * - Submit → closes with { homeGroupId }\r\n * - Cancel → closes with null (caller aborts)\r\n *\r\n * @export\r\n * @class HomeGroupSelectionComponent\r\n * @implements {OnInit}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-home-group-selection',\r\n  standalone: true,\r\n  imports: [CommonModule, FormsModule, MatDialogModule, MatButtonModule],\r\n  templateUrl: './home-group-selection.component.html',\r\n  styleUrls: ['./home-group-selection.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class HomeGroupSelectionComponent implements OnInit {\r\n  /** Qualifying home groups the user must choose between. */\r\n  qualifyingGroups: QualifyingGroup[] = [];\r\n  /** The currently selected home group id. */\r\n  selectedGroupId = '';\r\n\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    @Inject(MAT_DIALOG_DATA) public data: HomeGroupSelectionData,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private dialogRef: MatDialogRef<HomeGroupSelectionComponent>\r\n  ) {\r\n    // Non-dismissable: user must explicitly choose Submit or Cancel.\r\n    this.dialogRef.disableClose = true;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.qualifyingGroups = this.data?.qualifyingGroups ?? [];\r\n\r\n    // Pre-select the first qualifying group (matches the design + enables Submit).\r\n    if (this.qualifyingGroups.length > 0) {\r\n      this.selectedGroupId = this.qualifyingGroups[0].groupId;\r\n    }\r\n  }\r\n\r\n  /**\r\n   * trackBy for the qualifying groups list.\r\n   * @param {number} _index\r\n   * @param {QualifyingGroup} group\r\n   * @return {string}\r\n   * @memberof HomeGroupSelectionComponent\r\n   */\r\n  trackByGroupId(_index: number, group: QualifyingGroup): string {\r\n    return group.groupId;\r\n  }\r\n\r\n  /**\r\n   * Whether Submit should be enabled — true once a group is selected.\r\n   * @return {boolean}\r\n   * @memberof HomeGroupSelectionComponent\r\n   */\r\n  get canSubmit(): boolean {\r\n    return !!this.selectedGroupId;\r\n  }\r\n\r\n  /**\r\n   * Cancel handler — closes with null so the caller aborts.\r\n   * @memberof HomeGroupSelectionComponent\r\n   */\r\n  onCancel(): void {\r\n    this.dialogRef.close(null);\r\n  }\r\n\r\n  /**\r\n   * Submit handler — closes with the selected home group id.\r\n   * No-ops if no group is selected.\r\n   * @memberof HomeGroupSelectionComponent\r\n   */\r\n  onSubmit(): void {\r\n    if (!this.canSubmit) {\r\n      return;\r\n    }\r\n    const result: HomeGroupSelectionResult = { homeGroupId: this.selectedGroupId };\r\n    this.dialogRef.close(result);\r\n  }\r\n}\r\n","<div class=\"ieeesa-home-group-selection\">\r\n\r\n  <!-- Header -->\r\n  <div class=\"ieeesa-home-group-selection__header\" *ngIf=\"data?.title\">\r\n    <h2 class=\"ieeesa-home-group-selection__title ieeesa-headline-sm-24\">\r\n      {{ data.title }}\r\n    </h2>\r\n    <button\r\n      type=\"button\"\r\n      class=\"ieeesa-home-group-selection__close-btn\"\r\n      aria-label=\"Close\"\r\n      (click)=\"onCancel()\"\r\n    >\r\n      <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\r\n    </button>\r\n  </div>\r\n\r\n  <!-- Body -->\r\n  <div class=\"ieeesa-home-group-selection__body\">\r\n\r\n    <p class=\"ieeesa-home-group-selection__message ieeesa-body-lg-16\" *ngIf=\"data?.messageLine1\">\r\n      {{ data.messageLine1 }}\r\n    </p>\r\n    <p\r\n      class=\"ieeesa-home-group-selection__message ieeesa-body-lg-16\"\r\n      *ngIf=\"data?.messageLine2\"\r\n    >\r\n      {{ data.messageLine2 }}\r\n    </p>\r\n\r\n    <!-- Qualifying home groups radio list -->\r\n    <div\r\n      class=\"ieeesa-home-group-selection__options\"\r\n      role=\"radiogroup\"\r\n      [attr.aria-label]=\"data?.groupOptionAriaLabel\"\r\n    >\r\n      <label\r\n        *ngFor=\"let group of qualifyingGroups; trackBy: trackByGroupId\"\r\n        class=\"ieeesa-home-group-selection__option\"\r\n        [class.ieeesa-home-group-selection__option--selected]=\"selectedGroupId === group.groupId\"\r\n      >\r\n        <input\r\n          type=\"radio\"\r\n          name=\"homeGroup\"\r\n          class=\"ieeesa-home-group-selection__radio\"\r\n          [value]=\"group.groupId\"\r\n          [(ngModel)]=\"selectedGroupId\"\r\n        />\r\n        <span class=\"ieeesa-home-group-selection__option-label ieeesa-body-lg-16-bold\">\r\n          {{ group.groupName }}\r\n        </span>\r\n      </label>\r\n    </div>\r\n\r\n    <!-- Info banner -->\r\n    <div class=\"ieeesa-home-group-selection__info\" *ngIf=\"data?.infoText\">\r\n      <span class=\"ieeesa-home-group-selection__info-icon\" aria-hidden=\"true\">&#9432;</span>\r\n      <span class=\"ieeesa-home-group-selection__info-text ieeesa-body-sm-14\">\r\n        {{ data.infoText }}\r\n      </span>\r\n    </div>\r\n\r\n  </div>\r\n\r\n  <!-- Footer -->\r\n  <div class=\"ieeesa-home-group-selection__footer\">\r\n    <button\r\n      type=\"button\"\r\n      class=\"mat-mdc-button mat-mdc-button-base mat-tertiary-button\"\r\n      (click)=\"onCancel()\"\r\n    >\r\n      {{ data?.cancelLabel }}\r\n    </button>\r\n    <button\r\n      type=\"button\"\r\n      class=\"mat-mdc-button mat-mdc-button-base mat-primary-button\"\r\n      [disabled]=\"!canSubmit\"\r\n      (click)=\"onSubmit()\"\r\n    >\r\n      {{ data?.submitLabel }}\r\n    </button>\r\n  </div>\r\n\r\n</div>\r\n","import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport {\r\n  CreditSelectionData,\r\n  CreditSelectionEntry,\r\n  CreditSelectionResult,\r\n  CreditSelectionTimeslotOption,\r\n} from '../../models/credit-selection.model';\r\n\r\n/**\r\n * CreditSelectionComponent is a generic, reusable dialog shown when the\r\n * attendance log-in APIs (Pass 1) return a non-null creditSelectionPrompt.\r\n *\r\n * For each timeslot the user must choose which meeting receives attendance\r\n * credit — the prior (credit-holding) meeting or the target meeting being\r\n * attended. The prior meeting is pre-selected per timeslot. Save is enabled\r\n * only when every timeslot has a selection (the backend rejects partial\r\n * submissions).\r\n *\r\n * Footer (SP3M-677 — no Cancel button; the dialog is non-dismissable and a\r\n * valid meeting is always pre-selected, so credit is resolved via Save):\r\n * - Save → closes with { creditSelections: [{ timeslotId, creditedMeetingId }] }\r\n *\r\n * This component is feature-agnostic — all display text is supplied by the\r\n * caller via MAT_DIALOG_DATA (CreditSelectionData). It performs no API calls;\r\n * it collects selections and returns them so the caller can re-submit Pass 2.\r\n * @export\r\n * @class CreditSelectionComponent\r\n * @implements {OnInit}\r\n */\r\n@Component({\r\n  selector: 'ieeesa-credit-selection',\r\n  standalone: true,\r\n  imports: [CommonModule, FormsModule, MatDialogModule, MatButtonModule],\r\n  templateUrl: './credit-selection.component.html',\r\n  styleUrls: ['./credit-selection.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CreditSelectionComponent implements OnInit {\r\n  /** Timeslots the user must resolve, each with prior/target meeting options. */\r\n  timeslotOptions: CreditSelectionTimeslotOption[] = [];\r\n  /** Map of timeslotId → selected creditedMeetingId. */\r\n  selections: Record<string, string> = {};\r\n\r\n  constructor(\r\n    // eslint-disable-next-line no-unused-vars\r\n    @Inject(MAT_DIALOG_DATA) public data: CreditSelectionData,\r\n    // eslint-disable-next-line no-unused-vars\r\n    private dialogRef: MatDialogRef<CreditSelectionComponent>\r\n  ) {\r\n    // Non-dismissable: user must explicitly choose Save.\r\n    this.dialogRef.disableClose = true;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.timeslotOptions = this.data?.timeslotOptions ?? [];\r\n\r\n    // Default each timeslot's selection to the prior (credit-holding) meeting.\r\n    // Matches the design (prior pre-selected) and the \"credit stays on prior\"\r\n    // fallback, and enables Save immediately.\r\n    this.timeslotOptions.forEach((ts) => {\r\n      this.selections[ts.timeslotId] = ts.priorMeeting.meetingId;\r\n    });\r\n  }\r\n\r\n  /**\r\n   * trackBy for the timeslot list.\r\n   * @param {number} _index\r\n   * @param {CreditSelectionTimeslotOption} timeslot\r\n   * @return {string}\r\n   * @memberof CreditSelectionComponent\r\n   */\r\n  trackByTimeslotId(_index: number, timeslot: CreditSelectionTimeslotOption): string {\r\n    return timeslot.timeslotId;\r\n  }\r\n\r\n  /**\r\n   * Whether Save should be enabled — true once every timeslot has a selection.\r\n   * @return {boolean}\r\n   * @memberof CreditSelectionComponent\r\n   */\r\n  get canSave(): boolean {\r\n    return (\r\n      this.timeslotOptions.length > 0 &&\r\n      this.timeslotOptions.every((ts) => !!this.selections[ts.timeslotId])\r\n    );\r\n  }\r\n\r\n  /**\r\n   * Save handler — builds one entry per timeslot and closes with the result.\r\n   * No-ops if any timeslot is unselected (backend rejects partial submissions).\r\n   * @memberof CreditSelectionComponent\r\n   */\r\n  onSave(): void {\r\n    if (!this.canSave) {\r\n      return;\r\n    }\r\n    const creditSelections: CreditSelectionEntry[] = this.timeslotOptions.map((ts) => ({\r\n      timeslotId: ts.timeslotId,\r\n      creditedMeetingId: this.selections[ts.timeslotId],\r\n    }));\r\n    const result: CreditSelectionResult = { creditSelections };\r\n    this.dialogRef.close(result);\r\n  }\r\n}\r\n","<div class=\"ieeesa-credit-selection\">\r\n\r\n  <!-- Header -->\r\n  <div class=\"ieeesa-credit-selection__header\" *ngIf=\"data?.title\">\r\n    <h2 class=\"ieeesa-credit-selection__title ieeesa-headline-sm-24\">\r\n      {{ data.title }}\r\n    </h2>\r\n  </div>\r\n\r\n  <!-- Body -->\r\n  <div class=\"ieeesa-credit-selection__body\">\r\n\r\n    <p class=\"ieeesa-credit-selection__message\" *ngIf=\"data?.messageLine1\">\r\n      {{ data.messageLine1 }}\r\n    </p>\r\n    <p\r\n      class=\"ieeesa-credit-selection__message ieeesa-credit-selection__message--secondary\"\r\n      *ngIf=\"data?.messageLine2\"\r\n    >\r\n      {{ data.messageLine2 }}\r\n    </p>\r\n\r\n    <!-- One radio group per timeslot -->\r\n    <div\r\n      *ngFor=\"let timeslot of timeslotOptions; trackBy: trackByTimeslotId\"\r\n      class=\"ieeesa-credit-selection__timeslot\"\r\n    >\r\n      <!-- Timeslot label shown only when resolving multiple timeslots -->\r\n      <p\r\n        *ngIf=\"timeslotOptions.length > 1\"\r\n        class=\"ieeesa-credit-selection__timeslot-name ieeesa-body-sm-14\"\r\n      >\r\n        {{ timeslot.timeslotName }}\r\n      </p>\r\n\r\n      <div\r\n        class=\"ieeesa-credit-selection__options\"\r\n        role=\"radiogroup\"\r\n        [attr.aria-label]=\"data?.meetingOptionAriaLabel\"\r\n      >\r\n        <!-- Prior (credit-holding) meeting -->\r\n        <label class=\"ieeesa-credit-selection__option\">\r\n          <input\r\n            type=\"radio\"\r\n            [name]=\"'creditMeeting-' + timeslot.timeslotId\"\r\n            class=\"ieeesa-credit-selection__radio\"\r\n            [value]=\"timeslot.priorMeeting.meetingId\"\r\n            [(ngModel)]=\"selections[timeslot.timeslotId]\"\r\n          />\r\n          <span class=\"ieeesa-credit-selection__option-label ieeesa-body-lg-16-bold\">\r\n            {{ timeslot.priorMeeting.meetingName }}\r\n          </span>\r\n        </label>\r\n\r\n        <!-- Target meeting being attended -->\r\n        <label class=\"ieeesa-credit-selection__option\">\r\n          <input\r\n            type=\"radio\"\r\n            [name]=\"'creditMeeting-' + timeslot.timeslotId\"\r\n            class=\"ieeesa-credit-selection__radio\"\r\n            [value]=\"timeslot.targetMeeting.meetingId\"\r\n            [(ngModel)]=\"selections[timeslot.timeslotId]\"\r\n          />\r\n          <span class=\"ieeesa-credit-selection__option-label ieeesa-body-lg-16-bold\">\r\n            {{ timeslot.targetMeeting.meetingName }}\r\n          </span>\r\n        </label>\r\n      </div>\r\n    </div>\r\n\r\n  </div>\r\n\r\n  <!-- Footer -->\r\n  <div class=\"ieeesa-credit-selection__footer\">\r\n    <button\r\n      type=\"button\"\r\n      class=\"mat-mdc-button mat-mdc-button-base mat-primary-button\"\r\n      [disabled]=\"!canSave\"\r\n      (click)=\"onSave()\"\r\n    >\r\n      {{ data?.saveLabel }}\r\n    </button>\r\n  </div>\r\n\r\n</div>\r\n","export interface AccordionInfo {\r\n  id: number | string;\r\n  title: string;\r\n  isDisabled: boolean;\r\n}\r\nexport enum AccordionDetails {\r\n  // eslint-disable-next-line no-unused-vars\r\n  BASIC_DETAILS = 1,\r\n  // eslint-disable-next-line no-unused-vars\r\n  ROLES_AND_PERMISSIONS = 2,\r\n  // eslint-disable-next-line no-unused-vars\r\n  GROUP_TYPES = 3,\r\n  // eslint-disable-next-line no-unused-vars\r\n  MEETINGS_AND_EVENTS = 4,\r\n  // eslint-disable-next-line no-unused-vars\r\n  BALLOTS = 5,\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nexport enum AllowedFileTypes {\r\n  JPG = 'jpg',\r\n  PNG = 'png',\r\n  SVG = 'svg',\r\n}","export enum LinkType {\r\n  // eslint-disable-next-line no-unused-vars\r\n  ADD_MEETING = 'ADD_MEETING',\r\n}\r\n","/**\r\n * Available export file formats for attendance data\r\n */\r\n/* eslint-disable no-unused-vars */\r\nexport enum ExportFormat {\r\n  CSV = 'csv',\r\n  EXCEL = 'xls',\r\n}\r\n\r\n/**\r\n * Configuration option for a format selection card in the export format popover\r\n */\r\nexport interface ExportFormatOption {\r\n  label: string;\r\n  value: ExportFormat;\r\n  ariaLabel: string;\r\n}\r\n","/**\r\n * Shared models for the reusable Home Group Selection dialog (SP3M-18).\r\n *\r\n * The dialog is generic and feature-agnostic: all display text is supplied by\r\n * the calling feature library (e.g. attendance, attendees) via MAT_DIALOG_DATA,\r\n * so this presentation-layer component never depends on any feature's constants.\r\n */\r\n\r\n/**\r\n * A single selectable Working Group in the home-group selection dialog.\r\n * Mirrors the backend HomeGroupOption ({ groupId, groupName }).\r\n */\r\nexport interface QualifyingGroup {\r\n  groupId: string;\r\n  groupName: string;\r\n}\r\n\r\n/**\r\n * The homeGroupSelectionPrompt object returned by the attendance log-in APIs\r\n * when the user qualifies for reciprocal credit in more than one home group.\r\n * Mirrors HomeGroupSelectionPromptResponse from the attendee-api.\r\n */\r\nexport interface HomeGroupSelectionPrompt {\r\n  eventId: string;\r\n  qualifyingGroups: QualifyingGroup[];\r\n}\r\n\r\n/**\r\n * Data passed to the HomeGroupSelectionComponent via MAT_DIALOG_DATA.\r\n * All text is provided by the caller so the component stays generic.\r\n */\r\nexport interface HomeGroupSelectionData {\r\n  /** Qualifying home groups the user must choose between. */\r\n  qualifyingGroups: QualifyingGroup[];\r\n  /** Dialog title. */\r\n  title: string;\r\n  /** First instruction paragraph (context). */\r\n  messageLine1: string;\r\n  /** Second instruction paragraph (the \"please select\" prompt). */\r\n  messageLine2: string;\r\n  /** Informational note shown in the footer banner. */\r\n  infoText: string;\r\n  /** Submit button label. */\r\n  submitLabel: string;\r\n  /** Cancel button label. */\r\n  cancelLabel: string;\r\n  /** Accessibility label for the radio group. */\r\n  groupOptionAriaLabel: string;\r\n}\r\n\r\n/**\r\n * Result returned by HomeGroupSelectionComponent when the user clicks Submit.\r\n * `null` is returned when the user cancels.\r\n */\r\nexport interface HomeGroupSelectionResult {\r\n  homeGroupId: string;\r\n}\r\n","/**\r\n * Shared models for the reusable Credit Selection dialog.\r\n *\r\n * The dialog is generic and feature-agnostic: all display text is supplied by\r\n * the calling feature library (e.g. attendance, attendees) via MAT_DIALOG_DATA,\r\n * so this presentation-layer component never depends on any feature's constants.\r\n */\r\n\r\n/**\r\n * A single selectable meeting option shown in the credit-selection dialog.\r\n * Represents either the prior (credit-holding) meeting or the target meeting\r\n * being attended, as returned per timeslot by the backend credit prompt.\r\n */\r\nexport interface CreditSelectionMeetingOption {\r\n  meetingId: string;\r\n  meetingName: string;\r\n}\r\n\r\n/**\r\n * A single timeslot the user must resolve credit for. Contains the prior\r\n * (credit-holding) meeting and the target meeting being attended. The user\r\n * picks exactly one of these two per timeslot.\r\n * Mirrors creditSelectionPrompt.timeslotOptions[] from the attendance log-in APIs.\r\n */\r\nexport interface CreditSelectionTimeslotOption {\r\n  timeslotId: string;\r\n  timeslotName: string;\r\n  priorMeeting: CreditSelectionMeetingOption;\r\n  targetMeeting: CreditSelectionMeetingOption;\r\n}\r\n\r\n/**\r\n * The creditSelectionPrompt object returned by Pass 1 of the attendance log-in\r\n * APIs. When present (non-null), the credit-selection dialog must be shown\r\n * before the attendance can be finalized (Pass 2).\r\n */\r\nexport interface CreditSelectionPrompt {\r\n  eventId: string;\r\n  timeslotOptions: CreditSelectionTimeslotOption[];\r\n}\r\n\r\n/**\r\n * Data passed to the CreditSelectionComponent via MAT_DIALOG_DATA.\r\n * All text is provided by the caller so the component stays generic.\r\n */\r\nexport interface CreditSelectionData {\r\n  /** Timeslots the user must resolve, each with prior/target meeting options. */\r\n  timeslotOptions: CreditSelectionTimeslotOption[];\r\n  /** Dialog title. */\r\n  title: string;\r\n  /** First instruction paragraph (context — why credit must be chosen). */\r\n  messageLine1: string;\r\n  /** Second instruction paragraph (the actual \"please select\" prompt). */\r\n  messageLine2: string;\r\n  /** Save button label. */\r\n  saveLabel: string;\r\n  /** Accessibility label for each timeslot's radio group. */\r\n  meetingOptionAriaLabel: string;\r\n}\r\n\r\n/**\r\n * One credit selection the user made — which meeting should receive credit for\r\n * a given timeslot. Sent in Pass 2 as creditSelections[].\r\n */\r\nexport interface CreditSelectionEntry {\r\n  timeslotId: string;\r\n  creditedMeetingId: string;\r\n}\r\n\r\n/**\r\n * Result returned by CreditSelectionComponent when the user clicks Save.\r\n * Contains one entry per timeslot.\r\n */\r\nexport interface CreditSelectionResult {\r\n  creditSelections: CreditSelectionEntry[];\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * TimezoneFormatPipe formats a time zone string for display by replacing every\r\n * underscore in the raw IANA identifier with a space. This is a display-only\r\n * transform: for example `(UTC-04:00) America/New_York` is shown as\r\n * `(UTC-04:00) America/New York`. The underlying stored value (which the backend\r\n * expects with underscores) is never modified. Null, undefined, or empty inputs\r\n * return an empty string so templates can apply their own fallback.\r\n * @export\r\n * @class TimezoneFormatPipe\r\n * @implements {PipeTransform}\r\n */\r\n@Pipe({\r\n  name: 'timezoneFormat',\r\n  standalone: true,\r\n})\r\nexport class TimezoneFormatPipe implements PipeTransform {\r\n  /**\r\n   * Replaces underscores with spaces in a time zone string for display.\r\n   * @param {(string | null | undefined)} value - The raw time zone string, e.g. `(UTC-04:00) America/New_York`.\r\n   * @return {string} The display-friendly time zone with spaces instead of underscores, or an empty string.\r\n   * @memberof TimezoneFormatPipe\r\n   */\r\n  transform(value: string | null | undefined): string {\r\n    return (value ?? '').replace(/_/g, ' ');\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { FormUtilityService } from './services/form-utility.service';\r\nimport { DatepickerService } from './services/datepicker.service';\r\n\r\n@NgModule({\r\n  declarations: [],\r\n  imports: [],\r\n  exports: [],\r\n  providers: [DatepickerService, FormUtilityService],\r\n})\r\nexport class PresentationModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\n\r\nexport interface StepConfig {\r\n  id: number;\r\n  label: string;\r\n  isVisible: boolean;\r\n  isCompleted: boolean;\r\n  isDisabled: boolean;\r\n}\r\n\r\n/**\r\n * StepperComponent is a reusable horizontal stepper for multi-step workflows.\r\n * Displays numbered step indicators and emits step change events.\r\n * @export\r\n * @class StepperComponent\r\n */\r\n@Component({\r\n  selector: 'ieeesa-stepper',\r\n  standalone: true,\r\n  imports: [CommonModule, ScrollingModule],\r\n  templateUrl: './stepper.component.html',\r\n  styleUrls: ['./stepper.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class StepperComponent {\r\n  @Input() steps: StepConfig[] = [];\r\n  @Input() activeStepIndex = 0;\r\n  @Output() stepChange = new EventEmitter<number>();\r\n\r\n  /**\r\n   * Returns only the visible steps.\r\n   * @readonly\r\n   * @type {StepConfig[]}\r\n   * @memberof StepperComponent\r\n   */\r\n  get visibleSteps(): StepConfig[] {\r\n    return this.steps.filter((step) => step.isVisible);\r\n  }\r\n\r\n  /**\r\n   * Navigates to a step if it's not disabled.\r\n   * Emits stepChange to let the parent update activeStepIndex (parent is source of truth).\r\n   * @param {number} index - index within visible steps\r\n   * @memberof StepperComponent\r\n   */\r\n  goToStep(index: number): void {\r\n    const step = this.visibleSteps[index];\r\n    if (step && !step.isDisabled) {\r\n      this.stepChange.emit(index);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Moves to the next step.\r\n   * @memberof StepperComponent\r\n   */\r\n  nextStep(): void {\r\n    if (this.activeStepIndex < this.visibleSteps.length - 1) {\r\n      this.goToStep(this.activeStepIndex + 1);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Moves to the previous step.\r\n   * @memberof StepperComponent\r\n   */\r\n  previousStep(): void {\r\n    if (this.activeStepIndex > 0) {\r\n      this.goToStep(this.activeStepIndex - 1);\r\n    }\r\n  }\r\n}\r\n","<div class=\"ieeesa-stepper\">\r\n  <div class=\"ieeesa-stepper__header\">\r\n    <ng-container *ngFor=\"let step of visibleSteps; let i = index; let last = last\">\r\n      <div\r\n        class=\"ieeesa-stepper__step\"\r\n        [class.ieeesa-stepper__step--active]=\"i === activeStepIndex\"\r\n        [class.ieeesa-stepper__step--completed]=\"step.isCompleted\"\r\n        [class.ieeesa-stepper__step--disabled]=\"step.isDisabled\"\r\n        [attr.aria-label]=\"step.label\"\r\n        role=\"presentation\"\r\n      >\r\n        <span class=\"ieeesa-stepper__step-number\">{{ i + 1 }}</span>\r\n        <span class=\"ieeesa-stepper__step-label\">{{ step.label }}</span>\r\n      </div>\r\n      <div *ngIf=\"!last\" class=\"ieeesa-stepper__connector\"></div>\r\n    </ng-container>\r\n  </div>\r\n  <div class=\"ieeesa-stepper__content\" cdkScrollable>\r\n    <ng-content></ng-content>\r\n  </div>\r\n</div>\r\n","/*\r\n * Public API Surface of presentation\r\n */\r\nexport * from './lib/components/autocomplete/autocomplete.component';\r\nexport * from './lib/components/checkbox/checkbox.component';\r\nexport * from './lib/components/date-picker/date-picker.component';\r\nexport * from './lib/components/date-picker-header/date-picker-header.component';\r\nexport * from './lib/components/dynamic-form/dynamic-form.component';\r\nexport * from './lib/components/footer/footer.component';\r\nexport * from './lib/components/form-error/form-error.component';\r\nexport * from './lib/components/form-support-text/form-support-text.component';\r\nexport * from './lib/components/header/header.component';\r\nexport * from './lib/components/icon-button/icon-button.component';\r\nexport * from './lib/components/input/input.component';\r\nexport * from './lib/components/legend/legend.component';\r\nexport * from './lib/components/list/list.component';\r\nexport * from './lib/components/menu/menu.component';\r\nexport * from './lib/components/modal/modal.component';\r\nexport * from './lib/components/modal-confirmation/modal-confirmation.component';\r\nexport * from './lib/components/modal-info/modal-info.component';\r\nexport * from './lib/components/navigation-menu/navigation-menu.component';\r\nexport * from './lib/components/notification/notification.component';\r\nexport * from './lib/components/radio/radio.component';\r\nexport * from './lib/components/search/search.component';\r\nexport * from './lib/components/select/select.component';\r\nexport * from './lib/components/text-area/text-area.component';\r\nexport * from './lib/components/toggle-button/toggle-button.component';\r\nexport * from './lib/components/welcome/welcome.component';\r\nexport * from './lib/components/chips/chips.component';\r\nexport * from './lib/components/filter/filter.component';\r\nexport * from './lib/components/loader/loader.component';\r\nexport * from './lib/components/data-table/data-table.component';\r\nexport * from './lib/components/breadcrumb/breadcrumb.component';\r\nexport * from './lib/components/tile/tile.component';\r\nexport * from './lib/components/time-picker/time-picker.component';\r\nexport * from './lib/components/tabs/tabs.component';\r\nexport * from './lib/components/slide-toggle/slide-toggle.component';\r\nexport * from './lib/components/card/card.component';\r\nexport * from './lib/components/color-picker/color-picker.component';\r\nexport * from './lib/components/file-upload/file-upload.component';\r\nexport * from './lib/components/file-download/file-download.component';\r\nexport * from './lib/components/accordion/accordion.component';\r\nexport * from './lib/components/inactive-tenant/inactive-tenant.component';\r\nexport * from './lib/components/image-preview/image-preview.component';\r\nexport * from './lib/components/rich-text-editor/rich-text-editor.component';\r\nexport * from './lib/components/multi-select-autocomplete/multi-select-autocomplete.component';\r\nexport * from './lib/components/export-format-popover/export-format-popover.component';\r\nexport * from './lib/components/filter-popover/filter-popover.component';\r\nexport * from './lib/components/policy-confirmation-dialog/policy-confirmation-dialog.component';\r\nexport * from './lib/components/export-success-dialog/export-success-dialog.component';\r\nexport * from './lib/components/home-group-selection/home-group-selection.component';\r\nexport * from './lib/components/credit-selection/credit-selection.component';\r\n\r\nexport * from './lib/directives/dynamic-form-field/dynamic-form-field.directive';\r\nexport * from './lib/directives/set-background/set-background.directive';\r\nexport * from './lib/directives/text-truncated/text-truncated.directive';\r\nexport * from './lib/directives/file-upload/file-upload.directive';\r\nexport * from './lib/directives/observe-dom-change/observe-dom-change.directive';\r\n\r\nexport * from './lib/models/accordion-info.model';\r\nexport * from './lib/models/align-browsed-files.model';\r\nexport * from './lib/models/allowed-file-types.model';\r\nexport * from './lib/models/app-config-info.model';\r\nexport * from './lib/models/autocomplete-option.model';\r\nexport * from './lib/models/calendar.model';\r\nexport * from './lib/models/custom-properties.model';\r\nexport * from './lib/models/date-picker.model';\r\nexport * from './lib/models/download-file.model';\r\nexport * from './lib/models/event-emit-type.model';\r\nexport * from './lib/models/field-config.model';\r\nexport * from './lib/models/footer-config.model';\r\nexport * from './lib/models/form-control-types.model';\r\nexport * from './lib/models/form-field.model';\r\nexport * from './lib/models/form-grid.model';\r\nexport * from './lib/models/form.model';\r\nexport * from './lib/models/header-config.model';\r\nexport * from './lib/models/legend.model';\r\nexport * from './lib/models/link-type.model';\r\nexport * from './lib/models/list-item.model';\r\nexport * from './lib/models/menu.model';\r\nexport * from './lib/models/navigation-menu.model';\r\nexport * from './lib/models/radio-option.model';\r\nexport * from './lib/models/search.model';\r\nexport * from './lib/models/select-opened-state.model';\r\nexport * from './lib/models/selected-date.model';\r\nexport * from './lib/models/selected-time.model';\r\nexport * from './lib/models/tab.model';\r\nexport * from './lib/models/toggle-button.model';\r\nexport * from './lib/models/chip-option.model';\r\nexport * from './lib/models/paginator-config.model';\r\nexport * from './lib/models/table-actions.model';\r\nexport * from './lib/models/table-schema.model';\r\nexport * from './lib/models/breadcrumb.model';\r\nexport * from './lib/models/tile.model';\r\nexport * from './lib/models/file-upload-response.model';\r\nexport * from './lib/models/file-upload-status.model';\r\nexport * from './lib/models/filters-options.model';\r\nexport * from './lib/models/profile-menu.model';\r\nexport * from './lib/models/slide-toggle-options.model';\r\nexport * from './lib/models/button-type.model';\r\nexport * from './lib/models/card-button.model';\r\nexport * from './lib/models/card-info.model';\r\nexport * from './lib/models/color-format.model';\r\nexport * from './lib/models/file-download-config.model';\r\nexport * from './lib/models/file-info.model';\r\nexport * from './lib/models/file-upload-payload-model';\r\nexport * from './lib/models/file-upload-presigned-url-res.model';\r\nexport * from './lib/models/file-upload-response.model';\r\nexport * from './lib/models/inactive-tenant.model';\r\nexport * from './lib/models/table-column-menu-info.model';\r\nexport * from './lib/models/export-format-popover.model';\r\nexport * from './lib/models/filter-popover.model';\r\nexport * from './lib/models/policy-confirmation-dialog.model';\r\nexport * from './lib/models/export-success-dialog.model';\r\nexport * from './lib/models/home-group-selection.model';\r\nexport * from './lib/models/credit-selection.model';\r\n\r\nexport * from './lib/services/datepicker.service';\r\nexport * from './lib/services/form-utility.service';\r\nexport * from './lib/services/file-upload.service';\r\nexport * from './lib/services/break-point-observer.service';\r\nexport * from './lib/pipes/safe.pipe';\r\nexport * from './lib/pipes/timezone-format.pipe';\r\n\r\nexport * from './lib/presentation.module';\r\n\r\n// Re-export from @ieeesa-npm/models (needed because dist/presentation is used by other library builds)\r\nexport { SelectOption, CheckboxOption, IconButton, AlignType, ConfirmationModalData, MessagePart, InfoModalData } from '@ieeesa-npm/models';\r\n\r\nexport * from './lib/components/stepper/stepper.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","autocompleteConstInfo","filter","i1.FormUtilityService","i7","i8","i2","i3","i5","i6","moment","datePickerInfo","i3.DatepickerService","i4","buttonActionsInfo","i2.DatepickerService","i3.FormUtilityService","searchInfo","dropdownInfo","constantsInfo","constants","i2.FileUploadService","constants?.colorPicker","takeUntil","map","debounceTime","i9","i11","constants?.richTextEditor","screenTexts","i1.BreakpointObserverService","i3.FileUploadService","i1.SafePipe","modalInfo?.ariaLabel","constants?.welcome"],"mappings":"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"}