mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
| import { css } from '@emotion/css';
 | |
| import React from 'react';
 | |
| 
 | |
| import { DataSourceInstanceSettings, DataSourceJsonData, GrafanaTheme2 } from '@grafana/data';
 | |
| import { DataSourceRef } from '@grafana/schema';
 | |
| import { useStyles2 } from '@grafana/ui';
 | |
| 
 | |
| export interface DataSourceLogoProps {
 | |
|   dataSource: DataSourceInstanceSettings<DataSourceJsonData> | string | DataSourceRef | null | undefined;
 | |
| }
 | |
| 
 | |
| export function DataSourceLogo(props: DataSourceLogoProps) {
 | |
|   const { dataSource } = props;
 | |
|   const styles = useStyles2(getStyles);
 | |
| 
 | |
|   if (!dataSource) {
 | |
|     return null;
 | |
|   }
 | |
| 
 | |
|   if (typeof dataSource === 'string') {
 | |
|     return null;
 | |
|   }
 | |
| 
 | |
|   if ('name' in dataSource) {
 | |
|     return (
 | |
|       <img
 | |
|         className={styles.pickerDSLogo}
 | |
|         alt={`${dataSource.meta.name} logo`}
 | |
|         src={dataSource.meta.info.logos.small}
 | |
|       ></img>
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   return null;
 | |
| }
 | |
| 
 | |
| export function DataSourceLogoPlaceHolder() {
 | |
|   const styles = useStyles2(getStyles);
 | |
|   return <div className={styles.pickerDSLogo}></div>;
 | |
| }
 | |
| 
 | |
| function getStyles(theme: GrafanaTheme2) {
 | |
|   return {
 | |
|     pickerDSLogo: css`
 | |
|       height: 20px;
 | |
|       width: 20px;
 | |
|     `,
 | |
|   };
 | |
| }
 |