ComparePathsTable.jsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import { withUnstatedContainers } from './UnstatedUtils';
  5. import PageContainer from '../services/PageContainer';
  6. import { convertToNewAffiliationPath } from '../../../lib/util/path-utils';
  7. function ComparePathsTable(props) {
  8. const {
  9. subordinatedPages, pageContainer, newPagePath, t,
  10. } = props;
  11. const { path } = pageContainer.state;
  12. return (
  13. <table className="table table-bordered grw-compare-paths-table">
  14. <thead>
  15. <tr className="d-flex">
  16. <th className="w-50">{t('original_path')}</th>
  17. <th className="w-50">{t('new_path')}</th>
  18. </tr>
  19. </thead>
  20. <tbody className="overflow-auto d-block">
  21. {subordinatedPages.map((subordinatedPage) => {
  22. const convertedPath = convertToNewAffiliationPath(path, newPagePath, subordinatedPage.path);
  23. return (
  24. <tr key={subordinatedPage._id} className="d-flex">
  25. <td className="text-break w-50">
  26. <a href={subordinatedPage.path}>
  27. {subordinatedPage.path}
  28. </a>
  29. </td>
  30. <td className="text-break w-50">
  31. {convertedPath}
  32. </td>
  33. </tr>
  34. );
  35. })}
  36. </tbody>
  37. </table>
  38. );
  39. }
  40. /**
  41. * Wrapper component for using unstated
  42. */
  43. const PageDuplicateModallWrapper = withUnstatedContainers(ComparePathsTable, [PageContainer]);
  44. ComparePathsTable.propTypes = {
  45. t: PropTypes.func.isRequired, // i18next
  46. pageContainer: PropTypes.instanceOf(PageContainer).isRequired,
  47. subordinatedPages: PropTypes.array.isRequired,
  48. newPagePath: PropTypes.string.isRequired,
  49. };
  50. export default withTranslation()(PageDuplicateModallWrapper);