/** * WordPress dependencies */ import { BaseControl, Button } from '@safe-wordpress/components'; import { _x } from '@safe-wordpress/i18n'; /** * External dependencies */ import type { PostTypeName, WebhookHeader } from '@nelio-content/types'; /** * Internal dependencies */ import { TextFieldControl } from '../text-field-control'; export type HeadersFieldControlProps = { readonly label: string; readonly items: ReadonlyArray< WebhookHeader >; readonly hidePlaceholders?: boolean; readonly type?: PostTypeName; readonly onChange: ( value: ReadonlyArray< WebhookHeader > ) => void; }; export const HeadersFieldControl = ( props: HeadersFieldControlProps ): JSX.Element => { const { label, items, hidePlaceholders, type, onChange } = props; return (
{ items.map( ( item, index ) => ( onChange( [ ...items ].map( ( i, idx ) => idx === index ? value : i ) ) } onRemove={ () => onChange( [ ...items ].filter( ( _: WebhookHeader, idx: number ) => idx !== index ) ) } /> ) ) }
); }; type HeaderControlProps = { readonly item: WebhookHeader; readonly hidePlaceholders?: boolean; readonly type?: PostTypeName; readonly onChange: ( value: WebhookHeader ) => void; readonly onRemove: () => void; }; const HeaderControl = ( props: HeaderControlProps ): JSX.Element => { const { item, hidePlaceholders, type, onChange, onRemove } = props; return (
onChange( { ...item, key: value } ) } /> onChange( { ...item, value } ) } />
); };