i-tech-shared-components 1.4.70 → 1.4.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"i-tech-shared-components.mjs","sources":["../../../projects/shared-components/src/lib/pipes/generate-error-messages.pipe.ts","../../../projects/shared-components/src/lib/pipes/array-to-string.pipe.ts","../../../projects/shared-components/src/lib/pipes/get-value-by-key-from-object.pipe.ts","../../../projects/shared-components/src/lib/services/input.service.ts","../../../projects/shared-components/src/lib/services/parse-date.service.ts","../../../projects/shared-components/src/lib/interfaces/button-types.enum.ts","../../../projects/shared-components/src/lib/interfaces/driver-category.enum.ts","../../../projects/shared-components/src/lib/interfaces/label-type.enum.ts","../../../projects/shared-components/src/lib/interfaces/auth.interface.ts","../../../projects/shared-components/src/lib/directives/input-mask.directive.ts","../../../projects/shared-components/src/lib/components/icon-button/icon-button.component.ts","../../../projects/shared-components/src/lib/components/icon-button/icon-button.component.html","../../../projects/shared-components/src/lib/components/text/text-input.component.ts","../../../projects/shared-components/src/lib/components/text/text-input.component.html","../../../projects/shared-components/src/lib/components/button/button.component.ts","../../../projects/shared-components/src/lib/components/button/button.component.html","../../../projects/shared-components/src/lib/components/clear-value/clear-value.component.ts","../../../projects/shared-components/src/lib/components/autocomplete-select/autocomplete-select.component.ts","../../../projects/shared-components/src/lib/components/autocomplete-select/autocomplete-select.component.html","../../../projects/shared-components/src/lib/directives/date-mask.directive.ts","../../../projects/shared-components/src/lib/components/date-picker/date-picker.component.ts","../../../projects/shared-components/src/lib/components/date-picker/date-picker.component.html","../../../projects/shared-components/src/lib/components/label/label.component.ts","../../../projects/shared-components/src/lib/components/label/label.component.html","../../../projects/shared-components/src/lib/components/date-range-datepicker/date-range-datepicker.component.ts","../../../projects/shared-components/src/lib/components/date-range-datepicker/date-range-datepicker.component.html","../../../projects/shared-components/src/lib/interfaces/dropdown-selection.constants.ts","../../../projects/shared-components/src/lib/components/menu/menu.component.ts","../../../projects/shared-components/src/lib/components/menu/menu.component.html","../../../projects/shared-components/src/lib/components/date-time-picker/date-time-picker.component.ts","../../../projects/shared-components/src/lib/components/date-time-picker/date-time-picker.component.html","../../../projects/shared-components/src/lib/components/new-sidebar/company-image/company-image.component.ts","../../../projects/shared-components/src/lib/components/new-sidebar/company-image/company-image.component.html","../../../projects/shared-components/src/lib/components/new-sidebar/new-sidebar.component.ts","../../../projects/shared-components/src/lib/components/new-sidebar/new-sidebar.component.html","../../../projects/shared-components/src/lib/interfaces/driver.interface.ts","../../../projects/shared-components/src/lib/interfaces/selection-filtration.tokens.ts","../../../projects/shared-components/src/lib/services/ag-grid-functions.service.ts","../../../projects/shared-components/src/lib/components/ag-grid/ag-grid-button-cell/ag-grid-button-cell.component.ts","../../../projects/shared-components/src/lib/components/ag-grid/ag-grid-button-cell/ag-grid-button-cell.component.html","../../../projects/shared-components/src/lib/components/ag-grid/status-label-cell.component.ts","../../../projects/shared-components/src/lib/components/ag-grid/tooltip-cell-renderer.component.ts","../../../projects/shared-components/src/lib/helper-functions/phone-number-formatter.function.ts","../../../projects/shared-components/src/lib/components/phone-number-input/country-patterns.const.ts","../../../projects/shared-components/src/lib/components/phone-number-input/phone-number-input.component.ts","../../../projects/shared-components/src/lib/components/phone-number-input/phone-number-input.component.html","../../../projects/shared-components/src/lib/components/phone-number-input/phone-number.validator.ts","../../../projects/shared-components/src/lib/components/ag-grid/date-range-selection/date-range-selection.component.ts","../../../projects/shared-components/src/lib/components/ag-grid/date-range-selection/date-range-selection.component.html","../../../projects/shared-components/src/lib/services/filtration-helper.service.ts","../../../projects/shared-components/src/lib/components/ag-grid/select-with-search/select-with-search.component.ts","../../../projects/shared-components/src/lib/components/ag-grid/select-with-search/select-with-search.component.html","../../../projects/shared-components/src/lib/components/segmented-button/segmented-button.component.ts","../../../projects/shared-components/src/lib/components/segmented-button/segmented-button.component.html","../../../projects/shared-components/src/lib/components/time-input/time-input.component.ts","../../../projects/shared-components/src/lib/components/time-input/time-input.component.html","../../../projects/shared-components/src/public-api.ts","../../../projects/shared-components/src/i-tech-shared-components.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({\n name: 'generateErrorMessages',\n standalone: true,\n pure: true\n})\nexport class GenerateErrorMessagesPipe implements PipeTransform {\n\n constructor(private translateService: TranslateService) {\n }\n\n transform(control: any,label: string,defaultPatternKey = 'fixed'): string {\n\n if (!control.errors) {\n return '';\n }\n const key = (Object.keys(control.errors)[0]);\n const translateParams: {ERROR_KEY: string} = { ERROR_KEY: this.translateService.instant(label) || 'Field' };\n const errorMessageKey = (key === 'pattern') ?\n 'errorMessages.pattern.' + defaultPatternKey : 'errorMessages.' + key;\n\n return this.translateService.instant(errorMessageKey,translateParams);\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'arrayToString',\n standalone: true\n})\nexport class ArrayToStringPipe implements PipeTransform {\n\n transform(value: Array<string | number> | string): string {\n return (typeof value === 'string') ? value : value.join(',');\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'getValueByKeyFromObject',\n standalone: true\n})\nexport class GetValueByKeyFromObjectPipe implements PipeTransform {\n\n transform(\n keys: string | Array<string | number>,\n data: any,\n withParams: Array<string | Array<string | number>> | null = null,\n withParamSymbol?: string\n ): string {\n if (typeof keys === 'string') {\n return data[keys];\n } else {\n let returnValue: any = data;\n keys.forEach((key: string | number) => {\n if (!returnValue) { return; }\n returnValue = returnValue[key];\n })\n if (withParams) {\n\n withParams.forEach((param: Array<string | number> | string) => {\n let include = data;\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n include = (include) ? include[key] : null;\n })\n } else {\n include = include[param];\n }\n\n if (include !== undefined && include !== null) {\n returnValue += (withParamSymbol ? withParamSymbol : ' ') + include;\n }\n })\n }\n\n return ((returnValue !== \"undefined\") && (returnValue !== null) ) ? returnValue : '---';\n }\n }\n\n}\n","import { ControlValueAccessor, FormControlName, NgControl } from \"@angular/forms\";\nimport { inject, Injectable } from \"@angular/core\";\n\nclass NoopValueAccessor implements ControlValueAccessor {\n writeValue() {\n // No-op: Intentionally empty to prevent value updates\n }\n\n registerOnChange() {\n // No-op: Intentionally empty to prevent change notifications\n }\n\n registerOnTouched() {\n // No-op: Intentionally empty to prevent touch notifications\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class InputService {\n injectNgControl(): FormControlName {\n const ngControl = inject(NgControl, { self: true, optional: true });\n\n if (!ngControl) throw new Error('...');\n\n if (ngControl instanceof FormControlName) {\n ngControl.valueAccessor = new NoopValueAccessor();\n return ngControl;\n }\n\n throw new Error(`...`);\n }\n}\n","import { Injectable } from '@angular/core';\nimport moment from 'moment';\nimport * as momentTimezone from 'moment-timezone';\nimport { HourMinute } from \"../interfaces/hour-minute.interface\";\n\n@Injectable()\nexport class ParseDateService {\n\n toLocaleTime(time: any, format = '', timezoneId: string | null): string {\n format = (format) ? format : 'MM/DD/yyyy hh:mm A';\n const momentDate = momentTimezone.utc(time);\n if (timezoneId) {\n momentDate.tz(timezoneId);\n }\n return momentDate.format(format);\n }\n\n fromLocaleToUtc(time: any, format = '', timezoneId: string | null): string {\n format = (format) ? format : 'MM/DD/yyyy hh:mm A';\n if (timezoneId) {\n return momentTimezone.tz(moment(time).format(format), timezoneId).utc(false).format();\n }\n return '';\n }\n\n toDate(date: string | undefined): Date {\n return moment(date).toDate();\n }\n\n toDateWithFormat(date: string, format: string): Date {\n return moment(date, format).toDate();\n }\n\n getDayDifferentFromCurrentDay(date: Date): number {\n return moment(date).diff(moment(), 'days')\n }\n\n changeFormat(time: any, format: string): string {\n return moment(time).format(format);\n }\n\n changeLocalFormat(time: any, format: string, timezone: string): string {\n return moment(time).tz(timezone).format(format);\n }\n\n addToDate(date: Date | null, toAdd: {second?: number , minute?: number, days?: number} = {}, format?: string | null, type: 'format' | 'date' = 'format' ): string | Date {\n const momentDate = (date ? moment(date) : moment())\n .add(toAdd.second || 0, 'second')\n .add(toAdd.minute || 0, 'minute')\n .add(toAdd.days || 0, 'days');\n\n if (type === 'format') {\n return momentDate.format(format || 'MM/DD/yyyy');\n }\n\n return momentDate.toDate();\n }\n\n getDateForWeekDay(day: number, forWeek = 0): Date {\n return moment().add(forWeek, 'week').day(day).toDate();\n }\n\n getLocalDateForWeekDay(day: number, forWeek = 0, timezoneId: string): Date {\n return moment().tz(timezoneId).add(forWeek, 'week').day(day).toDate();\n }\n\n containsDay(startDate: string, endDate: string, date: string): boolean {\n return moment(date).isBetween(startDate, endDate, 'days', '[]');\n }\n\n getDiff(startDate: string, endDate: string): any {\n return moment(startDate).diff(endDate);\n }\n\n transformHourMinuteToCorrectFormat(data: string | HourMinute, format = 'hh:mm A'): string {\n const dateObj = JSON.parse(JSON.stringify(data));\n const time = '2022-12-12T' + ((+dateObj.hour < 10 ? ('0' + (+dateObj.hour)) : dateObj.hour)\n + ':' + (+dateObj.minute < 10 ? ('0' + (+dateObj.minute)) : dateObj.minute) + ':00');\n return this.changeFormat(time, format);\n }\n\n\n}\n","/**\n * Enum representing different types of buttons.\n */\nexport enum ButtonType {\n /** A filled button with solid background, typically used for primary actions. */\n FILLED = 'FILLED',\n\n /** A tonal button with lighter background, used for secondary actions. */\n TONAL = 'TONAL',\n\n /** An outlined button with a border and no background. */\n OUTLINE = 'OUTLINE',\n\n /** A text button with no background or border, ideal for minimal UI. */\n TEXT = 'TEXT',\n\n /** A warning button with special styling to indicate caution or alert actions. */\n WARNING = 'WARNING',\n\n /** A warning outlined button with a border and no background. */\n WARN_OUTLINE = 'WARN_OUTLINE'\n}\n","export enum DriverCategoryEnum {\n COMPANY_DRIVER = 'COMPANY_DRIVER',\n AGENCY_DRIVER = 'AGENCY_DRIVER',\n INDEPENDENT_CONTRACTOR = 'INDEPENDENT_CONTRACTOR',\n}\n\nexport const DriverCategories: Array<{key: DriverCategoryEnum, name: string}> = [\n { key: DriverCategoryEnum.COMPANY_DRIVER, name: 'Company Driver' },\n { key: DriverCategoryEnum.AGENCY_DRIVER, name: 'Agency Driver' },\n { key: DriverCategoryEnum.INDEPENDENT_CONTRACTOR, name: 'Independent Driver' },\n]\n","export enum LabelTypeEnum {\n 'purple' = 'purple',\n 'teal' = 'teal',\n 'olive' = 'olive',\n 'orange' = 'orange',\n 'blue' = 'blue',\n 'cyan' = 'cyan',\n 'raspberry' = 'raspberry',\n 'yellow' = 'yellow',\n 'wine' = 'wine',\n 'primary' = 'primary',\n 'green' = 'green',\n 'red' = 'red',\n 'neutral' = 'neutral',\n 'black' = 'black',\n 'white' = 'white',\n 'gray' = 'gray',\n 'canceled' = 'canceled',\n 'starts_2m' = 'starts_2m',\n 'starts_10m' = 'starts_10m',\n 'starts_20m' = 'starts_20m',\n 'starts_60m' = 'starts_60m',\n 'starts_2h' = 'starts_2h',\n 'starts_5h' = 'starts_5h',\n 'starts_12h' = 'starts_12h',\n 'starts_24h' = 'starts_24h',\n 'late' = 'late',\n 'late_warning' = 'late_warning',\n}\n","import { TimezoneInterface } from \"./timezone.interface\";\n\nexport interface AuthInterface {\n id: number,\n uniqueId: string,\n email: string,\n countryCode: string,\n phoneNumber: string,\n userName: string,\n firstName: string,\n lastName: string,\n middleName: string,\n image: string,\n accessToken: string,\n refreshToken: string,\n expiresIn: number,\n companyId?: number,\n timeZone?: TimezoneInterface,\n systemRoles?: Array<SystemRoleInterface>,\n userAccountId: number\n}\n\nexport interface OrganizationInterface {\n id: number\n uniqueId: string,\n name: string\n image: string\n isMyCompany: boolean\n systems: Array<CompaniesEnum>\n ownerEmail: string\n userAccountId: number\n}\n\nexport interface SystemRoleInterface {\n roles: Array<{key: RoleEnum}>\n system: CompaniesEnum\n}\n\nexport enum RoleEnum {\n T3_ROLE_DISPATCHER = 'T3_ROLE_DISPATCHER',\n T3_ROLE_ADMIN = 'T3_ROLE_ADMIN',\n ROLE_DISPATCHER = 'ROLE_DISPATCHER',\n ROLE_ADMIN = 'ROLE_ADMIN',\n ROLE_OWNER = 'ROLE_OWNER',\n ROLE_TMT_ADMIN = 'ROLE_TMT_ADMIN',\n ROLE_TMT_DISPATCHER = 'ROLE_TMT_DISPATCHER',\n ROLE_TMT_DRIVER = 'ROLE_TMT_DRIVER',\n ROLE_T3_DRIVER = 'ROLE_T3_DRIVER',\n ROLE_OPS_MANAGER = 'ROLE_OPS_MANAGER'\n}\n\nexport enum CompaniesEnum {\n T3 = \"T3\",\n TMT = \"TMT\",\n BROKERAGE = \"BROKERAGE\",\n ORGANIZATION = \"ORGANIZATION\",\n}\n","import {\n Directive,\n ElementRef, HostListener,\n Input\n} from '@angular/core';\n\n@Directive({\n selector: '[inputMask]',\n standalone: true\n})\nexport class InputMaskDirective {\n @Input() inputMask!: 'number' | 'string';\n @Input() set min(value: string) {\n this.minimumValue = Number(value);\n }\n @Input() set max(value: string) {\n this.maximumValue = Number(value);\n }\n @Input() set float(value: string) {\n this.isFloat = value === 'true';\n }\n minimumValue!: number;\n maximumValue!: number;\n isFloat!: boolean;\n regexFloat = new RegExp(/^([0-9]*[.])?[0-9]+$/);\n regexOnlyNumbers = new RegExp(/^-?[0-9]+(?:\\.[0-9]+)?$/);\n\n @HostListener('paste', ['$event'])\n onPaste(event: any) {\n this.makeValidation(event, true)\n }\n\n constructor(private elementRef: ElementRef) {\n this.elementRef.nativeElement.addEventListener('keypress', (event: Event) => {\n this.makeValidation(event)\n })\n }\n\n makeValidation(event: any, fromPaste = false): boolean {\n let value: any;\n let newChar: any;\n\n if (!fromPaste) {\n newChar = String.fromCharCode(event.keyCode);\n const cursorPos = event.target.selectionStart;\n const inputText = event.target.value;\n value = `${inputText.slice(0, cursorPos)}${newChar}${inputText.slice(cursorPos, inputText.length)}`;\n } else {\n value = event.clipboardData?.getData('text/plain');\n }\n\n if (this.inputMask === 'number') {\n return this.checkingForNumbers(value, event, newChar, fromPaste);\n } else if (this.inputMask === 'string') {\n return this.checkingForTexts(value, event);\n } else {\n return true\n }\n }\n\n checkingForNumbers(value: any, event: any, newChar: string, fromPaste = false): boolean {\n if ((isNaN(this.minimumValue) || this.minimumValue < 0) && value === '-') { value = Number('-0'); }\n\n if (this.isFloat && (newChar === '.')) {\n value += '0';\n }\n if (!this.isFloat && fromPaste && value.includes('.')) {\n event.preventDefault();\n return false;\n }\n\n const regex = (this.isFloat) ? this.regexFloat : this.regexOnlyNumbers;\n\n if (!regex.test(value) ||\n (this.minimumValue && value < this.minimumValue) ||\n (this.maximumValue && value > this.maximumValue)\n ) {\n event.preventDefault();\n return false;\n }\n\n return true;\n }\n\n checkingForTexts(value: any, event: any): boolean {\n const regex = new RegExp(/^[A-Za-z0-9]*$/);\n if (!regex.test(value)) {\n event.preventDefault();\n return false;\n }\n\n return true;\n }\n\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatFabButton, MatIconButton } from \"@angular/material/button\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatIcon } from \"@angular/material/icon\";\n\n@Component({\n selector: 'i-tech-icon-button',\n templateUrl: './icon-button.component.html',\n styleUrl: './icon-button.component.scss',\n imports: [\n MatIconButton,\n NgClass,\n MatTooltip,\n TranslateModule,\n MatIcon,\n MatFabButton,\n NgIf\n ],\n standalone: true\n})\nexport class IconButtonComponent {\n @Input() size: 'medium' | 'small' = 'medium';\n @Input() type: 'standard' | 'filled' | 'tonal' | 'bordered' = 'tonal';\n @Input() borderColor: 'primary' | 'warn' = 'primary';\n @Input() iconSvg!: string;\n @Input() iconName!: string;\n @Input() tooltip!: string;\n @Input() disabled!: boolean;\n @Input() testId!: string;\n @Input() fillColor!: string;\n @Output() buttonClick = new EventEmitter<void>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.buttonClick.emit();\n }\n }\n}\n","<button\n *ngIf=\"['tonal','standard', 'bordered'].includes(type)\"\n mat-icon-button\n [class]=\"borderColor\"\n [ngClass]=\"{\n small: size === 'small',\n tonal: type === 'tonal',\n standard: type === 'standard',\n bordered: type === 'bordered'\n }\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n [attr.data-testId]=\"testId\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n\n<button\n *ngIf=\"type === 'filled'\"\n mat-fab\n class=\"filled\"\n [ngClass]=\"{small: size === 'small'}\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [color]=\"'primary'\"\n [attr.data-testId]=\"testId\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n [style.--mdc-fab-container-color]=\"fillColor || null\"\n [style.--mat-fab-state-layer-color]=\"fillColor || null\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormControlName, ReactiveFormsModule } from '@angular/forms';\nimport { InputService } from '../../services/input.service';\nimport { AppInputInterface } from \"../../interfaces/app-input.interface\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatInput } from \"@angular/material/input\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { InputMaskDirective } from \"../../directives/input-mask.directive\";\nimport { NgxMaskDirective } from \"ngx-mask\";\nimport { CdkTextareaAutosize, TextFieldModule } from '@angular/cdk/text-field';\n\n@Component({\n selector: 'i-tech-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: ['./text-input.component.scss'],\n imports: [\n TranslateModule,\n NgClass,\n MatIcon,\n MatTooltip,\n MatInput,\n ReactiveFormsModule,\n NgIf,\n GenerateErrorMessagesPipe,\n IconButtonComponent,\n InputMaskDirective,\n NgxMaskDirective,\n MatFormFieldModule,\n TextFieldModule\n ],\n standalone: true\n})\nexport class TextInputComponent {\n @ViewChild('inputElement') input!: ElementRef;\n\n @Input() set inputData(data: AppInputInterface) {\n // If submit becomes true, mark the control as touched\n if (data?.submit && this.ngControl.control) {\n this.ngControl.control.markAsTouched();\n }\n this._inputData = data;\n }\n\n get inputData(): AppInputInterface {\n return this._inputData;\n }\n\n @Output() focusOutEmitter = new EventEmitter<void>();\n @Output() valueChangeEmitter = new EventEmitter<any>();\n\n private _inputData!: AppInputInterface;\n ngControl: FormControlName;\n closed = true;\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n onFocusOut(): void {\n if (this._inputData.focusOutEmit) {\n this.focusOutEmitter.emit();\n }\n }\n\n clear(): void {\n if (this.ngControl && !this.isDisabled) {\n // Temporarily disable valueChanges emission to prevent emitting the current value\n const originalEmitValueChanges = this._inputData?.emitValueChanges;\n if (this._inputData) {\n this._inputData.emitValueChanges = false;\n }\n\n this.ngControl.control.reset();\n\n // Manually emit null value if emitValueChanges was enabled\n if (originalEmitValueChanges) {\n this.valueChangeEmitter.emit(null);\n }\n\n // Restore the original emitValueChanges setting\n if (this._inputData) {\n this._inputData.emitValueChanges = originalEmitValueChanges;\n }\n }\n }\n\n toggleEye(): void {\n if (!this.isDisabled) {\n this.closed = !this.closed;\n this.input.nativeElement.type = this.closed ? 'password' : 'text';\n }\n }\n\n onValueChange(): void {\n if (this._inputData?.emitValueChanges) {\n this.valueChangeEmitter.emit(this.ngControl.control.value);\n }\n }\n\n get hasValue(): boolean {\n return !!(this.ngControl?.control?.value && this.ngControl.control.value.toString().trim().length > 0);\n }\n\n get isDisabled(): boolean {\n return this._inputData?.readOnly || this.ngControl?.control?.disabled || false;\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.inputData?.submit);\n }\n };\n}\n","<div *ngIf=\"inputData && ngControl\">\n <div class=\"w-100\" *ngIf=\"inputData.hideLabel !== true && (inputData.label || inputData.required)\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : isDisabled,\n 'invalid-label-color': !!(ngControl.control.errors && inputData.submit)\n }\"\n *ngIf=\"inputData.label\">\n {{ inputData.label | translate }}\n </mat-label>\n <span *ngIf=\"inputData.required\" class=\"required-input\"\n [ngClass]=\"{'readonly-color' : isDisabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" class=\"w-100\"\n [class.readonly-field]=\"isDisabled\"\n >\n <!-- Leading Icon -->\n <mat-icon *ngIf=\"inputData.iconPrefix\"\n matPrefix\n [ngClass]=\"{\n 'readonly-color' : !inputData.iconPrefixColor && isDisabled,\n 'default-form-icon-color' : !inputData.iconPrefixColor && !isDisabled\n }\"\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\n [style.color]=\"inputData.iconPrefixColor || null\"\n >{{ inputData.iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"inputData.iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"inputData.iconPrefixSvg\"\n ></mat-icon>\n\n <!-- Input Field -->\n <input matInput #inputElement\n *ngIf=\"!inputData.textarea\"\n [type]=\"inputData.type || 'text'\"\n [readonly]=\"inputData.readOnly\"\n [placeholder]=\"(inputData.placeholder || '') | translate\"\n [pattern]=\"inputData.pattern!\"\n [formControl]=\"ngControl.control\"\n [attr.data-testId]=\"inputData.testId\"\n [mask]=\"inputData.mask || ''\"\n [ngClass]=\"{'readonly-color readonly-cursor' : isDisabled}\"\n [inputMask]=\"inputData.inputMask!\"\n [float]=\"'' + (inputData.float || false)\"\n [min]=\"('' + inputData.min)\"\n [max]=\"('' + inputData.max)\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n (blur)=\"onFocusOut()\"\n (input)=\"onValueChange()\"\n >\n\n <textarea matInput\n cdkTextareaAutosize\n *ngIf=\"inputData.textarea\"\n [type]=\"inputData.type || 'text'\"\n [readonly]=\"inputData.readOnly\"\n [placeholder]=\"(inputData.placeholder || '') | translate\"\n [pattern]=\"inputData.pattern!\"\n [formControl]=\"ngControl.control\"\n [ngClass]=\"{'readonly-color' : isDisabled}\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n (input)=\"onValueChange()\"\n ></textarea>\n\n <!-- Clear Icon -->\n <i-tech-icon-button\n *ngIf=\"inputData.clearable && hasValue\"\n iconName=\"cancel\"\n [ngClass]=\"isDisabled ? 'readonly-color' : 'default-form-icon-color'\"\n class=\"clear-icon-overlay\"\n (click)=\"clear()\"\n >\n </i-tech-icon-button>\n\n <i-tech-icon-button\n *ngIf=\"inputData.type === 'password'\"\n [iconName]=\"closed ? 'visibility' : 'visibility_off'\"\n matSuffix\n [ngClass]=\"isDisabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"toggleEye()\"\n >\n </i-tech-icon-button>\n\n <!-- Trailing Icon -->\n <i-tech-icon-button\n *ngIf=\"inputData.iconSuffix\"\n [iconName]=\"inputData.iconSuffix\"\n [matTooltip]=\"inputData.iconSuffixTooltip ? (inputData.iconSuffixTooltip | translate) : ''\"\n [matTooltipPosition]=\"'right'\"\n [ngClass]=\"isDisabled ? 'readonly-color' : 'default-form-icon-color'\"\n matSuffix\n >\n </i-tech-icon-button>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && inputData.submit)\">\n {{ ngControl.control | generateErrorMessages : (inputData.label || '') : inputData.defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && inputData.submit)) && inputData.hint\">\n {{ inputData.hint | translate }}\n </mat-hint>\n </mat-form-field>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButton } from \"@angular/material/button\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatProgressSpinner } from \"@angular/material/progress-spinner\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { TranslateModule, TranslatePipe, TranslateService } from \"@ngx-translate/core\";\nimport { ButtonType } from '../../interfaces/button-types.enum';\nimport { NgxMaskDirective, NgxMaskPipe } from 'ngx-mask';\n\n/**\n * A reusable button component with Material Design styling and custom functionality.\n */\n@Component({\n selector: 'i-tech-button',\n standalone: true,\n imports: [\n MatButton,\n NgClass,\n MatProgressSpinner,\n NgIf,\n MatIconModule,\n TranslateModule\n ],\n templateUrl: './button.component.html',\n styleUrl: './button.component.css',\n providers: [\n NgxMaskDirective,\n NgxMaskPipe,\n TranslatePipe,\n TranslateService\n ]\n})\nexport class ButtonComponent {\n /**\n * The text displayed inside the button.\n */\n @Input() text = '';\n\n /**\n * Data attribute used for Cypress or other testing frameworks.\n */\n @Input() testId = '';\n\n /**\n * Font icon class for displaying an icon (e.g., Material Icons).\n */\n @Input() fontIcon = '';\n\n /**\n * SVG icon name for displaying an SVG icon.\n */\n @Input() svgIcon = '';\n\n /**\n * Defines the type of button (e.g., `FILLED`, `OUTLINED`).\n */\n @Input() type: ButtonType = ButtonType.FILLED;\n\n /**\n * Additional custom classes to style the button.\n */\n @Input() customClass = '';\n\n /**\n * If true, the button acts as a submit button.\n */\n @Input() submit = false;\n\n /**\n * If true, the button is disabled and cannot be clicked.\n */\n @Input() disabled = false;\n\n /**\n * Indicates whether the button is currently activated.\n */\n @Input() activated = false;\n\n /**\n * The color of the button (e.g., `primary`, `warn`).\n */\n @Input() color: 'primary' | 'warn' = 'primary';\n\n /**\n * Emits an event when the button is clicked.\n */\n @Output() buttonClick = new EventEmitter<void>();\n\n /**\n * Enum reference for `ButtonType` to use in templates.\n */\n protected readonly ButtonType = ButtonType;\n\n /**\n * Handles the button click event.\n *\n * @param event - The mouse event triggered by clicking the button.\n */\n onClick(event: MouseEvent): void {\n if (!this.disabled && !this.submit) {\n this.buttonClick.emit();\n }\n }\n}\n","<button *ngIf=\"[ButtonType.FILLED,ButtonType.WARNING].includes(type)\"\n mat-flat-button\n [attr.data-testId]=\"testId\"\n [color]=\"type === ButtonType.WARNING ? 'warn' : color\"\n [class.activated]=\"activated\"\n [ngClass]=\"(customClass || '')\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span style=\"white-space: nowrap\">{{text | translate}}</span>\n</button>\n<button *ngIf=\"[ButtonType.TONAL,ButtonType.TEXT].includes(type)\"\n mat-button\n [attr.data-testId]=\"testId\"\n [ngClass]=\"(type === ButtonType.TONAL ? 'tertiary ' : '') + (customClass || '')\"\n [class.activated]=\"activated\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n\n <span>{{text | translate}}</span>\n</button>\n<button *ngIf=\"[ButtonType.OUTLINE,ButtonType.WARN_OUTLINE].includes(type)\"\n mat-stroked-button\n [attr.data-testId]=\"testId\"\n [ngClass]=\"(customClass || '') \"\n [color]=\"type === ButtonType.WARN_OUTLINE ? 'warn' : color\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n [class.activated]=\"activated\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\" >{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span>{{text | translate}}</span>\n</button>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NgClass, NgOptimizedImage } from \"@angular/common\";\n\n@Component({\n selector: 'i-tech-clear-value',\n template: `<img\n class=\"pointer\"\n [ngClass]=\"className || 'standard'\"\n (click)=\"resetValue.emit()\"\n ngSrc=\"./ic_close.svg\"\n height=\"24\" width=\"24\" alt=\"\"/>`,\n styles: [`\n img {\n position: absolute;\n width: 15px;\n height: 15px;\n }\n\n .big {\n width: 25px;\n height: 25px;\n }\n\n .range_date {\n right: -65px;\n top: 15px;\n }\n\n .standard {\n right: -20px;\n top: 40px;\n }\n `],\n imports: [\n NgClass,\n NgOptimizedImage\n ],\n standalone: true\n})\nexport class ClearValueComponent {\n @Input() className!: string;\n @Input() additionalClass!: string;\n @Output() resetValue = new EventEmitter<any>();\n}\n","import {\n Component,\n ViewChild,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n ElementRef, HostListener, AfterViewInit\n} from '@angular/core';\nimport { MatSelect, MatSelectModule } from \"@angular/material/select\";\nimport { AutocompleteConfigsInterface } from \"../../interfaces/autocomplete-configs.interface\";\nimport { FormControlName, ReactiveFormsModule } from \"@angular/forms\";\nimport { InputService } from '../../services/input.service';\nimport { ButtonType } from '../../interfaces/button-types.enum';\nimport { NgClass, NgFor, NgIf } from \"@angular/common\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { ButtonComponent } from \"../button/button.component\";\nimport { GetValueByKeyFromObjectPipe } from \"../../pipes/get-value-by-key-from-object.pipe\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { ClearValueComponent } from \"../clear-value/clear-value.component\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\n\n@Component({\n selector: 'i-tech-autocomplete-select',\n templateUrl: './autocomplete-select.component.html',\n styleUrls: ['./autocomplete-select.component.scss'],\n imports: [\n NgClass,\n MatTooltip,\n NgIf,\n NgFor,\n TranslateModule,\n IconButtonComponent,\n ReactiveFormsModule,\n MatSelectModule,\n ButtonComponent,\n GetValueByKeyFromObjectPipe,\n MatIcon,\n GenerateErrorMessagesPipe,\n ClearValueComponent,\n MatFormFieldModule\n ],\n standalone: true\n})\nexport class AutocompleteSelectComponent implements OnChanges, AfterViewInit {\n @ViewChild('matSelect') matSelect!: MatSelect;\n @ViewChild('searchInput') searchInput!: ElementRef;\n @Input() className!: string;\n @Input() submitValue!: boolean;\n @Input() hideErrorText = false;\n @Input() defaultValueForFirst!: string;\n private _lastConfigSignature = '';\n\n @Input() set configs(data: AutocompleteConfigsInterface) {\n if (!data) {\n this.selectConfig = data;\n return;\n }\n\n // Generate a signature that works with functions\n const signature = JSON.stringify(data, (key, value) => {\n // Replace functions with a stable placeholder\n return typeof value === 'function' ? '[Function]' : value;\n });\n\n // Stop if config hasn't actually changed\n if (this._lastConfigSignature === signature) {\n this.selectConfig = data; // Update reference but skip initialization\n return;\n }\n\n // Config changed - proceed with initialization\n this._lastConfigSignature = signature;\n this.selectConfig = data;\n\n // Set default search strategy to 'backend' if not specified\n if (!this.selectConfig.searchStrategy) {\n this.selectConfig.searchStrategy = 'backend';\n }\n\n if ((typeof this.selectConfig.paginate) === 'function') {\n if (this.firstRequest) {\n return;\n }\n this.pending = true;\n this.getData();\n this.firstRequest = true\n return;\n }\n\n this.data = this.selectConfig.paginate;\n this.allData = [...this.data]; // Store all data for local search\n this.findAndSetDefaultValueFromData();\n };\n\n @Input() detectChanges!: boolean;\n @Output() selectionChange = new EventEmitter<any>();\n @Output() multiSelectSelectionChange = new EventEmitter<any>();\n @Output() emitAction = new EventEmitter<any>();\n @ViewChild('allSelected') allSelected!: MatSelect;\n pending = false;\n defaultValue!: any;\n data: Array<any> = [];\n allData: Array<any> = []; // Store all data for local search\n paginationData: any = { current: 1, last: 0, searchValue: '' };\n ngControl: FormControlName;\n selectConfig!: AutocompleteConfigsInterface;\n firstRequest = false;\n showPlaceholder = true;\n isNeededForRecall = false;\n showingValue: any;\n selectedOptionForMultipleSelection: Array<any> = [];\n multiSelectedValues: Array<any> = [];\n searchTimeoutId: any;\n tabVisibility!: boolean;\n accessToNextRequest = true;\n disabled = false;\n blockRecallDefaultValueSetter = false;\n baseData: any;\n requestLoading = false;\n protected readonly ButtonType = ButtonType;\n\n @HostListener('document:visibilitychange')\n handleVisibilityChange(): void {\n this.tabVisibility = !document.hidden;\n if (this.ngControl.control.value) {\n return;\n }\n this.closePanelAndUnsetFocus();\n if (!document.hidden) {\n this.isNeededForRecall = true;\n this.pending = true;\n setTimeout(() => {\n this.pending = false\n }, 4000)\n }\n }\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n get isDisabled(): boolean {\n return this.selectConfig?.readOnly || this.ngControl?.control?.disabled || false;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['selectConfig'] && this.selectConfig) {\n if ((typeof this.selectConfig.paginate) === 'function') {\n this.getData();\n }\n }\n }\n\n ngAfterViewInit() {\n this.ngControl.control.valueChanges.subscribe((newValue: any) => {\n // If we have data and a value\n if (this.data.length && newValue) {\n // Check if the current default value doesn't match the new value\n if (!this.defaultValue || this.defaultValue.id !== newValue) {\n // Reset the block flag to allow updating the value\n this.blockRecallDefaultValueSetter = false;\n this.findAndSetDefaultValueFromData();\n }\n } else if (newValue && !this.data.length) {\n // If we have a value but no data, we need to fetch the data\n this.blockRecallDefaultValueSetter = false;\n this.isNeededForRecall = true;\n this.reCallData();\n } else if (!newValue) {\n this.resetVariables();\n }\n });\n }\n\n hardReload(): void {\n this.getData('', true);\n }\n\n resetVariables(): void {\n this.defaultValueForFirst = '';\n this.showingValue = null;\n this.accessToNextRequest = true;\n this.pending = false;\n this.requestLoading = false;\n this.defaultValue = null;\n if (this.searchInput?.nativeElement) {\n this.searchInput.nativeElement.value = '';\n }\n }\n\n resetAllAndHardReload(): void {\n this.resetVariables();\n this.getData('', true);\n }\n\n /**\n * Dynamic request for select data.\n * @param searchText - The input value to search options by.\n * @param fromSearch - Access for search.\n * @returns Select data.\n */\n getData(searchText?: string, fromSearch?: boolean): void {\n // For local search strategy, don't make backend calls on search\n if (this.selectConfig.searchStrategy === 'local' && fromSearch && this.allData.length > 0) {\n this.performLocalSearch(searchText || '');\n return;\n }\n\n if (!fromSearch && !this.accessToNextRequest) {\n return;\n }\n\n if (this.requestLoading) {\n return;\n }\n\n if (fromSearch) {\n this.paginationData.current = 1;\n this.accessToNextRequest = true;\n this.paginationData.searchValue = searchText || '';\n }\n const functionToDo = this.selectConfig.paginate(this.paginationData.current, this.paginationData?.searchValue || '');\n\n this.requestLoading = true;\n functionToDo?.subscribe((data: Array<any> | any) => {\n const dataToAdd = ('content' in data) ? data.content : data;\n\n if ('content' in data) {\n this.accessToNextRequest = !data.last || (data.totalPages > this.paginationData.current);\n }\n\n this.data = (fromSearch || this.selectConfig?.blockPagination) ? dataToAdd : [...this.data, ...dataToAdd];\n\n // Store all data for local search\n if (this.selectConfig.searchStrategy === 'local') {\n this.allData = [...this.data];\n }\n\n this.pending = false;\n this.requestLoading = false;\n\n if (!dataToAdd.length) {\n this.paginationData.last = this.paginationData.current;\n return;\n }\n\n this.paginationData.current += 1;\n this.paginationData.last += 1;\n\n setTimeout(() => {\n this.findAndSetDefaultValueFromData();\n }, 10)\n }, () => {\n this.pending = false;\n this.requestLoading = false;\n })\n }\n\n performLocalSearch(searchText: string): void {\n if (!searchText || searchText.trim() === '') {\n // If no search text, show all data\n this.data = [...this.allData];\n this.pending = false;\n return;\n }\n\n const searchLower = searchText.toLowerCase().trim();\n\n // Filter data based on valueToShowByKey\n this.data = this.allData.filter((item: any) => {\n const searchableText = this.buildSearchableText(item);\n return searchableText.toLowerCase().includes(searchLower);\n });\n\n this.pending = false;\n }\n\n buildSearchableText(item: any): string {\n if (!this.selectConfig.valueToShowByKey) {\n return '';\n }\n\n let returnValue: any = item;\n this.selectConfig.valueToShowByKey.forEach((key: string | number) => {\n if (!returnValue) { return; }\n returnValue = returnValue[key];\n })\n return returnValue;\n }\n\n findAndSetDefaultValueFromData(): void {\n if (this.selectConfig.multiple) {\n if (this.ngControl.value && Array.isArray(this.ngControl.value) && this.ngControl.value.length > 0) {\n // Only add items from current data that aren't already tracked\n this.ngControl.value.forEach((selectedValue: any) => {\n // Check if we already have this value tracked\n const alreadyTracked = this.selectedOptionForMultipleSelection.find(item => {\n const itemValue = this.selectConfig.valueByKey ? item[this.selectConfig.valueByKey[0]] : item;\n return itemValue === selectedValue;\n });\n\n // Only add if not already tracked and exists in current data\n if (!alreadyTracked) {\n // For local search, check in allData instead of just data\n const sourceData = this.selectConfig.searchStrategy === 'local' ? this.allData : this.data;\n const matchingItem = sourceData.find((item) => {\n const itemValue = this.selectConfig.valueByKey ? item[this.selectConfig.valueByKey[0]] : item;\n return itemValue === selectedValue;\n });\n\n if (matchingItem) {\n this.selectedOptionForMultipleSelection.push(matchingItem);\n }\n }\n });\n\n // Update the showing value if we have selections\n if (this.selectedOptionForMultipleSelection.length > 0) {\n this.setShowingValue(this.selectedOptionForMultipleSelection[0]);\n }\n }\n } else {\n if (!this.ngControl.value && !this.data && !this.showingValue) {\n return;\n }\n this.setDefaultValue();\n }\n }\n\n setDefaultValue(): void {\n // For local search, check in allData instead of just data\n const sourceData = this.selectConfig.searchStrategy === 'local' ? this.allData : this.data;\n\n if (this.selectConfig.compareObjectsForDefaultValue) {\n this.defaultValue = sourceData.find((item) => JSON.stringify(item) === JSON.stringify(this.ngControl.value));\n } else {\n this.defaultValue = sourceData.find((item) => item.id === this.ngControl.value);\n }\n\n this.baseData = this.defaultValue;\n if (!this.defaultValue && !this.defaultValueForFirst) {\n return;\n }\n this.setShowingValue(this.defaultValue || this.defaultValueForFirst);\n }\n\n clearSelectedValue(event: any): void {\n event.stopPropagation();\n event.preventDefault();\n this.ngControl.control.reset(null);\n this.matSelect._onBlur();\n this.closePanelAndUnsetFocus();\n this.selectionChange.emit(null);\n }\n\n optionClick(showingData: any): void {\n this.baseData = showingData\n if (!this.selectConfig.multiple) {\n this.setShowingValue(showingData);\n this.matSelect.close();\n return;\n }\n\n // For multiple selection, let Angular Material handle the selection\n this.showPlaceholder = false;\n }\n\n addNewItemEvent(): void {\n this.isNeededForRecall = true;\n this.emitAction.emit();\n }\n\n /**\n * Filter and show.\n * @param data - Existing chosen data.\n */\n setShowingValue(data: any): void {\n if (!data) {\n return;\n }\n if (this.selectConfig.multiple && this.selectConfig.search) {\n const fullText: Array<string> = [];\n this.selectedOptionForMultipleSelection.forEach((optionData: any) => {\n fullText.push(this.collectAndGetSelectionToShowForOneOption(optionData))\n })\n this.multiSelectedValues = fullText;\n this.showingValue = fullText.join(',');\n } else {\n this.showingValue = this.collectAndGetSelectionToShowForOneOption(data);\n }\n\n if (!this.showingValue && this.defaultValueForFirst) {\n this.showingValue = this.defaultValueForFirst;\n }\n\n this.blockRecallDefaultValueSetter = true;\n }\n\n collectAndGetSelectionToShowForOneOption(data: any): string {\n let include = data;\n let includeOptional = data;\n\n if (this.selectConfig.valueToShowByKey) {\n this.selectConfig.valueToShowByKey.forEach((param: Array<string | number> | string) => {\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n include = (include) ? include[key] : null;\n })\n } else {\n include = include[param];\n }\n })\n if (this.selectConfig.showFullTextWithOptionalOnSelectedValue) {\n this.selectConfig.valueToShowByParam?.forEach((param: Array<string | number> | string) => {\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n includeOptional = (includeOptional) ? includeOptional[key] : null;\n })\n } else {\n includeOptional = includeOptional[param];\n }\n })\n if (this.selectConfig.valueToShowByParam && typeof includeOptional === 'string') {\n include += (this.selectConfig.withParamSymbol || '') + includeOptional\n }\n }\n }\n\n return include;\n }\n\n /**\n * Block another events.\n * @param event - Element click event.\n */\n preventDefault(event: any) {\n if (!this.selectConfig.multiple) {\n return;\n }\n event.preventDefault()\n }\n\n registerPanelScrollEvent(element: MatSelect) {\n // Disable scroll pagination for local search\n if (this.selectConfig.searchStrategy === 'local') {\n return;\n }\n\n if (this.selectConfig.paginateOnScroll === false || !element.panel) {\n return;\n }\n\n const panel = element.panel.nativeElement;\n panel.addEventListener('scroll', (event: any) => this.loadDataOnScroll(event));\n }\n\n loadDataOnScroll(event: any) {\n // Don't paginate on scroll for local search\n if (this.selectConfig.searchStrategy === 'local') {\n return;\n }\n\n const pos = (event.target.scrollTop || event.target.scrollTop) + event.target.offsetHeight;\n const max = event.target.scrollHeight;\n if ((pos + 1) >= max) {\n if (this.paginationData.current === this.paginationData.last || this.selectConfig.blockPagination) {\n return;\n }\n this.getData();\n }\n }\n\n focusSearchInput() {\n if (this.selectConfig.search && this.searchInput) {\n this.searchInput.nativeElement.focus();\n this.searchInput.nativeElement.value = ''\n }\n }\n\n inputFocusOut(): void {\n this.isNeededForRecall = !!this.searchInput.nativeElement.value;\n this.searchInput.nativeElement.value = '';\n this.showPlaceholder = true;\n this.clearTimeoutForSearch();\n\n // For local search, reset to show all data when search is cleared\n if (this.selectConfig.searchStrategy === 'local') {\n this.data = [...this.allData];\n }\n }\n\n resetValue(): void {\n this.selectionChange.emit(null);\n this.ngControl.reset(null);\n this.inputFocusOut();\n }\n\n getDataWithSearch(value: any, event: any): void {\n this.clearTimeoutForSearch();\n\n // For local search, apply filtering immediately without timeout\n if (this.selectConfig.searchStrategy === 'local') {\n this.performLocalSearch(value);\n return;\n }\n\n // For backend search, use debounced search\n if (value.length >= 1) {\n this.searchTimeoutId = setTimeout(() => {\n this.getData(value, true)\n }, 800);\n } else if (value.length <= 1 && event.keyCode === 8) {\n this.getData(value, true)\n }\n }\n\n clearTimeoutForSearch(): void {\n if (this.searchTimeoutId) {\n clearTimeout(this.searchTimeoutId);\n this.searchTimeoutId = 0;\n }\n }\n\n openSelection(): void {\n if (this.selectConfig.disabled || this.ngControl.control.disabled) {\n return;\n }\n if (this.showPlaceholder) {\n this.matSelect.open();\n } else {\n this.closePanelAndUnsetFocus();\n }\n this.showPlaceholder = !this.showPlaceholder;\n if (!this.showPlaceholder) {\n this.reCallData();\n }\n }\n\n closePanelAndUnsetFocus(): void {\n this.matSelect.close();\n if (this.searchInput) {\n this.searchInput.nativeElement.blur()\n }\n }\n\n openedChange(event: any) {\n if (event) {\n if (this.isNeededForRecall) {\n this.reCallData();\n return;\n }\n if (!this.selectConfig.search) {\n this.pending = false\n this.reCallData();\n }\n\n return;\n }\n\n // Panel closed\n this.showPlaceholder = true;\n\n // Clear search input ONLY when closing\n if (this.selectConfig.search && this.searchInput) {\n this.searchInput.nativeElement.value = '';\n this.clearTimeoutForSearch();\n\n // For local search, reset to show all data\n if (this.selectConfig.searchStrategy === 'local') {\n this.data = [...this.allData];\n }\n }\n }\n\n reCallData(): void {\n // TODO refactor this part\n if (!this.isNeededForRecall) {\n return;\n }\n this.data = [];\n this.pending = true;\n this.paginationData = {\n current: 1,\n last: 0,\n };\n this.accessToNextRequest = true;\n if ((typeof this.selectConfig.paginate) === 'function') {\n this.getData();\n } else {\n this.pending = false;\n this.data = this.selectConfig.paginate;\n // Store all data for local search\n if (this.selectConfig.searchStrategy === 'local') {\n this.allData = [...this.data];\n }\n }\n this.isNeededForRecall = false;\n }\n\n emitSelectionChangeAndClose(event: any) {\n if (this.selectConfig.multiple) {\n // Get what Angular Material thinks is selected (may be incomplete due to missing options)\n const materialSelectedValues = event.value || [];\n\n // Get the previously selected values that we were tracking\n const previouslyTrackedValues = this.selectedOptionForMultipleSelection.map(item =>\n this.selectConfig.valueByKey ? item[this.selectConfig.valueByKey[0]] : item\n );\n\n // For local search, use allData; for backend search, use data\n const sourceData = this.selectConfig.searchStrategy === 'local' ? this.allData : this.data;\n\n // Find which previously selected values are NOT in the current data (lost due to search)\n const lostValues = previouslyTrackedValues.filter(value =>\n !sourceData.find(item => {\n const itemValue = this.selectConfig.valueByKey ? item[this.selectConfig.valueByKey[0]] : item;\n return itemValue === value;\n })\n );\n\n // Merge: keep lost values + add what Angular Material selected from current data\n const mergedSelectedValues = [...new Set([...lostValues, ...materialSelectedValues])];\n\n // Update Angular Material's form control with the merged selection\n this.ngControl.control.setValue(mergedSelectedValues, { emitEvent: false });\n\n // Now sync our tracking with the complete merged selection\n const selectedValueSet = new Set(mergedSelectedValues);\n\n // Remove any existing selections that are no longer selected\n this.selectedOptionForMultipleSelection = this.selectedOptionForMultipleSelection.filter(item => {\n const itemValue = this.selectConfig.valueByKey ? item[this.selectConfig.valueByKey[0]] : item;\n return selectedValueSet.has(itemValue);\n });\n\n // Add any new selections from current data that aren't already tracked\n mergedSelectedValues.forEach((selectedValue: any) => {\n // Check if we already have this item in our tracking\n const alreadyTracked = this.selectedOptionForMultipleSelection.find(item => {\n const itemValue = this.selectConfig.valueByKey ? item[this.selectConfig.valueByKey[0]] : item;\n return itemValue === selectedValue;\n });\n\n // If not tracked yet, try to find it in current data and add it\n if (!alreadyTracked) {\n const matchingItem = sourceData.find((item) => {\n const itemValue = this.selectConfig.valueByKey ? item[this.selectConfig.valueByKey[0]] : item;\n return itemValue === selectedValue;\n });\n if (matchingItem) {\n this.selectedOptionForMultipleSelection.push(matchingItem);\n }\n }\n });\n\n // Update the display values\n if (this.selectedOptionForMultipleSelection.length > 0) {\n this.setShowingValue(this.selectedOptionForMultipleSelection[0]);\n } else {\n this.showingValue = '';\n this.multiSelectedValues = [];\n }\n\n this.multiSelectSelectionChange.emit(this.multiSelectedValues);\n return;\n }\n this.selectionChange.emit(event.value);\n this.matSelect.close();\n }\n\n /*\n * Open mat-select and focus on search on icon click\n */\n iconClick(matSelect: MatSelect, searchInput?: ElementRef): void {\n matSelect.open();\n searchInput?.nativeElement?.focus();\n }\n\n /*\n * Custom error state matcher for mat-select to properly show error state in mat-form-field\n */\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submitValue);\n }\n };\n}\n","<div class=\"new-mat-autocomplete\" id=\"mat_autocomplete\"\n [ngClass]=\"{\n 'mat-select-without_icon': !selectConfig.iconUrl && !selectConfig.activeStateIconUrl,\n 'mat-select-with-search': selectConfig.search,\n 'without-label': selectConfig.hideLabel,\n 'invalid_field': ngControl.control.errors && submitValue,\n 'readonly-field': isDisabled,\n 'select-with-prefix': selectConfig['iconPrefixSvg'] || selectConfig['iconPrefix']\n }\"\n [matTooltip]=\"(selectConfig.hover && !isDisabled ? ((selectConfig.hover || '') | translate) : '')\"\n [matTooltipClass]=\"'mat-mdc-tooltip big-td-mat-tooltip'\"\n [matTooltipPosition]=\"'above'\"\n *ngIf=\"selectConfig && ngControl\">\n\n <div class=\"w-100\" *ngIf=\"!selectConfig.hideLabel && (selectConfig.label || selectConfig.required)\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : isDisabled,\n 'invalid-label-color': !!(ngControl.control.errors && submitValue)\n }\">\n {{ selectConfig.label | translate }}\n </mat-label>\n <span *ngIf=\"selectConfig.required\" class=\"required-input\"\n [ngClass]=\"{'readonly-color' : isDisabled}\">*</span>\n </div>\n\n\n <!-- Search Input -->\n <div class=\"search-input w-100\"\n (click)=\"$event.stopPropagation();$event.preventDefault()\"\n [ngClass]=\"{ hide_input_placeholder: showPlaceholder || isDisabled }\"\n *ngIf=\"selectConfig.search\"\n >\n <input autocomplete=\"off\"\n id=\"searchInput\"\n type=\"text\"\n [attr.data-testId]=\"selectConfig.testId + '-autocomplete-input'\"\n [ngClass]=\"{'pr-25': !selectConfig.iconUrl, 'readonly-color': isDisabled}\"\n #searchInput\n [disabled]=\"isDisabled\"\n [placeholder]=\"(isDisabled || selectConfig.hover) ? '' : 'Search'\"\n (focus)=\"openSelection()\"\n (keydown)=\"$event.stopPropagation()\"\n (keyup)=\"getDataWithSearch(searchInput.value,$event)\">\n </div>\n\n <!-- Placeholder/Selected Value Display -->\n <ng-container *ngIf=\"showPlaceholder && selectConfig.search\">\n <div class=\"custom-placeholder\"\n *ngIf=\"(!ngControl?.value && !ngControl?.value?.length || !showingValue) ||\n (selectConfig.multiple && ngControl?.value && !ngControl?.value?.length)\"\n [ngClass]=\"isDisabled ? 'readonly-color' : 'default-form-icon-color'\"\n >\n {{ ((selectConfig.placeholder || '') | translate) }}\n </div>\n <div class=\"custom-placeholder custom-value ellipsis\"\n [ngClass]=\"{\n 'pr-42': selectConfig.iconUrl,\n 'readonly-color': isDisabled,\n 'default-form-icon-color': !(isDisabled)\n }\"\n *ngIf=\"ngControl?.value || showingValue\"\n >\n {{showingValue}}\n </div>\n </ng-container>\n\n <!-- Custom Icon -->\n <img class=\"left_icon_new pointer\"\n alt=\"Toggle Selection\"\n (click)=\"iconClick(matSelect, searchInput)\"\n *ngIf=\"!selectConfig.matIconName && (selectConfig.iconUrl || selectConfig.activeStateIconUrl)\"\n [src]=\"'assets/images/icons/global/' + (ngControl.control.value && selectConfig.activeStateIconUrl ?\n selectConfig.activeStateIconUrl\n : selectConfig.iconUrl)\">\n\n <mat-form-field appearance=\"outline\" class=\"w-100\" (click)=\"selectConfig.search ? focusSearchInput() : null\">\n <!-- Material Select -->\n <mat-select #matSelect=\"matSelect\"\n [attr.data-testId]=\"selectConfig.testId + '-autocomplete-select'\"\n [panelClass]=\"'autocomplete-transform-panel-location'\"\n [attr.aria-placeholder]=\"(selectConfig.placeholder || '') | translate\"\n [aria-label]=\"selectConfig.label | translate\"\n [id]=\"selectConfig.filtrationKey || ''\"\n (opened)=\"registerPanelScrollEvent(matSelect)\"\n (openedChange)=\"openedChange($event)\"\n [formControl]=\"ngControl.control\"\n [multiple]=\"selectConfig.multiple\"\n (selectionChange)=\"emitSelectionChangeAndClose($event)\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [placeholder]=\"(selectConfig.placeholder || '') | translate\"\n >\n\n <!-- Loading State -->\n <mat-option *ngIf=\"pending\" class=\"option_loading relative\">\n <div class=\"request_loading\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n style=\"margin: auto; background: none; display: block; shape-rendering: auto;\" viewBox=\"0 0 100 100\" width=\"40px\" height=\"40px\">\n <circle cx=\"50\" cy=\"50\" fill=\"none\" stroke=\"#00AC47\" stroke-width=\"10\" r=\"35\" stroke-dasharray=\"164.93361431346415 56.97787143782138\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" repeatCount=\"indefinite\"\n dur=\"1s\" values=\"0 50 50;360 50 50\" keyTimes=\"0;1\"></animateTransform>\n </circle>\n </svg>\n </div>\n </mat-option>\n\n <!-- Options -->\n <ng-container *ngIf=\"data?.length && !pending\">\n <!-- Add New Option -->\n <mat-option *ngIf=\"selectConfig.actions\"\n class=\"pointer add_new\"\n disabled\n (click)=\"closePanelAndUnsetFocus();addNewItemEvent()\">\n <!--(click)=\"ngControl.control.reset(null);\n matSelect._onBlur();closePanelAndUnsetFocus();addNewItemEvent()\">-->\n <i-tech-button\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \"\n [customClass]=\"'w-100 mat-autocomplete-select-button'\">\n </i-tech-button>\n </mat-option>\n\n <!-- Regular Options -->\n <ng-container *ngIf=\"!selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (click)=\"optionClick(item)\"\n >\n @if (selectConfig.needTranslateOptions) {\n {{\n ((selectConfig.valueToShowByKey | getValueByKeyFromObject\n : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '') | translate\n }}\n }@else {\n {{\n ((selectConfig.valueToShowByKey | getValueByKeyFromObject\n : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '')\n }}\n }\n <div class=\"sub_value\" *ngIf=\"selectConfig.subValueToShow\">\n {{\n ((selectConfig.subValueToShow | getValueByKeyFromObject\n : item : null : '' ) || '')\n }}\n </div>\n </mat-option>\n </ng-container>\n\n <!-- Custom Text Options -->\n <ng-container *ngIf=\"selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (click)=\"optionClick(item)\"\n [disabled]=\"selectConfig.changeText[item].disabled\"\n >\n {{ selectConfig.needTranslateOptions ? (selectConfig.changeText[item].text | translate ) : selectConfig.changeText[item].text}}\n </mat-option>\n </ng-container>\n </ng-container>\n\n <!-- Empty State -->\n <ng-container *ngIf=\"!pending && !data.length\">\n <mat-option disabled class=\"empty_selection_state\">\n <div class=\"actions_and_tile add_new flex_column w-100 flex_center_align_center\">\n <span>{{ 'dropdown_no_items' | translate }}</span>\n <div class=\"mt-10\">\n <i-tech-button\n *ngIf=\"selectConfig?.actions\"\n [type]=\"ButtonType.OUTLINE\"\n (buttonClick)=\"closePanelAndUnsetFocus();addNewItemEvent()\"\n [customClass]=\"'mat-autocomplete-select-button'\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \">\n </i-tech-button>\n </div>\n </div>\n </mat-option>\n </ng-container>\n </mat-select>\n <mat-icon *ngIf=\"selectConfig.iconPrefix\"\n matPrefix\n [ngClass]=\"{\n 'readonly-color' : !selectConfig['iconPrefixColor']\n && (isDisabled),\n 'default-form-icon-color' : !selectConfig['iconPrefixColor']\n && !(isDisabled)\n }\"\n [matTooltip]=\"((selectConfig['iconPrefixTooltip'] || '') | translate)\"\n >{{ selectConfig.iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"selectConfig['iconPrefixSvg']\"\n matPrefix\n [matTooltip]=\"((selectConfig['iconPrefixTooltip'] || '') | translate)\"\n [svgIcon]=\"selectConfig['iconPrefixSvg'] || ''\"\n ></mat-icon>\n\n <i-tech-icon-button\n *ngIf=\"selectConfig.clearable && !isDisabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [ngClass]=\"isDisabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"clearSelectedValue($event)\"\n >\n </i-tech-icon-button>\n <mat-icon\n matSuffix\n class=\"select-arrow\"\n [class.open]=\"matSelect.panelOpen\"\n [ngClass]=\"{\n 'readonly-color': isDisabled,\n 'default-form-icon-color': !(isDisabled),\n 'mt-8': !!ngControl.control.value && selectConfig.clearable\n }\"\n >\n keyboard_arrow_down\n </mat-icon>\n <!-- Error Message -->\n <mat-error *ngIf=\"!hideErrorText && !!(ngControl.control.errors && submitValue)\">\n {{ ngControl.control | generateErrorMessages : selectConfig.label : selectConfig.defaultPatternKey }}\n </mat-error>\n </mat-form-field>\n\n <!-- Reset Button -->\n <i-tech-clear-value *ngIf=\"selectConfig.reset\" (resetValue)=\"resetValue()\"></i-tech-clear-value>\n</div>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Injector, Input\n} from '@angular/core';\nimport { NgxMaskDirective, NgxMaskService } from 'ngx-mask';\nimport { MatDatepicker } from \"@angular/material/datepicker\";\nimport { AbstractControl } from \"@angular/forms\";\n\n@Directive({\n selector: '[dateMask]',\n providers:[NgxMaskDirective],\n standalone: true\n})\nexport class DateMaskDirective {\n @Input() maskType!: string;\n @Input() matDatepicker!: MatDatepicker<any>;\n @Input() rangeFormControl!: AbstractControl;\n\n expressions = {\n DMY: 'M0/d0/0000',\n DM: 'M0/d0'\n }\n maskService: any;\n dateRegex = new RegExp(/^\\s*(1[012]|0?[1-9])\\/(3[01]|[12][0-9]|0?[1-9])\\/((?:19|20)\\d{2})\\s*$/);\n dayMonthRegex = new RegExp(/^\\s*(1[012]|0?[1-9])\\/(3[01]|[12][0-9]|0?[1-9])$/);\n previousValue = '';\n\n constructor(\n private elementRef: ElementRef,\n private injector: Injector,\n ) {\n this.maskService = this.injector.get(NgxMaskService);\n }\n\n @HostListener('input')\n onInput() {\n let value = this.elementRef.nativeElement.value;\n\n if (this.existsZerosInString(value)) {\n value = this.previousValue;\n }\n\n const maskedValue = this.maskService.applyMask(\n value,\n this.maskType === 'DAY_MONTH' ? this.expressions.DM : this.expressions.DMY\n );\n\n if (this.maskType !== 'DAY_MONTH' && !isNaN(new Date(maskedValue).getTime())) {\n if (this.matDatepicker) {\n this.matDatepicker.select(new Date(maskedValue));\n } else if (this.rangeFormControl) {\n this.rangeFormControl.setValue(new Date(maskedValue));\n }\n }\n\n if (isNaN(new Date(maskedValue).getTime())) {\n this.matDatepicker.select(null)\n }\n\n this.elementRef.nativeElement.value = maskedValue || null;\n this.previousValue = maskedValue || null;\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent) {\n const pastedValue = event.clipboardData?.getData('text/plain');\n if (!pastedValue) { return; }\n if (this.maskType === 'DAY_MONTH') {\n if (!this.dayMonthRegex.test(pastedValue)) {\n event?.preventDefault();\n }\n } else {\n if (!this.dateRegex.test(pastedValue)) {\n event?.preventDefault();\n }\n }\n }\n\n existsZerosInString(date: string): boolean {\n const dateToArray = date.split('/');\n let isValid;\n if (this.maskType === 'DAY_MONTH') {\n isValid = !!dateToArray.find((part: string) => part.includes('00'));\n } else {\n if (dateToArray.length < 3) {\n isValid = !!dateToArray.find((part: string) => part.includes('00'));\n } else {\n isValid = (dateToArray[2][0] == '0') || (+dateToArray[2][0] > 2);\n }\n\n }\n return isValid;\n }\n\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormControlName, ReactiveFormsModule } from \"@angular/forms\";\nimport { InputService } from '../../services/input.service';\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\n\n@Component({\n selector: 'i-tech-date-picker',\n templateUrl: './date-picker.component.html',\n imports: [\n NgClass, NgIf,\n TranslateModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatDatepickerModule,\n MatInput,\n MatTooltip,\n MatIconModule,\n DateMaskDirective,\n GenerateErrorMessagesPipe, IconButtonComponent\n ],\n standalone: true\n})\nexport class DatePickerComponent {\n @Input() label = '';\n @Input() defaultPatternKey!: string ;\n @Input() required = false;\n @Input() pastDatesDisabled = false;\n @Input() hintText = '';\n @Input() placeholder = 'MM/DD/YYYY';\n @Input() iconPrefix?: string;\n @Input() iconPrefixSvg?: string;\n @Input() iconPrefixTooltip?: string;\n @Input() iconPrefixColor?: string;\n @Input() iconPrefixVariant?: string;\n @Input() valueChangeEmit?: boolean;\n @Input() minDate: Date | null = null;\n @Input() clearable = false;\n @Input() testId!: string;\n\n @Input() submit = false;\n @ViewChild('inputElement') inputElement!: ElementRef;\n @Output() valueChangeEmitter = new EventEmitter<void>();\n\n isOpen = false;\n focused = false;\n\n ngControl: FormControlName;\n\n today: Date = new Date();\n\n // Filter to disable past dates\n dateFilter = (date: Date | null): boolean => {\n if (this.pastDatesDisabled) {\n const today = this.today;\n return date ? date >= today : false;\n } else {\n return true;\n }\n };\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl() as FormControlName;\n }\n\n emitChange(): void {\n if (!this.valueChangeEmit) { return; }\n this.valueChangeEmitter.emit();\n }\n\n clickForFocusOut(): void {\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n this.inputElement.nativeElement.blur();\n },120)\n }\n\n get isDisabled(): boolean {\n return this.ngControl?.control?.disabled || false;\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submit);\n }\n };\n}\n","<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : isDisabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : isDisabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"isDisabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n [min]=\"minDate\"\n dateMask\n [attr.data-testId]=\"'date-range-picker-' + testId\"\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <app-icon-button\n *ngIf=\"clearable && !isDisabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [ngClass]=\"isDisabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);\"\n >\n </app-icon-button>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"isDisabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : isDisabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { LabelTypeEnum } from \"../../interfaces/label-type.enum\";\nimport { MatChip } from \"@angular/material/chips\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { IconConfig } from '../../interfaces/label-configs.interface';\n\n@Component({\n selector: 'i-tech-label',\n templateUrl: './label.component.html',\n styleUrls: [],\n imports: [\n MatChip,\n MatTooltip,\n NgClass,\n TranslateModule,\n MatIcon,\n NgIf\n ],\n standalone: true\n})\nexport class LabelComponent {\n @Input() color: LabelTypeEnum = LabelTypeEnum.primary;\n @Input() text!: string;\n @Input() innerHtml!: string;\n @Input() bordered = false;\n @Input() tooltip?: string;\n @Input() size: 'small' | 'standard' = 'standard';\n @Input() iconName?: string;\n @Input() iconSvg = '';\n @Input() disableRipple = false;\n @Input() matChipAction = false;\n @Input() forTable = false;\n @Input() iconConfig?: IconConfig;\n @Input() customChipClass = '';\n @Input() customBgColor?: string;\n @Input() customTextColor?: string;\n}\n","<div [class]=\"{table_row_item: forTable,'trailing-icon' : iconName || iconSvg}\">\n <mat-chip\n [class]=\"'label_' + color + (customChipClass ? ' ' + customChipClass : '')\"\n [ngClass]=\"{ bordered: bordered, small: size === 'small', pointer: matChipAction }\"\n [matTooltip]=\"(tooltip || '') | translate\"\n [disableRipple]=\"disableRipple\"\n [style.--mdc-chip-elevated-container-color]=\"customBgColor || null\"\n [style.--mdc-chip-label-text-color]=\"customTextColor || null\"\n >\n <div class=\"flex_align_center flex flex_gap_5\" [ngClass]=\"matChipAction ? 'pointer' : ''\">\n <span *ngIf=\"!innerHtml\">{{text | translate}}</span>\n <span *ngIf=\"innerHtml\" [innerHtml]=\"innerHtml | translate\"></span>\n <mat-icon *ngIf=\"iconName\"\n [ngClass]=\"iconConfig?.iconClass\"\n [matTooltip]=\"(iconConfig?.tooltip || '') | translate\"\n [color]=\"iconConfig?.color\">\n {{iconName}}\n </mat-icon>\n <mat-icon *ngIf=\"iconSvg\"\n [svgIcon]=\"iconSvg\"\n [ngClass]=\"iconConfig?.iconClass\"\n [matTooltip]=\"(iconConfig?.tooltip || '') | translate\"\n [color]=\"iconConfig?.color\">\n </mat-icon>\n </div>\n </mat-chip>\n</div>\n","import {\n AfterViewInit,\n Component, ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { MatDatepickerModule, MatDateRangePicker } from \"@angular/material/datepicker\";\nimport { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { NgClass, NgForOf, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { LabelComponent } from \"../label/label.component\";\nimport { LabelTypeEnum } from \"../../interfaces/label-type.enum\";\nimport { Subscription } from \"rxjs\";\n\n@Component({\n selector: 'i-tech-mat-range-datepicker',\n templateUrl: './date-range-datepicker.component.html',\n imports: [\n MatFormFieldModule,\n ReactiveFormsModule,\n MatDatepickerModule,\n NgClass, NgIf, NgForOf,\n TranslateModule,\n IconButtonComponent,\n MatButtonModule,\n LabelComponent\n ],\n standalone: true,\n styles: [`\n .preset-actions-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 0 0 24px;\n width: 100%;\n }\n ::ng-deep .mdc-text-field--outlined {\n padding-left: 8px !important;\n }\n ::ng-deep .mat-date-range-input-separator {\n margin: 0 !important;\n }\n ::ng-deep .mat-mdc-form-field-icon-suffix {\n padding-left: 0 !important;\n }\n `]\n})\nexport class DateRangeDatepickerComponent implements OnChanges, AfterViewInit, OnDestroy {\n @Input() label?: string;\n @Input() placeholder?: Array<string>;\n @Input() value?: Array<string | null>;\n @Input() defaultValue?: Array<Date>;\n @Input() key?: {start: string, end: string, title: string};\n @Input() submit = false;\n @Input() clearValue = true;\n @Input() errorMessage = '';\n @Input() onePlaceholder?: string;\n @Input() hintText = 'MM/DD/YYYY - MM/DD/YYYY';\n @Input() testId = '';\n @Input() panelClass = '';\n @Input() presetActions: Array<{label: string, translateKey?: string}> = [];\n @Input() activePreset = '';\n @Output() resetForm = new EventEmitter<any>();\n @Output() selectionChange = new EventEmitter<any>();\n @Output() presetActionClick = new EventEmitter<{label: string}>();\n @ViewChild('picker') picker!: MatDateRangePicker<any>;\n @ViewChild('min') min!: ElementRef;\n @ViewChild('max') max!: ElementRef;\n isOpen = false;\n isSelectingRange = false;\n readonly LabelTypeEnum = LabelTypeEnum;\n private selectionSub?: Subscription;\n private calendarClickCount = 0;\n\n dateRangeForm = new UntypedFormGroup({\n startDate: new UntypedFormControl(''),\n endDate: new UntypedFormControl('')\n });\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this.defaultValue?.length) {\n this.dateRangeForm.patchValue({\n startDate: this.defaultValue[0],\n endDate: this.defaultValue[1]\n })\n }\n })\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n setTimeout(() => {\n if (!changes['value'] || this.isOpen) { return; }\n if (changes['value']?.currentValue && !(changes['value'].currentValue[0])) {\n if (this.picker) {\n this.dateRangeForm.reset();\n this.picker.select(null)\n }\n } else if (changes['value'] && this.value?.length) {\n this.dateRangeForm.setValue({\n startDate: new Date(this.value[0] || ''),\n endDate: new Date(this.value[1] || '')\n });\n }\n }, 10)\n }\n\n clickForFocusOut(): void {\n setTimeout(() => {\n this.min.nativeElement.focus();\n this.min.nativeElement.blur();\n },120)\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submit);\n }\n };\n\n setDate(value: Array<string | null>, element: any): void {\n const startDate = value[0];\n const endDate = value[1];\n\n // If this is the start date being selected (matStartDate input)\n if (element === this.min?.nativeElement) {\n // We're starting a new selection process\n this.isSelectingRange = true;\n // Don't emit any event yet\n }\n // If this is the end date being selected (matEndDate input)\n else if (element === this.max?.nativeElement) {\n // We're completing a selection\n this.isSelectingRange = false;\n\n if (startDate === null && endDate === null) {\n this.dateRangeForm.reset();\n this.picker.select(null);\n this.selectionChange.emit(value);\n } else if (startDate && endDate) {\n this.selectionChange.emit(value);\n }\n }\n\n element.blur();\n }\n\n onPresetAction(action: { label: string, translateKey?: string }): void {\n this.presetActionClick.emit({ label: action.label });\n this.picker.close();\n }\n\n onPickerOpened(): void {\n this.isOpen = true;\n if (this.presetActions?.length) {\n this.selectionSub?.unsubscribe();\n this.calendarClickCount = 0;\n // Wait for picker content to render, then subscribe to calendar user selections\n setTimeout(() => {\n const content = (this.picker as any)._componentRef?.instance;\n const calendar = content?._calendar;\n if (calendar) {\n this.selectionSub = calendar._userSelection.subscribe(() => {\n this.calendarClickCount++;\n if (this.calendarClickCount >= 2) {\n this.calendarClickCount = 0;\n setTimeout(() => {\n const applyBtn = document.querySelector('.hidden-apply-btn') as HTMLButtonElement;\n if (applyBtn) {\n applyBtn.click();\n }\n }, 50);\n }\n });\n }\n }, 200);\n }\n }\n\n onPickerClosed(): void {\n this.isOpen = false;\n this.selectionSub?.unsubscribe();\n this.clickForFocusOut();\n }\n\n ngOnDestroy(): void {\n this.selectionSub?.unsubscribe();\n }\n\n}\n","<div class=\"flex_column relative mat-date-range-input\"\n [formGroup]=\"dateRangeForm\"\n>\n <div class=\"w-100\" *ngIf=\"label\">\n <mat-label>\n {{ (label || '') | translate }}\n </mat-label>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\">\n <mat-date-range-input [rangePicker]=\"picker\"\n\n >\n <input formControlName=\"startDate\"\n [attr.data-testId]=\"'date-range-' + testId + '-min-date'\"\n [placeholder]=\" (placeholder ? placeholder[0] : 'Start Date')\"\n [title]=\"key ? key.title : 'Date'\"\n [attr.data-accessKey]=\"key ? key.start : 'minStartDate'\"\n [attr.data-parentKey]=\"key ? (key.start + '_' + key.end) : 'minStartDate_maxEndDate'\"\n matStartDate #min\n readonly\n [errorStateMatcher]=\"customErrorStateMatcher\"\n (dateChange)=\"setDate([min.value, max.value || null],min)\">\n <input formControlName=\"endDate\"\n [placeholder]=\"(placeholder ? placeholder[1] : 'End Date')\"\n [title]=\"key ? key.title : 'Date'\"\n [attr.data-testId]=\"'date-range-' + testId + '-end-date'\"\n [attr.data-accessKey]=\"key ? key.end : 'maxEndDate'\"\n [attr.data-parentKey]=\"key ? (key.start + '_' + key.end) : 'minStartDate_maxEndDate'\"\n matEndDate #max\n readonly\n [errorStateMatcher]=\"customErrorStateMatcher\"\n (dateChange)=\"setDate([min.value, max.value || null],max)\">\n </mat-date-range-input>\n <i-tech-icon-button matSuffix\n [iconName]=\"'cancel'\"\n (buttonClick)=\"setDate([null,null], max)\"\n class=\"default-form-icon-color\"\n *ngIf=\"dateRangeForm.get('startDate')?.value && this.dateRangeForm.get('endDate')?.value\"\n ></i-tech-icon-button>\n <i-tech-icon-button\n matSuffix\n [iconName]=\"'date_range'\"\n (buttonClick)=\"picker.open()\"\n class=\"default-form-icon-color\"\n ></i-tech-icon-button>\n <mat-date-range-picker\n [panelClass]=\"panelClass\"\n #picker\n (closed)=\"onPickerClosed()\"\n (opened)=\"onPickerOpened()\"\n >\n <mat-datepicker-actions *ngIf=\"presetActions?.length\">\n <div class=\"preset-actions-container\">\n <i-tech-label *ngFor=\"let action of presetActions\"\n class=\"w-100\"\n [customChipClass]=\"'w-100'\"\n [text]=\"action.translateKey || action.label\"\n [color]=\"action.label === activePreset ? LabelTypeEnum.primary : LabelTypeEnum.white\"\n [bordered]=\"true\"\n [matChipAction]=\"true\"\n [disableRipple]=\"false\"\n (click)=\"onPresetAction(action)\">\n </i-tech-label>\n <button matDateRangePickerApply class=\"hidden-apply-btn\" style=\"display: none\"></button>\n </div>\n </mat-datepicker-actions>\n </mat-date-range-picker>\n <mat-hint *ngIf=\"hintText && !errorMessage\">{{ hintText }}</mat-hint>\n </mat-form-field>\n</div>\n","export enum DropdownSelectionType {\n UPLOAD = \"UPLOAD\",\n DOWNLOAD = \"DOWNLOAD\",\n BLANK = \"BLANK\"\n}\n\nexport const DropdownItemIcon = {\n [DropdownSelectionType.UPLOAD]: 'upload',\n [DropdownSelectionType.DOWNLOAD]: 'download',\n [DropdownSelectionType.BLANK]: 'blank',\n}","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { ButtonType } from \"../../interfaces/button-types.enum\";\nimport { DropdownItemIcon, DropdownSelectionType } from \"../../interfaces/dropdown-selection.constants\";\nimport { MatMenu, MatMenuItem, MatMenuTrigger, MenuPositionX } from \"@angular/material/menu\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { NgClass, NgForOf, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ButtonComponent } from \"../button/button.component\";\nimport { MatLabel } from \"@angular/material/form-field\";\n\n@Component({\n selector: \"i-tech-menu\",\n standalone: true,\n imports: [\n MatMenuTrigger,\n MatMenu,\n MatIcon,\n NgIf,\n NgForOf,\n MatMenuItem,\n TranslateModule,\n NgClass,\n ButtonComponent,\n MatLabel\n ],\n templateUrl: \"./menu.component.html\",\n styleUrls: [\"./menu.component.scss\"]\n})\nexport class MenuComponent {\n @Input() text!: string;\n @Input() dataName!: string;\n @Input() containerClass!: string;\n @Input() icon!: string;\n @Input() positionX: MenuPositionX = 'before';\n @Input() testId!: string;\n @Input() menuOptions: Array<{\n value: string;\n text: string;\n src?: string;\n class?: string;\n type?: DropdownSelectionType;\n }> = [];\n @Output() emitEvent = new EventEmitter<any>();\n @Input() loading = false;\n protected readonly ButtonType = ButtonType;\n protected readonly DropdownItemIcon = DropdownItemIcon;\n matMenuState = false;\n}\n","<div class=\"custom_dropdown_container\"\n [attr.data-name]=\"dataName\"\n [ngClass]=\"containerClass\"\n>\n <ng-container *ngIf=\"!loading\">\n <i-tech-button\n [matMenuTriggerFor]=\"beforeMenu\"\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"icon || 'keyboard_arrow_down'\"\n [text]=\"(text || '') \"\n (menuOpened)=\"matMenuState = true\"\n (menuClosed)=\"matMenuState = false\"\n [activated]=\"matMenuState\"\n [testId]=\"testId + '_arrow_down'\"\n ></i-tech-button>\n </ng-container>\n\n <ng-container *ngIf=\"loading\">\n <i-tech-button\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"icon || 'keyboard_arrow_down'\"\n [text]=\"(text || '') \"\n [submit]=\"true\"\n [disabled]=\"true\"\n [activated]=\"false\"\n [attr.data-testId]=\"testId + '_arrow_down'\"\n ></i-tech-button>\n </ng-container>\n\n <mat-menu #beforeMenu=\"matMenu\" [xPosition]=\"positionX\"\n [attr.data-testId]=\"testId\"\n >\n <button mat-menu-item *ngFor=\"let option of menuOptions\" (click)=\"emitEvent.emit(option.value)\">\n <mat-icon *ngIf=\"option.type\" [svgIcon]=\"DropdownItemIcon[option.type]\"></mat-icon>\n <mat-label class=\"meu_item_label\">{{(option.text || '') | translate}}</mat-label>\n </button>\n </mat-menu>\n</div>\n","import { AfterViewInit, Component, EventEmitter, Input, Output, ViewChild, ElementRef, OnDestroy } from '@angular/core';\nimport { MatDatepicker, MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { NgxMaskDirective } from \"ngx-mask\";\nimport {\n FormControlName,\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup\n} from \"@angular/forms\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatError, MatLabel } from \"@angular/material/form-field\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\nimport { ParseDateService } from \"../../services/parse-date.service\";\nimport { InputService } from \"../../services/input.service\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { MatIconButton } from \"@angular/material/button\";\n\n@Component({\n selector: 'i-tech-date-time-picker',\n imports: [MatDatepickerModule, DateMaskDirective, TranslateModule,\n FormsModule, NgClass, ReactiveFormsModule, MatLabel, GenerateErrorMessagesPipe, NgIf, MatError, MatIconButton\n ],\n standalone: true,\n providers: [ParseDateService],\n templateUrl: './date-time-picker.component.html',\n styleUrl: './date-time-picker.component.scss'\n})\nexport class DateTimePickerComponent implements AfterViewInit, OnDestroy {\n @ViewChild('DatePicker') DatePickerElement!: MatDatepicker<any>\n @Output() dateChangeEvent = new EventEmitter<void>();\n @Input() label!: string;\n @Input() submit = false;\n @Input() required = false;\n @Input() panelClass = '';\n @Input() set disabled(disabled: boolean) {\n this._disabled = disabled;\n if (disabled) {\n this.form.get('time')?.disable();\n this.form.get('date')?.disable();\n } else {\n this.form.get('time')?.enable();\n this.form.get('date')?.enable();\n }\n };\n get disabled(): boolean {\n return this._disabled;\n }\n private _disabled = false;\n\n @ViewChild('dateElement') timeInput!: ElementRef;\n\n isFocused = false;\n form = new UntypedFormGroup({\n time: new UntypedFormControl(),\n date: new UntypedFormControl(),\n })\n ngControl: FormControlName;\n\n // Track datepicker state\n private focusTimeoutId: any = null;\n private datePickerJustClosed = false;\n\n constructor(\n private inputService: InputService,\n private parseDateService: ParseDateService\n ) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n ngAfterViewInit(): void {\n this.setValue();\n this.ngControl.control.valueChanges.subscribe(() => {\n this.setValue()\n })\n }\n\n ngOnDestroy(): void {\n if (this.focusTimeoutId) {\n clearTimeout(this.focusTimeoutId);\n }\n }\n\n openFromOutSide(): void {\n this.DatePickerElement.open()\n }\n\n private setValue(): void {\n if (!this.ngControl?.control) {\n return;\n }\n const dateTime = this.ngControl.control.value;\n if (!dateTime) {\n this.form.patchValue({\n date: null,\n time: null\n }, { emitEvent: false });\n return;\n }\n\n this.form.patchValue({\n date: new Date(this.parseDateService.changeFormat(dateTime, 'YYYY-MM-DD') + 'T' + '00:00:00'),\n time: this.parseDateService.changeFormat(dateTime, 'HH:mm')\n }, { emitEvent: false })\n }\n\n public onDatePickerClosed(): void {\n // Update form value first\n this.setDateTimeValue();\n\n // Mark that the datepicker just closed\n this.datePickerJustClosed = true;\n\n // Clear any existing timeout\n if (this.focusTimeoutId) {\n clearTimeout(this.focusTimeoutId);\n }\n\n // Use a callback that runs outside Angular's change detection\n this.focusTimeoutId = setTimeout(() => {\n // Focus time input\n if (this.timeInput?.nativeElement) {\n this.timeInput.nativeElement.focus();\n }\n\n // Reset flag after enough time\n setTimeout(() => {\n this.datePickerJustClosed = false;\n }, 200);\n }, 100); // Longer delay to let Angular Material finish its work\n }\n\n public setDateTimeValue(): void {\n if (this.form.value.date && this.form.value.time) {\n const date = this.parseDateService.changeFormat(this.form.value.date, 'YYYY-MM-DD');\n const time = this.form.value.time;\n this.ngControl.control.patchValue(date + 'T' + time, { emitEvent: false });\n } else {\n this.ngControl.control.patchValue(null, { emitEvent: false });\n }\n this.dateChangeEvent.emit();\n }\n\n public onFocus(event: FocusEvent): void {\n // If datepicker just closed and focus is going to date input, move it to time input\n if (this.datePickerJustClosed) {\n const target = event.target as HTMLElement;\n const dateInput = document.querySelector('input[formControlName=\"date\"]');\n\n if (target === dateInput) {\n // Cancel any existing focus timeout\n if (this.focusTimeoutId) {\n clearTimeout(this.focusTimeoutId);\n }\n\n // Set new timeout to focus time input\n this.focusTimeoutId = setTimeout(() => {\n if (this.timeInput?.nativeElement) {\n this.timeInput.nativeElement.focus();\n }\n }, 10);\n\n return;\n }\n }\n\n this.isFocused = true;\n }\n\n public onBlur(event?: FocusEvent): void {\n // Don't handle blur during datepicker transitions\n if (this.datePickerJustClosed) {\n this.isFocused = false;\n return;\n }\n\n // Check if focus is moving to another element within our component\n setTimeout(() => {\n const dateInput = document.querySelector('input[formControlName=\"date\"]');\n const timeInput = this.timeInput?.nativeElement;\n const activeElement = document.activeElement;\n\n if (activeElement !== dateInput && activeElement !== timeInput) {\n this.isFocused = false;\n }\n }, 50);\n }\n}\n","<div class=\"date_time_picker_container relative\"\n *ngIf=\"ngControl?.control\"\n [class.invalid_form]=\"ngControl.control.errors && submit\"\n [class.readonly_field]=\"disabled\"\n>\n <mat-label [ngClass]=\"{\n 'readonly-color': disabled\n }\"\n >{{label | translate}}</mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color': disabled}\"> *</span>\n\n <div class=\"date_time_picker\"\n [formGroup]=\"form\"\n [ngClass]=\"{'focused': isFocused, 'disabled': disabled}\"\n >\n <input type=\"text\" dateMask class=\"date\"\n placeholder=\"mm/dd/yy\"\n formControlName=\"date\"\n [matDatepicker]=\"DatePicker\"\n [attr.data-testId]=\"'date-picker-date'\"\n [disabled]=\"disabled\"\n (click)=\"!disabled && DatePicker.open()\"\n (focus)=\"onFocus($event)\"\n (focusout)=\"onBlur($event)\"\n >\n <mat-datepicker #DatePicker\n [panelClass]=\"panelClass\"\n (closed)=\"onDatePickerClosed()\">\n </mat-datepicker>\n <input type=\"time\"\n #dateElement\n class=\"time\"\n [attr.data-testId]=\"'date-picker-time'\"\n formControlName=\"time\"\n [disabled]=\"disabled\"\n (focus)=\"onFocus($event)\"\n (focusout)=\"onBlur($event)\"\n (change)=\"setDateTimeValue()\"\n />\n </div>\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ngControl.control | generateErrorMessages : (label || '')}}\n </mat-error>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { AuthInterface, CompaniesEnum, OrganizationInterface } from \"../../../interfaces/auth.interface\";\nimport { NgIf, SlicePipe, UpperCasePipe } from \"@angular/common\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\n\n@Component({\n selector: 'i-tech-company-image',\n imports: [NgIf, UpperCasePipe, SlicePipe, MatTooltipModule],\n standalone: true,\n templateUrl: './company-image.component.html',\n styleUrl: './company-image.component.scss'\n})\nexport class CompanyImageComponent {\n @Input() collapsed!: boolean;\n @Input() userData!: AuthInterface;\n @Input() currentCompany!: OrganizationInterface;\n @Input() platform!: CompaniesEnum;\n CompaniesEnum = CompaniesEnum;\n}\n","<div class=\"information pointer\" *ngIf=\"userData\"\n [attr.data-testId]=\"'user_profile_information'\"\n>\n <div class=\"information_main\">\n <div class=\"images\">\n <img alt=\"\" class=\"company_img\" *ngIf=\"currentCompany?.image; else noImageComponent\"\n [src]=\"currentCompany.image\"\n [matTooltipDisabled]=\"!collapsed\"\n matTooltipClass=\"multiline_tooltip_for_profile\"\n [matTooltip]=\"(currentCompany?.name || '') + '\\n\\r' + (userData.firstName + ' ' + userData.lastName + '\\n') + (userData.email)\"\n >\n <ng-template #noImageComponent>\n <div class=\"company_img no_image\"\n [matTooltipDisabled]=\"!collapsed\"\n matTooltipClass=\"multiline_tooltip_for_profile\"\n [matTooltip]=\"(currentCompany?.name || '') + '\\n\\r' + (userData.firstName + ' ' + userData.lastName + '\\n') + (userData.email)\"\n >\n {{(currentCompany?.name || '') | slice: 0 : 1 | uppercase}}\n </div>\n </ng-template>\n\n <div class=\"user_img\">\n {{userData.firstName | slice: 0 : 1 | uppercase}}\n </div>\n </div>\n\n <div class=\"names\">\n <div class=\"company_name\">{{currentCompany?.name || ''}}</div>\n <div class=\"user_name\">{{userData.firstName}} {{userData.lastName}}</div>\n </div>\n\n </div>\n <div class=\"time_zone\" *ngIf=\"platform === CompaniesEnum.T3\">\n {{userData.timeZone?.enumType || ''}}\n </div>\n</div>\n","import { AfterViewInit, Component, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { LowerCasePipe, NgFor, NgIf, SlicePipe, UpperCasePipe } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NavigationEnd, Router, RouterLink } from \"@angular/router\";\nimport {\n AuthInterface,\n CompaniesEnum,\n OrganizationInterface,\n SystemRoleInterface\n} from \"../../interfaces/auth.interface\";\nimport { MatMenu, MatMenuModule } from \"@angular/material/menu\";\nimport { CompanyImageComponent } from \"./company-image/company-image.component\";\n\nimport { MatRippleModule } from \"@angular/material/core\";\nimport { NavigationLinks } from \"../../interfaces/navigation-link.interface\";\nimport { HttpClient } from \"@angular/common/http\";\n\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\n\n@Component({\n selector: 'i-tech-sidebar',\n imports: [NgIf, NgFor, TranslateModule, MatMenu, MatMenuModule, CompanyImageComponent, UpperCasePipe, SlicePipe,\n MatRippleModule, MatTooltipModule, IconButtonComponent, RouterLink, LowerCasePipe\n ],\n standalone: true,\n templateUrl: './new-sidebar.component.html',\n styleUrl: './new-sidebar.component.scss'\n})\nexport class NewSidebarComponent implements OnInit, AfterViewInit {\n @HostListener('window:beforeunload')\n canDeactivate(): void {\n localStorage.setItem('SidebarCollapsed', `${this.isCollapsed}`)\n }\n @Output() collapseEvent = new EventEmitter<boolean>();\n @Output() linkClickEvent = new EventEmitter<NavigationLinks>();\n @Output() popupClickEvents = new EventEmitter<string>();\n @Output() signOutEvent = new EventEmitter<void>();\n @Output() newAuthenticatedResponseEvent = new EventEmitter<AuthInterface>();\n @Input() platform!: CompaniesEnum;\n @Input() navigationLinks!: Array<NavigationLinks>;\n @Input() env!: any;\n @Input() userData!: AuthInterface;\n isCollapsed = false;\n activePage!: string;\n secondLayerActivePage!: string;\n secondLayerOpened = false;\n secondLayerLinks: Array<NavigationLinks> = [];\n currentCompany!:OrganizationInterface;\n allOrganizations: Array<OrganizationInterface> = [];\n activeAndInactivePlatforms: Record<string, Array<{id: CompaniesEnum, name: string, checked?: boolean}>> = {\n active: [],\n inactive: []\n }\n AppsUrls: Record<CompaniesEnum, string> = {} as Record<CompaniesEnum, string>;\n BottomPopupLinks: Record<string, string> = {};\n CompaniesEnum = CompaniesEnum;\n accessToNewOrganization = false;\n mobileViewSidebarOpened = false;\n\n constructor(\n private router: Router,\n private http: HttpClient\n ) {}\n\n ngAfterViewInit(): void {\n this.collapseEvent.emit(this.isCollapsed);\n }\n\n ngOnInit(): void {\n this.detectActivePage();\n this.detectActiveAndInactiveApps();\n this.getAllCompanies();\n this.setAppsUrls();\n this.isCollapsed = localStorage.getItem('SidebarCollapsed') === 'true' || false;\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.detectActivePage()\n }\n });\n }\n\n private setAppsUrls(): void {\n this.AppsUrls.ORGANIZATION = this.env.organizationUrl + '/auth/organization';\n this.AppsUrls.BROKERAGE = this.env.brokerage;\n this.AppsUrls.T3 = this.env.t3;\n this.AppsUrls.TMT = this.env.tmt;\n\n this.BottomPopupLinks = {\n privacy: this.env.mainDomain + '/privacy-policy',\n terms: this.env.mainDomain + '/terms-and-conditions',\n manageAccount: this.env.organizationUrl + '/auth/account-information',\n accountInformation: '/auth/account-information',\n addNewOrganization: '/auth/organization/add'\n }\n }\n\n detectActiveAndInactiveApps(): void {\n const allSystems = [{\n id: CompaniesEnum.T3,\n name: 'T3 TMS'\n }, {\n id: CompaniesEnum.BROKERAGE,\n name: 'T3 Loadboard'\n },\n {\n id: CompaniesEnum.TMT,\n name: 'T3 TMT'\n }\n ];\n\n this.activeAndInactivePlatforms = {\n active: [],\n inactive: []\n }\n\n allSystems.forEach((system: {id: CompaniesEnum, name: string, checked?: boolean}) => {\n if (this.platform === system.id) {\n system.checked = true\n }\n if (this.userData.systemRoles?.find((role: SystemRoleInterface) => role.system === system.id)) {\n this.activeAndInactivePlatforms['active'].push(system)\n } else {\n this.activeAndInactivePlatforms['inactive'].push(system)\n }\n })\n\n this.activeAndInactivePlatforms['active'].push({\n name: 'T3 Admin',\n id: CompaniesEnum.ORGANIZATION,\n checked: this.platform === CompaniesEnum.ORGANIZATION\n })\n }\n\n switchOrganization(company: OrganizationInterface): void {\n if (company.id === this.currentCompany.id) {\n return;\n }\n this.http.post<AuthInterface>(\n this.env.dataEndpoint + (this.platform !== CompaniesEnum.ORGANIZATION ? '/id' : '') + `/auth/companies/${company.id}/login`, {}\n ).subscribe((response: AuthInterface) => {\n this.newAuthenticatedResponseEvent.emit(response)\n })\n }\n\n getAllCompanies(): void {\n this.http.get<Array<OrganizationInterface>>(\n this.env.dataEndpoint + (this.platform !== CompaniesEnum.ORGANIZATION ? '/id' : '') + '/companies/all'\n ).subscribe((companies: Array<OrganizationInterface>) => {\n const currentCompany = companies.find((company: OrganizationInterface) => company.id === this.userData.companyId)\n if (currentCompany) {\n this.currentCompany = currentCompany;\n }\n this.allOrganizations = companies;\n if (this.platform === CompaniesEnum.ORGANIZATION) {\n this.accessToNewOrganization = this.accessToAddNew();\n }\n })\n }\n\n // Only for organization\n accessToAddNew(): boolean {\n return !(this.allOrganizations.find((company: OrganizationInterface) => company.isMyCompany))\n }\n\n // End Of Only for organization\n\n navigateBack(): void {\n this.router.navigate(['/']);\n }\n\n detectActivePage(): void {\n const page = this.router.url.replace('/', '');\n let link = this.navigationLinks.find((link: NavigationLinks) => page === link.linkTo);\n\n if (!link) {\n const page = this.router.url;\n link = this.navigationLinks.find((link: NavigationLinks) => page.includes(link.linkTo));\n }\n\n if (link) {\n if (link.subPages) {\n this.secondLayerOpened = true;\n this.secondLayerLinks = link.subPages;\n\n const subLink = link.subPages.find((link: NavigationLinks) => page === link.linkTo);\n if (subLink) {\n this.secondLayerActivePage = subLink.pageEnum;\n }\n } else {\n this.secondLayerOpened = false;\n this.secondLayerLinks = [];\n this.secondLayerActivePage = '';\n }\n this.activePage = link.pageEnum;\n }\n }\n\n handleLinkClick(link: NavigationLinks): void {\n if (this.activePage === link.linkTo) {\n return;\n }\n\n if (link.emitClick) {\n this.linkClickEvent.emit(link);\n }\n this.mobileViewSidebarOpened = false;\n }\n\n changeCollapse(): void {\n this.isCollapsed = !this.isCollapsed;\n this.collapseEvent.emit(this.isCollapsed);\n this.mobileViewSidebarOpened = false;\n }\n\n signOut(): void {\n this.signOutEvent.emit()\n }\n\n emitPopupClicks(type: string): void {\n this.popupClickEvents.emit(type)\n }\n\n openZendeskPage(support = false): void {\n this.http.get<{accessToken: string}>(this.env.dataEndpoint + (this.platform !== CompaniesEnum.ORGANIZATION ? '/id' : '') + `/auth/zendesk`)\n .subscribe((res: {accessToken: string}) => {\n const targetUrl = `${this.env.zendeskUrl}/hc/en-us` + (support ? '/requests/new' : '');\n const zendeskUrl = `${this.env.zendeskUrl}/access/jwt?jwt=${res.accessToken}&return_to=${targetUrl}`;\n window.open(zendeskUrl);\n })\n }\n\n // Mobile Functions\n\n openSidebarMobile(): void {\n this.isCollapsed = false;\n this.mobileViewSidebarOpened = !this.mobileViewSidebarOpened;\n }\n\n // Close sidebar on black background click\n handleFullClickOnWrapper(event: Event): void {\n if (!this.mobileViewSidebarOpened || !event.target) { return; }\n const isOutside = !(event.target as HTMLElement).closest('.main_sidebar');\n if (isOutside) this.mobileViewSidebarOpened = false;\n }\n}\n","<div class=\"sidebar\">\n <div class=\"mobile_sidebar_header\">\n <i-tech-icon-button class=\"mobile_menu_button\"\n [type]=\"'tonal'\"\n [size]=\"'medium'\"\n [iconName]=\"'menu'\"\n [testId]=\"'mobile_menu_open_sidebar_button'\"\n (buttonClick)=\"openSidebarMobile()\"\n ></i-tech-icon-button>\n </div>\n\n <div class=\"main_sidebar_wrapper\"\n (click)=\"handleFullClickOnWrapper($event)\"\n [class.mobile_opened]=\"mobileViewSidebarOpened\"\n >\n <div class=\"main_sidebar\"\n *ngIf=\"navigationLinks && userData\"\n [class.collapsed]=\"isCollapsed\"\n >\n <div class=\"main_sidebar--header\">\n <a [href]=\"platform === CompaniesEnum.ORGANIZATION ? '/auth/organization' : '/'\"\n [attr.data-testId]=\"platform + '_org_logo'\"\n >\n\n <img class=\"logo pointer\" alt=\"\"\n *ngIf=\"isCollapsed\"\n [attr.data-testId]=\"platform + '_platform_logo_collapsed'\"\n [src]=\"'/assets/logos/small/' + platform + '.svg'\"\n >\n\n <img class=\"logo pointer\" alt=\"\"\n *ngIf=\"!isCollapsed\"\n [attr.data-testId]=\"platform + '_platform_logo'\"\n [src]=\"'/assets/logos/full/' + platform + '.svg'\"\n >\n </a>\n <i-tech-icon-button\n *ngIf=\"!isCollapsed\"\n [tooltip]=\"'SLP Tools'\"\n [iconName]=\"'apps'\"\n [testId]=\"'open_apps_list'\"\n [matMenuTriggerFor]=\"matMenu\"\n ></i-tech-icon-button>\n\n <mat-menu #matMenu=\"matMenu\" class=\"sidebar_platforms_menu\">\n <ng-container *ngIf=\"activeAndInactivePlatforms['active'].length\">\n <div class=\"menu_title\">\n Active Apps\n </div>\n <ng-container *ngFor=\"let app of activeAndInactivePlatforms['active']\">\n <a [href]=\"AppsUrls[app.id]\" target=\"_blank\"\n [attr.data-testId]=\"'active-app-' + app.id\"\n >\n <div mat-menu-item class=\"standard_menu_item\">\n <img alt=\"\" class=\"logo\" [src]=\"'/assets/logos/small/' + app.id + '.svg'\">\n <span>{{app.name}}</span>\n <img alt=\"\" class=\"ml-auto\" src=\"/assets/selected_organization.svg\"\n *ngIf=\"app.checked\"\n >\n </div>\n </a>\n </ng-container>\n </ng-container>\n\n <div class=\"divider\"\n *ngIf=\"activeAndInactivePlatforms['active'].length && activeAndInactivePlatforms['inactive'].length\"\n ></div>\n\n <ng-container *ngIf=\"activeAndInactivePlatforms['inactive'].length\">\n <div class=\"menu_title\">\n Inactive Apps\n </div>\n <div class=\"standard_menu_item\" *ngFor=\"let app of activeAndInactivePlatforms['inactive']\">\n <img alt=\"\" class=\"logo\" [src]=\"'/assets/logos/small/' + app.id + '.svg'\">\n <span>{{app.name}}</span>\n </div>\n </ng-container>\n\n </mat-menu>\n </div>\n\n <div class=\"main_sidebar--content\">\n <ng-container *ngIf=\"secondLayerLinks.length\">\n <div class=\"main_sidebar--content--toolbar\"\n data-testId=\"back-to-main-sidebar\"\n (click)=\"navigateBack()\"\n >\n <img alt=\"\" src=\"/assets/back.svg\">\n <span>Back</span>\n </div>\n <div class=\"main_sidebar--content--sub_title\">\n Settings\n </div>\n </ng-container>\n\n <ng-container *ngFor=\"let link of (secondLayerLinks.length ? secondLayerLinks : navigationLinks)\">\n <div class=\"divider\" *ngIf=\"link.hasDivider\"></div>\n <a [routerLink]=\"link.emitClick ? null : link.linkTo\"\n [attr.data-testId]=\"'sidebar-link-' + (link.linkTo | lowercase)\"\n >\n <div class=\"main_sidebar--content--link pointer\"\n matRipple\n [class.active]=\"link.pageEnum === activePage || link.pageEnum === secondLayerActivePage\"\n (click)=\"handleLinkClick(link)\"\n >\n <div class=\"parent_icon\">\n <img class=\"icon\" alt=\"\"\n [src]=\"'/assets/links/' + platform + '/' + link.image + '.svg'\">\n </div>\n <div class=\"name\">{{link.title | translate}}</div>\n\n <div class=\"new link_badge\" *ngIf=\"link.isNew\">New</div>\n <i-tech-icon-button class=\"link_badge info\"\n *ngIf=\"link.infoWithTooltipText\"\n [tooltip]=\"link.infoWithTooltipText || ''\"\n [size]=\"'small'\"\n [iconName]=\"'info'\"\n >\n </i-tech-icon-button>\n </div>\n </a>\n </ng-container>\n\n </div>\n\n <div class=\"main_sidebar--footer\" *ngIf=\"userData\">\n <div class=\"main_sidebar--footer--toggle\"\n >\n <i-tech-icon-button\n [tooltip]=\"isCollapsed ? 'Expand Sidebar' : 'Collapse Sidebar'\"\n [iconName]=\"isCollapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left'\"\n (click)=\"changeCollapse()\"\n ></i-tech-icon-button>\n\n </div>\n <div class=\"main_sidebar--footer--profile\">\n <i-tech-company-image\n [matMenuTriggerFor]=\"matMenu\"\n [collapsed]=\"isCollapsed\"\n [userData]=\"userData\"\n [platform]=\"platform\"\n [currentCompany]=\"currentCompany\"\n ></i-tech-company-image>\n <mat-menu #matMenu=\"matMenu\" class=\"sidebar_bottom_menu\">\n <div class=\"top_bar\">\n <img class=\"image\" alt=\"\" [src]=\"userData.image\"\n *ngIf=\"userData.image; else NoImage\"\n >\n <ng-template #NoImage>\n <div class=\"image no_image\">\n {{userData.firstName | slice: 0 : 1 | uppercase}}\n </div>\n </ng-template>\n <div class=\"information\">\n <div class=\"name\">{{userData.firstName}} {{userData.lastName}}</div>\n <div class=\"email\">{{userData.email}}</div>\n </div>\n </div>\n <a [href]=\"BottomPopupLinks['manageAccount']\" target=\"_blank\"\n data-testId=\"manage-account-link\"\n >\n <div mat-menu-item *ngIf=\"platform !== CompaniesEnum.ORGANIZATION\" class=\"mt-4 standard_menu_item\"\n >\n Account Information\n </div>\n </a>\n\n <a [href]=\"BottomPopupLinks['accountInformation']\"\n data-testId=\"open_organization_profile_page\"\n >\n <div mat-menu-item *ngIf=\"platform === CompaniesEnum.ORGANIZATION\" class=\"mt-4 standard_menu_item\"\n >\n Account Information\n </div>\n </a>\n\n\n <div mat-menu-item *ngIf=\"platform === CompaniesEnum.TMT\"\n class=\"standard_menu_item\"\n data-testId=\"open_notifications\"\n (click)=\"emitPopupClicks('NOTIFICATION')\"\n >\n Notifications\n </div>\n\n <a [href]=\"BottomPopupLinks['addNewOrganization']\"\n data-testId=\"add-new-organization-link\"\n >\n <div mat-menu-item *ngIf=\"platform === CompaniesEnum.ORGANIZATION && accessToNewOrganization\"\n class=\"standard_menu_item\"\n >\n Add new organization\n </div>\n </a>\n\n\n <ng-container *ngIf=\"allOrganizations.length > 1\">\n <div class=\"divider\" ></div>\n\n <div class=\"switch\">\n <div class=\"switch_title\">\n Switch Organization\n </div>\n <div mat-menu-item class=\"mat_menu_organization\" (click)=\"switchOrganization(organization)\"\n *ngFor=\"let organization of allOrganizations\"\n [attr.data-testId]=\"organization.id + '_switch_to_organization'\"\n >\n <div class=\"organization_item_in_menu\">\n <img alt=\"\" class=\"image\" [src]=\"organization.image\"\n *ngIf=\"organization.image; else NoImage\"\n >\n <ng-template #NoImage>\n <div class=\"image no_image\">\n {{organization.name | slice: 0 : 1 | uppercase}}\n </div>\n </ng-template>\n <span>{{organization.name}}</span>\n </div>\n <img alt=\"\" *ngIf=\"organization.id === currentCompany?.id\"\n class=\"isSelected\" src=\"/assets/selected_organization.svg\" >\n </div>\n </div>\n </ng-container>\n <div class=\"divider\"></div>\n\n <div mat-menu-item class=\"standard_menu_item\" (click)=\"openZendeskPage()\"\n data-testId=\"open-zendesk-link\"\n >\n Help Center\n </div>\n\n <a [href]=\"BottomPopupLinks['terms']\" target=\"_blank\"\n data-testId=\"terms-link\"\n >\n <div mat-menu-item class=\"standard_menu_item\" >\n Terms And Conditions\n </div>\n </a>\n\n <a [href]=\"BottomPopupLinks['privacy']\" target=\"_blank\"\n data-testId=\"privacy-link\"\n >\n <div mat-menu-item class=\"standard_menu_item\" >\n Privacy Policy\n </div>\n </a>\n\n\n <div class=\"divider\"></div>\n\n <div mat-menu-item class=\"standard_menu_item\" (click)=\"signOut()\"\n data-testId=\"sign-out-button\"\n >\n Sign out\n </div>\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n","import { DriverCategoryEnum } from \"./driver-category.enum\";\nimport { LicenseResponseInterface } from \"./license.interface\";\nimport { PaginationResponse } from \"./request.interface\";\n\nexport enum DriverStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n SUSPENDED = 'SUSPENDED',\n TERMINATED = 'TERMINATED',\n}\n\nexport interface DriverBaseInterface {\n id: number;\n status: DriverStatus;\n username: string,\n category: DriverCategoryEnum;\n phoneNumber: string;\n countryCode: string;\n firstName: string;\n lastName: string;\n middleName?: string;\n lastModifiedDate?: string;\n}\n\nexport type DriverListInterface = DriverBaseInterface\n\n\nexport interface SingleDriverDTO extends DriverBaseInterface {\n dateOfBirth?: string;\n email?: string;\n address?: string;\n emergencyContactName?: string;\n emergencyContactPhone?: string;\n hireDate?: string;\n seniorityDate?: string;\n terminationDate?: string;\n employeeStartDate?: string;\n lastModifiedBy?: string;\n createdDate?: string;\n profileImage?: string;\n tmtEnabled: boolean,\n tmsEnabled: boolean,\n licences: Array<LicenseResponseInterface>\n}\n\nexport interface DriverPagination extends PaginationResponse {\n content: Array<DriverListInterface>\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Global Token for the project's API Gateway URL.\n * Injected at the root level of each application (TMT, T3, etc.).\n */\nexport const DATA_ENDPOINT = new InjectionToken<string>('DATA_ENDPOINT');\n","import { Injectable } from '@angular/core';\nimport { GridApi } from \"ag-grid-enterprise\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AgGridFunctionsService {\n\n findSortQuery(sortModel: any[]): string {\n if (!sortModel || sortModel.length === 0) return '';\n\n const colId = sortModel[0].colId;\n const direction = sortModel[0].sort.toUpperCase();\n\n // Convert camelCase to SNAKE_CASE\n const sortId = colId\n .replace(/([a-z])([A-Z])/g, '$1_$2') // Insert underscore before capital letters\n .toUpperCase(); // Convert to uppercase\n\n return `&sort=${sortId}&direction=${direction}`;\n }\n\n showAgGridEmpty(gridApi: GridApi):void {\n if (!gridApi.getDisplayedRowCount()) {\n gridApi.showNoRowsOverlay();\n } else {\n gridApi.hideOverlay();\n }\n }\n\n objectToArray<T extends object>(obj: T): { key: keyof T, value: T[keyof T] }[] {\n return Object.keys(obj).map((key) => ({\n key: key as keyof T,\n value: obj[key as keyof T],\n }));\n }\n\n}\n","import { Component } from '@angular/core';\nimport { ICellRendererAngularComp } from \"ag-grid-angular\";\nimport { IconButtonComponent } from \"../../icon-button/icon-button.component\";\n\n@Component({\n selector: 'i-tech-ag-grid-button-cell',\n imports: [\n IconButtonComponent,\n ],\n standalone: true,\n templateUrl: './ag-grid-button-cell.component.html',\n styleUrl: './ag-grid-button-cell.component.scss'\n})\nexport class AgGridButtonCellComponent implements ICellRendererAngularComp {\n params: any;\n\n agInit(params: any): void {\n this.params = params;\n }\n\n refresh(params: any): boolean {\n this.params = params;\n return true;\n }\n\n onClick(event: any): void {\n event.stopPropagation();\n this.params.onClick(this.params.data);\n }\n}\n","<i-tech-icon-button\n (click)=\"onClick($event)\"\n [iconName]=\"params.image\"\n>\n</i-tech-icon-button>\n","import { Component } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { CommonModule } from '@angular/common';\nimport { LabelComponent } from \"../label/label.component\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\n\n@Component({\n selector: 'i-tech-status-label-cell',\n standalone: true,\n imports: [CommonModule, LabelComponent, MatTooltip],\n template: `<i-tech-label\n [color]=\"data?.list[data.status]?.color\" [forTable]=\"true\"\n [text]=\"data?.list[data.status]?.text\"\n [matTooltipDisabled]=\"!data?.tooltipEnabled\"\n [matTooltip]=\"data?.tooltipText\"\n ></i-tech-label>`\n})\nexport class ProcessedStatusCellRendererComponent implements ICellRendererAngularComp {\n data: any;\n\n agInit(params: any): void {\n this.data = {\n status: params.value,\n list: params.statusList,\n tooltipEnabled: params.tooltipEnabled,\n tooltipText: params.tooltipText,\n }\n }\n\n refresh(params: any): boolean {\n this.agInit(params)\n return true;\n }\n}\n\n","import { Component } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { ICellRendererParams } from 'ag-grid-enterprise';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'i-tech-tooltip-cell-renderer',\n template: `<div class=\"tooltip-cell-renderer\"\n #element\n [matTooltip]=\"!customTextTooltip? (customText || tooltipText) : customTextTooltip\"\n [matTooltipDisabled]=\"!customTextTooltip && !(element.scrollWidth > element.clientWidth)\"\n >\n {{ customText? customText : params?.value }}\n </div>`,\n standalone: true,\n imports: [MatTooltipModule]\n})\nexport class TooltipCellRendererComponent implements ICellRendererAngularComp {\n params?: ICellRendererParams;\n tooltipText = '';\n customTextTooltip = '';\n customText = '';\n\n agInit(params: any): void {\n this.params = params;\n this.customTextTooltip = params?.setCustomTooltipText || '';\n this.customText = params.setCustomValue || '';\n this.updateTooltipText();\n }\n\n refresh(params: ICellRendererParams): boolean {\n this.params = params;\n this.updateTooltipText();\n return true;\n }\n\n private updateTooltipText(): void {\n this.tooltipText = this.customTextTooltip || this.params?.value;\n }\n}\n","import { PhoneNumberUtil } from 'google-libphonenumber';\n\nconst phoneUtil = PhoneNumberUtil.getInstance();\n\nexport function formatPhoneNumber(phone: string): string {\n if (!phone) return '';\n\n try {\n const parsed = phoneUtil.parse(phone);\n const countryCode = parsed.getCountryCode();\n const nationalNumber = parsed.getNationalNumber()?.toString() || '';\n\n if (nationalNumber.length >= 10) {\n return `+${countryCode} (${nationalNumber.slice(0, 3)}) ${nationalNumber.slice(3, 6)}-${nationalNumber.slice(6)}`;\n } else if (nationalNumber.length >= 7) {\n return `+${countryCode} (${nationalNumber.slice(0, 3)}) ${nationalNumber.slice(3)}`;\n } else {\n return `+${countryCode} ${nationalNumber}`;\n }\n } catch {\n return phone;\n }\n}\n","export const PHONE_LENGTH_MAP: Record<string, number> = {\n '+7': 10, '+20': 10, '+27': 9, '+30': 10, '+31': 9, '+32': 9,\n '+33': 9, '+34': 9, '+36': 9, '+39': 10, '+40': 10, '+41': 9,\n '+43': 10, '+44': 10, '+45': 8, '+46': 9, '+47': 8, '+48': 9,\n '+49': 10, '+51': 9, '+52': 10, '+53': 8, '+54': 10, '+55': 11,\n '+56': 9, '+57': 10, '+58': 10, '+60': 9, '+61': 9, '+62': 10,\n '+63': 10, '+64': 9, '+65': 8, '+66': 9, '+81': 10, '+82': 10,\n '+84': 9, '+86': 11, '+90': 10, '+91': 10, '+92': 10, '+93': 9,\n '+94': 9, '+95': 9, '+98': 10, '+212': 9, '+213': 9, '+216': 8,\n '+220': 7, '+221': 9, '+234': 10, '+237': 9, '+254': 10, '+255': 9,\n '+256': 9, '+351': 9, '+352': 9, '+353': 9, '+354': 7, '+355': 9,\n '+356': 8, '+357': 8, '+358': 9, '+359': 9, '+370': 8, '+371': 8,\n '+372': 8, '+373': 8, '+374': 8, '+375': 9, '+380': 9, '+381': 9,\n '+385': 9, '+386': 8, '+420': 9, '+421': 9, '+852': 8, '+853': 8,\n '+855': 9, '+856': 9, '+880': 10, '+886': 9, '+960': 7, '+961': 8,\n '+962': 9, '+963': 9, '+964': 10, '+965': 8, '+966': 9, '+967': 9,\n '+968': 8, '+970': 9, '+971': 9, '+972': 9, '+973': 8, '+974': 8,\n '+975': 8, '+976': 8, '+977': 10, '+992': 9, '+993': 8, '+994': 9,\n '+995': 9, '+996': 9, '+998': 9\n};\n","import { Component, Input, OnInit } from '@angular/core';\nimport { MatError, MatFormField, MatLabel, MatOption, MatSelect } from \"@angular/material/select\";\nimport { NgClass, NgForOf, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from \"@angular/forms\";\nimport { NgxMaskDirective } from \"ngx-mask\";\nimport * as libphonenumber from 'google-libphonenumber';\nimport { MatInput } from \"@angular/material/input\";\nimport { PHONE_LENGTH_MAP } from \"./country-patterns.const\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { InputService } from \"../../services/input.service\";\n\n@Component({\n selector: 'i-tech-phone-number-input',\n standalone: true,\n imports: [\n MatSelect, MatOption, NgForOf, TranslateModule, NgClass, ReactiveFormsModule,\n NgIf, NgxMaskDirective, FormsModule, MatLabel, MatError,\n GenerateErrorMessagesPipe, MatFormField, MatInput\n ],\n templateUrl: './phone-number-input.component.html',\n styleUrl: './phone-number-input.component.scss'\n})\nexport class PhoneNumberInputComponent implements OnInit {\n @Input() data!: { label: string; placeholder: string, required?: boolean, testId?: string };\n @Input() submit!: boolean;\n countries: number[] = [];\n ngControl: any;\n form = new UntypedFormGroup({\n code: new UntypedFormControl('+1'),\n phone: new UntypedFormControl()\n })\n currentMask = '(000) 000-0000';\n private phoneUtil: libphonenumber.PhoneNumberUtil;\n\n constructor(\n private inputService: InputService\n ) {\n this.phoneUtil = libphonenumber.PhoneNumberUtil.getInstance();\n this.countries = this.phoneUtil.getSupportedCallingCodes();\n this.ngControl = this.inputService.injectNgControl();\n }\n\n ngOnInit() {\n\n this.setDefaultValue();\n\n this.form.valueChanges.subscribe((value: any) => {\n const currentCode = this.form.get('code')?.value;\n\n const phone = value.phone ? value.phone : null;\n\n this.ngControl.control.patchValue(\n phone ? { code: value.code, phone: phone } : null,\n { emitEvent: false }\n );\n\n if (currentCode !== value.code) {\n this.updateMask();\n }\n\n this.ngControl.control.updateValueAndValidity({ onlySelf: false, emitEvent: true });\n });\n\n this.ngControl.control.valueChanges.subscribe((value: string | { code: string, phone: string }) => {\n this.setDefaultValue(value);\n })\n\n if (this.ngControl.control.disabled) {\n this.form.disable({ emitEvent: false });\n }\n\n this.updateMask();\n }\n\n updateMask(): void {\n const currentCode = this.form.get('code')?.value;\n const defaultMask = '(000) 000-0000';\n\n if (!currentCode) {\n this.currentMask = defaultMask;\n return;\n }\n\n if (currentCode === '+1') {\n this.currentMask = defaultMask;\n return;\n }\n\n const maxLength = PHONE_LENGTH_MAP[currentCode] || 10;\n this.currentMask = this.generateMask(maxLength);\n }\n\n private generateMask(length: number): string {\n if (length <= 7) return '(000) 0000';\n if (length === 8) return '(000) 00-000';\n if (length === 9) return '(000) 000-000';\n if (length === 10) return '(000) 000-0000';\n if (length === 11) return '(000) 0000-0000';\n return '(000) 0000-00000';\n }\n\n setDefaultValue(initialValue: string | { code: string, phone: string } | null = this.ngControl.control.value): void {\n if (initialValue) {\n let parsed: { code: string, phone: string };\n\n if (typeof initialValue === 'string') {\n parsed = this.parsePhoneNumber(initialValue);\n } else {\n parsed = initialValue;\n }\n\n this.form.patchValue({\n code: parsed.code,\n phone: parsed.phone\n }, { emitEvent: false });\n }\n }\n\n private parsePhoneNumber(phoneNumber: string): { code: string, phone: string } {\n if (!phoneNumber || !phoneNumber.startsWith('+')) {\n return { code: '+1', phone: phoneNumber };\n }\n\n try {\n const parsedNumber = this.phoneUtil.parse(phoneNumber);\n const countryCode = '+' + parsedNumber.getCountryCode();\n const nationalNumber = parsedNumber.getNationalNumber()?.toString() || '';\n return {\n code: countryCode,\n phone: nationalNumber\n };\n } catch (error) {\n return { code: '+1', phone: phoneNumber };\n }\n }\n\n customErrorStateMatcher = {\n isErrorState: (): boolean => {\n return !!(this.ngControl.control.invalid && this.submit);\n }\n };\n\n public getCodeAndValueSeparately(): { code: string, phone: string } {\n return this.form.value;\n }\n}\n","<div class=\"phone_number_input\"\n [formGroup]=\"form\"\n [class.disabled]=\"!!(ngControl.control.disabled)\"\n [attr.data-testId]=\"data.testId || 'phone-number-element'\"\n>\n <div class=\"flex_align_center\">\n <mat-label\n [ngClass]=\"{\n 'invalid-label-color': !!(ngControl.control.errors && submit),\n }\"\n >{{(data?.label || '') | translate}}</mat-label>\n <span *ngIf=\"data.required\" class=\"required-input\">*</span>\n </div>\n\n <mat-form-field appearance=\"outline\" class=\"w-100\">\n <div class=\"flex_center_align_center phoneNumber\">\n <mat-select [placeholder]=\"'Code'\"\n formControlName=\"code\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n panelClass=\"custome_panel_phone_number\"\n (selectionChange)=\"updateMask()\"\n [attr.data-testId]=\"data.testId ? (data.testId + '_code') : 'phone-number-code-element'\"\n >\n <mat-option *ngFor=\"let code of countries\"\n [value]=\"('+' + code)\"\n >\n +{{code}}\n </mat-option>\n </mat-select>\n <input [mask]=\"currentMask\"\n formControlName=\"phone\"\n matInput\n [attr.data-testId]=\"data.testId ? (data.testId + '_input') : 'phone-number-input'\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n type=\"text\"\n (click)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\"\n >\n </div>\n\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\"\n >\n {{ (ngControl.control | generateErrorMessages : (data.label || ''): 'pattern') }}\n </mat-error>\n </mat-form-field>\n</div>\n\n\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport * as libphonenumber from 'google-libphonenumber';\n\nconst phoneUtil = libphonenumber.PhoneNumberUtil.getInstance();\n\nconst getRegionCodeForCallingCode = (callingCode: string): string | null => {\n const code = Number(callingCode.replace('+', ''));\n const region = phoneUtil.getRegionCodeForCountryCode(code);\n return region !== 'ZZ' ? region : null;\n};\n\nexport function internationalPhoneValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const phoneValue = control.value as { code: string, phone: string };\n\n if (!phoneValue || !phoneValue.phone) {\n return null;\n }\n\n const fullPhoneNumber = phoneValue.code + phoneValue.phone;\n const currentCode = phoneValue.code;\n\n const primaryRegionCode = getRegionCodeForCallingCode(currentCode);\n\n try {\n const phoneNumber = phoneUtil.parse(fullPhoneNumber, primaryRegionCode || 'ZZ');\n\n let isValid: boolean;\n\n if (primaryRegionCode) {\n isValid = phoneUtil.isPossibleNumber(phoneNumber, primaryRegionCode);\n } else {\n isValid = phoneUtil.isValidNumber(phoneNumber);\n }\n\n const codeMatch = phoneNumber.getCountryCode() === Number(currentCode.replace('+', ''));\n\n return (isValid && codeMatch) ? null : { phoneNumber: true };\n\n } catch (error) {\n return { phoneNumber: true };\n }\n };\n}\n","import { Component, ViewChild } from '@angular/core';\nimport {\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup\n} from '@angular/forms';\nimport { IFilterAngularComp } from 'ag-grid-angular';\nimport { IDoesFilterPassParams, IFilterParams } from 'ag-grid-community';\nimport { DateRangeDatepickerComponent } from '../../date-range-datepicker/date-range-datepicker.component';\nimport { ParseDateService } from \"../../../services/parse-date.service\";\nimport { AgGridDateRangeConfig } from \"../../../interfaces/date-range-filtration.interface\";\n\n@Component({\n selector: 'i-tech-date-range-selection',\n standalone: true,\n imports: [ ReactiveFormsModule, DateRangeDatepickerComponent],\n templateUrl: './date-range-selection.component.html',\n styleUrls: ['./date-range-selection.component.scss'],\n providers: [ParseDateService]\n})\nexport class DateRangeSelectionComponent implements IFilterAngularComp {\n @ViewChild(DateRangeDatepickerComponent) rangePicker!: DateRangeDatepickerComponent;\n params!: IFilterParams;\n config!: AgGridDateRangeConfig;\n\n form = new UntypedFormGroup({\n range: new UntypedFormControl(null)\n });\n\n defaultValueForDates: any[] = [];\n\n constructor(private dateService: ParseDateService) {}\n\n agInit(params: any): void {\n this.params = params;\n this.config = params['customParams'] as AgGridDateRangeConfig;\n }\n\n /**\n * Selection event from the Datepicker component\n */\n onDateChange(event: Array<string>): void {\n this.form.get('range')!.setValue(event);\n // Notify AG Grid to trigger getModel()\n this.params.filterChangedCallback();\n }\n\n /**\n * AG Grid calls this to get the state of the filter\n */\n getModel(): any {\n const value = this.form.get('range')!.value;\n if (!value || (!value[0] && !value[1])) return null;\n\n const [start, end] = value;\n const model: any = {};\n\n // Start Date mapping: 00:00:00\n if (start && this.config.returnValueByKey[0]) {\n const date = typeof start === 'string' ? new Date(start) : start;\n model[this.config.returnValueByKey[0]] =\n this.dateService.changeFormat(date, 'YYYY-MM-DD') + 'T00:00:00';\n }\n\n // End Date mapping: 23:59:59\n if (end && this.config.returnValueByKey[1]) {\n const date = typeof end === 'string' ? new Date(end) : end;\n model[this.config.returnValueByKey[1]] =\n this.dateService.changeFormat(date, 'YYYY-MM-DD') + 'T23:59:59';\n }\n\n // Include targetFields if provided\n if (this.config.targetFields?.length) {\n model.targetFields = this.config.targetFields;\n }\n\n return model;\n }\n\n /**\n * AG Grid calls this to restore the filter state\n */\n setModel(model: any): void {\n if (!model) {\n this.form.get('range')!.setValue(null);\n this.defaultValueForDates = [];\n return;\n }\n\n const start = model[this.config.returnValueByKey[0]];\n const end = model[this.config.returnValueByKey[1]];\n\n this.defaultValueForDates = [start, end];\n this.form.get('range')!.setValue([start, end]);\n }\n\n isFilterActive(): boolean {\n const val = this.form.get('range')!.value;\n return !!(val && (val[0] || val[1]));\n }\n\n // Not used for server-side filtering but required by interface\n doesFilterPass(params: IDoesFilterPassParams): boolean {\n return true;\n }\n\n afterGuiDetached(): void {\n this.rangePicker.picker.close()\n }\n\n}\n","<div class=\"ag-date-filter-wrapper\">\n <i-tech-mat-range-datepicker\n [label]=\"''\"\n [panelClass]=\"'ag-filtration-date-range ag-custom-component-popup'\"\n [placeholder]=\"config?.DATE_RANGE?.placeholder || ['From', 'To']\"\n [defaultValue]=\"defaultValueForDates\"\n (selectionChange)=\"onDateChange($event)\"\n >\n </i-tech-mat-range-datepicker>\n</div>\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PaginationResponse, UniversalSelectorConfig } from '../interfaces/selection-filtration-configuration.interface';\nimport { DATA_ENDPOINT } from \"../interfaces/selection-filtration.tokens\";\n\n@Injectable({ providedIn: 'root' })\nexport class FiltrationHelperService {\n constructor(\n private http: HttpClient,\n @Optional() @Inject(DATA_ENDPOINT) private dataEndpoint: string\n ) {}\n\n getData(config: UniversalSelectorConfig, page = 1, size = 20, search = ''): Observable<PaginationResponse> {\n // Safe check to prevent the destructuring error\n if (!config || !config.source) {\n return of(this.wrapInFakePagination([]));\n }\n\n const { source } = config;\n const idPath = config.renderAndKeys.valueByKeys || 'id';\n\n // 1. Handle Local Sources (FIXED / MAP)\n if (source.type === 'FIXED' || source.type === 'MAP') {\n const rawData = source.type === 'FIXED' ? source.data :\n Object.entries(source.data).map(([key, value]) =>\n (typeof value === 'object') ? { ...value, id: key } : { id: key, value }\n );\n\n const processed = this.filterLocal(rawData, search, config).map(item => ({\n ...item,\n __uniqueId: this.getValueByPath(item, idPath)\n }));\n return of(this.wrapInFakePagination(processed));\n }\n\n // 2. Handle Remote Source (HTTP)\n const fullUrl = `${this.dataEndpoint}/${source.url.replace(/^\\//, '')}`;\n let params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString());\n\n if (search) params = params.set('search', search);\n\n let filter: any = {};\n if (source.method === 'POST') {\n filter = source.payload || { filter: {} };\n if (search) {\n filter.searchBy = search;\n }\n }\n\n const request$ = source.method === 'POST'\n ? this.http.post<any>(fullUrl, filter, { params })\n : this.http.get<any>(fullUrl, { params });\n\n return request$.pipe(\n map(res => {\n const isStandardResponse = res && res.content;\n const rawContent = isStandardResponse ? res.content : (Array.isArray(res) ? res : []);\n\n // SINGLE PASS: Wrap and Inject __uniqueId\n const mappedContent = rawContent.map((item: any) => ({\n ...item,\n __uniqueId: this.getValueByPath(item, idPath)\n }));\n\n return isStandardResponse\n ? { ...res, content: mappedContent }\n : this.wrapInFakePagination(mappedContent);\n })\n );\n }\n\n /**\n * Universal path extractor for strings or hierarchical arrays ['user', 'role', 'id']\n */\n getValueByPath(item: any, path: string | Array<string | number>): any {\n if (!item || !path) return null;\n return Array.isArray(path)\n ? path.reduce((obj, key) => (obj && obj[key] !== undefined ? obj[key] : null), item)\n : item[path];\n }\n\n private filterLocal(data: any[], search: string, config: UniversalSelectorConfig): any[] {\n if (!search) return data;\n const s = search.toLowerCase();\n return data.filter(item =>\n config.renderAndKeys.labelKeys.some(key =>\n String(this.getValueByPath(item, key)).toLowerCase().includes(s)\n )\n );\n }\n\n private wrapInFakePagination(data: any[]): PaginationResponse {\n return {\n content: data,\n last: true,\n totalElements: data.length,\n totalPages: 1,\n size: data.length,\n number: 1,\n first: true,\n empty: data.length === 0\n };\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { Component, OnDestroy, OnInit } from \"@angular/core\";\nimport { MatProgressSpinner } from \"@angular/material/progress-spinner\";\nimport { UniversalSelectorConfig } from \"../../../interfaces/selection-filtration-configuration.interface\";\nimport { IconButtonComponent } from \"../../icon-button/icon-button.component\";\nimport { TextInputComponent } from \"../../text/text-input.component\";\nimport { IDoesFilterPassParams, IFilterParams } from \"ag-grid-community\";\nimport { FiltrationHelperService } from \"../../../services/filtration-helper.service\";\nimport { IFilterAngularComp } from \"ag-grid-angular\";\nimport { GetValueByKeyFromObjectPipe } from \"../../../pipes/get-value-by-key-from-object.pipe\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { MatRipple } from \"@angular/material/core\";\nimport { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\nimport { BehaviorSubject, combineLatest, debounceTime, distinctUntilChanged, filter, Subject, switchMap, takeUntil, tap } from \"rxjs\";\n\n@Component({\n selector: 'i-tech-select-with-search',\n templateUrl: './select-with-search.component.html',\n styleUrl: './select-with-search.component.scss',\n standalone: true,\n imports: [\n CommonModule, MatProgressSpinner, GetValueByKeyFromObjectPipe,TranslateModule, MatCheckbox,\n TextInputComponent, ReactiveFormsModule, IconButtonComponent, MatTooltip, MatRipple\n ]\n})\nexport class SelectWithSearchComponent implements OnInit, OnDestroy, IFilterAngularComp {\n config!: UniversalSelectorConfig;\n params!: IFilterParams;\n\n items: any[] = [];\n selectedIds = new Set<any>(); // O(1) performance for large grids\n allSelected = false;\n partiallySelected = false;\n\n currentPage = 1;\n isLastPage = false;\n loading = false;\n searchForm = new UntypedFormGroup({\n search: new UntypedFormControl('')\n });\n private search$ = new BehaviorSubject<string>('');\n private pageLoad$ = new BehaviorSubject<number>(0);\n private destroy$ = new Subject<void>();\n\n constructor(private dataService: FiltrationHelperService) {}\n\n agInit(params: IFilterParams): void {\n this.params = params;\n this.config = (params as any).customParams;\n\n if (this.config?.renderAndKeys) {\n this.config.renderAndKeys.needTranslate = this.config.renderAndKeys.needTranslate !== false;\n }\n\n this.pageLoad$.next(1);\n }\n\n // AG GRID INTERFACE: Logic to hide/show rows\n doesFilterPass(params: IDoesFilterPassParams): boolean {\n const valuePath = this.config.renderAndKeys.valueByKeys?.[0] || 'id';\n const rowValue = this.dataService.getValueByPath(params.data, valuePath);\n\n if (this.allSelected) {\n return !this.selectedIds.has(rowValue);\n }\n if (this.selectedIds.size === 0) return true;\n return this.selectedIds.has(rowValue);\n }\n\n isFilterActive(): boolean {\n return this.selectedIds.size > 0 || this.allSelected;\n }\n\n getModel(): any {\n if (!this.isFilterActive()) return null;\n\n const selections = Array.from(this.selectedIds);\n const backKey = this.config.backEndKey;\n\n // CASE 1: Simple but Named Model (returnFlatArray is true or undefined)\n if (this.config.returnFlatArray !== false) {\n let value: Array<unknown> | unknown = selections;\n if (this.config.mode === 'SINGLE') {\n value = selections.length ? selections[0] : null;\n }\n return { [backKey]: value };\n }\n\n // CASE 2: Hard Model (returnFlatArray is false)\n return {\n [backKey]: selections,\n selectAll: this.config.selectAll ? this.allSelected : false\n };\n }\n\n setModel(model: any): void {\n if (model && typeof model === 'object') {\n const backKey = this.config.backEndKey;\n\n // We can use the same extraction logic for both formats\n const selections = model[backKey] || [];\n\n if (Array.isArray(selections)) {\n this.selectedIds = new Set(selections);\n } else {\n this.selectedIds = new Set([model[backKey]]);\n }\n\n // selectAll will be undefined in the \"Simple\" version, which evaluates to false\n this.allSelected = model.selectAll || false;\n } else {\n // Reset internal state if model is null\n this.allSelected = false;\n this.selectedIds.clear();\n }\n this.updateCheckboxState();\n }\n\n ngOnInit() {\n this.initCombinedStream();\n }\n\n private initCombinedStream() {\n combineLatest([\n this.search$.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n tap(() => {\n this.items = [];\n this.currentPage = 1;\n })\n ),\n this.pageLoad$\n ]).pipe(\n filter(() => !!this.config),\n tap(() => this.loading = true),\n switchMap(([term, page]) => this.dataService.getData(this.config, page, 20, term)),\n takeUntil(this.destroy$)\n ).subscribe(res => {\n if (res.number <= 1) this.items = res.content;\n else this.items = [...this.items, ...res.content];\n\n this.isLastPage = res.last;\n this.loading = false;\n this.updateCheckboxState();\n });\n }\n\n private updateCheckboxState() {\n if (this.config?.mode !== 'MULTI' || !this.config?.selectAll || this.items.length === 0) {\n this.allSelected = false;\n this.partiallySelected = false;\n return;\n }\n\n const selectedInView = this.items.filter(item => this.selectedIds.has(item.__uniqueId)).length;\n this.allSelected = selectedInView === this.items.length;\n this.partiallySelected = selectedInView > 0 && selectedInView < this.items.length;\n }\n\n toggleAll(checked: boolean): void {\n this.items.forEach(item => checked ? this.selectedIds.add(item.__uniqueId) : this.selectedIds.delete(item.__uniqueId));\n this.updateCheckboxState();\n this.params.filterChangedCallback(); // Tell AG Grid to re-run doesFilterPass\n }\n\n onSearchChange(value: string): void {\n this.search$.next(value || '');\n }\n\n handleScroll(e: any) {\n const t = e.target;\n // Standard infinite scroll threshold\n if (t.scrollHeight - t.scrollTop <= t.clientHeight + 15 && !this.loading && !this.isLastPage) {\n this.currentPage++; // Moves to 2, 3, etc.\n this.pageLoad$.next(this.currentPage);\n }\n }\n\n resetFilter(): void {\n // 1. Clear Selections\n this.selectedIds.clear();\n this.allSelected = false;\n this.partiallySelected = false;\n\n // 2. Clear Search Input (This triggers the debounceTime/switchMap stream)\n this.searchForm.reset();\n this.search$.next('');\n\n // 3. Notify AG Grid to refresh the table rows\n this.params.filterChangedCallback();\n }\n\n /**\n * Handles selection logic for the custom list.\n * Supports SINGLE (radio-like) and MULTI (checkbox) modes.\n */\n onItemClick(item: any): void {\n const id = item.__uniqueId;\n\n if (this.config.mode === 'SINGLE') {\n // Single mode: Clear others and set this one\n if (this.selectedIds.has(id)) {\n this.selectedIds.clear();\n } else {\n this.selectedIds.add(id);\n }\n\n } else {\n // Multi mode: Toggle selection\n if (this.selectedIds.has(id)) {\n this.selectedIds.delete(id);\n } else {\n this.selectedIds.add(id);\n }\n }\n\n this.updateCheckboxState();\n this.params.filterChangedCallback(); // Notify AG Grid to filter rows\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.search$.complete();\n this.pageLoad$.complete();\n }\n}\n","@if (config) {\n <div class=\"universal-selector-container\">\n\n @if (config.search) {\n <div class=\"search-wrapper\" [formGroup]=\"searchForm\">\n <i-tech-text-input\n formControlName=\"search\"\n [inputData]=\"{\n type: 'text',\n placeholder: config.search.placeholder || 'Search...',\n submit: false,\n hideLabel: true,\n iconPrefix: 'search',\n emitValueChanges: true,\n clearable: true\n }\"\n (valueChangeEmitter)=\"onSearchChange($event)\">\n </i-tech-text-input>\n </div>\n }\n\n <div class=\"header-section flex_between_align_center\"\n *ngIf=\"(config.mode === 'MULTI' && config.selectAll) || (selectedIds.size > 0 || allSelected)\"\n >\n <div class=\"header-left w-100\">\n @if (config.mode === 'MULTI' && config.selectAll) {\n\n <div class=\"custom-list-item select_all\"\n matRipple\n >\n <mat-checkbox\n color=\"primary\"\n [checked]=\"allSelected\"\n [indeterminate]=\"partiallySelected\"\n (change)=\"toggleAll($event.checked)\"\n >\n <span class=\"item-label\">{{ '(Select All)' | translate }}</span>\n </mat-checkbox>\n </div>\n } @else {\n <span class=\"header-text\">{{ 'Options' | translate }}</span>\n }\n </div>\n\n @if (selectedIds.size > 0 || allSelected) {\n <i-tech-icon-button\n [iconName]=\"'refresh'\"\n [matTooltip]=\"'Reset Filter' | translate\"\n (click)=\"resetFilter()\"\n ></i-tech-icon-button>\n }\n </div>\n\n <div class=\"scroll-viewport\" (scroll)=\"handleScroll($event)\">\n <div class=\"custom-list\">\n @for (item of items; track item.__uniqueId) {\n <div class=\"custom-list-item\"\n matRipple\n [class.selected]=\"selectedIds.has(item.__uniqueId)\"\n (click)=\"onItemClick(item)\"\n >\n <mat-checkbox\n color=\"primary\"\n [checked]=\"selectedIds.has(item.__uniqueId)\"\n >\n <span class=\"item-label\">\n @let label = (config.renderAndKeys.labelKeys | getValueByKeyFromObject: item : null : config.renderAndKeys.separator);\n {{ config.renderAndKeys.needTranslate ? (label | translate) : label }}\n </span>\n </mat-checkbox>\n </div>\n }\n </div>\n\n @if (loading) {\n <div class=\"loader-container\">\n <mat-progress-spinner diameter=\"24\" mode=\"indeterminate\"></mat-progress-spinner>\n </div>\n }\n </div>\n </div>\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NgClass, NgForOf, NgIf } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SegmentedButtonOption } from '../../interfaces/segmented-button.interface';\n\n@Component({\n selector: 'i-tech-segmented-button',\n standalone: true,\n imports: [\n NgForOf,\n NgIf,\n NgClass,\n MatIcon,\n TranslateModule\n ],\n templateUrl: './segmented-button.component.html',\n styleUrl: './segmented-button.component.scss'\n})\nexport class SegmentedButtonComponent {\n @Input() options: SegmentedButtonOption[] = [];\n @Input() value = '';\n @Input() disabled = false;\n @Input() testId = '';\n\n @Output() valueChange = new EventEmitter<string>();\n\n onSelect(option: SegmentedButtonOption): void {\n if (this.disabled || option.disabled || option.value === this.value) {\n return;\n }\n this.value = option.value;\n this.valueChange.emit(this.value);\n }\n\n isFirst(index: number): boolean {\n return index === 0;\n }\n\n isLast(index: number): boolean {\n return index === this.options.length - 1;\n }\n}\n","<div class=\"i-tech-segmented-button-group\"\n [attr.data-testid]=\"testId\"\n [class.disabled]=\"disabled\">\n <button *ngFor=\"let option of options; let i = index\"\n type=\"button\"\n class=\"segment\"\n [attr.data-testid]=\"testId ? testId + '_' + option.value : null\"\n [class.selected]=\"option.value === value\"\n [class.first]=\"isFirst(i)\"\n [class.last]=\"isLast(i)\"\n [disabled]=\"disabled || option.disabled\"\n (click)=\"onSelect(option)\">\n <mat-icon *ngIf=\"option.value === value\" class=\"check-icon\" [ngClass]=\"disabled || option.disabled ? 'disabled' : ''\">check</mat-icon>\n <mat-icon *ngIf=\"option.icon && option.value !== value\" class=\"segment-icon\" [ngClass]=\"disabled || option.disabled ? 'disabled' : ''\">\n {{ option.icon }}\n </mat-icon>\n <span class=\"segment-label\">{{ option.label | translate }}</span>\n </button>\n</div>\n","import {\n Component, Input, Output, EventEmitter, OnInit, OnDestroy, HostListener, ViewChild, ElementRef\n} from '@angular/core';\nimport { FormControlName, ReactiveFormsModule } from '@angular/forms';\nimport { NgIf, NgFor, NgClass, DecimalPipe } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\nimport { InputService } from '../../services/input.service';\nimport { GenerateErrorMessagesPipe } from '../../pipes/generate-error-messages.pipe';\n\n@Component({\n selector: 'i-tech-time-input',\n templateUrl: './time-input.component.html',\n styleUrls: ['./time-input.component.scss'],\n standalone: true,\n imports: [\n NgIf, NgFor, NgClass, DecimalPipe,\n ReactiveFormsModule, TranslateModule,\n MatIcon, GenerateErrorMessagesPipe\n ]\n})\nexport class TimeInputComponent implements OnInit, OnDestroy {\n\n @Input() set submit(value: boolean) {\n if (value && this.ngControl?.control) {\n this.ngControl.control.markAsTouched();\n }\n this._submit = value;\n }\n get submit(): boolean { return this._submit; }\n\n @Input() label?: string;\n @Input() required = false;\n @Input() mode: '12h' | '24h' = '12h';\n @Input() readOnly = false;\n @Input() hideErrorText = false;\n\n @Output() selectionChanges = new EventEmitter<string>();\n\n @ViewChild('timeField') timeFieldEl!: ElementRef;\n @ViewChild('hourCol') hourColEl!: ElementRef;\n @ViewChild('minuteCol') minuteColEl!: ElementRef;\n\n ngControl: FormControlName;\n\n hours = '--';\n minutes = '--';\n amPm: 'AM' | 'PM' = 'AM';\n activeSegment: 'hours' | 'minutes' | 'ampm' | null = null;\n isPickerOpen = false;\n\n private _submit = false;\n private hourBuffer = '';\n private minuteBuffer = '';\n private valueChangesSub?: Subscription;\n\n get hourOptions(): number[] {\n if (this.mode === '12h') {\n return Array.from({ length: 12 }, (_, i) => i + 1);\n }\n return Array.from({ length: 24 }, (_, i) => i);\n }\n\n get minuteOptions(): number[] {\n return Array.from({ length: 60 }, (_, i) => i);\n }\n\n get selectedHourValue(): number | null {\n if (this.hours === '--') return null;\n return parseInt(this.hours, 10);\n }\n\n get selectedMinuteValue(): number | null {\n if (this.minutes === '--') return null;\n return parseInt(this.minutes, 10);\n }\n\n get hasValue(): boolean {\n return this.hours !== '--' && this.minutes !== '--';\n }\n\n get isDisabled(): boolean {\n return this.readOnly || (this.ngControl?.control?.disabled ?? false);\n }\n\n get hasError(): boolean {\n return !!(this.ngControl?.control?.errors && this._submit);\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any): boolean => {\n return !!(control && control.invalid && this._submit);\n }\n };\n\n constructor(private inputService: InputService, private elementRef: ElementRef) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n ngOnInit(): void {\n const initialValue = this.ngControl.control?.value;\n if (initialValue) {\n this.parseControlValue(initialValue);\n }\n\n this.valueChangesSub = this.ngControl.control?.valueChanges.subscribe(v => {\n this.parseControlValue(v);\n });\n }\n\n ngOnDestroy(): void {\n this.valueChangesSub?.unsubscribe();\n }\n\n parseControlValue(v: string | null): void {\n if (!v) {\n this.hours = '--';\n this.minutes = '--';\n this.amPm = 'AM';\n return;\n }\n const parts = v.split(':');\n if (parts.length < 2) return;\n const h24 = parseInt(parts[0], 10);\n const m = parseInt(parts[1], 10);\n if (isNaN(h24) || isNaN(m)) return;\n\n this.minutes = String(m).padStart(2, '0');\n\n if (this.mode === '12h') {\n if (h24 === 0) {\n this.hours = '12';\n this.amPm = 'AM';\n } else if (h24 < 12) {\n this.hours = String(h24).padStart(2, '0');\n this.amPm = 'AM';\n } else if (h24 === 12) {\n this.hours = '12';\n this.amPm = 'PM';\n } else {\n this.hours = String(h24 - 12).padStart(2, '0');\n this.amPm = 'PM';\n }\n } else {\n this.hours = String(h24).padStart(2, '0');\n }\n }\n\n emitControlValue(): void {\n if (!this.hasValue) return;\n const h24 = this.toHours24();\n if (h24 === null) return;\n const timeStr = `${String(h24).padStart(2, '0')}:${this.minutes}`;\n this.ngControl.control.setValue(timeStr, { emitEvent: false });\n this.ngControl.control.markAsDirty();\n this.selectionChanges.emit(timeStr);\n }\n\n private toHours24(): number | null {\n if (this.hours === '--') return null;\n const h = parseInt(this.hours, 10);\n if (this.mode === '24h') return h;\n if (this.amPm === 'AM') {\n return h === 12 ? 0 : h;\n } else {\n return h === 12 ? 12 : h + 12;\n }\n }\n\n activateSegment(segment: 'hours' | 'minutes' | 'ampm', event: Event): void {\n if (this.isDisabled) return;\n this.activeSegment = segment;\n setTimeout(() => this.timeFieldEl?.nativeElement.focus());\n }\n\n deactivate(): void {\n this.activeSegment = null;\n this.hourBuffer = '';\n this.minuteBuffer = '';\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.activeSegment === null) return;\n if (this.activeSegment === 'hours') this.onHoursKey(event);\n else if (this.activeSegment === 'minutes') this.onMinutesKey(event);\n else if (this.activeSegment === 'ampm') this.onAmPmKey(event);\n }\n\n private onHoursKey(event: KeyboardEvent): void {\n const key = event.key;\n\n if (key === 'Tab') {\n this.activeSegment = 'minutes';\n this.hourBuffer = '';\n return;\n }\n if (key === 'ArrowRight') {\n event.preventDefault();\n this.activeSegment = 'minutes';\n this.hourBuffer = '';\n return;\n }\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n event.preventDefault();\n this.adjustHours(key === 'ArrowUp' ? 1 : -1);\n return;\n }\n if (!/^\\d$/.test(key)) return;\n event.preventDefault();\n\n const digit = parseInt(key, 10);\n this.hourBuffer += key;\n\n if (this.mode === '12h') {\n if (this.hourBuffer.length === 1 && digit >= 2 && digit <= 9) {\n this.hours = '0' + key;\n this.hourBuffer = '';\n this.activeSegment = 'minutes';\n } else if (this.hourBuffer.length === 2) {\n const num = parseInt(this.hourBuffer, 10);\n if (num >= 1 && num <= 12) {\n this.hours = this.hourBuffer;\n } else {\n this.hours = '0' + this.hourBuffer[1];\n }\n this.hourBuffer = '';\n this.activeSegment = 'minutes';\n } else {\n this.hours = '0' + key;\n }\n } else {\n if (this.hourBuffer.length === 1 && digit >= 3) {\n this.hours = '0' + key;\n this.hourBuffer = '';\n this.activeSegment = 'minutes';\n } else if (this.hourBuffer.length === 2) {\n const num = parseInt(this.hourBuffer, 10);\n if (num >= 0 && num <= 23) {\n this.hours = this.hourBuffer;\n } else {\n this.hours = '0' + this.hourBuffer[1];\n }\n this.hourBuffer = '';\n this.activeSegment = 'minutes';\n } else {\n this.hours = '0' + key;\n }\n }\n this.emitControlValue();\n }\n\n private adjustHours(delta: number): void {\n if (this.mode === '12h') {\n const current = this.hours === '--' ? 12 : parseInt(this.hours, 10);\n let next = current + delta;\n if (next > 12) next = 1;\n if (next < 1) next = 12;\n this.hours = String(next).padStart(2, '0');\n } else {\n const current = this.hours === '--' ? 0 : parseInt(this.hours, 10);\n let next = current + delta;\n if (next > 23) next = 0;\n if (next < 0) next = 23;\n this.hours = String(next).padStart(2, '0');\n }\n if (this.minutes === '--') this.minutes = '00';\n this.emitControlValue();\n }\n\n private onMinutesKey(event: KeyboardEvent): void {\n const key = event.key;\n\n if (key === 'Tab') {\n if (this.mode === '12h') this.activeSegment = 'ampm';\n else this.deactivate();\n this.minuteBuffer = '';\n return;\n }\n if (key === 'ArrowLeft') {\n event.preventDefault();\n this.activeSegment = 'hours';\n this.minuteBuffer = '';\n return;\n }\n if (key === 'ArrowRight' && this.mode === '12h') {\n event.preventDefault();\n this.activeSegment = 'ampm';\n this.minuteBuffer = '';\n return;\n }\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n event.preventDefault();\n this.adjustMinutes(key === 'ArrowUp' ? 1 : -1);\n return;\n }\n if (!/^\\d$/.test(key)) return;\n event.preventDefault();\n\n const digit = parseInt(key, 10);\n this.minuteBuffer += key;\n\n if (this.minuteBuffer.length === 1 && digit >= 6) {\n this.minutes = '0' + key;\n this.minuteBuffer = '';\n if (this.mode === '12h') this.activeSegment = 'ampm';\n else this.deactivate();\n } else if (this.minuteBuffer.length === 2) {\n const num = parseInt(this.minuteBuffer, 10);\n if (num >= 0 && num <= 59) {\n this.minutes = this.minuteBuffer;\n } else {\n this.minutes = '0' + this.minuteBuffer[1];\n }\n this.minuteBuffer = '';\n if (this.mode === '12h') this.activeSegment = 'ampm';\n else this.deactivate();\n } else {\n this.minutes = '0' + key;\n }\n this.emitControlValue();\n }\n\n private adjustMinutes(delta: number): void {\n const current = this.minutes === '--' ? 0 : parseInt(this.minutes, 10);\n let next = current + delta;\n if (next > 59) next = 0;\n if (next < 0) next = 59;\n this.minutes = String(next).padStart(2, '0');\n if (this.hours === '--') {\n this.hours = this.mode === '12h' ? '12' : '00';\n }\n this.emitControlValue();\n }\n\n private onAmPmKey(event: KeyboardEvent): void {\n const key = event.key.toLowerCase();\n if (key === 'arrowleft') {\n event.preventDefault();\n this.activeSegment = 'minutes';\n return;\n }\n if (key === 'a') {\n this.amPm = 'AM';\n this.emitControlValue();\n } else if (key === 'p') {\n this.amPm = 'PM';\n this.emitControlValue();\n } else if (key === 'arrowup' || key === 'arrowdown') {\n event.preventDefault();\n this.amPm = this.amPm === 'AM' ? 'PM' : 'AM';\n this.emitControlValue();\n }\n }\n\n togglePicker(event: Event): void {\n if (this.isDisabled) return;\n this.isPickerOpen = !this.isPickerOpen;\n if (this.isPickerOpen) {\n setTimeout(() => this.scrollPickerToSelected());\n }\n }\n\n private scrollPickerToSelected(): void {\n if (this.hourColEl?.nativeElement) {\n const selected = this.hourColEl.nativeElement.querySelector('.selected');\n if (selected) {\n selected.scrollIntoView({ block: 'center', behavior: 'instant' });\n }\n }\n if (this.minuteColEl?.nativeElement) {\n const selected = this.minuteColEl.nativeElement.querySelector('.selected');\n if (selected) {\n selected.scrollIntoView({ block: 'center', behavior: 'instant' });\n }\n }\n }\n\n selectHour(h: number): void {\n this.hours = String(h).padStart(2, '0');\n if (this.minutes === '--') this.minutes = '00';\n this.emitControlValue();\n }\n\n selectMinute(m: number): void {\n this.minutes = String(m).padStart(2, '0');\n if (this.hours === '--') {\n this.hours = this.mode === '12h' ? '12' : '00';\n }\n this.emitControlValue();\n }\n\n selectAmPm(v: 'AM' | 'PM'): void {\n this.amPm = v;\n this.emitControlValue();\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (this.elementRef.nativeElement.contains(event.target as Node)) return;\n if (this.isPickerOpen) {\n this.isPickerOpen = false;\n }\n if (this.activeSegment !== null) {\n this.deactivate();\n }\n }\n}\n","<div *ngIf=\"ngControl\" class=\"time-input\">\n\n <!-- Label row -->\n <div *ngIf=\"label\" class=\"time-input__label-row\">\n <span class=\"time-input__label\">{{ label | translate }}</span>\n <span *ngIf=\"required\" class=\"time-input__required\">*</span>\n </div>\n\n <!-- Field row -->\n <div class=\"time-field\"\n #timeField\n tabindex=\"0\"\n [class.has-value]=\"hasValue\"\n [class.focused]=\"activeSegment !== null || isPickerOpen\"\n [class.disabled]=\"isDisabled\"\n [class.error]=\"hasError\"\n [class.open]=\"isPickerOpen\"\n (keydown)=\"onKeyDown($event)\"\n >\n <span class=\"segment\"\n [class.active]=\"activeSegment === 'hours'\"\n (click)=\"activateSegment('hours', $event)\"\n >{{ hours }}</span>\n\n <span class=\"sep\">:</span>\n\n <span class=\"segment\"\n [class.active]=\"activeSegment === 'minutes'\"\n (click)=\"activateSegment('minutes', $event)\"\n >{{ minutes }}</span>\n\n <span *ngIf=\"mode === '12h'\"\n class=\"segment segment--ampm\"\n [class.active]=\"activeSegment === 'ampm'\"\n (click)=\"activateSegment('ampm', $event)\"\n >{{ amPm }}</span>\n\n <!-- Clock icon button -->\n <button class=\"clock-btn\"\n type=\"button\"\n [disabled]=\"isDisabled\"\n tabindex=\"-1\"\n (click)=\"togglePicker($event)\"\n >\n <mat-icon>schedule</mat-icon>\n </button>\n </div>\n\n <!-- Picker panel -->\n <div *ngIf=\"isPickerOpen\" class=\"picker-panel\">\n <div class=\"picker-columns\">\n\n <!-- Hours column -->\n <div class=\"picker-col\" #hourCol>\n <div *ngFor=\"let h of hourOptions\"\n class=\"picker-item\"\n [class.selected]=\"h === selectedHourValue\"\n (click)=\"selectHour(h)\"\n >{{ h | number:'2.0-0' }}</div>\n </div>\n\n <!-- Minutes column -->\n <div class=\"picker-col\" #minuteCol>\n <div *ngFor=\"let m of minuteOptions\"\n class=\"picker-item\"\n [class.selected]=\"m === selectedMinuteValue\"\n (click)=\"selectMinute(m)\"\n >{{ m | number:'2.0-0' }}</div>\n </div>\n\n <!-- AM/PM row (12h mode only) -->\n <div *ngIf=\"mode === '12h'\" class=\"picker-ampm\">\n <button type=\"button\" [class.active]=\"amPm === 'AM'\" (click)=\"selectAmPm('AM')\">AM</button>\n <button type=\"button\" [class.active]=\"amPm === 'PM'\" (click)=\"selectAmPm('PM')\">PM</button>\n </div>\n </div>\n </div>\n\n <!-- Error -->\n <div *ngIf=\"hasError && !hideErrorText\" class=\"error-text\">\n {{ ngControl.control | generateErrorMessages : (label || '') }}\n </div>\n</div>\n","/*\n * Public API Surface of shared-components\n */\n\nexport * from './lib/pipes/generate-error-messages.pipe';\nexport * from './lib/pipes/array-to-string.pipe';\nexport * from './lib/pipes/get-value-by-key-from-object.pipe';\nexport * from './lib/services/input.service';\nexport * from './lib/services/parse-date.service';\nexport * from './lib/interfaces/app-input.interface';\nexport * from './lib/interfaces/button-types.enum';\nexport * from './lib/interfaces/driver-category.enum';\nexport * from './lib/interfaces/label-type.enum';\nexport * from './lib/interfaces/autocomplete-configs.interface';\nexport * from './lib/interfaces/auth.interface';\nexport * from './lib/directives/input-mask.directive';\nexport * from './lib/components/icon-button/icon-button.component';\nexport * from './lib/components/text/text-input.component';\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/autocomplete-select/autocomplete-select.component';\nexport * from './lib/components/date-picker/date-picker.component';\nexport * from './lib/components/clear-value/clear-value.component';\nexport * from './lib/components/date-range-datepicker/date-range-datepicker.component';\nexport * from './lib/components/menu/menu.component';\nexport * from './lib/components/label/label.component';\nexport * from './lib/components/date-time-picker/date-time-picker.component';\nexport * from './lib/components/new-sidebar/new-sidebar.component';\nexport * from './lib/interfaces/license.interface';\nexport * from './lib/interfaces/driver.interface';\nexport * from './lib/interfaces/selection-filtration.tokens';\nexport * from './lib/interfaces/license-type.interface';\nexport * from './lib/services/ag-grid-functions.service';\nexport * from './lib/components/ag-grid/ag-grid-button-cell/ag-grid-button-cell.component';\nexport * from './lib/components/ag-grid/status-label-cell.component';\nexport * from './lib/components/ag-grid/tooltip-cell-renderer.component';\nexport * from './lib/helper-functions/phone-number-formatter.function';\nexport * from './lib/components/phone-number-input/phone-number-input.component';\nexport * from './lib/components/phone-number-input/phone-number.validator';\nexport * from './lib/components/ag-grid/date-range-selection/date-range-selection.component';\nexport * from './lib/components/ag-grid/select-with-search/select-with-search.component';\nexport * from './lib/interfaces/selection-filtration-configuration.interface';\nexport * from './lib/interfaces/date-range-filtration.interface';\nexport * from './lib/interfaces/segmented-button.interface';\nexport * from './lib/components/segmented-button/segmented-button.component';\nexport * from './lib/components/time-input/time-input.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.InputService","i2","i1","i5","i6","i3","i2.ParseDateService","i4","phoneUtil","MatLabel","MatError","i1.ParseDateService","i1.FiltrationHelperService"],"mappings":"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CAAC,EAAI,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,EAAE,EAAG,KAAK,EAAE,EAAE;IACrE,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,EAAE,EAAG,KAAK,EAAE,EAAE,EAAG,KAAK,EAAE,EAAE,EAAG,KAAK,EAAE,EAAE,EAAG,KAAK,EAAE,CAAC;IACpE,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,EAAE,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,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"}
1
+ {"version":3,"file":"i-tech-shared-components.mjs","sources":["../../../projects/shared-components/src/lib/pipes/generate-error-messages.pipe.ts","../../../projects/shared-components/src/lib/pipes/array-to-string.pipe.ts","../../../projects/shared-components/src/lib/pipes/get-value-by-key-from-object.pipe.ts","../../../projects/shared-components/src/lib/services/input.service.ts","../../../projects/shared-components/src/lib/services/parse-date.service.ts","../../../projects/shared-components/src/lib/interfaces/button-types.enum.ts","../../../projects/shared-components/src/lib/interfaces/driver-category.enum.ts","../../../projects/shared-components/src/lib/interfaces/label-type.enum.ts","../../../projects/shared-components/src/lib/interfaces/auth.interface.ts","../../../projects/shared-components/src/lib/directives/input-mask.directive.ts","../../../projects/shared-components/src/lib/components/icon-button/icon-button.component.ts","../../../projects/shared-components/src/lib/components/icon-button/icon-button.component.html","../../../projects/shared-components/src/lib/components/text/text-input.component.ts","../../../projects/shared-components/src/lib/components/text/text-input.component.html","../../../projects/shared-components/src/lib/components/button/button.component.ts","../../../projects/shared-components/src/lib/components/button/button.component.html","../../../projects/shared-components/src/lib/components/clear-value/clear-value.component.ts","../../../projects/shared-components/src/lib/components/autocomplete-select/autocomplete-select.component.ts","../../../projects/shared-components/src/lib/components/autocomplete-select/autocomplete-select.component.html","../../../projects/shared-components/src/lib/directives/date-mask.directive.ts","../../../projects/shared-components/src/lib/components/date-picker/date-picker.component.ts","../../../projects/shared-components/src/lib/components/date-picker/date-picker.component.html","../../../projects/shared-components/src/lib/components/label/label.component.ts","../../../projects/shared-components/src/lib/components/label/label.component.html","../../../projects/shared-components/src/lib/components/date-range-datepicker/date-range-datepicker.component.ts","../../../projects/shared-components/src/lib/components/date-range-datepicker/date-range-datepicker.component.html","../../../projects/shared-components/src/lib/interfaces/dropdown-selection.constants.ts","../../../projects/shared-components/src/lib/components/menu/menu.component.ts","../../../projects/shared-components/src/lib/components/menu/menu.component.html","../../../projects/shared-components/src/lib/components/date-time-picker/date-time-picker.component.ts","../../../projects/shared-components/src/lib/components/date-time-picker/date-time-picker.component.html","../../../projects/shared-components/src/lib/components/new-sidebar/company-image/company-image.component.ts","../../../projects/shared-components/src/lib/components/new-sidebar/company-image/company-image.component.html","../../../projects/shared-components/src/lib/components/new-sidebar/new-sidebar.component.ts","../../../projects/shared-components/src/lib/components/new-sidebar/new-sidebar.component.html","../../../projects/shared-components/src/lib/interfaces/driver.interface.ts","../../../projects/shared-components/src/lib/interfaces/selection-filtration.tokens.ts","../../../projects/shared-components/src/lib/services/ag-grid-functions.service.ts","../../../projects/shared-components/src/lib/components/ag-grid/ag-grid-button-cell/ag-grid-button-cell.component.ts","../../../projects/shared-components/src/lib/components/ag-grid/ag-grid-button-cell/ag-grid-button-cell.component.html","../../../projects/shared-components/src/lib/components/ag-grid/status-label-cell.component.ts","../../../projects/shared-components/src/lib/components/ag-grid/tooltip-cell-renderer.component.ts","../../../projects/shared-components/src/lib/helper-functions/phone-number-formatter.function.ts","../../../projects/shared-components/src/lib/components/phone-number-input/country-patterns.const.ts","../../../projects/shared-components/src/lib/components/phone-number-input/phone-number-input.component.ts","../../../projects/shared-components/src/lib/components/phone-number-input/phone-number-input.component.html","../../../projects/shared-components/src/lib/components/phone-number-input/phone-number.validator.ts","../../../projects/shared-components/src/lib/components/ag-grid/date-range-selection/date-range-selection.component.ts","../../../projects/shared-components/src/lib/components/ag-grid/date-range-selection/date-range-selection.component.html","../../../projects/shared-components/src/lib/services/filtration-helper.service.ts","../../../projects/shared-components/src/lib/components/ag-grid/select-with-search/select-with-search.component.ts","../../../projects/shared-components/src/lib/components/ag-grid/select-with-search/select-with-search.component.html","../../../projects/shared-components/src/lib/components/segmented-button/segmented-button.component.ts","../../../projects/shared-components/src/lib/components/segmented-button/segmented-button.component.html","../../../projects/shared-components/src/lib/components/time-input/time-input.component.ts","../../../projects/shared-components/src/lib/components/time-input/time-input.component.html","../../../projects/shared-components/src/public-api.ts","../../../projects/shared-components/src/i-tech-shared-components.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Pipe({\n name: 'generateErrorMessages',\n standalone: true,\n pure: true\n})\nexport class GenerateErrorMessagesPipe implements PipeTransform {\n\n constructor(private translateService: TranslateService) {\n }\n\n transform(control: any,label: string,defaultPatternKey = 'fixed'): string {\n\n if (!control.errors) {\n return '';\n }\n const key = (Object.keys(control.errors)[0]);\n const translateParams: {ERROR_KEY: string} = { ERROR_KEY: this.translateService.instant(label) || 'Field' };\n const errorMessageKey = (key === 'pattern') ?\n 'errorMessages.pattern.' + defaultPatternKey : 'errorMessages.' + key;\n\n return this.translateService.instant(errorMessageKey,translateParams);\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'arrayToString',\n standalone: true\n})\nexport class ArrayToStringPipe implements PipeTransform {\n\n transform(value: Array<string | number> | string): string {\n return (typeof value === 'string') ? value : value.join(',');\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'getValueByKeyFromObject',\n standalone: true\n})\nexport class GetValueByKeyFromObjectPipe implements PipeTransform {\n\n transform(\n keys: string | Array<string | number>,\n data: any,\n withParams: Array<string | Array<string | number>> | null = null,\n withParamSymbol?: string\n ): string {\n if (typeof keys === 'string') {\n return data[keys];\n } else {\n let returnValue: any = data;\n keys.forEach((key: string | number) => {\n if (!returnValue) { return; }\n returnValue = returnValue[key];\n })\n if (withParams) {\n\n withParams.forEach((param: Array<string | number> | string) => {\n let include = data;\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n include = (include) ? include[key] : null;\n })\n } else {\n include = include[param];\n }\n\n if (include !== undefined && include !== null) {\n returnValue += (withParamSymbol ? withParamSymbol : ' ') + include;\n }\n })\n }\n\n return ((returnValue !== \"undefined\") && (returnValue !== null) ) ? returnValue : '---';\n }\n }\n\n}\n","import { ControlValueAccessor, FormControlName, NgControl } from \"@angular/forms\";\nimport { inject, Injectable } from \"@angular/core\";\n\nclass NoopValueAccessor implements ControlValueAccessor {\n writeValue() {\n // No-op: Intentionally empty to prevent value updates\n }\n\n registerOnChange() {\n // No-op: Intentionally empty to prevent change notifications\n }\n\n registerOnTouched() {\n // No-op: Intentionally empty to prevent touch notifications\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\n\nexport class InputService {\n injectNgControl(): FormControlName {\n const ngControl = inject(NgControl, { self: true, optional: true });\n\n if (!ngControl) throw new Error('...');\n\n if (ngControl instanceof FormControlName) {\n ngControl.valueAccessor = new NoopValueAccessor();\n return ngControl;\n }\n\n throw new Error(`...`);\n }\n}\n","import { Injectable } from '@angular/core';\nimport moment from 'moment';\nimport * as momentTimezone from 'moment-timezone';\nimport { HourMinute } from \"../interfaces/hour-minute.interface\";\n\n@Injectable()\nexport class ParseDateService {\n\n toLocaleTime(time: any, format = '', timezoneId: string | null): string {\n format = (format) ? format : 'MM/DD/yyyy hh:mm A';\n const momentDate = momentTimezone.utc(time);\n if (timezoneId) {\n momentDate.tz(timezoneId);\n }\n return momentDate.format(format);\n }\n\n fromLocaleToUtc(time: any, format = '', timezoneId: string | null): string {\n format = (format) ? format : 'MM/DD/yyyy hh:mm A';\n if (timezoneId) {\n return momentTimezone.tz(moment(time).format(format), timezoneId).utc(false).format();\n }\n return '';\n }\n\n toDate(date: string | undefined): Date {\n return moment(date).toDate();\n }\n\n toDateWithFormat(date: string, format: string): Date {\n return moment(date, format).toDate();\n }\n\n getDayDifferentFromCurrentDay(date: Date): number {\n return moment(date).diff(moment(), 'days')\n }\n\n changeFormat(time: any, format: string): string {\n return moment(time).format(format);\n }\n\n changeLocalFormat(time: any, format: string, timezone: string): string {\n return moment(time).tz(timezone).format(format);\n }\n\n addToDate(date: Date | null, toAdd: {second?: number , minute?: number, days?: number} = {}, format?: string | null, type: 'format' | 'date' = 'format' ): string | Date {\n const momentDate = (date ? moment(date) : moment())\n .add(toAdd.second || 0, 'second')\n .add(toAdd.minute || 0, 'minute')\n .add(toAdd.days || 0, 'days');\n\n if (type === 'format') {\n return momentDate.format(format || 'MM/DD/yyyy');\n }\n\n return momentDate.toDate();\n }\n\n getDateForWeekDay(day: number, forWeek = 0): Date {\n return moment().add(forWeek, 'week').day(day).toDate();\n }\n\n getLocalDateForWeekDay(day: number, forWeek = 0, timezoneId: string): Date {\n return moment().tz(timezoneId).add(forWeek, 'week').day(day).toDate();\n }\n\n containsDay(startDate: string, endDate: string, date: string): boolean {\n return moment(date).isBetween(startDate, endDate, 'days', '[]');\n }\n\n getDiff(startDate: string, endDate: string): any {\n return moment(startDate).diff(endDate);\n }\n\n transformHourMinuteToCorrectFormat(data: string | HourMinute, format = 'hh:mm A'): string {\n const dateObj = JSON.parse(JSON.stringify(data));\n const time = '2022-12-12T' + ((+dateObj.hour < 10 ? ('0' + (+dateObj.hour)) : dateObj.hour)\n + ':' + (+dateObj.minute < 10 ? ('0' + (+dateObj.minute)) : dateObj.minute) + ':00');\n return this.changeFormat(time, format);\n }\n\n\n}\n","/**\n * Enum representing different types of buttons.\n */\nexport enum ButtonType {\n /** A filled button with solid background, typically used for primary actions. */\n FILLED = 'FILLED',\n\n /** A tonal button with lighter background, used for secondary actions. */\n TONAL = 'TONAL',\n\n /** An outlined button with a border and no background. */\n OUTLINE = 'OUTLINE',\n\n /** A text button with no background or border, ideal for minimal UI. */\n TEXT = 'TEXT',\n\n /** A warning button with special styling to indicate caution or alert actions. */\n WARNING = 'WARNING',\n\n /** A warning outlined button with a border and no background. */\n WARN_OUTLINE = 'WARN_OUTLINE'\n}\n","export enum DriverCategoryEnum {\n COMPANY_DRIVER = 'COMPANY_DRIVER',\n AGENCY_DRIVER = 'AGENCY_DRIVER',\n INDEPENDENT_CONTRACTOR = 'INDEPENDENT_CONTRACTOR',\n}\n\nexport const DriverCategories: Array<{key: DriverCategoryEnum, name: string}> = [\n { key: DriverCategoryEnum.COMPANY_DRIVER, name: 'Company Driver' },\n { key: DriverCategoryEnum.AGENCY_DRIVER, name: 'Agency Driver' },\n { key: DriverCategoryEnum.INDEPENDENT_CONTRACTOR, name: 'Independent Driver' },\n]\n","export enum LabelTypeEnum {\n 'purple' = 'purple',\n 'teal' = 'teal',\n 'olive' = 'olive',\n 'orange' = 'orange',\n 'blue' = 'blue',\n 'cyan' = 'cyan',\n 'raspberry' = 'raspberry',\n 'yellow' = 'yellow',\n 'wine' = 'wine',\n 'primary' = 'primary',\n 'green' = 'green',\n 'red' = 'red',\n 'neutral' = 'neutral',\n 'black' = 'black',\n 'white' = 'white',\n 'gray' = 'gray',\n 'canceled' = 'canceled',\n 'starts_2m' = 'starts_2m',\n 'starts_10m' = 'starts_10m',\n 'starts_20m' = 'starts_20m',\n 'starts_60m' = 'starts_60m',\n 'starts_2h' = 'starts_2h',\n 'starts_5h' = 'starts_5h',\n 'starts_12h' = 'starts_12h',\n 'starts_24h' = 'starts_24h',\n 'late' = 'late',\n 'late_warning' = 'late_warning',\n}\n","import { TimezoneInterface } from \"./timezone.interface\";\n\nexport interface AuthInterface {\n id: number,\n uniqueId: string,\n email: string,\n countryCode: string,\n phoneNumber: string,\n userName: string,\n firstName: string,\n lastName: string,\n middleName: string,\n image: string,\n accessToken: string,\n refreshToken: string,\n expiresIn: number,\n companyId?: number,\n timeZone?: TimezoneInterface,\n systemRoles?: Array<SystemRoleInterface>,\n userAccountId: number\n}\n\nexport interface OrganizationInterface {\n id: number\n uniqueId: string,\n name: string\n image: string\n isMyCompany: boolean\n systems: Array<CompaniesEnum>\n ownerEmail: string\n userAccountId: number\n}\n\nexport interface SystemRoleInterface {\n roles: Array<{key: RoleEnum}>\n system: CompaniesEnum\n}\n\nexport enum RoleEnum {\n T3_ROLE_DISPATCHER = 'T3_ROLE_DISPATCHER',\n T3_ROLE_ADMIN = 'T3_ROLE_ADMIN',\n ROLE_DISPATCHER = 'ROLE_DISPATCHER',\n ROLE_ADMIN = 'ROLE_ADMIN',\n ROLE_OWNER = 'ROLE_OWNER',\n ROLE_TMT_ADMIN = 'ROLE_TMT_ADMIN',\n ROLE_TMT_DISPATCHER = 'ROLE_TMT_DISPATCHER',\n ROLE_TMT_DRIVER = 'ROLE_TMT_DRIVER',\n ROLE_T3_DRIVER = 'ROLE_T3_DRIVER',\n ROLE_OPS_MANAGER = 'ROLE_OPS_MANAGER'\n}\n\nexport enum CompaniesEnum {\n T3 = \"T3\",\n TMT = \"TMT\",\n BROKERAGE = \"BROKERAGE\",\n ORGANIZATION = \"ORGANIZATION\",\n}\n","import {\n Directive,\n ElementRef, HostListener,\n Input\n} from '@angular/core';\n\n@Directive({\n selector: '[inputMask]',\n standalone: true\n})\nexport class InputMaskDirective {\n @Input() inputMask!: 'number' | 'string';\n @Input() set min(value: string) {\n this.minimumValue = Number(value);\n }\n @Input() set max(value: string) {\n this.maximumValue = Number(value);\n }\n @Input() set float(value: string) {\n this.isFloat = value === 'true';\n }\n minimumValue!: number;\n maximumValue!: number;\n isFloat!: boolean;\n regexFloat = new RegExp(/^([0-9]*[.])?[0-9]+$/);\n regexOnlyNumbers = new RegExp(/^-?[0-9]+(?:\\.[0-9]+)?$/);\n\n @HostListener('paste', ['$event'])\n onPaste(event: any) {\n this.makeValidation(event, true)\n }\n\n constructor(private elementRef: ElementRef) {\n this.elementRef.nativeElement.addEventListener('keypress', (event: Event) => {\n this.makeValidation(event)\n })\n }\n\n makeValidation(event: any, fromPaste = false): boolean {\n let value: any;\n let newChar: any;\n\n if (!fromPaste) {\n newChar = String.fromCharCode(event.keyCode);\n const cursorPos = event.target.selectionStart;\n const inputText = event.target.value;\n value = `${inputText.slice(0, cursorPos)}${newChar}${inputText.slice(cursorPos, inputText.length)}`;\n } else {\n value = event.clipboardData?.getData('text/plain');\n }\n\n if (this.inputMask === 'number') {\n return this.checkingForNumbers(value, event, newChar, fromPaste);\n } else if (this.inputMask === 'string') {\n return this.checkingForTexts(value, event);\n } else {\n return true\n }\n }\n\n checkingForNumbers(value: any, event: any, newChar: string, fromPaste = false): boolean {\n if ((isNaN(this.minimumValue) || this.minimumValue < 0) && value === '-') { value = Number('-0'); }\n\n if (this.isFloat && (newChar === '.')) {\n value += '0';\n }\n if (!this.isFloat && fromPaste && value.includes('.')) {\n event.preventDefault();\n return false;\n }\n\n const regex = (this.isFloat) ? this.regexFloat : this.regexOnlyNumbers;\n\n if (!regex.test(value) ||\n (this.minimumValue && value < this.minimumValue) ||\n (this.maximumValue && value > this.maximumValue)\n ) {\n event.preventDefault();\n return false;\n }\n\n return true;\n }\n\n checkingForTexts(value: any, event: any): boolean {\n const regex = new RegExp(/^[A-Za-z0-9]*$/);\n if (!regex.test(value)) {\n event.preventDefault();\n return false;\n }\n\n return true;\n }\n\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatFabButton, MatIconButton } from \"@angular/material/button\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatIcon } from \"@angular/material/icon\";\n\n@Component({\n selector: 'i-tech-icon-button',\n templateUrl: './icon-button.component.html',\n styleUrl: './icon-button.component.scss',\n imports: [\n MatIconButton,\n NgClass,\n MatTooltip,\n TranslateModule,\n MatIcon,\n MatFabButton,\n NgIf\n ],\n standalone: true\n})\nexport class IconButtonComponent {\n @Input() size: 'medium' | 'small' = 'medium';\n @Input() type: 'standard' | 'filled' | 'tonal' | 'bordered' = 'tonal';\n @Input() borderColor: 'primary' | 'warn' = 'primary';\n @Input() iconSvg!: string;\n @Input() iconName!: string;\n @Input() tooltip!: string;\n @Input() disabled!: boolean;\n @Input() testId!: string;\n @Input() fillColor!: string;\n @Output() buttonClick = new EventEmitter<void>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.buttonClick.emit();\n }\n }\n}\n","<button\n *ngIf=\"['tonal','standard', 'bordered'].includes(type)\"\n mat-icon-button\n [class]=\"borderColor\"\n [ngClass]=\"{\n small: size === 'small',\n tonal: type === 'tonal',\n standard: type === 'standard',\n bordered: type === 'bordered'\n }\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n [attr.data-testId]=\"testId\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n\n<button\n *ngIf=\"type === 'filled'\"\n mat-fab\n class=\"filled\"\n [ngClass]=\"{small: size === 'small'}\"\n [matTooltip]=\"tooltip | translate\"\n [matTooltipDisabled]=\"!tooltip\"\n [color]=\"'primary'\"\n [attr.data-testId]=\"testId\"\n [disabled]=\"disabled || false\"\n (click)=\"onClick($event)\"\n [style.--mdc-fab-container-color]=\"fillColor || null\"\n [style.--mat-fab-state-layer-color]=\"fillColor || null\"\n>\n <mat-icon *ngIf=\"iconSvg\" [svgIcon]=\"iconSvg\"></mat-icon>\n <mat-icon *ngIf=\"iconName\">{{iconName}}</mat-icon>\n</button>\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormControlName, ReactiveFormsModule } from '@angular/forms';\nimport { InputService } from '../../services/input.service';\nimport { AppInputInterface } from \"../../interfaces/app-input.interface\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatInput } from \"@angular/material/input\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { InputMaskDirective } from \"../../directives/input-mask.directive\";\nimport { NgxMaskDirective } from \"ngx-mask\";\nimport { CdkTextareaAutosize, TextFieldModule } from '@angular/cdk/text-field';\n\n@Component({\n selector: 'i-tech-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: ['./text-input.component.scss'],\n imports: [\n TranslateModule,\n NgClass,\n MatIcon,\n MatTooltip,\n MatInput,\n ReactiveFormsModule,\n NgIf,\n GenerateErrorMessagesPipe,\n IconButtonComponent,\n InputMaskDirective,\n NgxMaskDirective,\n MatFormFieldModule,\n TextFieldModule\n ],\n standalone: true\n})\nexport class TextInputComponent {\n @ViewChild('inputElement') input!: ElementRef;\n\n @Input() set inputData(data: AppInputInterface) {\n // If submit becomes true, mark the control as touched\n if (data?.submit && this.ngControl.control) {\n this.ngControl.control.markAsTouched();\n }\n this._inputData = data;\n }\n\n get inputData(): AppInputInterface {\n return this._inputData;\n }\n\n @Output() focusOutEmitter = new EventEmitter<void>();\n @Output() valueChangeEmitter = new EventEmitter<any>();\n\n private _inputData!: AppInputInterface;\n ngControl: FormControlName;\n closed = true;\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n onFocusOut(): void {\n if (this._inputData.focusOutEmit) {\n this.focusOutEmitter.emit();\n }\n }\n\n clear(): void {\n if (this.ngControl && !this.isDisabled) {\n // Temporarily disable valueChanges emission to prevent emitting the current value\n const originalEmitValueChanges = this._inputData?.emitValueChanges;\n if (this._inputData) {\n this._inputData.emitValueChanges = false;\n }\n\n this.ngControl.control.reset();\n\n // Manually emit null value if emitValueChanges was enabled\n if (originalEmitValueChanges) {\n this.valueChangeEmitter.emit(null);\n }\n\n // Restore the original emitValueChanges setting\n if (this._inputData) {\n this._inputData.emitValueChanges = originalEmitValueChanges;\n }\n }\n }\n\n toggleEye(): void {\n if (!this.isDisabled) {\n this.closed = !this.closed;\n this.input.nativeElement.type = this.closed ? 'password' : 'text';\n }\n }\n\n onValueChange(): void {\n if (this._inputData?.emitValueChanges) {\n this.valueChangeEmitter.emit(this.ngControl.control.value);\n }\n }\n\n get hasValue(): boolean {\n return !!(this.ngControl?.control?.value && this.ngControl.control.value.toString().trim().length > 0);\n }\n\n get isDisabled(): boolean {\n return this._inputData?.readOnly || this.ngControl?.control?.disabled || false;\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.inputData?.submit);\n }\n };\n}\n","<div *ngIf=\"inputData && ngControl\">\n <div class=\"w-100\" *ngIf=\"inputData.hideLabel !== true && (inputData.label || inputData.required)\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : isDisabled,\n 'invalid-label-color': !!(ngControl.control.errors && inputData.submit)\n }\"\n *ngIf=\"inputData.label\">\n {{ inputData.label | translate }}\n </mat-label>\n <span *ngIf=\"inputData.required\" class=\"required-input\"\n [ngClass]=\"{'readonly-color' : isDisabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" class=\"w-100\"\n [class.readonly-field]=\"isDisabled\"\n >\n <!-- Leading Icon -->\n <mat-icon *ngIf=\"inputData.iconPrefix\"\n matPrefix\n [ngClass]=\"{\n 'readonly-color' : !inputData.iconPrefixColor && isDisabled,\n 'default-form-icon-color' : !inputData.iconPrefixColor && !isDisabled\n }\"\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\n [style.color]=\"inputData.iconPrefixColor || null\"\n >{{ inputData.iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"inputData.iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((inputData.iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"inputData.iconPrefixSvg\"\n ></mat-icon>\n\n <!-- Input Field -->\n <input matInput #inputElement\n *ngIf=\"!inputData.textarea\"\n [type]=\"inputData.type || 'text'\"\n [readonly]=\"inputData.readOnly\"\n [placeholder]=\"(inputData.placeholder || '') | translate\"\n [pattern]=\"inputData.pattern!\"\n [formControl]=\"ngControl.control\"\n [attr.data-testId]=\"inputData.testId\"\n [mask]=\"inputData.mask || ''\"\n [ngClass]=\"{'readonly-color readonly-cursor' : isDisabled}\"\n [inputMask]=\"inputData.inputMask!\"\n [float]=\"'' + (inputData.float || false)\"\n [min]=\"('' + inputData.min)\"\n [max]=\"('' + inputData.max)\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n (blur)=\"onFocusOut()\"\n (input)=\"onValueChange()\"\n >\n\n <textarea matInput\n cdkTextareaAutosize\n *ngIf=\"inputData.textarea\"\n [type]=\"inputData.type || 'text'\"\n [readonly]=\"inputData.readOnly\"\n [placeholder]=\"(inputData.placeholder || '') | translate\"\n [pattern]=\"inputData.pattern!\"\n [formControl]=\"ngControl.control\"\n [ngClass]=\"{'readonly-color' : isDisabled}\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n (input)=\"onValueChange()\"\n ></textarea>\n\n <!-- Clear Icon -->\n <i-tech-icon-button\n *ngIf=\"inputData.clearable && hasValue\"\n iconName=\"cancel\"\n [ngClass]=\"isDisabled ? 'readonly-color' : 'default-form-icon-color'\"\n class=\"clear-icon-overlay\"\n (click)=\"clear()\"\n >\n </i-tech-icon-button>\n\n <i-tech-icon-button\n *ngIf=\"inputData.type === 'password'\"\n [iconName]=\"closed ? 'visibility' : 'visibility_off'\"\n matSuffix\n [ngClass]=\"isDisabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"toggleEye()\"\n >\n </i-tech-icon-button>\n\n <!-- Trailing Icon -->\n <i-tech-icon-button\n *ngIf=\"inputData.iconSuffix\"\n [iconName]=\"inputData.iconSuffix\"\n [matTooltip]=\"inputData.iconSuffixTooltip ? (inputData.iconSuffixTooltip | translate) : ''\"\n [matTooltipPosition]=\"'right'\"\n [ngClass]=\"isDisabled ? 'readonly-color' : 'default-form-icon-color'\"\n matSuffix\n >\n </i-tech-icon-button>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && inputData.submit)\">\n {{ ngControl.control | generateErrorMessages : (inputData.label || '') : inputData.defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && inputData.submit)) && inputData.hint\">\n {{ inputData.hint | translate }}\n </mat-hint>\n </mat-form-field>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatButton } from \"@angular/material/button\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatProgressSpinner } from \"@angular/material/progress-spinner\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { TranslateModule, TranslatePipe, TranslateService } from \"@ngx-translate/core\";\nimport { ButtonType } from '../../interfaces/button-types.enum';\nimport { NgxMaskDirective, NgxMaskPipe } from 'ngx-mask';\n\n/**\n * A reusable button component with Material Design styling and custom functionality.\n */\n@Component({\n selector: 'i-tech-button',\n standalone: true,\n imports: [\n MatButton,\n NgClass,\n MatProgressSpinner,\n NgIf,\n MatIconModule,\n TranslateModule\n ],\n templateUrl: './button.component.html',\n styleUrl: './button.component.css',\n providers: [\n NgxMaskDirective,\n NgxMaskPipe,\n TranslatePipe,\n TranslateService\n ]\n})\nexport class ButtonComponent {\n /**\n * The text displayed inside the button.\n */\n @Input() text = '';\n\n /**\n * Data attribute used for Cypress or other testing frameworks.\n */\n @Input() testId = '';\n\n /**\n * Font icon class for displaying an icon (e.g., Material Icons).\n */\n @Input() fontIcon = '';\n\n /**\n * SVG icon name for displaying an SVG icon.\n */\n @Input() svgIcon = '';\n\n /**\n * Defines the type of button (e.g., `FILLED`, `OUTLINED`).\n */\n @Input() type: ButtonType = ButtonType.FILLED;\n\n /**\n * Additional custom classes to style the button.\n */\n @Input() customClass = '';\n\n /**\n * If true, the button acts as a submit button.\n */\n @Input() submit = false;\n\n /**\n * If true, the button is disabled and cannot be clicked.\n */\n @Input() disabled = false;\n\n /**\n * Indicates whether the button is currently activated.\n */\n @Input() activated = false;\n\n /**\n * The color of the button (e.g., `primary`, `warn`).\n */\n @Input() color: 'primary' | 'warn' = 'primary';\n\n /**\n * Emits an event when the button is clicked.\n */\n @Output() buttonClick = new EventEmitter<void>();\n\n /**\n * Enum reference for `ButtonType` to use in templates.\n */\n protected readonly ButtonType = ButtonType;\n\n /**\n * Handles the button click event.\n *\n * @param event - The mouse event triggered by clicking the button.\n */\n onClick(event: MouseEvent): void {\n if (!this.disabled && !this.submit) {\n this.buttonClick.emit();\n }\n }\n}\n","<button *ngIf=\"[ButtonType.FILLED,ButtonType.WARNING].includes(type)\"\n mat-flat-button\n [attr.data-testId]=\"testId\"\n [color]=\"type === ButtonType.WARNING ? 'warn' : color\"\n [class.activated]=\"activated\"\n [ngClass]=\"(customClass || '')\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span style=\"white-space: nowrap\">{{text | translate}}</span>\n</button>\n<button *ngIf=\"[ButtonType.TONAL,ButtonType.TEXT].includes(type)\"\n mat-button\n [attr.data-testId]=\"testId\"\n [ngClass]=\"(type === ButtonType.TONAL ? 'tertiary ' : '') + (customClass || '')\"\n [class.activated]=\"activated\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\">{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n\n <span>{{text | translate}}</span>\n</button>\n<button *ngIf=\"[ButtonType.OUTLINE,ButtonType.WARN_OUTLINE].includes(type)\"\n mat-stroked-button\n [attr.data-testId]=\"testId\"\n [ngClass]=\"(customClass || '') \"\n [color]=\"type === ButtonType.WARN_OUTLINE ? 'warn' : color\"\n [disabled]=\"disabled || submit\"\n (click)=\"onClick($event)\"\n [class.activated]=\"activated\"\n>\n <span *ngIf=\"submit\" class=\"spinner-overlay\">\n <mat-spinner diameter=\"16\"></mat-spinner>\n </span>\n <mat-icon *ngIf=\"fontIcon && !submit\" >{{fontIcon}}</mat-icon>\n <mat-icon *ngIf=\"svgIcon && !submit\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span>{{text | translate}}</span>\n</button>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NgClass, NgOptimizedImage } from \"@angular/common\";\n\n@Component({\n selector: 'i-tech-clear-value',\n template: `<img\n class=\"pointer\"\n [ngClass]=\"className || 'standard'\"\n (click)=\"resetValue.emit()\"\n ngSrc=\"./ic_close.svg\"\n height=\"24\" width=\"24\" alt=\"\"/>`,\n styles: [`\n img {\n position: absolute;\n width: 15px;\n height: 15px;\n }\n\n .big {\n width: 25px;\n height: 25px;\n }\n\n .range_date {\n right: -65px;\n top: 15px;\n }\n\n .standard {\n right: -20px;\n top: 40px;\n }\n `],\n imports: [\n NgClass,\n NgOptimizedImage\n ],\n standalone: true\n})\nexport class ClearValueComponent {\n @Input() className!: string;\n @Input() additionalClass!: string;\n @Output() resetValue = new EventEmitter<any>();\n}\n","import {\n Component,\n ViewChild,\n Input,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n ElementRef, HostListener, AfterViewInit\n} from '@angular/core';\nimport { MatSelect, MatSelectModule } from \"@angular/material/select\";\nimport { AutocompleteConfigsInterface } from \"../../interfaces/autocomplete-configs.interface\";\nimport { FormControlName, ReactiveFormsModule } from \"@angular/forms\";\nimport { InputService } from '../../services/input.service';\nimport { ButtonType } from '../../interfaces/button-types.enum';\nimport { NgClass, NgFor, NgIf } from \"@angular/common\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { ButtonComponent } from \"../button/button.component\";\nimport { GetValueByKeyFromObjectPipe } from \"../../pipes/get-value-by-key-from-object.pipe\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { ClearValueComponent } from \"../clear-value/clear-value.component\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\n\n@Component({\n selector: 'i-tech-autocomplete-select',\n templateUrl: './autocomplete-select.component.html',\n styleUrls: ['./autocomplete-select.component.scss'],\n imports: [\n NgClass,\n MatTooltip,\n NgIf,\n NgFor,\n TranslateModule,\n IconButtonComponent,\n ReactiveFormsModule,\n MatSelectModule,\n ButtonComponent,\n GetValueByKeyFromObjectPipe,\n MatIcon,\n GenerateErrorMessagesPipe,\n ClearValueComponent,\n MatFormFieldModule\n ],\n standalone: true\n})\nexport class AutocompleteSelectComponent implements OnChanges, AfterViewInit {\n @ViewChild('matSelect') matSelect!: MatSelect;\n @ViewChild('searchInput') searchInput!: ElementRef;\n @Input() className!: string;\n @Input() submitValue!: boolean;\n @Input() hideErrorText = false;\n @Input() defaultValueForFirst!: string;\n private _lastConfigSignature = '';\n\n @Input() set configs(data: AutocompleteConfigsInterface) {\n if (!data) {\n this.selectConfig = data;\n return;\n }\n\n // Generate a signature that works with functions\n const signature = JSON.stringify(data, (key, value) => {\n // Replace functions with a stable placeholder\n return typeof value === 'function' ? '[Function]' : value;\n });\n\n // Stop if config hasn't actually changed\n if (this._lastConfigSignature === signature) {\n this.selectConfig = data; // Update reference but skip initialization\n return;\n }\n\n // Config changed - proceed with initialization\n this._lastConfigSignature = signature;\n this.selectConfig = data;\n\n // Set default search strategy to 'backend' if not specified\n if (!this.selectConfig.searchStrategy) {\n this.selectConfig.searchStrategy = 'backend';\n }\n\n if ((typeof this.selectConfig.paginate) === 'function') {\n if (this.firstRequest) {\n return;\n }\n this.pending = true;\n this.getData();\n this.firstRequest = true\n return;\n }\n\n this.data = this.selectConfig.paginate;\n this.allData = [...this.data]; // Store all data for local search\n this.findAndSetDefaultValueFromData();\n };\n\n @Input() detectChanges!: boolean;\n @Output() selectionChange = new EventEmitter<any>();\n @Output() multiSelectSelectionChange = new EventEmitter<any>();\n @Output() emitAction = new EventEmitter<any>();\n @ViewChild('allSelected') allSelected!: MatSelect;\n pending = false;\n defaultValue!: any;\n data: Array<any> = [];\n allData: Array<any> = []; // Store all data for local search\n paginationData: any = { current: 1, last: 0, searchValue: '' };\n ngControl: FormControlName;\n selectConfig!: AutocompleteConfigsInterface;\n firstRequest = false;\n showPlaceholder = true;\n isNeededForRecall = false;\n showingValue: any;\n selectedOptionForMultipleSelection: Array<any> = [];\n multiSelectedValues: Array<any> = [];\n searchTimeoutId: any;\n tabVisibility!: boolean;\n accessToNextRequest = true;\n disabled = false;\n blockRecallDefaultValueSetter = false;\n baseData: any;\n requestLoading = false;\n protected readonly ButtonType = ButtonType;\n\n @HostListener('document:visibilitychange')\n handleVisibilityChange(): void {\n this.tabVisibility = !document.hidden;\n if (this.ngControl.control.value) {\n return;\n }\n this.closePanelAndUnsetFocus();\n if (!document.hidden) {\n this.isNeededForRecall = true;\n this.pending = true;\n setTimeout(() => {\n this.pending = false\n }, 4000)\n }\n }\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n get isDisabled(): boolean {\n return this.selectConfig?.readOnly || this.ngControl?.control?.disabled || false;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['selectConfig'] && this.selectConfig) {\n if ((typeof this.selectConfig.paginate) === 'function') {\n this.getData();\n }\n }\n }\n\n ngAfterViewInit() {\n this.ngControl.control.valueChanges.subscribe((newValue: any) => {\n // If we have data and a value\n if (this.data.length && newValue) {\n // Check if the current default value doesn't match the new value\n if (!this.defaultValue || this.defaultValue.id !== newValue) {\n // Reset the block flag to allow updating the value\n this.blockRecallDefaultValueSetter = false;\n this.findAndSetDefaultValueFromData();\n }\n } else if (newValue && !this.data.length) {\n // If we have a value but no data, we need to fetch the data\n this.blockRecallDefaultValueSetter = false;\n this.isNeededForRecall = true;\n this.reCallData();\n } else if (!newValue) {\n this.resetVariables();\n }\n });\n }\n\n hardReload(): void {\n this.getData('', true);\n }\n\n resetVariables(): void {\n this.defaultValueForFirst = '';\n this.showingValue = null;\n this.accessToNextRequest = true;\n this.pending = false;\n this.requestLoading = false;\n this.defaultValue = null;\n if (this.searchInput?.nativeElement) {\n this.searchInput.nativeElement.value = '';\n }\n }\n\n resetAllAndHardReload(): void {\n this.resetVariables();\n this.getData('', true);\n }\n\n /**\n * Dynamic request for select data.\n * @param searchText - The input value to search options by.\n * @param fromSearch - Access for search.\n * @returns Select data.\n */\n getData(searchText?: string, fromSearch?: boolean): void {\n // For local search strategy, don't make backend calls on search\n if (this.selectConfig.searchStrategy === 'local' && fromSearch && this.allData.length > 0) {\n this.performLocalSearch(searchText || '');\n return;\n }\n\n if (!fromSearch && !this.accessToNextRequest) {\n return;\n }\n\n if (this.requestLoading) {\n return;\n }\n\n if (fromSearch) {\n this.paginationData.current = 1;\n this.accessToNextRequest = true;\n this.paginationData.searchValue = searchText || '';\n }\n const functionToDo = this.selectConfig.paginate(this.paginationData.current, this.paginationData?.searchValue || '');\n\n this.requestLoading = true;\n functionToDo?.subscribe((data: Array<any> | any) => {\n const dataToAdd = ('content' in data) ? data.content : data;\n\n if ('content' in data) {\n this.accessToNextRequest = !data.last || (data.totalPages > this.paginationData.current);\n }\n\n this.data = (fromSearch || this.selectConfig?.blockPagination) ? dataToAdd : [...this.data, ...dataToAdd];\n\n // Store all data for local search\n if (this.selectConfig.searchStrategy === 'local') {\n this.allData = [...this.data];\n }\n\n this.pending = false;\n this.requestLoading = false;\n\n if (!dataToAdd.length) {\n this.paginationData.last = this.paginationData.current;\n return;\n }\n\n this.paginationData.current += 1;\n this.paginationData.last += 1;\n\n setTimeout(() => {\n this.findAndSetDefaultValueFromData();\n }, 10)\n }, () => {\n this.pending = false;\n this.requestLoading = false;\n })\n }\n\n performLocalSearch(searchText: string): void {\n if (!searchText || searchText.trim() === '') {\n // If no search text, show all data\n this.data = [...this.allData];\n this.pending = false;\n return;\n }\n\n const searchLower = searchText.toLowerCase().trim();\n\n // Filter data based on valueToShowByKey\n this.data = this.allData.filter((item: any) => {\n const searchableText = this.buildSearchableText(item);\n return searchableText.toLowerCase().includes(searchLower);\n });\n\n this.pending = false;\n }\n\n buildSearchableText(item: any): string {\n if (!this.selectConfig.valueToShowByKey) {\n return '';\n }\n\n let returnValue: any = item;\n this.selectConfig.valueToShowByKey.forEach((key: string | number) => {\n if (!returnValue) { return; }\n returnValue = returnValue[key];\n })\n return returnValue;\n }\n\n findAndSetDefaultValueFromData(): void {\n if (this.selectConfig.multiple) {\n if (this.ngControl.value && Array.isArray(this.ngControl.value) && this.ngControl.value.length > 0) {\n // Only add items from current data that aren't already tracked\n this.ngControl.value.forEach((selectedValue: any) => {\n // Check if we already have this value tracked\n const alreadyTracked = this.selectedOptionForMultipleSelection.find(item => {\n const itemValue = this.selectConfig.valueByKey ? item[this.selectConfig.valueByKey[0]] : item;\n return itemValue === selectedValue;\n });\n\n // Only add if not already tracked and exists in current data\n if (!alreadyTracked) {\n // For local search, check in allData instead of just data\n const sourceData = this.selectConfig.searchStrategy === 'local' ? this.allData : this.data;\n const matchingItem = sourceData.find((item) => {\n const itemValue = this.selectConfig.valueByKey ? item[this.selectConfig.valueByKey[0]] : item;\n return itemValue === selectedValue;\n });\n\n if (matchingItem) {\n this.selectedOptionForMultipleSelection.push(matchingItem);\n }\n }\n });\n\n // Update the showing value if we have selections\n if (this.selectedOptionForMultipleSelection.length > 0) {\n this.setShowingValue(this.selectedOptionForMultipleSelection[0]);\n }\n }\n } else {\n if (!this.ngControl.value && !this.data && !this.showingValue) {\n return;\n }\n this.setDefaultValue();\n }\n }\n\n setDefaultValue(): void {\n // For local search, check in allData instead of just data\n const sourceData = this.selectConfig.searchStrategy === 'local' ? this.allData : this.data;\n\n if (this.selectConfig.compareObjectsForDefaultValue) {\n this.defaultValue = sourceData.find((item) => JSON.stringify(item) === JSON.stringify(this.ngControl.value));\n } else {\n this.defaultValue = sourceData.find((item) => item.id === this.ngControl.value);\n }\n\n this.baseData = this.defaultValue;\n if (!this.defaultValue && !this.defaultValueForFirst) {\n return;\n }\n this.setShowingValue(this.defaultValue || this.defaultValueForFirst);\n }\n\n clearSelectedValue(event: any): void {\n event.stopPropagation();\n event.preventDefault();\n this.ngControl.control.reset(null);\n this.matSelect._onBlur();\n this.closePanelAndUnsetFocus();\n this.selectionChange.emit(null);\n }\n\n optionClick(showingData: any): void {\n this.baseData = showingData\n if (!this.selectConfig.multiple) {\n this.setShowingValue(showingData);\n this.matSelect.close();\n return;\n }\n\n // For multiple selection, let Angular Material handle the selection\n this.showPlaceholder = false;\n }\n\n addNewItemEvent(): void {\n this.isNeededForRecall = true;\n this.emitAction.emit();\n }\n\n /**\n * Filter and show.\n * @param data - Existing chosen data.\n */\n setShowingValue(data: any): void {\n if (!data) {\n return;\n }\n if (this.selectConfig.multiple && this.selectConfig.search) {\n const fullText: Array<string> = [];\n this.selectedOptionForMultipleSelection.forEach((optionData: any) => {\n fullText.push(this.collectAndGetSelectionToShowForOneOption(optionData))\n })\n this.multiSelectedValues = fullText;\n this.showingValue = fullText.join(',');\n } else {\n this.showingValue = this.collectAndGetSelectionToShowForOneOption(data);\n }\n\n if (!this.showingValue && this.defaultValueForFirst) {\n this.showingValue = this.defaultValueForFirst;\n }\n\n this.blockRecallDefaultValueSetter = true;\n }\n\n collectAndGetSelectionToShowForOneOption(data: any): string {\n let include = data;\n let includeOptional = data;\n\n if (this.selectConfig.valueToShowByKey) {\n this.selectConfig.valueToShowByKey.forEach((param: Array<string | number> | string) => {\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n include = (include) ? include[key] : null;\n })\n } else {\n include = include[param];\n }\n })\n if (this.selectConfig.showFullTextWithOptionalOnSelectedValue) {\n this.selectConfig.valueToShowByParam?.forEach((param: Array<string | number> | string) => {\n\n if (typeof param === 'object') {\n param.forEach((key: string | number) => {\n includeOptional = (includeOptional) ? includeOptional[key] : null;\n })\n } else {\n includeOptional = includeOptional[param];\n }\n })\n if (this.selectConfig.valueToShowByParam && typeof includeOptional === 'string') {\n include += (this.selectConfig.withParamSymbol || '') + includeOptional\n }\n }\n }\n\n return include;\n }\n\n /**\n * Block another events.\n * @param event - Element click event.\n */\n preventDefault(event: any) {\n if (!this.selectConfig.multiple) {\n return;\n }\n event.preventDefault()\n }\n\n registerPanelScrollEvent(element: MatSelect) {\n // Disable scroll pagination for local search\n if (this.selectConfig.searchStrategy === 'local') {\n return;\n }\n\n if (this.selectConfig.paginateOnScroll === false || !element.panel) {\n return;\n }\n\n const panel = element.panel.nativeElement;\n panel.addEventListener('scroll', (event: any) => this.loadDataOnScroll(event));\n }\n\n loadDataOnScroll(event: any) {\n // Don't paginate on scroll for local search\n if (this.selectConfig.searchStrategy === 'local') {\n return;\n }\n\n const pos = (event.target.scrollTop || event.target.scrollTop) + event.target.offsetHeight;\n const max = event.target.scrollHeight;\n if ((pos + 1) >= max) {\n if (this.paginationData.current === this.paginationData.last || this.selectConfig.blockPagination) {\n return;\n }\n this.getData();\n }\n }\n\n focusSearchInput() {\n if (this.selectConfig.search && this.searchInput) {\n this.searchInput.nativeElement.focus();\n this.searchInput.nativeElement.value = ''\n }\n }\n\n inputFocusOut(): void {\n this.isNeededForRecall = !!this.searchInput.nativeElement.value;\n this.searchInput.nativeElement.value = '';\n this.showPlaceholder = true;\n this.clearTimeoutForSearch();\n\n // For local search, reset to show all data when search is cleared\n if (this.selectConfig.searchStrategy === 'local') {\n this.data = [...this.allData];\n }\n }\n\n resetValue(): void {\n this.selectionChange.emit(null);\n this.ngControl.reset(null);\n this.inputFocusOut();\n }\n\n getDataWithSearch(value: any, event: any): void {\n this.clearTimeoutForSearch();\n\n // For local search, apply filtering immediately without timeout\n if (this.selectConfig.searchStrategy === 'local') {\n this.performLocalSearch(value);\n return;\n }\n\n // For backend search, use debounced search\n if (value.length >= 1) {\n this.searchTimeoutId = setTimeout(() => {\n this.getData(value, true)\n }, 800);\n } else if (value.length <= 1 && event.keyCode === 8) {\n this.getData(value, true)\n }\n }\n\n clearTimeoutForSearch(): void {\n if (this.searchTimeoutId) {\n clearTimeout(this.searchTimeoutId);\n this.searchTimeoutId = 0;\n }\n }\n\n openSelection(): void {\n if (this.selectConfig.disabled || this.ngControl.control.disabled) {\n return;\n }\n if (this.showPlaceholder) {\n this.matSelect.open();\n } else {\n this.closePanelAndUnsetFocus();\n }\n this.showPlaceholder = !this.showPlaceholder;\n if (!this.showPlaceholder) {\n this.reCallData();\n }\n }\n\n closePanelAndUnsetFocus(): void {\n this.matSelect.close();\n if (this.searchInput) {\n this.searchInput.nativeElement.blur()\n }\n }\n\n openedChange(event: any) {\n if (event) {\n if (this.isNeededForRecall) {\n this.reCallData();\n return;\n }\n if (!this.selectConfig.search) {\n this.pending = false\n this.reCallData();\n }\n\n return;\n }\n\n // Panel closed\n this.showPlaceholder = true;\n\n // Clear search input ONLY when closing\n if (this.selectConfig.search && this.searchInput) {\n this.searchInput.nativeElement.value = '';\n this.clearTimeoutForSearch();\n\n // For local search, reset to show all data\n if (this.selectConfig.searchStrategy === 'local') {\n this.data = [...this.allData];\n }\n }\n }\n\n reCallData(): void {\n // TODO refactor this part\n if (!this.isNeededForRecall) {\n return;\n }\n this.data = [];\n this.pending = true;\n this.paginationData = {\n current: 1,\n last: 0,\n };\n this.accessToNextRequest = true;\n if ((typeof this.selectConfig.paginate) === 'function') {\n this.getData();\n } else {\n this.pending = false;\n this.data = this.selectConfig.paginate;\n // Store all data for local search\n if (this.selectConfig.searchStrategy === 'local') {\n this.allData = [...this.data];\n }\n }\n this.isNeededForRecall = false;\n }\n\n emitSelectionChangeAndClose(event: any) {\n if (this.selectConfig.multiple) {\n // Get what Angular Material thinks is selected (may be incomplete due to missing options)\n const materialSelectedValues = event.value || [];\n\n // Get the previously selected values that we were tracking\n const previouslyTrackedValues = this.selectedOptionForMultipleSelection.map(item =>\n this.selectConfig.valueByKey ? item[this.selectConfig.valueByKey[0]] : item\n );\n\n // For local search, use allData; for backend search, use data\n const sourceData = this.selectConfig.searchStrategy === 'local' ? this.allData : this.data;\n\n // Find which previously selected values are NOT in the current data (lost due to search)\n const lostValues = previouslyTrackedValues.filter(value =>\n !sourceData.find(item => {\n const itemValue = this.selectConfig.valueByKey ? item[this.selectConfig.valueByKey[0]] : item;\n return itemValue === value;\n })\n );\n\n // Merge: keep lost values + add what Angular Material selected from current data\n const mergedSelectedValues = [...new Set([...lostValues, ...materialSelectedValues])];\n\n // Update Angular Material's form control with the merged selection\n this.ngControl.control.setValue(mergedSelectedValues, { emitEvent: false });\n\n // Now sync our tracking with the complete merged selection\n const selectedValueSet = new Set(mergedSelectedValues);\n\n // Remove any existing selections that are no longer selected\n this.selectedOptionForMultipleSelection = this.selectedOptionForMultipleSelection.filter(item => {\n const itemValue = this.selectConfig.valueByKey ? item[this.selectConfig.valueByKey[0]] : item;\n return selectedValueSet.has(itemValue);\n });\n\n // Add any new selections from current data that aren't already tracked\n mergedSelectedValues.forEach((selectedValue: any) => {\n // Check if we already have this item in our tracking\n const alreadyTracked = this.selectedOptionForMultipleSelection.find(item => {\n const itemValue = this.selectConfig.valueByKey ? item[this.selectConfig.valueByKey[0]] : item;\n return itemValue === selectedValue;\n });\n\n // If not tracked yet, try to find it in current data and add it\n if (!alreadyTracked) {\n const matchingItem = sourceData.find((item) => {\n const itemValue = this.selectConfig.valueByKey ? item[this.selectConfig.valueByKey[0]] : item;\n return itemValue === selectedValue;\n });\n if (matchingItem) {\n this.selectedOptionForMultipleSelection.push(matchingItem);\n }\n }\n });\n\n // Update the display values\n if (this.selectedOptionForMultipleSelection.length > 0) {\n this.setShowingValue(this.selectedOptionForMultipleSelection[0]);\n } else {\n this.showingValue = '';\n this.multiSelectedValues = [];\n }\n\n this.multiSelectSelectionChange.emit(this.multiSelectedValues);\n return;\n }\n this.selectionChange.emit(event.value);\n this.matSelect.close();\n }\n\n /*\n * Open mat-select and focus on search on icon click\n */\n iconClick(matSelect: MatSelect, searchInput?: ElementRef): void {\n matSelect.open();\n searchInput?.nativeElement?.focus();\n }\n\n /*\n * Custom error state matcher for mat-select to properly show error state in mat-form-field\n */\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submitValue);\n }\n };\n}\n","<div class=\"new-mat-autocomplete\" id=\"mat_autocomplete\"\n [ngClass]=\"{\n 'mat-select-without_icon': !selectConfig.iconUrl && !selectConfig.activeStateIconUrl,\n 'mat-select-with-search': selectConfig.search,\n 'without-label': selectConfig.hideLabel,\n 'invalid_field': ngControl.control.errors && submitValue,\n 'readonly-field': isDisabled,\n 'select-with-prefix': selectConfig['iconPrefixSvg'] || selectConfig['iconPrefix']\n }\"\n [matTooltip]=\"(selectConfig.hover && !isDisabled ? ((selectConfig.hover || '') | translate) : '')\"\n [matTooltipClass]=\"'mat-mdc-tooltip big-td-mat-tooltip'\"\n [matTooltipPosition]=\"'above'\"\n *ngIf=\"selectConfig && ngControl\">\n\n <div class=\"w-100\" *ngIf=\"!selectConfig.hideLabel && (selectConfig.label || selectConfig.required)\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : isDisabled,\n 'invalid-label-color': !!(ngControl.control.errors && submitValue)\n }\">\n {{ selectConfig.label | translate }}\n </mat-label>\n <span *ngIf=\"selectConfig.required\" class=\"required-input\"\n [ngClass]=\"{'readonly-color' : isDisabled}\">*</span>\n </div>\n\n\n <!-- Search Input -->\n <div class=\"search-input w-100\"\n (click)=\"$event.stopPropagation();$event.preventDefault()\"\n [ngClass]=\"{ hide_input_placeholder: showPlaceholder || isDisabled }\"\n *ngIf=\"selectConfig.search\"\n >\n <input autocomplete=\"off\"\n id=\"searchInput\"\n type=\"text\"\n [attr.data-testId]=\"selectConfig.testId + '-autocomplete-input'\"\n [ngClass]=\"{'pr-25': !selectConfig.iconUrl, 'readonly-color': isDisabled}\"\n #searchInput\n [disabled]=\"isDisabled\"\n [placeholder]=\"(isDisabled || selectConfig.hover) ? '' : 'Search'\"\n (focus)=\"openSelection()\"\n (keydown)=\"$event.stopPropagation()\"\n (keyup)=\"getDataWithSearch(searchInput.value,$event)\">\n </div>\n\n <!-- Placeholder/Selected Value Display -->\n <ng-container *ngIf=\"showPlaceholder && selectConfig.search\">\n <div class=\"custom-placeholder\"\n *ngIf=\"(!ngControl?.value && !ngControl?.value?.length || !showingValue) ||\n (selectConfig.multiple && ngControl?.value && !ngControl?.value?.length)\"\n [ngClass]=\"isDisabled ? 'readonly-color' : 'default-form-icon-color'\"\n >\n {{ ((selectConfig.placeholder || '') | translate) }}\n </div>\n <div class=\"custom-placeholder custom-value ellipsis\"\n [ngClass]=\"{\n 'pr-42': selectConfig.iconUrl,\n 'readonly-color': isDisabled,\n 'default-form-icon-color': !(isDisabled)\n }\"\n *ngIf=\"ngControl?.value || showingValue\"\n >\n {{showingValue}}\n </div>\n </ng-container>\n\n <!-- Custom Icon -->\n <img class=\"left_icon_new pointer\"\n alt=\"Toggle Selection\"\n (click)=\"iconClick(matSelect, searchInput)\"\n *ngIf=\"!selectConfig.matIconName && (selectConfig.iconUrl || selectConfig.activeStateIconUrl)\"\n [src]=\"'assets/images/icons/global/' + (ngControl.control.value && selectConfig.activeStateIconUrl ?\n selectConfig.activeStateIconUrl\n : selectConfig.iconUrl)\">\n\n <mat-form-field appearance=\"outline\" class=\"w-100\" (click)=\"selectConfig.search ? focusSearchInput() : null\">\n <!-- Material Select -->\n <mat-select #matSelect=\"matSelect\"\n [attr.data-testId]=\"selectConfig.testId + '-autocomplete-select'\"\n [panelClass]=\"'autocomplete-transform-panel-location'\"\n [attr.aria-placeholder]=\"(selectConfig.placeholder || '') | translate\"\n [aria-label]=\"selectConfig.label | translate\"\n [id]=\"selectConfig.filtrationKey || ''\"\n (opened)=\"registerPanelScrollEvent(matSelect)\"\n (openedChange)=\"openedChange($event)\"\n [formControl]=\"ngControl.control\"\n [multiple]=\"selectConfig.multiple\"\n (selectionChange)=\"emitSelectionChangeAndClose($event)\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [placeholder]=\"(selectConfig.placeholder || '') | translate\"\n >\n\n <!-- Loading State -->\n <mat-option *ngIf=\"pending\" class=\"option_loading relative\">\n <div class=\"request_loading\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n style=\"margin: auto; background: none; display: block; shape-rendering: auto;\" viewBox=\"0 0 100 100\" width=\"40px\" height=\"40px\">\n <circle cx=\"50\" cy=\"50\" fill=\"none\" stroke=\"#00AC47\" stroke-width=\"10\" r=\"35\" stroke-dasharray=\"164.93361431346415 56.97787143782138\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" repeatCount=\"indefinite\"\n dur=\"1s\" values=\"0 50 50;360 50 50\" keyTimes=\"0;1\"></animateTransform>\n </circle>\n </svg>\n </div>\n </mat-option>\n\n <!-- Options -->\n <ng-container *ngIf=\"data?.length && !pending\">\n <!-- Add New Option -->\n <mat-option *ngIf=\"selectConfig.actions\"\n class=\"pointer add_new\"\n disabled\n (click)=\"closePanelAndUnsetFocus();addNewItemEvent()\">\n <!--(click)=\"ngControl.control.reset(null);\n matSelect._onBlur();closePanelAndUnsetFocus();addNewItemEvent()\">-->\n <i-tech-button\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \"\n [customClass]=\"'w-100 mat-autocomplete-select-button'\">\n </i-tech-button>\n </mat-option>\n\n <!-- Regular Options -->\n <ng-container *ngIf=\"!selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (click)=\"optionClick(item)\"\n >\n @if (selectConfig.needTranslateOptions) {\n {{\n ((selectConfig.valueToShowByKey | getValueByKeyFromObject\n : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '') | translate\n }}\n }@else {\n {{\n ((selectConfig.valueToShowByKey | getValueByKeyFromObject\n : item : selectConfig.valueToShowByParam : selectConfig.withParamSymbol) || '')\n }}\n }\n <div class=\"sub_value\" *ngIf=\"selectConfig.subValueToShow\">\n {{\n ((selectConfig.subValueToShow | getValueByKeyFromObject\n : item : null : '' ) || '')\n }}\n </div>\n </mat-option>\n </ng-container>\n\n <!-- Custom Text Options -->\n <ng-container *ngIf=\"selectConfig?.changeText && data.length\">\n <mat-option *ngFor=\"let item of data\"\n [value]=\"selectConfig.valueByKey | getValueByKeyFromObject : item\"\n (click)=\"optionClick(item)\"\n [disabled]=\"selectConfig.changeText[item].disabled\"\n >\n {{ selectConfig.needTranslateOptions ? (selectConfig.changeText[item].text | translate ) : selectConfig.changeText[item].text}}\n </mat-option>\n </ng-container>\n </ng-container>\n\n <!-- Empty State -->\n <ng-container *ngIf=\"!pending && !data.length\">\n <mat-option disabled class=\"empty_selection_state\">\n <div class=\"actions_and_tile add_new flex_column w-100 flex_center_align_center\">\n <span>{{ 'dropdown_no_items' | translate }}</span>\n <div class=\"mt-10\">\n <i-tech-button\n *ngIf=\"selectConfig?.actions\"\n [type]=\"ButtonType.OUTLINE\"\n (buttonClick)=\"closePanelAndUnsetFocus();addNewItemEvent()\"\n [customClass]=\"'mat-autocomplete-select-button'\"\n [fontIcon]=\"'add'\"\n [text]=\"('dropdown_add_item' | translate : {INPUT_NAME: (selectConfig.label | translate)}) \">\n </i-tech-button>\n </div>\n </div>\n </mat-option>\n </ng-container>\n </mat-select>\n <mat-icon *ngIf=\"selectConfig.iconPrefix\"\n matPrefix\n [ngClass]=\"{\n 'readonly-color' : !selectConfig['iconPrefixColor']\n && (isDisabled),\n 'default-form-icon-color' : !selectConfig['iconPrefixColor']\n && !(isDisabled)\n }\"\n [matTooltip]=\"((selectConfig['iconPrefixTooltip'] || '') | translate)\"\n >{{ selectConfig.iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"selectConfig['iconPrefixSvg']\"\n matPrefix\n [matTooltip]=\"((selectConfig['iconPrefixTooltip'] || '') | translate)\"\n [svgIcon]=\"selectConfig['iconPrefixSvg'] || ''\"\n ></mat-icon>\n\n <i-tech-icon-button\n *ngIf=\"selectConfig.clearable && !isDisabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [ngClass]=\"isDisabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"clearSelectedValue($event)\"\n >\n </i-tech-icon-button>\n <mat-icon\n matSuffix\n class=\"select-arrow\"\n [class.open]=\"matSelect.panelOpen\"\n [ngClass]=\"{\n 'readonly-color': isDisabled,\n 'default-form-icon-color': !(isDisabled),\n 'mt-8': !!ngControl.control.value && selectConfig.clearable\n }\"\n >\n keyboard_arrow_down\n </mat-icon>\n <!-- Error Message -->\n <mat-error *ngIf=\"!hideErrorText && !!(ngControl.control.errors && submitValue)\">\n {{ ngControl.control | generateErrorMessages : selectConfig.label : selectConfig.defaultPatternKey }}\n </mat-error>\n </mat-form-field>\n\n <!-- Reset Button -->\n <i-tech-clear-value *ngIf=\"selectConfig.reset\" (resetValue)=\"resetValue()\"></i-tech-clear-value>\n</div>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Injector, Input\n} from '@angular/core';\nimport { NgxMaskDirective, NgxMaskService } from 'ngx-mask';\nimport { MatDatepicker } from \"@angular/material/datepicker\";\nimport { AbstractControl } from \"@angular/forms\";\n\n@Directive({\n selector: '[dateMask]',\n providers:[NgxMaskDirective],\n standalone: true\n})\nexport class DateMaskDirective {\n @Input() maskType!: string;\n @Input() matDatepicker!: MatDatepicker<any>;\n @Input() rangeFormControl!: AbstractControl;\n\n expressions = {\n DMY: 'M0/d0/0000',\n DM: 'M0/d0'\n }\n maskService: any;\n dateRegex = new RegExp(/^\\s*(1[012]|0?[1-9])\\/(3[01]|[12][0-9]|0?[1-9])\\/((?:19|20)\\d{2})\\s*$/);\n dayMonthRegex = new RegExp(/^\\s*(1[012]|0?[1-9])\\/(3[01]|[12][0-9]|0?[1-9])$/);\n previousValue = '';\n\n constructor(\n private elementRef: ElementRef,\n private injector: Injector,\n ) {\n this.maskService = this.injector.get(NgxMaskService);\n }\n\n @HostListener('input')\n onInput() {\n let value = this.elementRef.nativeElement.value;\n\n if (this.existsZerosInString(value)) {\n value = this.previousValue;\n }\n\n const maskedValue = this.maskService.applyMask(\n value,\n this.maskType === 'DAY_MONTH' ? this.expressions.DM : this.expressions.DMY\n );\n\n if (this.maskType !== 'DAY_MONTH' && !isNaN(new Date(maskedValue).getTime())) {\n if (this.matDatepicker) {\n this.matDatepicker.select(new Date(maskedValue));\n } else if (this.rangeFormControl) {\n this.rangeFormControl.setValue(new Date(maskedValue));\n }\n }\n\n if (isNaN(new Date(maskedValue).getTime())) {\n this.matDatepicker.select(null)\n }\n\n this.elementRef.nativeElement.value = maskedValue || null;\n this.previousValue = maskedValue || null;\n }\n\n @HostListener('paste', ['$event'])\n onPaste(event: ClipboardEvent) {\n const pastedValue = event.clipboardData?.getData('text/plain');\n if (!pastedValue) { return; }\n if (this.maskType === 'DAY_MONTH') {\n if (!this.dayMonthRegex.test(pastedValue)) {\n event?.preventDefault();\n }\n } else {\n if (!this.dateRegex.test(pastedValue)) {\n event?.preventDefault();\n }\n }\n }\n\n existsZerosInString(date: string): boolean {\n const dateToArray = date.split('/');\n let isValid;\n if (this.maskType === 'DAY_MONTH') {\n isValid = !!dateToArray.find((part: string) => part.includes('00'));\n } else {\n if (dateToArray.length < 3) {\n isValid = !!dateToArray.find((part: string) => part.includes('00'));\n } else {\n isValid = (dateToArray[2][0] == '0') || (+dateToArray[2][0] > 2);\n }\n\n }\n return isValid;\n }\n\n}\n","import { Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { FormControlName, ReactiveFormsModule } from \"@angular/forms\";\nimport { InputService } from '../../services/input.service';\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { MatInput } from \"@angular/material/input\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatIconModule } from \"@angular/material/icon\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\n\n@Component({\n selector: 'i-tech-date-picker',\n templateUrl: './date-picker.component.html',\n imports: [\n NgClass, NgIf,\n TranslateModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n MatDatepickerModule,\n MatInput,\n MatTooltip,\n MatIconModule,\n DateMaskDirective,\n GenerateErrorMessagesPipe, IconButtonComponent\n ],\n standalone: true\n})\nexport class DatePickerComponent {\n @Input() label = '';\n @Input() defaultPatternKey!: string ;\n @Input() required = false;\n @Input() pastDatesDisabled = false;\n @Input() hintText = '';\n @Input() placeholder = 'MM/DD/YYYY';\n @Input() iconPrefix?: string;\n @Input() iconPrefixSvg?: string;\n @Input() iconPrefixTooltip?: string;\n @Input() iconPrefixColor?: string;\n @Input() iconPrefixVariant?: string;\n @Input() valueChangeEmit?: boolean;\n @Input() minDate: Date | null = null;\n @Input() clearable = false;\n @Input() testId!: string;\n\n @Input() submit = false;\n @ViewChild('inputElement') inputElement!: ElementRef;\n @Output() valueChangeEmitter = new EventEmitter<void>();\n\n isOpen = false;\n focused = false;\n\n ngControl: FormControlName;\n\n today: Date = new Date();\n\n // Filter to disable past dates\n dateFilter = (date: Date | null): boolean => {\n if (this.pastDatesDisabled) {\n const today = this.today;\n return date ? date >= today : false;\n } else {\n return true;\n }\n };\n\n constructor(private inputService: InputService) {\n this.ngControl = this.inputService.injectNgControl() as FormControlName;\n }\n\n emitChange(): void {\n if (!this.valueChangeEmit) { return; }\n this.valueChangeEmitter.emit();\n }\n\n clickForFocusOut(): void {\n setTimeout(() => {\n this.inputElement.nativeElement.focus();\n this.inputElement.nativeElement.blur();\n },120)\n }\n\n get isDisabled(): boolean {\n return this.ngControl?.control?.disabled || false;\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submit);\n }\n };\n}\n","<div class=\"flex_column relative mat-date-range-input\" *ngIf=\"ngControl\" [ngClass]=\"{'check_requirements': submit}\">\n <div class=\"w-100\">\n <mat-label [ngClass]=\"{\n 'readonly-color' : isDisabled,\n 'invalid-label-color': !!(ngControl.control.errors && submit)\n }\">\n {{ label | translate }}\n </mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color' : isDisabled}\">*</span>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\"\n [class.readonly-field]=\"isDisabled\">\n <input matInput #inputElement\n type=\"text\"\n [formControl]=\"ngControl.control\"\n [placeholder]=\"placeholder | translate\"\n [min]=\"minDate\"\n dateMask\n [attr.data-testId]=\"'date-range-picker-' + testId\"\n [matDatepicker]=\"datePicker\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n [matDatepickerFilter]=\"dateFilter\"\n (focus)=\"focused = true\"\n (click)=\"datePicker.open();\"\n (dateChange)=\"emitChange()\"\n >\n\n <mat-icon *ngIf=\"iconPrefix\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [style.color]=\"iconPrefixColor\"\n >{{ iconPrefix }}\n </mat-icon>\n\n <mat-icon *ngIf=\"iconPrefixSvg\"\n matPrefix\n [matTooltip]=\"((iconPrefixTooltip || '') | translate)\"\n [svgIcon]=\"iconPrefixSvg\"\n ></mat-icon>\n\n <app-icon-button\n *ngIf=\"clearable && !isDisabled && !!ngControl.control.value\"\n iconName=\"cancel\"\n matSuffix\n [ngClass]=\"isDisabled ? 'readonly-color' : 'default-form-icon-color'\"\n (click)=\"$event.stopPropagation();$event.preventDefault();ngControl.control.reset(null);\"\n >\n </app-icon-button>\n\n <i-tech-icon-button matSuffix\n [iconName]=\"'date_range'\"\n (click)=\"datePicker.open()\"\n [ngClass]=\"isDisabled ? 'readonly-color' : 'default-form-icon-color'\"\n ></i-tech-icon-button>\n\n <mat-datepicker #datePicker (closed)=\"isOpen = false;clickForFocusOut()\"\n (opened)=\"isOpen = true;focused = true\"></mat-datepicker>\n\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ ngControl.control | generateErrorMessages : label : defaultPatternKey }}\n </mat-error>\n\n <!-- Helper Text -->\n <mat-hint *ngIf=\"!(!!(ngControl.control.errors && submit)) && hintText\"\n [ngClass]=\"{'readonly-color' : isDisabled}\"\n >\n {{ hintText | translate }}\n </mat-hint>\n\n </mat-form-field>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { LabelTypeEnum } from \"../../interfaces/label-type.enum\";\nimport { MatChip } from \"@angular/material/chips\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { IconConfig } from '../../interfaces/label-configs.interface';\n\n@Component({\n selector: 'i-tech-label',\n templateUrl: './label.component.html',\n styleUrls: [],\n imports: [\n MatChip,\n MatTooltip,\n NgClass,\n TranslateModule,\n MatIcon,\n NgIf\n ],\n standalone: true\n})\nexport class LabelComponent {\n @Input() color: LabelTypeEnum = LabelTypeEnum.primary;\n @Input() text!: string;\n @Input() innerHtml!: string;\n @Input() bordered = false;\n @Input() tooltip?: string;\n @Input() size: 'small' | 'standard' = 'standard';\n @Input() iconName?: string;\n @Input() iconSvg = '';\n @Input() disableRipple = false;\n @Input() matChipAction = false;\n @Input() forTable = false;\n @Input() iconConfig?: IconConfig;\n @Input() customChipClass = '';\n @Input() customBgColor?: string;\n @Input() customTextColor?: string;\n}\n","<div [class]=\"{table_row_item: forTable,'trailing-icon' : iconName || iconSvg}\">\n <mat-chip\n [class]=\"'label_' + color + (customChipClass ? ' ' + customChipClass : '')\"\n [ngClass]=\"{ bordered: bordered, small: size === 'small', pointer: matChipAction }\"\n [matTooltip]=\"(tooltip || '') | translate\"\n [disableRipple]=\"disableRipple\"\n [style.--mdc-chip-elevated-container-color]=\"customBgColor || null\"\n [style.--mdc-chip-label-text-color]=\"customTextColor || null\"\n >\n <div class=\"flex_align_center flex flex_gap_5\" [ngClass]=\"matChipAction ? 'pointer' : ''\">\n <span *ngIf=\"!innerHtml\">{{text | translate}}</span>\n <span *ngIf=\"innerHtml\" [innerHtml]=\"innerHtml | translate\"></span>\n <mat-icon *ngIf=\"iconName\"\n [ngClass]=\"iconConfig?.iconClass\"\n [matTooltip]=\"(iconConfig?.tooltip || '') | translate\"\n [color]=\"iconConfig?.color\">\n {{iconName}}\n </mat-icon>\n <mat-icon *ngIf=\"iconSvg\"\n [svgIcon]=\"iconSvg\"\n [ngClass]=\"iconConfig?.iconClass\"\n [matTooltip]=\"(iconConfig?.tooltip || '') | translate\"\n [color]=\"iconConfig?.color\">\n </mat-icon>\n </div>\n </mat-chip>\n</div>\n","import {\n AfterViewInit,\n Component, ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { MatDatepickerModule, MatDateRangePicker } from \"@angular/material/datepicker\";\nimport { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\nimport { NgClass, NgForOf, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\nimport { MatButtonModule } from \"@angular/material/button\";\nimport { LabelComponent } from \"../label/label.component\";\nimport { LabelTypeEnum } from \"../../interfaces/label-type.enum\";\nimport { Subscription } from \"rxjs\";\n\n@Component({\n selector: 'i-tech-mat-range-datepicker',\n templateUrl: './date-range-datepicker.component.html',\n imports: [\n MatFormFieldModule,\n ReactiveFormsModule,\n MatDatepickerModule,\n NgClass, NgIf, NgForOf,\n TranslateModule,\n IconButtonComponent,\n MatButtonModule,\n LabelComponent\n ],\n standalone: true,\n styles: [`\n .preset-actions-container {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 0 0 24px;\n width: 100%;\n }\n ::ng-deep .mdc-text-field--outlined {\n padding-left: 8px !important;\n }\n ::ng-deep .mat-date-range-input-separator {\n margin: 0 !important;\n }\n ::ng-deep .mat-mdc-form-field-icon-suffix {\n padding-left: 0 !important;\n }\n `]\n})\nexport class DateRangeDatepickerComponent implements OnChanges, AfterViewInit, OnDestroy {\n @Input() label?: string;\n @Input() placeholder?: Array<string>;\n @Input() value?: Array<string | null>;\n @Input() defaultValue?: Array<Date>;\n @Input() key?: {start: string, end: string, title: string};\n @Input() submit = false;\n @Input() clearValue = true;\n @Input() errorMessage = '';\n @Input() onePlaceholder?: string;\n @Input() hintText = 'MM/DD/YYYY - MM/DD/YYYY';\n @Input() testId = '';\n @Input() panelClass = '';\n @Input() presetActions: Array<{label: string, translateKey?: string}> = [];\n @Input() activePreset = '';\n @Output() resetForm = new EventEmitter<any>();\n @Output() selectionChange = new EventEmitter<any>();\n @Output() presetActionClick = new EventEmitter<{label: string}>();\n @ViewChild('picker') picker!: MatDateRangePicker<any>;\n @ViewChild('min') min!: ElementRef;\n @ViewChild('max') max!: ElementRef;\n isOpen = false;\n isSelectingRange = false;\n readonly LabelTypeEnum = LabelTypeEnum;\n private selectionSub?: Subscription;\n private calendarClickCount = 0;\n\n dateRangeForm = new UntypedFormGroup({\n startDate: new UntypedFormControl(''),\n endDate: new UntypedFormControl('')\n });\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this.defaultValue?.length) {\n this.dateRangeForm.patchValue({\n startDate: this.defaultValue[0],\n endDate: this.defaultValue[1]\n })\n }\n })\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n setTimeout(() => {\n if (!changes['value'] || this.isOpen) { return; }\n if (changes['value']?.currentValue && !(changes['value'].currentValue[0])) {\n if (this.picker) {\n this.dateRangeForm.reset();\n this.picker.select(null)\n }\n } else if (changes['value'] && this.value?.length) {\n this.dateRangeForm.setValue({\n startDate: new Date(this.value[0] || ''),\n endDate: new Date(this.value[1] || '')\n });\n }\n }, 10)\n }\n\n clickForFocusOut(): void {\n setTimeout(() => {\n this.min.nativeElement.focus();\n this.min.nativeElement.blur();\n },120)\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any, form: any): boolean => {\n return !!(control && control.invalid && this.submit);\n }\n };\n\n setDate(value: Array<string | null>, element: any): void {\n const startDate = value[0];\n const endDate = value[1];\n\n // If this is the start date being selected (matStartDate input)\n if (element === this.min?.nativeElement) {\n // We're starting a new selection process\n this.isSelectingRange = true;\n // Don't emit any event yet\n }\n // If this is the end date being selected (matEndDate input)\n else if (element === this.max?.nativeElement) {\n // We're completing a selection\n this.isSelectingRange = false;\n\n if (startDate === null && endDate === null) {\n this.dateRangeForm.reset();\n this.picker.select(null);\n this.selectionChange.emit(value);\n } else if (startDate && endDate) {\n this.selectionChange.emit(value);\n }\n }\n\n element.blur();\n }\n\n onPresetAction(action: { label: string, translateKey?: string }): void {\n this.presetActionClick.emit({ label: action.label });\n this.picker.close();\n }\n\n onPickerOpened(): void {\n this.isOpen = true;\n if (this.presetActions?.length) {\n this.selectionSub?.unsubscribe();\n this.calendarClickCount = 0;\n // Wait for picker content to render, then subscribe to calendar user selections\n setTimeout(() => {\n const content = (this.picker as any)._componentRef?.instance;\n const calendar = content?._calendar;\n if (calendar) {\n this.selectionSub = calendar._userSelection.subscribe(() => {\n this.calendarClickCount++;\n if (this.calendarClickCount >= 2) {\n this.calendarClickCount = 0;\n setTimeout(() => {\n const applyBtn = document.querySelector('.hidden-apply-btn') as HTMLButtonElement;\n if (applyBtn) {\n applyBtn.click();\n }\n }, 50);\n }\n });\n }\n }, 200);\n }\n }\n\n onPickerClosed(): void {\n this.isOpen = false;\n this.selectionSub?.unsubscribe();\n this.clickForFocusOut();\n }\n\n ngOnDestroy(): void {\n this.selectionSub?.unsubscribe();\n }\n\n}\n","<div class=\"flex_column relative mat-date-range-input\"\n [formGroup]=\"dateRangeForm\"\n>\n <div class=\"w-100\" *ngIf=\"label\">\n <mat-label>\n {{ (label || '') | translate }}\n </mat-label>\n </div>\n <mat-form-field appearance=\"outline\" [ngClass]=\"{'opened_calendar': isOpen}\">\n <mat-date-range-input [rangePicker]=\"picker\"\n\n >\n <input formControlName=\"startDate\"\n [attr.data-testId]=\"'date-range-' + testId + '-min-date'\"\n [placeholder]=\" (placeholder ? placeholder[0] : 'Start Date')\"\n [title]=\"key ? key.title : 'Date'\"\n [attr.data-accessKey]=\"key ? key.start : 'minStartDate'\"\n [attr.data-parentKey]=\"key ? (key.start + '_' + key.end) : 'minStartDate_maxEndDate'\"\n matStartDate #min\n readonly\n [errorStateMatcher]=\"customErrorStateMatcher\"\n (dateChange)=\"setDate([min.value, max.value || null],min)\">\n <input formControlName=\"endDate\"\n [placeholder]=\"(placeholder ? placeholder[1] : 'End Date')\"\n [title]=\"key ? key.title : 'Date'\"\n [attr.data-testId]=\"'date-range-' + testId + '-end-date'\"\n [attr.data-accessKey]=\"key ? key.end : 'maxEndDate'\"\n [attr.data-parentKey]=\"key ? (key.start + '_' + key.end) : 'minStartDate_maxEndDate'\"\n matEndDate #max\n readonly\n [errorStateMatcher]=\"customErrorStateMatcher\"\n (dateChange)=\"setDate([min.value, max.value || null],max)\">\n </mat-date-range-input>\n <i-tech-icon-button matSuffix\n [iconName]=\"'cancel'\"\n (buttonClick)=\"setDate([null,null], max)\"\n class=\"default-form-icon-color\"\n *ngIf=\"dateRangeForm.get('startDate')?.value && this.dateRangeForm.get('endDate')?.value\"\n ></i-tech-icon-button>\n <i-tech-icon-button\n matSuffix\n [iconName]=\"'date_range'\"\n (buttonClick)=\"picker.open()\"\n class=\"default-form-icon-color\"\n ></i-tech-icon-button>\n <mat-date-range-picker\n [panelClass]=\"panelClass\"\n #picker\n (closed)=\"onPickerClosed()\"\n (opened)=\"onPickerOpened()\"\n >\n <mat-datepicker-actions *ngIf=\"presetActions?.length\">\n <div class=\"preset-actions-container\">\n <i-tech-label *ngFor=\"let action of presetActions\"\n class=\"w-100\"\n [customChipClass]=\"'w-100'\"\n [text]=\"action.translateKey || action.label\"\n [color]=\"action.label === activePreset ? LabelTypeEnum.primary : LabelTypeEnum.white\"\n [bordered]=\"true\"\n [matChipAction]=\"true\"\n [disableRipple]=\"false\"\n (click)=\"onPresetAction(action)\">\n </i-tech-label>\n <button matDateRangePickerApply class=\"hidden-apply-btn\" style=\"display: none\"></button>\n </div>\n </mat-datepicker-actions>\n </mat-date-range-picker>\n <mat-hint *ngIf=\"hintText && !errorMessage\">{{ hintText }}</mat-hint>\n </mat-form-field>\n</div>\n","export enum DropdownSelectionType {\n UPLOAD = \"UPLOAD\",\n DOWNLOAD = \"DOWNLOAD\",\n BLANK = \"BLANK\"\n}\n\nexport const DropdownItemIcon = {\n [DropdownSelectionType.UPLOAD]: 'upload',\n [DropdownSelectionType.DOWNLOAD]: 'download',\n [DropdownSelectionType.BLANK]: 'blank',\n}","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { ButtonType } from \"../../interfaces/button-types.enum\";\nimport { DropdownItemIcon, DropdownSelectionType } from \"../../interfaces/dropdown-selection.constants\";\nimport { MatMenu, MatMenuItem, MatMenuTrigger, MenuPositionX } from \"@angular/material/menu\";\nimport { MatIcon } from \"@angular/material/icon\";\nimport { NgClass, NgForOf, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ButtonComponent } from \"../button/button.component\";\nimport { MatLabel } from \"@angular/material/form-field\";\n\n@Component({\n selector: \"i-tech-menu\",\n standalone: true,\n imports: [\n MatMenuTrigger,\n MatMenu,\n MatIcon,\n NgIf,\n NgForOf,\n MatMenuItem,\n TranslateModule,\n NgClass,\n ButtonComponent,\n MatLabel\n ],\n templateUrl: \"./menu.component.html\",\n styleUrls: [\"./menu.component.scss\"]\n})\nexport class MenuComponent {\n @Input() text!: string;\n @Input() dataName!: string;\n @Input() containerClass!: string;\n @Input() icon!: string;\n @Input() positionX: MenuPositionX = 'before';\n @Input() testId!: string;\n @Input() menuOptions: Array<{\n value: string;\n text: string;\n src?: string;\n class?: string;\n type?: DropdownSelectionType;\n }> = [];\n @Output() emitEvent = new EventEmitter<any>();\n @Input() loading = false;\n protected readonly ButtonType = ButtonType;\n protected readonly DropdownItemIcon = DropdownItemIcon;\n matMenuState = false;\n}\n","<div class=\"custom_dropdown_container\"\n [attr.data-name]=\"dataName\"\n [ngClass]=\"containerClass\"\n>\n <ng-container *ngIf=\"!loading\">\n <i-tech-button\n [matMenuTriggerFor]=\"beforeMenu\"\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"icon || 'keyboard_arrow_down'\"\n [text]=\"(text || '') \"\n (menuOpened)=\"matMenuState = true\"\n (menuClosed)=\"matMenuState = false\"\n [activated]=\"matMenuState\"\n [testId]=\"testId + '_arrow_down'\"\n ></i-tech-button>\n </ng-container>\n\n <ng-container *ngIf=\"loading\">\n <i-tech-button\n [type]=\"ButtonType.OUTLINE\"\n [fontIcon]=\"icon || 'keyboard_arrow_down'\"\n [text]=\"(text || '') \"\n [submit]=\"true\"\n [disabled]=\"true\"\n [activated]=\"false\"\n [attr.data-testId]=\"testId + '_arrow_down'\"\n ></i-tech-button>\n </ng-container>\n\n <mat-menu #beforeMenu=\"matMenu\" [xPosition]=\"positionX\"\n [attr.data-testId]=\"testId\"\n >\n <button mat-menu-item *ngFor=\"let option of menuOptions\" (click)=\"emitEvent.emit(option.value)\">\n <mat-icon *ngIf=\"option.type\" [svgIcon]=\"DropdownItemIcon[option.type]\"></mat-icon>\n <mat-label class=\"meu_item_label\">{{(option.text || '') | translate}}</mat-label>\n </button>\n </mat-menu>\n</div>\n","import { AfterViewInit, Component, EventEmitter, Input, Output, ViewChild, ElementRef, OnDestroy } from '@angular/core';\nimport { MatDatepicker, MatDatepickerModule } from \"@angular/material/datepicker\";\nimport { NgxMaskDirective } from \"ngx-mask\";\nimport {\n FormControlName,\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup\n} from \"@angular/forms\";\nimport { NgClass, NgIf } from \"@angular/common\";\nimport { MatError, MatLabel } from \"@angular/material/form-field\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { DateMaskDirective } from \"../../directives/date-mask.directive\";\nimport { ParseDateService } from \"../../services/parse-date.service\";\nimport { InputService } from \"../../services/input.service\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { MatIconButton } from \"@angular/material/button\";\n\n@Component({\n selector: 'i-tech-date-time-picker',\n imports: [MatDatepickerModule, DateMaskDirective, TranslateModule,\n FormsModule, NgClass, ReactiveFormsModule, MatLabel, GenerateErrorMessagesPipe, NgIf, MatError, MatIconButton\n ],\n standalone: true,\n providers: [ParseDateService],\n templateUrl: './date-time-picker.component.html',\n styleUrl: './date-time-picker.component.scss'\n})\nexport class DateTimePickerComponent implements AfterViewInit, OnDestroy {\n @ViewChild('DatePicker') DatePickerElement!: MatDatepicker<any>\n @Output() dateChangeEvent = new EventEmitter<void>();\n @Input() label!: string;\n @Input() submit = false;\n @Input() required = false;\n @Input() panelClass = '';\n @Input() set disabled(disabled: boolean) {\n this._disabled = disabled;\n if (disabled) {\n this.form.get('time')?.disable();\n this.form.get('date')?.disable();\n } else {\n this.form.get('time')?.enable();\n this.form.get('date')?.enable();\n }\n };\n get disabled(): boolean {\n return this._disabled;\n }\n private _disabled = false;\n\n @ViewChild('dateElement') timeInput!: ElementRef;\n\n isFocused = false;\n form = new UntypedFormGroup({\n time: new UntypedFormControl(),\n date: new UntypedFormControl(),\n })\n ngControl: FormControlName;\n\n // Track datepicker state\n private focusTimeoutId: any = null;\n private datePickerJustClosed = false;\n\n constructor(\n private inputService: InputService,\n private parseDateService: ParseDateService\n ) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n ngAfterViewInit(): void {\n this.setValue();\n this.ngControl.control.valueChanges.subscribe(() => {\n this.setValue()\n })\n }\n\n ngOnDestroy(): void {\n if (this.focusTimeoutId) {\n clearTimeout(this.focusTimeoutId);\n }\n }\n\n openFromOutSide(): void {\n this.DatePickerElement.open()\n }\n\n private setValue(): void {\n if (!this.ngControl?.control) {\n return;\n }\n const dateTime = this.ngControl.control.value;\n if (!dateTime) {\n this.form.patchValue({\n date: null,\n time: null\n }, { emitEvent: false });\n return;\n }\n\n this.form.patchValue({\n date: new Date(this.parseDateService.changeFormat(dateTime, 'YYYY-MM-DD') + 'T' + '00:00:00'),\n time: this.parseDateService.changeFormat(dateTime, 'HH:mm')\n }, { emitEvent: false })\n }\n\n public onDatePickerClosed(): void {\n // Update form value first\n this.setDateTimeValue();\n\n // Mark that the datepicker just closed\n this.datePickerJustClosed = true;\n\n // Clear any existing timeout\n if (this.focusTimeoutId) {\n clearTimeout(this.focusTimeoutId);\n }\n\n // Use a callback that runs outside Angular's change detection\n this.focusTimeoutId = setTimeout(() => {\n // Focus time input\n if (this.timeInput?.nativeElement) {\n this.timeInput.nativeElement.focus();\n }\n\n // Reset flag after enough time\n setTimeout(() => {\n this.datePickerJustClosed = false;\n }, 200);\n }, 100); // Longer delay to let Angular Material finish its work\n }\n\n public setDateTimeValue(): void {\n if (this.form.value.date && this.form.value.time) {\n const date = this.parseDateService.changeFormat(this.form.value.date, 'YYYY-MM-DD');\n const time = this.form.value.time;\n this.ngControl.control.patchValue(date + 'T' + time, { emitEvent: false });\n } else {\n this.ngControl.control.patchValue(null, { emitEvent: false });\n }\n this.dateChangeEvent.emit();\n }\n\n public onFocus(event: FocusEvent): void {\n // If datepicker just closed and focus is going to date input, move it to time input\n if (this.datePickerJustClosed) {\n const target = event.target as HTMLElement;\n const dateInput = document.querySelector('input[formControlName=\"date\"]');\n\n if (target === dateInput) {\n // Cancel any existing focus timeout\n if (this.focusTimeoutId) {\n clearTimeout(this.focusTimeoutId);\n }\n\n // Set new timeout to focus time input\n this.focusTimeoutId = setTimeout(() => {\n if (this.timeInput?.nativeElement) {\n this.timeInput.nativeElement.focus();\n }\n }, 10);\n\n return;\n }\n }\n\n this.isFocused = true;\n }\n\n public onBlur(event?: FocusEvent): void {\n // Don't handle blur during datepicker transitions\n if (this.datePickerJustClosed) {\n this.isFocused = false;\n return;\n }\n\n // Check if focus is moving to another element within our component\n setTimeout(() => {\n const dateInput = document.querySelector('input[formControlName=\"date\"]');\n const timeInput = this.timeInput?.nativeElement;\n const activeElement = document.activeElement;\n\n if (activeElement !== dateInput && activeElement !== timeInput) {\n this.isFocused = false;\n }\n }, 50);\n }\n}\n","<div class=\"date_time_picker_container relative\"\n *ngIf=\"ngControl?.control\"\n [class.invalid_form]=\"ngControl.control.errors && submit\"\n [class.readonly_field]=\"disabled\"\n>\n <mat-label [ngClass]=\"{\n 'readonly-color': disabled\n }\"\n >{{label | translate}}</mat-label>\n <span *ngIf=\"required\" class=\"required-input\" [ngClass]=\"{'readonly-color': disabled}\"> *</span>\n\n <div class=\"date_time_picker\"\n [formGroup]=\"form\"\n [ngClass]=\"{'focused': isFocused, 'disabled': disabled}\"\n >\n <input type=\"text\" dateMask class=\"date\"\n placeholder=\"mm/dd/yy\"\n formControlName=\"date\"\n [matDatepicker]=\"DatePicker\"\n [attr.data-testId]=\"'date-picker-date'\"\n [disabled]=\"disabled\"\n (click)=\"!disabled && DatePicker.open()\"\n (focus)=\"onFocus($event)\"\n (focusout)=\"onBlur($event)\"\n >\n <mat-datepicker #DatePicker\n [panelClass]=\"panelClass\"\n (closed)=\"onDatePickerClosed()\">\n </mat-datepicker>\n <input type=\"time\"\n #dateElement\n class=\"time\"\n [attr.data-testId]=\"'date-picker-time'\"\n formControlName=\"time\"\n [disabled]=\"disabled\"\n (focus)=\"onFocus($event)\"\n (focusout)=\"onBlur($event)\"\n (change)=\"setDateTimeValue()\"\n />\n </div>\n <!-- Error Messages -->\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\">\n {{ngControl.control | generateErrorMessages : (label || '')}}\n </mat-error>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { AuthInterface, CompaniesEnum, OrganizationInterface } from \"../../../interfaces/auth.interface\";\nimport { NgIf, SlicePipe, UpperCasePipe } from \"@angular/common\";\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\n\n@Component({\n selector: 'i-tech-company-image',\n imports: [NgIf, UpperCasePipe, SlicePipe, MatTooltipModule],\n standalone: true,\n templateUrl: './company-image.component.html',\n styleUrl: './company-image.component.scss'\n})\nexport class CompanyImageComponent {\n @Input() collapsed!: boolean;\n @Input() userData!: AuthInterface;\n @Input() currentCompany!: OrganizationInterface;\n @Input() platform!: CompaniesEnum;\n CompaniesEnum = CompaniesEnum;\n}\n","<div class=\"information pointer\" *ngIf=\"userData\"\n [attr.data-testId]=\"'user_profile_information'\"\n>\n <div class=\"information_main\">\n <div class=\"images\">\n <img alt=\"\" class=\"company_img\" *ngIf=\"currentCompany?.image; else noImageComponent\"\n [src]=\"currentCompany.image\"\n [matTooltipDisabled]=\"!collapsed\"\n matTooltipClass=\"multiline_tooltip_for_profile\"\n [matTooltip]=\"(currentCompany?.name || '') + '\\n\\r' + (userData.firstName + ' ' + userData.lastName + '\\n') + (userData.email)\"\n >\n <ng-template #noImageComponent>\n <div class=\"company_img no_image\"\n [matTooltipDisabled]=\"!collapsed\"\n matTooltipClass=\"multiline_tooltip_for_profile\"\n [matTooltip]=\"(currentCompany?.name || '') + '\\n\\r' + (userData.firstName + ' ' + userData.lastName + '\\n') + (userData.email)\"\n >\n {{(currentCompany?.name || '') | slice: 0 : 1 | uppercase}}\n </div>\n </ng-template>\n\n <div class=\"user_img\">\n {{userData.firstName | slice: 0 : 1 | uppercase}}\n </div>\n </div>\n\n <div class=\"names\">\n <div class=\"company_name\">{{currentCompany?.name || ''}}</div>\n <div class=\"user_name\">{{userData.firstName}} {{userData.lastName}}</div>\n </div>\n\n </div>\n <div class=\"time_zone\" *ngIf=\"platform === CompaniesEnum.T3\">\n {{userData.timeZone?.enumType || ''}}\n </div>\n</div>\n","import { AfterViewInit, Component, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { LowerCasePipe, NgFor, NgIf, SlicePipe, UpperCasePipe } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { NavigationEnd, Router, RouterLink } from \"@angular/router\";\nimport {\n AuthInterface,\n CompaniesEnum,\n OrganizationInterface,\n SystemRoleInterface\n} from \"../../interfaces/auth.interface\";\nimport { MatMenu, MatMenuModule } from \"@angular/material/menu\";\nimport { CompanyImageComponent } from \"./company-image/company-image.component\";\n\nimport { MatRippleModule } from \"@angular/material/core\";\nimport { NavigationLinks } from \"../../interfaces/navigation-link.interface\";\nimport { HttpClient } from \"@angular/common/http\";\n\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { IconButtonComponent } from \"../icon-button/icon-button.component\";\n\n@Component({\n selector: 'i-tech-sidebar',\n imports: [NgIf, NgFor, TranslateModule, MatMenu, MatMenuModule, CompanyImageComponent, UpperCasePipe, SlicePipe,\n MatRippleModule, MatTooltipModule, IconButtonComponent, RouterLink, LowerCasePipe\n ],\n standalone: true,\n templateUrl: './new-sidebar.component.html',\n styleUrl: './new-sidebar.component.scss'\n})\nexport class NewSidebarComponent implements OnInit, AfterViewInit {\n @HostListener('window:beforeunload')\n canDeactivate(): void {\n localStorage.setItem('SidebarCollapsed', `${this.isCollapsed}`)\n }\n @Output() collapseEvent = new EventEmitter<boolean>();\n @Output() linkClickEvent = new EventEmitter<NavigationLinks>();\n @Output() popupClickEvents = new EventEmitter<string>();\n @Output() signOutEvent = new EventEmitter<void>();\n @Output() newAuthenticatedResponseEvent = new EventEmitter<AuthInterface>();\n @Input() platform!: CompaniesEnum;\n @Input() navigationLinks!: Array<NavigationLinks>;\n @Input() env!: any;\n @Input() userData!: AuthInterface;\n isCollapsed = false;\n activePage!: string;\n secondLayerActivePage!: string;\n secondLayerOpened = false;\n secondLayerLinks: Array<NavigationLinks> = [];\n currentCompany!:OrganizationInterface;\n allOrganizations: Array<OrganizationInterface> = [];\n activeAndInactivePlatforms: Record<string, Array<{id: CompaniesEnum, name: string, checked?: boolean}>> = {\n active: [],\n inactive: []\n }\n AppsUrls: Record<CompaniesEnum, string> = {} as Record<CompaniesEnum, string>;\n BottomPopupLinks: Record<string, string> = {};\n CompaniesEnum = CompaniesEnum;\n accessToNewOrganization = false;\n mobileViewSidebarOpened = false;\n\n constructor(\n private router: Router,\n private http: HttpClient\n ) {}\n\n ngAfterViewInit(): void {\n this.collapseEvent.emit(this.isCollapsed);\n }\n\n ngOnInit(): void {\n this.detectActivePage();\n this.detectActiveAndInactiveApps();\n this.getAllCompanies();\n this.setAppsUrls();\n this.isCollapsed = localStorage.getItem('SidebarCollapsed') === 'true' || false;\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.detectActivePage()\n }\n });\n }\n\n private setAppsUrls(): void {\n this.AppsUrls.ORGANIZATION = this.env.organizationUrl + '/auth/organization';\n this.AppsUrls.BROKERAGE = this.env.brokerage;\n this.AppsUrls.T3 = this.env.t3;\n this.AppsUrls.TMT = this.env.tmt;\n\n this.BottomPopupLinks = {\n privacy: this.env.mainDomain + '/privacy-policy',\n terms: this.env.mainDomain + '/terms-and-conditions',\n manageAccount: this.env.organizationUrl + '/auth/account-information',\n accountInformation: '/auth/account-information',\n addNewOrganization: '/auth/organization/add'\n }\n }\n\n detectActiveAndInactiveApps(): void {\n const allSystems = [{\n id: CompaniesEnum.T3,\n name: 'T3 TMS'\n }, {\n id: CompaniesEnum.BROKERAGE,\n name: 'T3 Loadboard'\n },\n {\n id: CompaniesEnum.TMT,\n name: 'T3 TMT'\n }\n ];\n\n this.activeAndInactivePlatforms = {\n active: [],\n inactive: []\n }\n\n allSystems.forEach((system: {id: CompaniesEnum, name: string, checked?: boolean}) => {\n if (this.platform === system.id) {\n system.checked = true\n }\n if (this.userData.systemRoles?.find((role: SystemRoleInterface) => role.system === system.id)) {\n this.activeAndInactivePlatforms['active'].push(system)\n } else {\n this.activeAndInactivePlatforms['inactive'].push(system)\n }\n })\n\n this.activeAndInactivePlatforms['active'].push({\n name: 'T3 Admin',\n id: CompaniesEnum.ORGANIZATION,\n checked: this.platform === CompaniesEnum.ORGANIZATION\n })\n }\n\n switchOrganization(company: OrganizationInterface): void {\n if (company.id === this.currentCompany.id) {\n return;\n }\n this.http.post<AuthInterface>(\n this.env.dataEndpoint + (this.platform !== CompaniesEnum.ORGANIZATION ? '/id' : '') + `/auth/companies/${company.id}/login`, {}\n ).subscribe((response: AuthInterface) => {\n this.newAuthenticatedResponseEvent.emit(response)\n })\n }\n\n getAllCompanies(): void {\n this.http.get<Array<OrganizationInterface>>(\n this.env.dataEndpoint + (this.platform !== CompaniesEnum.ORGANIZATION ? '/id' : '') + '/companies/all'\n ).subscribe((companies: Array<OrganizationInterface>) => {\n const currentCompany = companies.find((company: OrganizationInterface) => company.id === this.userData.companyId)\n if (currentCompany) {\n this.currentCompany = currentCompany;\n }\n this.allOrganizations = companies;\n if (this.platform === CompaniesEnum.ORGANIZATION) {\n this.accessToNewOrganization = this.accessToAddNew();\n }\n })\n }\n\n // Only for organization\n accessToAddNew(): boolean {\n return !(this.allOrganizations.find((company: OrganizationInterface) => company.isMyCompany))\n }\n\n // End Of Only for organization\n\n navigateBack(): void {\n this.router.navigate(['/']);\n }\n\n detectActivePage(): void {\n const page = this.router.url.replace('/', '');\n let link = this.navigationLinks.find((link: NavigationLinks) => page === link.linkTo);\n\n if (!link) {\n const page = this.router.url;\n link = this.navigationLinks.find((link: NavigationLinks) => page.includes(link.linkTo));\n }\n\n if (link) {\n if (link.subPages) {\n this.secondLayerOpened = true;\n this.secondLayerLinks = link.subPages;\n\n const subLink = link.subPages.find((link: NavigationLinks) => page === link.linkTo);\n if (subLink) {\n this.secondLayerActivePage = subLink.pageEnum;\n }\n } else {\n this.secondLayerOpened = false;\n this.secondLayerLinks = [];\n this.secondLayerActivePage = '';\n }\n this.activePage = link.pageEnum;\n }\n }\n\n handleLinkClick(link: NavigationLinks): void {\n if (this.activePage === link.linkTo) {\n return;\n }\n\n if (link.emitClick) {\n this.linkClickEvent.emit(link);\n }\n this.mobileViewSidebarOpened = false;\n }\n\n changeCollapse(): void {\n this.isCollapsed = !this.isCollapsed;\n this.collapseEvent.emit(this.isCollapsed);\n this.mobileViewSidebarOpened = false;\n }\n\n signOut(): void {\n this.signOutEvent.emit()\n }\n\n emitPopupClicks(type: string): void {\n this.popupClickEvents.emit(type)\n }\n\n openZendeskPage(support = false): void {\n this.http.get<{accessToken: string}>(this.env.dataEndpoint + (this.platform !== CompaniesEnum.ORGANIZATION ? '/id' : '') + `/auth/zendesk`)\n .subscribe((res: {accessToken: string}) => {\n const targetUrl = `${this.env.zendeskUrl}/hc/en-us` + (support ? '/requests/new' : '');\n const zendeskUrl = `${this.env.zendeskUrl}/access/jwt?jwt=${res.accessToken}&return_to=${targetUrl}`;\n window.open(zendeskUrl);\n })\n }\n\n // Mobile Functions\n\n openSidebarMobile(): void {\n this.isCollapsed = false;\n this.mobileViewSidebarOpened = !this.mobileViewSidebarOpened;\n }\n\n // Close sidebar on black background click\n handleFullClickOnWrapper(event: Event): void {\n if (!this.mobileViewSidebarOpened || !event.target) { return; }\n const isOutside = !(event.target as HTMLElement).closest('.main_sidebar');\n if (isOutside) this.mobileViewSidebarOpened = false;\n }\n}\n","<div class=\"sidebar\">\n <div class=\"mobile_sidebar_header\">\n <i-tech-icon-button class=\"mobile_menu_button\"\n [type]=\"'tonal'\"\n [size]=\"'medium'\"\n [iconName]=\"'menu'\"\n [testId]=\"'mobile_menu_open_sidebar_button'\"\n (buttonClick)=\"openSidebarMobile()\"\n ></i-tech-icon-button>\n </div>\n\n <div class=\"main_sidebar_wrapper\"\n (click)=\"handleFullClickOnWrapper($event)\"\n [class.mobile_opened]=\"mobileViewSidebarOpened\"\n >\n <div class=\"main_sidebar\"\n *ngIf=\"navigationLinks && userData\"\n [class.collapsed]=\"isCollapsed\"\n >\n <div class=\"main_sidebar--header\">\n <a [href]=\"platform === CompaniesEnum.ORGANIZATION ? '/auth/organization' : '/'\"\n [attr.data-testId]=\"platform + '_org_logo'\"\n >\n\n <img class=\"logo pointer\" alt=\"\"\n *ngIf=\"isCollapsed\"\n [attr.data-testId]=\"platform + '_platform_logo_collapsed'\"\n [src]=\"'/assets/logos/small/' + platform + '.svg'\"\n >\n\n <img class=\"logo pointer\" alt=\"\"\n *ngIf=\"!isCollapsed\"\n [attr.data-testId]=\"platform + '_platform_logo'\"\n [src]=\"'/assets/logos/full/' + platform + '.svg'\"\n >\n </a>\n <i-tech-icon-button\n *ngIf=\"!isCollapsed\"\n [tooltip]=\"'SLP Tools'\"\n [iconName]=\"'apps'\"\n [testId]=\"'open_apps_list'\"\n [matMenuTriggerFor]=\"matMenu\"\n ></i-tech-icon-button>\n\n <mat-menu #matMenu=\"matMenu\" class=\"sidebar_platforms_menu\">\n <ng-container *ngIf=\"activeAndInactivePlatforms['active'].length\">\n <div class=\"menu_title\">\n Active Apps\n </div>\n <ng-container *ngFor=\"let app of activeAndInactivePlatforms['active']\">\n <a [href]=\"AppsUrls[app.id]\" target=\"_blank\"\n [attr.data-testId]=\"'active-app-' + app.id\"\n >\n <div mat-menu-item class=\"standard_menu_item\">\n <img alt=\"\" class=\"logo\" [src]=\"'/assets/logos/small/' + app.id + '.svg'\">\n <span>{{app.name}}</span>\n <img alt=\"\" class=\"ml-auto\" src=\"/assets/selected_organization.svg\"\n *ngIf=\"app.checked\"\n >\n </div>\n </a>\n </ng-container>\n </ng-container>\n\n <div class=\"divider\"\n *ngIf=\"activeAndInactivePlatforms['active'].length && activeAndInactivePlatforms['inactive'].length\"\n ></div>\n\n <ng-container *ngIf=\"activeAndInactivePlatforms['inactive'].length\">\n <div class=\"menu_title\">\n Inactive Apps\n </div>\n <div class=\"standard_menu_item\" *ngFor=\"let app of activeAndInactivePlatforms['inactive']\">\n <img alt=\"\" class=\"logo\" [src]=\"'/assets/logos/small/' + app.id + '.svg'\">\n <span>{{app.name}}</span>\n </div>\n </ng-container>\n\n </mat-menu>\n </div>\n\n <div class=\"main_sidebar--content\">\n <ng-container *ngIf=\"secondLayerLinks.length\">\n <div class=\"main_sidebar--content--toolbar\"\n data-testId=\"back-to-main-sidebar\"\n (click)=\"navigateBack()\"\n >\n <img alt=\"\" src=\"/assets/back.svg\">\n <span>Back</span>\n </div>\n <div class=\"main_sidebar--content--sub_title\">\n Settings\n </div>\n </ng-container>\n\n <ng-container *ngFor=\"let link of (secondLayerLinks.length ? secondLayerLinks : navigationLinks)\">\n <div class=\"divider\" *ngIf=\"link.hasDivider\"></div>\n <a [routerLink]=\"link.emitClick ? null : link.linkTo\"\n [attr.data-testId]=\"'sidebar-link-' + (link.linkTo | lowercase)\"\n >\n <div class=\"main_sidebar--content--link pointer\"\n matRipple\n [class.active]=\"link.pageEnum === activePage || link.pageEnum === secondLayerActivePage\"\n (click)=\"handleLinkClick(link)\"\n >\n <div class=\"parent_icon\">\n <img class=\"icon\" alt=\"\"\n [src]=\"'/assets/links/' + platform + '/' + link.image + '.svg'\">\n </div>\n <div class=\"name\">{{link.title | translate}}</div>\n\n <div class=\"new link_badge\" *ngIf=\"link.isNew\">New</div>\n <i-tech-icon-button class=\"link_badge info\"\n *ngIf=\"link.infoWithTooltipText\"\n [tooltip]=\"link.infoWithTooltipText || ''\"\n [size]=\"'small'\"\n [iconName]=\"'info'\"\n >\n </i-tech-icon-button>\n </div>\n </a>\n </ng-container>\n\n </div>\n\n <div class=\"main_sidebar--footer\" *ngIf=\"userData\">\n <div class=\"main_sidebar--footer--toggle\"\n >\n <i-tech-icon-button\n [tooltip]=\"isCollapsed ? 'Expand Sidebar' : 'Collapse Sidebar'\"\n [iconName]=\"isCollapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left'\"\n (click)=\"changeCollapse()\"\n ></i-tech-icon-button>\n\n </div>\n <div class=\"main_sidebar--footer--profile\">\n <i-tech-company-image\n [matMenuTriggerFor]=\"matMenu\"\n [collapsed]=\"isCollapsed\"\n [userData]=\"userData\"\n [platform]=\"platform\"\n [currentCompany]=\"currentCompany\"\n ></i-tech-company-image>\n <mat-menu #matMenu=\"matMenu\" class=\"sidebar_bottom_menu\">\n <div class=\"top_bar\">\n <img class=\"image\" alt=\"\" [src]=\"userData.image\"\n *ngIf=\"userData.image; else NoImage\"\n >\n <ng-template #NoImage>\n <div class=\"image no_image\">\n {{userData.firstName | slice: 0 : 1 | uppercase}}\n </div>\n </ng-template>\n <div class=\"information\">\n <div class=\"name\">{{userData.firstName}} {{userData.lastName}}</div>\n <div class=\"email\">{{userData.email}}</div>\n </div>\n </div>\n <a [href]=\"BottomPopupLinks['manageAccount']\" target=\"_blank\"\n data-testId=\"manage-account-link\"\n >\n <div mat-menu-item *ngIf=\"platform !== CompaniesEnum.ORGANIZATION\" class=\"mt-4 standard_menu_item\"\n >\n Account Information\n </div>\n </a>\n\n <a [href]=\"BottomPopupLinks['accountInformation']\"\n data-testId=\"open_organization_profile_page\"\n >\n <div mat-menu-item *ngIf=\"platform === CompaniesEnum.ORGANIZATION\" class=\"mt-4 standard_menu_item\"\n >\n Account Information\n </div>\n </a>\n\n\n <div mat-menu-item *ngIf=\"platform === CompaniesEnum.TMT\"\n class=\"standard_menu_item\"\n data-testId=\"open_notifications\"\n (click)=\"emitPopupClicks('NOTIFICATION')\"\n >\n Notifications\n </div>\n\n <a [href]=\"BottomPopupLinks['addNewOrganization']\"\n data-testId=\"add-new-organization-link\"\n >\n <div mat-menu-item *ngIf=\"platform === CompaniesEnum.ORGANIZATION && accessToNewOrganization\"\n class=\"standard_menu_item\"\n >\n Add new organization\n </div>\n </a>\n\n\n <ng-container *ngIf=\"allOrganizations.length > 1\">\n <div class=\"divider\" ></div>\n\n <div class=\"switch\">\n <div class=\"switch_title\">\n Switch Organization\n </div>\n <div mat-menu-item class=\"mat_menu_organization\" (click)=\"switchOrganization(organization)\"\n *ngFor=\"let organization of allOrganizations\"\n [attr.data-testId]=\"organization.id + '_switch_to_organization'\"\n >\n <div class=\"organization_item_in_menu\">\n <img alt=\"\" class=\"image\" [src]=\"organization.image\"\n *ngIf=\"organization.image; else NoImage\"\n >\n <ng-template #NoImage>\n <div class=\"image no_image\">\n {{organization.name | slice: 0 : 1 | uppercase}}\n </div>\n </ng-template>\n <span>{{organization.name}}</span>\n </div>\n <img alt=\"\" *ngIf=\"organization.id === currentCompany?.id\"\n class=\"isSelected\" src=\"/assets/selected_organization.svg\" >\n </div>\n </div>\n </ng-container>\n <div class=\"divider\"></div>\n\n <div mat-menu-item class=\"standard_menu_item\" (click)=\"openZendeskPage()\"\n data-testId=\"open-zendesk-link\"\n >\n Help Center\n </div>\n\n <a [href]=\"BottomPopupLinks['terms']\" target=\"_blank\"\n data-testId=\"terms-link\"\n >\n <div mat-menu-item class=\"standard_menu_item\" >\n Terms And Conditions\n </div>\n </a>\n\n <a [href]=\"BottomPopupLinks['privacy']\" target=\"_blank\"\n data-testId=\"privacy-link\"\n >\n <div mat-menu-item class=\"standard_menu_item\" >\n Privacy Policy\n </div>\n </a>\n\n\n <div class=\"divider\"></div>\n\n <div mat-menu-item class=\"standard_menu_item\" (click)=\"signOut()\"\n data-testId=\"sign-out-button\"\n >\n Sign out\n </div>\n </mat-menu>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n","import { DriverCategoryEnum } from \"./driver-category.enum\";\nimport { LicenseResponseInterface } from \"./license.interface\";\nimport { PaginationResponse } from \"./request.interface\";\n\nexport enum DriverStatus {\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n SUSPENDED = 'SUSPENDED',\n TERMINATED = 'TERMINATED',\n}\n\nexport interface DriverBaseInterface {\n id: number;\n status: DriverStatus;\n username: string,\n category: DriverCategoryEnum;\n phoneNumber: string;\n countryCode: string;\n firstName: string;\n lastName: string;\n middleName?: string;\n lastModifiedDate?: string;\n}\n\nexport type DriverListInterface = DriverBaseInterface\n\n\nexport interface SingleDriverDTO extends DriverBaseInterface {\n dateOfBirth?: string;\n email?: string;\n address?: string;\n emergencyContactName?: string;\n emergencyContactPhone?: string;\n hireDate?: string;\n seniorityDate?: string;\n terminationDate?: string;\n employeeStartDate?: string;\n lastModifiedBy?: string;\n createdDate?: string;\n profileImage?: string;\n tmtEnabled: boolean,\n tmsEnabled: boolean,\n licences: Array<LicenseResponseInterface>\n}\n\nexport interface DriverPagination extends PaginationResponse {\n content: Array<DriverListInterface>\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * Global Token for the project's API Gateway URL.\n * Injected at the root level of each application (TMT, T3, etc.).\n */\nexport const DATA_ENDPOINT = new InjectionToken<string>('DATA_ENDPOINT');\n","import { Injectable } from '@angular/core';\nimport { GridApi } from \"ag-grid-enterprise\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AgGridFunctionsService {\n\n findSortQuery(sortModel: any[]): string {\n if (!sortModel || sortModel.length === 0) return '';\n\n const colId = sortModel[0].colId;\n const direction = sortModel[0].sort.toUpperCase();\n\n // Convert camelCase to SNAKE_CASE\n const sortId = colId\n .replace(/([a-z])([A-Z])/g, '$1_$2') // Insert underscore before capital letters\n .toUpperCase(); // Convert to uppercase\n\n return `&sort=${sortId}&direction=${direction}`;\n }\n\n showAgGridEmpty(gridApi: GridApi):void {\n if (!gridApi.getDisplayedRowCount()) {\n gridApi.showNoRowsOverlay();\n } else {\n gridApi.hideOverlay();\n }\n }\n\n objectToArray<T extends object>(obj: T): { key: keyof T, value: T[keyof T] }[] {\n return Object.keys(obj).map((key) => ({\n key: key as keyof T,\n value: obj[key as keyof T],\n }));\n }\n\n}\n","import { Component } from '@angular/core';\nimport { ICellRendererAngularComp } from \"ag-grid-angular\";\nimport { IconButtonComponent } from \"../../icon-button/icon-button.component\";\n\n@Component({\n selector: 'i-tech-ag-grid-button-cell',\n imports: [\n IconButtonComponent,\n ],\n standalone: true,\n templateUrl: './ag-grid-button-cell.component.html',\n styleUrl: './ag-grid-button-cell.component.scss'\n})\nexport class AgGridButtonCellComponent implements ICellRendererAngularComp {\n params: any;\n\n agInit(params: any): void {\n this.params = params;\n }\n\n refresh(params: any): boolean {\n this.params = params;\n return true;\n }\n\n onClick(event: any): void {\n event.stopPropagation();\n this.params.onClick(this.params.data);\n }\n}\n","<i-tech-icon-button\n (click)=\"onClick($event)\"\n [iconName]=\"params.image\"\n>\n</i-tech-icon-button>\n","import { Component } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { CommonModule } from '@angular/common';\nimport { LabelComponent } from \"../label/label.component\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\n\n@Component({\n selector: 'i-tech-status-label-cell',\n standalone: true,\n imports: [CommonModule, LabelComponent, MatTooltip],\n template: `<i-tech-label\n [color]=\"data?.list[data.status]?.color\" [forTable]=\"true\"\n [text]=\"data?.list[data.status]?.text\"\n [matTooltipDisabled]=\"!data?.tooltipEnabled\"\n [matTooltip]=\"data?.tooltipText\"\n ></i-tech-label>`\n})\nexport class ProcessedStatusCellRendererComponent implements ICellRendererAngularComp {\n data: any;\n\n agInit(params: any): void {\n this.data = {\n status: params.value,\n list: params.statusList,\n tooltipEnabled: params.tooltipEnabled,\n tooltipText: params.tooltipText,\n }\n }\n\n refresh(params: any): boolean {\n this.agInit(params)\n return true;\n }\n}\n\n","import { Component } from '@angular/core';\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\nimport { ICellRendererParams } from 'ag-grid-enterprise';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'i-tech-tooltip-cell-renderer',\n template: `<div class=\"tooltip-cell-renderer\"\n #element\n [matTooltip]=\"!customTextTooltip? (customText || tooltipText) : customTextTooltip\"\n [matTooltipDisabled]=\"!customTextTooltip && !(element.scrollWidth > element.clientWidth)\"\n >\n {{ customText? customText : params?.value }}\n </div>`,\n standalone: true,\n imports: [MatTooltipModule]\n})\nexport class TooltipCellRendererComponent implements ICellRendererAngularComp {\n params?: ICellRendererParams;\n tooltipText = '';\n customTextTooltip = '';\n customText = '';\n\n agInit(params: any): void {\n this.params = params;\n this.customTextTooltip = params?.setCustomTooltipText || '';\n this.customText = params.setCustomValue || '';\n this.updateTooltipText();\n }\n\n refresh(params: ICellRendererParams): boolean {\n this.params = params;\n this.updateTooltipText();\n return true;\n }\n\n private updateTooltipText(): void {\n this.tooltipText = this.customTextTooltip || this.params?.value;\n }\n}\n","import { PhoneNumberUtil } from 'google-libphonenumber';\n\nconst phoneUtil = PhoneNumberUtil.getInstance();\n\nexport function formatPhoneNumber(phone: string): string {\n if (!phone) return '';\n\n try {\n const parsed = phoneUtil.parse(phone);\n const countryCode = parsed.getCountryCode();\n const nationalNumber = parsed.getNationalNumber()?.toString() || '';\n\n if (nationalNumber.length >= 10) {\n return `+${countryCode} (${nationalNumber.slice(0, 3)}) ${nationalNumber.slice(3, 6)}-${nationalNumber.slice(6)}`;\n } else if (nationalNumber.length >= 7) {\n return `+${countryCode} (${nationalNumber.slice(0, 3)}) ${nationalNumber.slice(3)}`;\n } else {\n return `+${countryCode} ${nationalNumber}`;\n }\n } catch {\n return phone;\n }\n}\n","export const PHONE_LENGTH_MAP: Record<string, number> = {\n '+7': 10, '+20': 10, '+27': 9, '+30': 10, '+31': 9, '+32': 9,\n '+33': 9, '+34': 9, '+36': 9, '+39': 10, '+40': 10, '+41': 9,\n '+43': 10, '+44': 10, '+45': 8, '+46': 9, '+47': 8, '+48': 9,\n '+49': 10, '+51': 9, '+52': 10, '+53': 8, '+54': 10, '+55': 11,\n '+56': 9, '+57': 10, '+58': 10, '+60': 9, '+61': 9, '+62': 10,\n '+63': 10, '+64': 9, '+65': 8, '+66': 9, '+81': 10, '+82': 10,\n '+84': 9, '+86': 11, '+90': 10, '+91': 10, '+92': 10, '+93': 9,\n '+94': 9, '+95': 9, '+98': 10, '+212': 9, '+213': 9, '+216': 8,\n '+220': 7, '+221': 9, '+234': 10, '+237': 9, '+254': 10, '+255': 9,\n '+256': 9, '+351': 9, '+352': 9, '+353': 9, '+354': 7, '+355': 9,\n '+356': 8, '+357': 8, '+358': 9, '+359': 9, '+370': 8, '+371': 8,\n '+372': 8, '+373': 8, '+374': 8, '+375': 9, '+380': 9, '+381': 9,\n '+385': 9, '+386': 8, '+420': 9, '+421': 9, '+852': 8, '+853': 8,\n '+855': 9, '+856': 9, '+880': 10, '+886': 9, '+960': 7, '+961': 8,\n '+962': 9, '+963': 9, '+964': 10, '+965': 8, '+966': 9, '+967': 9,\n '+968': 8, '+970': 9, '+971': 9, '+972': 9, '+973': 8, '+974': 8,\n '+975': 8, '+976': 8, '+977': 10, '+992': 9, '+993': 8, '+994': 9,\n '+995': 9, '+996': 9, '+998': 9\n};\n","import { Component, Input, OnInit } from '@angular/core';\nimport { MatError, MatFormField, MatLabel, MatOption, MatSelect } from \"@angular/material/select\";\nimport { NgClass, NgForOf, NgIf } from \"@angular/common\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport {\n FormsModule,\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup,\n} from \"@angular/forms\";\nimport { NgxMaskDirective } from \"ngx-mask\";\nimport * as libphonenumber from 'google-libphonenumber';\nimport { MatInput } from \"@angular/material/input\";\nimport { PHONE_LENGTH_MAP } from \"./country-patterns.const\";\nimport { GenerateErrorMessagesPipe } from \"../../pipes/generate-error-messages.pipe\";\nimport { InputService } from \"../../services/input.service\";\n\n@Component({\n selector: 'i-tech-phone-number-input',\n standalone: true,\n imports: [\n MatSelect, MatOption, NgForOf, TranslateModule, NgClass, ReactiveFormsModule,\n NgIf, NgxMaskDirective, FormsModule, MatLabel, MatError,\n GenerateErrorMessagesPipe, MatFormField, MatInput\n ],\n templateUrl: './phone-number-input.component.html',\n styleUrl: './phone-number-input.component.scss'\n})\nexport class PhoneNumberInputComponent implements OnInit {\n @Input() data!: { label: string; placeholder: string, required?: boolean, testId?: string };\n @Input() submit!: boolean;\n countries: number[] = [];\n ngControl: any;\n form = new UntypedFormGroup({\n code: new UntypedFormControl('+1'),\n phone: new UntypedFormControl()\n })\n currentMask = '(000) 000-0000';\n private phoneUtil: libphonenumber.PhoneNumberUtil;\n\n constructor(\n private inputService: InputService\n ) {\n this.phoneUtil = libphonenumber.PhoneNumberUtil.getInstance();\n this.countries = this.phoneUtil.getSupportedCallingCodes();\n this.ngControl = this.inputService.injectNgControl();\n }\n\n ngOnInit() {\n\n this.setDefaultValue();\n\n this.form.valueChanges.subscribe((value: any) => {\n const currentCode = this.form.get('code')?.value;\n\n const phone = value.phone ? value.phone : null;\n\n this.ngControl.control.patchValue(\n phone ? { code: value.code, phone: phone } : null,\n { emitEvent: false }\n );\n\n if (currentCode !== value.code) {\n this.updateMask();\n }\n\n this.ngControl.control.updateValueAndValidity({ onlySelf: false, emitEvent: true });\n });\n\n this.ngControl.control.valueChanges.subscribe((value: string | { code: string, phone: string }) => {\n this.setDefaultValue(value);\n })\n\n if (this.ngControl.control.disabled) {\n this.form.disable({ emitEvent: false });\n }\n\n this.updateMask();\n }\n\n updateMask(): void {\n const currentCode = this.form.get('code')?.value;\n const defaultMask = '(000) 000-0000';\n\n if (!currentCode) {\n this.currentMask = defaultMask;\n return;\n }\n\n if (currentCode === '+1') {\n this.currentMask = defaultMask;\n return;\n }\n\n const maxLength = PHONE_LENGTH_MAP[currentCode] || 10;\n this.currentMask = this.generateMask(maxLength);\n }\n\n private generateMask(length: number): string {\n if (length <= 7) return '(000) 0000';\n if (length === 8) return '(000) 00-000';\n if (length === 9) return '(000) 000-000';\n if (length === 10) return '(000) 000-0000';\n if (length === 11) return '(000) 0000-0000';\n return '(000) 0000-00000';\n }\n\n setDefaultValue(initialValue: string | { code: string, phone: string } | null = this.ngControl.control.value): void {\n if (initialValue) {\n let parsed: { code: string, phone: string };\n\n if (typeof initialValue === 'string') {\n parsed = this.parsePhoneNumber(initialValue);\n } else {\n parsed = initialValue;\n }\n\n this.form.patchValue({\n code: parsed.code,\n phone: parsed.phone\n }, { emitEvent: false });\n }\n }\n\n private parsePhoneNumber(phoneNumber: string): { code: string, phone: string } {\n if (!phoneNumber || !phoneNumber.startsWith('+')) {\n return { code: '+1', phone: phoneNumber };\n }\n\n try {\n const parsedNumber = this.phoneUtil.parse(phoneNumber);\n const countryCode = '+' + parsedNumber.getCountryCode();\n const nationalNumber = parsedNumber.getNationalNumber()?.toString() || '';\n return {\n code: countryCode,\n phone: nationalNumber\n };\n } catch (error) {\n return { code: '+1', phone: phoneNumber };\n }\n }\n\n customErrorStateMatcher = {\n isErrorState: (): boolean => {\n return !!(this.ngControl.control.invalid && this.submit);\n }\n };\n\n public getCodeAndValueSeparately(): { code: string, phone: string } {\n return this.form.value;\n }\n}\n","<div class=\"phone_number_input\"\n [formGroup]=\"form\"\n [class.disabled]=\"!!(ngControl.control.disabled)\"\n [attr.data-testId]=\"data.testId || 'phone-number-element'\"\n>\n <div class=\"flex_align_center\">\n <mat-label\n [ngClass]=\"{\n 'invalid-label-color': !!(ngControl.control.errors && submit),\n }\"\n >{{(data?.label || '') | translate}}</mat-label>\n <span *ngIf=\"data.required\" class=\"required-input\">*</span>\n </div>\n\n <mat-form-field appearance=\"outline\" class=\"w-100\">\n <div class=\"flex_center_align_center phoneNumber\">\n <mat-select [placeholder]=\"'Code'\"\n formControlName=\"code\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n panelClass=\"custome_panel_phone_number\"\n (selectionChange)=\"updateMask()\"\n [attr.data-testId]=\"data.testId ? (data.testId + '_code') : 'phone-number-code-element'\"\n >\n <mat-option *ngFor=\"let code of countries\"\n [value]=\"('+' + code)\"\n >\n +{{code}}\n </mat-option>\n </mat-select>\n <input [mask]=\"currentMask\"\n formControlName=\"phone\"\n matInput\n [attr.data-testId]=\"data.testId ? (data.testId + '_input') : 'phone-number-input'\"\n [errorStateMatcher]=\"customErrorStateMatcher\"\n type=\"text\"\n (click)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\"\n >\n </div>\n\n <mat-error *ngIf=\"!!(ngControl.control.errors && submit)\"\n >\n {{ (ngControl.control | generateErrorMessages : (data.label || ''): 'pattern') }}\n </mat-error>\n </mat-form-field>\n</div>\n\n\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\nimport * as libphonenumber from 'google-libphonenumber';\n\nconst phoneUtil = libphonenumber.PhoneNumberUtil.getInstance();\n\nconst getRegionCodeForCallingCode = (callingCode: string): string | null => {\n const code = Number(callingCode.replace('+', ''));\n const region = phoneUtil.getRegionCodeForCountryCode(code);\n return region !== 'ZZ' ? region : null;\n};\n\nexport function internationalPhoneValidator(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const phoneValue = control.value as { code: string, phone: string };\n\n if (!phoneValue || !phoneValue.phone) {\n return null;\n }\n\n const fullPhoneNumber = phoneValue.code + phoneValue.phone;\n const currentCode = phoneValue.code;\n\n const primaryRegionCode = getRegionCodeForCallingCode(currentCode);\n\n try {\n const phoneNumber = phoneUtil.parse(fullPhoneNumber, primaryRegionCode || 'ZZ');\n\n let isValid: boolean;\n\n if (primaryRegionCode) {\n isValid = phoneUtil.isPossibleNumber(phoneNumber, primaryRegionCode);\n } else {\n isValid = phoneUtil.isValidNumber(phoneNumber);\n }\n\n const codeMatch = phoneNumber.getCountryCode() === Number(currentCode.replace('+', ''));\n\n return (isValid && codeMatch) ? null : { phoneNumber: true };\n\n } catch (error) {\n return { phoneNumber: true };\n }\n };\n}\n","import { Component, ViewChild } from '@angular/core';\nimport {\n ReactiveFormsModule,\n UntypedFormControl,\n UntypedFormGroup\n} from '@angular/forms';\nimport { IFilterAngularComp } from 'ag-grid-angular';\nimport { IDoesFilterPassParams, IFilterParams } from 'ag-grid-community';\nimport { DateRangeDatepickerComponent } from '../../date-range-datepicker/date-range-datepicker.component';\nimport { ParseDateService } from \"../../../services/parse-date.service\";\nimport { AgGridDateRangeConfig } from \"../../../interfaces/date-range-filtration.interface\";\n\n@Component({\n selector: 'i-tech-date-range-selection',\n standalone: true,\n imports: [ ReactiveFormsModule, DateRangeDatepickerComponent],\n templateUrl: './date-range-selection.component.html',\n styleUrls: ['./date-range-selection.component.scss'],\n providers: [ParseDateService]\n})\nexport class DateRangeSelectionComponent implements IFilterAngularComp {\n @ViewChild(DateRangeDatepickerComponent) rangePicker!: DateRangeDatepickerComponent;\n params!: IFilterParams;\n config!: AgGridDateRangeConfig;\n\n form = new UntypedFormGroup({\n range: new UntypedFormControl(null)\n });\n\n defaultValueForDates: any[] = [];\n\n constructor(private dateService: ParseDateService) {}\n\n agInit(params: any): void {\n this.params = params;\n this.config = params['customParams'] as AgGridDateRangeConfig;\n }\n\n /**\n * Selection event from the Datepicker component\n */\n onDateChange(event: Array<string>): void {\n this.form.get('range')!.setValue(event);\n // Notify AG Grid to trigger getModel()\n this.params.filterChangedCallback();\n }\n\n /**\n * AG Grid calls this to get the state of the filter\n */\n getModel(): any {\n const value = this.form.get('range')!.value;\n if (!value || (!value[0] && !value[1])) return null;\n\n const [start, end] = value;\n const model: any = {};\n\n // Start Date mapping: 00:00:00\n if (start && this.config.returnValueByKey[0]) {\n const date = typeof start === 'string' ? new Date(start) : start;\n model[this.config.returnValueByKey[0]] =\n this.dateService.changeFormat(date, 'YYYY-MM-DD') + 'T00:00:00';\n }\n\n // End Date mapping: 23:59:59\n if (end && this.config.returnValueByKey[1]) {\n const date = typeof end === 'string' ? new Date(end) : end;\n model[this.config.returnValueByKey[1]] =\n this.dateService.changeFormat(date, 'YYYY-MM-DD') + 'T23:59:59';\n }\n\n // Include targetFields if provided\n if (this.config.targetFields?.length) {\n model.targetFields = this.config.targetFields;\n }\n\n return model;\n }\n\n /**\n * AG Grid calls this to restore the filter state\n */\n setModel(model: any): void {\n if (!model) {\n this.form.get('range')!.setValue(null);\n this.defaultValueForDates = [];\n return;\n }\n\n const start = model[this.config.returnValueByKey[0]];\n const end = model[this.config.returnValueByKey[1]];\n\n this.defaultValueForDates = [start, end];\n this.form.get('range')!.setValue([start, end]);\n }\n\n isFilterActive(): boolean {\n const val = this.form.get('range')!.value;\n return !!(val && (val[0] || val[1]));\n }\n\n // Not used for server-side filtering but required by interface\n doesFilterPass(params: IDoesFilterPassParams): boolean {\n return true;\n }\n\n afterGuiDetached(): void {\n this.rangePicker.picker.close()\n }\n\n}\n","<div class=\"ag-date-filter-wrapper\">\n <i-tech-mat-range-datepicker\n [label]=\"''\"\n [panelClass]=\"'ag-filtration-date-range ag-custom-component-popup'\"\n [placeholder]=\"config?.DATE_RANGE?.placeholder || ['From', 'To']\"\n [defaultValue]=\"defaultValueForDates\"\n (selectionChange)=\"onDateChange($event)\"\n >\n </i-tech-mat-range-datepicker>\n</div>\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PaginationResponse, UniversalSelectorConfig } from '../interfaces/selection-filtration-configuration.interface';\nimport { DATA_ENDPOINT } from \"../interfaces/selection-filtration.tokens\";\n\n@Injectable({ providedIn: 'root' })\nexport class FiltrationHelperService {\n constructor(\n private http: HttpClient,\n @Optional() @Inject(DATA_ENDPOINT) private dataEndpoint: string\n ) {}\n\n getData(config: UniversalSelectorConfig, page = 1, size = 20, search = ''): Observable<PaginationResponse> {\n // Safe check to prevent the destructuring error\n if (!config || !config.source) {\n return of(this.wrapInFakePagination([]));\n }\n\n const { source } = config;\n const idPath = config.renderAndKeys.valueByKeys || 'id';\n\n // 1. Handle Local Sources (FIXED / MAP)\n if (source.type === 'FIXED' || source.type === 'MAP') {\n const rawData = source.type === 'FIXED' ? source.data :\n Object.entries(source.data).map(([key, value]) =>\n (typeof value === 'object') ? { ...value, id: key } : { id: key, value }\n );\n\n const processed = this.filterLocal(rawData, search, config).map(item => ({\n ...item,\n __uniqueId: this.getValueByPath(item, idPath)\n }));\n return of(this.wrapInFakePagination(processed));\n }\n\n // 2. Handle Remote Source (HTTP)\n const fullUrl = `${this.dataEndpoint}/${source.url.replace(/^\\//, '')}`;\n let params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString());\n\n if (search) params = params.set('search', search);\n\n let filter: any = {};\n if (source.method === 'POST') {\n filter = source.payload || { filter: {} };\n if (search) {\n filter.searchBy = search;\n }\n }\n\n const request$ = source.method === 'POST'\n ? this.http.post<any>(fullUrl, filter, { params })\n : this.http.get<any>(fullUrl, { params });\n\n return request$.pipe(\n map(res => {\n const isStandardResponse = res && res.content;\n const rawContent = isStandardResponse ? res.content : (Array.isArray(res) ? res : []);\n\n // SINGLE PASS: Wrap and Inject __uniqueId\n const mappedContent = rawContent.map((item: any) => ({\n ...item,\n __uniqueId: this.getValueByPath(item, idPath)\n }));\n\n return isStandardResponse\n ? { ...res, content: mappedContent }\n : this.wrapInFakePagination(mappedContent);\n })\n );\n }\n\n /**\n * Universal path extractor for strings or hierarchical arrays ['user', 'role', 'id']\n */\n getValueByPath(item: any, path: string | Array<string | number>): any {\n if (!item || !path) return null;\n return Array.isArray(path)\n ? path.reduce((obj, key) => (obj && obj[key] !== undefined ? obj[key] : null), item)\n : item[path];\n }\n\n private filterLocal(data: any[], search: string, config: UniversalSelectorConfig): any[] {\n if (!search) return data;\n const s = search.toLowerCase();\n return data.filter(item =>\n config.renderAndKeys.labelKeys.some(key =>\n String(this.getValueByPath(item, key)).toLowerCase().includes(s)\n )\n );\n }\n\n private wrapInFakePagination(data: any[]): PaginationResponse {\n return {\n content: data,\n last: true,\n totalElements: data.length,\n totalPages: 1,\n size: data.length,\n number: 1,\n first: true,\n empty: data.length === 0\n };\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { Component, OnDestroy, OnInit } from \"@angular/core\";\nimport { MatProgressSpinner } from \"@angular/material/progress-spinner\";\nimport { UniversalSelectorConfig } from \"../../../interfaces/selection-filtration-configuration.interface\";\nimport { IconButtonComponent } from \"../../icon-button/icon-button.component\";\nimport { TextInputComponent } from \"../../text/text-input.component\";\nimport { IDoesFilterPassParams, IFilterParams } from \"ag-grid-community\";\nimport { FiltrationHelperService } from \"../../../services/filtration-helper.service\";\nimport { IFilterAngularComp } from \"ag-grid-angular\";\nimport { GetValueByKeyFromObjectPipe } from \"../../../pipes/get-value-by-key-from-object.pipe\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { MatTooltip } from \"@angular/material/tooltip\";\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { MatRipple } from \"@angular/material/core\";\nimport { ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\nimport { BehaviorSubject, combineLatest, debounceTime, distinctUntilChanged, filter, Subject, switchMap, takeUntil, tap } from \"rxjs\";\n\n@Component({\n selector: 'i-tech-select-with-search',\n templateUrl: './select-with-search.component.html',\n styleUrl: './select-with-search.component.scss',\n standalone: true,\n imports: [\n CommonModule, MatProgressSpinner, GetValueByKeyFromObjectPipe,TranslateModule, MatCheckbox,\n TextInputComponent, ReactiveFormsModule, IconButtonComponent, MatTooltip, MatRipple\n ]\n})\nexport class SelectWithSearchComponent implements OnInit, OnDestroy, IFilterAngularComp {\n config!: UniversalSelectorConfig;\n params!: IFilterParams;\n\n items: any[] = [];\n selectedIds = new Set<any>(); // O(1) performance for large grids\n allSelected = false;\n partiallySelected = false;\n\n currentPage = 1;\n isLastPage = false;\n loading = false;\n searchForm = new UntypedFormGroup({\n search: new UntypedFormControl('')\n });\n private search$ = new BehaviorSubject<string>('');\n private pageLoad$ = new BehaviorSubject<number>(0);\n private destroy$ = new Subject<void>();\n\n constructor(private dataService: FiltrationHelperService) {}\n\n agInit(params: IFilterParams): void {\n this.params = params;\n this.config = (params as any).customParams;\n\n if (this.config?.renderAndKeys) {\n this.config.renderAndKeys.needTranslate = this.config.renderAndKeys.needTranslate !== false;\n }\n\n this.pageLoad$.next(1);\n }\n\n // AG GRID INTERFACE: Logic to hide/show rows\n doesFilterPass(params: IDoesFilterPassParams): boolean {\n const valuePath = this.config.renderAndKeys.valueByKeys?.[0] || 'id';\n const rowValue = this.dataService.getValueByPath(params.data, valuePath);\n\n if (this.allSelected) {\n return !this.selectedIds.has(rowValue);\n }\n if (this.selectedIds.size === 0) return true;\n return this.selectedIds.has(rowValue);\n }\n\n isFilterActive(): boolean {\n return this.selectedIds.size > 0 || this.allSelected;\n }\n\n getModel(): any {\n if (!this.isFilterActive()) return null;\n\n const selections = Array.from(this.selectedIds);\n const backKey = this.config.backEndKey;\n\n // CASE 1: Simple but Named Model (returnFlatArray is true or undefined)\n if (this.config.returnFlatArray !== false) {\n let value: Array<unknown> | unknown = selections;\n if (this.config.mode === 'SINGLE') {\n value = selections.length ? selections[0] : null;\n }\n return { [backKey]: value };\n }\n\n // CASE 2: Hard Model (returnFlatArray is false)\n return {\n [backKey]: selections,\n selectAll: this.config.selectAll ? this.allSelected : false\n };\n }\n\n setModel(model: any): void {\n if (model && typeof model === 'object') {\n const backKey = this.config.backEndKey;\n\n // We can use the same extraction logic for both formats\n const selections = model[backKey] || [];\n\n if (Array.isArray(selections)) {\n this.selectedIds = new Set(selections);\n } else {\n this.selectedIds = new Set([model[backKey]]);\n }\n\n // selectAll will be undefined in the \"Simple\" version, which evaluates to false\n this.allSelected = model.selectAll || false;\n } else {\n // Reset internal state if model is null\n this.allSelected = false;\n this.selectedIds.clear();\n }\n this.updateCheckboxState();\n }\n\n ngOnInit() {\n this.initCombinedStream();\n }\n\n private initCombinedStream() {\n combineLatest([\n this.search$.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n tap(() => {\n this.items = [];\n this.currentPage = 1;\n })\n ),\n this.pageLoad$\n ]).pipe(\n filter(() => !!this.config),\n tap(() => this.loading = true),\n switchMap(([term, page]) => this.dataService.getData(this.config, page, 20, term)),\n takeUntil(this.destroy$)\n ).subscribe(res => {\n if (res.number <= 1) this.items = res.content;\n else this.items = [...this.items, ...res.content];\n\n this.isLastPage = res.last;\n this.loading = false;\n this.updateCheckboxState();\n });\n }\n\n private updateCheckboxState() {\n if (this.config?.mode !== 'MULTI' || !this.config?.selectAll || this.items.length === 0) {\n this.allSelected = false;\n this.partiallySelected = false;\n return;\n }\n\n const selectedInView = this.items.filter(item => this.selectedIds.has(item.__uniqueId)).length;\n this.allSelected = selectedInView === this.items.length;\n this.partiallySelected = selectedInView > 0 && selectedInView < this.items.length;\n }\n\n toggleAll(checked: boolean): void {\n this.items.forEach(item => checked ? this.selectedIds.add(item.__uniqueId) : this.selectedIds.delete(item.__uniqueId));\n this.updateCheckboxState();\n this.params.filterChangedCallback(); // Tell AG Grid to re-run doesFilterPass\n }\n\n onSearchChange(value: string): void {\n this.search$.next(value || '');\n }\n\n handleScroll(e: any) {\n const t = e.target;\n // Standard infinite scroll threshold\n if (t.scrollHeight - t.scrollTop <= t.clientHeight + 15 && !this.loading && !this.isLastPage) {\n this.currentPage++; // Moves to 2, 3, etc.\n this.pageLoad$.next(this.currentPage);\n }\n }\n\n resetFilter(): void {\n // 1. Clear Selections\n this.selectedIds.clear();\n this.allSelected = false;\n this.partiallySelected = false;\n\n // 2. Clear Search Input (This triggers the debounceTime/switchMap stream)\n this.searchForm.reset();\n this.search$.next('');\n\n // 3. Notify AG Grid to refresh the table rows\n this.params.filterChangedCallback();\n }\n\n /**\n * Handles selection logic for the custom list.\n * Supports SINGLE (radio-like) and MULTI (checkbox) modes.\n */\n onItemClick(item: any): void {\n const id = item.__uniqueId;\n\n if (this.config.mode === 'SINGLE') {\n // Single mode: Clear others and set this one\n if (this.selectedIds.has(id)) {\n this.selectedIds.clear();\n } else {\n this.selectedIds.add(id);\n }\n\n } else {\n // Multi mode: Toggle selection\n if (this.selectedIds.has(id)) {\n this.selectedIds.delete(id);\n } else {\n this.selectedIds.add(id);\n }\n }\n\n this.updateCheckboxState();\n this.params.filterChangedCallback(); // Notify AG Grid to filter rows\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n this.search$.complete();\n this.pageLoad$.complete();\n }\n}\n","@if (config) {\n <div class=\"universal-selector-container\">\n\n @if (config.search) {\n <div class=\"search-wrapper\" [formGroup]=\"searchForm\">\n <i-tech-text-input\n formControlName=\"search\"\n [inputData]=\"{\n type: 'text',\n placeholder: config.search.placeholder || 'Search...',\n submit: false,\n hideLabel: true,\n iconPrefix: 'search',\n emitValueChanges: true,\n clearable: true\n }\"\n (valueChangeEmitter)=\"onSearchChange($event)\">\n </i-tech-text-input>\n </div>\n }\n\n <div class=\"header-section flex_between_align_center\"\n *ngIf=\"(config.mode === 'MULTI' && config.selectAll) || (selectedIds.size > 0 || allSelected)\"\n >\n <div class=\"header-left w-100\">\n @if (config.mode === 'MULTI' && config.selectAll) {\n\n <div class=\"custom-list-item select_all\"\n matRipple\n >\n <mat-checkbox\n color=\"primary\"\n [checked]=\"allSelected\"\n [indeterminate]=\"partiallySelected\"\n (change)=\"toggleAll($event.checked)\"\n >\n <span class=\"item-label\">{{ '(Select All)' | translate }}</span>\n </mat-checkbox>\n </div>\n } @else {\n <span class=\"header-text\">{{ 'Options' | translate }}</span>\n }\n </div>\n\n @if (selectedIds.size > 0 || allSelected) {\n <i-tech-icon-button\n [iconName]=\"'refresh'\"\n [matTooltip]=\"'Reset Filter' | translate\"\n (click)=\"resetFilter()\"\n ></i-tech-icon-button>\n }\n </div>\n\n <div class=\"scroll-viewport\" (scroll)=\"handleScroll($event)\">\n <div class=\"custom-list\">\n @for (item of items; track item.__uniqueId) {\n <div class=\"custom-list-item\"\n matRipple\n [class.selected]=\"selectedIds.has(item.__uniqueId)\"\n (click)=\"onItemClick(item)\"\n >\n <mat-checkbox\n color=\"primary\"\n [checked]=\"selectedIds.has(item.__uniqueId)\"\n >\n <span class=\"item-label\">\n @let label = (config.renderAndKeys.labelKeys | getValueByKeyFromObject: item : null : config.renderAndKeys.separator);\n {{ config.renderAndKeys.needTranslate ? (label | translate) : label }}\n </span>\n </mat-checkbox>\n </div>\n }\n </div>\n\n @if (loading) {\n <div class=\"loader-container\">\n <mat-progress-spinner diameter=\"24\" mode=\"indeterminate\"></mat-progress-spinner>\n </div>\n }\n </div>\n </div>\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SegmentedButtonOption } from \"../../interfaces/segmented-button.interface\";\n\n@Component({\n selector: 'i-tech-segmented-button',\n standalone: true,\n imports: [\n NgClass,\n MatIcon,\n TranslateModule\n ],\n templateUrl: './segmented-button.component.html',\n styleUrl: './segmented-button.component.scss'\n})\nexport class SegmentedButtonComponent {\n @Input() options: SegmentedButtonOption[] = [];\n @Input() value = '';\n @Input() disabled = false;\n @Input() testId = '';\n\n @Output() valueChange = new EventEmitter<string>();\n\n onSelect(option: SegmentedButtonOption): void {\n if (this.disabled || option.disabled || option.value === this.value) {\n return;\n }\n this.value = option.value;\n this.valueChange.emit(this.value);\n }\n\n isFirst(index: number): boolean {\n return index === 0;\n }\n\n isLast(index: number): boolean {\n return index === this.options.length - 1;\n }\n}\n","<div class=\"i-tech-segmented-button-group\"\n [attr.data-testid]=\"testId\"\n [class.disabled]=\"disabled\">\n @for (option of options; track option.value; let i = $index) {\n <button type=\"button\"\n class=\"segment\"\n [attr.data-testid]=\"testId ? testId + '_' + option.value : null\"\n [class.selected]=\"option.value === value\"\n [class.first]=\"isFirst(i)\"\n [class.last]=\"isLast(i)\"\n [disabled]=\"disabled || option.disabled\"\n (click)=\"onSelect(option)\"\n >\n @if (option.value === value) {\n <mat-icon class=\"check-icon\" [ngClass]=\"disabled || option.disabled ? 'disabled' : ''\">check</mat-icon>\n }\n @if (option.icon && option.value !== value) {\n <mat-icon class=\"segment-icon\" [ngClass]=\"disabled || option.disabled ? 'disabled' : ''\">\n {{ option.icon }}\n </mat-icon>\n }\n <div class=\"segment-label flex\">\n <div class=\"segment-label-text\">{{ option.label | translate }}</div>\n @if (option.countBadge) {\n <div class=\"badge-with-count\">{{option.countBadge}}</div>\n }\n </div>\n </button>\n }\n</div>\n","import {\n Component, Input, Output, EventEmitter, OnInit, OnDestroy, HostListener, ViewChild, ElementRef\n} from '@angular/core';\nimport { FormControlName, ReactiveFormsModule } from '@angular/forms';\nimport { NgIf, NgFor, NgClass, DecimalPipe } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\nimport { InputService } from '../../services/input.service';\nimport { GenerateErrorMessagesPipe } from '../../pipes/generate-error-messages.pipe';\n\n@Component({\n selector: 'i-tech-time-input',\n templateUrl: './time-input.component.html',\n styleUrls: ['./time-input.component.scss'],\n standalone: true,\n imports: [\n NgIf, NgFor, NgClass, DecimalPipe,\n ReactiveFormsModule, TranslateModule,\n MatIcon, GenerateErrorMessagesPipe\n ]\n})\nexport class TimeInputComponent implements OnInit, OnDestroy {\n\n @Input() set submit(value: boolean) {\n if (value && this.ngControl?.control) {\n this.ngControl.control.markAsTouched();\n }\n this._submit = value;\n }\n get submit(): boolean { return this._submit; }\n\n @Input() label?: string;\n @Input() required = false;\n @Input() mode: '12h' | '24h' = '12h';\n @Input() readOnly = false;\n @Input() hideErrorText = false;\n\n @Output() selectionChanges = new EventEmitter<string>();\n\n @ViewChild('timeField') timeFieldEl!: ElementRef;\n @ViewChild('hourCol') hourColEl!: ElementRef;\n @ViewChild('minuteCol') minuteColEl!: ElementRef;\n\n ngControl: FormControlName;\n\n hours = '--';\n minutes = '--';\n amPm: 'AM' | 'PM' = 'AM';\n activeSegment: 'hours' | 'minutes' | 'ampm' | null = null;\n isPickerOpen = false;\n\n private _submit = false;\n private hourBuffer = '';\n private minuteBuffer = '';\n private valueChangesSub?: Subscription;\n\n get hourOptions(): number[] {\n if (this.mode === '12h') {\n return Array.from({ length: 12 }, (_, i) => i + 1);\n }\n return Array.from({ length: 24 }, (_, i) => i);\n }\n\n get minuteOptions(): number[] {\n return Array.from({ length: 60 }, (_, i) => i);\n }\n\n get selectedHourValue(): number | null {\n if (this.hours === '--') return null;\n return parseInt(this.hours, 10);\n }\n\n get selectedMinuteValue(): number | null {\n if (this.minutes === '--') return null;\n return parseInt(this.minutes, 10);\n }\n\n get hasValue(): boolean {\n return this.hours !== '--' && this.minutes !== '--';\n }\n\n get isDisabled(): boolean {\n return this.readOnly || (this.ngControl?.control?.disabled ?? false);\n }\n\n get hasError(): boolean {\n return !!(this.ngControl?.control?.errors && this._submit);\n }\n\n customErrorStateMatcher = {\n isErrorState: (control: any): boolean => {\n return !!(control && control.invalid && this._submit);\n }\n };\n\n constructor(private inputService: InputService, private elementRef: ElementRef) {\n this.ngControl = this.inputService.injectNgControl();\n }\n\n ngOnInit(): void {\n const initialValue = this.ngControl.control?.value;\n if (initialValue) {\n this.parseControlValue(initialValue);\n }\n\n this.valueChangesSub = this.ngControl.control?.valueChanges.subscribe(v => {\n this.parseControlValue(v);\n });\n }\n\n ngOnDestroy(): void {\n this.valueChangesSub?.unsubscribe();\n }\n\n parseControlValue(v: string | null): void {\n if (!v) {\n this.hours = '--';\n this.minutes = '--';\n this.amPm = 'AM';\n return;\n }\n const parts = v.split(':');\n if (parts.length < 2) return;\n const h24 = parseInt(parts[0], 10);\n const m = parseInt(parts[1], 10);\n if (isNaN(h24) || isNaN(m)) return;\n\n this.minutes = String(m).padStart(2, '0');\n\n if (this.mode === '12h') {\n if (h24 === 0) {\n this.hours = '12';\n this.amPm = 'AM';\n } else if (h24 < 12) {\n this.hours = String(h24).padStart(2, '0');\n this.amPm = 'AM';\n } else if (h24 === 12) {\n this.hours = '12';\n this.amPm = 'PM';\n } else {\n this.hours = String(h24 - 12).padStart(2, '0');\n this.amPm = 'PM';\n }\n } else {\n this.hours = String(h24).padStart(2, '0');\n }\n }\n\n emitControlValue(): void {\n if (!this.hasValue) return;\n const h24 = this.toHours24();\n if (h24 === null) return;\n const timeStr = `${String(h24).padStart(2, '0')}:${this.minutes}`;\n this.ngControl.control.setValue(timeStr, { emitEvent: false });\n this.ngControl.control.markAsDirty();\n this.selectionChanges.emit(timeStr);\n }\n\n private toHours24(): number | null {\n if (this.hours === '--') return null;\n const h = parseInt(this.hours, 10);\n if (this.mode === '24h') return h;\n if (this.amPm === 'AM') {\n return h === 12 ? 0 : h;\n } else {\n return h === 12 ? 12 : h + 12;\n }\n }\n\n activateSegment(segment: 'hours' | 'minutes' | 'ampm', event: Event): void {\n if (this.isDisabled) return;\n this.activeSegment = segment;\n setTimeout(() => this.timeFieldEl?.nativeElement.focus());\n }\n\n deactivate(): void {\n this.activeSegment = null;\n this.hourBuffer = '';\n this.minuteBuffer = '';\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.activeSegment === null) return;\n if (this.activeSegment === 'hours') this.onHoursKey(event);\n else if (this.activeSegment === 'minutes') this.onMinutesKey(event);\n else if (this.activeSegment === 'ampm') this.onAmPmKey(event);\n }\n\n private onHoursKey(event: KeyboardEvent): void {\n const key = event.key;\n\n if (key === 'Tab') {\n this.activeSegment = 'minutes';\n this.hourBuffer = '';\n return;\n }\n if (key === 'ArrowRight') {\n event.preventDefault();\n this.activeSegment = 'minutes';\n this.hourBuffer = '';\n return;\n }\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n event.preventDefault();\n this.adjustHours(key === 'ArrowUp' ? 1 : -1);\n return;\n }\n if (!/^\\d$/.test(key)) return;\n event.preventDefault();\n\n const digit = parseInt(key, 10);\n this.hourBuffer += key;\n\n if (this.mode === '12h') {\n if (this.hourBuffer.length === 1 && digit >= 2 && digit <= 9) {\n this.hours = '0' + key;\n this.hourBuffer = '';\n this.activeSegment = 'minutes';\n } else if (this.hourBuffer.length === 2) {\n const num = parseInt(this.hourBuffer, 10);\n if (num >= 1 && num <= 12) {\n this.hours = this.hourBuffer;\n } else {\n this.hours = '0' + this.hourBuffer[1];\n }\n this.hourBuffer = '';\n this.activeSegment = 'minutes';\n } else {\n this.hours = '0' + key;\n }\n } else {\n if (this.hourBuffer.length === 1 && digit >= 3) {\n this.hours = '0' + key;\n this.hourBuffer = '';\n this.activeSegment = 'minutes';\n } else if (this.hourBuffer.length === 2) {\n const num = parseInt(this.hourBuffer, 10);\n if (num >= 0 && num <= 23) {\n this.hours = this.hourBuffer;\n } else {\n this.hours = '0' + this.hourBuffer[1];\n }\n this.hourBuffer = '';\n this.activeSegment = 'minutes';\n } else {\n this.hours = '0' + key;\n }\n }\n this.emitControlValue();\n }\n\n private adjustHours(delta: number): void {\n if (this.mode === '12h') {\n const current = this.hours === '--' ? 12 : parseInt(this.hours, 10);\n let next = current + delta;\n if (next > 12) next = 1;\n if (next < 1) next = 12;\n this.hours = String(next).padStart(2, '0');\n } else {\n const current = this.hours === '--' ? 0 : parseInt(this.hours, 10);\n let next = current + delta;\n if (next > 23) next = 0;\n if (next < 0) next = 23;\n this.hours = String(next).padStart(2, '0');\n }\n if (this.minutes === '--') this.minutes = '00';\n this.emitControlValue();\n }\n\n private onMinutesKey(event: KeyboardEvent): void {\n const key = event.key;\n\n if (key === 'Tab') {\n if (this.mode === '12h') this.activeSegment = 'ampm';\n else this.deactivate();\n this.minuteBuffer = '';\n return;\n }\n if (key === 'ArrowLeft') {\n event.preventDefault();\n this.activeSegment = 'hours';\n this.minuteBuffer = '';\n return;\n }\n if (key === 'ArrowRight' && this.mode === '12h') {\n event.preventDefault();\n this.activeSegment = 'ampm';\n this.minuteBuffer = '';\n return;\n }\n if (key === 'ArrowUp' || key === 'ArrowDown') {\n event.preventDefault();\n this.adjustMinutes(key === 'ArrowUp' ? 1 : -1);\n return;\n }\n if (!/^\\d$/.test(key)) return;\n event.preventDefault();\n\n const digit = parseInt(key, 10);\n this.minuteBuffer += key;\n\n if (this.minuteBuffer.length === 1 && digit >= 6) {\n this.minutes = '0' + key;\n this.minuteBuffer = '';\n if (this.mode === '12h') this.activeSegment = 'ampm';\n else this.deactivate();\n } else if (this.minuteBuffer.length === 2) {\n const num = parseInt(this.minuteBuffer, 10);\n if (num >= 0 && num <= 59) {\n this.minutes = this.minuteBuffer;\n } else {\n this.minutes = '0' + this.minuteBuffer[1];\n }\n this.minuteBuffer = '';\n if (this.mode === '12h') this.activeSegment = 'ampm';\n else this.deactivate();\n } else {\n this.minutes = '0' + key;\n }\n this.emitControlValue();\n }\n\n private adjustMinutes(delta: number): void {\n const current = this.minutes === '--' ? 0 : parseInt(this.minutes, 10);\n let next = current + delta;\n if (next > 59) next = 0;\n if (next < 0) next = 59;\n this.minutes = String(next).padStart(2, '0');\n if (this.hours === '--') {\n this.hours = this.mode === '12h' ? '12' : '00';\n }\n this.emitControlValue();\n }\n\n private onAmPmKey(event: KeyboardEvent): void {\n const key = event.key.toLowerCase();\n if (key === 'arrowleft') {\n event.preventDefault();\n this.activeSegment = 'minutes';\n return;\n }\n if (key === 'a') {\n this.amPm = 'AM';\n this.emitControlValue();\n } else if (key === 'p') {\n this.amPm = 'PM';\n this.emitControlValue();\n } else if (key === 'arrowup' || key === 'arrowdown') {\n event.preventDefault();\n this.amPm = this.amPm === 'AM' ? 'PM' : 'AM';\n this.emitControlValue();\n }\n }\n\n togglePicker(event: Event): void {\n if (this.isDisabled) return;\n this.isPickerOpen = !this.isPickerOpen;\n if (this.isPickerOpen) {\n setTimeout(() => this.scrollPickerToSelected());\n }\n }\n\n private scrollPickerToSelected(): void {\n if (this.hourColEl?.nativeElement) {\n const selected = this.hourColEl.nativeElement.querySelector('.selected');\n if (selected) {\n selected.scrollIntoView({ block: 'center', behavior: 'instant' });\n }\n }\n if (this.minuteColEl?.nativeElement) {\n const selected = this.minuteColEl.nativeElement.querySelector('.selected');\n if (selected) {\n selected.scrollIntoView({ block: 'center', behavior: 'instant' });\n }\n }\n }\n\n selectHour(h: number): void {\n this.hours = String(h).padStart(2, '0');\n if (this.minutes === '--') this.minutes = '00';\n this.emitControlValue();\n }\n\n selectMinute(m: number): void {\n this.minutes = String(m).padStart(2, '0');\n if (this.hours === '--') {\n this.hours = this.mode === '12h' ? '12' : '00';\n }\n this.emitControlValue();\n }\n\n selectAmPm(v: 'AM' | 'PM'): void {\n this.amPm = v;\n this.emitControlValue();\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (this.elementRef.nativeElement.contains(event.target as Node)) return;\n if (this.isPickerOpen) {\n this.isPickerOpen = false;\n }\n if (this.activeSegment !== null) {\n this.deactivate();\n }\n }\n}\n","<div *ngIf=\"ngControl\" class=\"time-input\">\n\n <!-- Label row -->\n <div *ngIf=\"label\" class=\"time-input__label-row\">\n <span class=\"time-input__label\">{{ label | translate }}</span>\n <span *ngIf=\"required\" class=\"time-input__required\">*</span>\n </div>\n\n <!-- Field row -->\n <div class=\"time-field\"\n #timeField\n tabindex=\"0\"\n [class.has-value]=\"hasValue\"\n [class.focused]=\"activeSegment !== null || isPickerOpen\"\n [class.disabled]=\"isDisabled\"\n [class.error]=\"hasError\"\n [class.open]=\"isPickerOpen\"\n (keydown)=\"onKeyDown($event)\"\n >\n <span class=\"segment\"\n [class.active]=\"activeSegment === 'hours'\"\n (click)=\"activateSegment('hours', $event)\"\n >{{ hours }}</span>\n\n <span class=\"sep\">:</span>\n\n <span class=\"segment\"\n [class.active]=\"activeSegment === 'minutes'\"\n (click)=\"activateSegment('minutes', $event)\"\n >{{ minutes }}</span>\n\n <span *ngIf=\"mode === '12h'\"\n class=\"segment segment--ampm\"\n [class.active]=\"activeSegment === 'ampm'\"\n (click)=\"activateSegment('ampm', $event)\"\n >{{ amPm }}</span>\n\n <!-- Clock icon button -->\n <button class=\"clock-btn\"\n type=\"button\"\n [disabled]=\"isDisabled\"\n tabindex=\"-1\"\n (click)=\"togglePicker($event)\"\n >\n <mat-icon>schedule</mat-icon>\n </button>\n </div>\n\n <!-- Picker panel -->\n <div *ngIf=\"isPickerOpen\" class=\"picker-panel\">\n <div class=\"picker-columns\">\n\n <!-- Hours column -->\n <div class=\"picker-col\" #hourCol>\n <div *ngFor=\"let h of hourOptions\"\n class=\"picker-item\"\n [class.selected]=\"h === selectedHourValue\"\n (click)=\"selectHour(h)\"\n >{{ h | number:'2.0-0' }}</div>\n </div>\n\n <!-- Minutes column -->\n <div class=\"picker-col\" #minuteCol>\n <div *ngFor=\"let m of minuteOptions\"\n class=\"picker-item\"\n [class.selected]=\"m === selectedMinuteValue\"\n (click)=\"selectMinute(m)\"\n >{{ m | number:'2.0-0' }}</div>\n </div>\n\n <!-- AM/PM row (12h mode only) -->\n <div *ngIf=\"mode === '12h'\" class=\"picker-ampm\">\n <button type=\"button\" [class.active]=\"amPm === 'AM'\" (click)=\"selectAmPm('AM')\">AM</button>\n <button type=\"button\" [class.active]=\"amPm === 'PM'\" (click)=\"selectAmPm('PM')\">PM</button>\n </div>\n </div>\n </div>\n\n <!-- Error -->\n <div *ngIf=\"hasError && !hideErrorText\" class=\"error-text\">\n {{ ngControl.control | generateErrorMessages : (label || '') }}\n </div>\n</div>\n","/*\n * Public API Surface of shared-components\n */\n\nexport * from './lib/pipes/generate-error-messages.pipe';\nexport * from './lib/pipes/array-to-string.pipe';\nexport * from './lib/pipes/get-value-by-key-from-object.pipe';\nexport * from './lib/services/input.service';\nexport * from './lib/services/parse-date.service';\nexport * from './lib/interfaces/app-input.interface';\nexport * from './lib/interfaces/button-types.enum';\nexport * from './lib/interfaces/driver-category.enum';\nexport * from './lib/interfaces/label-type.enum';\nexport * from './lib/interfaces/autocomplete-configs.interface';\nexport * from './lib/interfaces/auth.interface';\nexport * from './lib/directives/input-mask.directive';\nexport * from './lib/components/icon-button/icon-button.component';\nexport * from './lib/components/text/text-input.component';\nexport * from './lib/components/button/button.component';\nexport * from './lib/components/autocomplete-select/autocomplete-select.component';\nexport * from './lib/components/date-picker/date-picker.component';\nexport * from './lib/components/clear-value/clear-value.component';\nexport * from './lib/components/date-range-datepicker/date-range-datepicker.component';\nexport * from './lib/components/menu/menu.component';\nexport * from './lib/components/label/label.component';\nexport * from './lib/components/date-time-picker/date-time-picker.component';\nexport * from './lib/components/new-sidebar/new-sidebar.component';\nexport * from './lib/interfaces/license.interface';\nexport * from './lib/interfaces/driver.interface';\nexport * from './lib/interfaces/selection-filtration.tokens';\nexport * from './lib/interfaces/license-type.interface';\nexport * from './lib/services/ag-grid-functions.service';\nexport * from './lib/components/ag-grid/ag-grid-button-cell/ag-grid-button-cell.component';\nexport * from './lib/components/ag-grid/status-label-cell.component';\nexport * from './lib/components/ag-grid/tooltip-cell-renderer.component';\nexport * from './lib/helper-functions/phone-number-formatter.function';\nexport * from './lib/components/phone-number-input/phone-number-input.component';\nexport * from './lib/components/phone-number-input/phone-number.validator';\nexport * from './lib/components/ag-grid/date-range-selection/date-range-selection.component';\nexport * from './lib/components/ag-grid/select-with-search/select-with-search.component';\nexport * from './lib/interfaces/selection-filtration-configuration.interface';\nexport * from './lib/interfaces/date-range-filtration.interface';\nexport * from './lib/interfaces/segmented-button.interface';\nexport * from './lib/components/segmented-button/segmented-button.component';\nexport * from './lib/components/time-input/time-input.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.InputService","i2","i1","i5","i6","i3","i2.ParseDateService","i4","phoneUtil","MatLabel","MatError","i1.ParseDateService","i1.FiltrationHelperService"],"mappings":"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CAAC,EAAI,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,EAAE,EAAG,KAAK,EAAE,EAAE;IACrE,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,EAAE,EAAG,KAAK,EAAE,EAAE,EAAG,KAAK,EAAE,EAAE,EAAG,KAAK,EAAE,EAAE,EAAG,KAAK,EAAE,CAAC;IACpE,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,CAAC,EAAI,KAAK,EAAE,EAAE,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC;IACrE,MAAM,EAAE,CAAC,EAAG,MAAM,EAAE,CAAC,EAAG,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"}