Skip to content

Commit b0192e2

Browse files
committed
Fixing copy-to-clipboard button in the token generator form.
1 parent 1fa86d4 commit b0192e2

File tree

1 file changed

+22
-24
lines changed

1 file changed

+22
-24
lines changed

src/components/forms/GenerateTokenForm/GenerateTokenForm.js

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import React, { useState } from 'react';
1+
import React, { useState, useRef } from 'react';
22
import PropTypes from 'prop-types';
33
import { FormattedMessage, injectIntl, defineMessages } from 'react-intl';
44
import { reduxForm, Field } from 'redux-form';
5-
import { OverlayTrigger, Tooltip, Row, Col } from 'react-bootstrap';
5+
import { Overlay, Tooltip, Row, Col } from 'react-bootstrap';
66
import { CopyToClipboard } from 'react-copy-to-clipboard';
77

88
import FormBox from '../../widgets/FormBox';
@@ -80,38 +80,36 @@ const GenerateTokenForm = ({
8080
intl: { formatMessage },
8181
}) => {
8282
const [copied, setCopied] = useState(false);
83+
const btnTarget = useRef(null);
84+
8385
return (
8486
<FormBox
8587
title={<FormattedMessage id="app.generateTokenForm.title" defaultMessage="Generate Application Token" />}
8688
type={submitSucceeded ? 'success' : undefined}
8789
footer={
8890
<div className="text-center">
8991
<TheButtonGroup>
90-
{lastToken &&
91-
(copied ? (
92-
<OverlayTrigger
93-
trigger={['hover', 'focus', 'click']}
94-
defaultShow={true}
95-
placement="bottom"
96-
onToggle={shown => !shown && setCopied(false)}
97-
overlay={
98-
<Tooltip id={lastToken}>
99-
<FormattedMessage id="app.generateTokenForm.copied" defaultMessage="Copied!" />
100-
</Tooltip>
101-
}>
102-
<Button variant="secondary" disabled>
103-
<Icon icon="clipboard-check" gapRight={2} fixedWidth />
104-
<FormattedMessage id="app.generateTokenForm.copyToClipboard" defaultMessage="Copy to Clipboard" />
105-
</Button>
106-
</OverlayTrigger>
107-
) : (
108-
<CopyToClipboard text={lastToken} onCopy={() => setCopied(true)}>
109-
<Button variant="info">
110-
<CopyIcon gapRight={2} fixedWidth />
92+
{lastToken && (
93+
<>
94+
<CopyToClipboard text={lastToken} onCopy={() => setCopied(!copied)}>
95+
<Button variant={copied ? 'secondary' : 'info'} ref={btnTarget}>
96+
{copied ? (
97+
<Icon icon="clipboard-check" gapRight={2} fixedWidth />
98+
) : (
99+
<CopyIcon gapRight={2} fixedWidth />
100+
)}
111101
<FormattedMessage id="app.generateTokenForm.copyToClipboard" defaultMessage="Copy to Clipboard" />
112102
</Button>
113103
</CopyToClipboard>
114-
))}
104+
<Overlay target={btnTarget.current} show={copied} placement="bottom">
105+
{props => (
106+
<Tooltip id="token-copied" {...props}>
107+
<FormattedMessage id="app.generateTokenForm.copied" defaultMessage="Copied!" />
108+
</Tooltip>
109+
)}
110+
</Overlay>
111+
</>
112+
)}
115113

116114
<SubmitButton
117115
id="generateToken"

0 commit comments

Comments
 (0)