Skip to content

Commit ae6a7a7

Browse files
authored
Chore(ClipboardCopy): add tooltip to play icon (#11583)
* Chore(ClipboardCopy): add tooltip to play icon * renamed state variable and added a callback * added tooltip to code block examples
1 parent ece9e07 commit ae6a7a7

File tree

3 files changed

+75
-19
lines changed

3 files changed

+75
-19
lines changed
Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,36 @@
11
import React from 'react';
2-
import { ClipboardCopy, ClipboardCopyAction, Button } from '@patternfly/react-core';
2+
import { ClipboardCopy, ClipboardCopyAction, Button, Tooltip } from '@patternfly/react-core';
33
import PlayIcon from '@patternfly/react-icons/dist/esm/icons/play-icon';
44

5-
export const ClipboardCopyInlineCompactWithAdditionalAction: React.FunctionComponent = () => (
6-
<ClipboardCopy
7-
hoverTip="Copy"
8-
clickTip="Copied"
9-
variant="inline-compact"
10-
additionalActions={
11-
<ClipboardCopyAction>
12-
<Button variant="plain" hasNoPadding aria-label="Run in web terminal" icon={<PlayIcon />} />
13-
</ClipboardCopyAction>
14-
}
15-
>
16-
2.3.4-2-redhat
17-
</ClipboardCopy>
18-
);
5+
export const ClipboardCopyInlineCompactWithAdditionalAction: React.FunctionComponent = () => {
6+
const [isRunning, setisRunning] = React.useState(false);
7+
const runText: string = 'Run in web terminal';
8+
const doneRunText: string = 'Running in web terminal';
9+
return (
10+
<ClipboardCopy
11+
hoverTip="Copy"
12+
clickTip="Copied"
13+
variant="inline-compact"
14+
additionalActions={
15+
<ClipboardCopyAction>
16+
<Tooltip
17+
aria="none"
18+
aria-live="polite"
19+
content={isRunning ? doneRunText : runText}
20+
onTooltipHidden={() => setisRunning(false)}
21+
>
22+
<Button
23+
variant="plain"
24+
hasNoPadding
25+
aria-label="Run in web terminal"
26+
icon={<PlayIcon />}
27+
onClick={() => setisRunning(!isRunning)}
28+
/>
29+
</Tooltip>
30+
</ClipboardCopyAction>
31+
}
32+
>
33+
2.3.4-2-redhat
34+
</ClipboardCopy>
35+
);
36+
};

packages/react-core/src/components/CodeBlock/examples/CodeBlockBasic.tsx

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
import React from 'react';
2-
import { CodeBlock, CodeBlockAction, CodeBlockCode, ClipboardCopyButton, Button } from '@patternfly/react-core';
2+
import {
3+
CodeBlock,
4+
CodeBlockAction,
5+
CodeBlockCode,
6+
ClipboardCopyButton,
7+
Button,
8+
Tooltip
9+
} from '@patternfly/react-core';
310
import PlayIcon from '@patternfly/react-icons/dist/esm/icons/play-icon';
411

512
export const BasicCodeBlock: React.FunctionComponent = () => {
613
const [copied, setCopied] = React.useState(false);
14+
const [isRunning, setisRunning] = React.useState(false);
15+
const runText: string = 'Run in web terminal';
16+
const doneRunText: string = 'Running in web terminal';
717

818
const clipboardCopyFunc = (event, text) => {
919
navigator.clipboard.writeText(text.toString());
@@ -39,7 +49,19 @@ url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs`;
3949
</ClipboardCopyButton>
4050
</CodeBlockAction>
4151
<CodeBlockAction>
42-
<Button variant="plain" aria-label="Play icon" icon={<PlayIcon />} />
52+
<Tooltip
53+
aria="none"
54+
aria-live="polite"
55+
content={isRunning ? doneRunText : runText}
56+
onTooltipHidden={() => setisRunning(false)}
57+
>
58+
<Button
59+
variant="plain"
60+
aria-label="Run in web terminal"
61+
icon={<PlayIcon />}
62+
onClick={() => setisRunning(!isRunning)}
63+
/>
64+
</Tooltip>
4365
</CodeBlockAction>
4466
</React.Fragment>
4567
);

packages/react-core/src/components/CodeBlock/examples/CodeBlockExpandable.tsx

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,17 @@ import {
66
ClipboardCopyButton,
77
ExpandableSection,
88
ExpandableSectionToggle,
9-
Button
9+
Button,
10+
Tooltip
1011
} from '@patternfly/react-core';
1112
import PlayIcon from '@patternfly/react-icons/dist/esm/icons/play-icon';
1213

1314
export const ExpandableCodeBlock: React.FunctionComponent = () => {
1415
const [isExpanded, setIsExpanded] = React.useState(false);
1516
const [copied, setCopied] = React.useState(false);
17+
const [isRunning, setisRunning] = React.useState(false);
18+
const runText: string = 'Run in web terminal';
19+
const doneRunText: string = 'Running in web terminal';
1620

1721
const onToggle = (isExpanded) => {
1822
setIsExpanded(isExpanded);
@@ -60,7 +64,19 @@ url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs`;
6064
</ClipboardCopyButton>
6165
</CodeBlockAction>
6266
<CodeBlockAction>
63-
<Button variant="plain" aria-label="Play icon" icon={<PlayIcon />} />
67+
<Tooltip
68+
aria="none"
69+
aria-live="polite"
70+
content={isRunning ? doneRunText : runText}
71+
onTooltipHidden={() => setisRunning(false)}
72+
>
73+
<Button
74+
variant="plain"
75+
aria-label="Run in web terminal"
76+
icon={<PlayIcon />}
77+
onClick={() => setisRunning(!isRunning)}
78+
/>
79+
</Tooltip>
6480
</CodeBlockAction>
6581
</React.Fragment>
6682
);

0 commit comments

Comments
 (0)