@elastic/eui 88.5.0 → 88.5.2

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 (107) hide show
  1. package/dist/eui_theme_dark.css +8 -21
  2. package/dist/eui_theme_dark.min.css +1 -1
  3. package/dist/eui_theme_light.css +8 -21
  4. package/dist/eui_theme_light.min.css +1 -1
  5. package/es/components/collapsible_nav_beta/collapsible_nav_beta.js +20 -6
  6. package/es/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +4 -14
  7. package/es/components/collapsible_nav_beta/collapsible_nav_body_footer.js +57 -0
  8. package/es/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +25 -0
  9. package/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +156 -0
  10. package/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.styles.js +19 -0
  11. package/es/components/collapsible_nav_beta/collapsible_nav_group/index.js +9 -0
  12. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +3 -7
  13. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +3 -7
  14. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +4 -8
  15. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +16 -63
  16. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +2 -10
  17. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +122 -41
  18. package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.styles.js +13 -3
  19. package/es/components/combo_box/combo_box.js +12 -25
  20. package/es/components/combo_box/combo_box_input/combo_box_input.js +61 -54
  21. package/es/components/text_truncate/index.js +1 -1
  22. package/es/components/text_truncate/utils.js +88 -138
  23. package/es/services/canvas/canvas_text_utils.js +64 -0
  24. package/es/services/canvas/index.js +9 -0
  25. package/es/services/index.js +1 -0
  26. package/eui.d.ts +186 -105
  27. package/i18ntokens.json +8 -8
  28. package/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +20 -6
  29. package/lib/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +11 -19
  30. package/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.js +67 -0
  31. package/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +33 -0
  32. package/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +166 -0
  33. package/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.styles.js +26 -0
  34. package/lib/components/collapsible_nav_beta/collapsible_nav_group/index.js +12 -0
  35. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +3 -7
  36. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +3 -7
  37. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +4 -8
  38. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +14 -61
  39. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -9
  40. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +122 -39
  41. package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.styles.js +13 -4
  42. package/lib/components/combo_box/combo_box.js +12 -25
  43. package/lib/components/combo_box/combo_box_input/combo_box_input.js +60 -53
  44. package/lib/components/text_truncate/index.js +0 -6
  45. package/lib/components/text_truncate/utils.js +97 -148
  46. package/lib/services/canvas/canvas_text_utils.js +70 -0
  47. package/lib/services/canvas/index.js +12 -0
  48. package/lib/services/index.js +8 -0
  49. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.js +17 -3
  50. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +4 -14
  51. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_body_footer.js +56 -0
  52. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +25 -0
  53. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +48 -0
  54. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.styles.js +19 -0
  55. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_group/index.js +9 -0
  56. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +7 -33
  57. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +2 -10
  58. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +54 -21
  59. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.styles.js +13 -3
  60. package/optimize/es/components/combo_box/combo_box.js +12 -25
  61. package/optimize/es/components/combo_box/combo_box_input/combo_box_input.js +61 -53
  62. package/optimize/es/components/text_truncate/index.js +1 -1
  63. package/optimize/es/components/text_truncate/utils.js +87 -137
  64. package/optimize/es/services/canvas/canvas_text_utils.js +60 -0
  65. package/optimize/es/services/canvas/index.js +9 -0
  66. package/optimize/es/services/index.js +1 -0
  67. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +15 -1
  68. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +11 -19
  69. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.js +66 -0
  70. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +33 -0
  71. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +58 -0
  72. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.styles.js +26 -0
  73. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_group/index.js +12 -0
  74. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +5 -31
  75. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -9
  76. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +54 -20
  77. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.styles.js +13 -4
  78. package/optimize/lib/components/combo_box/combo_box.js +12 -25
  79. package/optimize/lib/components/combo_box/combo_box_input/combo_box_input.js +60 -52
  80. package/optimize/lib/components/text_truncate/index.js +0 -6
  81. package/optimize/lib/components/text_truncate/utils.js +96 -147
  82. package/optimize/lib/services/canvas/canvas_text_utils.js +67 -0
  83. package/optimize/lib/services/canvas/index.js +12 -0
  84. package/optimize/lib/services/index.js +8 -0
  85. package/package.json +2 -5
  86. package/src/components/combo_box/_combo_box.scss +12 -19
  87. package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.js +20 -6
  88. package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +11 -19
  89. package/test-env/components/collapsible_nav_beta/collapsible_nav_body_footer.js +66 -0
  90. package/test-env/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +33 -0
  91. package/test-env/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +165 -0
  92. package/test-env/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.styles.js +26 -0
  93. package/test-env/components/collapsible_nav_beta/collapsible_nav_group/index.js +12 -0
  94. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +3 -7
  95. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +3 -7
  96. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +4 -8
  97. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +14 -61
  98. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -9
  99. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +122 -39
  100. package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.styles.js +13 -4
  101. package/test-env/components/combo_box/combo_box.js +12 -25
  102. package/test-env/components/combo_box/combo_box_input/combo_box_input.js +60 -53
  103. package/test-env/components/text_truncate/index.js +0 -6
  104. package/test-env/components/text_truncate/utils.js +96 -147
  105. package/test-env/services/canvas/canvas_text_utils.js +30 -0
  106. package/test-env/services/canvas/index.js +12 -0
  107. package/test-env/services/index.js +8 -0
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CanvasTextUtils = void 0;
7
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
8
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
10
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
11
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
13
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
14
+ /*
15
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
16
+ * or more contributor license agreements. Licensed under the Elastic License
17
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
18
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
19
+ * Side Public License, v 1.
20
+ */
21
+ /**
22
+ * Creates a temporary Canvas element for manipulating text & determining text width.
23
+ *
24
+ * To accurately measure text, canvas rendering requires either a container to
25
+ * compute/derive font styles from, or a static font string (useful for usage
26
+ * outside the DOM). Particular care should be applied when fallback fonts are
27
+ * used, as more fallback fonts can lead to less precision.
28
+ *
29
+ * Please note that while canvas is more significantly more performant than DOM
30
+ * measurement, there are subpixel to single digit pixel differences between
31
+ * DOM and canvas measurement due to the different rendering engines used.
32
+ */
33
+ var CanvasTextUtils = /*#__PURE__*/function () {
34
+ function CanvasTextUtils(_ref) {
35
+ var _this = this;
36
+ var font = _ref.font,
37
+ container = _ref.container;
38
+ _classCallCheck(this, CanvasTextUtils);
39
+ _defineProperty(this, "context", void 0);
40
+ _defineProperty(this, "currentText", '');
41
+ _defineProperty(this, "computeFontFromElement", function (element) {
42
+ var computedStyles = window.getComputedStyle(element);
43
+ // TODO: font-stretch is not included even though it potentially should be
44
+ // @see https://developer.mozilla.org/en-US/docs/Web/CSS/font#constituent_properties
45
+ // It appears to be unsupported and/or breaks font computation in canvas
46
+ return ['font-style', 'font-variant', 'font-weight', 'font-size', 'font-family'].map(function (prop) {
47
+ return computedStyles.getPropertyValue(prop);
48
+ }).join(' ').trim();
49
+ });
50
+ _defineProperty(this, "setTextToCheck", function (text) {
51
+ _this.currentText = text;
52
+ });
53
+ this.context = document.createElement('canvas').getContext('2d');
54
+
55
+ // Set the canvas font to ensure text width calculations are correct
56
+ if (font) {
57
+ this.context.font = font;
58
+ } else if (container) {
59
+ this.context.font = this.computeFontFromElement(container);
60
+ }
61
+ }
62
+ _createClass(CanvasTextUtils, [{
63
+ key: "textWidth",
64
+ get: function get() {
65
+ return this.context.measureText(this.currentText).width;
66
+ }
67
+ }]);
68
+ return CanvasTextUtils;
69
+ }();
70
+ exports.CanvasTextUtils = CanvasTextUtils;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "CanvasTextUtils", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _canvas_text_utils.CanvasTextUtils;
10
+ }
11
+ });
12
+ var _canvas_text_utils = require("./canvas_text_utils");
@@ -20,6 +20,7 @@ var _exportNames = {
20
20
  useIsWithinBreakpoints: true,
21
21
  useIsWithinMaxBreakpoint: true,
22
22
  useIsWithinMinBreakpoint: true,
23
+ CanvasTextUtils: true,
23
24
  brighten: true,
24
25
  calculateContrast: true,
25
26
  calculateLuminance: true,
@@ -97,6 +98,12 @@ Object.defineProperty(exports, "CENTER_ALIGNMENT", {
97
98
  return _alignment.CENTER_ALIGNMENT;
98
99
  }
99
100
  });
101
+ Object.defineProperty(exports, "CanvasTextUtils", {
102
+ enumerable: true,
103
+ get: function get() {
104
+ return _canvas.CanvasTextUtils;
105
+ }
106
+ });
100
107
  Object.defineProperty(exports, "Comparators", {
101
108
  enumerable: true,
102
109
  get: function get() {
@@ -601,6 +608,7 @@ exports.keys = keys;
601
608
  var _accessibility = require("./accessibility");
602
609
  var _alignment = require("./alignment");
603
610
  var _breakpoint = require("./breakpoint");
611
+ var _canvas = require("./canvas");
604
612
  var _color = require("./color");
605
613
  var _color_picker = require("./color_picker");
606
614
  var _console = require("./console");
@@ -23,8 +23,7 @@ import { euiHeaderVariables } from '../header/header.styles';
23
23
  import { EuiCollapsibleNavContext } from './context';
24
24
  import { EuiCollapsibleNavButton } from './collapsible_nav_button';
25
25
  import { euiCollapsibleNavBetaStyles } from './collapsible_nav_beta.styles';
26
- import { jsx as ___EmotionJSX } from "@emotion/react";
27
- export var EuiCollapsibleNavBeta = function EuiCollapsibleNavBeta(_ref) {
26
+ var _EuiCollapsibleNavBeta = function _EuiCollapsibleNavBeta(_ref) {
28
27
  var id = _ref.id,
29
28
  children = _ref.children,
30
29
  className = _ref.className,
@@ -144,4 +143,19 @@ export var EuiCollapsibleNavBeta = function EuiCollapsibleNavBeta(_ref) {
144
143
  onClick: toggleCollapsed,
145
144
  "aria-controls": flyoutID
146
145
  }), !hideFlyout && flyout);
147
- };
146
+ };
147
+
148
+ /**
149
+ * Combined export with subcomponents
150
+ */
151
+
152
+ import { EuiCollapsibleNavBody, EuiCollapsibleNavFooter } from './collapsible_nav_body_footer';
153
+ import { EuiCollapsibleNavGroup } from './collapsible_nav_group';
154
+ import { EuiCollapsibleNavItem } from './collapsible_nav_item';
155
+ import { jsx as ___EmotionJSX } from "@emotion/react";
156
+ export var EuiCollapsibleNavBeta = Object.assign(_EuiCollapsibleNavBeta, {
157
+ Body: EuiCollapsibleNavBody,
158
+ Footer: EuiCollapsibleNavFooter,
159
+ Group: EuiCollapsibleNavGroup,
160
+ Item: EuiCollapsibleNavItem
161
+ });
@@ -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
@@ -8,17 +7,10 @@ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringif
8
7
  */
9
8
 
10
9
  import { css } from '@emotion/react';
11
- import { logicalCSS, euiYScroll } from '../../global_styling';
10
+ import { logicalCSS } from '../../global_styling';
12
11
  import { euiShadowFlat } from '../../themes';
13
12
  import { euiHeaderVariables } from '../header/header.styles';
14
- var _ref = process.env.NODE_ENV === "production" ? {
15
- name: "1adm1dw-isPushCollapsed",
16
- styles: "&,.euiFlyoutBody__overflow{scrollbar-width:none;&::-webkit-scrollbar{display:none;}};label:isPushCollapsed;"
17
- } : {
18
- name: "1adm1dw-isPushCollapsed",
19
- styles: "&,.euiFlyoutBody__overflow{scrollbar-width:none;&::-webkit-scrollbar{display:none;}};label:isPushCollapsed;",
20
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
21
- };
13
+ import { euiCollapsibleNavBodyStyles } from './collapsible_nav_body_footer.styles';
22
14
  export var euiCollapsibleNavBetaStyles = function euiCollapsibleNavBetaStyles(euiThemeContext) {
23
15
  var euiTheme = euiThemeContext.euiTheme;
24
16
 
@@ -28,13 +20,11 @@ export var euiCollapsibleNavBetaStyles = function euiCollapsibleNavBetaStyles(eu
28
20
  var defaultHeaderHeight = euiHeaderVariables(euiThemeContext).height;
29
21
  var fixedHeaderOffset = "var(--euiFixedHeadersOffset, ".concat(defaultHeaderHeight, ")");
30
22
  return {
31
- euiCollapsibleNavBeta: /*#__PURE__*/css(logicalCSS('top', fixedHeaderOffset), euiYScroll(euiThemeContext, {
32
- height: 'inherit'
33
- }), logicalCSS('padding-bottom', euiTheme.size.xs), ".euiFlyoutBody{", logicalCSS('min-height', '50%'), ";}.euiFlyoutFooter{background-color:", euiTheme.colors.emptyShade, ";", logicalCSS('border-top', euiTheme.border.thin), ";};label:euiCollapsibleNavBeta;"),
23
+ euiCollapsibleNavBeta: /*#__PURE__*/css(logicalCSS('top', fixedHeaderOffset), logicalCSS('padding-bottom', euiTheme.size.xs), ";;label:euiCollapsibleNavBeta;"),
34
24
  left: /*#__PURE__*/css(logicalCSS('border-right', euiTheme.border.thin), ";;label:left;"),
35
25
  right: /*#__PURE__*/css(logicalCSS('border-left', euiTheme.border.thin), ";;label:right;"),
36
26
  isPush: /*#__PURE__*/css(euiShadowFlat(euiThemeContext), ";;label:isPush;"),
37
- isPushCollapsed: _ref,
27
+ isPushCollapsed: /*#__PURE__*/css(euiCollapsibleNavBodyStyles._isPushCollapsed, ";;label:isPushCollapsed;"),
38
28
  isOverlayFullWidth: /*#__PURE__*/css("&.euiFlyout{", logicalCSS('max-width', '100% !important'), ";};label:isOverlayFullWidth;")
39
29
  };
40
30
  };
@@ -0,0 +1,56 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["className"],
4
+ _excluded2 = ["className"];
5
+ /*
6
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
7
+ * or more contributor license agreements. Licensed under the Elastic License
8
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
9
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
10
+ * Side Public License, v 1.
11
+ */
12
+
13
+ import React, { useContext } from 'react';
14
+ import classNames from 'classnames';
15
+ import { useEuiTheme } from '../../services';
16
+ import { EuiFlyoutBody, EuiFlyoutFooter } from '../flyout';
17
+ import { EuiCollapsibleNavContext } from './context';
18
+ import { euiCollapsibleNavBodyStyles as bodyStyles, euiCollapsibleNavFooterStyles } from './collapsible_nav_body_footer.styles';
19
+
20
+ /**
21
+ * These components are incredibly light wrappers around `EuiFlyoutBody`
22
+ * and `EuiFlyoutFooter` with collapsible nav-specific styling/considerations.
23
+ *
24
+ * Note: They are not intended to be used standalone outside of EuiCollapsibleNav
25
+ */
26
+ import { jsx as ___EmotionJSX } from "@emotion/react";
27
+ export var EuiCollapsibleNavBody = function EuiCollapsibleNavBody(_ref) {
28
+ var className = _ref.className,
29
+ props = _objectWithoutProperties(_ref, _excluded);
30
+ var classes = classNames('euiCollapsibleNav__body', className);
31
+ var _useContext = useContext(EuiCollapsibleNavContext),
32
+ isCollapsed = _useContext.isCollapsed,
33
+ isPush = _useContext.isPush;
34
+ var cssStyles = [bodyStyles.euiCollapsibleNav__body, isCollapsed && isPush && bodyStyles.isPushCollapsed];
35
+ return ___EmotionJSX(EuiFlyoutBody, _extends({
36
+ className: classes,
37
+ css: cssStyles
38
+ // Since this is a nav, we can almost guarantee there will be clickable
39
+ // children/links that will enable scrolling. As such, we're optimistically
40
+ // removing the extra tab stop
41
+ ,
42
+ scrollableTabIndex: -1
43
+ }, props));
44
+ };
45
+ export var EuiCollapsibleNavFooter = function EuiCollapsibleNavFooter(_ref2) {
46
+ var className = _ref2.className,
47
+ props = _objectWithoutProperties(_ref2, _excluded2);
48
+ var classes = classNames('euiCollapsibleNav__footer', className);
49
+ var euiTheme = useEuiTheme();
50
+ var styles = euiCollapsibleNavFooterStyles(euiTheme);
51
+ var cssStyles = [styles.euiCollapsibleNav__footer];
52
+ return ___EmotionJSX(EuiFlyoutFooter, _extends({
53
+ className: classes,
54
+ css: cssStyles
55
+ }, props));
56
+ };
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ import { css } from '@emotion/react';
10
+ import { logicalCSS } from '../../global_styling';
11
+ export var euiCollapsibleNavBodyStyles = {
12
+ // In case things get really dire responsively, ensure the footer doesn't overtake the body
13
+ 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 "
19
+ };
20
+ export var euiCollapsibleNavFooterStyles = function euiCollapsibleNavFooterStyles(_ref) {
21
+ var euiTheme = _ref.euiTheme;
22
+ return {
23
+ euiCollapsibleNav__footer: /*#__PURE__*/css("background-color:", euiTheme.colors.emptyShade, ";", logicalCSS('border-top', euiTheme.border.thin), ";;label:euiCollapsibleNav__footer;")
24
+ };
25
+ };
@@ -0,0 +1,48 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["items", "className", "wrapperProps"];
4
+ /*
5
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
6
+ * or more contributor license agreements. Licensed under the Elastic License
7
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
8
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
9
+ * Side Public License, v 1.
10
+ */
11
+
12
+ import React, { useContext } from 'react';
13
+ import classNames from 'classnames';
14
+ import { useEuiTheme } from '../../../services';
15
+ import { EuiCollapsibleNavContext } from '../context';
16
+ import { EuiCollapsibleNavItem, EuiCollapsibleNavSubItems } from '../collapsible_nav_item/collapsible_nav_item';
17
+ import { EuiCollapsedNavPopover } from '../collapsible_nav_item/collapsed/collapsed_nav_popover';
18
+ import { euiCollapsibleNavGroupStyles } from './collapsible_nav_group.styles';
19
+ import { jsx as ___EmotionJSX } from "@emotion/react";
20
+ /**
21
+ * This component should only ever be used as a **top-level component**, and not as a sub-item.
22
+ * It also should **not** be used in the nav footer.
23
+ */
24
+ export var EuiCollapsibleNavGroup = function EuiCollapsibleNavGroup(_ref) {
25
+ var items = _ref.items,
26
+ className = _ref.className,
27
+ wrapperProps = _ref.wrapperProps,
28
+ props = _objectWithoutProperties(_ref, _excluded);
29
+ var _useContext = useContext(EuiCollapsibleNavContext),
30
+ isCollapsed = _useContext.isCollapsed,
31
+ isPush = _useContext.isPush;
32
+ var classes = classNames('euiCollapsibleNavGroup', className, wrapperProps === null || wrapperProps === void 0 ? void 0 : wrapperProps.className);
33
+ var euiTheme = useEuiTheme();
34
+ var styles = euiCollapsibleNavGroupStyles(euiTheme);
35
+ var cssStyles = [styles.euiCollapsibleNavGroup, isPush && isCollapsed ? styles.euiCollapsibleNavGroup__title : styles.isWrapper, wrapperProps === null || wrapperProps === void 0 ? void 0 : wrapperProps.css];
36
+ return ___EmotionJSX("div", _extends({}, wrapperProps, {
37
+ className: classes,
38
+ css: cssStyles
39
+ }), isCollapsed && isPush ? ___EmotionJSX(EuiCollapsedNavPopover, _extends({
40
+ className: classes,
41
+ items: items
42
+ }, props)) : ___EmotionJSX(React.Fragment, null, ___EmotionJSX(EuiCollapsibleNavItem, _extends({}, props, {
43
+ css: styles.euiCollapsibleNavGroup__title
44
+ })), ___EmotionJSX(EuiCollapsibleNavSubItems, {
45
+ items: items,
46
+ isGroup: true
47
+ })));
48
+ };
@@ -0,0 +1,19 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ import { css } from '@emotion/react';
10
+ import { euiCollapsibleNavItemVariables } from '../collapsible_nav_item/collapsible_nav_item.styles';
11
+ export var euiCollapsibleNavGroupStyles = function euiCollapsibleNavGroupStyles(euiThemeContext) {
12
+ var euiTheme = euiThemeContext.euiTheme;
13
+ var sharedStyles = euiCollapsibleNavItemVariables(euiThemeContext);
14
+ return {
15
+ euiCollapsibleNavGroup: /*#__PURE__*/css(";label:euiCollapsibleNavGroup;"),
16
+ isWrapper: /*#__PURE__*/css("margin:", sharedStyles.padding, ";;label:isWrapper;"),
17
+ euiCollapsibleNavGroup__title: /*#__PURE__*/css("margin-block:", euiTheme.size.base, ";margin-inline:0;.euiIcon{transform:scale(1.25);};label:euiCollapsibleNavGroup__title;")
18
+ };
19
+ };
@@ -0,0 +1,9 @@
1
+ /*
2
+ * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3
+ * or more contributor license agreements. Licensed under the Elastic License
4
+ * 2.0 and the Server Side Public License, v 1; you may not use this file except
5
+ * in compliance with, at your election, the Elastic License 2.0 or the Server
6
+ * Side Public License, v 1.
7
+ */
8
+
9
+ export { EuiCollapsibleNavGroup } from './collapsible_nav_group';
@@ -12,11 +12,11 @@ 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, useMemo } from 'react';
15
+ import React, { useCallback } from 'react';
16
16
  import classNames from 'classnames';
17
17
  import { useEuiTheme, useGeneratedHtmlId } from '../../../services';
18
18
  import { EuiAccordion } from '../../accordion';
19
- import { EuiCollapsibleNavSubItem } from './collapsible_nav_item';
19
+ import { EuiCollapsibleNavSubItems } from './collapsible_nav_item';
20
20
  import { EuiCollapsibleNavLink } from './collapsible_nav_link';
21
21
  import { euiCollapsibleNavAccordionStyles } from './collapsible_nav_accordion.styles';
22
22
  import { jsx as ___EmotionJSX } from "@emotion/react";
@@ -47,10 +47,6 @@ export var EuiCollapsibleNavAccordion = function EuiCollapsibleNavAccordion(_ref
47
47
  var euiTheme = useEuiTheme();
48
48
  var styles = euiCollapsibleNavAccordionStyles(euiTheme);
49
49
  var cssStyles = [styles.euiCollapsibleNavAccordion, isSubItem ? styles.isSubItem : styles.isTopItem, isSelected && styles.isSelected, accordionProps === null || accordionProps === void 0 ? void 0 : accordionProps.css];
50
-
51
- /**
52
- * Title / accordion trigger
53
- */
54
50
  var isTitleInteractive = !!(href || linkProps !== null && linkProps !== void 0 && linkProps.onClick);
55
51
 
56
52
  // Stop propagation on the title so that the accordion toggle doesn't occur on click
@@ -62,32 +58,6 @@ export var EuiCollapsibleNavAccordion = function EuiCollapsibleNavAccordion(_ref
62
58
  }, [linkProps === null || linkProps === void 0 ? void 0 : linkProps.onClick] // eslint-disable-line react-hooks/exhaustive-deps
63
59
  );
64
60
 
65
- /**
66
- * Child items
67
- */
68
- // If any of the sub items have an icon, default to an
69
- // icon of `empty` so that all text lines up vertically
70
- var itemsHaveIcons = useMemo(function () {
71
- return items.some(function (item) {
72
- return !!item.icon;
73
- });
74
- }, [items]);
75
- var icon = itemsHaveIcons ? 'empty' : undefined;
76
- var childrenCssStyles = [styles.children.euiCollapsibleNavAccordion__children, isSubItem ? styles.children.isSubItem : styles.children.isTopItem];
77
- var children = ___EmotionJSX("div", {
78
- css: childrenCssStyles,
79
- className: "euiCollapsibleNavAccordion__children"
80
- }, items.map(function (item, index) {
81
- return (
82
- // This is an intentional circular dependency between the accordion & parent item display.
83
- // EuiSideNavItem is purposely recursive to support any amount of nested sub items,
84
- // and split up into separate files/components for better dev readability
85
- ___EmotionJSX(EuiCollapsibleNavSubItem, _extends({
86
- key: index,
87
- icon: icon
88
- }, item))
89
- );
90
- }));
91
61
  return ___EmotionJSX(EuiAccordion, _extends({
92
62
  id: groupID,
93
63
  className: classes,
@@ -109,5 +79,9 @@ export var EuiCollapsibleNavAccordion = function EuiCollapsibleNavAccordion(_ref
109
79
  }, accordionProps === null || accordionProps === void 0 ? void 0 : accordionProps.arrowProps), {}, {
110
80
  css: [styles.euiCollapsibleNavAccordion__arrow, accordionProps === null || accordionProps === void 0 ? void 0 : (_accordionProps$arrow = accordionProps.arrowProps) === null || _accordionProps$arrow === void 0 ? void 0 : _accordionProps$arrow.css]
111
81
  })
112
- }), children);
82
+ }), ___EmotionJSX(EuiCollapsibleNavSubItems, {
83
+ items: items,
84
+ isSubItem: isSubItem,
85
+ className: "euiCollapsibleNavAccordion__children"
86
+ }));
113
87
  };
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import { css } from '@emotion/react';
10
- import { logicalCSS, mathWithUnits, euiCanAnimate } from '../../../global_styling';
10
+ import { logicalCSS, euiCanAnimate } from '../../../global_styling';
11
11
  import { euiCollapsibleNavItemVariables } from './collapsible_nav_item.styles';
12
12
  export var euiCollapsibleNavAccordionStyles = function euiCollapsibleNavAccordionStyles(euiThemeContext) {
13
13
  var euiTheme = euiThemeContext.euiTheme;
@@ -20,14 +20,6 @@ export var euiCollapsibleNavAccordionStyles = function euiCollapsibleNavAccordio
20
20
  isSelected: /*#__PURE__*/css("&>.euiAccordion__triggerWrapper{background-color:", sharedStyles.backgroundSelectedColor, ";&:hover{background-color:", sharedStyles.backgroundSelectedColor, ";}};label:isSelected;"),
21
21
  isSubItem: /*#__PURE__*/css("&.euiAccordion-isOpen{", logicalCSS('margin-bottom', 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;"),
24
- // Children wrapper
25
- children: {
26
- euiCollapsibleNavAccordion__children: /*#__PURE__*/css(";label:euiCollapsibleNavAccordion__children;"),
27
- isTopItem: /*#__PURE__*/css(logicalCSS('padding-top', euiTheme.size.xs), " ", logicalCSS('padding-left', euiTheme.size.xl), ";;label:isTopItem;"),
28
- isSubItem: /*#__PURE__*/css(logicalCSS('border-left', euiTheme.border.thin), " ", logicalCSS('margin-left', euiTheme.size.s), " ", logicalCSS('padding-left', mathWithUnits([euiTheme.size.s, euiTheme.border.width.thin], function (x, y) {
29
- return x - y;
30
- })), ";;label:isSubItem;")
31
- }
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;")
32
24
  };
33
25
  };
@@ -1,8 +1,9 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
3
  var _excluded = ["isSubItem", "title", "titleElement", "icon", "iconProps", "items", "children"],
4
- _excluded2 = ["isGroupTitle", "className"],
5
- _excluded3 = ["className"];
4
+ _excluded2 = ["renderItem", "className"],
5
+ _excluded3 = ["items", "isSubItem", "isGroup", "className"],
6
+ _excluded4 = ["className"];
6
7
  /*
7
8
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
8
9
  * or more contributor license agreements. Licensed under the Elastic License
@@ -11,16 +12,15 @@ var _excluded = ["isSubItem", "title", "titleElement", "icon", "iconProps", "ite
11
12
  * Side Public License, v 1.
12
13
  */
13
14
 
14
- import React, { useContext } from 'react';
15
+ import React, { useContext, useMemo } from 'react';
15
16
  import classNames from 'classnames';
16
17
  import { useEuiTheme } from '../../../services';
17
18
  import { EuiIcon } from '../../icon';
18
- import { EuiTitle } from '../../title';
19
19
  import { EuiCollapsibleNavContext } from '../context';
20
20
  import { EuiCollapsedNavItem } from './collapsed';
21
21
  import { EuiCollapsibleNavAccordion } from './collapsible_nav_accordion';
22
22
  import { EuiCollapsibleNavLink } from './collapsible_nav_link';
23
- import { euiCollapsibleNavItemTitleStyles, euiCollapsibleNavSubItemGroupTitleStyles } from './collapsible_nav_item.styles';
23
+ import { euiCollapsibleNavItemTitleStyles, euiCollapsibleNavSubItemsStyles } from './collapsible_nav_item.styles';
24
24
  import { jsx as ___EmotionJSX } from "@emotion/react";
25
25
  /**
26
26
  * Internal DRY subcomponent shared between top level items and sub items
@@ -63,7 +63,7 @@ var EuiCollapsibleNavItemDisplay = function EuiCollapsibleNavItemDisplay(_ref) {
63
63
  /**
64
64
  * Internal subcomponent for title display
65
65
  */
66
- var EuiCollapsibleNavItemTitle = function EuiCollapsibleNavItemTitle(_ref2) {
66
+ export var EuiCollapsibleNavItemTitle = function EuiCollapsibleNavItemTitle(_ref2) {
67
67
  var title = _ref2.title,
68
68
  _ref2$titleElement = _ref2.titleElement,
69
69
  titleElement = _ref2$titleElement === void 0 ? 'span' : _ref2$titleElement,
@@ -80,23 +80,16 @@ var EuiCollapsibleNavItemTitle = function EuiCollapsibleNavItemTitle(_ref2) {
80
80
  };
81
81
 
82
82
  /**
83
- * Sub-items can either be a group title, to visually separate sections
84
- * of nav links, or they can simply be more links or accordions
83
+ * Sub-items can either be a totally custom rendered item,
84
+ * or they can simply be more links or accordions
85
85
  */
86
86
  export var EuiCollapsibleNavSubItem = function EuiCollapsibleNavSubItem(_ref3) {
87
- var isGroupTitle = _ref3.isGroupTitle,
87
+ var renderItem = _ref3.renderItem,
88
88
  className = _ref3.className,
89
89
  props = _objectWithoutProperties(_ref3, _excluded2);
90
- var euiTheme = useEuiTheme();
91
- var styles = euiCollapsibleNavSubItemGroupTitleStyles(euiTheme);
92
90
  var classes = classNames('euiCollapsibleNavSubItem', className);
93
- if (isGroupTitle) {
94
- var TitleElement = props.titleElement || 'div';
95
- return ___EmotionJSX(EuiTitle, {
96
- size: "xxxs",
97
- css: styles.euiCollapsibleNavItem__groupTitle,
98
- className: "euiCollapsibleNavItem__groupTitle eui-textTruncate"
99
- }, ___EmotionJSX(TitleElement, null, props.title));
91
+ if (renderItem) {
92
+ return ___EmotionJSX(React.Fragment, null, renderItem());
100
93
  }
101
94
  return ___EmotionJSX(EuiCollapsibleNavItemDisplay, _extends({
102
95
  className: classes
@@ -105,13 +98,53 @@ export var EuiCollapsibleNavSubItem = function EuiCollapsibleNavSubItem(_ref3) {
105
98
  }));
106
99
  };
107
100
 
101
+ /**
102
+ * Reuseable component for rendering a group of sub items
103
+ * Used by both `EuiCollapsibleNavGroup` and `EuiCollapsibleNavAccordion`
104
+ */
105
+
106
+ export var EuiCollapsibleNavSubItems = function EuiCollapsibleNavSubItems(_ref4) {
107
+ var items = _ref4.items,
108
+ isSubItem = _ref4.isSubItem,
109
+ isGroup = _ref4.isGroup,
110
+ className = _ref4.className,
111
+ rest = _objectWithoutProperties(_ref4, _excluded3);
112
+ var classes = classNames('euiCollapsibleNavItem__items', className);
113
+ var euiTheme = useEuiTheme();
114
+ var styles = euiCollapsibleNavSubItemsStyles(euiTheme);
115
+ var cssStyles = [styles.euiCollapsibleNavItem__items, isGroup ? styles.isGroup : isSubItem ? styles.isSubItem : styles.isTopItem];
116
+ var itemsHaveIcons = useMemo(function () {
117
+ return items.some(function (item) {
118
+ return !!item.icon;
119
+ });
120
+ }, [items]);
121
+ return ___EmotionJSX("div", _extends({
122
+ className: classes,
123
+ css: cssStyles
124
+ }, rest), items.map(function (item, index) {
125
+ // If any of the sub items have an icon, default to an
126
+ // icon of `empty` so that all text lines up vertically
127
+ if (!item.renderItem && itemsHaveIcons && !item.icon) {
128
+ item.icon = 'empty';
129
+ }
130
+ return (
131
+ // This is an intentional circular dependency between the accordion & parent item display.
132
+ // EuiSideNavItem is purposely recursive to support any amount of nested sub items,
133
+ // and split up into separate files/components for better dev readability
134
+ ___EmotionJSX(EuiCollapsibleNavSubItem, _extends({
135
+ key: index
136
+ }, item))
137
+ );
138
+ }));
139
+ };
140
+
108
141
  /**
109
142
  * The actual exported component
110
143
  */
111
144
 
112
- export var EuiCollapsibleNavItem = function EuiCollapsibleNavItem(_ref4) {
113
- var className = _ref4.className,
114
- props = _objectWithoutProperties(_ref4, _excluded3);
145
+ export var EuiCollapsibleNavItem = function EuiCollapsibleNavItem(_ref5) {
146
+ var className = _ref5.className,
147
+ props = _objectWithoutProperties(_ref5, _excluded4);
115
148
  var classes = classNames('euiCollapsibleNavItem', className);
116
149
  var _useContext = useContext(EuiCollapsibleNavContext),
117
150
  isCollapsed = _useContext.isCollapsed,
@@ -11,7 +11,7 @@ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringif
11
11
  */
12
12
 
13
13
  import { css } from '@emotion/react';
14
- import { logicalCSS, logicalShorthandCSS, euiFontSize } from '../../../global_styling';
14
+ import { logicalCSS, mathWithUnits, euiFontSize } from '../../../global_styling';
15
15
  import { euiButtonColor } from '../../../themes/amsterdam/global_styling/mixins/button';
16
16
 
17
17
  /**
@@ -47,9 +47,19 @@ export var euiCollapsibleNavItemTitleStyles = {
47
47
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
48
48
  }
49
49
  };
50
- export var euiCollapsibleNavSubItemGroupTitleStyles = function euiCollapsibleNavSubItemGroupTitleStyles(_ref) {
50
+
51
+ /**
52
+ * Sub item groups
53
+ */
54
+
55
+ export var euiCollapsibleNavSubItemsStyles = function euiCollapsibleNavSubItemsStyles(_ref) {
51
56
  var euiTheme = _ref.euiTheme;
52
57
  return {
53
- euiCollapsibleNavItem__groupTitle: /*#__PURE__*/css(logicalCSS('margin-top', euiTheme.size.base), " ", logicalShorthandCSS('padding', "".concat(euiTheme.size.xs, " ").concat(euiTheme.size.s)), ";;label:euiCollapsibleNavItem__groupTitle;")
58
+ euiCollapsibleNavItem__items: /*#__PURE__*/css(";label:euiCollapsibleNavItem__items;"),
59
+ isGroup: /*#__PURE__*/css(logicalCSS('padding-top', euiTheme.size.xs), " ", logicalCSS('padding-left', euiTheme.size.s), ";;label:isGroup;"),
60
+ isTopItem: /*#__PURE__*/css(logicalCSS('padding-top', euiTheme.size.xs), " ", logicalCSS('padding-left', euiTheme.size.xl), ";;label:isTopItem;"),
61
+ isSubItem: /*#__PURE__*/css(logicalCSS('border-left', euiTheme.border.thin), " ", logicalCSS('margin-left', euiTheme.size.s), " ", logicalCSS('padding-left', mathWithUnits([euiTheme.size.s, euiTheme.border.width.thin], function (x, y) {
62
+ return x - y;
63
+ })), ";;label:isSubItem;")
54
64
  };
55
65
  };