@ieeesa-npm/presentation 0.2.7 → 0.2.8
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/checkbox/checkbox.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/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/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/toggle-button/toggle-button.component.mjs +3 -3
- package/fesm2022/ieeesa-npm-presentation.mjs +34 -34
- package/fesm2022/ieeesa-npm-presentation.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -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/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/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/components/date-picker/date-picker.component.ts","../../../projects/presentation/src/lib/components/date-picker/date-picker.component.html","../../../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/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/components/legend/legend.component.ts","../../../projects/presentation/src/lib/components/legend/legend.component.html","../../../projects/presentation/src/lib/components/menu/menu.component.ts","../../../projects/presentation/src/lib/components/menu/menu.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/directives/set-background/set-background.directive.ts","../../../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\">\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 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']\"\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']\"\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 { Injectable } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { FieldConfig } from '../models/field-config.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(controlName: string): FormGroup {\r\n return this.fb.group({\r\n [controlName]: [],\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n Subject,\r\n takeUntil,\r\n} 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\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 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 implements OnInit, FormField, OnDestroy {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n value = '';\r\n @Input() filteredOptions: AutoCompleteOption[] = [];\r\n @Input() isSelectedOptionsVisible = true;\r\n @Output() autoCompleteSearchValue = new EventEmitter<string>();\r\n @Output() autoCompleteOptionSelected = new EventEmitter<string>();\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 optionsToFilter: AutoCompleteOption[] = [];\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.filteredOptions =\r\n this.config?.autoCompleteOptions ?? this.filteredOptions;\r\n this.optionsToFilter = this.filteredOptions;\r\n }\r\n /**\r\n * Filters the options on form control value changes.\r\n * @memberof AutocompleteComponent\r\n */\r\n filterOptions(): void {\r\n this.group?.controls[this.config?.controlName]?.valueChanges\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 (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 distinctUntilChanged()\r\n )\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((text: string) => {\r\n const options = this.optionsToFilter?.filter((item) =>\r\n item.name.toLowerCase().includes(text.toLowerCase())\r\n );\r\n this.filteredOptions = options ?? this.optionsToFilter;\r\n this.autoCompleteSearchValue.emit(text);\r\n });\r\n }\r\n /**\r\n * Emits the selected option name when the form on change event is triggered and returns option name.\r\n * @param {AutoCompleteOption} data // data is an selected option of filteredOptions.\r\n * @return {string} // Returns selected option name as string\r\n * @memberof AutocompleteComponent\r\n */\r\n onChange(data: AutoCompleteOption): string {\r\n this.autoCompleteOptionSelected.emit(data.name);\r\n return data.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-autocomplete__label\">{{ config.label }}</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 #autoComplete\r\n (keypress)=\"filterOptions()\"\r\n />\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n (optionSelected)=\"onChange($event.option.value)\"\r\n class=\"ieeesa-autocomplete__autocomplete-list\"\r\n >\r\n <ng-container *ngIf=\"isSelectedOptionsVisible\">\r\n <mat-option\r\n *ngFor=\"let option of filteredOptions; trackBy: trackByFn\"\r\n [value]=\"option.name\"\r\n >\r\n <span>{{ option.name }}</span>\r\n </mat-option>\r\n </ng-container>\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</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 {\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n} 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 { 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\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 ],\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 {\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 @Output() checkboxSelection = new EventEmitter<CheckboxOption>();\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 * @memberof CheckboxComponent\r\n */\r\n ngOnInit(): void {\r\n this.createFormGroupAndInitializeProperties();\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.checkboxes = this.config?.checkboxOptions ?? this.checkboxes;\r\n this.group = this.group ?? this.formUtilityService.getFormGroup('checkbox');\r\n this.checkboxes?.forEach((checkbox) => {\r\n this.group.addControl(\r\n checkbox.id as string,\r\n new FormControl({\r\n value: checkbox.checked,\r\n disabled: checkbox.disabled,\r\n })\r\n );\r\n });\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","<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 <mat-list>\r\n <mat-checkbox\r\n *ngFor=\"let option of checkboxes; trackBy: trackById\"\r\n [formControlName]=\"option.id\"\r\n (change)=\"onChange(option, true)\"\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 <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </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 class=\"ieeesa-label-lg-bold-16 ieeesa-datepicker-header__select-date-label\">\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 <mat-icon\r\n class=\"ieeesa-datepicker-header--content--period-button--arrow-icon\"\r\n *ngIf=\"!arrowDirection\"\r\n >arrow_drop_down</mat-icon\r\n >\r\n <mat-icon\r\n class=\"ieeesa-datepicker-header--content--period-button--arrow-icon\"\r\n *ngIf=\"arrowDirection\"\r\n >arrow_drop_up</mat-icon\r\n >\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 >\r\n <mat-icon\r\n (click)=\"setPreviousMonth('month')\"\r\n class=\"ieeesa-datepicker-header__arrow-left\"\r\n >keyboard_arrow_left</mat-icon\r\n >\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 >\r\n <mat-icon (click)=\"setNextMonth('month')\"> keyboard_arrow_right</mat-icon>\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 { 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@Component({\r\n selector: 'ieeesa-form-support-text',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './form-support-text.component.html',\r\n styleUrls: ['./form-support-text.component.scss']\r\n})\r\nexport class FormSupportTextComponent {\r\n @Input() formGroup!: FormGroup;\r\n @Input() config!: FieldConfig;\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 (formGroup.controls[config.controlName]?.untouched &&\r\n (formGroup.controls[config.controlName]?.pristine ||\r\n formGroup.controls[config.controlName]?.valid)) || (formGroup.controls[config.controlName]?.touched &&\r\n formGroup.controls[config.controlName]?.valid)\r\n\"\r\n [attr.aria-hidden]=\"formGroup.controls[config.controlName]?.touched &&\r\n formGroup.controls[config.controlName]?.valid\"\r\n>\r\n {{ config.supportMessage }}\r\n</p>","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 @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","<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 *ngIf=\"datepickerLabel\">{{ datepickerLabel }} </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 [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 #picker [calendarHeaderComponent]=\"datePickerHeader\">\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 [formGroup]=\"group\" [config]=\"config\"></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 *ngIf=\"datepickerLabel\">{{ datepickerLabel }} </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","import { Component, ViewEncapsulation } 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 { 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 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\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 if (\r\n this.config.max &&\r\n this.config.isNumber &&\r\n Number(this.group.get(this.config.controlName)?.value) > this.config.max\r\n ) {\r\n this.group.get(this.config.controlName)?.setErrors({\r\n maxlength: true,\r\n });\r\n }\r\n if (\r\n this.config.min &&\r\n this.config.isNumber &&\r\n this.group.get(this.config.controlName)?.value !== '' &&\r\n Number(this.group.get(this.config.controlName)?.value) < this.config.min\r\n ) {\r\n this.group.get(this.config.controlName)?.setErrors({\r\n minlength: true,\r\n });\r\n }\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]=\"config.isNumber ? 'number' : 'text'\"\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>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { 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 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() searchType: SearchType = SearchType.AUTO;\r\n @Input() searchTerm = '';\r\n @Output() searchValue = new EventEmitter();\r\n @ViewChild('searchControl') searchControl!: ElementRef;\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\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 * 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 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 }\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 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((res) => res.length >= MIN_CHAR || res.length === 0),\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 }\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 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 * 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\r\n }}</mat-label>\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 (change)=\"onChange()\"\r\n (input)=\"onSearchInputChange()\"\r\n bindon-ngModel=\"searchTerm\"\r\n #searchControl\r\n />\r\n <i\r\n class=\"fa-solid fa-magnifying-glass ieeesa-search-field__search-icon\"\r\n ></i>\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 [formGroup]=\"group\" [config]=\"config\"></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 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.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 }\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 [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\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<{startDate: string, endDate:string}>();\r\n @Output() formSelectSearch = new EventEmitter<{\r\n searchEvent: Event;\r\n controlName: string;\r\n }>();\r\n @Output() formAutoCompleteSearch = new EventEmitter<Event>();\r\n @Output() autoCompleteOptionSelected = new EventEmitter<Event>();\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.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: Event) => {\r\n this.formAutoCompleteSearch.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 }\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 FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n ReactiveFormsModule,\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\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() 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<Event> =\r\n new EventEmitter<Event>();\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 group.addControl(control.controlName, this.createControl(control))\r\n );\r\n return group;\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 {Event} event\r\n * @memberof DynamicFormComponent\r\n */\r\n onAutoCompleteSearch(event: Event): void {\r\n this.formAutoCompleteSearch.emit(event);\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)=\"onDateSelected($event)\"\r\n (formSelectedDateRange)=\"onSelectedDateRange($event)\"\r\n (formSelectSearch)=\"onSelectSearch($event)\"\r\n (formAutoCompleteSearch)=\"onAutoCompleteSearch($event)\"\r\n (autoCompleteOptionSelected)=\"onAutoCompleteOptionSelected()\"\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 @Input() footerConfig!: FooterConfig;\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 * @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 class=\"d-flex align-items-center\"\r\n *ngFor=\"let link of footerConfig.links let i = index; trackBy: trackByFunc\"\r\n >\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 <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}} {{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}}</p>\r\n </section>\r\n</footer>","import { Component, Input, OnDestroy } 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 { Router, RouterModule } from '@angular/router';\r\nimport { BreakpointObserverService } from '@ieeesa-npm/utility';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { Subject, takeUntil } from 'rxjs';\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: [CommonModule, RouterModule, MatButtonModule],\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class HeaderComponent implements OnDestroy {\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() headerConfig!: HeaderConfig;\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\r\n // eslint-disable-next-line no-unused-vars\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private router: Router,\r\n private breakPointObserverService: BreakpointObserverService\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 });\r\n }\r\n /**\r\n * Desktop event to navigate to logout page.\r\n * @memberof HeaderComponent\r\n */\r\n logout() {\r\n this.router.navigate([this.headerConfig.logoutLink]);\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 [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\">{{headerConfig.applicationName}}</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 >{{headerConfig.userName}}</p>\r\n <div\r\n *ngIf=\"headerConfig.isSignedIn\"\r\n class=\"ieeesa-header__user-profile-wrapper\"\r\n >\r\n <i class=\"fa-regular fa-circle-user ieeesa-header__user-profile-icon\"></i>\r\n <button\r\n *ngIf=\"isMobileView\"\r\n type=\"button\"\r\n [attr.aria-label]=\"screenTexts?.header?.ariaLabel?.userProfile\"\r\n class=\"ieeesa-text-button ieeesa-header__user-profile-button\"\r\n (click)=\"logout()\"\r\n ></button>\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 >{{screenTexts?.header?.label?.signOut}}</button>\r\n </div>\r\n</header>","import { Component, EventEmitter, Input, Output } 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 * 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})\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\"\r\n [attr.aria-label]=\"iconButton.ariaLabel\"\r\n [matTooltip]=\"iconButton.toolTip\"\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 { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Legend } from '../../models/legend.model';\r\n// TO DO: SetBackgroundDirective should be imported from @ieeesa-npm/presentation node package once the service code is approved and published as npm package\r\nimport { SetBackgroundDirective } from '@presentation/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 {\r\n @Input() legends!: Legend[];\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-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=\"px-2\">{{ item.label }}</p>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { 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\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 ],\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() menuItemClick: EventEmitter<Menu> = new EventEmitter<Menu>();\r\n\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 [matMenuTriggerFor]=\"menu\"\r\n [attr.aria-label]=\"constants.ariaLabel.menuIcon\"\r\n>\r\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\r\n</button>\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 (click)=\"onMenuItemClick(item)\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [matTooltip]=\"item.toolTip\" [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","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-sm-26 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 { 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 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=\"col px-0\">{{ confirmationModalData.promptMessage }}</span>\r\n </h4>\r\n <div\r\n mat-dialog-actions\r\n class=\"d-flex justify-content-end p-0 row flex-nowrap\"\r\n >\r\n <button\r\n mat-button\r\n class=\"mat-secondary-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} from '@angular/core';\r\nimport { 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 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: 768px)');\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() {\r\n return this.mobileQuery.matches ? false : this.isMenuOpen;\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 class=\"ieeesa-sidenav\">\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; 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 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 { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\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: [CommonModule, MatIconModule, MatButtonModule],\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\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 class=\"ieeesa-notification__message ieeesa-title-md-18\">{{ content }}</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 { Directive, HostBinding, Input, OnInit } 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: [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 { 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\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\n\r\nexport * from './lib/models/align-type.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\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","i1.FormUtilityService","i4","i6","i7","i8","moment","datePickerInfo","i3.DatepickerService","i5","buttonActionsInfo","i2.DatepickerService","i3.FormUtilityService","i2","i3","searchInfo","dropdownInfo","constantsInfo","screenTexts","constants","SetBackgroundDirective","modalInfo?.ariaLabel"],"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/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/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/components/date-picker/date-picker.component.ts","../../../projects/presentation/src/lib/components/date-picker/date-picker.component.html","../../../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/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/components/legend/legend.component.ts","../../../projects/presentation/src/lib/components/legend/legend.component.html","../../../projects/presentation/src/lib/components/menu/menu.component.ts","../../../projects/presentation/src/lib/components/menu/menu.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/directives/set-background/set-background.directive.ts","../../../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\">\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 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']\"\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']\"\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 { Injectable } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { FieldConfig } from '../models/field-config.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(controlName: string): FormGroup {\r\n return this.fb.group({\r\n [controlName]: [],\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n Subject,\r\n takeUntil,\r\n} 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\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 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 implements OnInit, FormField, OnDestroy {\r\n config!: FieldConfig;\r\n group!: FormGroup;\r\n value = '';\r\n @Input() filteredOptions: AutoCompleteOption[] = [];\r\n @Input() isSelectedOptionsVisible = true;\r\n @Output() autoCompleteSearchValue = new EventEmitter<string>();\r\n @Output() autoCompleteOptionSelected = new EventEmitter<string>();\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 optionsToFilter: AutoCompleteOption[] = [];\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.filteredOptions =\r\n this.config?.autoCompleteOptions ?? this.filteredOptions;\r\n this.optionsToFilter = this.filteredOptions;\r\n }\r\n /**\r\n * Filters the options on form control value changes.\r\n * @memberof AutocompleteComponent\r\n */\r\n filterOptions(): void {\r\n this.group?.controls[this.config?.controlName]?.valueChanges\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 (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 distinctUntilChanged()\r\n )\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((text: string) => {\r\n const options = this.optionsToFilter?.filter((item) =>\r\n item.name.toLowerCase().includes(text.toLowerCase())\r\n );\r\n this.filteredOptions = options ?? this.optionsToFilter;\r\n this.autoCompleteSearchValue.emit(text);\r\n });\r\n }\r\n /**\r\n * Emits the selected option name when the form on change event is triggered and returns option name.\r\n * @param {AutoCompleteOption} data // data is an selected option of filteredOptions.\r\n * @return {string} // Returns selected option name as string\r\n * @memberof AutocompleteComponent\r\n */\r\n onChange(data: AutoCompleteOption): string {\r\n this.autoCompleteOptionSelected.emit(data.name);\r\n return data.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-autocomplete__label\">{{ config.label }}</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 #autoComplete\r\n (keypress)=\"filterOptions()\"\r\n />\r\n <mat-autocomplete\r\n #auto=\"matAutocomplete\"\r\n (optionSelected)=\"onChange($event.option.value)\"\r\n class=\"ieeesa-autocomplete__autocomplete-list\"\r\n >\r\n <ng-container *ngIf=\"isSelectedOptionsVisible\">\r\n <mat-option\r\n *ngFor=\"let option of filteredOptions; trackBy: trackByFn\"\r\n [value]=\"option.name\"\r\n >\r\n <span>{{ option.name }}</span>\r\n </mat-option>\r\n </ng-container>\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</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 {\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n} 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 { 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\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 ],\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 {\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 @Output() checkboxSelection = new EventEmitter<CheckboxOption>();\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 * @memberof CheckboxComponent\r\n */\r\n ngOnInit(): void {\r\n this.createFormGroupAndInitializeProperties();\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.checkboxes = this.config?.checkboxOptions ?? this.checkboxes;\r\n this.group = this.group ?? this.formUtilityService.getFormGroup('checkbox');\r\n this.checkboxes?.forEach((checkbox) => {\r\n this.group.addControl(\r\n checkbox.id as string,\r\n new FormControl({\r\n value: checkbox.checked,\r\n disabled: checkbox.disabled,\r\n })\r\n );\r\n });\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","<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 <mat-list>\r\n <mat-checkbox\r\n *ngFor=\"let option of checkboxes; trackBy: trackById\"\r\n [formControlName]=\"option.id\"\r\n (change)=\"onChange(option, true)\"\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 <ieeesa-form-error [formGroup]=\"group\" [config]=\"config\"> </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 class=\"ieeesa-label-lg-bold-16 ieeesa-datepicker-header__select-date-label\">\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 <mat-icon\r\n class=\"ieeesa-datepicker-header--content--period-button--arrow-icon\"\r\n *ngIf=\"!arrowDirection\"\r\n >arrow_drop_down</mat-icon\r\n >\r\n <mat-icon\r\n class=\"ieeesa-datepicker-header--content--period-button--arrow-icon\"\r\n *ngIf=\"arrowDirection\"\r\n >arrow_drop_up</mat-icon\r\n >\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 >\r\n <mat-icon\r\n (click)=\"setPreviousMonth('month')\"\r\n class=\"ieeesa-datepicker-header__arrow-left\"\r\n >keyboard_arrow_left</mat-icon\r\n >\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 >\r\n <mat-icon (click)=\"setNextMonth('month')\"> keyboard_arrow_right</mat-icon>\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 { 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@Component({\r\n selector: 'ieeesa-form-support-text',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './form-support-text.component.html',\r\n styleUrls: ['./form-support-text.component.scss']\r\n})\r\nexport class FormSupportTextComponent {\r\n @Input() formGroup!: FormGroup;\r\n @Input() config!: FieldConfig;\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 (formGroup.controls[config.controlName]?.untouched &&\r\n (formGroup.controls[config.controlName]?.pristine ||\r\n formGroup.controls[config.controlName]?.valid)) || (formGroup.controls[config.controlName]?.touched &&\r\n formGroup.controls[config.controlName]?.valid)\r\n\"\r\n [attr.aria-hidden]=\"formGroup.controls[config.controlName]?.touched &&\r\n formGroup.controls[config.controlName]?.valid\"\r\n>\r\n {{ config.supportMessage }}\r\n</p>","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 @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","<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 *ngIf=\"datepickerLabel\">{{ datepickerLabel }} </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 [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 #picker [calendarHeaderComponent]=\"datePickerHeader\">\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 [formGroup]=\"group\" [config]=\"config\"></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 *ngIf=\"datepickerLabel\">{{ datepickerLabel }} </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","import { Component, ViewEncapsulation } 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 { 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 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\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 if (\r\n this.config.max &&\r\n this.config.isNumber &&\r\n Number(this.group.get(this.config.controlName)?.value) > this.config.max\r\n ) {\r\n this.group.get(this.config.controlName)?.setErrors({\r\n maxlength: true,\r\n });\r\n }\r\n if (\r\n this.config.min &&\r\n this.config.isNumber &&\r\n this.group.get(this.config.controlName)?.value !== '' &&\r\n Number(this.group.get(this.config.controlName)?.value) < this.config.min\r\n ) {\r\n this.group.get(this.config.controlName)?.setErrors({\r\n minlength: true,\r\n });\r\n }\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]=\"config.isNumber ? 'number' : 'text'\"\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>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { 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 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() searchType: SearchType = SearchType.AUTO;\r\n @Input() searchTerm = '';\r\n @Output() searchValue = new EventEmitter();\r\n @ViewChild('searchControl') searchControl!: ElementRef;\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\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 * 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 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 }\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 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((res) => res.length >= MIN_CHAR || res.length === 0),\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 }\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 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 * 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\r\n }}</mat-label>\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 (change)=\"onChange()\"\r\n (input)=\"onSearchInputChange()\"\r\n bindon-ngModel=\"searchTerm\"\r\n #searchControl\r\n />\r\n <i\r\n class=\"fa-solid fa-magnifying-glass ieeesa-search-field__search-icon\"\r\n ></i>\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 [formGroup]=\"group\" [config]=\"config\"></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 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.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 }\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 [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\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<{startDate: string, endDate:string}>();\r\n @Output() formSelectSearch = new EventEmitter<{\r\n searchEvent: Event;\r\n controlName: string;\r\n }>();\r\n @Output() formAutoCompleteSearch = new EventEmitter<Event>();\r\n @Output() autoCompleteOptionSelected = new EventEmitter<Event>();\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.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: Event) => {\r\n this.formAutoCompleteSearch.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 }\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 FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n ReactiveFormsModule,\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\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() 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<Event> =\r\n new EventEmitter<Event>();\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 group.addControl(control.controlName, this.createControl(control))\r\n );\r\n return group;\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 {Event} event\r\n * @memberof DynamicFormComponent\r\n */\r\n onAutoCompleteSearch(event: Event): void {\r\n this.formAutoCompleteSearch.emit(event);\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)=\"onDateSelected($event)\"\r\n (formSelectedDateRange)=\"onSelectedDateRange($event)\"\r\n (formSelectSearch)=\"onSelectSearch($event)\"\r\n (formAutoCompleteSearch)=\"onAutoCompleteSearch($event)\"\r\n (autoCompleteOptionSelected)=\"onAutoCompleteOptionSelected()\"\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 @Input() footerConfig!: FooterConfig;\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 * @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 class=\"d-flex align-items-center\"\r\n *ngFor=\"let link of footerConfig.links let i = index; trackBy: trackByFunc\"\r\n >\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 <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}} {{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}}</p>\r\n </section>\r\n</footer>","import { Component, Input, OnDestroy } 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 { Router, RouterModule } from '@angular/router';\r\nimport { BreakpointObserverService } from '@ieeesa-npm/utility';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { Subject, takeUntil } from 'rxjs';\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: [CommonModule, RouterModule, MatButtonModule],\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class HeaderComponent implements OnDestroy {\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() headerConfig!: HeaderConfig;\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\r\n // eslint-disable-next-line no-unused-vars\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private router: Router,\r\n private breakPointObserverService: BreakpointObserverService\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 });\r\n }\r\n /**\r\n * Desktop event to navigate to logout page.\r\n * @memberof HeaderComponent\r\n */\r\n logout() {\r\n this.router.navigate([this.headerConfig.logoutLink]);\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 [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\">{{headerConfig.applicationName}}</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 >{{headerConfig.userName}}</p>\r\n <div\r\n *ngIf=\"headerConfig.isSignedIn\"\r\n class=\"ieeesa-header__user-profile-wrapper\"\r\n >\r\n <i class=\"fa-regular fa-circle-user ieeesa-header__user-profile-icon\"></i>\r\n <button\r\n *ngIf=\"isMobileView\"\r\n type=\"button\"\r\n [attr.aria-label]=\"screenTexts?.header?.ariaLabel?.userProfile\"\r\n class=\"ieeesa-text-button ieeesa-header__user-profile-button\"\r\n (click)=\"logout()\"\r\n ></button>\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 >{{screenTexts?.header?.label?.signOut}}</button>\r\n </div>\r\n</header>","import { Component, EventEmitter, Input, Output } 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 * 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})\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\"\r\n [attr.aria-label]=\"iconButton.ariaLabel\"\r\n [matTooltip]=\"iconButton.toolTip\"\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 { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Legend } from '../../models/legend.model';\r\n// TO DO: SetBackgroundDirective should be imported from @ieeesa-npm/presentation node package once the service code is approved and published as npm package\r\nimport { SetBackgroundDirective } from '@presentation/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 {\r\n @Input() legends!: Legend[];\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-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=\"px-2\">{{ item.label }}</p>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { 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\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 ],\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Output() menuItemClick: EventEmitter<Menu> = new EventEmitter<Menu>();\r\n\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 [matMenuTriggerFor]=\"menu\"\r\n [attr.aria-label]=\"constants.ariaLabel.menuIcon\"\r\n>\r\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\r\n</button>\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 (click)=\"onMenuItemClick(item)\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [matTooltip]=\"item.toolTip\" [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","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-sm-26 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 { 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 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=\"col px-0\">{{ confirmationModalData.promptMessage }}</span>\r\n </h4>\r\n <div\r\n mat-dialog-actions\r\n class=\"d-flex justify-content-end p-0 row flex-nowrap\"\r\n >\r\n <button\r\n mat-button\r\n class=\"mat-secondary-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} from '@angular/core';\r\nimport { 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 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: 768px)');\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() {\r\n return this.mobileQuery.matches ? false : this.isMenuOpen;\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 class=\"ieeesa-sidenav\">\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; 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 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 { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\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: [CommonModule, MatIconModule, MatButtonModule],\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\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 class=\"ieeesa-notification__message ieeesa-title-md-18\">{{ content }}</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 { Directive, HostBinding, Input, OnInit } 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: [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 { 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\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\n\r\nexport * from './lib/models/align-type.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\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","i1.FormUtilityService","i4","i6","i7","i8","moment","datePickerInfo","i3.DatepickerService","i5","buttonActionsInfo","i2.DatepickerService","i3.FormUtilityService","i2","i3","searchInfo","dropdownInfo","constantsInfo","screenTexts","constants","SetBackgroundDirective","modalInfo?.ariaLabel"],"mappings":"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"}
|