import { Pipe, PipeTransform } from '@angular/core'; import { ICaInput } from '../config/ca-input.config'; import { AbstractControl } from '@angular/forms'; @Pipe({ name: 'inputDatetimePickerClass', standalone: true, }) export class InputDatetimePickerClassPipe implements PipeTransform { transform( isFocusInput: boolean | undefined, isVisibleCommands: boolean, inputConfig: Partial, isTouchedInput: boolean | undefined, isDisabledInput?: boolean, value?: any, valid?: boolean, touched?: boolean ): { [key: string]: boolean | undefined | number } { const isDisabled = isDisabledInput ?? inputConfig.isDisabled; return { focus: isFocusInput, 'valid-focus-in': (value && valid && isFocusInput && !isVisibleCommands && !inputConfig.dropdownImageInput?.url && !inputConfig.blackInput && !isDisabled) || (inputConfig.multipleInputValues?.options?.length && isFocusInput && !inputConfig.isInvalidSearchInDropdown && !isDisabled), 'valid-focus-out-filled': (((value && valid && !isFocusInput && !isDisabled && !isVisibleCommands && !inputConfig.blackInput && !isDisabled) || (!isFocusInput && inputConfig.dropdownImageInput?.url)) && !inputConfig.blackInput && !isDisabled) || (inputConfig.dropdownLabel && value && valid && !isFocusInput && !isDisabled) || (inputConfig.multipleInputValues?.options?.length && !isFocusInput), 'invalid-focus-in': !valid && value && isFocusInput && !inputConfig.blackInput && !( inputConfig.dropdownImageInput?.url || inputConfig.dropdownImageInput?.nameInitialsInsteadUrl ) && !isDisabled, 'invalid-focus-out-filled': ((value && !valid && !isFocusInput && !isDisabled && !inputConfig.blackInput) || (!inputConfig.dropdownImageInput?.url && (isTouchedInput || touched) && !valid && !isFocusInput && !isDisabled)) && !inputConfig.blackInput, 'invalid-focus-out-empty': !isFocusInput && !value && !valid && (isTouchedInput || touched) && inputConfig.multipleLabel?.labels?.length && !inputConfig.multipleInputValues?.options?.length && !isDisabled, dark: inputConfig.customClass === 'datetimeclass dark', 'time-picker-opacity': inputConfig.customClass === 'time-picker-opacity', 'dispatch-history-default-color': inputConfig.customClass === 'time-picker-opacity' && inputConfig.hideDropdownArrow && !isFocusInput, 'dispatch-history-row-hover': inputConfig.customClass === 'time-picker-opacity' && inputConfig.isHoverRow && inputConfig.hideDropdownArrow && !isFocusInput, transparent: inputConfig.transparentInput, }; } }