ComparePathsTable.jsx 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 { subordinatedPages, pageContainer } = props;
  9. const { path } = pageContainer.state;
  10. // Dummy
  11. const newPagePath = 'huga';
  12. return (
  13. <table className="table table-bordered">
  14. <tbody>
  15. <tr>
  16. {/* TODO i18n */}
  17. <th className="w-50">元のパス</th>
  18. <th className="w-50">新しいパス</th>
  19. </tr>
  20. <tr>
  21. <td>
  22. <ul className="list-unstyled">
  23. {subordinatedPages.map((subordinatedPage) => {
  24. return (
  25. <li key={subordinatedPage._id}>
  26. <a href={subordinatedPage.path}>
  27. {subordinatedPage.path}
  28. </a>
  29. </li>
  30. );
  31. })}
  32. </ul>
  33. </td>
  34. <td>
  35. <ul className="list-unstyled">
  36. {subordinatedPages.map((subordinatedPage) => {
  37. const convertedPath = convertToNewAffiliationPath(path, newPagePath, subordinatedPage.path);
  38. return (
  39. <li key={subordinatedPage._id}>
  40. {convertedPath}
  41. </li>
  42. );
  43. })}
  44. </ul>
  45. </td>
  46. </tr>
  47. </tbody>
  48. </table>
  49. );
  50. }
  51. /**
  52. * Wrapper component for using unstated
  53. */
  54. const PageDuplicateModallWrapper = withUnstatedContainers(ComparePathsTable, [PageContainer]);
  55. ComparePathsTable.propTypes = {
  56. t: PropTypes.func.isRequired, // i18next
  57. pageContainer: PropTypes.instanceOf(PageContainer).isRequired,
  58. subordinatedPages: PropTypes.array.isRequired,
  59. };
  60. export default withTranslation()(PageDuplicateModallWrapper);