carbon-react 109.1.0 → 109.1.3

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 (60) hide show
  1. package/esm/__internal__/label/label.component.d.ts +1 -1
  2. package/esm/__internal__/label/label.component.js +2 -2
  3. package/esm/components/checkbox/checkbox-group.component.js +0 -5
  4. package/esm/components/checkbox/checkbox-group.d.ts +0 -2
  5. package/esm/components/checkbox/checkbox.component.js +1 -3
  6. package/esm/components/date/date.component.js +4 -7
  7. package/esm/components/flat-table/sort/sort.component.js +2 -1
  8. package/esm/components/flat-table/sort/sort.style.js +0 -1
  9. package/esm/components/help/help.component.d.ts +43 -0
  10. package/esm/components/help/help.component.js +194 -84
  11. package/esm/components/help/help.config.d.ts +1 -0
  12. package/esm/components/help/help.style.d.ts +4 -1
  13. package/esm/components/help/index.d.ts +2 -1
  14. package/esm/components/menu/__internal__/submenu/submenu.component.js +4 -6
  15. package/esm/components/multi-action-button/multi-action-button.component.js +4 -13
  16. package/esm/components/popover-container/popover-container.component.d.ts +1 -1
  17. package/esm/components/popover-container/popover-container.component.js +29 -12
  18. package/esm/components/popover-container/popover-container.style.d.ts +0 -2
  19. package/esm/components/popover-container/popover-container.style.js +0 -8
  20. package/esm/components/split-button/split-button.component.js +4 -11
  21. package/esm/hooks/__internal__/useClickAwayListener/index.d.ts +1 -0
  22. package/esm/hooks/__internal__/useClickAwayListener/index.js +1 -0
  23. package/esm/hooks/__internal__/useClickAwayListener/useClickAwayListener.d.ts +3 -0
  24. package/esm/hooks/__internal__/useClickAwayListener/useClickAwayListener.js +23 -0
  25. package/lib/__internal__/label/label.component.d.ts +1 -1
  26. package/lib/__internal__/label/label.component.js +2 -2
  27. package/lib/components/checkbox/checkbox-group.component.js +0 -5
  28. package/lib/components/checkbox/checkbox-group.d.ts +0 -2
  29. package/lib/components/checkbox/checkbox.component.js +1 -3
  30. package/lib/components/date/date.component.js +4 -7
  31. package/lib/components/flat-table/sort/sort.component.js +2 -1
  32. package/lib/components/flat-table/sort/sort.style.js +0 -1
  33. package/lib/components/help/help.component.d.ts +43 -0
  34. package/lib/components/help/help.component.js +194 -87
  35. package/lib/components/help/help.config.d.ts +1 -0
  36. package/lib/components/help/help.style.d.ts +4 -1
  37. package/lib/components/help/index.d.ts +2 -1
  38. package/lib/components/menu/__internal__/submenu/submenu.component.js +4 -6
  39. package/lib/components/multi-action-button/multi-action-button.component.js +5 -13
  40. package/lib/components/popover-container/popover-container.component.d.ts +1 -1
  41. package/lib/components/popover-container/popover-container.component.js +30 -12
  42. package/lib/components/popover-container/popover-container.style.d.ts +0 -2
  43. package/lib/components/popover-container/popover-container.style.js +0 -8
  44. package/lib/components/split-button/split-button.component.js +5 -11
  45. package/lib/hooks/__internal__/useClickAwayListener/index.d.ts +1 -0
  46. package/lib/{__internal__/click-away-wrapper → hooks/__internal__/useClickAwayListener}/index.js +2 -2
  47. package/lib/hooks/__internal__/useClickAwayListener/package.json +6 -0
  48. package/lib/hooks/__internal__/useClickAwayListener/useClickAwayListener.d.ts +3 -0
  49. package/lib/hooks/__internal__/useClickAwayListener/useClickAwayListener.js +33 -0
  50. package/package.json +1 -1
  51. package/esm/__internal__/click-away-wrapper/click-away-wrapper.component.d.ts +0 -12
  52. package/esm/__internal__/click-away-wrapper/click-away-wrapper.component.js +0 -43
  53. package/esm/__internal__/click-away-wrapper/index.d.ts +0 -2
  54. package/esm/__internal__/click-away-wrapper/index.js +0 -1
  55. package/esm/components/help/help.d.ts +0 -41
  56. package/lib/__internal__/click-away-wrapper/click-away-wrapper.component.d.ts +0 -12
  57. package/lib/__internal__/click-away-wrapper/click-away-wrapper.component.js +0 -59
  58. package/lib/__internal__/click-away-wrapper/index.d.ts +0 -2
  59. package/lib/__internal__/click-away-wrapper/package.json +0 -6
  60. package/lib/components/help/help.d.ts +0 -41
@@ -3,14 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.default = exports.Help = void 0;
7
7
 
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
- var _propTypes2 = _interopRequireDefault(require("@styled-system/prop-types"));
13
-
14
12
  var _icon = _interopRequireDefault(require("../icon"));
15
13
 
16
14
  var _tags = _interopRequireDefault(require("../../__internal__/utils/helpers/tags/tags"));
@@ -23,8 +21,6 @@ var _tooltipProvider = require("../../__internal__/tooltip-provider");
23
21
 
24
22
  var _utils = require("../../style/utils");
25
23
 
26
- var _help2 = require("./help.config");
27
-
28
24
  var _guid = _interopRequireDefault(require("../../__internal__/utils/helpers/guid"));
29
25
 
30
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -35,23 +31,21 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
35
31
 
36
32
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
37
33
 
38
- const marginPropTypes = (0, _utils.filterStyledSystemMarginProps)(_propTypes2.default.space);
39
-
40
34
  const Help = ({
35
+ as,
36
+ ariaLabel = "help",
37
+ children,
41
38
  className,
42
39
  href,
43
40
  helpId,
44
- children,
45
- tabIndex,
46
- as,
47
- tooltipPosition,
48
41
  isFocused,
49
- type,
50
- tooltipId,
42
+ tabIndex = 0,
51
43
  tooltipBgColor,
52
44
  tooltipFontColor,
53
45
  tooltipFlipOverrides,
54
- ariaLabel = "help",
46
+ tooltipId,
47
+ tooltipPosition = "top",
48
+ type = "help",
55
49
  ...rest
56
50
  }) => {
57
51
  const defaultTooltipId = (0, _react.useRef)((0, _guid.default)());
@@ -61,23 +55,25 @@ const Help = ({
61
55
  helpAriaLabel
62
56
  } = (0, _react.useContext)(_tooltipProvider.TooltipContext);
63
57
  (0, _react.useEffect)(() => {
58
+ function handleKeyPress(ev) {
59
+ if (_events.default.isEscKey(ev)) {
60
+ var _helpElement$current;
61
+
62
+ helpElement === null || helpElement === void 0 ? void 0 : (_helpElement$current = helpElement.current) === null || _helpElement$current === void 0 ? void 0 : _helpElement$current.blur();
63
+ updateTooltipVisible(false);
64
+ }
65
+ }
66
+
64
67
  document.addEventListener("keydown", handleKeyPress);
65
68
  return function cleanup() {
66
69
  document.removeEventListener("keydown", handleKeyPress);
67
70
  };
68
71
  });
69
- const tagType = as || href && "a";
72
+ const tagType = as || href && "a" || "div";
70
73
 
71
- function handleKeyPress(ev) {
72
- if (_events.default.isEscKey(ev)) {
73
- helpElement.current.blur();
74
- updateTooltipVisible(false);
75
- }
76
- }
77
-
78
- function handleFocusBlur(bool) {
74
+ function handleFocusBlur(isVisible) {
79
75
  return () => {
80
- updateTooltipVisible(bool);
76
+ updateTooltipVisible(isVisible);
81
77
  };
82
78
  }
83
79
 
@@ -90,7 +86,9 @@ const Help = ({
90
86
  id: helpId,
91
87
  ref: helpElement,
92
88
  onClick: () => {
93
- helpElement.current.focus();
89
+ var _helpElement$current2;
90
+
91
+ helpElement === null || helpElement === void 0 ? void 0 : (_helpElement$current2 = helpElement.current) === null || _helpElement$current2 === void 0 ? void 0 : _helpElement$current2.focus();
94
92
  },
95
93
  onFocus: handleFocusBlur(true),
96
94
  onBlur: handleFocusBlur(false),
@@ -117,68 +115,177 @@ const Help = ({
117
115
  }));
118
116
  };
119
117
 
120
- Help.propTypes = { ...marginPropTypes,
121
-
122
- /** [Legacy] A custom class name for the component. */
123
- className: _propTypes.default.string,
124
-
125
- /** Message to display in tooltip */
126
- children: _propTypes.default.node,
127
-
128
- /** The unique id of the component */
129
- helpId: _propTypes.default.string,
130
-
131
- /** Overrides the default tabindex of the component */
132
- tabIndex: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
133
-
134
- /** Overrides the default 'as' attribute of the Help component */
135
- as: _propTypes.default.string,
136
-
137
- /** Position of tooltip relative to target */
138
- tooltipPosition: _propTypes.default.oneOf(["bottom", "left", "right", "top"]),
139
-
140
- /** A path for the anchor */
141
- href: _propTypes.default.string,
142
-
143
- /** A boolean received from IconWrapper */
144
- isFocused: _propTypes.default.bool,
145
-
146
- /** <a href="https://brand.sage.com/d/NdbrveWvNheA/foundations#/icons/icons" target="_blank">List of supported icons</a>
147
- *
148
- * Icon to display, can be received from label component
149
- *
150
- */
151
- type: _propTypes.default.string,
152
-
153
- /** Override background color of the Tooltip, provide any color from palette or any valid css color value. */
154
- tooltipBgColor: _propTypes.default.string,
155
-
156
- /** Override font color of the Tooltip, provide any color from palette or any valid css color value. */
157
- tooltipFontColor: _propTypes.default.string,
158
-
159
- /** Overrides the default flip behaviour of the Tooltip, must be an array containing some or all of ["top", "bottom", "left", "right"] (see https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements) */
160
- tooltipFlipOverrides: (props, propName, componentName) => {
161
- const prop = props[propName];
162
- const isValid = prop && Array.isArray(prop) && prop.every(placement => _help2.HELP_POSITIONS.includes(placement));
163
-
164
- if (!prop || isValid) {
165
- return null;
166
- }
167
-
168
- return new Error( // eslint-disable-next-line max-len
169
- `The \`${propName}\` prop supplied to \`${componentName}\` must be an array containing some or all of ["top", "bottom", "left", "right"].`);
170
- },
171
-
172
- /** Id passed to the tooltip container, used for accessibility purposes. */
173
- tooltipId: _propTypes.default.string,
174
-
175
- /** Aria label */
176
- ariaLabel: _propTypes.default.string
177
- };
178
- Help.defaultProps = {
179
- tooltipPosition: "top",
180
- tabIndex: 0,
181
- type: "help"
118
+ exports.Help = Help;
119
+ Help.propTypes = {
120
+ "ariaLabel": _propTypes.default.string,
121
+ "as": _propTypes.default.oneOf(["a", "abbr", "address", "animate", "animateMotion", "animateTransform", "area", "article", "aside", "audio", "b", "base", "bdi", "bdo", "big", "blockquote", "body", "br", "button", "canvas", "caption", "circle", "cite", "clipPath", "code", "col", "colgroup", "data", "datalist", "dd", "defs", "del", "desc", "details", "dfn", "dialog", "div", "dl", "dt", "ellipse", "em", "embed", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "fieldset", "figcaption", "figure", "filter", "footer", "foreignObject", "form", "g", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "iframe", "image", "img", "input", "ins", "kbd", "keygen", "label", "legend", "li", "line", "linearGradient", "link", "main", "map", "mark", "marker", "mask", "menu", "menuitem", "meta", "metadata", "meter", "mpath", "nav", "noindex", "noscript", "object", "ol", "optgroup", "option", "output", "p", "param", "path", "pattern", "picture", "polygon", "polyline", "pre", "progress", "q", "radialGradient", "rect", "rp", "rt", "ruby", "s", "samp", "script", "section", "select", "slot", "small", "source", "span", "stop", "strong", "style", "sub", "summary", "sup", "svg", "switch", "symbol", "table", "tbody", "td", "template", "text", "textarea", "textPath", "tfoot", "th", "thead", "time", "title", "tr", "track", "tspan", "u", "ul", "use", "var", "video", "view", "wbr", "webview"]),
122
+ "children": _propTypes.default.node,
123
+ "className": _propTypes.default.string,
124
+ "helpId": _propTypes.default.string,
125
+ "href": _propTypes.default.string,
126
+ "isFocused": _propTypes.default.bool,
127
+ "m": _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf([null]), _propTypes.default.number, _propTypes.default.shape({
128
+ "__@toStringTag": _propTypes.default.string.isRequired,
129
+ "description": _propTypes.default.string,
130
+ "toString": _propTypes.default.func.isRequired,
131
+ "valueOf": _propTypes.default.func.isRequired
132
+ }), _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.shape({
133
+ "__@toStringTag": _propTypes.default.string.isRequired,
134
+ "description": _propTypes.default.string,
135
+ "toString": _propTypes.default.func.isRequired,
136
+ "valueOf": _propTypes.default.func.isRequired
137
+ }), _propTypes.default.string]),
138
+ "margin": _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf([null]), _propTypes.default.number, _propTypes.default.shape({
139
+ "__@toStringTag": _propTypes.default.string.isRequired,
140
+ "description": _propTypes.default.string,
141
+ "toString": _propTypes.default.func.isRequired,
142
+ "valueOf": _propTypes.default.func.isRequired
143
+ }), _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.shape({
144
+ "__@toStringTag": _propTypes.default.string.isRequired,
145
+ "description": _propTypes.default.string,
146
+ "toString": _propTypes.default.func.isRequired,
147
+ "valueOf": _propTypes.default.func.isRequired
148
+ }), _propTypes.default.string]),
149
+ "marginBottom": _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf([null]), _propTypes.default.number, _propTypes.default.shape({
150
+ "__@toStringTag": _propTypes.default.string.isRequired,
151
+ "description": _propTypes.default.string,
152
+ "toString": _propTypes.default.func.isRequired,
153
+ "valueOf": _propTypes.default.func.isRequired
154
+ }), _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.shape({
155
+ "__@toStringTag": _propTypes.default.string.isRequired,
156
+ "description": _propTypes.default.string,
157
+ "toString": _propTypes.default.func.isRequired,
158
+ "valueOf": _propTypes.default.func.isRequired
159
+ }), _propTypes.default.string]),
160
+ "marginLeft": _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf([null]), _propTypes.default.number, _propTypes.default.shape({
161
+ "__@toStringTag": _propTypes.default.string.isRequired,
162
+ "description": _propTypes.default.string,
163
+ "toString": _propTypes.default.func.isRequired,
164
+ "valueOf": _propTypes.default.func.isRequired
165
+ }), _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.shape({
166
+ "__@toStringTag": _propTypes.default.string.isRequired,
167
+ "description": _propTypes.default.string,
168
+ "toString": _propTypes.default.func.isRequired,
169
+ "valueOf": _propTypes.default.func.isRequired
170
+ }), _propTypes.default.string]),
171
+ "marginRight": _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf([null]), _propTypes.default.number, _propTypes.default.shape({
172
+ "__@toStringTag": _propTypes.default.string.isRequired,
173
+ "description": _propTypes.default.string,
174
+ "toString": _propTypes.default.func.isRequired,
175
+ "valueOf": _propTypes.default.func.isRequired
176
+ }), _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.shape({
177
+ "__@toStringTag": _propTypes.default.string.isRequired,
178
+ "description": _propTypes.default.string,
179
+ "toString": _propTypes.default.func.isRequired,
180
+ "valueOf": _propTypes.default.func.isRequired
181
+ }), _propTypes.default.string]),
182
+ "marginTop": _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf([null]), _propTypes.default.number, _propTypes.default.shape({
183
+ "__@toStringTag": _propTypes.default.string.isRequired,
184
+ "description": _propTypes.default.string,
185
+ "toString": _propTypes.default.func.isRequired,
186
+ "valueOf": _propTypes.default.func.isRequired
187
+ }), _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.shape({
188
+ "__@toStringTag": _propTypes.default.string.isRequired,
189
+ "description": _propTypes.default.string,
190
+ "toString": _propTypes.default.func.isRequired,
191
+ "valueOf": _propTypes.default.func.isRequired
192
+ }), _propTypes.default.string]),
193
+ "marginX": _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf([null]), _propTypes.default.number, _propTypes.default.shape({
194
+ "__@toStringTag": _propTypes.default.string.isRequired,
195
+ "description": _propTypes.default.string,
196
+ "toString": _propTypes.default.func.isRequired,
197
+ "valueOf": _propTypes.default.func.isRequired
198
+ }), _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.shape({
199
+ "__@toStringTag": _propTypes.default.string.isRequired,
200
+ "description": _propTypes.default.string,
201
+ "toString": _propTypes.default.func.isRequired,
202
+ "valueOf": _propTypes.default.func.isRequired
203
+ }), _propTypes.default.string]),
204
+ "marginY": _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf([null]), _propTypes.default.number, _propTypes.default.shape({
205
+ "__@toStringTag": _propTypes.default.string.isRequired,
206
+ "description": _propTypes.default.string,
207
+ "toString": _propTypes.default.func.isRequired,
208
+ "valueOf": _propTypes.default.func.isRequired
209
+ }), _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.shape({
210
+ "__@toStringTag": _propTypes.default.string.isRequired,
211
+ "description": _propTypes.default.string,
212
+ "toString": _propTypes.default.func.isRequired,
213
+ "valueOf": _propTypes.default.func.isRequired
214
+ }), _propTypes.default.string]),
215
+ "mb": _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf([null]), _propTypes.default.number, _propTypes.default.shape({
216
+ "__@toStringTag": _propTypes.default.string.isRequired,
217
+ "description": _propTypes.default.string,
218
+ "toString": _propTypes.default.func.isRequired,
219
+ "valueOf": _propTypes.default.func.isRequired
220
+ }), _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.shape({
221
+ "__@toStringTag": _propTypes.default.string.isRequired,
222
+ "description": _propTypes.default.string,
223
+ "toString": _propTypes.default.func.isRequired,
224
+ "valueOf": _propTypes.default.func.isRequired
225
+ }), _propTypes.default.string]),
226
+ "ml": _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf([null]), _propTypes.default.number, _propTypes.default.shape({
227
+ "__@toStringTag": _propTypes.default.string.isRequired,
228
+ "description": _propTypes.default.string,
229
+ "toString": _propTypes.default.func.isRequired,
230
+ "valueOf": _propTypes.default.func.isRequired
231
+ }), _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.shape({
232
+ "__@toStringTag": _propTypes.default.string.isRequired,
233
+ "description": _propTypes.default.string,
234
+ "toString": _propTypes.default.func.isRequired,
235
+ "valueOf": _propTypes.default.func.isRequired
236
+ }), _propTypes.default.string]),
237
+ "mr": _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf([null]), _propTypes.default.number, _propTypes.default.shape({
238
+ "__@toStringTag": _propTypes.default.string.isRequired,
239
+ "description": _propTypes.default.string,
240
+ "toString": _propTypes.default.func.isRequired,
241
+ "valueOf": _propTypes.default.func.isRequired
242
+ }), _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.shape({
243
+ "__@toStringTag": _propTypes.default.string.isRequired,
244
+ "description": _propTypes.default.string,
245
+ "toString": _propTypes.default.func.isRequired,
246
+ "valueOf": _propTypes.default.func.isRequired
247
+ }), _propTypes.default.string]),
248
+ "mt": _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf([null]), _propTypes.default.number, _propTypes.default.shape({
249
+ "__@toStringTag": _propTypes.default.string.isRequired,
250
+ "description": _propTypes.default.string,
251
+ "toString": _propTypes.default.func.isRequired,
252
+ "valueOf": _propTypes.default.func.isRequired
253
+ }), _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.shape({
254
+ "__@toStringTag": _propTypes.default.string.isRequired,
255
+ "description": _propTypes.default.string,
256
+ "toString": _propTypes.default.func.isRequired,
257
+ "valueOf": _propTypes.default.func.isRequired
258
+ }), _propTypes.default.string]),
259
+ "mx": _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf([null]), _propTypes.default.number, _propTypes.default.shape({
260
+ "__@toStringTag": _propTypes.default.string.isRequired,
261
+ "description": _propTypes.default.string,
262
+ "toString": _propTypes.default.func.isRequired,
263
+ "valueOf": _propTypes.default.func.isRequired
264
+ }), _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.shape({
265
+ "__@toStringTag": _propTypes.default.string.isRequired,
266
+ "description": _propTypes.default.string,
267
+ "toString": _propTypes.default.func.isRequired,
268
+ "valueOf": _propTypes.default.func.isRequired
269
+ }), _propTypes.default.string]),
270
+ "my": _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.oneOf([null]), _propTypes.default.number, _propTypes.default.shape({
271
+ "__@toStringTag": _propTypes.default.string.isRequired,
272
+ "description": _propTypes.default.string,
273
+ "toString": _propTypes.default.func.isRequired,
274
+ "valueOf": _propTypes.default.func.isRequired
275
+ }), _propTypes.default.string])), _propTypes.default.number, _propTypes.default.object, _propTypes.default.shape({
276
+ "__@toStringTag": _propTypes.default.string.isRequired,
277
+ "description": _propTypes.default.string,
278
+ "toString": _propTypes.default.func.isRequired,
279
+ "valueOf": _propTypes.default.func.isRequired
280
+ }), _propTypes.default.string]),
281
+ "tabIndex": _propTypes.default.number,
282
+ "tooltipBgColor": _propTypes.default.string,
283
+ "tooltipFlipOverrides": _propTypes.default.arrayOf(_propTypes.default.oneOf(["bottom", "left", "right", "top"])),
284
+ "tooltipFontColor": _propTypes.default.string,
285
+ "tooltipId": _propTypes.default.string,
286
+ "tooltipPosition": _propTypes.default.oneOf(["bottom", "left", "right", "top"]),
287
+ "type": _propTypes.default.oneOf(["add", "admin", "alert", "analysis", "arrow_down", "arrow_left_boxed", "arrow_left_right_small", "arrow_left_small", "arrow_left", "arrow_right_small", "arrow_right", "arrow_up", "arrow", "attach", "bank", "basket_with_squares", "basket", "bin", "block_arrow_right", "blocked_square", "blocked", "bold", "boxed_shapes", "bulk_destroy", "bullet_list_dotted", "bullet_list_numbers", "bullet_list", "business", "calendar_today", "calendar", "call", "camera", "card_view", "caret_down", "caret_large_down", "caret_large_left", "caret_large_right", "caret_large_up", "caret_left", "caret_right", "caret_up", "cart", "chart_bar", "chart_line", "chart_pie", "chat_notes", "chat", "chevron_down_thick", "chevron_down", "chevron_left_thick", "chevron_left", "chevron_right_thick", "chevron_right", "chevron_up_thick", "chevron_up", "circle_with_dots", "circles_connection", "clock", "close", "coins", "collaborate", "computer_clock", "connect", "contacts", "copy", "create", "credit_card_slash", "credit_card", "cross_circle", "cross", "csv", "delete", "delivery", "disconnect", "disputed", "document_right_align", "document_tick", "document_vertical_lines", "download", "draft", "drag_vertical", "drag", "dropdown", "duplicate", "edit", "edited", "ellipsis_horizontal", "ellipsis_vertical", "email_switch", "email", "entry", "envelope_dollar", "envelope_euro", "error_square", "error", "euro", "expand", "factory", "favourite_lined", "favourite", "fax", "feedback", "file_excel", "file_generic", "file_image", "file_pdf", "file_word", "files_leaning", "filter_new", "filter", "fit_height", "fit_width", "flag", "folder", "gift", "go", "graph", "grid", "help", "hide", "home", "image", "in_progress", "in_transit", "individual", "info", "italic", "key", "ledger_arrow_left", "ledger_arrow_right", "ledger", "lightbulb_off", "lightbulb_on", "link", "list_view", "location", "locked", "logout", "lookup", "marker", "message", "minus_large", "minus", "mobile", "money_bag", "none", "old_warning", "pause_circle", "pause", "pdf", "people_switch", "people", "person_info", "person_tick", "person", "phone", "piggy_bank", "play_circle", "play", "plus_large", "plus", "pound", "print", "progress", "progressed", "question_hollow", "question_mark", "question", "refresh_clock", "refresh", "remove", "sage_coin", "save", "scan", "search", "services", "settings_old", "settings", "share", "shop", "sort_down", "sort_up", "spanner", "split_container", "split", "square_dot", "squares_nine", "stacked_boxes", "stacked_squares", "submitted", "sync", "tag", "talk", "three_boxes", "tick_circle", "tick", "true_tick", "undo", "unlocked", "upload", "uploaded", "video", "view", "warning"])
182
288
  };
289
+ Help.displayName = "Help";
183
290
  var _default = Help;
184
291
  exports.default = _default;
@@ -0,0 +1 @@
1
+ export declare const HELP_POSITIONS: string[];
@@ -1,2 +1,5 @@
1
+ interface StyledHelpProps {
2
+ href?: string;
3
+ }
4
+ declare const StyledHelp: import("styled-components").StyledComponent<"div", any, StyledHelpProps, never>;
1
5
  export default StyledHelp;
2
- declare const StyledHelp: import("styled-components").StyledComponent<"div", any, {}, never>;
@@ -1 +1,2 @@
1
- export { default } from "./help";
1
+ export { default } from "./help.component";
2
+ export type { HelpProps } from "./help.component";
@@ -27,7 +27,7 @@ var _scrollableBlock = _interopRequireDefault(require("../../scrollable-block"))
27
27
 
28
28
  var _submenu2 = _interopRequireDefault(require("./submenu.context"));
29
29
 
30
- var _clickAwayWrapper = _interopRequireDefault(require("../../../../__internal__/click-away-wrapper"));
30
+ var _useClickAwayListener = _interopRequireDefault(require("../../../../hooks/__internal__/useClickAwayListener"));
31
31
 
32
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
33
 
@@ -232,6 +232,7 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
232
232
  } // eslint-disable-next-line react-hooks/exhaustive-deps
233
233
 
234
234
  }, [characterString]);
235
+ (0, _useClickAwayListener.default)([submenuRef], handleClickAway);
235
236
 
236
237
  if (inFullscreenView) {
237
238
  return /*#__PURE__*/_react.default.createElement(_submenu.StyledSubmenuWrapper, {
@@ -265,10 +266,7 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
265
266
  }, child))));
266
267
  }
267
268
 
268
- return /*#__PURE__*/_react.default.createElement(_clickAwayWrapper.default, {
269
- handleClickAway: handleClickAway,
270
- targets: [submenuRef]
271
- }, /*#__PURE__*/_react.default.createElement(_submenu.StyledSubmenuWrapper, {
269
+ return /*#__PURE__*/_react.default.createElement(_submenu.StyledSubmenuWrapper, {
272
270
  "data-component": "submenu-wrapper",
273
271
  onMouseOver: !clickToOpen ? () => openSubmenu() : undefined,
274
272
  onMouseLeave: () => closeSubmenu(),
@@ -306,7 +304,7 @@ const Submenu = /*#__PURE__*/_react.default.forwardRef(({
306
304
  updateFocusIndex: setSubmenuFocusIndex,
307
305
  itemIndex: child.type === _menuItem2.default ? index : undefined
308
306
  }
309
- }, child)))));
307
+ }, child))));
310
308
  });
311
309
 
312
310
  Submenu.propTypes = {
@@ -9,6 +9,8 @@ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
+ var _useClickAwayListener = _interopRequireDefault(require("../../hooks/__internal__/useClickAwayListener"));
13
+
12
14
  var _multiActionButton = require("./multi-action-button.style");
13
15
 
14
16
  var _button = _interopRequireWildcard(require("../button"));
@@ -125,31 +127,20 @@ const MultiActionButton = ({
125
127
  (_additionalButtons$cu = additionalButtons.current[nextIndex].current) === null || _additionalButtons$cu === void 0 ? void 0 : _additionalButtons$cu.focus();
126
128
  }
127
129
  }, [buttonChildren, hideButtons]);
128
- const handleClickOutside = (0, _react.useCallback)(({
129
- target
130
- }) => {
131
- var _ref$current, _buttonContainer$curr;
132
-
133
- if (!((_ref$current = ref.current) !== null && _ref$current !== void 0 && _ref$current.contains(target)) && !((_buttonContainer$curr = buttonContainer.current) !== null && _buttonContainer$curr !== void 0 && _buttonContainer$curr.contains(target))) {
134
- hideButtons();
135
- }
136
- }, [hideButtons]);
137
130
  const addListeners = (0, _react.useCallback)(() => {
138
131
  /* istanbul ignore else */
139
132
  if (!listening.current) {
140
- document.addEventListener("click", handleClickOutside);
141
133
  document.addEventListener("keydown", handleKeyDown);
142
134
  listening.current = true;
143
135
  }
144
- }, [handleKeyDown, handleClickOutside]);
136
+ }, [handleKeyDown]);
145
137
  const removeListeners = (0, _react.useCallback)(() => {
146
138
  /* istanbul ignore else */
147
139
  if (listening.current) {
148
- document.removeEventListener("click", handleClickOutside);
149
140
  document.removeEventListener("keydown", handleKeyDown);
150
141
  listening.current = false;
151
142
  }
152
- }, [handleKeyDown, handleClickOutside]);
143
+ }, [handleKeyDown]);
153
144
  (0, _react.useEffect)(() => {
154
145
  if (showAdditionalButtons) {
155
146
  addListeners();
@@ -220,6 +211,7 @@ const MultiActionButton = ({
220
211
  ref: buttonContainer
221
212
  }, childrenWithProps()));
222
213
 
214
+ (0, _useClickAwayListener.default)([ref], hideButtons);
223
215
  return /*#__PURE__*/_react.default.createElement(_multiActionButton.StyledMultiActionButton, _extends({
224
216
  "aria-haspopup": "true",
225
217
  onMouseLeave: hideButtons,
@@ -36,7 +36,7 @@ export interface PopoverContainerProps extends PaddingProps {
36
36
  /** Sets the popover container dialog header name */
37
37
  title?: string;
38
38
  /** Callback fires when close icon clicked */
39
- onClose?: (ev: React.MouseEvent<HTMLElement>) => void;
39
+ onClose?: (ev: React.MouseEvent<HTMLElement> | Event) => void;
40
40
  /** if `true` the popover-container is open */
41
41
  open?: boolean;
42
42
  /** Callback fires when open component is clicked */
@@ -15,11 +15,13 @@ var _popoverContainer = require("./popover-container.style");
15
15
 
16
16
  var _icon = _interopRequireDefault(require("../icon"));
17
17
 
18
+ var _popover = _interopRequireDefault(require("../../__internal__/popover"));
19
+
18
20
  var _guid = _interopRequireDefault(require("../../__internal__/utils/helpers/guid"));
19
21
 
20
22
  var _utils = require("../../style/utils");
21
23
 
22
- var _clickAwayWrapper = _interopRequireDefault(require("../../__internal__/click-away-wrapper"));
24
+ var _useClickAwayListener = _interopRequireDefault(require("../../hooks/__internal__/useClickAwayListener"));
23
25
 
24
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
27
 
@@ -80,6 +82,19 @@ renderClose.propTypes = {
80
82
  "tabIndex": _propTypes.default.number.isRequired
81
83
  };
82
84
 
85
+ const offset = ({
86
+ reference
87
+ }) => {
88
+ return [0, -reference.height];
89
+ };
90
+
91
+ const popperModifiers = [{
92
+ name: "offset",
93
+ options: {
94
+ offset
95
+ }
96
+ }];
97
+
83
98
  const PopoverContainer = ({
84
99
  children,
85
100
  title,
@@ -106,7 +121,11 @@ const PopoverContainer = ({
106
121
  const popoverContainerId = title ? `PopoverContainer_${guid.current}` : undefined;
107
122
  const isOpen = isControlled ? open : isOpenInternal;
108
123
  (0, _react.useEffect)(() => {
109
- if (isOpen && closeButtonRef.current) closeButtonRef.current.focus();
124
+ if (isOpen && closeButtonRef.current) setTimeout(() => {
125
+ var _closeButtonRef$curre;
126
+
127
+ return (_closeButtonRef$curre = closeButtonRef.current) === null || _closeButtonRef$curre === void 0 ? void 0 : _closeButtonRef$curre.focus();
128
+ }, 0);
110
129
  }, [isOpen]);
111
130
 
112
131
  const handleOpenButtonClick = e => {
@@ -138,19 +157,15 @@ const PopoverContainer = ({
138
157
  onClick: handleCloseButtonClick,
139
158
  ref: closeButtonRef,
140
159
  "aria-label": closeButtonAriaLabel
141
- }; // TODO: Assign proper type after ClickAwayWrapper has been refactored
142
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
160
+ };
143
161
 
144
162
  const handleClickAway = e => {
145
163
  if (!isControlled) setIsOpenInternal(false);
146
164
  if (onClose) onClose(e);
147
165
  };
148
166
 
149
- return /*#__PURE__*/_react.default.createElement(_clickAwayWrapper.default, {
150
- targets: [ref],
151
- handleClickAway: handleClickAway,
152
- eventTypeId: "mousedown"
153
- }, /*#__PURE__*/_react.default.createElement(_popoverContainer.PopoverContainerWrapperStyle, {
167
+ (0, _useClickAwayListener.default)([ref], handleClickAway, "mousedown");
168
+ return /*#__PURE__*/_react.default.createElement(_popoverContainer.PopoverContainerWrapperStyle, {
154
169
  "data-component": "popover-container",
155
170
  role: "region",
156
171
  "aria-labelledby": popoverContainerId,
@@ -164,12 +179,15 @@ const PopoverContainer = ({
164
179
  mountOnEnter: true,
165
180
  unmountOnExit: true,
166
181
  nodeRef: popoverContentNodeRef
167
- }, state => /*#__PURE__*/_react.default.createElement(_popoverContainer.PopoverContainerContentStyle, _extends({
182
+ }, state => isOpen && /*#__PURE__*/_react.default.createElement(_popover.default, _extends({
183
+ reference: openButtonRef,
184
+ placement: position === "right" ? "bottom-start" : "bottom-end"
185
+ }, shouldCoverButton && {
186
+ modifiers: popperModifiers
187
+ }), /*#__PURE__*/_react.default.createElement(_popoverContainer.PopoverContainerContentStyle, _extends({
168
188
  "data-element": "popover-container-content",
169
189
  role: "dialog",
170
190
  animationState: state,
171
- position: position,
172
- shouldCoverButton: shouldCoverButton,
173
191
  "aria-labelledby": popoverContainerId,
174
192
  "aria-label": containerAriaLabel,
175
193
  "aria-describedby": ariaDescribedBy,
@@ -3,8 +3,6 @@ import IconButton from "../icon-button";
3
3
  declare const PopoverContainerWrapperStyle: import("styled-components").StyledComponent<"div", any, {}, never>;
4
4
  declare const PopoverContainerHeaderStyle: import("styled-components").StyledComponent<"div", any, {}, never>;
5
5
  declare type PopoverContainerContentStyleProps = {
6
- shouldCoverButton?: boolean;
7
- position?: "left" | "right";
8
6
  animationState?: TransitionStatus;
9
7
  };
10
8
  declare const PopoverContainerContentStyle: import("styled-components").StyledComponent<"div", any, PopoverContainerContentStyleProps, never>;
@@ -40,14 +40,6 @@ const PopoverContainerContentStyle = _styledComponents.default.div`
40
40
  theme
41
41
  }) => theme.zIndex.popover};
42
42
 
43
- ${({
44
- shouldCoverButton
45
- }) => shouldCoverButton && "top: 0"}
46
-
47
- ${({
48
- position
49
- }) => position === "left" ? "right: 0" : "left: 0"};
50
-
51
43
  ${({
52
44
  animationState
53
45
  }) => {
@@ -13,6 +13,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
 
14
14
  var _propTypes2 = _interopRequireDefault(require("@styled-system/prop-types"));
15
15
 
16
+ var _useClickAwayListener = _interopRequireDefault(require("../../hooks/__internal__/useClickAwayListener"));
17
+
16
18
  var _icon = _interopRequireDefault(require("../icon"));
17
19
 
18
20
  var _button = _interopRequireWildcard(require("../button"));
@@ -80,13 +82,6 @@ const SplitButton = ({
80
82
  if (isToggleButtonFocused.current) return;
81
83
  setShowAdditionalButtons(false);
82
84
  }, []);
83
- const handleClickOutside = (0, _react.useCallback)(({
84
- target
85
- }) => {
86
- if (!splitButtonNode.current.contains(target) && buttonContainer.current && !buttonContainer.current.contains(target)) {
87
- hideButtons();
88
- }
89
- }, [hideButtons]);
90
85
  const handleKeyDown = (0, _react.useCallback)(ev => {
91
86
  const numOfChildren = children.length - 1;
92
87
  const currentIndex = additionalButtons.current.findIndex(node => node.current === document.activeElement);
@@ -119,19 +114,17 @@ const SplitButton = ({
119
114
  const addListeners = (0, _react.useCallback)(() => {
120
115
  /* istanbul ignore else */
121
116
  if (!listening.current) {
122
- document.addEventListener("click", handleClickOutside);
123
117
  document.addEventListener("keydown", handleKeyDown);
124
118
  listening.current = true;
125
119
  }
126
- }, [handleKeyDown, handleClickOutside]);
120
+ }, [handleKeyDown]);
127
121
  const removeListeners = (0, _react.useCallback)(() => {
128
122
  /* istanbul ignore else */
129
123
  if (listening.current) {
130
- document.removeEventListener("click", handleClickOutside);
131
124
  document.removeEventListener("keydown", handleKeyDown);
132
125
  listening.current = false;
133
126
  }
134
- }, [handleKeyDown, handleClickOutside]);
127
+ }, [handleKeyDown]);
135
128
  (0, _react.useEffect)(() => {
136
129
  if (showAdditionalButtons) {
137
130
  addListeners();
@@ -291,6 +284,7 @@ const SplitButton = ({
291
284
  }, childrenWithProps()));
292
285
  }
293
286
 
287
+ (0, _useClickAwayListener.default)([splitButtonNode], hideButtons);
294
288
  return /*#__PURE__*/_react.default.createElement(_splitButton.default, _extends({
295
289
  "aria-haspopup": "true",
296
290
  onMouseLeave: hideButtons,
@@ -0,0 +1 @@
1
+ export { default } from "./useClickAwayListener";