Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. // noinspection ES6CheckImport
  2. import PropTypes from 'prop-types';
  3. import React, {useState} from 'react';
  4. import {CopyToClipboard} from 'react-copy-to-clipboard';
  5. import IconButton from '@material-ui/core/IconButton';
  6. import CopyIcon from '@material-ui/icons/FileCopy';
  7. import Snackbar from '@material-ui/core/Snackbar';
  8. import makeStyles from '@material-ui/core/styles/makeStyles';
  9.  
  10. const useStyles = makeStyles(theme => ({
  11. copyClipButton: {
  12. float: 'right'
  13. },
  14. code: {
  15. '& pre': {
  16. padding: theme.spacing(2),
  17. overflow: 'auto',
  18. overflowY: 'hidden',
  19. background: '#333',
  20. color: '#fff',
  21. borderRadius: '4px',
  22. '& code': {
  23. lineHeight: 2.5
  24. }
  25. },
  26. },
  27. code2: {
  28. '& pre': {
  29. padding: theme.spacing(1),
  30. overflow: 'auto',
  31. overflowY: 'hidden',
  32. background: '#eee',
  33. color: '#333',
  34. borderRadius: '4px',
  35. '& code': {
  36. lineHeight: 2.5
  37. }
  38. },
  39. }
  40. }));
  41.  
  42. export const Code = (props) => {
  43. const classes = useStyles();
  44. const [openCopyMessage, setOpenCopyMessage] = useState(false);
  45. const {codeText, enableCopy, color} = props;
  46. return <div className={color === 'secondary' ? classes.code2 : classes.code}>
  47. {enableCopy ? <Snackbar
  48. anchorOrigin={{vertical: 'top', horizontal: 'center',}}
  49. open={openCopyMessage}
  50. autoHideDuration={2000}
  51. onClose={() => setOpenCopyMessage(false)}
  52. ContentProps={{'aria-describedby': 'message-id',}}
  53. message={<span id="message-id">Selector Copied!</span>}/> : null}
  54. {enableCopy ? <CopyToClipboard text={codeText} onCopy={() => setOpenCopyMessage(true)}>
  55. <IconButton className={classes.copyClipButton} aria-label="Copy to clipboard">
  56. <CopyIcon/>
  57. </IconButton>
  58. </CopyToClipboard> : null}
  59. <pre><code>{codeText}</code></pre>
  60. </div>
  61. };
  62.  
  63. Code.propTypes = {
  64. codeText: PropTypes.string.isRequired,
  65. enableCopy: PropTypes.boolean,
  66. color: PropTypes.string
  67. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement