/* * Copyright OpenSearch Contributors * SPDX-License-Identifier: Apache-2.0 */ import { EuiButton, EuiFieldText, EuiFlexGroup, EuiFlexItem, EuiFormRow, EuiSpacer, EuiText, EuiTitle, } from '@elastic/eui'; import React from 'react'; import { HeaderItemType } from '../../Channels/types'; interface WebhookHeadersProps { headers: HeaderItemType[]; setHeaders: (headers: HeaderItemType[]) => void; type: 'header' | 'parameter'; } export function WebhookHeaders(props: WebhookHeadersProps) { const setHeader = ( key: string | null, value: string | null, index: number ) => { const header = props.headers[index]; const newHeaders = [...props.headers]; if (key !== null) header.key = key; else if (value !== null) header.value = value; newHeaders.splice(index, 1, header); props.setHeaders(newHeaders); }; return ( <>

{props.type === 'parameter' ? 'Query parameters' : 'Webhook headers'}

{props.headers.length === 0 && ( <> {`No ${props.type}s defined.`} )} {props.headers.map((header, i) => { return (
setHeader(e.target.value, null, i)} disabled={ props.type === 'header' && i === 0 && header.key === 'Content-Type' } // first header needs to be Content-Type /> setHeader(null, e.target.value, i)} /> { const newHeaders = [...props.headers]; newHeaders.splice(i, 1); props.setHeaders(newHeaders); }} disabled={ props.type === 'header' && i === 0 && header.key === 'Content-Type' } > {`Remove ${props.type}`}
); })} { props.setHeaders([...props.headers, { key: '', value: '' }]); }} > {`Add ${props.type}`} ); }