PageContentFooter.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import React, { FC, memo } from 'react';
  2. import { Nullable, Ref } from '@growi/core';
  3. import dynamic from 'next/dynamic';
  4. import { MySkelton } from '~/components/MySkelton';
  5. import { IUser } from '../interfaces/user';
  6. const AuthorInfo = dynamic(() => import('./Navbar/AuthorInfo'), { ssr: false });
  7. type Props = {
  8. createdAt: Nullable<Date> | undefined, // TODO: check createdAt type
  9. updatedAt: Nullable<Date> | undefined, // TODO: check updatedAt type
  10. creator: any,
  11. revisionAuthor: Ref<IUser>,
  12. }
  13. export const PageContentFooter:FC<Props> = memo((props:Props):JSX.Element => {
  14. const {
  15. createdAt, updatedAt, creator, revisionAuthor,
  16. } = props;
  17. return (
  18. <div className="page-content-footer py-4 d-edit-none d-print-none">
  19. <div className="grw-container-convertible">
  20. <div className="page-meta">
  21. {createdAt === null || updatedAt === null ? (
  22. <>
  23. <MySkelton />
  24. <MySkelton />
  25. </>
  26. ) : (
  27. <>
  28. <AuthorInfo user={creator as IUser} date={createdAt} mode="create" locate="footer" />
  29. <AuthorInfo user={revisionAuthor as IUser} date={updatedAt} mode="update" locate="footer" />
  30. </>
  31. )}
  32. </div>
  33. </div>
  34. </div>
  35. );
  36. });
  37. PageContentFooter.displayName = 'PageContentFooter';