@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.
Files changed (74) hide show
  1. package/README.md +18 -55
  2. package/lib/Footer/Footer.js +31 -55
  3. package/lib/Footer/Legal/Legal.js +76 -71
  4. package/lib/Footer/Legal/index.js +10 -7
  5. package/lib/Footer/Pages/Pages.js +34 -54
  6. package/lib/Footer/Pages/Pages.module.scss +1 -1
  7. package/lib/Footer/Pages/index.js +10 -7
  8. package/lib/Footer/Pages/links.json +2 -5
  9. package/lib/Footer/Services/Services.js +65 -86
  10. package/lib/Footer/Services/Services.module.scss +1 -1
  11. package/lib/Footer/Services/index.js +10 -7
  12. package/lib/Footer/Social/Social.js +46 -57
  13. package/lib/Footer/Social/index.js +10 -7
  14. package/lib/Footer/index.js +10 -7
  15. package/lib/Header/Account/Account.js +87 -109
  16. package/lib/Header/Account/index.js +10 -7
  17. package/lib/Header/Account/nice-accounts.js +7 -12
  18. package/lib/Header/Header.js +345 -171
  19. package/lib/Header/Header.module.scss +2 -2
  20. package/lib/Header/Nav/Dropdown/Components/AboutUs.js +216 -105
  21. package/lib/Header/Nav/Dropdown/Components/BNF.js +120 -75
  22. package/lib/Header/Nav/Dropdown/Components/BNFc.js +115 -73
  23. package/lib/Header/Nav/Dropdown/Components/Button.js +11 -14
  24. package/lib/Header/Nav/Dropdown/Components/CKS.js +115 -73
  25. package/lib/Header/Nav/Dropdown/Components/Grid.js +16 -22
  26. package/lib/Header/Nav/Dropdown/Components/Guidance.js +244 -128
  27. package/lib/Header/Nav/Dropdown/Components/LifeSciences.js +169 -108
  28. package/lib/Header/Nav/Dropdown/Components/StandardsAndIndicators.js +83 -45
  29. package/lib/Header/Nav/Dropdown/Components/index.js +46 -24
  30. package/lib/Header/Nav/Dropdown/Dropdown.js +48 -63
  31. package/lib/Header/Nav/Dropdown/Dropdown.module.scss +1 -1
  32. package/lib/Header/Nav/Dropdown/index.js +10 -7
  33. package/lib/Header/Nav/Nav.js +84 -102
  34. package/lib/Header/Nav/Nav.module.scss +2 -4
  35. package/lib/Header/Nav/NavLinks/NavLinks.js +118 -137
  36. package/lib/Header/Nav/NavLinks/NavLinks.module.scss +1 -1
  37. package/lib/Header/Nav/NavLinks/index.js +10 -7
  38. package/lib/Header/Nav/SubNav/SubNav.js +54 -90
  39. package/lib/Header/Nav/SubNav/index.js +10 -7
  40. package/lib/Header/Nav/__mocks__/services.json +3 -3
  41. package/lib/Header/Nav/index.js +10 -7
  42. package/lib/Header/OldIEMessage/OldIEMessage.js +65 -67
  43. package/lib/Header/OldIEMessage/ie.js +14 -0
  44. package/lib/Header/OldIEMessage/index.js +10 -7
  45. package/lib/Header/Search/Autocomplete/Autocomplete.js +169 -194
  46. package/lib/Header/Search/Autocomplete/Autocomplete.module.scss +9 -1
  47. package/lib/Header/Search/Autocomplete/index.js +10 -7
  48. package/lib/Header/Search/Autocomplete/suggester/index.js +21 -28
  49. package/lib/Header/Search/Autocomplete/suggester/phrase-finder.js +13 -14
  50. package/lib/Header/Search/Autocomplete/suggester/term-finder.js +18 -21
  51. package/lib/Header/Search/Autocomplete/suggester/tokenizer.js +12 -17
  52. package/lib/Header/Search/Search.js +73 -90
  53. package/lib/Header/Search/index.js +10 -7
  54. package/lib/Header/SkipLink/SkipLink.js +24 -62
  55. package/lib/Header/SkipLink/SkipLink.module.scss +5 -1
  56. package/lib/Header/SkipLink/index.js +10 -7
  57. package/lib/Header/_header-settings.scss +0 -2
  58. package/lib/Header/context/HeaderContext.js +28 -54
  59. package/lib/Header/index.js +10 -7
  60. package/lib/Main/BackToTop/BackToTop.js +22 -25
  61. package/lib/Main/BackToTop/BackToTop.module.scss +1 -4
  62. package/lib/Main/Main.js +22 -26
  63. package/lib/Main/index.js +10 -7
  64. package/lib/TrackedLink/TrackedLink.js +48 -74
  65. package/lib/TrackedLink/index.js +10 -7
  66. package/lib/hooks/useEscapeKeydown.js +8 -21
  67. package/lib/hooks/useIsClient.js +20 -0
  68. package/lib/index.js +22 -12
  69. package/lib/renderer.js +21 -30
  70. package/lib/tracker/index.js +8 -25
  71. package/lib/utils.js +4 -7
  72. package/package.json +68 -65
  73. package/types.d.ts +1 -0
  74. package/lib/Header/Account/AccountOld.js +0 -227
@@ -1,220 +1,394 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- exports.__esModule = true;
6
- exports["default"] = exports.Header = void 0;
7
-
8
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
-
10
- var _newArrowCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/newArrowCheck"));
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 _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
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 _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; }
43
-
44
- var Header = /*#__PURE__*/function (_Component) {
45
- (0, _inheritsLoose2["default"])(Header, _Component);
46
-
47
- function Header(props) {
48
- var _this;
49
-
50
- _this = _Component.call(this, props) || this;
51
- _this.state = {
52
- isExpanded: false,
53
- isLoggedIn: false,
54
- accountsData: null,
55
- scrimIsActive: false
56
- };
57
- _this.handleMobileMenuBtnClick = _this.handleMobileMenuBtnClick.bind((0, _assertThisInitialized2["default"])(_this));
58
- _this.handleLoginStatusChecked = _this.handleLoginStatusChecked.bind((0, _assertThisInitialized2["default"])(_this));
59
- _this.handleLogoClick = _this.handleLogoClick.bind((0, _assertThisInitialized2["default"])(_this));
60
- return _this;
61
- }
62
-
63
- var _proto = Header.prototype;
64
-
65
- _proto.componentDidMount = function componentDidMount() {
66
- if (!document.getElementById(this.props.skipLinkId)) {
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
- firstH1OnPage ? firstH1OnPage.setAttribute("id", this.props.skipLinkId) : console.warn("Global nav \"skip to link\" can't find a H1 tag or an element with the ID of \"" + this.props.skipLinkId + "\"");
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
- this.setState(function (prevState) {
77
- (0, _newArrowCheck2["default"])(this, _this2);
78
- return {
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 = 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
- this.setState({
95
- isLoggedIn: true,
96
- accountsData: accountsData
97
- });
87
+ setIsLoggedIn(true);
88
+ setAccountsData(accountsData);
98
89
  } else {
99
- this.setState({
100
- isLoggedIn: false,
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
- _proto.render = function render() {
130
- var _this3 = this;
131
-
132
- return this.props.enabled !== false && /*#__PURE__*/_react["default"].createElement(_HeaderContext.HeaderContextProvider, null, /*#__PURE__*/_react["default"].createElement(_HeaderContext.HeaderContext.Consumer, null, function (_ref) {
133
- (0, _newArrowCheck2["default"])(this, _this3);
134
- var idOfOpenDropdown = _ref.idOfOpenDropdown;
135
- this.dropdownToggleHandler(idOfOpenDropdown);
136
- return /*#__PURE__*/_react["default"].createElement("span", {
137
- id: "scrim",
138
- className: idOfOpenDropdown !== null ? _HeaderModule["default"].scrim : undefined,
139
- "aria-hidden": "true"
140
- });
141
- }.bind(this)), /*#__PURE__*/_react["default"].createElement("div", {
142
- className: _HeaderModule["default"].header,
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
- }, /*#__PURE__*/_react["default"].createElement("header", {
146
- "aria-label": "Site header"
147
- }, /*#__PURE__*/_react["default"].createElement("ul", {
148
- className: _HeaderModule["default"].a11yLinks,
149
- "aria-label": "Accessibility links"
150
- }, /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement(_SkipLink["default"], {
151
- to: "#" + this.props.skipLinkId
152
- }, "Skip to content")), /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement(_SkipLink["default"], {
153
- to: "https://www.nice.org.uk/accessibility"
154
- }, "Accessibility help"))), /*#__PURE__*/_react["default"].createElement("div", {
155
- className: _HeaderModule["default"].container
156
- }, /*#__PURE__*/_react["default"].createElement("a", {
157
- href: "https://www.nice.org.uk/",
158
- "aria-label": "Home",
159
- className: _HeaderModule["default"].home,
160
- onClick: this.handleLogoClick,
161
- "data-tracking": "Logo"
162
- }, /*#__PURE__*/_react["default"].createElement(_LogoFull["default"], {
163
- className: _HeaderModule["default"].icon,
164
- width: null,
165
- height: null
166
- })), /*#__PURE__*/_react["default"].createElement("div", {
167
- className: _HeaderModule["default"].wrapper
168
- }, /*#__PURE__*/_react["default"].createElement("div", {
169
- className: _HeaderModule["default"].search
170
- }, this.props.search && /*#__PURE__*/_react["default"].createElement(_Search["default"], (0, _extends2["default"])({
171
- skipLinkId: this.props.skipLinkId,
172
- onNavigating: this.props.onNavigating
173
- }, this.props.search))), /*#__PURE__*/_react["default"].createElement("button", {
174
- className: _HeaderModule["default"].mobileMenuBtn,
175
- id: "header-menu-button",
176
- type: "button",
177
- "aria-controls": "header-menu",
178
- "aria-expanded": this.state.isExpanded,
179
- "aria-haspopup": "menu",
180
- "aria-label": this.state.isExpanded ? "Close site menu" : "Expand site menu",
181
- onClick: this.handleMobileMenuBtnClick
182
- }, this.state.isExpanded ? "Close" : "Menu"), this.props.auth !== false && /*#__PURE__*/_react["default"].createElement("div", {
183
- className: _HeaderModule["default"].account
184
- }, /*#__PURE__*/_react["default"].createElement(_Account["default"], (0, _extends2["default"])({
185
- onLoginStatusChecked: this.handleLoginStatusChecked,
186
- isLoggedIn: this.state.isLoggedIn,
187
- accountsData: this.state.accountsData
188
- }, this.props.auth))))), /*#__PURE__*/_react["default"].createElement(_Nav["default"], {
189
- skipLinkId: this.props.skipLinkId,
190
- service: this.props.service,
191
- isExpanded: this.state.isExpanded,
192
- accountsLinks: this.state.accountsData && this.state.accountsData.links,
193
- onNavigating: this.props.onNavigating,
194
- additionalSubMenuItems: this.props.additionalSubMenuItems
195
- })), /*#__PURE__*/_react["default"].createElement(_OldIEMessage["default"], null)));
196
- };
197
-
198
- return Header;
199
- }(_react.Component);
200
-
201
- exports.Header = Header;
202
- Header.propTypes = {
203
- service: _propTypes["default"].string,
204
- skipLinkId: _propTypes["default"].string,
205
- enabled: _propTypes["default"].bool,
206
- search: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].object]),
207
- auth: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].object]),
208
- onNavigating: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].string]),
209
- onResize: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].string]),
210
- onDropdownOpen: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].string]),
211
- onDropdownClose: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].string]),
212
- additionalSubMenuItems: _propTypes["default"].arrayOf(_propTypes["default"].object)
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
- Header.defaultProps = {
215
- search: {},
216
- skipLinkId: "content-start",
217
- additionalSubMenuItems: []
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["default"] = _default;
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, 0, 0, 0.7);
136
+ background: rgba(0 0 0 / 70%);
137
137
  display: block;
138
138
  left: 0;
139
139
  min-height: 100vh;