import React, { useState, useEffect, useContext } from 'react';
import { Toast } from '@cloudflare/component-toast';
import FormContext from './FormContext';
import { Trans } from '@cloudflare/intl-react';
let count = 0;
export type Props = {
errors?: object;
showErrors?: boolean;
children?: React.ReactNode;
};
export default function ErrorSummmary({
errors,
showErrors = true,
children
}: Props) {
const [errorId] = useState(() => `cf-form-error${++count}`);
const context = useContext(FormContext);
const errorCount = errors
? [...Object.values(errors)].filter(Boolean).length
: 0;
const hasErrors = showErrors && errorCount > 0;
useEffect(() => {
if (hasErrors) {
context.setError(context.formName, errorId);
} else {
context.removeError(context.formName);
}
return () => context.removeError(errorId);
}, [hasErrors]);
return hasErrors ? (
{children ?? (
)}
) : (
);
}