InstalledPluginTable.jsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { useTranslation } from 'react-i18next';
  4. import AdminHomeContainer from '~/client/services/AdminHomeContainer';
  5. import { withUnstatedContainers } from '../../UnstatedUtils';
  6. const InstalledPluginTable = (props) => {
  7. const { t } = useTranslation();
  8. const { adminHomeContainer } = props;
  9. const { installedPlugins } = adminHomeContainer.state;
  10. if (installedPlugins == null) {
  11. return <></>;
  12. }
  13. return (
  14. <table data-testid="admin-installed-plugin-table" className="table table-bordered">
  15. <thead>
  16. <tr>
  17. <th className="text-center">{t('admin:admin_top.package_name')}</th>
  18. <th className="text-center">{t('admin:admin_top.specified_version')}</th>
  19. <th className="text-center">{t('admin:admin_top.installed_version')}</th>
  20. </tr>
  21. </thead>
  22. <tbody>
  23. {adminHomeContainer.state.installedPlugins.map((plugin) => {
  24. return (
  25. <tr key={plugin.name}>
  26. <td>{plugin.name}</td>
  27. <td data-hide-in-vrt className="text-center">{plugin.requiredVersion}</td>
  28. <td data-hide-in-vrt className="text-center">{plugin.installedVersion}</td>
  29. </tr>
  30. );
  31. })}
  32. </tbody>
  33. </table>
  34. );
  35. };
  36. InstalledPluginTable.propTypes = {
  37. adminHomeContainer: PropTypes.instanceOf(AdminHomeContainer).isRequired,
  38. };
  39. /**
  40. * Wrapper component for using unstated
  41. */
  42. const InstalledPluginTableWrapper = withUnstatedContainers(InstalledPluginTable, [AdminHomeContainer]);
  43. export default InstalledPluginTableWrapper;