@nice-digital/global-nav 4.1.729 → 4.1.730-GN-169-Dropdown-open

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 CHANGED
@@ -42,6 +42,8 @@
42
42
  - [Header.skipLinkId](#headerskiplinkid)
43
43
  - [Header.onNavigating](#headeronnavigating)
44
44
  - [Header.onResize](#headeronresize)
45
+ - [Header.onDropdownOpen](#headerondropdownopen)
46
+ - [Header.onDropdownClose](#headerondropdownclose)
45
47
  - [Header.additionalSubMenuItems](#headeradditionalsubmenuitems)
46
48
  - [Header.search](#headersearch)
47
49
  - [Header.search.url](#headersearchurl)
@@ -408,6 +410,53 @@ var global_nav_config = {
408
410
  };
409
411
  ```
410
412
 
413
+ ###### Header.onDropdownOpen
414
+
415
+ - Type: `String`, `Function`
416
+ - Default: `null`
417
+
418
+ Pass an `onDropdownOpen` property to enable callback when dropdown is open.
419
+ Pass either a function, or the name of a function defined on `window`. E.g.:
420
+
421
+ ```js
422
+ window.onDropdownOpenHandler = function () {
423
+ // Define your implementation here e.g.:
424
+ document.querySelector("body").classList.add("global-nav__dropdown--open");
425
+ };
426
+
427
+ var global_nav_config = {
428
+ header: {
429
+ onDropdownOpen: 'onDropdownOpenHandler',
430
+ },
431
+ };
432
+ ```
433
+
434
+ ###### Header.onDropdownClose
435
+
436
+ - Type: `String`, `Function`
437
+ - Default: `null`
438
+
439
+ Function parameters:
440
+
441
+ - `query` (`String`) the query term used in the search
442
+
443
+ Pass an `onDropdownClose` property to enable callback when dropdown is closed.
444
+ Pass either a function, or the name of a function defined on `window`. E.g.:
445
+
446
+ ```js
447
+ window.onDropdownCloseHandler = function (e) {
448
+ // Define your implementation here e.g.:
449
+ document.querySelector("body").classList.remove("global-nav__dropdown--open")
450
+
451
+ };
452
+
453
+ var global_nav_config = {
454
+ header: {
455
+ onDropdownClose: 'onDropdownCloseHandler',
456
+ },
457
+ };
458
+ ```
459
+
411
460
  ###### Header.additionalSubMenuItems
412
461
 
413
462
  - Type: `null | Array`
@@ -165,7 +165,7 @@ function Account(props) {
165
165
  "aria-labelledby": "my-account-button",
166
166
  onKeyDown: handleKeyDown,
167
167
  ref: myAccountMenu
168
- }, doesUseIdAM && accountsData.display_name && /*#__PURE__*/_react["default"].createElement("li", null, /*#__PURE__*/_react["default"].createElement("span", null, accountsData.display_name)), accountsData.links && Object.keys(accountsData.links).map(function (text, i) {
168
+ }, accountsData.links && Object.keys(accountsData.links).map(function (text, i) {
169
169
  return /*#__PURE__*/_react["default"].createElement("li", {
170
170
  key: i,
171
171
  role: "presentation"
@@ -106,14 +106,10 @@
106
106
  margin: 0;
107
107
  }
108
108
 
109
- span,
110
109
  a {
110
+ color: $nds-colour-link;
111
111
  display: block;
112
112
  padding: rem($nds-spacing-small $nds-spacing-medium);
113
- }
114
-
115
- a {
116
- color: $nds-colour-link;
117
113
  text-decoration: none;
118
114
  white-space: nowrap;
119
115
 
@@ -103,12 +103,40 @@ var Header = /*#__PURE__*/function (_Component) {
103
103
  }
104
104
  };
105
105
 
106
+ _proto.dropdownToggleHandler = function dropdownToggleHandler(idOfOpenDropdown) {
107
+ // 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
+
112
+ if (onDropdownOpen) {
113
+ var onDropdownOpenCallback = typeof onDropdownOpen === "function" ? onDropdownOpen : window[onDropdownOpen];
114
+
115
+ if (idOfOpenDropdown !== null && typeof onDropdownOpenCallback === "function") {
116
+ onDropdownOpenCallback();
117
+ return true;
118
+ }
119
+ }
120
+
121
+ if (onDropdownClose) {
122
+ var onDropdownCloseCallback = typeof onDropdownClose === "function" ? onDropdownClose : window[onDropdownClose];
123
+
124
+ if (idOfOpenDropdown == null && typeof onDropdownCloseCallback === "function") {
125
+ onDropdownCloseCallback();
126
+ return true;
127
+ }
128
+ }
129
+
130
+ return false;
131
+ };
132
+
106
133
  _proto.render = function render() {
107
134
  var _this3 = this;
108
135
 
109
136
  return this.props.enabled !== false && /*#__PURE__*/_react["default"].createElement(_HeaderContext.HeaderContextProvider, null, /*#__PURE__*/_react["default"].createElement(_HeaderContext.HeaderContext.Consumer, null, function (_ref) {
110
137
  (0, _newArrowCheck2["default"])(this, _this3);
111
138
  var idOfOpenDropdown = _ref.idOfOpenDropdown;
139
+ this.dropdownToggleHandler(idOfOpenDropdown);
112
140
  return /*#__PURE__*/_react["default"].createElement("span", {
113
141
  id: "scrim",
114
142
  className: idOfOpenDropdown !== null ? _HeaderModule["default"].scrim : undefined,
@@ -184,6 +212,8 @@ Header.propTypes = {
184
212
  auth: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].object]),
185
213
  onNavigating: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].string]),
186
214
  onResize: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].string]),
215
+ onDropdownOpen: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].string]),
216
+ onDropdownClose: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].string]),
187
217
  additionalSubMenuItems: _propTypes["default"].arrayOf(_propTypes["default"].object)
188
218
  };
189
219
  Header.defaultProps = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nice-digital/global-nav",
3
- "version": "4.1.729",
3
+ "version": "4.1.730-GN-169-Dropdown-open",
4
4
  "description": "Global header and footer components for NICE digital services",
5
5
  "main": "lib/index.js",
6
6
  "types": "./types.d.ts",