DataSourcesList.tsx 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // Libraries
  2. import React, { PureComponent } from 'react';
  3. import classNames from 'classnames';
  4. // Components
  5. import DataSourcesListItem from './DataSourcesListItem';
  6. // Types
  7. import { DataSourceSettings } from '@grafana/ui';
  8. import { LayoutMode, LayoutModes } from '../../core/components/LayoutSelector/LayoutSelector';
  9. export interface Props {
  10. dataSources: DataSourceSettings[];
  11. layoutMode: LayoutMode;
  12. }
  13. export class DataSourcesList extends PureComponent<Props> {
  14. render() {
  15. const { dataSources, layoutMode } = this.props;
  16. const listStyle = classNames({
  17. 'card-section': true,
  18. 'card-list-layout-grid': layoutMode === LayoutModes.Grid,
  19. 'card-list-layout-list': layoutMode === LayoutModes.List,
  20. });
  21. return (
  22. <section className={listStyle}>
  23. <ol className="card-list">
  24. {dataSources.map((dataSource, index) => {
  25. return <DataSourcesListItem dataSource={dataSource} key={`${dataSource.id}-${index}`} />;
  26. })}
  27. </ol>
  28. </section>
  29. );
  30. }
  31. }
  32. export default DataSourcesList;