import React from 'react'; import PropTypes from 'prop-types'; import Dropdown from 'react-bootstrap/es/Dropdown'; import MenuItem from 'react-bootstrap/es/MenuItem'; import { CopyToClipboard } from 'react-copy-to-clipboard'; export default class CopyDropdown extends React.Component { constructor(props) { super(props); // retrieve xss library from window this.xss = window.xss; this.generatePageUrl = this.generatePageUrl.bind(this); } showToolTip() { const buttonId = '#copyPagePathDropdown'; $(buttonId).tooltip('show'); setTimeout(() => { $(buttonId).tooltip('hide'); }, 1000); } generatePageUrl() { return (this.props.pageId == null) ? decodeURIComponent(window.location.pathname + window.location.search) : `${window.location.origin}/${this.props.pageId}`; } generateMarkdownLink() { return; } render() { const safePagePath = this.xss.process(this.props.pagePath); const url = this.generatePageUrl(); return (
Copy to clipboard
{/* Page path */}
Page path
{safePagePath}
{/* Parmanent Link */} { this.props.pageId && (
Parmanent link
{url}
)} {/* Page path + Parmanent Link */} { this.props.pageId && (
Page path and parmanent link
{safePagePath}

{url}
)} {/* Markdown Link */} { this.props.pageId && (
Markdown link
{`[${safePagePath}](${url})`}
)}
); } } CopyDropdown.propTypes = { pagePath: PropTypes.string.isRequired, pageId: PropTypes.string, buttonStyle: PropTypes.object, };