import React, { useRef, forwardRef } from 'react'; import get from 'lodash/get'; import { IconCaretDown } from '@tabler/icons'; import Dropdown from 'components/Dropdown'; import { useDispatch } from 'react-redux'; import { updateRequestBodyMode } from 'providers/ReduxStore/slices/collections'; import { humanizeRequestBodyMode } from 'utils/collections'; import StyledWrapper from './StyledWrapper'; const RequestBodyMode = ({item, collection}) => { const dispatch = useDispatch(); const dropdownTippyRef = useRef(); const onDropdownCreate = (ref) => dropdownTippyRef.current = ref; const bodyMode = item.draft ? get(item, 'draft.request.body.mode') : get(item, 'request.body.mode'); const Icon = forwardRef((props, ref) => { return (
{humanizeRequestBodyMode(bodyMode)}
); }); const onModeChange = (value) => { dispatch(updateRequestBodyMode({ itemUid: item.uid, collectionUid: collection.uid, mode: value })); }; return(
} placement='bottom-end'>
Form
{ dropdownTippyRef.current.hide(); onModeChange('multipartForm'); }}> Multipart Form
{ dropdownTippyRef.current.hide(); onModeChange('formUrlEncoded'); }}> Form Url Encoded
Raw
{ dropdownTippyRef.current.hide(); onModeChange('json'); }}> JSON
{ dropdownTippyRef.current.hide(); onModeChange('xml'); }}> XML
{ dropdownTippyRef.current.hide(); onModeChange('text'); }}> TEXT
Other
{ dropdownTippyRef.current.hide(); onModeChange('none'); }}> No Body
); }; export default RequestBodyMode;