import { useEffect, useState } from 'react'; import { TextField } from '@mui/material'; import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map'; import { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps'; import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils'; import StyledPegaDxilMyIntegerWrapper from './styles'; interface PegaDxilMyIntegerProps extends PConnFieldProps { // If any, enter additional props that only exist on this componentName } // Duplicated runtime code from React SDK // props passed in combination of props from property panel (config.json) and run time props from Constellation export default function PegaDxilMyInteger(props: PegaDxilMyIntegerProps) { // Get emitted components from map (so we can get any override that may exist) const TextInput = getComponentFromMap('TextInput'); const FieldValueList = getComponentFromMap('FieldValueList'); const { getPConnect, label, required, disabled, value = '', validatemessage, status, readOnly, testId, helperText, displayMode, hideLabel, placeholder } = props; const pConn = getPConnect(); const actions = pConn.getActionsApi(); const propName = (pConn.getStateProps() as any).value; const helperTextToDisplay = validatemessage || helperText; const [inputValue, setInputValue] = useState(''); useEffect(() => { setInputValue(value); }, [value]); if (displayMode === 'DISPLAY_ONLY') { return ; } if (displayMode === 'STACKED_LARGE_VAL') { return ; } if (readOnly) { return ; } let testProp = {}; testProp = { 'data-test-id': testId }; function intOnChange(event) { // console.log(`Integer intOnChange inValue: ${event.target.value}`); // Disallow "." and "," (separators) since this is an integer field // Mimics Pega Integer behavior (where separator characters are "eaten" if they're typed) const disallowedChars = ['.', ',']; const theAttemptedValue = event.target.value; const lastChar = theAttemptedValue.slice(-1); if (disallowedChars.includes(lastChar)) { event.target.value = theAttemptedValue.slice(0, -1); } // Pass through to the Constellation change handler setInputValue(event.target.value); } function handleBlur() { handleEvent(actions, 'changeNblur', propName, inputValue); } return ( ); }