@ieeesa-npm/presentation 0.33.10 → 0.33.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"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/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/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(private formUtilityService: FormUtilityService) {}\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.destroy$.next(true);\r\n this.destroy$.unsubscribe();\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 [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 [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 EventEmitter,\r\n Injectable,\r\n Input,\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 { MatDatepickerModule } 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 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 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 {\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 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 // 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.datepickerService.selectedDate = this.group.get(controlName)?.value;\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 [calendarHeaderComponent]=\"datePickerHeader\"\r\n (opened)=\"onDatePickerOpen(config.controlName)\"\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 [calendarHeaderComponent]=\"datePickerHeader\"\r\n (dateInput)=\"onDateRangeChange()\"\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 Input,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n AfterViewInit,\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 { MAT_SELECT_CONFIG, MatSelectModule } from '@angular/material/select';\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 templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SelectComponent implements OnInit, AfterViewInit {\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 /**\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 // 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 this.dropdownOpenedChange.emit({\r\n controlName: this.config?.controlName,\r\n opened: opened,\r\n });\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 (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 [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 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 {\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 /**\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","<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 ></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, filter, 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 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 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 if (text === '') this.handleFieldError();\r\n this.multiSelectAutoCompleteClearSearchValue.emit(text);\r\n });\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.multiSelectAutoCompleteSearchValue.emit(text);\r\n if (text === '') this.handleFieldError();\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 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 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 this.multiSelectAutoComplete?.nativeElement.focus();\r\n });\r\n return value;\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 [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 { 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 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 * 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 } = control;\r\n return this.fb.control({ disabled, value }, validation);\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 <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 class=\"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}\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 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 ];\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 properties.forEach((property) => {\r\n if (property in thisObj && thisObj[property] !== undefined) {\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 @Input() isOpen = false;\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","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","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\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],\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\">\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\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\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\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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"}
1
+ {"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/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/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(private formUtilityService: FormUtilityService) {}\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.destroy$.next(true);\r\n this.destroy$.unsubscribe();\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 [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 [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 EventEmitter,\r\n Injectable,\r\n Input,\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 { MatDatepickerModule } 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 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 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 {\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 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 // 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.datepickerService.selectedDate = this.group.get(controlName)?.value;\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 [calendarHeaderComponent]=\"datePickerHeader\"\r\n (opened)=\"onDatePickerOpen(config.controlName)\"\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 [calendarHeaderComponent]=\"datePickerHeader\"\r\n (dateInput)=\"onDateRangeChange()\"\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 Input,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n AfterViewInit,\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 { MAT_SELECT_CONFIG, MatSelectModule } from '@angular/material/select';\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 templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class SelectComponent implements OnInit, AfterViewInit {\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 /**\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 // 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 this.dropdownOpenedChange.emit({\r\n controlName: this.config?.controlName,\r\n opened: opened,\r\n });\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 (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 [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 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 {\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 /**\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","<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 ></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, filter, 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 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 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 if (text === '') this.handleFieldError();\r\n this.multiSelectAutoCompleteClearSearchValue.emit(text);\r\n });\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.multiSelectAutoCompleteSearchValue.emit(text);\r\n if (text === '') this.handleFieldError();\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 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 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 this.multiSelectAutoComplete?.nativeElement.focus();\r\n });\r\n return value;\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 [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 { 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 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 * 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 } = control;\r\n return this.fb.control({ disabled, value }, validation);\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 <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 class=\"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}\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 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 ];\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 properties.forEach((property) => {\r\n if (property in thisObj && thisObj[property] !== undefined) {\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 @Input() isOpen = false;\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","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","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\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],\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\">\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\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\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\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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"}