@nice-digital/global-nav 5.0.940 → 7.0.930
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 +18 -55
- package/lib/Footer/Footer.js +31 -55
- package/lib/Footer/Legal/Legal.js +76 -71
- package/lib/Footer/Legal/index.js +10 -7
- package/lib/Footer/Pages/Pages.js +34 -54
- package/lib/Footer/Pages/Pages.module.scss +1 -1
- package/lib/Footer/Pages/index.js +10 -7
- package/lib/Footer/Pages/links.json +2 -5
- package/lib/Footer/Services/Services.js +65 -86
- package/lib/Footer/Services/Services.module.scss +1 -1
- package/lib/Footer/Services/index.js +10 -7
- package/lib/Footer/Social/Social.js +46 -57
- package/lib/Footer/Social/index.js +10 -7
- package/lib/Footer/index.js +10 -7
- package/lib/Header/Account/Account.js +87 -109
- package/lib/Header/Account/index.js +10 -7
- package/lib/Header/Account/nice-accounts.js +7 -12
- package/lib/Header/Header.js +345 -171
- package/lib/Header/Header.module.scss +2 -2
- package/lib/Header/Nav/Dropdown/Components/AboutUs.js +216 -105
- package/lib/Header/Nav/Dropdown/Components/BNF.js +120 -75
- package/lib/Header/Nav/Dropdown/Components/BNFc.js +115 -73
- package/lib/Header/Nav/Dropdown/Components/Button.js +11 -14
- package/lib/Header/Nav/Dropdown/Components/CKS.js +115 -73
- package/lib/Header/Nav/Dropdown/Components/Grid.js +16 -22
- package/lib/Header/Nav/Dropdown/Components/Guidance.js +244 -128
- package/lib/Header/Nav/Dropdown/Components/LifeSciences.js +169 -108
- package/lib/Header/Nav/Dropdown/Components/StandardsAndIndicators.js +83 -45
- package/lib/Header/Nav/Dropdown/Components/index.js +46 -24
- package/lib/Header/Nav/Dropdown/Dropdown.js +48 -63
- package/lib/Header/Nav/Dropdown/Dropdown.module.scss +1 -1
- package/lib/Header/Nav/Dropdown/index.js +10 -7
- package/lib/Header/Nav/Nav.js +84 -102
- package/lib/Header/Nav/Nav.module.scss +2 -4
- package/lib/Header/Nav/NavLinks/NavLinks.js +118 -137
- package/lib/Header/Nav/NavLinks/NavLinks.module.scss +1 -1
- package/lib/Header/Nav/NavLinks/index.js +10 -7
- package/lib/Header/Nav/SubNav/SubNav.js +54 -90
- package/lib/Header/Nav/SubNav/index.js +10 -7
- package/lib/Header/Nav/__mocks__/services.json +3 -3
- package/lib/Header/Nav/index.js +10 -7
- package/lib/Header/OldIEMessage/OldIEMessage.js +65 -67
- package/lib/Header/OldIEMessage/ie.js +14 -0
- package/lib/Header/OldIEMessage/index.js +10 -7
- package/lib/Header/Search/Autocomplete/Autocomplete.js +169 -194
- package/lib/Header/Search/Autocomplete/Autocomplete.module.scss +9 -1
- package/lib/Header/Search/Autocomplete/index.js +10 -7
- package/lib/Header/Search/Autocomplete/suggester/index.js +21 -28
- package/lib/Header/Search/Autocomplete/suggester/phrase-finder.js +13 -14
- package/lib/Header/Search/Autocomplete/suggester/term-finder.js +18 -21
- package/lib/Header/Search/Autocomplete/suggester/tokenizer.js +12 -17
- package/lib/Header/Search/Search.js +73 -90
- package/lib/Header/Search/index.js +10 -7
- package/lib/Header/SkipLink/SkipLink.js +24 -62
- package/lib/Header/SkipLink/SkipLink.module.scss +5 -1
- package/lib/Header/SkipLink/index.js +10 -7
- package/lib/Header/_header-settings.scss +0 -2
- package/lib/Header/context/HeaderContext.js +28 -54
- package/lib/Header/index.js +10 -7
- package/lib/Main/BackToTop/BackToTop.js +22 -25
- package/lib/Main/BackToTop/BackToTop.module.scss +1 -4
- package/lib/Main/Main.js +22 -26
- package/lib/Main/index.js +10 -7
- package/lib/TrackedLink/TrackedLink.js +48 -74
- package/lib/TrackedLink/index.js +10 -7
- package/lib/hooks/useEscapeKeydown.js +8 -21
- package/lib/hooks/useIsClient.js +20 -0
- package/lib/index.js +22 -12
- package/lib/renderer.js +21 -30
- package/lib/tracker/index.js +8 -25
- package/lib/utils.js +4 -7
- package/package.json +68 -65
- package/types.d.ts +1 -0
- package/lib/Header/Account/AccountOld.js +0 -227
package/lib/Header/Header.js
CHANGED
|
@@ -1,220 +1,394 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
exports
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var
|
|
11
|
-
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.OldHeader = void 0;
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
11
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
13
|
-
|
|
14
|
-
var
|
|
15
|
-
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
14
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
16
17
|
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
-
|
|
18
18
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
19
|
-
|
|
20
19
|
var _LogoFull = _interopRequireDefault(require("@nice-digital/icons/lib/LogoFull"));
|
|
21
|
-
|
|
22
20
|
var _tracker = require("./../tracker");
|
|
23
|
-
|
|
24
21
|
var _OldIEMessage = _interopRequireDefault(require("./OldIEMessage"));
|
|
25
|
-
|
|
26
22
|
var _Nav = _interopRequireDefault(require("./Nav"));
|
|
27
|
-
|
|
28
23
|
var _Search = _interopRequireDefault(require("./Search"));
|
|
29
|
-
|
|
30
24
|
var _Account = _interopRequireDefault(require("./Account"));
|
|
31
|
-
|
|
32
25
|
var _SkipLink = _interopRequireDefault(require("./SkipLink"));
|
|
33
|
-
|
|
34
26
|
var _utils = require("../utils");
|
|
35
|
-
|
|
36
27
|
var _HeaderModule = _interopRequireDefault(require("./Header.module.scss"));
|
|
37
|
-
|
|
38
28
|
var _HeaderContext = require("./context/HeaderContext");
|
|
39
|
-
|
|
29
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
40
30
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
41
|
-
|
|
42
|
-
function
|
|
43
|
-
|
|
44
|
-
var
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
31
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
32
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
33
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
34
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
35
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
36
|
+
var Header = function Header(_ref) {
|
|
37
|
+
var _ref$skipLinkId = _ref.skipLinkId,
|
|
38
|
+
skipLinkId = _ref$skipLinkId === void 0 ? "content-start" : _ref$skipLinkId,
|
|
39
|
+
_ref$renderSearchOnly = _ref.renderSearchOnly,
|
|
40
|
+
renderSearchOnly = _ref$renderSearchOnly === void 0 ? false : _ref$renderSearchOnly,
|
|
41
|
+
onNavigating = _ref.onNavigating,
|
|
42
|
+
_ref$search = _ref.search,
|
|
43
|
+
search = _ref$search === void 0 ? {} : _ref$search,
|
|
44
|
+
enabled = _ref.enabled,
|
|
45
|
+
onRendered = _ref.onRendered,
|
|
46
|
+
auth = _ref.auth,
|
|
47
|
+
service = _ref.service,
|
|
48
|
+
_ref$additionalSubMen = _ref.additionalSubMenuItems,
|
|
49
|
+
additionalSubMenuItems = _ref$additionalSubMen === void 0 ? [] : _ref$additionalSubMen,
|
|
50
|
+
onDropdownOpen = _ref.onDropdownOpen,
|
|
51
|
+
onDropdownClose = _ref.onDropdownClose;
|
|
52
|
+
var _useState = (0, _react.useState)(false),
|
|
53
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
54
|
+
isExpanded = _useState2[0],
|
|
55
|
+
setIsExpanded = _useState2[1];
|
|
56
|
+
var _useState3 = (0, _react.useState)(false),
|
|
57
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
58
|
+
isLoggedIn = _useState4[0],
|
|
59
|
+
setIsLoggedIn = _useState4[1];
|
|
60
|
+
var _useState5 = (0, _react.useState)(null),
|
|
61
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
62
|
+
accountsData = _useState6[0],
|
|
63
|
+
setAccountsData = _useState6[1];
|
|
64
|
+
(0, _react.useEffect)(function () {
|
|
65
|
+
if (!document.getElementById(skipLinkId)) {
|
|
67
66
|
var firstH1OnPage = document.getElementsByTagName("h1")[0];
|
|
68
|
-
|
|
67
|
+
if (firstH1OnPage) {
|
|
68
|
+
firstH1OnPage.setAttribute("id", skipLinkId);
|
|
69
|
+
}
|
|
69
70
|
}
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
_proto.handleMobileMenuBtnClick = function handleMobileMenuBtnClick() {
|
|
73
|
-
var _this2 = this;
|
|
74
|
-
|
|
71
|
+
}, [skipLinkId]);
|
|
72
|
+
var handleMobileMenuBtnClick = function handleMobileMenuBtnClick() {
|
|
75
73
|
(0, _tracker.trackEvent)(_tracker.defaultEventCategory, _tracker.headerClickEventAction, "Menu");
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
isExpanded: !prevState.isExpanded
|
|
80
|
-
};
|
|
81
|
-
}.bind(this));
|
|
74
|
+
setIsExpanded(function (prevState) {
|
|
75
|
+
return !prevState;
|
|
76
|
+
});
|
|
82
77
|
};
|
|
83
|
-
|
|
84
|
-
_proto.handleLogoClick = function handleLogoClick(e) {
|
|
78
|
+
var handleLogoClick = function handleLogoClick(e) {
|
|
85
79
|
e.preventDefault();
|
|
86
80
|
var href = e.currentTarget.getAttribute("href");
|
|
87
81
|
(0, _tracker.trackEvent)(_tracker.defaultEventCategory, _tracker.headerClickEventAction, "Logo", null, href, function () {
|
|
88
|
-
window.location.href
|
|
82
|
+
window.location.assign(href);
|
|
89
83
|
});
|
|
90
84
|
};
|
|
91
|
-
|
|
92
|
-
_proto.handleLoginStatusChecked = function handleLoginStatusChecked(accountsData) {
|
|
85
|
+
var handleLoginStatusChecked = function handleLoginStatusChecked(accountsData) {
|
|
93
86
|
if (accountsData.display_name) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
accountsData: accountsData
|
|
97
|
-
});
|
|
87
|
+
setIsLoggedIn(true);
|
|
88
|
+
setAccountsData(accountsData);
|
|
98
89
|
} else {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
accountsData: accountsData
|
|
102
|
-
});
|
|
90
|
+
setIsLoggedIn(false);
|
|
91
|
+
setAccountsData(accountsData);
|
|
103
92
|
}
|
|
104
93
|
};
|
|
105
|
-
|
|
106
|
-
_proto.dropdownToggleHandler = function dropdownToggleHandler(idOfOpenDropdown) {
|
|
94
|
+
var dropdownToggleHandler = function dropdownToggleHandler(idOfOpenDropdown) {
|
|
107
95
|
// If we've got an onDropdownOpen or onDropdownClose prop call the onDropdownOpen or onDropdownClose callback based on idOfOpenDropdown.
|
|
108
|
-
var _this$props = this.props,
|
|
109
|
-
onDropdownOpen = _this$props.onDropdownOpen,
|
|
110
|
-
onDropdownClose = _this$props.onDropdownClose;
|
|
111
96
|
|
|
112
97
|
if (onDropdownOpen && idOfOpenDropdown !== null) {
|
|
113
98
|
var onDropdownOpenCallback = (0, _utils.getCallbackFunction)(onDropdownOpen);
|
|
114
|
-
|
|
115
99
|
if (onDropdownOpenCallback) {
|
|
116
100
|
onDropdownOpenCallback();
|
|
117
101
|
}
|
|
118
102
|
}
|
|
119
|
-
|
|
120
103
|
if (onDropdownClose && idOfOpenDropdown == null) {
|
|
121
104
|
var onDropdownCloseCallback = (0, _utils.getCallbackFunction)(onDropdownClose);
|
|
122
|
-
|
|
123
105
|
if (onDropdownCloseCallback) {
|
|
124
106
|
onDropdownCloseCallback();
|
|
125
107
|
}
|
|
126
108
|
}
|
|
127
109
|
};
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
"
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
110
|
+
if (renderSearchOnly) {
|
|
111
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Search.default, _objectSpread({
|
|
112
|
+
skipLinkId: skipLinkId,
|
|
113
|
+
onNavigating: onNavigating
|
|
114
|
+
}, search));
|
|
115
|
+
}
|
|
116
|
+
return enabled !== false && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_HeaderContext.HeaderContextProvider, {
|
|
117
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_HeaderContext.HeaderContext.Consumer, {
|
|
118
|
+
children: function children(_ref2) {
|
|
119
|
+
var idOfOpenDropdown = _ref2.idOfOpenDropdown;
|
|
120
|
+
dropdownToggleHandler(idOfOpenDropdown);
|
|
121
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
122
|
+
id: "scrim",
|
|
123
|
+
className: idOfOpenDropdown !== null ? _HeaderModule.default.scrim : undefined,
|
|
124
|
+
"aria-hidden": "true"
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
128
|
+
className: _HeaderModule.default.header,
|
|
143
129
|
"data-tracking": "Global nav",
|
|
144
|
-
id: "top"
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
130
|
+
id: "top",
|
|
131
|
+
ref: onRendered,
|
|
132
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("header", {
|
|
133
|
+
"aria-label": "Site header",
|
|
134
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("ul", {
|
|
135
|
+
className: _HeaderModule.default.a11yLinks,
|
|
136
|
+
"aria-label": "Accessibility links",
|
|
137
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
|
|
138
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SkipLink.default, {
|
|
139
|
+
to: "#".concat(skipLinkId),
|
|
140
|
+
children: "Skip to content"
|
|
141
|
+
})
|
|
142
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
|
|
143
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SkipLink.default, {
|
|
144
|
+
to: "https://www.nice.org.uk/accessibility",
|
|
145
|
+
children: "Accessibility help"
|
|
146
|
+
})
|
|
147
|
+
})]
|
|
148
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
149
|
+
className: _HeaderModule.default.container,
|
|
150
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
|
|
151
|
+
href: "https://www.nice.org.uk/",
|
|
152
|
+
"aria-label": "Home",
|
|
153
|
+
className: _HeaderModule.default.home,
|
|
154
|
+
onClick: handleLogoClick,
|
|
155
|
+
"data-tracking": "Logo",
|
|
156
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_LogoFull.default, {
|
|
157
|
+
className: _HeaderModule.default.icon,
|
|
158
|
+
width: null,
|
|
159
|
+
height: null
|
|
160
|
+
})
|
|
161
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
162
|
+
className: _HeaderModule.default.wrapper,
|
|
163
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
164
|
+
className: _HeaderModule.default.search,
|
|
165
|
+
children: search && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Search.default, _objectSpread({
|
|
166
|
+
skipLinkId: skipLinkId,
|
|
167
|
+
onNavigating: onNavigating
|
|
168
|
+
}, search))
|
|
169
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
|
|
170
|
+
className: _HeaderModule.default.mobileMenuBtn,
|
|
171
|
+
id: "header-menu-button",
|
|
172
|
+
type: "button",
|
|
173
|
+
"aria-controls": "header-menu",
|
|
174
|
+
"aria-expanded": isExpanded,
|
|
175
|
+
"aria-haspopup": "menu",
|
|
176
|
+
"aria-label": isExpanded ? "Close site menu" : "Expand site menu",
|
|
177
|
+
onClick: handleMobileMenuBtnClick,
|
|
178
|
+
children: isExpanded ? "Close" : "Menu"
|
|
179
|
+
}), auth !== false && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
180
|
+
className: _HeaderModule.default.account,
|
|
181
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Account.default, _objectSpread({
|
|
182
|
+
onLoginStatusChecked: handleLoginStatusChecked,
|
|
183
|
+
isLoggedIn: isLoggedIn,
|
|
184
|
+
accountsData: accountsData
|
|
185
|
+
}, auth))
|
|
186
|
+
})]
|
|
187
|
+
})]
|
|
188
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Nav.default, {
|
|
189
|
+
skipLinkId: skipLinkId,
|
|
190
|
+
service: service,
|
|
191
|
+
isExpanded: isExpanded,
|
|
192
|
+
accountsLinks: accountsData && accountsData.links,
|
|
193
|
+
onNavigating: onNavigating,
|
|
194
|
+
additionalSubMenuItems: additionalSubMenuItems
|
|
195
|
+
})]
|
|
196
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_OldIEMessage.default, {})]
|
|
197
|
+
})]
|
|
198
|
+
});
|
|
213
199
|
};
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
200
|
+
var OldHeader = /*#__PURE__*/function (_Component) {
|
|
201
|
+
(0, _inherits2.default)(OldHeader, _Component);
|
|
202
|
+
var _super = _createSuper(OldHeader);
|
|
203
|
+
function OldHeader(props) {
|
|
204
|
+
var _this;
|
|
205
|
+
(0, _classCallCheck2.default)(this, OldHeader);
|
|
206
|
+
_this = _super.call(this, props);
|
|
207
|
+
_this.state = {
|
|
208
|
+
isExpanded: false,
|
|
209
|
+
isLoggedIn: false,
|
|
210
|
+
accountsData: null,
|
|
211
|
+
scrimIsActive: false
|
|
212
|
+
};
|
|
213
|
+
_this.handleMobileMenuBtnClick = _this.handleMobileMenuBtnClick.bind((0, _assertThisInitialized2.default)(_this));
|
|
214
|
+
_this.handleLoginStatusChecked = _this.handleLoginStatusChecked.bind((0, _assertThisInitialized2.default)(_this));
|
|
215
|
+
_this.handleLogoClick = _this.handleLogoClick.bind((0, _assertThisInitialized2.default)(_this));
|
|
216
|
+
_this.headerRef = /*#__PURE__*/_react.default.createRef(null);
|
|
217
|
+
return _this;
|
|
218
|
+
}
|
|
219
|
+
(0, _createClass2.default)(OldHeader, [{
|
|
220
|
+
key: "componentDidMount",
|
|
221
|
+
value: function componentDidMount() {
|
|
222
|
+
if (!document.getElementById(this.props.skipLinkId)) {
|
|
223
|
+
var firstH1OnPage = document.getElementsByTagName("h1")[0];
|
|
224
|
+
if (firstH1OnPage) firstH1OnPage.setAttribute("id", this.props.skipLinkId);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}, {
|
|
228
|
+
key: "handleMobileMenuBtnClick",
|
|
229
|
+
value: function handleMobileMenuBtnClick() {
|
|
230
|
+
(0, _tracker.trackEvent)(_tracker.defaultEventCategory, _tracker.headerClickEventAction, "Menu");
|
|
231
|
+
this.setState(function (prevState) {
|
|
232
|
+
return {
|
|
233
|
+
isExpanded: !prevState.isExpanded
|
|
234
|
+
};
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
}, {
|
|
238
|
+
key: "handleLogoClick",
|
|
239
|
+
value: function handleLogoClick(e) {
|
|
240
|
+
e.preventDefault();
|
|
241
|
+
var href = e.currentTarget.getAttribute("href");
|
|
242
|
+
(0, _tracker.trackEvent)(_tracker.defaultEventCategory, _tracker.headerClickEventAction, "Logo", null, href, function () {
|
|
243
|
+
window.location.assign(href);
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}, {
|
|
247
|
+
key: "handleLoginStatusChecked",
|
|
248
|
+
value: function handleLoginStatusChecked(accountsData) {
|
|
249
|
+
if (accountsData.display_name) {
|
|
250
|
+
this.setState({
|
|
251
|
+
isLoggedIn: true,
|
|
252
|
+
accountsData: accountsData
|
|
253
|
+
});
|
|
254
|
+
} else {
|
|
255
|
+
this.setState({
|
|
256
|
+
isLoggedIn: false,
|
|
257
|
+
accountsData: accountsData
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}, {
|
|
262
|
+
key: "dropdownToggleHandler",
|
|
263
|
+
value: function dropdownToggleHandler(idOfOpenDropdown) {
|
|
264
|
+
// If we've got an onDropdownOpen or onDropdownClose prop call the onDropdownOpen or onDropdownClose callback based on idOfOpenDropdown.
|
|
265
|
+
var _this$props = this.props,
|
|
266
|
+
onDropdownOpen = _this$props.onDropdownOpen,
|
|
267
|
+
onDropdownClose = _this$props.onDropdownClose;
|
|
268
|
+
if (onDropdownOpen && idOfOpenDropdown !== null) {
|
|
269
|
+
var onDropdownOpenCallback = (0, _utils.getCallbackFunction)(onDropdownOpen);
|
|
270
|
+
if (onDropdownOpenCallback) {
|
|
271
|
+
onDropdownOpenCallback();
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
if (onDropdownClose && idOfOpenDropdown == null) {
|
|
275
|
+
var onDropdownCloseCallback = (0, _utils.getCallbackFunction)(onDropdownClose);
|
|
276
|
+
if (onDropdownCloseCallback) {
|
|
277
|
+
onDropdownCloseCallback();
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}, {
|
|
282
|
+
key: "render",
|
|
283
|
+
value: function render() {
|
|
284
|
+
var _this2 = this;
|
|
285
|
+
if (this.props.renderSearchOnly) {
|
|
286
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Search.default, _objectSpread({
|
|
287
|
+
skipLinkId: this.props.skipLinkId,
|
|
288
|
+
onNavigating: this.props.onNavigating
|
|
289
|
+
}, this.props.search));
|
|
290
|
+
}
|
|
291
|
+
return this.props.enabled !== false && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_HeaderContext.HeaderContextProvider, {
|
|
292
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_HeaderContext.HeaderContext.Consumer, {
|
|
293
|
+
children: function children(_ref3) {
|
|
294
|
+
var idOfOpenDropdown = _ref3.idOfOpenDropdown;
|
|
295
|
+
_this2.dropdownToggleHandler(idOfOpenDropdown);
|
|
296
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
297
|
+
id: "scrim",
|
|
298
|
+
className: idOfOpenDropdown !== null ? _HeaderModule.default.scrim : undefined,
|
|
299
|
+
"aria-hidden": "true"
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
303
|
+
className: _HeaderModule.default.header,
|
|
304
|
+
"data-tracking": "Global nav",
|
|
305
|
+
id: "top",
|
|
306
|
+
ref: this.props.onRendered,
|
|
307
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("header", {
|
|
308
|
+
"aria-label": "Site header",
|
|
309
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("ul", {
|
|
310
|
+
className: _HeaderModule.default.a11yLinks,
|
|
311
|
+
"aria-label": "Accessibility links",
|
|
312
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
|
|
313
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SkipLink.default, {
|
|
314
|
+
to: "#".concat(this.props.skipLinkId),
|
|
315
|
+
children: "Skip to content"
|
|
316
|
+
})
|
|
317
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
|
|
318
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SkipLink.default, {
|
|
319
|
+
to: "https://www.nice.org.uk/accessibility",
|
|
320
|
+
children: "Accessibility help"
|
|
321
|
+
})
|
|
322
|
+
})]
|
|
323
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
324
|
+
className: _HeaderModule.default.container,
|
|
325
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
|
|
326
|
+
href: "https://www.nice.org.uk/",
|
|
327
|
+
"aria-label": "Home",
|
|
328
|
+
className: _HeaderModule.default.home,
|
|
329
|
+
onClick: this.handleLogoClick,
|
|
330
|
+
"data-tracking": "Logo",
|
|
331
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_LogoFull.default, {
|
|
332
|
+
className: _HeaderModule.default.icon,
|
|
333
|
+
width: null,
|
|
334
|
+
height: null
|
|
335
|
+
})
|
|
336
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
337
|
+
className: _HeaderModule.default.wrapper,
|
|
338
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
339
|
+
className: _HeaderModule.default.search,
|
|
340
|
+
children: this.props.search && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Search.default, _objectSpread({
|
|
341
|
+
skipLinkId: this.props.skipLinkId,
|
|
342
|
+
onNavigating: this.props.onNavigating
|
|
343
|
+
}, this.props.search))
|
|
344
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
|
|
345
|
+
className: _HeaderModule.default.mobileMenuBtn,
|
|
346
|
+
id: "header-menu-button",
|
|
347
|
+
type: "button",
|
|
348
|
+
"aria-controls": "header-menu",
|
|
349
|
+
"aria-expanded": this.state.isExpanded,
|
|
350
|
+
"aria-haspopup": "menu",
|
|
351
|
+
"aria-label": this.state.isExpanded ? "Close site menu" : "Expand site menu",
|
|
352
|
+
onClick: this.handleMobileMenuBtnClick,
|
|
353
|
+
children: this.state.isExpanded ? "Close" : "Menu"
|
|
354
|
+
}), this.props.auth !== false && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
355
|
+
className: _HeaderModule.default.account,
|
|
356
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Account.default, _objectSpread({
|
|
357
|
+
onLoginStatusChecked: this.handleLoginStatusChecked,
|
|
358
|
+
isLoggedIn: this.state.isLoggedIn,
|
|
359
|
+
accountsData: this.state.accountsData
|
|
360
|
+
}, this.props.auth))
|
|
361
|
+
})]
|
|
362
|
+
})]
|
|
363
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Nav.default, {
|
|
364
|
+
skipLinkId: this.props.skipLinkId,
|
|
365
|
+
service: this.props.service,
|
|
366
|
+
isExpanded: this.state.isExpanded,
|
|
367
|
+
accountsLinks: this.state.accountsData && this.state.accountsData.links,
|
|
368
|
+
onNavigating: this.props.onNavigating,
|
|
369
|
+
additionalSubMenuItems: this.props.additionalSubMenuItems
|
|
370
|
+
})]
|
|
371
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_OldIEMessage.default, {})]
|
|
372
|
+
})]
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
}]);
|
|
376
|
+
return OldHeader;
|
|
377
|
+
}(_react.Component); //TODO convert proptypes to typescript types
|
|
378
|
+
exports.OldHeader = OldHeader;
|
|
379
|
+
Header.propTypes = {
|
|
380
|
+
service: _propTypes.default.string,
|
|
381
|
+
skipLinkId: _propTypes.default.string,
|
|
382
|
+
enabled: _propTypes.default.bool,
|
|
383
|
+
search: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.object]),
|
|
384
|
+
auth: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.object]),
|
|
385
|
+
onNavigating: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.string]),
|
|
386
|
+
onResize: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.string]),
|
|
387
|
+
onDropdownOpen: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.string]),
|
|
388
|
+
onDropdownClose: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.string]),
|
|
389
|
+
onRendered: _propTypes.default.func,
|
|
390
|
+
additionalSubMenuItems: _propTypes.default.arrayOf(_propTypes.default.object),
|
|
391
|
+
renderSearchOnly: _propTypes.default.bool
|
|
218
392
|
};
|
|
219
393
|
var _default = Header;
|
|
220
|
-
exports
|
|
394
|
+
exports.default = _default;
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
flex-grow: 1;
|
|
85
85
|
float: left;
|
|
86
86
|
margin-right: utils.rem(spacing.$medium);
|
|
87
|
-
min-width: percentage(math.div(2, 3));
|
|
87
|
+
min-width: math.percentage(math.div(2, 3));
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
.mobileMenuBtn {
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
|
|
134
134
|
@include media-queries.mq($from: md) {
|
|
135
135
|
.scrim {
|
|
136
|
-
background: rgba(0
|
|
136
|
+
background: rgba(0 0 0 / 70%);
|
|
137
137
|
display: block;
|
|
138
138
|
left: 0;
|
|
139
139
|
min-height: 100vh;
|