Skip to content

Commit 21a9668

Browse files
committed
Adding QR code with link to current page in the header drop-down.
1 parent 816efff commit 21a9668

File tree

5 files changed

+60
-0
lines changed

5 files changed

+60
-0
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"react-immutable-proptypes": "^2.2.0",
8080
"react-intl": "6.8.9",
8181
"react-motion": "^0.5.2",
82+
"react-qr-code": "^2.0.15",
8283
"react-redux": "^9.2.0",
8384
"react-router": "^6.28.0",
8485
"react-router-dom": "^6.28.0",

src/components/layout/Header/Header.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import PropTypes from 'prop-types';
44
import HeaderNotificationsContainer from '../../../containers/HeaderNotificationsContainer';
55
import HeaderSystemMessagesContainer from '../../../containers/HeaderSystemMessagesContainer';
66
import HeaderLanguageSwitching from '../HeaderLanguageSwitching';
7+
import HeaderQRCodeDropdown from '../HeaderQRCodeDropdown';
78
import MemberGroupsDropdown from '../../Groups/MemberGroupsDropdown';
89
import ClientOnly from '../../helpers/ClientOnly';
910
import FetchManyResourceRenderer from '../../helpers/FetchManyResourceRenderer';
@@ -65,6 +66,7 @@ class Header extends Component {
6566
</ClientOnly>
6667

6768
<ul className="navbar-nav ms-auto">
69+
<HeaderQRCodeDropdown />
6870
{isLoggedIn && <HeaderSystemMessagesContainer locale={currentLang} />}
6971
<HeaderNotificationsContainer />
7072
<HeaderLanguageSwitching availableLangs={availableLangs} currentLang={currentLang} setLang={setLang} />
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import React from 'react';
2+
import { FormattedMessage } from 'react-intl';
3+
import { Dropdown } from 'react-bootstrap';
4+
import QRCode from 'react-qr-code';
5+
6+
import Icon from '../../icons';
7+
8+
const preventClickPropagation = ev => ev.stopPropagation();
9+
10+
const HeaderQRCodeDropdown = () => (
11+
<Dropdown as="li" align="end" navbar className="nav-item" data-bs-theme="light">
12+
<Dropdown.Toggle as="a" id="dropdown-qr-code-link" bsPrefix="nav-link">
13+
<Icon icon="qrcode" />
14+
</Dropdown.Toggle>
15+
16+
<Dropdown.Menu rootCloseEvent="mousedown" onMouseDown={preventClickPropagation}>
17+
<Dropdown.Header>
18+
<FormattedMessage id="app.QRCodeDropdown.title" defaultMessage="QR code link to current page" />
19+
</Dropdown.Header>
20+
21+
<Dropdown.Divider className="mb-0" />
22+
23+
<div className="mx-5 my-4 text-center">
24+
<QRCode size={256} value={window.location.href} />
25+
</div>
26+
<p className="mx-3 small">
27+
<code className="small">{window.location.href}</code>
28+
</p>
29+
</Dropdown.Menu>
30+
</Dropdown>
31+
);
32+
33+
HeaderQRCodeDropdown.propTypes = {};
34+
35+
export default HeaderQRCodeDropdown;
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import HeaderQRCodeDropdown from './HeaderQRCodeDropdown.js';
2+
export default HeaderQRCodeDropdown;

yarn.lock

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11887,6 +11887,13 @@ __metadata:
1188711887
languageName: node
1188811888
linkType: hard
1188911889

11890+
"qr.js@npm:0.0.0":
11891+
version: 0.0.0
11892+
resolution: "qr.js@npm:0.0.0"
11893+
checksum: 5ac6c393967bdeaa660e7fd3a501a25eb538c1f6008a4d30ab2b97bbe520e5c236530090773f1578aa0a523cdaa6923c866615e21143f9e7cd22abd41c789b69
11894+
languageName: node
11895+
linkType: hard
11896+
1189011897
"qs@npm:6.13.0":
1189111898
version: 6.13.0
1189211899
resolution: "qs@npm:6.13.0"
@@ -12191,6 +12198,18 @@ __metadata:
1219112198
languageName: node
1219212199
linkType: hard
1219312200

12201+
"react-qr-code@npm:^2.0.15":
12202+
version: 2.0.15
12203+
resolution: "react-qr-code@npm:2.0.15"
12204+
dependencies:
12205+
prop-types: ^15.8.1
12206+
qr.js: 0.0.0
12207+
peerDependencies:
12208+
react: "*"
12209+
checksum: 4124b7c2ce71bfe94279d85322175c881ba87dcc9b67f3c6d6e2806854a8792cf5f9ed8e10ea04c22e39aa060ef12fb39e679e780cba14f168d3cd6cffb7086d
12210+
languageName: node
12211+
linkType: hard
12212+
1219412213
"react-redux@npm:^9.2.0":
1219512214
version: 9.2.0
1219612215
resolution: "react-redux@npm:9.2.0"
@@ -12454,6 +12473,7 @@ __metadata:
1245412473
react-intl: 6.8.9
1245512474
react-intl-translations-manager: ^5.0.3
1245612475
react-motion: ^0.5.2
12476+
react-qr-code: ^2.0.15
1245712477
react-redux: ^9.2.0
1245812478
react-router: ^6.28.0
1245912479
react-router-dom: ^6.28.0

0 commit comments

Comments
 (0)