import { Input, FieldValueList, Text, EmailDisplay, PhoneDisplay, URLDisplay, withConfiguration } from '@pega/cosmos-react-core'; import type { PConnFieldProps } from './PConnProps'; import './create-nonce'; import StyledPegaDxilMyTestTextWrapper from './styles'; // interface for props interface PegaDxilMyTestTextProps extends PConnFieldProps { // If any, enter additional props that only exist on TextInput here isTableFormatter?: boolean; formatter: string; variant?: any; } // interface for StateProps object interface StateProps { value: string; hasSuggestions: boolean; } export const formatExists = (formatterVal: string) => { const formatterValues = [ 'TextInput', 'WorkStatus', 'RichText', 'Email', 'Phone', 'URL', 'Operator' ]; let isformatter = false; if (formatterValues.includes(formatterVal)) { isformatter = true; } return isformatter; }; export const textFormatter = (formatter: string, value: string) => { let displayComponent: any = null; switch (formatter) { case 'TextInput': { displayComponent = value; break; } case 'Email': { displayComponent = ; break; } case 'Phone': { displayComponent = ; break; } case 'URL': { displayComponent = ( ); break; } // no default } return displayComponent; }; // props passed in combination of props from property panel (config.json) and run time props from Constellation // any default values in config.pros should be set in defaultProps at bottom of this file function PegaDxilMyTestText(props: PegaDxilMyTestTextProps) { const { getPConnect, value, placeholder, disabled = false, displayMode, readOnly = false, required = false, label, hideLabel = false, testId, isTableFormatter = false, variant = 'inline' } = props; const pConn = getPConnect(); const actions = pConn.getActionsApi(); const stateProps = pConn.getStateProps() as StateProps; const propName: string = stateProps.value; const { formatter } = props; const handleOnChange = (event: any) => { const { value: updatedValue } = event.target; actions.updateFieldValue(propName, updatedValue); }; if (displayMode === 'LABELS_LEFT' || displayMode === 'DISPLAY_ONLY') { let displayComp = value || ; if (isTableFormatter && formatExists(formatter)) { displayComp = textFormatter(formatter, value); } return displayMode === 'DISPLAY_ONLY' ? ( {displayComp} ) : ( ); } if (displayMode === 'STACKED_LARGE_VAL') { const isValDefined = typeof value !== 'undefined' && value !== ''; const val = isValDefined ? ( {value} ) : ( '' ); return ( ); } return ( ); }; export default withConfiguration(PegaDxilMyTestText);