@ieeesa-npm/presentation 0.10.1 → 0.10.2
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.
- package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +3 -3
- package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +3 -3
- package/esm2022/lib/components/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/lib/components/chips/chips.component.mjs +3 -3
- package/esm2022/lib/components/data-table/data-table.component.mjs +3 -3
- package/esm2022/lib/components/date-picker/date-picker.component.mjs +3 -3
- package/esm2022/lib/components/date-picker-header/date-picker-header.component.mjs +3 -3
- package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +3 -3
- package/esm2022/lib/components/filter/filter.component.mjs +3 -3
- package/esm2022/lib/components/footer/footer.component.mjs +3 -3
- package/esm2022/lib/components/form-error/form-error.component.mjs +3 -3
- package/esm2022/lib/components/header/header.component.mjs +3 -3
- package/esm2022/lib/components/input/input.component.mjs +3 -3
- package/esm2022/lib/components/loader/loader.component.mjs +3 -3
- package/esm2022/lib/components/menu/menu.component.mjs +3 -3
- package/esm2022/lib/components/modal/modal.component.mjs +3 -3
- package/esm2022/lib/components/navigation-menu/navigation-menu.component.mjs +3 -3
- package/esm2022/lib/components/radio/radio.component.mjs +3 -3
- package/esm2022/lib/components/search/search.component.mjs +3 -3
- package/esm2022/lib/components/select/select.component.mjs +3 -3
- package/esm2022/lib/components/text-area/text-area.component.mjs +3 -3
- package/esm2022/lib/components/tile/tile.component.mjs +3 -3
- package/esm2022/lib/components/toggle-button/toggle-button.component.mjs +3 -3
- package/esm2022/lib/components/welcome/welcome.component.mjs +3 -3
- package/fesm2022/ieeesa-npm-presentation.mjs +48 -48
- package/fesm2022/ieeesa-npm-presentation.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -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/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/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/directives/dynamic-form-field/dynamic-form-field.directive.ts","../../../projects/presentation/src/lib/models/align-type.model.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/header/header.component.ts","../../../projects/presentation/src/lib/components/header/header.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/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/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/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/directives/text-truncated/text-truncated.directive.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/presentation.module.ts","../../../projects/presentation/src/public-api.ts","../../../projects/presentation/src/ieeesa-npm-presentation.ts"],"sourcesContent":["import { Component, Input } 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})\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-14 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?.['required'] || formGroup.controls[config.controlName].errors?.['checkboxSelectionRequired']\"\r\n class=\"ieeesa-form-error--text m-0\"\r\n >\r\n {{ config.requiredErrorMessage }}\r\n </p>\r\n <p\r\n *ngIf=\"formGroup.controls[config.controlName].errors?.['minlength'] || formGroup.controls[config.controlName].errors?.['matDatepickerMin']\"\r\n class=\"ieeesa-form-error--text m-0\"\r\n >\r\n {{ config.minErrorMessage }}\r\n </p>\r\n <p\r\n *ngIf=\"formGroup.controls[config.controlName].errors?.['maxlength'] || formGroup.controls[config.controlName].errors?.['max']\"\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=\"\r\n 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 </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","export enum FormControlType {\r\n // eslint-disable-next-line no-unused-vars\r\n INPUT = 'INPUT',\r\n // eslint-disable-next-line no-unused-vars\r\n TEXT_AREA = 'TEXT_AREA',\r\n // eslint-disable-next-line no-unused-vars\r\n SELECT = 'SELECT',\r\n // eslint-disable-next-line no-unused-vars\r\n SEARCH = 'SEARCH',\r\n // eslint-disable-next-line no-unused-vars\r\n DATE = 'DATE',\r\n // eslint-disable-next-line no-unused-vars\r\n CHECKBOX = 'CHECKBOX',\r\n // eslint-disable-next-line no-unused-vars\r\n RADIO = 'RADIO',\r\n // eslint-disable-next-line no-unused-vars\r\n AUTO_COMPLETE = 'AUTO_COMPLETE',\r\n}\r\n","import { Component, Input, forwardRef } 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, SafeType } from '@ieeesa-npm/utility';\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 {\r\n @Input() formGroup!: FormGroup;\r\n @Input() config!: FieldConfig;\r\n safeType: string = SafeType.HTML;\r\n}\r\n","<p\r\n class=\"px-3 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 '../../models/select-option.model';\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 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 } from '../../models/checkbox-option.model';\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\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 ],\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 /**\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 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(index: number, option: CheckboxOption): 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 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\">\r\n <mat-checkbox\r\n *ngFor=\"let option of checkboxes; let i = index; trackBy: trackById\"\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 </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.daysFormat\r\n ) +\r\n ', ' +\r\n moment(this.datepickerService.selectedDate).date() +\r\n ' ' +\r\n moment(this.datepickerService.selectedDate).format(\r\n DateFormats.display.fullMonthLabel\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\"\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\"\r\n *ngIf=\"!isRangeSelection\"\r\n >\r\n {{ selectedDate }}\r\n </p>\r\n</div>\r\n<div class=\"ieeesa-datepicker-header--content\">\r\n <button\r\n mat-button\r\n type=\"button\"\r\n class=\"ieeesa-datepicker-header--content--period-button ieeesa-label-lg-16\"\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\"\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\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<string>();\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(this.group?.get(this.config.controlName)?.value);\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}\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-datepicker__label ieeesa-body-sm-14\"\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]=\"buttonActionsInfo?.datePicker?.dateFormatLabel\"\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 ></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-actions>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n type=\"button\"\r\n matDatepickerCancel\r\n >\r\n {{ buttonActionsInfo?.button?.cancel }}\r\n </button>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n color=\"primary\"\r\n type=\"button\"\r\n matDatepickerApply\r\n >\r\n {{ buttonActionsInfo?.button?.ok }}\r\n </button>\r\n </mat-datepicker-actions>\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-actions>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n matDateRangePickerCancel\r\n type=\"button\"\r\n >\r\n {{ buttonActionsInfo?.button?.cancel }}\r\n </button>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n color=\"primary\"\r\n matDateRangePickerApply\r\n (click)=\"onDateRangeChange()\"\r\n type=\"button\"\r\n >\r\n {{ buttonActionsInfo?.button?.ok }}\r\n </button>\r\n </mat-date-range-picker-actions>\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-18\"\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 @Input() radioGroup: RadioOption[] = [];\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 >\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 [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 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?.get(this.config?.controlName)?.setValue(this.config?.value);\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 * 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 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 <i\r\n class=\"fa-solid fa-magnifying-glass ieeesa-search-field__search-icon\"\r\n ></i>\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 '../../models/select-option.model';\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\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 /**\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 }\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 this._dropdownOptions = value;\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\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 }\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 }\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-select-field__label ieeesa-body-sm-14\">{{ selectLabel }}</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\"\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 *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\"\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 [formGroup]=\"group\" [config]=\"config\"></ieeesa-form-support-text>\r\n</div>\r\n","import { Component, ViewEncapsulation } 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\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 FormField {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = constantsInfo;\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 config.label\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 class=\"ieeesa-text-area-field__content ieeesa-body-lg-18\"\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 [formGroup]=\"group\" [config]=\"config\"></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 '../../models/checkbox-option.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};\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\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<string>();\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n component!: ComponentRef<any>;\r\n\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\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 } 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 } 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(event);\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 (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 }\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","/* eslint-disable no-unused-vars */\r\nexport enum AlignType {\r\n LEFT = \"Left\",\r\n MIDDLE = \"Middle\",\r\n RIGHT = \"Right\",\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 Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n ViewChildren,\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 } from '../../models/align-type.model';\r\nimport { FocusInvalidFormFieldDirective } from '../../directives/focus-invalid-form-field/focus-invalid-form-field.directive';\r\nimport { CheckboxOption } from '../../models/checkbox-option.model';\r\nimport { FormControlType } from '../../models/form-control-types.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 ],\r\n templateUrl: './dynamic-form.component.html',\r\n styleUrls: ['./dynamic-form.component.scss'],\r\n})\r\nexport class DynamicFormComponent implements OnInit, AfterContentInit {\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 @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() actionButtonAlign!: AlignType;\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<string>();\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 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) {}\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 /**\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(new FormControl(control.checked));\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 {string[]} event\r\n * @memberof DynamicFormComponent\r\n */\r\n onDateSelected(event: string): void {\r\n this.formDateSelected.emit(event);\r\n }\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 * 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","<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 >\r\n <legend class=\"float-none w-auto p-2\" *ngIf=\"isLegendVisible\">\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 (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 (formInputValue)=\"onFormChange()\"\r\n >\r\n </ng-template>\r\n </div>\r\n </div>\r\n </fieldset>\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 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\"\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 ieeesa-body-lg-18\"\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 ieeesa-body-lg-18\"\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-body-lg-18 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 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 '../../models/icon-button.model';\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() isMarginBottomZero = false;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() menuItemClick: EventEmitter<Menu> = new EventEmitter<Menu>();\r\n /**\r\n * Emits the clicked menu item\r\n * @param {Menu} menu\r\n * @memberof MenuComponent\r\n */\r\n onMenuItemClick(menu: Menu) {\r\n this.menuItemClick.emit(menu);\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 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\"></i\r\n ></ng-template>\r\n</button>\r\n\r\n<mat-menu\r\n #menu=\"matMenu\"\r\n class=\"ieeesa-menu\"\r\n backdropClass=\"ieeesa-menu-overlay\"\r\n>\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 p-0\"\r\n [ngClass]=\"isMarginBottomZero ? 'ieeesa-menu__item__mb-0' : ''\"\r\n (click)=\"onMenuItemClick(item)\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [matTooltip]=\"item.toolTip\"\r\n [matTooltipDisabled]=\"!item.isToolTipNeeded\"\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\r\n }}</span>\r\n </button>\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 {\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 { 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 {\r\n BreakpointObserverService,\r\n AuthService,\r\n StorageService,\r\n} from '@ieeesa-npm/utility';\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 { IconButton } from '../../models/icon-button.model';\r\nimport { UserProfileMenu } from '../../models/profile-menu.model';\r\n\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 ],\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class HeaderComponent implements OnDestroy {\r\n private headerConfigInfo!: HeaderConfig;\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 }\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 }\r\n get menuConfig(): Menu[] {\r\n return this.profileMenuOptions;\r\n }\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n screenTexts: any = constants;\r\n isMobileView!: boolean;\r\n @Output() toggleNavMenuClick = new EventEmitter<Event>();\r\n @Output() profileMenuClick = new EventEmitter<Menu>();\r\n private profileMenuOptions: Menu[] =\r\n this.screenTexts?.header?.userProfileMenuOptions;\r\n userProfileIconButton: IconButton = this.screenTexts?.header?.buttons[0];\r\n menuItems!: Menu[];\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 // eslint-disable-next-line no-unused-vars\r\n private storageService: StorageService\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 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 /**\r\n * Desktop event to navigate to logout page.\r\n * @memberof HeaderComponent\r\n * It will deletes the application specific and SSO related cookies\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 /**\r\n * Cleans up resources when the component is destroyed.\r\n * @memberof HeaderComponent\r\n */\r\n ngOnDestroy() {\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 <img\r\n class=\"ieeesa-header__logo\"\r\n src=\"{{ headerConfig.logoUrl }}\"\r\n alt=\"{{ screenTexts?.header?.alt?.logo }}\"\r\n />\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 { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IconButton } from '../../models/icon-button.model';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\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 @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 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 class=\"ieeesa-icon-button__svg\" *ngIf=\"iconButton?.iconURL\">\r\n <use [attr.xlink:href]=\"iconButton.iconURL\"></use>\r\n </svg>\r\n</button>\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 { SafeType, SafePipe } from '@ieeesa-npm/utility';\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 class=\"ieeesa-legend__square\"\r\n [ngClass]=\"item.color\"\r\n ieeesaSetBackground\r\n [background]=\"{ imgURL: '', color: item.color }\"\r\n ></div>\r\n <p class=\"ieeesa-body-md-16 px-2\">{{ item.label }}</p>\r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } 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\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})\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> = new EventEmitter<\r\n ToggleButton\r\n >();\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 }\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.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 {{ button.label }}\r\n </mat-button-toggle>\r\n</mat-button-toggle-group>","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 { UserIdleSessionExpiryNotificationComponent } from \"@ieeesa-npm/feature\";\r\nimport { ModalType } from \"@ieeesa-npm/utility\";\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\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 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 if (\r\n this.componentReference === UserIdleSessionExpiryNotificationComponent\r\n ) {\r\n this.componentRef.instance.personalizedUserIdleSessionInfo = this.modalData?.data2DynamicComponent;\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 /**\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}","<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-md-30 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-title-md-18 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 [aria-label]=\"closeAriaLabel\" class=\"ieeesa-modal__close-button\" [mat-dialog-close]=\"true\">\r\n <i\r\n *ngIf=\"isCloseNeeded\"\r\n class=\"ieeesa-modal__close-icon fa fa-close\"\r\n ></i>\r\n </button>\r\n</div>","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 } from \"../../models/align-type.model\";\r\nimport { ConfirmationModalData } from \"../../models/confirmation-modal-data.model\";\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 <h4 mat-dialog-content class=\"ieeesa-headline-sm-26 row\">\r\n <span class=\"ieeesa-body-md-16 col px-0\">{{ confirmationModalData.promptMessage }}</span>\r\n </h4>\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 {\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-md-14 ieeesa-sidenav__container__menu-item\"\r\n >\r\n <svg\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'\"\r\n >\r\n <div\r\n class=\"d-flex align-items-center ieeesa-label-md-14 ieeesa-sidenav__container__menu-item\"\r\n >\r\n <svg\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, SafeType } from '@ieeesa-npm/utility';\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 @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 <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\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 <i *ngIf=\"buttonIcon\" class=\"fa-solid fa-arrow-left\"></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 redirectUrlPostSignOut: '',\r\n signOutRedirectionCookie: '',\r\n ssoSignOutUrl: '',\r\n createAccountRouteUrl: '',\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 = 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?.createAccountRouteUrl) {\r\n const createAccountRouteUrl = this.appConfigInfo?.createAccountRouteUrl;\r\n const createAccountUrl = `${this.appConfigInfo?.createAccountUrl}?url=${createAccountRouteUrl}/&signinurl=${createAccountRouteUrl}${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 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}\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 '@ieeesa-npm/utility';\r\nimport {\r\n ChipOption,\r\n ChipOrientation,\r\n ChipsType,\r\n} from '../../models/chip-option.model';\r\nimport { IconButton } from '../../models/icon-button.model';\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 @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 >\r\n <div class=\"d-flex align-items-center\" [ngClass]=\"isMobileView ? 'gap-0' : 'gap-3'\">\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 <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} 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 '@ieeesa-npm/utility';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { CheckboxOption } from '../../models/checkbox-option.model';\r\nimport { IconButton } from '../../models/icon-button.model';\r\nimport { ChipOption } 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\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 ],\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss'],\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 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 private filteredTypeOptionsInfo!: ChipOption[];\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 private selectedFilterOptionsList!: CheckboxOption[];\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.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 }\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 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.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.removeFilteredOption.emit([]);\r\n this.appliedFilterOptions = [];\r\n this.filtersAndOptions.forEach((options: CheckboxOption[]) => {\r\n options?.forEach((option: CheckboxOption) => (option.checked = false));\r\n });\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 }\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 }\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","<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 [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\"\r\n class=\"d-flex gap-2 ieeesa-filter__filter-options\"\r\n ></ieeesa-checkbox>\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}\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 isSortableColumn?: boolean;\r\n}\r\n","import { Directive, ElementRef, HostListener } 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 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>\r\n ) // eslint-disable-next-line no-empty-function\r\n {}\r\n @HostListener('mouseover') mouseOver() {\r\n this.showTooltip();\r\n }\r\n @HostListener('mouseout') 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.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 {\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} 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 '@ieeesa-npm/utility';\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 { CheckboxOption } from '../../models/checkbox-option.model';\r\nimport { IconButton } from '../../models/icon-button.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\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 CommonModule,\r\n MatIconModule,\r\n MatSortModule,\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 MatTooltipModule\r\n ],\r\n templateUrl: './data-table.component.html',\r\n styleUrls: ['./data-table.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\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 @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 private columnSchema!: TableColumnSchema[];\r\n @Input()\r\n set columnSchemaInfo(value: TableColumnSchema[]) {\r\n this.columnSchema = value;\r\n }\r\n get columnSchemaInfo(): TableColumnSchema[] {\r\n return this.columnSchema;\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() caption!: string;\r\n @Input() paginatorConfig!: PaginatorConfig;\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() addButton!: IconButton;\r\n @Input() defaultColumnSortDirection: SortDirection = 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() inbuiltSortingNeeded = false;\r\n @Input() isCellTextOverflowEllipsis = false;\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() paginationChange = new EventEmitter<{\r\n pageOffset: number;\r\n pageLimit: number;\r\n }>();\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 displayedColumns!: string[];\r\n isMobileView = false;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dataSource!: 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 @ViewChild(MatSort) sort!: MatSort;\r\n @ViewChild(MatPaginator) paginator!: MatPaginator;\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 ) {\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.tableDeleteButton.disabled = true;\r\n this.selectedRows.changed\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result) => {\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 (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 this.tableDataChanges();\r\n }\r\n\r\n /**\r\n * Initializes the sort feature of dataSource\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.dataSource.paginator = this.paginator;\r\n }\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 }\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 * 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 }\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 * 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.\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 }\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({\r\n pageOffset: event.pageIndex * event.pageSize,\r\n pageLimit: event.pageSize,\r\n });\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 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()) {\r\n this.selectedRows.clear();\r\n } else this.selectedRows.select(...this.dataSource.data);\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 * 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.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 <caption class=\"ieeesa-data-table--caption\" *ngIf=\"caption\">\r\n {{\r\n caption\r\n }}\r\n </caption>\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 >\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 ></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\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 ></ieeesa-search>\r\n </ng-template>\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 >\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 >\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 >\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>{{ column.heading }}</span>\r\n </ng-container>\r\n </th>\r\n <td\r\n mat-cell\r\n [ngSwitch]=\"column?.columnType\"\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 *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 {{ column?.cellData(row) }}\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\"\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 <button\r\n mat-button\r\n (click)=\"onLinkClick(row, column)\"\r\n class=\"ieeesa-title-sm-16 ieeesa-data-table__cell-content-link\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.link\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </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 >\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 </td>\r\n </ng-container>\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 <tr\r\n mat-row\r\n class=\"ieeesa-data-table__cell-row\"\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n ></tr>\r\n </table>\r\n </div>\r\n</div>\r\n<ng-container *ngIf=\"tableActions?.isPaginationNeeded\">\r\n <div\r\n class=\"ieeesa-data-table__pagination d-flex flex-row-reverse\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.pagination\"\r\n >\r\n <mat-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</ng-container>\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","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 NavigationEnd,\r\n PRIMARY_OUTLET,\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/**\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?.dashboard\r\n * @memberof BreadcrumbComponent\r\n */\r\n @Input() breadcrumbInitialRouteLabel = this.breadcrumbTexts?.breadcrumb?.label?.dashboard;\r\n breadcrumbs!: Breadcrumb[];\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line no-unused-vars\r\n constructor(private activatedRoute: ActivatedRoute, private router: Router) {\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?.pipe(\r\n filter((event) => event instanceof NavigationEnd),\r\n takeUntil(this.destroy$)\r\n )\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\r\n ?.subscribe((event) => {\r\n const data = this.activatedRoute?.root;\r\n this.breadcrumbs = this.getBreadcrumbs(data);\r\n if (this.breadcrumbs[this.breadcrumbs?.length - 1]?.label === null)\r\n this.breadcrumbs?.pop();\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 getBreadcrumbs(\r\n route: ActivatedRoute,\r\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\r\n url: string = '',\r\n breadcrumbs: Breadcrumb[] = []\r\n ): Breadcrumb[] {\r\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\r\n const ROUTE_DATA_BREADCRUMB: string = 'breadcrumb';\r\n const children: ActivatedRoute[] = route?.children;\r\n\r\n if (children?.length === 0) {\r\n return breadcrumbs;\r\n }\r\n if (children) {\r\n // eslint-disable-next-line prefer-const\r\n for (let child of children) {\r\n if (child?.outlet !== PRIMARY_OUTLET) {\r\n continue;\r\n }\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (!child?.snapshot?.data?.hasOwnProperty(ROUTE_DATA_BREADCRUMB)) {\r\n return this.getBreadcrumbs(child, url, breadcrumbs);\r\n }\r\n const routeURL: string = child?.snapshot?.url\r\n .map((segment) => segment?.path)\r\n .join('/');\r\n url += `/${routeURL}`;\r\n const breadcrumb: Breadcrumb = {\r\n label: child?.snapshot?.data[ROUTE_DATA_BREADCRUMB],\r\n params: child?.snapshot?.params,\r\n url: url,\r\n };\r\n breadcrumbs?.push(breadcrumb);\r\n return this.getBreadcrumbs(child, url, breadcrumbs);\r\n }\r\n }\r\n return breadcrumbs;\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 [routerLink]=\"breadcrumbInitialRoute\" class=\"ieeesa-body-sm-14 text-decoration-none\"\r\n >{{ breadcrumbInitialRouteLabel }}\r\n </a>\r\n </li>\r\n <li *ngFor=\"let breadcrumb of breadcrumbs\">\r\n <a\r\n [routerLink]=\"[breadcrumb?.url, breadcrumb?.params]\"\r\n class=\"ieeesa-body-sm-14 text-decoration-none\"\r\n >{{ breadcrumb.label }}\r\n </a>\r\n </li>\r\n</ul>","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 '../../models/align-type.model';\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","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","/*\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/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/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\n\r\nexport * from './lib/directives/dynamic-form-field/dynamic-form-field.directive';\r\nexport * from './lib/directives/focus-invalid-form-field/focus-invalid-form-field.directive';\r\nexport * from './lib/directives/set-background/set-background.directive';\r\nexport * from './lib/directives/text-truncated/text-truncated.directive';\r\n\r\nexport * from './lib/models/align-type.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/checkbox-option.model';\r\nexport * from './lib/models/confirmation-modal-data.model';\r\nexport * from './lib/models/date-picker.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/icon-button.model';\r\nexport * from './lib/models/legend.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-option.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/filters-options.model';\r\nexport *from './lib/models/profile-menu.model';\r\n\r\nexport * from './lib/services/datepicker.service';\r\nexport * from './lib/services/form-utility.service';\r\n\r\nexport * from './lib/presentation.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","autocompleteConstInfo","filter","i1.FormUtilityService","i6","i7","i8","i3","i5","moment","datePickerInfo","i3.DatepickerService","i4","buttonActionsInfo","i2.DatepickerService","i3.FormUtilityService","i2","searchInfo","dropdownInfo","constantsInfo","constants","modalInfo?.ariaLabel","constants?.welcome","takeUntil"],"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/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/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/directives/dynamic-form-field/dynamic-form-field.directive.ts","../../../projects/presentation/src/lib/models/align-type.model.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/header/header.component.ts","../../../projects/presentation/src/lib/components/header/header.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/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/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/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/directives/text-truncated/text-truncated.directive.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/presentation.module.ts","../../../projects/presentation/src/public-api.ts","../../../projects/presentation/src/ieeesa-npm-presentation.ts"],"sourcesContent":["import { Component, Input } 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})\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-14 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?.['required'] || formGroup.controls[config.controlName].errors?.['checkboxSelectionRequired']\"\r\n class=\"ieeesa-form-error--text m-0\"\r\n >\r\n {{ config.requiredErrorMessage }}\r\n </p>\r\n <p\r\n *ngIf=\"formGroup.controls[config.controlName].errors?.['minlength'] || formGroup.controls[config.controlName].errors?.['matDatepickerMin']\"\r\n class=\"ieeesa-form-error--text m-0\"\r\n >\r\n {{ config.minErrorMessage }}\r\n </p>\r\n <p\r\n *ngIf=\"formGroup.controls[config.controlName].errors?.['maxlength'] || formGroup.controls[config.controlName].errors?.['max']\"\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=\"\r\n 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 </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","export enum FormControlType {\r\n // eslint-disable-next-line no-unused-vars\r\n INPUT = 'INPUT',\r\n // eslint-disable-next-line no-unused-vars\r\n TEXT_AREA = 'TEXT_AREA',\r\n // eslint-disable-next-line no-unused-vars\r\n SELECT = 'SELECT',\r\n // eslint-disable-next-line no-unused-vars\r\n SEARCH = 'SEARCH',\r\n // eslint-disable-next-line no-unused-vars\r\n DATE = 'DATE',\r\n // eslint-disable-next-line no-unused-vars\r\n CHECKBOX = 'CHECKBOX',\r\n // eslint-disable-next-line no-unused-vars\r\n RADIO = 'RADIO',\r\n // eslint-disable-next-line no-unused-vars\r\n AUTO_COMPLETE = 'AUTO_COMPLETE',\r\n}\r\n","import { Component, Input, forwardRef } 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, SafeType } from '@ieeesa-npm/utility';\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 {\r\n @Input() formGroup!: FormGroup;\r\n @Input() config!: FieldConfig;\r\n safeType: string = SafeType.HTML;\r\n}\r\n","<p\r\n class=\"px-3 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 '../../models/select-option.model';\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 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 } from '../../models/checkbox-option.model';\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\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 ],\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 /**\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 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(index: number, option: CheckboxOption): 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 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\">\r\n <mat-checkbox\r\n *ngFor=\"let option of checkboxes; let i = index; trackBy: trackById\"\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 </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.daysFormat\r\n ) +\r\n ', ' +\r\n moment(this.datepickerService.selectedDate).date() +\r\n ' ' +\r\n moment(this.datepickerService.selectedDate).format(\r\n DateFormats.display.fullMonthLabel\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\"\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\"\r\n *ngIf=\"!isRangeSelection\"\r\n >\r\n {{ selectedDate }}\r\n </p>\r\n</div>\r\n<div class=\"ieeesa-datepicker-header--content\">\r\n <button\r\n mat-button\r\n type=\"button\"\r\n class=\"ieeesa-datepicker-header--content--period-button ieeesa-label-lg-16\"\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\"\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\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<string>();\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(this.group?.get(this.config.controlName)?.value);\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}\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-datepicker__label ieeesa-body-sm-14\"\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]=\"buttonActionsInfo?.datePicker?.dateFormatLabel\"\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 ></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-actions>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n type=\"button\"\r\n matDatepickerCancel\r\n >\r\n {{ buttonActionsInfo?.button?.cancel }}\r\n </button>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n color=\"primary\"\r\n type=\"button\"\r\n matDatepickerApply\r\n >\r\n {{ buttonActionsInfo?.button?.ok }}\r\n </button>\r\n </mat-datepicker-actions>\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-actions>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n matDateRangePickerCancel\r\n type=\"button\"\r\n >\r\n {{ buttonActionsInfo?.button?.cancel }}\r\n </button>\r\n <button\r\n mat-button\r\n class=\"mat-text-button ieeesa-datepicker__date-picker-button\"\r\n color=\"primary\"\r\n matDateRangePickerApply\r\n (click)=\"onDateRangeChange()\"\r\n type=\"button\"\r\n >\r\n {{ buttonActionsInfo?.button?.ok }}\r\n </button>\r\n </mat-date-range-picker-actions>\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-18\"\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 @Input() radioGroup: RadioOption[] = [];\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 >\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 [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 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?.get(this.config?.controlName)?.setValue(this.config?.value);\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 * 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 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 <i\r\n class=\"fa-solid fa-magnifying-glass ieeesa-search-field__search-icon\"\r\n ></i>\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 '../../models/select-option.model';\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\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 /**\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 }\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 this._dropdownOptions = value;\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\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 }\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 }\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-select-field__label ieeesa-body-sm-14\">{{ selectLabel }}</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\"\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 *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\"\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 [formGroup]=\"group\" [config]=\"config\"></ieeesa-form-support-text>\r\n</div>\r\n","import { Component, ViewEncapsulation } 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\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 FormField {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = constantsInfo;\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 config.label\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 class=\"ieeesa-text-area-field__content ieeesa-body-lg-18\"\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 [formGroup]=\"group\" [config]=\"config\"></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 '../../models/checkbox-option.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};\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\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<string>();\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n component!: ComponentRef<any>;\r\n\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\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 } 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 } 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(event);\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 (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 }\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","/* eslint-disable no-unused-vars */\r\nexport enum AlignType {\r\n LEFT = \"Left\",\r\n MIDDLE = \"Middle\",\r\n RIGHT = \"Right\",\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 Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n ViewChildren,\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 } from '../../models/align-type.model';\r\nimport { FocusInvalidFormFieldDirective } from '../../directives/focus-invalid-form-field/focus-invalid-form-field.directive';\r\nimport { CheckboxOption } from '../../models/checkbox-option.model';\r\nimport { FormControlType } from '../../models/form-control-types.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 ],\r\n templateUrl: './dynamic-form.component.html',\r\n styleUrls: ['./dynamic-form.component.scss'],\r\n})\r\nexport class DynamicFormComponent implements OnInit, AfterContentInit {\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 @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() actionButtonAlign!: AlignType;\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<string>();\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 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) {}\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 /**\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(new FormControl(control.checked));\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 {string[]} event\r\n * @memberof DynamicFormComponent\r\n */\r\n onDateSelected(event: string): void {\r\n this.formDateSelected.emit(event);\r\n }\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 * 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","<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 >\r\n <legend class=\"float-none w-auto p-2\" *ngIf=\"isLegendVisible\">\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 (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 (formInputValue)=\"onFormChange()\"\r\n >\r\n </ng-template>\r\n </div>\r\n </div>\r\n </fieldset>\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 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\"\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 ieeesa-body-lg-18\"\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 ieeesa-body-lg-18\"\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-body-lg-18 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 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 '../../models/icon-button.model';\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() isMarginBottomZero = false;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() menuItemClick: EventEmitter<Menu> = new EventEmitter<Menu>();\r\n /**\r\n * Emits the clicked menu item\r\n * @param {Menu} menu\r\n * @memberof MenuComponent\r\n */\r\n onMenuItemClick(menu: Menu) {\r\n this.menuItemClick.emit(menu);\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 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\"></i\r\n ></ng-template>\r\n</button>\r\n\r\n<mat-menu\r\n #menu=\"matMenu\"\r\n class=\"ieeesa-menu\"\r\n backdropClass=\"ieeesa-menu-overlay\"\r\n>\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 p-0\"\r\n [ngClass]=\"isMarginBottomZero ? 'ieeesa-menu__item__mb-0' : ''\"\r\n (click)=\"onMenuItemClick(item)\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [matTooltip]=\"item.toolTip\"\r\n [matTooltipDisabled]=\"!item.isToolTipNeeded\"\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\r\n }}</span>\r\n </button>\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 {\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 { 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 {\r\n BreakpointObserverService,\r\n AuthService,\r\n StorageService,\r\n} from '@ieeesa-npm/utility';\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 { IconButton } from '../../models/icon-button.model';\r\nimport { UserProfileMenu } from '../../models/profile-menu.model';\r\n\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 ],\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class HeaderComponent implements OnDestroy {\r\n private headerConfigInfo!: HeaderConfig;\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 }\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 }\r\n get menuConfig(): Menu[] {\r\n return this.profileMenuOptions;\r\n }\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n screenTexts: any = constants;\r\n isMobileView!: boolean;\r\n @Output() toggleNavMenuClick = new EventEmitter<Event>();\r\n @Output() profileMenuClick = new EventEmitter<Menu>();\r\n private profileMenuOptions: Menu[] =\r\n this.screenTexts?.header?.userProfileMenuOptions;\r\n userProfileIconButton: IconButton = this.screenTexts?.header?.buttons[0];\r\n menuItems!: Menu[];\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 // eslint-disable-next-line no-unused-vars\r\n private storageService: StorageService\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 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 /**\r\n * Desktop event to navigate to logout page.\r\n * @memberof HeaderComponent\r\n * It will deletes the application specific and SSO related cookies\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 /**\r\n * Cleans up resources when the component is destroyed.\r\n * @memberof HeaderComponent\r\n */\r\n ngOnDestroy() {\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 <img\r\n class=\"ieeesa-header__logo\"\r\n src=\"{{ headerConfig.logoUrl }}\"\r\n alt=\"{{ screenTexts?.header?.alt?.logo }}\"\r\n />\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 { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IconButton } from '../../models/icon-button.model';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\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 @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 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 class=\"ieeesa-icon-button__svg\" *ngIf=\"iconButton?.iconURL\">\r\n <use [attr.xlink:href]=\"iconButton.iconURL\"></use>\r\n </svg>\r\n</button>\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 { SafeType, SafePipe } from '@ieeesa-npm/utility';\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 class=\"ieeesa-legend__square\"\r\n [ngClass]=\"item.color\"\r\n ieeesaSetBackground\r\n [background]=\"{ imgURL: '', color: item.color }\"\r\n ></div>\r\n <p class=\"ieeesa-body-md-16 px-2\">{{ item.label }}</p>\r\n </div>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } 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\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})\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> = new EventEmitter<\r\n ToggleButton\r\n >();\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 }\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.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 {{ button.label }}\r\n </mat-button-toggle>\r\n</mat-button-toggle-group>","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 { UserIdleSessionExpiryNotificationComponent } from \"@ieeesa-npm/feature\";\r\nimport { ModalType } from \"@ieeesa-npm/utility\";\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\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 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 if (\r\n this.componentReference === UserIdleSessionExpiryNotificationComponent\r\n ) {\r\n this.componentRef.instance.personalizedUserIdleSessionInfo = this.modalData?.data2DynamicComponent;\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 /**\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}","<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-md-30 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-title-md-18 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 [aria-label]=\"closeAriaLabel\" class=\"ieeesa-modal__close-button\" [mat-dialog-close]=\"true\">\r\n <i\r\n *ngIf=\"isCloseNeeded\"\r\n class=\"ieeesa-modal__close-icon fa fa-close\"\r\n ></i>\r\n </button>\r\n</div>","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 } from \"../../models/align-type.model\";\r\nimport { ConfirmationModalData } from \"../../models/confirmation-modal-data.model\";\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 <h4 mat-dialog-content class=\"ieeesa-headline-sm-26 row\">\r\n <span class=\"ieeesa-body-md-16 col px-0\">{{ confirmationModalData.promptMessage }}</span>\r\n </h4>\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 {\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-md-14 ieeesa-sidenav__container__menu-item\"\r\n >\r\n <svg\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'\"\r\n >\r\n <div\r\n class=\"d-flex align-items-center ieeesa-label-md-14 ieeesa-sidenav__container__menu-item\"\r\n >\r\n <svg\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, SafeType } from '@ieeesa-npm/utility';\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 @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 <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\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 <i *ngIf=\"buttonIcon\" class=\"fa-solid fa-arrow-left\"></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 redirectUrlPostSignOut: '',\r\n signOutRedirectionCookie: '',\r\n ssoSignOutUrl: '',\r\n createAccountRouteUrl: '',\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 = 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?.createAccountRouteUrl) {\r\n const createAccountRouteUrl = this.appConfigInfo?.createAccountRouteUrl;\r\n const createAccountUrl = `${this.appConfigInfo?.createAccountUrl}?url=${createAccountRouteUrl}/&signinurl=${createAccountRouteUrl}${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 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}\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 '@ieeesa-npm/utility';\r\nimport {\r\n ChipOption,\r\n ChipOrientation,\r\n ChipsType,\r\n} from '../../models/chip-option.model';\r\nimport { IconButton } from '../../models/icon-button.model';\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 @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 >\r\n <div class=\"d-flex align-items-center\" [ngClass]=\"isMobileView ? 'gap-0' : 'gap-3'\">\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 <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} 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 '@ieeesa-npm/utility';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { CheckboxOption } from '../../models/checkbox-option.model';\r\nimport { IconButton } from '../../models/icon-button.model';\r\nimport { ChipOption } 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\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 ],\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss'],\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 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 private filteredTypeOptionsInfo!: ChipOption[];\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 private selectedFilterOptionsList!: CheckboxOption[];\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.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 }\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 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.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.removeFilteredOption.emit([]);\r\n this.appliedFilterOptions = [];\r\n this.filtersAndOptions.forEach((options: CheckboxOption[]) => {\r\n options?.forEach((option: CheckboxOption) => (option.checked = false));\r\n });\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 }\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 }\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","<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 [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\"\r\n class=\"d-flex gap-2 ieeesa-filter__filter-options\"\r\n ></ieeesa-checkbox>\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}\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 isSortableColumn?: boolean;\r\n}\r\n","import { Directive, ElementRef, HostListener } 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 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>\r\n ) // eslint-disable-next-line no-empty-function\r\n {}\r\n @HostListener('mouseover') mouseOver() {\r\n this.showTooltip();\r\n }\r\n @HostListener('mouseout') 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.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 {\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} 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 '@ieeesa-npm/utility';\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 { CheckboxOption } from '../../models/checkbox-option.model';\r\nimport { IconButton } from '../../models/icon-button.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\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 CommonModule,\r\n MatIconModule,\r\n MatSortModule,\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 MatTooltipModule\r\n ],\r\n templateUrl: './data-table.component.html',\r\n styleUrls: ['./data-table.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\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 @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 private columnSchema!: TableColumnSchema[];\r\n @Input()\r\n set columnSchemaInfo(value: TableColumnSchema[]) {\r\n this.columnSchema = value;\r\n }\r\n get columnSchemaInfo(): TableColumnSchema[] {\r\n return this.columnSchema;\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() caption!: string;\r\n @Input() paginatorConfig!: PaginatorConfig;\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() addButton!: IconButton;\r\n @Input() defaultColumnSortDirection: SortDirection = 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() inbuiltSortingNeeded = false;\r\n @Input() isCellTextOverflowEllipsis = false;\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() paginationChange = new EventEmitter<{\r\n pageOffset: number;\r\n pageLimit: number;\r\n }>();\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 displayedColumns!: string[];\r\n isMobileView = false;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dataSource!: 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 @ViewChild(MatSort) sort!: MatSort;\r\n @ViewChild(MatPaginator) paginator!: MatPaginator;\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 ) {\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.tableDeleteButton.disabled = true;\r\n this.selectedRows.changed\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result) => {\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 (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 this.tableDataChanges();\r\n }\r\n\r\n /**\r\n * Initializes the sort feature of dataSource\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.dataSource.paginator = this.paginator;\r\n }\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 }\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 * 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 }\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 * 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.\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 }\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({\r\n pageOffset: event.pageIndex * event.pageSize,\r\n pageLimit: event.pageSize,\r\n });\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 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()) {\r\n this.selectedRows.clear();\r\n } else this.selectedRows.select(...this.dataSource.data);\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 * 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.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 <caption class=\"ieeesa-data-table--caption\" *ngIf=\"caption\">\r\n {{\r\n caption\r\n }}\r\n </caption>\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 >\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 ></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\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 ></ieeesa-search>\r\n </ng-template>\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 >\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 >\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 >\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>{{ column.heading }}</span>\r\n </ng-container>\r\n </th>\r\n <td\r\n mat-cell\r\n [ngSwitch]=\"column?.columnType\"\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 *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 {{ column?.cellData(row) }}\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\"\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 <button\r\n mat-button\r\n (click)=\"onLinkClick(row, column)\"\r\n class=\"ieeesa-title-sm-16 ieeesa-data-table__cell-content-link\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.link\"\r\n >\r\n {{ column?.cellData(row) }}\r\n </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 >\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 </td>\r\n </ng-container>\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 <tr\r\n mat-row\r\n class=\"ieeesa-data-table__cell-row\"\r\n *matRowDef=\"let row; columns: displayedColumns\"\r\n ></tr>\r\n </table>\r\n </div>\r\n</div>\r\n<ng-container *ngIf=\"tableActions?.isPaginationNeeded\">\r\n <div\r\n class=\"ieeesa-data-table__pagination d-flex flex-row-reverse\"\r\n [attr.aria-label]=\"constants?.dataTable?.ariaLabel?.pagination\"\r\n >\r\n <mat-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</ng-container>\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","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 NavigationEnd,\r\n PRIMARY_OUTLET,\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/**\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?.dashboard\r\n * @memberof BreadcrumbComponent\r\n */\r\n @Input() breadcrumbInitialRouteLabel = this.breadcrumbTexts?.breadcrumb?.label?.dashboard;\r\n breadcrumbs!: Breadcrumb[];\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line no-unused-vars\r\n constructor(private activatedRoute: ActivatedRoute, private router: Router) {\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?.pipe(\r\n filter((event) => event instanceof NavigationEnd),\r\n takeUntil(this.destroy$)\r\n )\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\r\n ?.subscribe((event) => {\r\n const data = this.activatedRoute?.root;\r\n this.breadcrumbs = this.getBreadcrumbs(data);\r\n if (this.breadcrumbs[this.breadcrumbs?.length - 1]?.label === null)\r\n this.breadcrumbs?.pop();\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 getBreadcrumbs(\r\n route: ActivatedRoute,\r\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\r\n url: string = '',\r\n breadcrumbs: Breadcrumb[] = []\r\n ): Breadcrumb[] {\r\n // eslint-disable-next-line @typescript-eslint/no-inferrable-types\r\n const ROUTE_DATA_BREADCRUMB: string = 'breadcrumb';\r\n const children: ActivatedRoute[] = route?.children;\r\n\r\n if (children?.length === 0) {\r\n return breadcrumbs;\r\n }\r\n if (children) {\r\n // eslint-disable-next-line prefer-const\r\n for (let child of children) {\r\n if (child?.outlet !== PRIMARY_OUTLET) {\r\n continue;\r\n }\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (!child?.snapshot?.data?.hasOwnProperty(ROUTE_DATA_BREADCRUMB)) {\r\n return this.getBreadcrumbs(child, url, breadcrumbs);\r\n }\r\n const routeURL: string = child?.snapshot?.url\r\n .map((segment) => segment?.path)\r\n .join('/');\r\n url += `/${routeURL}`;\r\n const breadcrumb: Breadcrumb = {\r\n label: child?.snapshot?.data[ROUTE_DATA_BREADCRUMB],\r\n params: child?.snapshot?.params,\r\n url: url,\r\n };\r\n breadcrumbs?.push(breadcrumb);\r\n return this.getBreadcrumbs(child, url, breadcrumbs);\r\n }\r\n }\r\n return breadcrumbs;\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 [routerLink]=\"breadcrumbInitialRoute\" class=\"ieeesa-body-sm-14 text-decoration-none\"\r\n >{{ breadcrumbInitialRouteLabel }}\r\n </a>\r\n </li>\r\n <li *ngFor=\"let breadcrumb of breadcrumbs\">\r\n <a\r\n [routerLink]=\"[breadcrumb?.url, breadcrumb?.params]\"\r\n class=\"ieeesa-body-sm-14 text-decoration-none\"\r\n >{{ breadcrumb.label }}\r\n </a>\r\n </li>\r\n</ul>","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 '../../models/align-type.model';\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","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","/*\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/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/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\n\r\nexport * from './lib/directives/dynamic-form-field/dynamic-form-field.directive';\r\nexport * from './lib/directives/focus-invalid-form-field/focus-invalid-form-field.directive';\r\nexport * from './lib/directives/set-background/set-background.directive';\r\nexport * from './lib/directives/text-truncated/text-truncated.directive';\r\n\r\nexport * from './lib/models/align-type.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/checkbox-option.model';\r\nexport * from './lib/models/confirmation-modal-data.model';\r\nexport * from './lib/models/date-picker.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/icon-button.model';\r\nexport * from './lib/models/legend.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-option.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/filters-options.model';\r\nexport *from './lib/models/profile-menu.model';\r\n\r\nexport * from './lib/services/datepicker.service';\r\nexport * from './lib/services/form-utility.service';\r\n\r\nexport * from './lib/presentation.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","autocompleteConstInfo","filter","i1.FormUtilityService","i6","i7","i8","i3","i5","moment","datePickerInfo","i3.DatepickerService","i4","buttonActionsInfo","i2.DatepickerService","i3.FormUtilityService","i2","searchInfo","dropdownInfo","constantsInfo","constants","modalInfo?.ariaLabel","constants?.welcome","takeUntil"],"mappings":"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"}
|