import React from 'react'; import PropTypes from 'prop-types'; import { Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Tooltip, } from 'reactstrap'; 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.state = { dropdownOpen: false, tooltipOpen: false, }; this.toggle = this.toggle.bind(this); this.showToolTip = this.showToolTip.bind(this); this.generatePageUrl = this.generatePageUrl.bind(this); } toggle() { this.setState({ dropdownOpen: !this.state.dropdownOpen }); } showToolTip() { this.setState({ tooltipOpen: true }); setTimeout(() => { this.setState({ tooltipOpen: false }); }, 1000); } generatePageUrl() { return (this.props.pageId == null) ? decodeURIComponent(window.location.pathname + window.location.search) : `${window.location.origin}/${this.props.pageId}`; } generateMarkdownLink() { return; } render() { const { t } = this.props; const safePagePath = this.xss.process(this.props.pagePath); const url = this.generatePageUrl(); return ( <>
{ t('copy_to_clipboard.Copy to clipboard') }
{/* Page path */}
{ t('copy_to_clipboard.Page path') }
{safePagePath}
{/* Parmanent Link */} { this.props.pageId && (
{ t('copy_to_clipboard.Parmanent link') }
{url}
)} {/* Page path + Parmanent Link */} { this.props.pageId && (
{ t('copy_to_clipboard.Page path and parmanent link') }
{safePagePath}

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