mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 21:22:12 +08:00

* update eslint, tsconfig + esbuild to handle new jsx transform * remove thing that breaks the new jsx transform * remove react imports * adjust grafana-icons build * is this the correct syntax? * try this * well this was much easier than expected... * change grafana-plugin-configs webpack config * fixes * fix lockfile * fix 2 more violations * use path.resolve instead of require.resolve * remove react import * fix react imports * more fixes * remove React import * remove import React from docs * remove another react import
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { useEffect, useState } from 'react';
|
|
|
|
import { AnnotationQuery, DataQuery, EventBus } from '@grafana/data';
|
|
import { selectors } from '@grafana/e2e-selectors';
|
|
|
|
import { AnnotationPicker } from './AnnotationPicker';
|
|
|
|
interface Props {
|
|
events: EventBus;
|
|
annotations: AnnotationQuery[];
|
|
onAnnotationChanged: (annotation: AnnotationQuery<DataQuery>) => void;
|
|
}
|
|
|
|
export const Annotations = ({ annotations, onAnnotationChanged, events }: Props) => {
|
|
const [visibleAnnotations, setVisibleAnnotations] = useState<AnnotationQuery[]>([]);
|
|
useEffect(() => {
|
|
setVisibleAnnotations(annotations.filter((annotation) => annotation.hide !== true));
|
|
}, [annotations]);
|
|
|
|
if (visibleAnnotations.length === 0) {
|
|
return null;
|
|
}
|
|
|
|
return (
|
|
<div data-testid={selectors.pages.Dashboard.SubMenu.Annotations.annotationsWrapper}>
|
|
{visibleAnnotations.map((annotation) => (
|
|
<AnnotationPicker
|
|
events={events}
|
|
annotation={annotation}
|
|
onEnabledChanged={onAnnotationChanged}
|
|
key={annotation.name}
|
|
/>
|
|
))}
|
|
</div>
|
|
);
|
|
};
|