@elastic/eui 90.0.0 → 90.0.1

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 (84) hide show
  1. package/es/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +2 -2
  2. package/es/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  3. package/es/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +13 -9
  4. package/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +1 -101
  5. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +20 -58
  6. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +89 -37
  7. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +67 -81
  8. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +1 -19
  9. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +7 -102
  10. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +4 -4
  11. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +11 -90
  12. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +150 -130
  13. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_link.js +0 -10
  14. package/es/components/combo_box/combo_box.js +1 -1
  15. package/es/components/selectable/selectable.js +16 -1
  16. package/es/components/selectable/selectable_list/selectable_list.js +227 -78
  17. package/es/components/selectable/selectable_templates/selectable_template_sitewide.js +16 -1
  18. package/es/components/text_truncate/text_truncate.js +33 -10
  19. package/eui.d.ts +381 -68
  20. package/i18ntokens.json +38 -38
  21. package/lib/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +1 -1
  22. package/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  23. package/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +13 -9
  24. package/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +1 -101
  25. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +20 -58
  26. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +89 -37
  27. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +66 -80
  28. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +11 -28
  29. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +7 -104
  30. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +4 -4
  31. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +10 -89
  32. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +150 -130
  33. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_link.js +0 -10
  34. package/lib/components/combo_box/combo_box.js +1 -1
  35. package/lib/components/selectable/selectable.js +16 -1
  36. package/lib/components/selectable/selectable_list/selectable_list.js +227 -78
  37. package/lib/components/selectable/selectable_templates/selectable_template_sitewide.js +16 -1
  38. package/lib/components/text_truncate/text_truncate.js +32 -9
  39. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +2 -2
  40. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  41. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +13 -9
  42. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -3
  43. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +10 -5
  44. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +8 -36
  45. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +1 -19
  46. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +6 -23
  47. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +4 -4
  48. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +10 -10
  49. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +9 -5
  50. package/optimize/es/components/selectable/selectable_list/selectable_list.js +199 -76
  51. package/optimize/es/components/text_truncate/text_truncate.js +26 -9
  52. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +1 -1
  53. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  54. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +13 -9
  55. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +1 -3
  56. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +10 -5
  57. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +8 -36
  58. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +11 -28
  59. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +6 -26
  60. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +4 -4
  61. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +9 -9
  62. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +9 -5
  63. package/optimize/lib/components/selectable/selectable_list/selectable_list.js +199 -76
  64. package/optimize/lib/components/text_truncate/text_truncate.js +25 -8
  65. package/package.json +1 -1
  66. package/test-env/components/auto_sizer/auto_sizer.js +10 -3
  67. package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +1 -1
  68. package/test-env/components/collapsible_nav_beta/collapsible_nav_body_footer.js +4 -1
  69. package/test-env/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +13 -9
  70. package/test-env/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +1 -101
  71. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +20 -58
  72. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +89 -37
  73. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +66 -80
  74. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.styles.js +11 -28
  75. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +7 -105
  76. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +4 -4
  77. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_group.js +10 -89
  78. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +150 -130
  79. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_link.js +0 -10
  80. package/test-env/components/combo_box/combo_box.js +1 -1
  81. package/test-env/components/selectable/selectable.js +16 -1
  82. package/test-env/components/selectable/selectable_list/selectable_list.js +227 -78
  83. package/test-env/components/selectable/selectable_templates/selectable_template_sitewide.js +16 -1
  84. package/test-env/components/text_truncate/text_truncate.js +32 -9
@@ -7,19 +7,23 @@
7
7
  */
8
8
 
9
9
  import { css } from '@emotion/react';
10
- import { logicalCSS } from '../../global_styling';
10
+ import { logicalCSS, euiYScrollWithShadows } from '../../global_styling';
11
+
12
+ // Hide the scrollbar for docked mode (while still keeping the nav scrollable)
13
+ // Otherwise if scrollbars are visible, button icon visibility suffers.
14
+ export var hideScrollbars = "\n scrollbar-width: none; /* Firefox */\n\n &::-webkit-scrollbar {\n display: none; /* Chrome, Edge, & Safari */\n }\n";
11
15
  export var euiCollapsibleNavBodyStyles = {
12
16
  // In case things get really dire responsively, ensure the footer doesn't overtake the body
13
17
  euiCollapsibleNav__body: /*#__PURE__*/css(logicalCSS('min-height', '50%'), ";;label:euiCollapsibleNav__body;"),
14
- get isPushCollapsed() {
15
- return /*#__PURE__*/css(".euiFlyoutBody__overflow{", this._isPushCollapsed, ";};label:isPushCollapsed;");
16
- },
17
- // CSS is reused by main euiCollapsibleNav styles in case the body component isn't used
18
- _isPushCollapsed: "\n /* Hide the scrollbar for docked mode (while still keeping the nav scrollable)\n Otherwise if scrollbars are visible, button icon visibility suffers. */\n scrollbar-width: none; /* Firefox */\n\n &::-webkit-scrollbar {\n display: none; /* Chrome, Edge, & Safari */\n }\n "
18
+ isPushCollapsed: /*#__PURE__*/css(".euiFlyoutBody__overflow{", hideScrollbars, ";};label:isPushCollapsed;")
19
19
  };
20
- export var euiCollapsibleNavFooterStyles = function euiCollapsibleNavFooterStyles(_ref) {
21
- var euiTheme = _ref.euiTheme;
20
+ export var euiCollapsibleNavFooterStyles = function euiCollapsibleNavFooterStyles(euiThemeContext) {
21
+ var euiTheme = euiThemeContext.euiTheme;
22
22
  return {
23
- euiCollapsibleNav__footer: /*#__PURE__*/css("background-color:", euiTheme.colors.emptyShade, ";", logicalCSS('border-top', euiTheme.border.thin), ";;label:euiCollapsibleNav__footer;")
23
+ euiCollapsibleNav__footer: /*#__PURE__*/css("background-color:", euiTheme.colors.emptyShade, ";", logicalCSS('border-top', euiTheme.border.thin), " ", euiYScrollWithShadows(euiThemeContext, {
24
+ side: 'end',
25
+ height: 'auto'
26
+ }), " flex-shrink:0;;label:euiCollapsibleNav__footer;"),
27
+ isPushCollapsed: /*#__PURE__*/css(hideScrollbars, ";;label:isPushCollapsed;")
24
28
  };
25
29
  };
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["href", "title", "icon", "iconProps", "isSelected", "onClick", "hideToolTip", "linkProps", "accordionProps", "titleElement", "items"];
3
+ var _excluded = ["href", "title", "icon", "iconProps", "isSelected", "onClick", "hideToolTip", "linkProps", "titleElement"];
4
4
  /*
5
5
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
6
6
  * or more contributor license agreements. Licensed under the Elastic License
@@ -26,9 +26,7 @@ export var EuiCollapsedNavButton = function EuiCollapsedNavButton(_ref) {
26
26
  onClick = _ref.onClick,
27
27
  hideToolTip = _ref.hideToolTip,
28
28
  linkProps = _ref.linkProps,
29
- accordionProps = _ref.accordionProps,
30
29
  titleElement = _ref.titleElement,
31
- items = _ref.items,
32
30
  rest = _objectWithoutProperties(_ref, _excluded);
33
31
  var euiTheme = useEuiTheme();
34
32
  var _useContext = useContext(EuiCollapsibleNavContext),
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["items", "className"];
3
+ var _excluded = ["className", "href", "linkProps", "items", "accordionProps", "isCollapsible"];
4
4
  /*
5
5
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
6
6
  * or more contributor license agreements. Licensed under the Elastic License
@@ -22,15 +22,20 @@ import classNames from 'classnames';
22
22
  */
23
23
  import { jsx as ___EmotionJSX } from "@emotion/react";
24
24
  export var EuiCollapsedNavItem = function EuiCollapsedNavItem(_ref) {
25
- var items = _ref.items,
26
- className = _ref.className,
25
+ var className = _ref.className,
26
+ href = _ref.href,
27
+ linkProps = _ref.linkProps,
28
+ items = _ref.items,
29
+ accordionProps = _ref.accordionProps,
30
+ isCollapsible = _ref.isCollapsible,
27
31
  props = _objectWithoutProperties(_ref, _excluded);
28
32
  var classes = classNames('euiCollapsedNavItem', className);
29
- var hasItems = items && items.length > 0;
30
- return hasItems ? ___EmotionJSX(EuiCollapsedNavPopover, _extends({
33
+ return items ? ___EmotionJSX(EuiCollapsedNavPopover, _extends({
31
34
  items: items,
32
35
  className: classes
33
36
  }, props)) : ___EmotionJSX(EuiCollapsedNavButton, _extends({
37
+ href: href,
38
+ linkProps: linkProps,
34
39
  className: classes
35
40
  }, props));
36
41
  };
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["items", "href", "linkProps", "title", "titleElement", "icon", "iconProps", "isSelected", "accordionProps"];
4
+ var _excluded = ["items", "title", "titleElement", "icon", "iconProps", "isSelected"];
5
5
  /*
6
6
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
7
7
  * or more contributor license agreements. Licensed under the Elastic License
@@ -12,22 +12,19 @@ var _excluded = ["items", "href", "linkProps", "title", "titleElement", "icon",
12
12
 
13
13
  import React, { useState, useCallback } from 'react';
14
14
  import { useEuiTheme } from '../../../../services';
15
- import { EuiLink } from '../../../link';
16
15
  import { EuiPopover, EuiPopoverTitle } from '../../../popover';
17
16
  import { EuiCollapsibleNavSubItem } from '../collapsible_nav_item';
18
17
  import { EuiCollapsedNavButton } from './collapsed_nav_button';
19
- import { euiCollapsedNavPopoverStyles, euiCollapsedNavPopoverTitleStyles } from './collapsed_nav_popover.styles';
18
+ import { euiCollapsedNavPopoverStyles } from './collapsed_nav_popover.styles';
20
19
  import { jsx as ___EmotionJSX } from "@emotion/react";
21
20
  export var EuiCollapsedNavPopover = function EuiCollapsedNavPopover(_ref) {
22
21
  var items = _ref.items,
23
- href = _ref.href,
24
- linkProps = _ref.linkProps,
25
22
  title = _ref.title,
26
- titleElement = _ref.titleElement,
23
+ _ref$titleElement = _ref.titleElement,
24
+ TitleElement = _ref$titleElement === void 0 ? 'span' : _ref$titleElement,
27
25
  icon = _ref.icon,
28
26
  iconProps = _ref.iconProps,
29
27
  isSelected = _ref.isSelected,
30
- accordionProps = _ref.accordionProps,
31
28
  rest = _objectWithoutProperties(_ref, _excluded);
32
29
  var euiTheme = useEuiTheme();
33
30
  var styles = euiCollapsedNavPopoverStyles(euiTheme);
@@ -59,40 +56,15 @@ export var EuiCollapsedNavPopover = function EuiCollapsedNavPopover(_ref) {
59
56
  isSelected: isSelected,
60
57
  onClick: togglePopover,
61
58
  hideToolTip: isPopoverOpen
62
- // Note: do not pass `linkProps` to buttons that toggle popovers
63
59
  })
64
- }, rest), ___EmotionJSX(EuiCollapsedNavPopoverTitle, {
65
- title: title,
66
- titleElement: titleElement,
67
- href: href,
68
- linkProps: linkProps
69
- }), ___EmotionJSX("div", {
60
+ }, rest), ___EmotionJSX(EuiPopoverTitle, null, ___EmotionJSX(TitleElement, {
61
+ css: styles.euiCollapsedNavPopover__title,
62
+ className: "eui-textTruncate"
63
+ }, title)), ___EmotionJSX("div", {
70
64
  css: styles.euiCollapsedNavPopover__items
71
65
  }, items.map(function (item, index) {
72
66
  return ___EmotionJSX(EuiCollapsibleNavSubItem, _extends({
73
67
  key: index
74
68
  }, item));
75
69
  })));
76
- };
77
- var EuiCollapsedNavPopoverTitle = function EuiCollapsedNavPopoverTitle(_ref2) {
78
- var title = _ref2.title,
79
- _ref2$titleElement = _ref2.titleElement,
80
- TitleElement = _ref2$titleElement === void 0 ? 'span' : _ref2$titleElement,
81
- href = _ref2.href,
82
- linkProps = _ref2.linkProps;
83
- var euiTheme = useEuiTheme();
84
- var styles = euiCollapsedNavPopoverTitleStyles(euiTheme);
85
- var cssStyles = [styles.euiCollapsedNavPopover__title, href ? styles.link : styles.span, href && (linkProps === null || linkProps === void 0 ? void 0 : linkProps.css)];
86
- return ___EmotionJSX(EuiPopoverTitle, null, href ? ___EmotionJSX(EuiLink, _extends({
87
- href: href,
88
- color: "text"
89
- }, linkProps, {
90
- // ExclusiveUnion shenanigans :|
91
- css: cssStyles
92
- }), ___EmotionJSX(TitleElement, {
93
- className: "eui-textTruncate"
94
- }, title)) : ___EmotionJSX(TitleElement, {
95
- css: cssStyles,
96
- className: "eui-textTruncate"
97
- }, title));
98
70
  };
@@ -1,4 +1,3 @@
1
- function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
2
1
  /*
3
2
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
4
3
  * or more contributor license agreements. Licensed under the Elastic License
@@ -9,30 +8,13 @@ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringif
9
8
 
10
9
  import { css } from '@emotion/react';
11
10
  import { logicalCSS, mathWithUnits, euiYScrollWithShadows } from '../../../../global_styling';
12
- import { euiCollapsibleNavItemVariables } from '../collapsible_nav_item.styles';
13
11
  export var euiCollapsedNavPopoverStyles = function euiCollapsedNavPopoverStyles(euiThemeContext) {
14
12
  var euiTheme = euiThemeContext.euiTheme;
15
13
  return {
16
14
  euiCollapsedNavPopover__panel: /*#__PURE__*/css(logicalCSS('width', mathWithUnits(euiTheme.size.base, function (x) {
17
15
  return x * 15;
18
16
  })), ";;label:euiCollapsedNavPopover__panel;"),
17
+ euiCollapsedNavPopover__title: /*#__PURE__*/css("display:block;padding:", euiTheme.size.m, ";font-weight:", euiTheme.font.weight.bold, ";;label:euiCollapsedNavPopover__title;"),
19
18
  euiCollapsedNavPopover__items: /*#__PURE__*/css(euiYScrollWithShadows(euiThemeContext), " padding-block:", euiTheme.size.s, ";padding-inline:", euiTheme.size.xs, ";", logicalCSS('max-height', '50vh'), "@media (max-height: ", euiTheme.breakpoint.s, "px){", logicalCSS('max-height', '75vh'), ";};label:euiCollapsedNavPopover__items;")
20
19
  };
21
- };
22
- var _ref = process.env.NODE_ENV === "production" ? {
23
- name: "1423k63-span",
24
- styles: "display:block;label:span;"
25
- } : {
26
- name: "1423k63-span",
27
- styles: "display:block;label:span;",
28
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
29
- };
30
- export var euiCollapsedNavPopoverTitleStyles = function euiCollapsedNavPopoverTitleStyles(euiThemeContext) {
31
- var euiTheme = euiThemeContext.euiTheme;
32
- var sharedStyles = euiCollapsibleNavItemVariables(euiThemeContext);
33
- return {
34
- euiCollapsedNavPopover__title: /*#__PURE__*/css("padding:", euiTheme.size.m, ";font-weight:", euiTheme.font.weight.bold, ";;label:euiCollapsedNavPopover__title;"),
35
- link: /*#__PURE__*/css("display:flex;align-items:center;[class*='euiLink__externalIcon']{", logicalCSS('margin-left', 'auto'), " ", logicalCSS('margin-right', euiTheme.size.xxs), " color:", sharedStyles.rightIconColor, ";};label:link;"),
36
- span: _ref
37
- };
38
20
  };
@@ -1,7 +1,7 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["id", "className", "items", "href", "isSubItem", "isSelected", "linkProps", "accordionProps", "buttonContent", "children"];
4
+ var _excluded = ["id", "className", "items", "isSubItem", "isSelected", "accordionProps", "buttonContent", "children"];
5
5
  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; }
6
6
  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) { _defineProperty(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; }
7
7
  /*
@@ -12,7 +12,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
12
12
  * Side Public License, v 1.
13
13
  */
14
14
 
15
- import React, { useCallback } from 'react';
15
+ import React from 'react';
16
16
  import classNames from 'classnames';
17
17
  import { useEuiTheme, useGeneratedHtmlId } from '../../../services';
18
18
  import { EuiAccordion } from '../../accordion';
@@ -32,10 +32,8 @@ export var EuiCollapsibleNavAccordion = function EuiCollapsibleNavAccordion(_ref
32
32
  var id = _ref.id,
33
33
  className = _ref.className,
34
34
  items = _ref.items,
35
- href = _ref.href,
36
35
  isSubItem = _ref.isSubItem,
37
36
  isSelected = _ref.isSelected,
38
- linkProps = _ref.linkProps,
39
37
  accordionProps = _ref.accordionProps,
40
38
  buttonContent = _ref.buttonContent,
41
39
  _children = _ref.children,
@@ -47,30 +45,15 @@ export var EuiCollapsibleNavAccordion = function EuiCollapsibleNavAccordion(_ref
47
45
  var euiTheme = useEuiTheme();
48
46
  var styles = euiCollapsibleNavAccordionStyles(euiTheme);
49
47
  var cssStyles = [styles.euiCollapsibleNavAccordion, isSubItem ? styles.isSubItem : styles.isTopItem, isSelected && styles.isSelected, accordionProps === null || accordionProps === void 0 ? void 0 : accordionProps.css];
50
- var isTitleInteractive = !!(href || linkProps !== null && linkProps !== void 0 && linkProps.onClick);
51
-
52
- // Stop propagation on the title so that the accordion toggle doesn't occur on click
53
- // (should only occur on accordion arrow click for UX consistency)
54
- var stopPropagationClick = useCallback(function (e) {
55
- var _linkProps$onClick;
56
- e.stopPropagation();
57
- linkProps === null || linkProps === void 0 ? void 0 : (_linkProps$onClick = linkProps.onClick) === null || _linkProps$onClick === void 0 ? void 0 : _linkProps$onClick.call(linkProps, e);
58
- }, [linkProps === null || linkProps === void 0 ? void 0 : linkProps.onClick] // eslint-disable-line react-hooks/exhaustive-deps
59
- );
60
-
61
48
  return ___EmotionJSX(EuiAccordion, _extends({
62
49
  id: groupID,
63
50
  className: classes,
64
51
  initialIsOpen: isSelected,
65
- buttonElement: "div",
66
- buttonContent: ___EmotionJSX(EuiCollapsibleNavLink, _extends({
67
- href: href
68
- }, linkProps, {
52
+ buttonContent: ___EmotionJSX(EuiCollapsibleNavLink, {
69
53
  isSelected: isSelected,
70
54
  isSubItem: isSubItem,
71
- onClick: stopPropagationClick,
72
- isInteractive: isTitleInteractive
73
- }), buttonContent),
55
+ isInteractive: false
56
+ }, buttonContent),
74
57
  arrowDisplay: "right"
75
58
  }, rest, accordionProps, {
76
59
  css: cssStyles,
@@ -15,11 +15,11 @@ export var euiCollapsibleNavAccordionStyles = function euiCollapsibleNavAccordio
15
15
  return {
16
16
  // NOTE: Specific usage of `>`s selectors are important here, because accordions can be nested
17
17
  // - just because a parent accordion is open or selected does not mean its child accordion is the same
18
- euiCollapsibleNavAccordion: /*#__PURE__*/css(".euiAccordion__button{overflow:hidden;&:hover,&:focus{cursor:default;text-decoration:none;}}.euiAccordion__triggerWrapper{border-radius:", sharedStyles.borderRadius, ";", euiCanAnimate, "{transition:background-color ", sharedStyles.animation, ";}}.euiAccordion__buttonContent{", logicalCSS('max-width', '100%'), " flex-basis:100%;display:flex;align-items:center;}.euiCollapsibleNavLink{", logicalCSS('width', '100%'), ";};label:euiCollapsibleNavAccordion;"),
19
- isTopItem: /*#__PURE__*/css("margin:", sharedStyles.padding, ";&>.euiAccordion__triggerWrapper{&:hover{background-color:", sharedStyles.backgroundHoverColor, ";}};label:isTopItem;"),
20
- isSelected: /*#__PURE__*/css("&>.euiAccordion__triggerWrapper{background-color:", sharedStyles.backgroundSelectedColor, ";&:hover{background-color:", sharedStyles.backgroundSelectedColor, ";}};label:isSelected;"),
18
+ euiCollapsibleNavAccordion: /*#__PURE__*/css(".euiAccordion__button{overflow:hidden;}&>.euiAccordion__triggerWrapper{border-radius:", sharedStyles.borderRadius, ";overflow:hidden;", euiCanAnimate, "{transition:background-color ", sharedStyles.animation, ";}&:hover,&:focus-within{background-color:", sharedStyles.backgroundHoverColor, ";.euiAccordion__arrow .euiIcon{color:", sharedStyles.color, ";}}&:has(:focus-visible){outline-style:auto;outline-offset:-", euiTheme.focus.width, ";*:focus{outline:none;}}}.euiAccordion__buttonContent{", logicalCSS('max-width', '100%'), " flex-basis:100%;display:flex;align-items:center;}.euiCollapsibleNavLink{", logicalCSS('width', '100%'), ";};label:euiCollapsibleNavAccordion;"),
19
+ isSelected: /*#__PURE__*/css("&>.euiAccordion__triggerWrapper{background-color:", sharedStyles.backgroundSelectedColor, ";&:hover,&:focus-within{background-color:", sharedStyles.backgroundSelectedColor, ";}};label:isSelected;"),
20
+ isTopItem: /*#__PURE__*/css("margin:", sharedStyles.padding, ";;label:isTopItem;"),
21
21
  isSubItem: /*#__PURE__*/css("&.euiAccordion-isOpen .euiAccordion__children::after{content:'';display:block;", logicalCSS('height', euiTheme.size.m), ";};label:isSubItem;"),
22
22
  // Arrow element
23
- euiCollapsibleNavAccordion__arrow: /*#__PURE__*/css(logicalCSS('margin-right', euiTheme.size.xs), euiCanAnimate, "{transition:background-color ", sharedStyles.animation, ";}&:hover,&:focus-visible{background-color:", euiTheme.colors.lightShade, ";&>.euiIcon{color:", sharedStyles.color, ";}}transform:none!important;&>.euiIcon{color:", sharedStyles.rightIconColor, ";transform:rotate(90deg);", euiCanAnimate, "{transition:transform ", sharedStyles.animation, ",color ", sharedStyles.animation, ";}}&.euiAccordion__arrow[aria-expanded='true']>.euiIcon{color:", sharedStyles.color, ";transform:rotate(-90deg);};label:euiCollapsibleNavAccordion__arrow;")
23
+ euiCollapsibleNavAccordion__arrow: /*#__PURE__*/css("margin:0;", logicalCSS('height', sharedStyles.height), logicalCSS('width', euiTheme.size.xl), "transform:none!important;&>.euiIcon{color:", sharedStyles.rightIconColor, ";transform:rotate(90deg);", euiCanAnimate, "{transition:transform ", sharedStyles.animation, ",color ", sharedStyles.animation, ";}}&.euiAccordion__arrow[aria-expanded='true']>.euiIcon{color:", sharedStyles.color, ";transform:rotate(-90deg);}&:hover,&:focus{background-color:transparent;};label:euiCollapsibleNavAccordion__arrow;")
24
24
  };
25
25
  };
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["className", "header", "href", "items", "isSubItem", "isSelected", "linkProps", "children"];
3
+ var _excluded = ["className", "header", "items", "isSubItem", "isSelected", "children"];
4
4
  /*
5
5
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
6
6
  * or more contributor license agreements. Licensed under the Elastic License
@@ -11,7 +11,7 @@ var _excluded = ["className", "header", "href", "items", "isSubItem", "isSelecte
11
11
 
12
12
  import React from 'react';
13
13
  import classNames from 'classnames';
14
- import { useEuiTheme } from '../../../services';
14
+ import { useEuiTheme, useGeneratedHtmlId } from '../../../services';
15
15
  import { EuiCollapsibleNavSubItems } from './collapsible_nav_item';
16
16
  import { euiCollapsibleNavItemVariables } from './collapsible_nav_item.styles';
17
17
  import { EuiCollapsibleNavLink } from './collapsible_nav_link';
@@ -27,11 +27,9 @@ import { jsx as ___EmotionJSX } from "@emotion/react";
27
27
  export var EuiCollapsibleNavGroup = function EuiCollapsibleNavGroup(_ref) {
28
28
  var className = _ref.className,
29
29
  header = _ref.header,
30
- href = _ref.href,
31
30
  items = _ref.items,
32
31
  isSubItem = _ref.isSubItem,
33
32
  isSelected = _ref.isSelected,
34
- linkProps = _ref.linkProps,
35
33
  _children = _ref.children,
36
34
  rest = _objectWithoutProperties(_ref, _excluded);
37
35
  var classes = classNames('euiCollapsibleNavGroup', className);
@@ -44,17 +42,19 @@ export var EuiCollapsibleNavGroup = function EuiCollapsibleNavGroup(_ref) {
44
42
  }
45
43
  } : undefined; // Prevents Emotion from generating a selector if no styles need to be applied
46
44
 
45
+ var labelledById = useGeneratedHtmlId();
47
46
  return ___EmotionJSX("div", _extends({
48
47
  className: classes
49
- }, cssStyles, rest), ___EmotionJSX(EuiCollapsibleNavLink, _extends({
50
- href: href
51
- }, linkProps, {
48
+ }, cssStyles, rest), ___EmotionJSX(EuiCollapsibleNavLink, {
49
+ id: labelledById,
52
50
  isSelected: isSelected,
53
51
  isSubItem: isSubItem,
54
- isInteractive: !!(href || rest.onClick || linkProps !== null && linkProps !== void 0 && linkProps.onClick)
55
- }), header), ___EmotionJSX(EuiCollapsibleNavSubItems, {
52
+ isInteractive: false
53
+ }, header), ___EmotionJSX(EuiCollapsibleNavSubItems, {
56
54
  items: items,
57
55
  isSubItem: isSubItem,
58
- className: "euiCollapsibleNavGroup__children"
56
+ className: "euiCollapsibleNavGroup__children",
57
+ role: "group",
58
+ "aria-labelledby": labelledById
59
59
  }));
60
60
  };
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["isSubItem", "title", "titleElement", "icon", "iconProps", "items", "isCollapsible", "accordionProps", "children"],
3
+ var _excluded = ["isSubItem", "title", "titleElement", "icon", "iconProps", "href", "linkProps", "items", "isCollapsible", "accordionProps", "children"],
4
4
  _excluded2 = ["renderItem", "className"],
5
5
  _excluded3 = ["items", "isSubItem", "isGroup", "className"],
6
6
  _excluded4 = ["className"];
@@ -29,12 +29,13 @@ import { jsx as ___EmotionJSX } from "@emotion/react";
29
29
  * determine whether to render an accordion or a link
30
30
  */
31
31
  var EuiCollapsibleNavItemDisplay = function EuiCollapsibleNavItemDisplay(_ref) {
32
- var _props$linkProps;
33
32
  var isSubItem = _ref.isSubItem,
34
33
  title = _ref.title,
35
34
  titleElement = _ref.titleElement,
36
35
  icon = _ref.icon,
37
36
  iconProps = _ref.iconProps,
37
+ href = _ref.href,
38
+ linkProps = _ref.linkProps,
38
39
  items = _ref.items,
39
40
  _ref$isCollapsible = _ref.isCollapsible,
40
41
  isCollapsible = _ref$isCollapsible === void 0 ? true : _ref$isCollapsible,
@@ -47,7 +48,7 @@ var EuiCollapsibleNavItemDisplay = function EuiCollapsibleNavItemDisplay(_ref) {
47
48
  icon: icon,
48
49
  iconProps: iconProps
49
50
  });
50
- if (items && items.length > 0) {
51
+ if (items) {
51
52
  if (isCollapsible) {
52
53
  return ___EmotionJSX(EuiCollapsibleNavAccordion, _extends({
53
54
  buttonContent: headerContent,
@@ -65,11 +66,14 @@ var EuiCollapsibleNavItemDisplay = function EuiCollapsibleNavItemDisplay(_ref) {
65
66
  }));
66
67
  }
67
68
  }
68
- return ___EmotionJSX(EuiCollapsibleNavLink, _extends({}, props, {
69
+ return ___EmotionJSX(EuiCollapsibleNavLink, _extends({
70
+ href: href,
71
+ linkProps: linkProps
72
+ }, props, {
69
73
  // EuiLink ExclusiveUnion type shenanigans
70
74
  isSubItem: isSubItem,
71
75
  isNotAccordion: true,
72
- isInteractive: !!(props.href || props.onClick || (_props$linkProps = props.linkProps) !== null && _props$linkProps !== void 0 && _props$linkProps.onClick)
76
+ isInteractive: !!(href || props.onClick || linkProps !== null && linkProps !== void 0 && linkProps.onClick)
73
77
  }), headerContent);
74
78
  };
75
79