feat(explore): Add empty state to annotations (#20160)

* feat(explore): Add empty state to annotations

* Set line height for small empty state description

* Simplify code
This commit is contained in:
Kamil Gabryjelski 2022-05-31 14:30:06 +02:00 committed by GitHub
parent c8fe518a7b
commit 0ee1f492a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 1 deletions

View File

@ -106,6 +106,7 @@ const BigDescription = styled(Description)`
const SmallDescription = styled(Description)`
${({ theme }) => css`
margin-top: ${theme.gridUnit}px;
line-height: 1.2;
`}
`;

View File

@ -27,6 +27,7 @@ import {
getChartMetadataRegistry,
validateNonEmpty,
isValidExpression,
styled,
withTheme,
} from '@superset-ui/core';
@ -43,6 +44,7 @@ import {
} from 'src/modules/AnnotationTypes';
import PopoverSection from 'src/components/PopoverSection';
import ControlHeader from 'src/explore/components/ControlHeader';
import { EmptyStateSmall } from 'src/components/EmptyState';
const AUTOMATIC_COLOR = '';
@ -98,6 +100,35 @@ const defaultProps = {
close: () => {},
};
const NotFoundContentWrapper = styled.div`
&& > div:first-child {
padding-left: 0;
padding-right: 0;
}
`;
const NotFoundContent = () => (
<NotFoundContentWrapper>
<EmptyStateSmall
title={t('No annotation layers')}
description={
<span>
{t('Add an annotation layer')}{' '}
<a
href="/annotationlayermodelview/list"
target="_blank"
rel="noopener noreferrer"
>
{t('here')}
</a>
.
</span>
}
image="empty.svg"
/>
</NotFoundContentWrapper>
);
class AnnotationLayer extends React.PureComponent {
constructor(props) {
super(props);
@ -416,6 +447,7 @@ class AnnotationLayer extends React.PureComponent {
onChange={this.handleValue}
validationErrors={!value ? ['Mandatory'] : []}
optionRenderer={this.renderOption}
notFoundContent={<NotFoundContent />}
/>
);
}
@ -760,9 +792,10 @@ class AnnotationLayer extends React.PureComponent {
ariaLabel={t('Annotation source type')}
hovered
description={t('Choose the source of your annotations')}
label={t('Annotation Source')}
label={t('Annotation source')}
name="annotation-source-type"
options={supportedSourceTypes}
notFoundContent={<NotFoundContent />}
value={sourceType}
onChange={this.handleAnnotationSourceType}
validationErrors={!sourceType ? [t('Mandatory')] : []}

View File

@ -53,6 +53,7 @@ const propTypes = {
placeholder: PropTypes.string,
filterOption: PropTypes.func,
tokenSeparators: PropTypes.arrayOf(PropTypes.string),
notFoundContent: PropTypes.object,
// ControlHeader props
label: PropTypes.string,
@ -179,6 +180,7 @@ export default class SelectControl extends React.PureComponent {
showHeader,
value,
tokenSeparators,
notFoundContent,
// ControlHeader props
description,
renderTrigger,
@ -245,6 +247,7 @@ export default class SelectControl extends React.PureComponent {
sortComparator: this.props.sortComparator,
value: getValue(),
tokenSeparators,
notFoundContent,
};
return (