mirror of
https://github.com/apache/superset.git
synced 2026-04-28 04:25:07 +00:00
* Add tests for ErrorAlert * Add BasicErrorAlert tests * Add DatabaseErrorMessage tests * Add useRedux property * Finalize DatabaseErrorMessage tests * Add ErrorMessageWithStackTrace tests * Move getErrorMessageComponentRegistry test to dedicated directory * Clean up getErrorMessageComponentRegistry * Add IssueCode tests * Add tests for ParameterErrorMessage * Add tests for TimeoutErrorMessage * Fix linting issue
70 lines
2.2 KiB
TypeScript
70 lines
2.2 KiB
TypeScript
/**
|
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
* or more contributor license agreements. See the NOTICE file
|
|
* distributed with this work for additional information
|
|
* regarding copyright ownership. The ASF licenses this file
|
|
* to you under the Apache License, Version 2.0 (the
|
|
* "License"); you may not use this file except in compliance
|
|
* with the License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing,
|
|
* software distributed under the License is distributed on an
|
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
* KIND, either express or implied. See the License for the
|
|
* specific language governing permissions and limitations
|
|
* under the License.
|
|
*/
|
|
import React from 'react';
|
|
import { styled, supersetTheme } from '@superset-ui/core';
|
|
import Icon from '../Icon';
|
|
import { ErrorLevel } from './types';
|
|
|
|
const StyledContainer = styled.div<{ level: ErrorLevel }>`
|
|
display: flex;
|
|
flex-direction: row;
|
|
background-color: ${({ level, theme }) => theme.colors[level].light2};
|
|
border-radius: ${({ theme }) => theme.borderRadius}px;
|
|
border: 1px solid ${({ level, theme }) => theme.colors[level].base};
|
|
color: ${({ level, theme }) => theme.colors[level].dark2};
|
|
padding: ${({ theme }) => theme.gridUnit * 2}px;
|
|
margin-bottom: ${({ theme }) => theme.gridUnit}px;
|
|
width: 100%;
|
|
`;
|
|
|
|
const StyledContent = styled.div`
|
|
display: flex;
|
|
flex-direction: column;
|
|
margin-left: ${({ theme }) => theme.gridUnit * 2}px;
|
|
`;
|
|
|
|
const StyledTitle = styled.span`
|
|
font-weight: ${({ theme }) => theme.typography.weights.bold};
|
|
`;
|
|
|
|
interface BasicErrorAlertProps {
|
|
title: string;
|
|
body: string;
|
|
level: ErrorLevel;
|
|
}
|
|
|
|
export default function BasicErrorAlert({
|
|
body,
|
|
level,
|
|
title,
|
|
}: BasicErrorAlertProps) {
|
|
return (
|
|
<StyledContainer level={level} role="alert">
|
|
<Icon
|
|
name={level === 'error' ? 'error-solid' : 'warning-solid'}
|
|
color={supersetTheme.colors[level].base}
|
|
/>
|
|
<StyledContent>
|
|
<StyledTitle>{title}</StyledTitle>
|
|
<p>{body}</p>
|
|
</StyledContent>
|
|
</StyledContainer>
|
|
);
|
|
}
|