import { Pipe, PipeTransform } from '@angular/core'; import { AbstractControl } from '@angular/forms'; import { ICaInput } from '../config/ca-input.config'; @Pipe({ name: 'inputDropdownArrowClass', standalone: true, }) export class InputDropdownArrowClassPipe implements PipeTransform { transform( getSuperControl: AbstractControl | null, isFocusInput: boolean, inputConfig: ICaInput, isTouchedInput: boolean, value: string ): { [key: string]: boolean | undefined } { return { focus: isFocusInput, 'valid-focus-in': (!inputConfig.dropdownLabel && (getSuperControl?.value || inputConfig.placeholder) && getSuperControl?.valid && isFocusInput && !inputConfig.isDisabled && !inputConfig.isInvalidSearchInDropdown) || ((inputConfig.dropdownImageInput?.url || inputConfig.dropdownImageInput?.nameInitialsInsteadUrl || inputConfig.placeholder) && isFocusInput && !inputConfig.isInvalidSearchInDropdown && !inputConfig.isDisabled), 'valid-focus-out': (getSuperControl?.value && getSuperControl?.valid && !isFocusInput && !inputConfig.isDisabled) || (!inputConfig.dropdownImageInput?.withText && inputConfig.dropdownImageInput?.url && !isFocusInput && !inputConfig.isDisabled), 'invalid-focus-in': (getSuperControl?.value && getSuperControl?.invalid && isFocusInput && !inputConfig.isDisabled) || (isFocusInput && getSuperControl?.value && inputConfig.isInvalidSearchInDropdown && inputConfig.isDropdown && !inputConfig.blackInput && !inputConfig.mergeDropdownBodyWithInput && !inputConfig.isDisabled), 'invalid-focus-out': !getSuperControl?.value && getSuperControl?.invalid && (isTouchedInput || getSuperControl?.touched) && !isFocusInput && !inputConfig.isDisabled, 'invalid-search-in-dropdown-focus-in': inputConfig.isInvalidSearchInDropdown && inputConfig.isDropdown && isFocusInput && getSuperControl?.value && getSuperControl?.invalid && !inputConfig.isDisabled, }; } }