import { Pipe, PipeTransform } from '@angular/core'; import { AbstractControl } from '@angular/forms'; import { ICaInput } from '../config/ca-input.config'; import { DropdownTemplateTypeEnum } from '../../ca-input-dropdown/enums'; @Pipe({ name: 'inputClass', standalone: true, }) export class InputClassPipe implements PipeTransform { transform( getSuperControl: AbstractControl | null, isFocusInput: boolean, isTouchedInput: boolean, inputConfig: ICaInput, input: { value: string }, isVisibleCommands: boolean, value: string | number, superControlInvalid: boolean | undefined, superControlTouched: boolean | undefined, isDropdownToggler: boolean, isEditInput: boolean, template: string ): { [key: string]: boolean | undefined | number | null | string } { return { 'input-fixed-placehoder-input': inputConfig.fixedPlacholder && input.value && !isFocusInput, focus: isFocusInput && !inputConfig.isInvalidSearchInDropdown, 'inactive-empty': !value && inputConfig.isDisabled, 'inactive-filled': value && inputConfig.isDisabled, 'valid-focus-in': ((value || inputConfig.placeholder) && getSuperControl?.valid && isFocusInput && !isVisibleCommands && !inputConfig?.dropdownImageInput?.url && !inputConfig.blackInput && !inputConfig.isInvalidSearchInDropdown && !inputConfig.mergeDropdownBodyWithInput && !inputConfig.isDisabled && !inputConfig.dropdownLabel) || (inputConfig.multipleInputValues?.options?.length && isFocusInput && !inputConfig.isInvalidSearchInDropdown && !inputConfig.blackInput && !inputConfig.mergeDropdownBodyWithInput && !inputConfig.isDisabled && !inputConfig.dropdownLabel), 'valid-focus-out-filled': ((( (value || value === 0) && getSuperControl?.valid && !isFocusInput && !inputConfig.isDisabled && !isVisibleCommands && !inputConfig.blackInput) || (!isFocusInput && inputConfig.dropdownImageInput?.url)) && !inputConfig.blackInput) || (inputConfig.multipleInputValues?.options?.length && !isFocusInput && !inputConfig.blackInput), 'invalid-focus-in': getSuperControl?.invalid && value && isFocusInput && !inputConfig.blackInput && !inputConfig.mergeDropdownBodyWithInput && !inputConfig.isDisabled && !inputConfig.dropdownLabel && !( inputConfig.dropdownImageInput?.url || inputConfig.dropdownImageInput?.nameInitialsInsteadUrl ), 'invalid-focus-out-filled': ((value && getSuperControl?.invalid && !isFocusInput && !inputConfig.isDisabled && !inputConfig.blackInput) || (!inputConfig.dropdownImageInput?.url && (isTouchedInput || getSuperControl?.touched) && getSuperControl?.invalid && !inputConfig.isDisabled && !isFocusInput)) && !inputConfig.blackInput && !inputConfig.requiredLabel, 'invalid-focus-out-empty': !isFocusInput && !value && superControlInvalid && (isTouchedInput || superControlTouched) && !inputConfig.isDisabled && !inputConfig.requiredLabel, 'invalid-focus-out-empty-table': !isFocusInput && !getSuperControl?.value && getSuperControl?.invalid && (isTouchedInput || getSuperControl.touched) && !inputConfig.isDisabled && inputConfig.requiredLabel, 'invalid-search-in-dropdown-focus-in': isFocusInput && value && inputConfig.isInvalidSearchInDropdown && inputConfig.isDropdown && !inputConfig.blackInput && !inputConfig.mergeDropdownBodyWithInput && !inputConfig.isDisabled, 'has-placeholderIcon': !!inputConfig.placeholderIcon, 'dropdown-placeholder-active': inputConfig.isDropdown && inputConfig.placeholder && isDropdownToggler && isFocusInput && !inputConfig.blackInput && !inputConfig.isDisabled && !inputConfig.isInvalidSearchInDropdown, 'multiSelect-dropdown-active': inputConfig.multiSelectDropdownActive && isFocusInput && !inputConfig.isDisabled, 'dropdown-label-active': inputConfig.dropdownLabel && isVisibleCommands && isEditInput && !inputConfig.isDisabled, 'input-commands': inputConfig.commands?.active && isVisibleCommands, 'blue-commands': inputConfig.commands?.blueCommands && inputConfig.commands?.active && isVisibleCommands, 'dropdown-input-image-truck': inputConfig?.dropdownImageInput?.withText && inputConfig?.dropdownImageInput?.url && inputConfig?.dropdownImageInput?.template === 'truck' && !inputConfig?.dropdownImageInput?.remove && !isFocusInput, 'dropdown-input-image-truck-focus': inputConfig?.dropdownImageInput?.withText && inputConfig?.dropdownImageInput?.url && inputConfig?.dropdownImageInput?.template === 'truck' && !inputConfig?.dropdownImageInput?.remove && isFocusInput, 'dropdown-input-image-trailer': inputConfig?.dropdownImageInput?.withText && inputConfig?.dropdownImageInput?.url && inputConfig?.dropdownImageInput?.template === 'trailer' && !inputConfig?.dropdownImageInput?.remove && !isFocusInput, 'dropdown-input-image-trailer-focus': inputConfig?.dropdownImageInput?.withText && inputConfig?.dropdownImageInput?.url && inputConfig?.dropdownImageInput?.template === 'trailer' && !inputConfig?.dropdownImageInput?.remove && isFocusInput, 'dropdown-input-image-color': inputConfig?.dropdownImageInput?.withText && (inputConfig?.dropdownImageInput?.url || inputConfig?.dropdownImageInput?.nameInitialsInsteadUrl) && inputConfig?.dropdownImageInput?.template === 'color', 'dropdown-input-image-user': inputConfig?.dropdownImageInput?.withText && !inputConfig?.hideAllItemsInInputDropdown && inputConfig?.dropdownImageInput?.template === 'user' && (inputConfig.selectedDropdown || (inputConfig.placeholder && isFocusInput) || getSuperControl?.value), 'dropdown-input-image-pm': inputConfig?.dropdownImageInput?.withText && !inputConfig?.hideAllItemsInInputDropdown && inputConfig?.dropdownImageInput?.template === 'pm' && (inputConfig.selectedDropdown || (inputConfig.placeholder && isFocusInput) || getSuperControl?.value), 'dropdown-input-image-without-text-transparent': inputConfig?.dropdownImageInput && !inputConfig?.dropdownImageInput?.withText && !isFocusInput, 'multiple-input-values': inputConfig?.multipleInputValues?.options?.length && !isFocusInput, 'disable-select-on-focus-out': !isFocusInput, 'hide-placeholder-in-multiple-placeholder-input': inputConfig?.multipleInputValues?.options?.length && isFocusInput, 'cursor-on-right-side': inputConfig?.inputCursorOnRightSide, 'merge-dropdown-body-with-input': inputConfig.mergeDropdownBodyWithInput, 'dispatch-dropdown': template === DropdownTemplateTypeEnum.SVGTEXT_DISPATCH_TEMPLATE, 'ca-font-bold text-uppercase': inputConfig.statusStyle, 'blue-dropdown': inputConfig.isBlueDropdown && getSuperControl?.valid && (inputConfig.isItemSelected || inputConfig.isDisplayingCustomPeriodRange), 'hide-input-value': template === DropdownTemplateTypeEnum.LOAD_DISPATCHES_TTD, }; } }