diff --git a/webapp/src/components/shareBoardComponent.scss b/webapp/src/components/shareBoardComponent.scss index b6669e0d2..5c1ce6850 100644 --- a/webapp/src/components/shareBoardComponent.scss +++ b/webapp/src/components/shareBoardComponent.scss @@ -1,13 +1,27 @@ .ShareBoardComponent { display: flex; flex-direction: column; + padding: 5px; > .row { display: flex; flex-direction: row; + align-items: center; + margin-bottom: 10px; + } + + > .row:last-child { + margin-bottom: 0; } .spacer { flex-grow: 1; } + + input.shareUrl { + flex-grow: 1; + border: solid 1px #cccccc; + margin-right: 5px; + padding: 5px; + } } \ No newline at end of file diff --git a/webapp/src/components/shareBoardComponent.tsx b/webapp/src/components/shareBoardComponent.tsx index 0d8c1816e..fa8d8d317 100644 --- a/webapp/src/components/shareBoardComponent.tsx +++ b/webapp/src/components/shareBoardComponent.tsx @@ -3,6 +3,8 @@ import React from 'react' import {injectIntl, IntlShape} from 'react-intl' +import {Utils} from '../utils' + import Button from '../widgets/buttons/button' import Switch from '../widgets/switch' @@ -16,6 +18,7 @@ type Props = { type State = { isShared?: boolean + wasCopied?: boolean } class ShareBoardComponent extends React.PureComponent { @@ -24,6 +27,10 @@ class ShareBoardComponent extends React.PureComponent { render(): JSX.Element { const {intl} = this.props + const readToken = '123' + const shareUrl = new URL(window.location.toString()) + shareUrl.searchParams.set('r', readToken) + return ( { {this.state.isShared &&
- + +
} diff --git a/webapp/src/utils.ts b/webapp/src/utils.ts index 0409f6fa9..36629baa2 100644 --- a/webapp/src/utils.ts +++ b/webapp/src/utils.ts @@ -208,6 +208,29 @@ class Utils { static arrayMove(arr: any[], srcIndex: number, destIndex: number): void { arr.splice(destIndex, 0, arr.splice(srcIndex, 1)[0]) } + + // Clipboard + + static copyTextToClipboard(text: string): boolean { + const textField = document.createElement('textarea') + textField.innerText = text + textField.style.position = 'fixed' + textField.style.opacity = '0' + + document.body.appendChild(textField) + textField.select() + + let result = false + try { + result = document.execCommand('copy') + } catch (err) { + Utils.logError(`copyTextToClipboard ERROR: ${err}`) + result = false + } + textField.remove() + + return result + } } export {Utils}