@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.
- package/dist/eui_theme_dark.css +8 -21
- package/dist/eui_theme_dark.min.css +1 -1
- package/dist/eui_theme_light.css +8 -21
- package/dist/eui_theme_light.min.css +1 -1
- package/es/components/collapsible_nav_beta/collapsible_nav_beta.js +20 -6
- package/es/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +4 -14
- package/es/components/collapsible_nav_beta/collapsible_nav_body_footer.js +57 -0
- package/es/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +25 -0
- package/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +156 -0
- package/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.styles.js +19 -0
- package/es/components/collapsible_nav_beta/collapsible_nav_group/index.js +9 -0
- package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +3 -7
- package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +3 -7
- package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +4 -8
- package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +16 -63
- package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +2 -10
- package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +122 -41
- package/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.styles.js +13 -3
- package/es/components/combo_box/combo_box.js +12 -25
- package/es/components/combo_box/combo_box_input/combo_box_input.js +61 -54
- package/es/components/text_truncate/index.js +1 -1
- package/es/components/text_truncate/utils.js +88 -138
- package/es/services/canvas/canvas_text_utils.js +64 -0
- package/es/services/canvas/index.js +9 -0
- package/es/services/index.js +1 -0
- package/eui.d.ts +186 -105
- package/i18ntokens.json +8 -8
- package/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +20 -6
- package/lib/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +11 -19
- package/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.js +67 -0
- package/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +33 -0
- package/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +166 -0
- package/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.styles.js +26 -0
- package/lib/components/collapsible_nav_beta/collapsible_nav_group/index.js +12 -0
- package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +3 -7
- package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +3 -7
- package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +4 -8
- package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +14 -61
- package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -9
- package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +122 -39
- package/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.styles.js +13 -4
- package/lib/components/combo_box/combo_box.js +12 -25
- package/lib/components/combo_box/combo_box_input/combo_box_input.js +60 -53
- package/lib/components/text_truncate/index.js +0 -6
- package/lib/components/text_truncate/utils.js +97 -148
- package/lib/services/canvas/canvas_text_utils.js +70 -0
- package/lib/services/canvas/index.js +12 -0
- package/lib/services/index.js +8 -0
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.js +17 -3
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +4 -14
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_body_footer.js +56 -0
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +25 -0
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +48 -0
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.styles.js +19 -0
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_group/index.js +9 -0
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +7 -33
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +2 -10
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +54 -21
- package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.styles.js +13 -3
- package/optimize/es/components/combo_box/combo_box.js +12 -25
- package/optimize/es/components/combo_box/combo_box_input/combo_box_input.js +61 -53
- package/optimize/es/components/text_truncate/index.js +1 -1
- package/optimize/es/components/text_truncate/utils.js +87 -137
- package/optimize/es/services/canvas/canvas_text_utils.js +60 -0
- package/optimize/es/services/canvas/index.js +9 -0
- package/optimize/es/services/index.js +1 -0
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +15 -1
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +11 -19
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.js +66 -0
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +33 -0
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +58 -0
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.styles.js +26 -0
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_group/index.js +12 -0
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +5 -31
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -9
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +54 -20
- package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.styles.js +13 -4
- package/optimize/lib/components/combo_box/combo_box.js +12 -25
- package/optimize/lib/components/combo_box/combo_box_input/combo_box_input.js +60 -52
- package/optimize/lib/components/text_truncate/index.js +0 -6
- package/optimize/lib/components/text_truncate/utils.js +96 -147
- package/optimize/lib/services/canvas/canvas_text_utils.js +67 -0
- package/optimize/lib/services/canvas/index.js +12 -0
- package/optimize/lib/services/index.js +8 -0
- package/package.json +2 -5
- package/src/components/combo_box/_combo_box.scss +12 -19
- package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.js +20 -6
- package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +11 -19
- package/test-env/components/collapsible_nav_beta/collapsible_nav_body_footer.js +66 -0
- package/test-env/components/collapsible_nav_beta/collapsible_nav_body_footer.styles.js +33 -0
- package/test-env/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js +165 -0
- package/test-env/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.styles.js +26 -0
- package/test-env/components/collapsible_nav_beta/collapsible_nav_group/index.js +12 -0
- package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_button.js +3 -7
- package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_item.js +3 -7
- package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsed/collapsed_nav_popover.js +4 -8
- package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.js +14 -61
- package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_accordion.styles.js +1 -9
- package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js +122 -39
- package/test-env/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.styles.js +13 -4
- package/test-env/components/combo_box/combo_box.js +12 -25
- package/test-env/components/combo_box/combo_box_input/combo_box_input.js +60 -53
- package/test-env/components/text_truncate/index.js +0 -6
- package/test-env/components/text_truncate/utils.js +96 -147
- package/test-env/services/canvas/canvas_text_utils.js +30 -0
- package/test-env/services/canvas/index.js +12 -0
- 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");
|
package/lib/services/index.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
10
|
+
import { logicalCSS } from '../../global_styling';
|
|
12
11
|
import { euiShadowFlat } from '../../themes';
|
|
13
12
|
import { euiHeaderVariables } from '../header/header.styles';
|
|
14
|
-
|
|
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),
|
|
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:
|
|
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
|
+
};
|
package/optimize/es/components/collapsible_nav_beta/collapsible_nav_group/collapsible_nav_group.js
ADDED
|
@@ -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
|
|
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 {
|
|
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
|
-
}),
|
|
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,
|
|
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
|
};
|
package/optimize/es/components/collapsible_nav_beta/collapsible_nav_item/collapsible_nav_item.js
CHANGED
|
@@ -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 = ["
|
|
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,
|
|
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
|
|
84
|
-
*
|
|
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
|
|
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 (
|
|
94
|
-
|
|
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(
|
|
113
|
-
var className =
|
|
114
|
-
props = _objectWithoutProperties(
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
};
|