import React, { useMemo } from 'react';
import { Variant as BannerVariant } from '@leafygreen-ui/banner';
import { css, cx } from '@leafygreen-ui/emotion';
import { InlineDefinition } from './inline-definition';
import { Banner, Button } from './leafygreen';
const bannerStyle = css({
width: '100%',
});
const listStyle = css({
padding: 0,
margin: 0,
listStylePosition: 'inside',
});
const summaryStyles = css({
display: 'flex',
});
const actionButtonStyles = css({
marginLeft: 'auto',
});
function Summary({ messages }: { messages: string[] }): React.ReactElement {
if (messages.length === 1) {
return
{messages[0]}
;
}
if (messages.length === 2) {
return (
{messages.map((message, i) => (
- {message}
))}
);
}
const tooltipErrors = (
{messages.map((message, i) => (
- {message}
))}
);
const firstMessageNoDot = messages[0].endsWith('.')
? messages[0].slice(0, messages[0].length - 1)
: messages[0];
return (
{firstMessageNoDot}, and other {messages.length - 1} problems.
{' '}
View all
);
}
const BannerWithSummary: React.FunctionComponent<
{
messages: string | string[];
variant: BannerVariant;
['data-testid']?: string;
className?: string;
} & (
| { actionText: string; onAction(): void }
| { actionText?: never; onAction?: never }
)
> = ({
['data-testid']: dataTestId,
messages,
onAction,
actionText,
variant,
className,
}) => {
const _messages = useMemo(() => {
return !Array.isArray(messages) ? [messages] : messages;
}, [messages]);
return (
{onAction && actionText && (
)}
);
};
export const ErrorSummary: React.FunctionComponent<
{
className?: string;
errors: string | string[];
['data-testid']?: string;
} & (
| { actionText: string; onAction(): void }
| { actionText?: never; onAction?: never }
)
> = ({ className, errors, ...props }) => {
return (
);
};
export const WarningSummary: React.FunctionComponent<
{
className?: string;
warnings: string | string[];
['data-testid']?: string;
} & (
| { actionText: string; onAction(): void }
| { actionText?: never; onAction?: never }
)
> = ({ className, warnings, ...props }) => {
return (
);
};