import React from 'react'; import { Box, Flex, Input, Center, InputGroup, InputRightElement, Tag, TagLabel, TagRightIcon, Select, Textarea, Switch, Code, } from '@chakra-ui/react'; import { FaRegClone, FaRegEye, FaRegEyeSlash, FaPlus, FaTimes, } from 'react-icons/fa'; import { ArrayInputOperations, ArrayInputType, SelectInputType, HiddenInputType, TextInputType, TextAreaInputType, SwitchInputType, } from '../constants'; import { copyTextToClipboard } from '../utils'; const InputField = ({ inputType, envVariables, setEnvVariables, fieldVisibility, setFieldVisibility, ...downshiftProps }: any) => { const props = { size: 'sm', ...downshiftProps, }; const [inputFieldVisibility, setInputFieldVisibility] = React.useState< Record >({ ROLES: false, DEFAULT_ROLES: false, PROTECTED_ROLES: false, ALLOWED_ORIGINS: false, }); const [inputData, setInputData] = React.useState>({ ROLES: '', DEFAULT_ROLES: '', PROTECTED_ROLES: '', ALLOWED_ORIGINS: '', }); const updateInputHandler = ( type: string, operation: any, role: string = '' ) => { if (operation === ArrayInputOperations.APPEND) { if (inputData[type] !== '') { setEnvVariables({ ...envVariables, [type]: [...envVariables[type], inputData[type]], }); setInputData({ ...inputData, [type]: '' }); } setInputFieldVisibility({ ...inputFieldVisibility, [type]: false }); } if (operation === ArrayInputOperations.REMOVE) { let updatedEnvVars = envVariables[type].filter( (item: string) => item !== role ); setEnvVariables({ ...envVariables, [type]: updatedEnvVars, }); } }; if (Object.values(TextInputType).includes(inputType)) { return ( setEnvVariables({ ...envVariables, [inputType]: event.target.value, }) } /> } cursor="pointer" onClick={() => copyTextToClipboard(envVariables[inputType])} /> ); } if (Object.values(HiddenInputType).includes(inputType)) { return ( setEnvVariables({ ...envVariables, [inputType]: event.target.value, }) } type={!fieldVisibility[inputType] ? 'password' : 'text'} /> {fieldVisibility[inputType] ? (
setFieldVisibility({ ...fieldVisibility, [inputType]: false, }) } >
) : (
setFieldVisibility({ ...fieldVisibility, [inputType]: true, }) } >
)}
copyTextToClipboard(envVariables[inputType])} >
} />
); } if (Object.values(ArrayInputType).includes(inputType)) { return ( {envVariables[inputType].map((role: string, index: number) => ( {role} updateInputHandler( inputType, ArrayInputOperations.REMOVE, role ) } /> ))} {inputFieldVisibility[inputType] ? ( { setInputData({ ...inputData, [inputType]: e.target.value }); }} onBlur={() => updateInputHandler(inputType, ArrayInputOperations.APPEND) } onKeyPress={(event) => { if (event.key === 'Enter') { updateInputHandler(inputType, ArrayInputOperations.APPEND); } }} /> ) : ( setInputFieldVisibility({ ...inputFieldVisibility, [inputType]: true, }) } > )} ); } if (Object.values(SelectInputType).includes(inputType)) { return ( ); } if (Object.values(TextAreaInputType).includes(inputType)) { return (