PluginList.tsx 884 B

1234567891011121314151617181920212223242526272829303132
  1. import React, { FC } from 'react';
  2. import classNames from 'classnames';
  3. import PluginListItem from './PluginListItem';
  4. import { PluginMeta } from '@grafana/ui';
  5. import { LayoutMode, LayoutModes } from '../../core/components/LayoutSelector/LayoutSelector';
  6. interface Props {
  7. plugins: PluginMeta[];
  8. layoutMode: LayoutMode;
  9. }
  10. const PluginList: FC<Props> = props => {
  11. const { plugins, layoutMode } = props;
  12. const listStyle = classNames({
  13. 'card-section': true,
  14. 'card-list-layout-grid': layoutMode === LayoutModes.Grid,
  15. 'card-list-layout-list': layoutMode === LayoutModes.List,
  16. });
  17. return (
  18. <section className={listStyle}>
  19. <ol className="card-list">
  20. {plugins.map((plugin, index) => {
  21. return <PluginListItem plugin={plugin} key={`${plugin.name}-${index}`} />;
  22. })}
  23. </ol>
  24. </section>
  25. );
  26. };
  27. export default PluginList;