SchemaVersion.tsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React from 'react';
  2. import { SchemaSubject } from 'generated-sources';
  3. import JSONEditor from 'components/common/JSONEditor/JSONEditor';
  4. interface SchemaVersionProps {
  5. version: SchemaSubject;
  6. }
  7. const SchemaVersion: React.FC<SchemaVersionProps> = ({
  8. version: { version, id, schema },
  9. }) => {
  10. const [isOpen, setIsOpen] = React.useState(false);
  11. const toggleIsOpen = () => setIsOpen(!isOpen);
  12. return (
  13. <tr>
  14. <td>
  15. <span
  16. className="icon has-text-link is-size-7 is-small is-clickable"
  17. onClick={toggleIsOpen}
  18. aria-hidden
  19. >
  20. <i className={`fas fa-${isOpen ? 'minus' : 'plus'}`} />
  21. </span>
  22. </td>
  23. <td>{version}</td>
  24. <td>{id}</td>
  25. <td
  26. className="has-text-overflow-ellipsis is-family-code"
  27. style={{ width: '100%', maxWidth: 0 }}
  28. >
  29. {isOpen ? (
  30. <JSONEditor
  31. isFixedHeight
  32. name="schema"
  33. value={JSON.stringify(JSON.parse(schema), null, '\t')}
  34. setOptions={{
  35. showLineNumbers: false,
  36. maxLines: 40,
  37. }}
  38. readOnly
  39. />
  40. ) : (
  41. <span>{schema}</span>
  42. )}
  43. </td>
  44. </tr>
  45. );
  46. };
  47. export default SchemaVersion;