import { TimePicker } from '@mui/x-date-pickers/TimePicker'; // import AccessTimeIcon from '@mui/icons-material/AccessTime'; import dayjs from 'dayjs'; import handleEvent from '@pega/react-sdk-components/lib/components/helpers/event-utils'; import { getComponentFromMap } from '@pega/react-sdk-components/lib/bridge/helpers/sdk_component_map'; import type { PConnFieldProps } from '@pega/react-sdk-components/lib/types/PConnProps'; interface TimeProps extends PConnFieldProps { // If any, enter additional props that only exist on Time here } export default function Time(props: TimeProps) { // Get emitted components from map (so we can get any override that may exist) const FieldValueList = getComponentFromMap('FieldValueList'); const TextInput = getComponentFromMap('TextInput'); const { getPConnect, label, required, disabled, value = '', validatemessage, status, readOnly, helperText, displayMode, hideLabel, testId } = props; const helperTextToDisplay = validatemessage || helperText; const pConn = getPConnect(); const actions = pConn.getActionsApi(); const propName = (pConn.getStateProps() as any).value; if (displayMode === 'DISPLAY_ONLY') { return ; } if (displayMode === 'STACKED_LARGE_VAL') { return ; } if (readOnly) { return ; } const testProps: any = { 'data-test-id': testId }; const handleChange = date => { const theValue = date && date.isValid() ? date.format('HH:mm:ss') : null; handleEvent(actions, 'changeNblur', propName, theValue); }; let timeValue: any = null; if (value && Object.keys(value).length) { const timeArray = value.split(':').map(itm => Number(itm)); timeValue = dayjs().hour(timeArray[0]).minute(timeArray[1]); } // // TODO: Keyboard doesn't work in the minute field, it updates one digit then jump to am/pm field // try an older version of the lib or use DateTimePicker // return ( } // fullWidth disabled={disabled} minutesStep={5} label={label} // autoOk // mask='__:__ _m' format='hh:mm a' value={timeValue} onChange={handleChange} slotProps={{ textField: { variant: 'outlined', placeholder: 'hh:mm am', required, error: status === 'error', helperText: helperTextToDisplay, size: 'small', InputProps: { ...testProps } } }} /> ); }