@elastic/eui 88.1.0 → 88.2.0

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 (111) hide show
  1. package/dist/eui_charts_theme.js.map +1 -1
  2. package/dist/eui_theme_dark.css +9 -36
  3. package/dist/eui_theme_dark.min.css +1 -1
  4. package/dist/eui_theme_light.css +9 -36
  5. package/dist/eui_theme_light.min.css +1 -1
  6. package/es/components/accordion/accordion.js +34 -9
  7. package/es/components/accordion/accordion.styles.js +29 -9
  8. package/es/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +10 -2
  9. package/es/components/collapsible_nav_beta/collapsible_nav_beta.js +2 -25
  10. package/es/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +10 -1
  11. package/es/components/flyout/flyout.styles.js +1 -1
  12. package/es/components/header/header.js +120 -25
  13. package/es/components/header/header.styles.js +1 -1
  14. package/es/components/index.js +1 -0
  15. package/es/components/overlay_mask/overlay_mask.styles.js +1 -1
  16. package/es/components/page/page_sidebar/page_sidebar.js +2 -4
  17. package/es/components/page_template/page_template.js +4 -31
  18. package/es/components/text_truncate/index.js +10 -0
  19. package/es/components/text_truncate/text_truncate.js +232 -0
  20. package/es/components/text_truncate/text_truncate.styles.js +49 -0
  21. package/es/components/text_truncate/utils.js +348 -0
  22. package/es/services/theme/context.js +3 -1
  23. package/es/services/theme/hooks.js +19 -1
  24. package/es/services/theme/index.js +1 -1
  25. package/es/services/theme/provider.js +37 -8
  26. package/eui.d.ts +246 -17
  27. package/i18ntokens.json +8 -8
  28. package/lib/components/accordion/accordion.js +33 -8
  29. package/lib/components/accordion/accordion.styles.js +31 -10
  30. package/lib/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +10 -2
  31. package/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +2 -25
  32. package/lib/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +10 -1
  33. package/lib/components/flyout/flyout.styles.js +1 -1
  34. package/lib/components/header/header.js +120 -23
  35. package/lib/components/header/header.styles.js +1 -1
  36. package/lib/components/index.js +11 -0
  37. package/lib/components/overlay_mask/overlay_mask.styles.js +1 -1
  38. package/lib/components/page/page_sidebar/page_sidebar.js +2 -4
  39. package/lib/components/page_template/page_template.js +2 -29
  40. package/lib/components/text_truncate/index.js +25 -0
  41. package/lib/components/text_truncate/text_truncate.js +242 -0
  42. package/lib/components/text_truncate/text_truncate.styles.js +54 -0
  43. package/lib/components/text_truncate/utils.js +352 -0
  44. package/lib/services/theme/context.js +3 -1
  45. package/lib/services/theme/hooks.js +21 -2
  46. package/lib/services/theme/index.js +6 -0
  47. package/lib/services/theme/provider.js +62 -35
  48. package/optimize/es/components/accordion/accordion.js +19 -7
  49. package/optimize/es/components/accordion/accordion.styles.js +29 -9
  50. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.js +2 -25
  51. package/optimize/es/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +10 -1
  52. package/optimize/es/components/flyout/flyout.styles.js +1 -1
  53. package/optimize/es/components/header/header.js +75 -25
  54. package/optimize/es/components/header/header.styles.js +1 -1
  55. package/optimize/es/components/index.js +1 -0
  56. package/optimize/es/components/overlay_mask/overlay_mask.styles.js +1 -1
  57. package/optimize/es/components/page/page_sidebar/page_sidebar.js +2 -4
  58. package/optimize/es/components/page_template/page_template.js +4 -26
  59. package/optimize/es/components/text_truncate/index.js +10 -0
  60. package/optimize/es/components/text_truncate/text_truncate.js +148 -0
  61. package/optimize/es/components/text_truncate/text_truncate.styles.js +49 -0
  62. package/optimize/es/components/text_truncate/utils.js +337 -0
  63. package/optimize/es/services/theme/context.js +3 -1
  64. package/optimize/es/services/theme/hooks.js +19 -1
  65. package/optimize/es/services/theme/index.js +1 -1
  66. package/optimize/es/services/theme/provider.js +37 -8
  67. package/optimize/lib/components/accordion/accordion.js +18 -6
  68. package/optimize/lib/components/accordion/accordion.styles.js +31 -10
  69. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.js +2 -25
  70. package/optimize/lib/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +10 -1
  71. package/optimize/lib/components/flyout/flyout.styles.js +1 -1
  72. package/optimize/lib/components/header/header.js +77 -24
  73. package/optimize/lib/components/header/header.styles.js +1 -1
  74. package/optimize/lib/components/index.js +11 -0
  75. package/optimize/lib/components/overlay_mask/overlay_mask.styles.js +1 -1
  76. package/optimize/lib/components/page/page_sidebar/page_sidebar.js +2 -4
  77. package/optimize/lib/components/page_template/page_template.js +2 -24
  78. package/optimize/lib/components/text_truncate/index.js +25 -0
  79. package/optimize/lib/components/text_truncate/text_truncate.js +158 -0
  80. package/optimize/lib/components/text_truncate/text_truncate.styles.js +54 -0
  81. package/optimize/lib/components/text_truncate/utils.js +342 -0
  82. package/optimize/lib/services/theme/context.js +3 -1
  83. package/optimize/lib/services/theme/hooks.js +21 -2
  84. package/optimize/lib/services/theme/index.js +6 -0
  85. package/optimize/lib/services/theme/provider.js +62 -35
  86. package/package.json +1 -1
  87. package/src/components/datagrid/_data_grid.scss +13 -2
  88. package/src/components/index.scss +0 -1
  89. package/src/global_styling/mixins/_header.scss +2 -0
  90. package/test-env/components/accordion/accordion.js +28 -8
  91. package/test-env/components/accordion/accordion.styles.js +31 -10
  92. package/test-env/components/collapsible_nav/collapsible_nav_group/collapsible_nav_group.js +10 -2
  93. package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.js +2 -25
  94. package/test-env/components/collapsible_nav_beta/collapsible_nav_beta.styles.js +10 -1
  95. package/test-env/components/flyout/flyout.styles.js +1 -1
  96. package/test-env/components/header/header.js +113 -23
  97. package/test-env/components/header/header.styles.js +1 -1
  98. package/test-env/components/index.js +11 -0
  99. package/test-env/components/overlay_mask/overlay_mask.styles.js +1 -1
  100. package/test-env/components/page/page_sidebar/page_sidebar.js +2 -4
  101. package/test-env/components/page_template/page_template.js +2 -24
  102. package/test-env/components/text_truncate/index.js +25 -0
  103. package/test-env/components/text_truncate/text_truncate.js +236 -0
  104. package/test-env/components/text_truncate/text_truncate.styles.js +54 -0
  105. package/test-env/components/text_truncate/utils.js +342 -0
  106. package/test-env/services/theme/context.js +3 -1
  107. package/test-env/services/theme/hooks.js +21 -2
  108. package/test-env/services/theme/index.js +6 -0
  109. package/test-env/services/theme/provider.js +62 -35
  110. package/src/components/accordion/_accordion_form.scss +0 -40
  111. package/src/components/accordion/_index.scss +0 -1
@@ -9,7 +9,6 @@ var _react = _interopRequireWildcard(require("react"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _classnames = _interopRequireDefault(require("classnames"));
11
11
  var _services = require("../../services");
12
- var _global_styling = require("../../global_styling");
13
12
  var _flyout = require("../flyout");
14
13
  var _i18n = require("../i18n");
15
14
  var _header = require("../header/header.styles");
@@ -17,7 +16,7 @@ var _context = require("./context");
17
16
  var _collapsible_nav_button = require("./collapsible_nav_button");
18
17
  var _collapsible_nav_beta = require("./collapsible_nav_beta.styles");
19
18
  var _react2 = require("@emotion/react");
20
- var _excluded = ["id", "children", "className", "style", "initialIsCollapsed", "onCollapseToggle", "width", "side", "focusTrapProps"];
19
+ var _excluded = ["id", "children", "className", "initialIsCollapsed", "onCollapseToggle", "width", "side", "focusTrapProps"];
21
20
  /*
22
21
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
23
22
  * or more contributor license agreements. Licensed under the Elastic License
@@ -50,7 +49,6 @@ var EuiCollapsibleNavBeta = function EuiCollapsibleNavBeta(_ref) {
50
49
  var id = _ref.id,
51
50
  children = _ref.children,
52
51
  className = _ref.className,
53
- style = _ref.style,
54
52
  _ref$initialIsCollaps = _ref.initialIsCollapsed,
55
53
  initialIsCollapsed = _ref$initialIsCollaps === void 0 ? false : _ref$initialIsCollaps,
56
54
  onCollapseToggle = _ref.onCollapseToggle,
@@ -121,24 +119,6 @@ var EuiCollapsibleNavBeta = function EuiCollapsibleNavBeta(_ref) {
121
119
  return _width;
122
120
  }, [_width, isOverlayFullWidth, isPush, isCollapsed, headerHeight]);
123
121
 
124
- /**
125
- * Header affordance
126
- */
127
- var _useState7 = (0, _react.useState)(false),
128
- _useState8 = _slicedToArray(_useState7, 2),
129
- fixedHeadersCount = _useState8[0],
130
- setFixedHeadersCount = _useState8[1];
131
- (0, _react.useEffect)(function () {
132
- setFixedHeadersCount(document.querySelectorAll('.euiHeader[data-fixed-header]').length);
133
- }, []);
134
- var stylesWithHeaderOffset = (0, _react.useMemo)(function () {
135
- if (!fixedHeadersCount) return style;
136
- var headersOffset = (0, _global_styling.mathWithUnits)(headerHeight, function (x) {
137
- return x * fixedHeadersCount;
138
- });
139
- return _objectSpread(_objectSpread(_objectSpread({}, style), (0, _global_styling.logicalStyle)('top', headersOffset)), (0, _global_styling.logicalStyle)('height', "calc(100% - ".concat(headersOffset, ")")));
140
- }, [fixedHeadersCount, style, headerHeight]);
141
-
142
122
  /**
143
123
  * Prop setup
144
124
  */
@@ -156,16 +136,13 @@ var EuiCollapsibleNavBeta = function EuiCollapsibleNavBeta(_ref) {
156
136
  var classes = (0, _classnames.default)('euiCollapsibleNav', 'euiCollapsibleNavBeta', className);
157
137
  var styles = (0, _collapsible_nav_beta.euiCollapsibleNavBetaStyles)(euiTheme);
158
138
  var cssStyles = [styles.euiCollapsibleNavBeta, styles[side], isPush && styles.isPush, isPush && isCollapsed && styles.isPushCollapsed, isOverlayFullWidth && styles.isOverlayFullWidth];
159
-
160
- // Wait for any fixed headers to be queried before rendering (prevents position jumping)
161
- var flyout = fixedHeadersCount !== false && (0, _react2.jsx)(_flyout.EuiFlyout, _extends({
139
+ var flyout = (0, _react2.jsx)(_flyout.EuiFlyout, _extends({
162
140
  "aria-label": defaultAriaLabel
163
141
  }, rest, {
164
142
  // EuiCollapsibleNav is significantly less permissive than EuiFlyout
165
143
  id: flyoutID,
166
144
  css: cssStyles,
167
145
  className: classes,
168
- style: stylesWithHeaderOffset,
169
146
  size: width,
170
147
  side: side,
171
148
  focusTrapProps: focusTrapProps,
@@ -7,6 +7,7 @@ exports.euiCollapsibleNavBetaStyles = void 0;
7
7
  var _react = require("@emotion/react");
8
8
  var _global_styling = require("../../global_styling");
9
9
  var _themes = require("../../themes");
10
+ var _header = require("../header/header.styles");
10
11
  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)."; } /*
11
12
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
12
13
  * or more contributor license agreements. Licensed under the Elastic License
@@ -24,8 +25,16 @@ var _ref = process.env.NODE_ENV === "production" ? {
24
25
  };
25
26
  var euiCollapsibleNavBetaStyles = function euiCollapsibleNavBetaStyles(euiThemeContext) {
26
27
  var euiTheme = euiThemeContext.euiTheme;
28
+
29
+ // At least for serverless, EuiCollapsibleNav is only going to be used with 1
30
+ // fixed header. For those scenarios, we can prevent a minor layout jump on
31
+ // page load by setting the CSS var fallback to the height of a single header
32
+ var defaultHeaderHeight = (0, _header.euiHeaderVariables)(euiThemeContext).height;
33
+ var fixedHeaderOffset = "var(--euiFixedHeadersOffset, ".concat(defaultHeaderHeight, ")");
27
34
  return {
28
- euiCollapsibleNavBeta: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('padding-bottom', euiTheme.size.xs), (0, _global_styling.euiYScroll)(euiThemeContext), ".euiFlyoutBody{", (0, _global_styling.logicalCSS)('min-height', '50%'), ";}.euiFlyoutFooter{background-color:", euiTheme.colors.emptyShade, ";", (0, _global_styling.logicalCSS)('border-top', euiTheme.border.thin), ";};label:euiCollapsibleNavBeta;"),
35
+ euiCollapsibleNavBeta: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('top', fixedHeaderOffset), (0, _global_styling.euiYScroll)(euiThemeContext, {
36
+ height: 'inherit'
37
+ }), (0, _global_styling.logicalCSS)('padding-bottom', euiTheme.size.xs), ".euiFlyoutBody{", (0, _global_styling.logicalCSS)('min-height', '50%'), ";}.euiFlyoutFooter{background-color:", euiTheme.colors.emptyShade, ";", (0, _global_styling.logicalCSS)('border-top', euiTheme.border.thin), ";};label:euiCollapsibleNavBeta;"),
29
38
  left: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('border-right', euiTheme.border.thin), ";;label:left;"),
30
39
  right: /*#__PURE__*/(0, _react.css)((0, _global_styling.logicalCSS)('border-left', euiTheme.border.thin), ";;label:right;"),
31
40
  isPush: /*#__PURE__*/(0, _react.css)((0, _themes.euiShadowFlat)(euiThemeContext), ";;label:isPush;"),
@@ -40,7 +40,7 @@ exports.euiFlyoutCloseButtonStyles = euiFlyoutCloseButtonStyles;
40
40
  var euiFlyoutStyles = function euiFlyoutStyles(euiThemeContext) {
41
41
  var euiTheme = euiThemeContext.euiTheme;
42
42
  return {
43
- euiFlyout: /*#__PURE__*/(0, _react.css)("position:fixed;", (0, _global_styling.logicalCSS)('top', 0), " ", (0, _global_styling.logicalCSS)('bottom', 0), " ", (0, _global_styling.logicalCSS)('height', '100%'), " z-index:", euiTheme.levels.flyout, ";background:", euiTheme.colors.emptyShade, ";display:flex;flex-direction:column;align-items:stretch;&:focus{outline:none;}", (0, _global_styling.euiMaxBreakpoint)(euiThemeContext, 'm'), "{", (0, _global_styling.logicalCSS)('max-width', '90vw !important'), ";};label:euiFlyout;"),
43
+ euiFlyout: /*#__PURE__*/(0, _react.css)("position:fixed;", (0, _global_styling.logicalCSS)('bottom', 0), " ", (0, _global_styling.logicalCSS)('top', 'var(--euiFixedHeadersOffset, 0)'), " ", (0, _global_styling.logicalCSS)('height', 'inherit'), " z-index:", euiTheme.levels.flyout, ";background:", euiTheme.colors.emptyShade, ";display:flex;flex-direction:column;align-items:stretch;&:focus{outline:none;}", (0, _global_styling.euiMaxBreakpoint)(euiThemeContext, 'm'), "{", (0, _global_styling.logicalCSS)('max-width', '90vw !important'), ";};label:euiFlyout;"),
44
44
  // Flyout sizes
45
45
  s: /*#__PURE__*/(0, _react.css)(composeFlyoutSizing(euiThemeContext, 's'), ";;label:s;"),
46
46
  m: /*#__PURE__*/(0, _react.css)(composeFlyoutSizing(euiThemeContext, 'm'), ";;label:m;"),
@@ -4,16 +4,19 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.EuiHeader = void 0;
7
+ exports.euiFixedHeadersCount = exports.EuiHeader = exports.EuiFixedHeader = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _classnames = _interopRequireDefault(require("classnames"));
11
11
  var _services = require("../../services");
12
+ var _global_styling = require("../../global_styling");
12
13
  var _header_breadcrumbs = require("./header_breadcrumbs");
13
14
  var _header_section = require("./header_section");
14
15
  var _header = require("./header.styles");
15
16
  var _react2 = require("@emotion/react");
16
- var _excluded = ["children", "className", "sections", "position", "theme"];
17
+ var _euiFixedHeadersCount, _euiFixedHeadersCount2;
18
+ var _excluded = ["children", "className", "sections", "position", "theme"],
19
+ _excluded2 = ["children", "style"];
17
20
  /*
18
21
  * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
19
22
  * or more contributor license agreements. Licensed under the Elastic License
@@ -24,6 +27,17 @@ var _excluded = ["children", "className", "sections", "position", "theme"];
24
27
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
28
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
26
29
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
30
+ 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; }
31
+ 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; }
32
+ 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; }
33
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
34
+ 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); }
35
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
36
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
37
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
38
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
39
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
40
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
27
41
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
28
42
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
29
43
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
@@ -34,8 +48,6 @@ var createHeaderSection = function createHeaderSection(sections) {
34
48
  }, section);
35
49
  });
36
50
  };
37
- // Start a counter to manage the total number of fixed headers that need the body class
38
- var euiHeaderFixedCounter = 0;
39
51
  var EuiHeader = function EuiHeader(_ref) {
40
52
  var children = _ref.children,
41
53
  className = _ref.className,
@@ -49,22 +61,6 @@ var EuiHeader = function EuiHeader(_ref) {
49
61
  var euiTheme = (0, _services.useEuiTheme)();
50
62
  var styles = (0, _header.euiHeaderStyles)(euiTheme);
51
63
  var cssStyles = [styles.euiHeader, styles[position], styles[theme]];
52
- (0, _react.useEffect)(function () {
53
- if (position === 'fixed') {
54
- // Increment fixed header counter for each fixed header
55
- euiHeaderFixedCounter++;
56
- document.body.classList.add('euiBody--headerIsFixed');
57
- document.body.dataset.fixedHeaders = String(euiHeaderFixedCounter);
58
- return function () {
59
- // Both decrement the fixed counter AND then check if there are none
60
- if (--euiHeaderFixedCounter === 0) {
61
- // If there are none, THEN remove class
62
- document.body.classList.remove('euiBody--headerIsFixed');
63
- delete document.body.dataset.fixedHeaders;
64
- }
65
- };
66
- }
67
- }, [position]);
68
64
  var contents;
69
65
  if (sections) {
70
66
  if (children) {
@@ -93,12 +89,22 @@ var EuiHeader = function EuiHeader(_ref) {
93
89
  } else {
94
90
  contents = children;
95
91
  }
96
- return (0, _react2.jsx)("div", _extends({
92
+ return position === 'fixed' ? (0, _react2.jsx)(EuiFixedHeader, _extends({
93
+ css: cssStyles,
94
+ className: classes
95
+ }, rest), contents) : (0, _react2.jsx)("div", _extends({
97
96
  css: cssStyles,
98
- className: classes,
99
- "data-fixed-header": position === 'fixed' || undefined // Used by EuiFlyouts as a query selector
97
+ className: classes
100
98
  }, rest), contents);
101
99
  };
100
+
101
+ /**
102
+ * Fixed headers - logic around dynamically calculating the total
103
+ * page offset and setting the `top` position of subsequent headers
104
+ */
105
+
106
+ // Start a counter to manage the total number of fixed headers
107
+ // Exported for unit testing only
102
108
  exports.EuiHeader = EuiHeader;
103
109
  EuiHeader.propTypes = {
104
110
  className: _propTypes.default.string,
@@ -136,4 +142,95 @@ EuiHeader.propTypes = {
136
142
  * Or, force the header into pseudo `dark` theme for all themes.
137
143
  */
138
144
  theme: _propTypes.default.oneOf(["default", "dark"])
145
+ };
146
+ var euiFixedHeadersCount = 0;
147
+
148
+ // Exported for unit testing only
149
+ exports.euiFixedHeadersCount = euiFixedHeadersCount;
150
+ var EuiFixedHeader = function EuiFixedHeader(_ref2) {
151
+ var children = _ref2.children,
152
+ style = _ref2.style,
153
+ rest = _objectWithoutProperties(_ref2, _excluded2);
154
+ var _useEuiThemeCSSVariab = (0, _services.useEuiThemeCSSVariables)(),
155
+ setGlobalCSSVariables = _useEuiThemeCSSVariab.setGlobalCSSVariables;
156
+ var euiTheme = (0, _services.useEuiTheme)();
157
+ var headerHeight = (0, _header.euiHeaderVariables)(euiTheme).height;
158
+ var getHeaderOffset = (0, _react.useCallback)(function () {
159
+ return (0, _global_styling.mathWithUnits)(headerHeight, function (x) {
160
+ return x * euiFixedHeadersCount;
161
+ });
162
+ }, [headerHeight]);
163
+ var _useState = (0, _react.useState)(),
164
+ _useState2 = _slicedToArray(_useState, 2),
165
+ topPosition = _useState2[0],
166
+ setTopPosition = _useState2[1];
167
+ (0, _react.useEffect)(function () {
168
+ // Get the top position from the offset of previous header(s)
169
+ setTopPosition(getHeaderOffset());
170
+
171
+ // Increment fixed header counter for each fixed header
172
+ _euiFixedHeadersCount = euiFixedHeadersCount++, exports.euiFixedHeadersCount = euiFixedHeadersCount, _euiFixedHeadersCount;
173
+ setGlobalCSSVariables({
174
+ '--euiFixedHeadersOffset': getHeaderOffset()
175
+ });
176
+ document.body.classList.add('euiBody--headerIsFixed'); // TODO: Consider deleting this legacy className
177
+
178
+ return function () {
179
+ _euiFixedHeadersCount2 = euiFixedHeadersCount--, exports.euiFixedHeadersCount = euiFixedHeadersCount, _euiFixedHeadersCount2;
180
+ setGlobalCSSVariables({
181
+ '--euiFixedHeadersOffset': getHeaderOffset()
182
+ });
183
+ if (euiFixedHeadersCount === 0) {
184
+ document.body.classList.remove('euiBody--headerIsFixed'); // TODO: Consider deleting this legacy className
185
+ }
186
+ };
187
+ }, [getHeaderOffset, setGlobalCSSVariables]);
188
+ var inlineStyles = (0, _react.useMemo)(function () {
189
+ return (0, _global_styling.logicalStyles)(_objectSpread({
190
+ top: topPosition
191
+ }, style));
192
+ }, [topPosition, style]);
193
+ return (0, _react2.jsx)("div", _extends({
194
+ "data-fixed-header": true // Used by EuiFlyouts as a query selector
195
+ ,
196
+ style: inlineStyles
197
+ }, rest), children);
198
+ };
199
+ exports.EuiFixedHeader = EuiFixedHeader;
200
+ EuiFixedHeader.propTypes = {
201
+ className: _propTypes.default.string,
202
+ "aria-label": _propTypes.default.string,
203
+ "data-test-subj": _propTypes.default.string,
204
+ css: _propTypes.default.any,
205
+ /**
206
+ * An array of objects to wrap in a #EuiHeaderSection.
207
+ * Each section is spaced using `space-between`.
208
+ * See #EuiHeaderSectionsProp for object details.
209
+ * This prop disregards the prop `children` if both are passed.
210
+ */
211
+ sections: _propTypes.default.arrayOf(_propTypes.default.shape({
212
+ /**
213
+ * An arry of items that will be wrapped in a #EuiHeaderSectionItem
214
+ */
215
+ items: _propTypes.default.arrayOf(_propTypes.default.node.isRequired),
216
+ /**
217
+ * Breadcrumbs in the header cannot be wrapped in a #EuiHeaderSection in order for truncation to work.
218
+ * Simply pass the array of EuiBreadcrumb objects
219
+ */
220
+ breadcrumbs: _propTypes.default.arrayOf(_propTypes.default.any.isRequired),
221
+ /**
222
+ * Other props to pass to #EuiHeaderBreadcrumbs
223
+ */
224
+ breadcrumbProps: _propTypes.default.any
225
+ }).isRequired),
226
+ /**
227
+ * Helper that positions the header against the window body and
228
+ * adds the correct amount of top padding to the window when in `fixed` mode
229
+ */
230
+ position: _propTypes.default.oneOf(["static", "fixed"]),
231
+ /**
232
+ * The `default` will inherit its coloring from the light or dark theme.
233
+ * Or, force the header into pseudo `dark` theme for all themes.
234
+ */
235
+ theme: _propTypes.default.oneOf(["default", "dark"])
139
236
  };
@@ -40,7 +40,7 @@ var euiHeaderStyles = function euiHeaderStyles(euiThemeContext) {
40
40
  euiHeader: /*#__PURE__*/(0, _react.css)("display:flex;justify-content:space-between;", (0, _global_styling.logicalCSS)('height', height), " ", (0, _global_styling.logicalCSS)('padding-horizontal', padding), " ", (0, _mixins.euiShadowSmall)(euiThemeContext), ";;label:euiHeader;"),
41
41
  // Position
42
42
  static: /*#__PURE__*/(0, _react.css)("z-index:", Number(euiTheme.levels.header) - 1, ";position:relative;;label:static;"),
43
- fixed: /*#__PURE__*/(0, _react.css)("z-index:", euiTheme.levels.header, ";position:fixed;", (0, _global_styling.logicalCSS)('top', 0), " ", (0, _global_styling.logicalCSS)('horizontal', 0), " &+[data-fixed-header]{", (0, _global_styling.logicalCSS)('top', height), ";};label:fixed;"),
43
+ fixed: /*#__PURE__*/(0, _react.css)("z-index:", euiTheme.levels.header, ";position:fixed;", (0, _global_styling.logicalCSS)('top', 0), " ", (0, _global_styling.logicalCSS)('horizontal', 0), ";;label:fixed;"),
44
44
  // Theme
45
45
  default: /*#__PURE__*/(0, _react.css)("background-color:", euiTheme.colors.emptyShade, ";", (0, _global_styling.logicalCSS)('border-bottom', "".concat(euiTheme.border.width.thin, " solid ").concat(borderColor)), ";;label:default;"),
46
46
  dark: /*#__PURE__*/(0, _react.css)(euiHeaderDarkStyles(euiThemeContext, borderColor), ";label:dark;")
@@ -905,6 +905,17 @@ Object.keys(_text_diff).forEach(function (key) {
905
905
  }
906
906
  });
907
907
  });
908
+ var _text_truncate = require("./text_truncate");
909
+ Object.keys(_text_truncate).forEach(function (key) {
910
+ if (key === "default" || key === "__esModule") return;
911
+ if (key in exports && exports[key] === _text_truncate[key]) return;
912
+ Object.defineProperty(exports, key, {
913
+ enumerable: true,
914
+ get: function get() {
915
+ return _text_truncate[key];
916
+ }
917
+ });
918
+ });
908
919
  var _timeline = require("./timeline");
909
920
  Object.keys(_timeline).forEach(function (key) {
910
921
  if (key === "default" || key === "__esModule") return;
@@ -20,7 +20,7 @@ var euiOverlayMaskStyles = function euiOverlayMaskStyles(_ref) {
20
20
  return {
21
21
  euiOverlayMask: /*#__PURE__*/(0, _css.css)("position:fixed;", (0, _global_styling.logicalCSS)('top', 0), " ", (0, _global_styling.logicalCSS)('left', 0), " ", (0, _global_styling.logicalCSS)('right', 0), " ", (0, _global_styling.logicalCSS)('bottom', 0), " display:flex;align-items:center;justify-content:center;", (0, _global_styling.logicalCSS)('padding-bottom', '10vh'), " animation:", _global_styling.euiAnimFadeIn, " ", euiTheme.animation.fast, " ease-in;background:", (0, _services.transparentize)(euiTheme.colors.ink, 0.5), ";;label:euiOverlayMask;"),
22
22
  aboveHeader: /*#__PURE__*/(0, _css.css)("z-index:", euiTheme.levels.mask, ";;label:aboveHeader;"),
23
- belowHeader: /*#__PURE__*/(0, _css.css)("z-index:", euiTheme.levels.maskBelowHeader, ";", (0, _global_styling.logicalCSS)('top', "".concat(euiTheme.base * 3, "px")), ";;label:belowHeader;")
23
+ belowHeader: /*#__PURE__*/(0, _css.css)("z-index:", euiTheme.levels.maskBelowHeader, ";", (0, _global_styling.logicalCSS)('top', 'var(--euiFixedHeadersOffset, 0)'), ";;label:belowHeader;")
24
24
  };
25
25
  };
26
26
  exports.euiOverlayMaskStyles = euiOverlayMaskStyles;
@@ -62,10 +62,8 @@ var EuiPageSidebar = function EuiPageSidebar(_ref) {
62
62
  (0, _react.useLayoutEffect)(function () {
63
63
  var updatedStyles = _objectSpread(_objectSpread({}, style), (0, _global_styling.logicalStyle)('min-width', isResponding ? '100%' : minWidth));
64
64
  if (sticky) {
65
- var _document$body$datase;
66
- var euiHeaderFixedCounter = Number((_document$body$datase = document.body.dataset.fixedHeaders) !== null && _document$body$datase !== void 0 ? _document$body$datase : 0);
67
- var offset = _typeof(sticky) === 'object' ? sticky === null || sticky === void 0 ? void 0 : sticky.offset : themeContext.euiTheme.base * 3 * euiHeaderFixedCounter;
68
- updatedStyles = _objectSpread(_objectSpread(_objectSpread({}, updatedStyles), (0, _global_styling.logicalStyle)('top', offset)), (0, _global_styling.logicalStyle)('max-height', "calc(100vh - ".concat(offset, "px)")));
65
+ var offset = _typeof(sticky) === 'object' ? "".concat(sticky === null || sticky === void 0 ? void 0 : sticky.offset, "px") : 'var(--euiFixedHeadersOffset, 0)';
66
+ updatedStyles = _objectSpread(_objectSpread(_objectSpread({}, updatedStyles), (0, _global_styling.logicalStyle)('top', offset)), (0, _global_styling.logicalStyle)('max-height', "calc(100vh - ".concat(offset, ")")));
69
67
  }
70
68
  setInlineStyles(updatedStyles);
71
69
  }, [style, sticky, themeContext.euiTheme.base, isResponding, minWidth]);
@@ -33,12 +33,6 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
33
33
  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; }
34
34
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
35
35
  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); }
36
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
37
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
38
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
39
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
40
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
41
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
42
36
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
43
37
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
44
38
  var TemplateContext = /*#__PURE__*/(0, _react.createContext)({
@@ -48,14 +42,6 @@ var TemplateContext = /*#__PURE__*/(0, _react.createContext)({
48
42
  bottomBar: {}
49
43
  });
50
44
  exports.TemplateContext = TemplateContext;
51
- var calculateOffset = function calculateOffset(base) {
52
- var _document$body$datase;
53
- if (typeof document === 'undefined') return 0; // SSR catch
54
-
55
- var euiHeaderFixedCounter = Number((_document$body$datase = document.body.dataset.fixedHeaders) !== null && _document$body$datase !== void 0 ? _document$body$datase : 0);
56
- return base * 3 * euiHeaderFixedCounter;
57
- };
58
-
59
45
  /**
60
46
  * Consumed via `EuiPageTemplate`,
61
47
  * it controls and propogates most of the shared props per direct child
@@ -71,7 +57,7 @@ var _EuiPageTemplate = function _EuiPageTemplate(_ref) {
71
57
  _ref$grow = _ref.grow,
72
58
  grow = _ref$grow === void 0 ? true : _ref$grow,
73
59
  bottomBorder = _ref.bottomBorder,
74
- _offset = _ref.offset,
60
+ offset = _ref.offset,
75
61
  panelled = _ref.panelled,
76
62
  contentBorder = _ref.contentBorder,
77
63
  component = _ref.component,
@@ -80,14 +66,6 @@ var _EuiPageTemplate = function _EuiPageTemplate(_ref) {
80
66
  _ref$minHeight = _ref.minHeight,
81
67
  minHeight = _ref$minHeight === void 0 ? '460px' : _ref$minHeight,
82
68
  rest = _objectWithoutProperties(_ref, _excluded);
83
- var _useEuiTheme = (0, _services.useEuiTheme)(),
84
- euiTheme = _useEuiTheme.euiTheme;
85
- var _useState = (0, _react.useState)(function () {
86
- return _offset !== null && _offset !== void 0 ? _offset : calculateOffset(euiTheme.base);
87
- }),
88
- _useState2 = _slicedToArray(_useState, 2),
89
- offset = _useState2[0],
90
- setOffset = _useState2[1];
91
69
  var templateContext = (0, _react.useContext)(TemplateContext);
92
70
 
93
71
  // Used as a target to insert the bottom bar component
@@ -95,11 +73,6 @@ var _EuiPageTemplate = function _EuiPageTemplate(_ref) {
95
73
  prefix: 'EuiPageTemplateInner',
96
74
  conditionalId: mainProps === null || mainProps === void 0 ? void 0 : mainProps.id
97
75
  });
98
- (0, _react.useEffect)(function () {
99
- if (_offset === undefined) {
100
- setOffset(calculateOffset(euiTheme.base));
101
- }
102
- }, [_offset, euiTheme.base]);
103
76
 
104
77
  // Sections include page header
105
78
  var sections = [];
@@ -158,7 +131,7 @@ var _EuiPageTemplate = function _EuiPageTemplate(_ref) {
158
131
  });
159
132
  var _minHeight = grow ? "max(".concat(minHeight, ", 100vh)") : minHeight;
160
133
  var classes = (0, _classnames.default)('euiPageTemplate', className);
161
- var pageStyle = _objectSpread(_objectSpread(_objectSpread({}, (0, _global_styling.logicalStyle)('min-height', _minHeight)), (0, _global_styling.logicalStyle)('padding-top', offset)), rest.style);
134
+ var pageStyle = _objectSpread(_objectSpread(_objectSpread({}, (0, _global_styling.logicalStyle)('min-height', _minHeight)), (0, _global_styling.logicalStyle)('padding-top', offset !== null && offset !== void 0 ? offset : 'var(--euiFixedHeadersOffset, 0)')), rest.style);
162
135
  templateContext.header = getHeaderProps();
163
136
  templateContext.section = getSectionProps();
164
137
  templateContext.emptyPrompt = {
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "EuiTextTruncate", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _text_truncate.EuiTextTruncate;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "TruncationUtilsWithCanvas", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _utils.TruncationUtilsWithCanvas;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "TruncationUtilsWithDOM", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _utils.TruncationUtilsWithDOM;
22
+ }
23
+ });
24
+ var _text_truncate = require("./text_truncate");
25
+ var _utils = require("./utils");