import { ADDITIONAL_PROPERTY_FLAG, type FormContextType, type RJSFSchema, type StrictRJSFSchema, TranslatableString, type WrapIfAdditionalTemplateProps, } from "@rjsf/utils"; import { useState } from "react"; /** The `WrapIfAdditional` component is used by the `FieldTemplate` to rename, or remove properties that are * part of an `additionalProperties` part of a schema. * * @param props - The `WrapIfAdditionalProps` for this component */ export default function WrapIfAdditionalTemplate< T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any, >(props: WrapIfAdditionalTemplateProps) { const { id, classNames, style, disabled, label, onKeyChange, onDropPropertyClick, readonly, required, schema, children, uiSchema, registry, } = props; const { templates, translateString } = registry; // Button templates are not overridden in the uiSchema const { RemoveButton } = templates.ButtonTemplates; const keyLabel = translateString(TranslatableString.KeyLabel, [label]); const additional = ADDITIONAL_PROPERTY_FLAG in schema; const [expanded, setExpanded] = useState(true); if (!additional) { return (
{children}
); } return (
onKeyChange(event.target.value)} defaultValue={label} />
{expanded && (
{children}
)}
); }