Skip to content

Commit 9b5cfee

Browse files
committed
FIX: Clickable elements should have a tooltip.
See #285 and #308.
1 parent 896233d commit 9b5cfee

File tree

6 files changed

+51
-29
lines changed

6 files changed

+51
-29
lines changed

frontend/src/components/BrowseTools.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ function BrowseTools({id, closable, openable, editable, focusable = true}) {
4444
overlay={<Tooltip id="tooltip-focus">Focus on this document</Tooltip>}
4545
>
4646
<Link to={`../${id}`} className="icon focus">
47-
<Bookmark title="Focus on this document" />
47+
<Bookmark />
4848
</Link>
4949
</OverlayTrigger>
5050
}

frontend/src/components/FragmentComment.jsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ function FragmentComment({ children, setHighlightedText }) {
3131
}
3232
}
3333
className="fragment"
34-
title="Highlight in document"
3534
>
3635
<span className="citation">{citation}</span>
3736
{commentParts}

frontend/src/components/License.jsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { OverlayTrigger, Tooltip } from 'react-bootstrap';
2+
13
function License({ license }) {
24
if (license === 'Public domain') return (
35
<div className="license">
@@ -8,9 +10,11 @@ function License({ license }) {
810
let [license_name] = /(BY[\w-]*)/i.exec(license_uri) || [];
911
if (license_name) return (
1012
<div className="license">
11-
<a href={license_uri}>
12-
<img src= {`./license/cc.${license_name.toLowerCase()}.svg`} alt={`CC-${license_name.toUpperCase()}`} style={{height: '2em'}}/>
13-
</a>
13+
<OverlayTrigger overlay={<Tooltip>Consult license clauses</Tooltip>} >
14+
<a href={license_uri}>
15+
<img src= {`./license/cc.${license_name.toLowerCase()}.svg`} alt={`CC-${license_name.toUpperCase()}`} style={{height: '2em'}}/>
16+
</a>
17+
</OverlayTrigger>
1418
</div>
1519
);
1620
return (

frontend/src/components/Menu.jsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,23 @@ import Row from 'react-bootstrap/Row';
77
import Form from 'react-bootstrap/Form';
88
import Dropdown from 'react-bootstrap/Dropdown';
99
import { Link } from 'react-router-dom';
10+
import { OverlayTrigger, Tooltip } from 'react-bootstrap';
1011
import SignOutAction from '../menu-items/SignOutAction';
1112

1213
function Menu({backend, user, setUser}) {
1314
return (
1415
<Navbar bg="dark">
1516
<Container>
1617
<Navbar.Brand>
17-
<Link to="/">
18-
<img
19-
src="/logo.png"
20-
height="30"
21-
alt="Index"
22-
/>
23-
</Link>
18+
<OverlayTrigger overlay={<Tooltip>Consult my bookshelf</Tooltip>} placement="bottom">
19+
<Link to="/">
20+
<img
21+
src="/logo.png"
22+
height="30"
23+
alt="Index"
24+
/>
25+
</Link>
26+
</OverlayTrigger>
2427
</Navbar.Brand>
2528
<Authentication {...{backend, user, setUser}} />
2629
</Container>

frontend/src/components/Metadata.jsx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import '../styles/Metadata.css';
22

33
import { useEffect, useState } from 'react';
44
import { parse, stringify } from 'yaml';
5+
import { OverlayTrigger, Tooltip } from 'react-bootstrap';
56

67
function Metadata({metadata = {}, editable, backend, setLastUpdate}) {
78
const [beingEdited, setBeingEdited] = useState(false);
@@ -54,11 +55,8 @@ function Metadata({metadata = {}, editable, backend, setLastUpdate}) {
5455

5556
if (!beingEdited) {
5657
let {dc_title, dc_spatial, dc_creator, dc_translator, dc_isPartOf, dc_issued, dc_language} = editedMetadata;
57-
let attributes = (editable)
58-
? {className: 'editable metadata', onClick: handleClick, title: 'Edit metadata...'}
59-
: {};
60-
return (
61-
<span {...attributes}>
58+
let formattedMetadata = (
59+
<>
6260
<span className="work">
6361
{getCaption({dc_title, dc_spatial})} {format(dc_creator, '(', ')')},
6462
</span>
@@ -67,6 +65,18 @@ function Metadata({metadata = {}, editable, backend, setLastUpdate}) {
6765
{dc_isPartOf ? <i>{dc_isPartOf}, </i> : ''}
6866
{dc_issued ? `${new Date(dc_issued.toString()).getFullYear()}` : ''}
6967
</span>
68+
</>
69+
);
70+
if (editable) return (
71+
<OverlayTrigger overlay={<Tooltip>Edit metadata...</Tooltip>} >
72+
<span className="editable metadata" onClick={handleClick} >
73+
{formattedMetadata}
74+
</span>
75+
</OverlayTrigger>
76+
);
77+
return (
78+
<span>
79+
{formattedMetadata}
7080
</span>
7181
);
7282
}

frontend/src/components/VideoComment.jsx

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
11
import '../styles/VideoComment.css';
22

3+
import { OverlayTrigger, Tooltip } from 'react-bootstrap';
4+
35
function VideoComment({ children }) {
46
const timecodeRegex = /(\d{2}:\d{2}:\d{2}\.\d{3}\s*-->\s*\d{2}:\d{2}:\d{2}\.\d{3})/;
5-
if (timecodeRegex.test(children)) {
6-
return <p
7-
onClick={
8-
e => {
9-
e.preventDefault();
10-
e.stopPropagation();
11-
playVideoAt(children[0]);
7+
if (timecodeRegex.test(children)) return (
8+
<OverlayTrigger overlay={<Tooltip>Play the video fragment</Tooltip>} >
9+
<p
10+
onClick={
11+
e => {
12+
e.preventDefault();
13+
e.stopPropagation();
14+
playVideoAt(children[0]);
15+
}
1216
}
13-
}
14-
className="videoComment"
15-
title="Go to the video excerpt"
16-
>{children[0]}</p>;
17-
}
17+
className="videoComment"
18+
>
19+
{children[0]}
20+
</p>
21+
</OverlayTrigger>
22+
);
23+
1824
function playVideoAt(timecode) {
1925
let [start, end] = timecode.split('-->');
2026
let [hour, min, sec] = start.split(/[:.]/);

0 commit comments

Comments
 (0)