@nice-digital/global-nav 7.1.1152 → 7.1.1243-feature-branch-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/Footer/Footer.js +2 -2
- package/lib/Footer/Legal/Legal.js +5 -5
- package/lib/Footer/Legal/index.js +1 -1
- package/lib/Footer/Pages/Pages.js +4 -4
- package/lib/Footer/Pages/index.js +1 -1
- package/lib/Footer/Services/Services.js +3 -3
- package/lib/Footer/Services/index.js +1 -1
- package/lib/Footer/Social/Social.js +1 -1
- package/lib/Footer/Social/index.js +1 -1
- package/lib/Footer/index.js +1 -1
- package/lib/Header/Account/Account.js +17 -19
- package/lib/Header/Account/index.js +1 -1
- package/lib/Header/Account/nice-accounts.js +7 -5
- package/lib/Header/Header.js +160 -191
- package/lib/Header/Nav/Dropdown/Components/AboutUs.js +1 -1
- package/lib/Header/Nav/Dropdown/Components/Grid.js +2 -2
- package/lib/Header/Nav/Dropdown/Components/LifeSciences.js +1 -1
- package/lib/Header/Nav/Dropdown/Components/MoreFromNICE.js +1 -1
- package/lib/Header/Nav/Dropdown/Components/StandardsAndIndicators.js +1 -1
- package/lib/Header/Nav/Dropdown/Components/index.js +4 -4
- package/lib/Header/Nav/Dropdown/Dropdown.js +8 -10
- package/lib/Header/Nav/Dropdown/index.js +1 -1
- package/lib/Header/Nav/Nav.js +32 -35
- package/lib/Header/Nav/NavLinks/NavLinks.js +17 -21
- package/lib/Header/Nav/NavLinks/index.js +1 -1
- package/lib/Header/Nav/SubNav/SubNav.js +9 -9
- package/lib/Header/Nav/SubNav/index.js +1 -1
- package/lib/Header/Nav/index.js +1 -1
- package/lib/Header/OldIEMessage/OldIEMessage.js +1 -1
- package/lib/Header/OldIEMessage/ie.js +5 -4
- package/lib/Header/OldIEMessage/index.js +1 -1
- package/lib/Header/Search/Autocomplete/Autocomplete.js +39 -47
- package/lib/Header/Search/Autocomplete/index.js +1 -1
- package/lib/Header/Search/Autocomplete/suggester/index.js +16 -15
- package/lib/Header/Search/Autocomplete/suggester/phrase-finder.js +4 -4
- package/lib/Header/Search/Autocomplete/suggester/term-finder.js +9 -9
- package/lib/Header/Search/Autocomplete/suggester/tokenizer.js +4 -4
- package/lib/Header/Search/Search.js +13 -13
- package/lib/Header/Search/index.js +1 -1
- package/lib/Header/SkipLink/SkipLink.js +4 -4
- package/lib/Header/SkipLink/index.js +1 -1
- package/lib/Header/context/HeaderContext.js +24 -23
- package/lib/Header/index.js +1 -1
- package/lib/Main/BackToTop/BackToTop.js +6 -5
- package/lib/Main/Main.js +2 -2
- package/lib/Main/index.js +1 -1
- package/lib/TrackedLink/TrackedLink.js +5 -5
- package/lib/TrackedLink/index.js +1 -1
- package/lib/hooks/useEscapeKeydown.js +6 -6
- package/lib/hooks/useIsClient.js +5 -4
- package/lib/index.js +3 -3
- package/lib/renderer.js +22 -20
- package/lib/tracker/index.js +16 -14
- package/lib/utils.js +1 -1
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -849,7 +849,7 @@ V4 involved updating a lot of dependencies. Mostly this was internal implementat
|
|
|
849
849
|
|
|
850
850
|
## Upgrading to v5
|
|
851
851
|
|
|
852
|
-
Version 5 includes updates for the summer 2022 brand refresh. It's mostly an internal refactor of typography and colour updates and
|
|
852
|
+
Version 5 includes updates for the summer 2022 brand refresh. It's mostly an internal refactor of typography and colour updates and should not include any breaking API changes.
|
|
853
853
|
|
|
854
854
|
## Upgrading to v6
|
|
855
855
|
|
package/lib/Footer/Footer.js
CHANGED
|
@@ -16,8 +16,8 @@ var _TrackedLink = _interopRequireDefault(require("../TrackedLink"));
|
|
|
16
16
|
var _tracker = require("../tracker");
|
|
17
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
18
|
//TODO add string type for service prop
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
const Footer = _ref => {
|
|
20
|
+
let service = _ref.service;
|
|
21
21
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("footer", {
|
|
22
22
|
className: _FooterModule.default.footer,
|
|
23
23
|
"data-tracking": "Global footer",
|
|
@@ -9,14 +9,14 @@ var _LegalModule = _interopRequireDefault(require("./Legal.module.scss"));
|
|
|
9
9
|
var _TrackedLink = _interopRequireDefault(require("../../TrackedLink"));
|
|
10
10
|
var _tracker = require("../../tracker");
|
|
11
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
-
|
|
12
|
+
const cyberEssentialsCertificate = {
|
|
13
13
|
id: "99cdb154-4ee0-41a4-bdef-6d2fa58bf757",
|
|
14
14
|
expiryDate: "2026-06-02"
|
|
15
15
|
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
const Legal = () => {
|
|
17
|
+
const today = new Date();
|
|
18
|
+
const cyberEssentialsExpiryDate = new Date(cyberEssentialsCertificate.expiryDate);
|
|
19
|
+
const isCyberEssentialsValid = today < cyberEssentialsExpiryDate;
|
|
20
20
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
21
21
|
className: _LegalModule.default.wrapper,
|
|
22
22
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
@@ -12,14 +12,14 @@ var _TrackedLink = _interopRequireDefault(require("../../TrackedLink"));
|
|
|
12
12
|
var _tracker = require("../../tracker");
|
|
13
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
14
|
//TODO add string type for service prop
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
const Pages = _ref => {
|
|
16
|
+
let service = _ref.service;
|
|
17
17
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("nav", {
|
|
18
18
|
className: _PagesModule.default.wrapper,
|
|
19
19
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("ul", {
|
|
20
20
|
className: _PagesModule.default.list,
|
|
21
|
-
children: _links.default.map(
|
|
22
|
-
|
|
21
|
+
children: _links.default.map(link => {
|
|
22
|
+
let href = link.href;
|
|
23
23
|
if (link.hrefOverrides && service) {
|
|
24
24
|
href = link.hrefOverrides[service] || href;
|
|
25
25
|
}
|
|
@@ -14,7 +14,7 @@ var _services = _interopRequireDefault(require("../../services.json"));
|
|
|
14
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
15
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
16
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
|
-
|
|
17
|
+
const Services = () => {
|
|
18
18
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("nav", {
|
|
19
19
|
className: _ServicesModule.default.wrapper,
|
|
20
20
|
"aria-label": "Our services",
|
|
@@ -24,7 +24,7 @@ var Services = function Services() {
|
|
|
24
24
|
return item.footer;
|
|
25
25
|
}).map(function (link) {
|
|
26
26
|
if (link.nestedLinks) {
|
|
27
|
-
return link.nestedLinks.map(
|
|
27
|
+
return link.nestedLinks.map(nestedLink => {
|
|
28
28
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(FooterLink, _objectSpread({}, nestedLink), nestedLink.id);
|
|
29
29
|
});
|
|
30
30
|
} else {
|
|
@@ -45,7 +45,7 @@ FooterLink.propTypes = {
|
|
|
45
45
|
title: _propTypes.default.string
|
|
46
46
|
};
|
|
47
47
|
function FooterLink(_ref) {
|
|
48
|
-
|
|
48
|
+
let host = _ref.host,
|
|
49
49
|
landingPath = _ref.landingPath,
|
|
50
50
|
text = _ref.text,
|
|
51
51
|
abbreviation = _ref.abbreviation,
|
|
@@ -13,7 +13,7 @@ var _SocialModule = _interopRequireDefault(require("./Social.module.scss"));
|
|
|
13
13
|
var _TrackedLink = _interopRequireDefault(require("../../TrackedLink"));
|
|
14
14
|
var _tracker = require("../../tracker");
|
|
15
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
|
-
|
|
16
|
+
const Social = () => {
|
|
17
17
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
18
18
|
className: _SocialModule.default.wrapper,
|
|
19
19
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("ul", {
|
package/lib/Footer/index.js
CHANGED
|
@@ -18,29 +18,27 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
18
18
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
19
19
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
20
20
|
function Account(props) {
|
|
21
|
-
|
|
21
|
+
const _props$provider = props.provider,
|
|
22
22
|
provider = _props$provider === void 0 ? "niceAccounts" : _props$provider;
|
|
23
23
|
// We've left this is state as per the pre-hook implementation
|
|
24
|
-
|
|
24
|
+
const _useState = (0, _react.useState)(provider == Account.providers.idam),
|
|
25
25
|
_useState2 = (0, _slicedToArray2.default)(_useState, 1),
|
|
26
26
|
doesUseIdAM = _useState2[0];
|
|
27
|
-
|
|
27
|
+
const _useContext = (0, _react.useContext)(_HeaderContext.HeaderContext),
|
|
28
28
|
accountMenuIsExpanded = _useContext.accountMenuIsExpanded,
|
|
29
29
|
setAccountMenuIsExpanded = _useContext.setAccountMenuIsExpanded;
|
|
30
|
-
|
|
30
|
+
const keypress = (0, _react.useRef)(),
|
|
31
31
|
myAccountButton = (0, _react.useRef)(),
|
|
32
32
|
myAccountMenu = (0, _react.useRef)();
|
|
33
|
-
|
|
33
|
+
const handleMyAccountButtonClick = (0, _react.useCallback)(e => {
|
|
34
34
|
keypress.current = e.pageX;
|
|
35
|
-
setAccountMenuIsExpanded(
|
|
36
|
-
return !prevState;
|
|
37
|
-
});
|
|
35
|
+
setAccountMenuIsExpanded(prevState => !prevState);
|
|
38
36
|
}, []);
|
|
39
37
|
function focusAccount() {
|
|
40
38
|
myAccountMenu && myAccountMenu.current.setAttribute("tabIndex", -1);
|
|
41
39
|
myAccountMenu && myAccountMenu.current.focus();
|
|
42
40
|
}
|
|
43
|
-
(0, _react.useEffect)(
|
|
41
|
+
(0, _react.useEffect)(() => {
|
|
44
42
|
if (!keypress.current && accountMenuIsExpanded) {
|
|
45
43
|
focusAccount();
|
|
46
44
|
}
|
|
@@ -53,8 +51,8 @@ function Account(props) {
|
|
|
53
51
|
}
|
|
54
52
|
}
|
|
55
53
|
function handleMenuItemClick(e) {
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
const href = e.currentTarget.getAttribute("href");
|
|
55
|
+
let eventLabel;
|
|
58
56
|
if (href.indexOf("editprofile") > -1) {
|
|
59
57
|
eventLabel = "Edit profile";
|
|
60
58
|
} else if (href.indexOf("signout") > -1) {
|
|
@@ -69,8 +67,8 @@ function Account(props) {
|
|
|
69
67
|
});
|
|
70
68
|
}
|
|
71
69
|
}
|
|
72
|
-
(0, _react.useEffect)(
|
|
73
|
-
|
|
70
|
+
(0, _react.useEffect)(() => {
|
|
71
|
+
const consultationsResponsesLink = {
|
|
74
72
|
"Consultation responses": "https://www.nice.org.uk/consultations/"
|
|
75
73
|
};
|
|
76
74
|
if (doesUseIdAM) {
|
|
@@ -78,16 +76,16 @@ function Account(props) {
|
|
|
78
76
|
//idam supplies links like:[{ key: "My profile", value: "/Account/todo" },{ key: "Sign out", value: "/Account/Logout" }]
|
|
79
77
|
//the following just converts the idam format to the nice accounts format.
|
|
80
78
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
79
|
+
const displayName = props.displayName;
|
|
80
|
+
const isLoggedIn = !!displayName;
|
|
81
|
+
let links = props.links.reduce(function (links, link) {
|
|
84
82
|
links[link.text] = link.url;
|
|
85
83
|
return links;
|
|
86
84
|
}, {});
|
|
87
85
|
if (isLoggedIn) {
|
|
88
86
|
links = _objectSpread(_objectSpread({}, consultationsResponsesLink), links);
|
|
89
87
|
}
|
|
90
|
-
|
|
88
|
+
const convertedData = {
|
|
91
89
|
display_name: displayName,
|
|
92
90
|
links: links
|
|
93
91
|
};
|
|
@@ -106,10 +104,10 @@ function Account(props) {
|
|
|
106
104
|
});
|
|
107
105
|
}
|
|
108
106
|
}, []);
|
|
109
|
-
|
|
107
|
+
const accountsData = props.accountsData,
|
|
110
108
|
_props$environment = props.environment,
|
|
111
109
|
environment = _props$environment === void 0 ? "live" : _props$environment;
|
|
112
|
-
|
|
110
|
+
let signInLink = {};
|
|
113
111
|
if (doesUseIdAM) {
|
|
114
112
|
signInLink = props.links[0];
|
|
115
113
|
} else {
|
|
@@ -8,13 +8,13 @@ exports.getDomainBaseUrl = exports.checkIsLoggedIn = void 0;
|
|
|
8
8
|
// Returns a promise that resolves with the data from NICE Accounts.
|
|
9
9
|
// Returns a promise that rejects if the data could not be loaded.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
const checkIsLoggedIn = function (environment) {
|
|
12
12
|
return new Promise(function (resolve, reject) {
|
|
13
|
-
|
|
13
|
+
const url = getDomainBaseUrl(environment) + "tophat";
|
|
14
14
|
var body = document.body;
|
|
15
15
|
var script = document.createElement("script");
|
|
16
16
|
script.src = url + (~url.indexOf("?") ? "&" : "?") + Math.floor(Math.random() * 10000000000);
|
|
17
|
-
|
|
17
|
+
let done = false;
|
|
18
18
|
script.onload = script.onreadystatechange = function () {
|
|
19
19
|
if (!done && (!script.readyState || script.readyState === "loaded" || script.readyState === "complete")) {
|
|
20
20
|
done = true;
|
|
@@ -30,6 +30,8 @@ var checkIsLoggedIn = exports.checkIsLoggedIn = function checkIsLoggedIn(environ
|
|
|
30
30
|
body.insertBefore(script, body.firstChild);
|
|
31
31
|
});
|
|
32
32
|
};
|
|
33
|
-
|
|
33
|
+
exports.checkIsLoggedIn = checkIsLoggedIn;
|
|
34
|
+
const getDomainBaseUrl = function (environment) {
|
|
34
35
|
return "https://".concat(environment !== "live" ? environment + "-" : "", "accounts.nice.org.uk/");
|
|
35
|
-
};
|
|
36
|
+
};
|
|
37
|
+
exports.getDomainBaseUrl = getDomainBaseUrl;
|