Upgrade EUI to v88.2.0 (#165790)

Major changes in this PR:

## Removal of `.euiAccordionForm` classNames

EUI is moving away from providing global `classNames` styles for
components - where possible, we want to provide props as opposed to
styles. As part of our ongoing Emotion conversion, we have removed the
following `EuiAccordion`-specific classes:
- `.euiAccordionForm` (replaced with `borders="horizontal"`)
- `.euiAccordionForm__button` (replaced with `buttonProps={{
paddingSize: 'm' }}`)
- `.euiAccordionForm__title` styles - this was only removing text
underlines on hover. If still desired, re-add this behavior with custom
CSS.
- `.euiAccordionForm__extraAction` - there was 1 usage of this in Kibana
in Watcher, which was converted to one-off custom inline Emotion CSS
instead.

This change accounts for the first 3-4 commits in the PR. ⚠️ If your
team was one of the 4-5 teams affected by this change, we would greatly
appreciate your help QAing the UI and ensuring it looks as desired/the
same as before.

## Fixed `EuiHeader` affordance

The Sass `euiHeaderAffordForFixed` mixin has been deprecated and
replaced by a global `--euiFixedHeadersOffset` CSS variable. This
variable updates independently and dynamically based on the number of
fixed headers on the page, and is usable by both Sass and Emotion. All
underlying EUI components that need to account for fixed headers (such
as flyouts and page sidebars/templates) have been updated to consume
this new variable.

This change cleans up a great deal of Sass code, and is incidentally
extremely timely with serverless efforts (as serverless has only one
fixed header and the classic Kibana chrome has two).

This change constitutes a majority of the commits in this PR, which
involve removing various fixed Sass header variables and replacing them
with the new CSS variable. I strongly recommend [reviewing changes by
commit if
possible](https://github.com/elastic/kibana/pull/165790/commits) to see
any associated changes that make sense together with any of your touched
file(s). ⚠️ If your team was affected by this change (primarily due to
custom header layouts), your help would be greatly appreciated QAing
your app to ensure no UI regressions in that regard have occurred.

---

`v88.1.0` `v88.2.0`

## [`88.2.0`](https://github.com/elastic/eui/tree/v88.2.0)

- Added a new `EuiTextTruncate` component, which provides custom
truncation options beyond native CSS
([#7116](https://github.com/elastic/eui/pull/7116))
- Fixed-positioned `EuiHeader`s now set a global CSS
`--euiFixedHeadersOffset` variable, which updates dynamically based on
the number of fixed headers on the page.
([#7144](https://github.com/elastic/eui/pull/7144))
- `EuiFlyout`s now dynamically set their position, height, and mask
based on the number of fixed headers on the page.
([#7144](https://github.com/elastic/eui/pull/7144))
- Sticky-positioned `EuiPageSidebar`s now dynamically set their position
and height based on the number of fixed headers on the page. This can
still be overridden via the `sticky.offset` prop if needed.
([#7144](https://github.com/elastic/eui/pull/7144))
- `EuiPageTemplate` now dynamically offsets content from any fixed
headers on the page. This can still be overridden via the `offset` prop
if needed. ([#7144](https://github.com/elastic/eui/pull/7144))
- Updated `EuiAccordion` with a new `borders` prop
([#7154](https://github.com/elastic/eui/pull/7154))
- Updated `EuiAccordion` with a new `buttonProps.paddingSize` prop
([#7154](https://github.com/elastic/eui/pull/7154))

**Deprecations**

- Deprecated the Sass `euiHeaderAffordForFixed` mixin. Use the new
global CSS `var(--euiFixedHeadersOffset)` variable instead.
([#7144](https://github.com/elastic/eui/pull/7144))

**CSS-in-JS conversions**

- Except for generic CSS utilities, EUI is moving away from providing
global `classNames` that are component-specific. As part of this effort,
we have removed the following `EuiAccordion`-specific classes:
([#7154](https://github.com/elastic/eui/pull/7154))
- Removed `.euiAccordionForm` styles. Use the `borders="horizontal"`
prop instead
- Removed `.euiAccordionForm__button` styles. Use the `buttonProps={{
paddingSize: 'm' }}` prop instead
- Removed `.euiAccordionForm__extraAction` styles. Convert this to your
own custom CSS if necessary.
- Removed `.euiAccordionForm__title` styles. Convert this to your own
custom CSS if necessary.

---------

Co-authored-by: Stratoula Kalafateli <efstratia.kalafateli@elastic.co>
This commit is contained in:
Cee Chen 2023-09-12 08:51:07 -07:00 committed by GitHub
parent fb5f8e379b
commit 51569b4c93
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
43 changed files with 162 additions and 268 deletions

View file

@ -100,7 +100,7 @@
"@elastic/datemath": "5.0.3",
"@elastic/elasticsearch": "npm:@elastic/elasticsearch-canary@8.9.1-canary.1",
"@elastic/ems-client": "8.4.0",
"@elastic/eui": "88.1.0",
"@elastic/eui": "88.2.0",
"@elastic/filesaver": "1.1.2",
"@elastic/node-crypto": "1.2.1",
"@elastic/numeral": "^2.5.1",

View file

@ -147,16 +147,15 @@ describe('start', () => {
const promise = chrome.getBodyClasses$().pipe(toArray()).toPromise();
service.stop();
await expect(promise).resolves.toMatchInlineSnapshot(`
Array [
Array [
"kbnBody",
"kbnBody--classicLayout",
"kbnBody--noHeaderBanner",
"kbnBody--chromeHidden",
"kbnVersion-1-2-3",
],
]
`);
Array [
Array [
"kbnBody",
"kbnBody--noHeaderBanner",
"kbnBody--chromeHidden",
"kbnVersion-1-2-3",
],
]
`);
});
it('strips off "snapshot" from the kibana version if present', async () => {
@ -166,16 +165,15 @@ describe('start', () => {
const promise = chrome.getBodyClasses$().pipe(toArray()).toPromise();
service.stop();
await expect(promise).resolves.toMatchInlineSnapshot(`
Array [
Array [
"kbnBody",
"kbnBody--classicLayout",
"kbnBody--noHeaderBanner",
"kbnBody--chromeHidden",
"kbnVersion-8-0-0",
],
]
`);
Array [
Array [
"kbnBody",
"kbnBody--noHeaderBanner",
"kbnBody--chromeHidden",
"kbnVersion-8-0-0",
],
]
`);
});
it('does not add legacy browser warning if browser supports CSP', async () => {

View file

@ -207,7 +207,6 @@ export class ChromeService {
map(([headerBanner, isVisible, chromeStyle]) => {
return [
'kbnBody',
chromeStyle === 'project' ? 'kbnBody--projectLayout' : 'kbnBody--classicLayout',
headerBanner ? 'kbnBody--hasHeaderBanner' : 'kbnBody--noHeaderBanner',
isVisible ? 'kbnBody--chromeVisible' : 'kbnBody--chromeHidden',
getKbnVersionClass(),

View file

@ -105,7 +105,7 @@ Array [
</div>
</div>
<div
class="euiAccordion euiAccordion-isOpen euiCollapsibleNavGroup emotion-euiCollapsibleNavGroup-isCollapsible-light"
class="euiAccordion euiAccordion-isOpen euiCollapsibleNavGroup emotion-euiAccordion-euiCollapsibleNavGroup-isCollapsible-light"
data-test-subj="collapsibleNavGroup-recentlyViewed"
>
<div
@ -223,7 +223,7 @@ Array [
class="euiFlexItem kbnCollapsibleNav__solutions emotion-euiFlexItem-grow-1"
>
<div
class="euiAccordion euiAccordion-isOpen euiCollapsibleNavGroup emotion-euiCollapsibleNavGroup-isCollapsible-none"
class="euiAccordion euiAccordion-isOpen euiCollapsibleNavGroup emotion-euiAccordion-euiCollapsibleNavGroup-isCollapsible-none"
data-test-subj="collapsibleNavGroup-kibana"
>
<div
@ -355,7 +355,7 @@ Array [
</div>
</div>
<div
class="euiAccordion euiAccordion-isOpen euiCollapsibleNavGroup emotion-euiCollapsibleNavGroup-isCollapsible-none"
class="euiAccordion euiAccordion-isOpen euiCollapsibleNavGroup emotion-euiAccordion-euiCollapsibleNavGroup-isCollapsible-none"
data-test-subj="collapsibleNavGroup-observability"
>
<div
@ -470,7 +470,7 @@ Array [
</div>
</div>
<div
class="euiAccordion euiAccordion-isOpen euiCollapsibleNavGroup emotion-euiCollapsibleNavGroup-isCollapsible-none"
class="euiAccordion euiAccordion-isOpen euiCollapsibleNavGroup emotion-euiAccordion-euiCollapsibleNavGroup-isCollapsible-none"
data-test-subj="collapsibleNavGroup-securitySolution"
>
<div
@ -568,7 +568,7 @@ Array [
</div>
</div>
<div
class="euiAccordion euiAccordion-isOpen euiCollapsibleNavGroup emotion-euiCollapsibleNavGroup-isCollapsible-none"
class="euiAccordion euiAccordion-isOpen euiCollapsibleNavGroup emotion-euiAccordion-euiCollapsibleNavGroup-isCollapsible-none"
data-test-subj="collapsibleNavGroup-management"
>
<div

View file

@ -46,6 +46,7 @@ Array [
<div
class="euiHeader header__firstBar emotion-euiHeader-fixed-dark"
data-fixed-header="true"
style="inset-block-start: 0px;"
>
<div
class="euiHeaderSection emotion-euiHeaderSection"
@ -148,6 +149,7 @@ Array [
<div
class="euiHeader header__secondBar emotion-euiHeader-fixed-default"
data-fixed-header="true"
style="inset-block-start: 48px;"
>
<div
class="euiHeaderSection emotion-euiHeaderSection"

View file

@ -34,7 +34,7 @@ export const AppMenuBar = ({ headerActionMenuMounter }: AppMenuBarProps) => {
/* fixates the elements position in the viewport, removes the element from the flow of the page */
position: sticky;
/* position below the primary fixed EuiHeader in the viewport */
top: 48px;
top: var(--euiFixedHeadersOffset, 0);
`}
>
<HeaderActionMenu mounter={headerActionMenuMounter} />

View file

@ -71,7 +71,7 @@ Object {
data-test-subj="ExceptionItemCardCommentsContainer"
>
<div
class="euiAccordion"
class="euiAccordion emotion-euiAccordion"
data-test-subj="exceptionItemCardComments"
>
<div
@ -209,7 +209,7 @@ Object {
data-test-subj="ExceptionItemCardCommentsContainer"
>
<div
class="euiAccordion"
class="euiAccordion emotion-euiAccordion"
data-test-subj="exceptionItemCardComments"
>
<div
@ -404,7 +404,7 @@ Object {
data-test-subj="ExceptionItemCardCommentsContainer"
>
<div
class="euiAccordion euiAccordion-isOpen"
class="euiAccordion euiAccordion-isOpen emotion-euiAccordion"
data-test-subj="exceptionItemCardComments"
>
<div
@ -542,7 +542,7 @@ Object {
data-test-subj="ExceptionItemCardCommentsContainer"
>
<div
class="euiAccordion euiAccordion-isOpen"
class="euiAccordion euiAccordion-isOpen emotion-euiAccordion"
data-test-subj="exceptionItemCardComments"
>
<div

View file

@ -41,7 +41,7 @@ const DefaultGroupPanelRenderer = ({
<div>
<EuiFlexGroup gutterSize="s" alignItems="center" responsive={false}>
<EuiFlexItem grow={false} className="eui-textTruncate">
<EuiTitle size="xs" className="euiAccordionForm__title">
<EuiTitle size="xs">
<h4 className="eui-textTruncate" title={title}>
{title}
</h4>

View file

@ -66,7 +66,9 @@ exports[`KibanaPageTemplateInner page sidebar 1`] = `
minHeight={0}
offset={0}
>
<EuiPageSidebar>
<EuiPageSidebar
sticky={true}
>
Test
</EuiPageSidebar>
</_EuiPageTemplate>

View file

@ -6,7 +6,7 @@
* Side Public License, v 1.
*/
import React, { FC, useEffect, useState } from 'react';
import React, { FC } from 'react';
import classNames from 'classnames';
import { EuiPageTemplate } from '@elastic/eui';
@ -21,9 +21,6 @@ const getClasses = (template?: string, className?: string) => {
);
};
const KIBANA_CHROME_SELECTOR = '[data-test-subj="kibanaChrome"]';
const HEADER_GLOBAL_NAV_SELECTOR = '[data-test-subj="headerGlobalNav"]';
/**
* A thin wrapper around EuiPageTemplate with a few Kibana specific additions
*/
@ -38,18 +35,6 @@ export const KibanaPageTemplateInner: FC<Props> = ({
}) => {
let header;
const [offset, setOffset] = useState<number | undefined>();
useEffect(() => {
const kibanaChrome = document.querySelector(KIBANA_CHROME_SELECTOR) as HTMLElement;
if (kibanaChrome) {
const kibanaChromeHeader = kibanaChrome.querySelector(
HEADER_GLOBAL_NAV_SELECTOR
) as HTMLElement;
setOffset(kibanaChromeHeader?.offsetTop + kibanaChromeHeader?.offsetHeight);
}
}, []);
if (isEmptyState && pageHeader && !children) {
const { iconType, pageTitle, description, rightSideItems } = pageHeader;
const title = pageTitle ? <h1>{pageTitle}</h1> : undefined;
@ -70,9 +55,7 @@ export const KibanaPageTemplateInner: FC<Props> = ({
let sideBar;
if (pageSideBar) {
const sideBarProps = { ...pageSideBarProps };
if (offset) {
sideBarProps.sticky = { offset };
}
sideBarProps.sticky = true;
sideBar = <EuiPageTemplate.Sidebar {...sideBarProps}>{pageSideBar}</EuiPageTemplate.Sidebar>;
}

View file

@ -52,7 +52,7 @@ exports[`WithSolutionNav renders wrapped component 1`] = `
}
pageSideBarProps={
Object {
"className": "css-c34ez9",
"className": "kbnSolutionNav__sidebar css-c34ez9",
"minWidth": undefined,
"paddingSize": "none",
}
@ -112,7 +112,7 @@ exports[`WithSolutionNav with children 1`] = `
}
pageSideBarProps={
Object {
"className": "css-c34ez9",
"className": "kbnSolutionNav__sidebar css-c34ez9",
"minWidth": undefined,
"paddingSize": "none",
}

View file

@ -57,9 +57,8 @@ export const withSolutionNav = <P extends TemplateProps>(WrappedComponent: Compo
isMediumBreakpoint || (canBeCollapsed && isLargerBreakpoint && !isSideNavOpenOnDesktop);
const withSolutionNavStyles = WithSolutionNavStyles(euiTheme);
const sideBarClasses = classNames(
{
'kbnSolutionNav__sidebar--shrink': isSidebarShrunk,
},
'kbnSolutionNav__sidebar',
{ 'kbnSolutionNav__sidebar--shrink': isSidebarShrunk },
props.pageSideBarProps?.className,
withSolutionNavStyles
);

View file

@ -0,0 +1,11 @@
:root {
// height of the header banner
--kbnHeaderBannerHeight: #{$euiSizeXL};
// total height of all fixed headers (when the banner is *not* present) inherited from EUI
--kbnHeaderOffset: var(--euiFixedHeadersOffset, 0);
// total height of everything when the banner is present
--kbnHeaderOffsetWithBanner: calc(var(--kbnHeaderBannerHeight) + var(--kbnHeaderOffset));
}
// Quick note: This shouldn't be mixed with Sass variable declarations,
// as each import will cause :root to be re-declared unnecessarily

View file

@ -1,43 +1,6 @@
@import './variables';
/* stylelint-disable-next-line length-zero-no-unit -- need consistent unit to sum them */
@mixin kibanaFullBodyHeight($additionalOffset: 0px) {
// default - header, no banner
height: calc(100vh - #{$kbnHeaderOffset + $additionalOffset});
@at-root {
// no header, no banner
.kbnBody--chromeHidden & {
height: calc(100vh - #{$additionalOffset});
}
// header, banner
.kbnBody--hasHeaderBanner & {
height: calc(100vh - #{$kbnHeaderOffsetWithBanner + $additionalOffset});
}
// no header, banner
.kbnBody--chromeHidden.kbnBody--hasHeaderBanner & {
height: calc(100vh - #{$kbnHeaderBannerHeight + $additionalOffset});
}
}
}
/* stylelint-disable-next-line length-zero-no-unit -- need consistent unit to sum them */
@mixin kibanaFullBodyMinHeight($additionalOffset: 0px) {
// default - header, no banner
min-height: calc(100vh - #{$kbnHeaderOffset + $additionalOffset});
@at-root {
// no header, no banner
.kbnBody--chromeHidden & {
min-height: calc(100vh - #{$additionalOffset});
}
// header, banner
.kbnBody--hasHeaderBanner & {
min-height: calc(100vh - #{$kbnHeaderOffsetWithBanner + $additionalOffset});
}
// no header, banner
.kbnBody--chromeHidden.kbnBody--hasHeaderBanner & {
min-height: calc(100vh - #{$kbnHeaderBannerHeight + $additionalOffset});
}
}
@mixin kibanaFullBodyHeight($additionalOffset: 0) {
// The `--euiFixedHeadersOffset` CSS variable is automatically updated by
// styles/rendering/_base.scss, based on whether the Kibana chrome has a
// header banner, and is visible or hidden
height: calc(100vh - var(--euiFixedHeadersOffset, 0) - #{$additionalOffset});
}

View file

@ -1,8 +0,0 @@
@import '@elastic/eui/src/global_styling/variables/header';
// height of the header banner
$kbnHeaderBannerHeight: $euiSizeXL; // This value is also declared in `/x-pack/plugins/canvas/common/lib/constants.ts`
// total height of the header (when the banner is *not* present)
$kbnHeaderOffset: $euiHeaderHeightCompensation * 2;
// total height of the header when the banner is present
$kbnHeaderOffsetWithBanner: $kbnHeaderOffset + $kbnHeaderBannerHeight;

View file

@ -1,3 +1,3 @@
@import './variables';
@import './css_variables';
@import './mixins';
@import './styles/index';

View file

@ -2,7 +2,7 @@
position: fixed;
top: 0;
left: 0;
height: $kbnHeaderBannerHeight;
height: var(--kbnHeaderBannerHeight);
width: 100%;
z-index: $euiZHeader;
}
@ -11,32 +11,3 @@
height: 100%;
width: 100%;
}
// overriding `top` positioning of the chrome headers
.kbnBody--hasHeaderBanner .header__bars {
.header__firstBar {
top: $kbnHeaderBannerHeight;
}
.header__secondBar {
top: $kbnHeaderBannerHeight + $euiHeaderHeightCompensation;
}
}
// overriding padding on the body element added by EUI
.kbnBody.kbnBody--hasHeaderBanner.kbnBody--projectLayout.euiBody--headerIsFixed {
padding-top: $kbnHeaderBannerHeight + $euiHeaderHeightCompensation;
// overriding `top` positioning of the project side nav, and flyouts
// overriding `top` positioning of the project app menu toolbar
&.euiBody--headerIsFixed .euiCollapsibleNav,
&.euiBody--headerIsFixed:not(.euiDataGrid__restrictBody) .euiFlyout,
.header__actionMenu {
top: $kbnHeaderBannerHeight + $euiHeaderHeightCompensation;
}
// overriding `height` calculation of the project side nav, and flyouts
&.euiBody--headerIsFixed .euiCollapsibleNav,
&.euiBody--headerIsFixed:not(.euiDataGrid__restrictBody) .euiFlyout {
height: calc(100% - #{$kbnHeaderBannerHeight + $euiHeaderHeightCompensation});
}
}

View file

@ -1,5 +1,3 @@
@import '../../variables';
@mixin flexParent($grow: 1, $shrink: 1, $basis: auto, $direction: column) {
flex: $grow $shrink $basis;
display: flex;
@ -86,7 +84,7 @@
@at-root {
.kbnBody--hasHeaderBanner & {
top: $kbnHeaderBannerHeight;
top: var(--kbnHeaderBannerHeight);
}
}

View file

@ -19,7 +19,7 @@
pointer-events: none;
visibility: hidden;
position: fixed;
top: 0;
top: var(--euiFixedHeadersOffset, 0);
right: 0;
bottom: 0;
left: 0;
@ -35,50 +35,30 @@
position: relative; // This is temporary for apps that relied on this being present on `.application`
}
@mixin kbnAffordForHeader($headerHeight) {
@include euiHeaderAffordForFixed($headerHeight);
#securitySolutionStickyKQL,
#app-fixed-viewport {
top: $headerHeight;
}
@include euiBreakpoint('xl', 'l') {
.kbnStickyMenu {
position: sticky;
max-height: calc(100vh - #{$headerHeight + $euiSize});
top: $headerHeight + $euiSize;
}
.kbnSolutionNav__sidebar {
position: sticky;
max-height: calc(100vh - #{$headerHeight});
top: $headerHeight;
}
}
}
.kbnBody {
@include kbnAffordForHeader($kbnHeaderOffset);
padding-top: var(--euiFixedHeadersOffset, 0);
}
&.kbnBody--hasHeaderBanner {
padding-top: $kbnHeaderBannerHeight;
// Conditionally override :root CSS fixed header variable. Updating `--euiFixedHeadersOffset`
// on the body will cause all child EUI components to automatically update their offsets
@include kbnAffordForHeader($kbnHeaderOffsetWithBanner);
.kbnBody--hasHeaderBanner {
--euiFixedHeadersOffset: var(--kbnHeaderOffsetWithBanner);
// Prevents banners from covering full screen data grids
.euiDataGrid--fullScreen {
height: calc(100vh - #{$kbnHeaderBannerHeight});
top: $kbnHeaderBannerHeight;
}
// Offset fixed EuiHeaders by the top banner
.euiHeader[data-fixed-header] {
margin-top: var(--kbnHeaderBannerHeight);
}
&.kbnBody--chromeHidden {
@include kbnAffordForHeader(0);
}
&.kbnBody--projectLayout {
@include kbnAffordForHeader($euiHeaderHeightCompensation);
}
&.kbnBody--chromeHidden.kbnBody--hasHeaderBanner {
@include kbnAffordForHeader($kbnHeaderBannerHeight);
// Prevent banners from covering full screen data grids
.euiDataGrid--fullScreen {
height: calc(100vh - var(--kbnHeaderBannerHeight));
top: var(--kbnHeaderBannerHeight);
}
}
.kbnBody--chromeHidden {
--euiFixedHeadersOffset: 0;
}
.kbnBody--chromeHidden.kbnBody--hasHeaderBanner {
--euiFixedHeadersOffset: var(--kbnHeaderBannerHeight);
}

View file

@ -85,7 +85,7 @@ export const LICENSE_OVERRIDES = {
'jsts@1.6.2': ['Eclipse Distribution License - v 1.0'], // cf. https://github.com/bjornharrtell/jsts
'@mapbox/jsonlint-lines-primitives@2.0.2': ['MIT'], // license in readme https://github.com/tmcw/jsonlint
'@elastic/ems-client@8.4.0': ['Elastic License 2.0'],
'@elastic/eui@88.1.0': ['SSPL-1.0 OR Elastic License 2.0'],
'@elastic/eui@88.2.0': ['SSPL-1.0 OR Elastic License 2.0'],
'language-subtag-registry@0.3.21': ['CC-BY-4.0'], // retired ODCBy license https://github.com/mattcg/language-subtag-registry
'buffers@0.1.1': ['MIT'], // license in importing module https://www.npmjs.com/package/binary
};

View file

@ -3,24 +3,7 @@
width: 100%;
position: sticky;
z-index: $euiZLevel2;
top: var(--euiFixedHeadersOffset, 0);
background: $euiPageBackgroundColor;
}
&.kbnBody--noHeaderBanner {
&.kbnBody--chromeVisible .dashboardTopNav {
top: $kbnHeaderOffset;
}
&.kbnBody--chromeHidden .dashboardTopNav {
top: 0;
}
}
&.kbnBody--hasHeaderBanner {
&.kbnBody--chromeVisible .dashboardTopNav {
top: $kbnHeaderOffsetWithBanner;
}
&.kbnBody--chromeHidden .dashboardTopNav {
top: $kbnHeaderBannerHeight;
}
}
}
}

View file

@ -7,7 +7,7 @@ exports[`DashboardEmptyScreen renders correctly with edit mode 1`] = `
<div
class="euiPageTemplate dshEmptyPromptPageTemplate emotion-euiPageOuter-row-grow"
data-test-subj="emptyDashboardWidget"
style="min-block-size: 460px; padding-block-start: 0;"
style="min-block-size: 460px; padding-block-start: var(--euiFixedHeadersOffset, 0);"
>
<main
class="emotion-euiPageInner"
@ -132,7 +132,7 @@ exports[`DashboardEmptyScreen renders correctly with readonly and edit mode 1`]
<div
class="euiPageTemplate dshEmptyPromptPageTemplate emotion-euiPageOuter-row-grow"
data-test-subj="dashboardEmptyReadOnly"
style="min-block-size: 460px; padding-block-start: 0;"
style="min-block-size: 460px; padding-block-start: var(--euiFixedHeadersOffset, 0);"
>
<main
class="emotion-euiPageInner"
@ -206,7 +206,7 @@ exports[`DashboardEmptyScreen renders correctly with readonly mode 1`] = `
<div
class="euiPageTemplate dshEmptyPromptPageTemplate emotion-euiPageOuter-row-grow"
data-test-subj="dashboardEmptyReadOnly"
style="min-block-size: 460px; padding-block-start: 0;"
style="min-block-size: 460px; padding-block-start: var(--euiFixedHeadersOffset, 0);"
>
<main
class="emotion-euiPageInner"
@ -280,7 +280,7 @@ exports[`DashboardEmptyScreen renders correctly with view mode 1`] = `
<div
class="euiPageTemplate dshEmptyPromptPageTemplate emotion-euiPageOuter-row-grow"
data-test-subj="dashboardEmptyReadWrite"
style="min-block-size: 460px; padding-block-start: 0;"
style="min-block-size: 460px; padding-block-start: var(--euiFixedHeadersOffset, 0);"
>
<main
class="emotion-euiPageInner"

View file

@ -49,4 +49,3 @@ export const API_ROUTE_SHAREABLE_RUNTIME_DOWNLOAD = `/public/canvas/${SHAREABLE_
export const CANVAS_EMBEDDABLE_CLASSNAME = `canvasEmbeddable`;
export const CONTEXT_MENU_TOP_BORDER_CLASSNAME = 'canvasContextMenu--topBorder';
export const API_ROUTE_FUNCTIONS = `${INTERNAL_API_ROUTE}/fns`;
export const HEADER_BANNER_HEIGHT = 32; // This value is also declared in `/src/core/public/_variables.scss`

View file

@ -5,16 +5,12 @@
* 2.0.
*/
import React, { FC } from 'react';
import React, { FC, useMemo } from 'react';
import { css } from '@emotion/react';
// @ts-expect-error
import { WorkpadPage } from '../workpad_page';
import { Fullscreen } from '../fullscreen';
import {
HEADER_BANNER_HEIGHT,
WORKPAD_CANVAS_BUFFER,
DEFAULT_WORKPAD_CSS,
} from '../../../common/lib/constants';
import { WORKPAD_CANVAS_BUFFER, DEFAULT_WORKPAD_CSS } from '../../../common/lib/constants';
import { CommitFn, CanvasPage } from '../../../types';
import { WorkpadShortcuts } from './workpad_shortcuts.component';
@ -71,7 +67,17 @@ export const Workpad: FC<Props> = ({
zoomOut,
zoomScale,
}) => {
const headerBannerOffset = hasHeaderBanner ? HEADER_BANNER_HEIGHT : 0;
const headerBannerOffset = useMemo(() => {
if (!hasHeaderBanner) return 0;
if (typeof document === 'undefined') return 0;
// Get the banner height from the CSS variable value
const headerHeightFromCSS = getComputedStyle(document.documentElement).getPropertyValue(
'--kbnHeaderBannerHeight'
);
// Remove the CSS unit
return parseInt(headerHeightFromCSS, 10);
}, [hasHeaderBanner]);
const bufferStyle = {
height: isFullscreen ? height : (height + 2 * WORKPAD_CANVAS_BUFFER) * zoomScale,

View file

@ -77,8 +77,9 @@ export const SchemaErrorsAccordion: React.FC<Props> = ({
<EuiAccordion
key={fieldName}
id={`schemaErrorAccordion-${fieldName}`}
className="schemaErrorsAccordion euiAccordionForm"
buttonClassName="euiAccordionForm__button"
className="schemaErrorsAccordion"
borders="horizontal"
buttonProps={{ paddingSize: 'm' }}
buttonContent={accordionHeader}
>
<EuiTable tableLayout="auto">

View file

@ -53,7 +53,7 @@ import { sortDatastreamsByDataset } from './sort_datastreams';
const ScrollAnchor = styled.div`
display: none;
scroll-margin-top: ${(props) => parseFloat(props.theme.eui.euiHeaderHeightCompensation) * 2}px;
scroll-margin-top: var(--euiFixedHeadersOffset, 0);
`;
interface Props {

View file

@ -27,7 +27,7 @@ export const ControlsColumn = ({ controls, title }: ControlsColumnProps) => {
);
}
return (
<EuiFlexGroup direction="column" gutterSize="none" className="kbnStickyMenu">
<EuiFlexGroup direction="column" gutterSize="none">
{titleContent}
{controls}
</EuiFlexGroup>

View file

@ -168,7 +168,7 @@ export const PackageListGrid: FunctionComponent<Props> = ({
gutterSize="xl"
data-test-subj="epmList.integrationCards"
>
<EuiFlexItem data-test-subj="epmList.controlsSideColumn" grow={1} className="kbnStickyMenu">
<EuiFlexItem data-test-subj="epmList.controlsSideColumn" grow={1}>
<ControlsColumn controls={controls} title={title} />
</EuiFlexItem>
<EuiFlexItem grow={5} data-test-subj="epmList.mainColumn" style={{ alignSelf: 'stretch' }}>

View file

@ -12,12 +12,8 @@ import { EuiPage, EuiPageBody, EuiSpacer } from '@elastic/eui';
export const Wrapper = styled.div`
background-color: ${(props) => props.theme.eui.euiColorEmptyShade};
// HACK: Kibana introduces a div element around the app component that results in us
// being unable to stretch this Wrapper to full height via flex: 1. This calc sets
// the min height to the viewport size minus the height of the two global Kibana headers.
min-height: calc(
100vh - ${(props) => parseFloat(props.theme.eui.euiHeaderHeightCompensation) * 2}px
);
// Set the min height to the viewport size minus the height of any global Kibana headers
min-height: calc(100vh - var(--euiFixedHeadersOffset, 0));
`;
export const Page = styled(EuiPage)`

View file

@ -98,7 +98,7 @@ export function FlyoutContainer({
ref={panelContainerRef}
role="dialog"
aria-labelledby="lnsDimensionContainerTitle"
className="lnsDimensionContainer euiFlyout"
className="lnsDimensionContainer"
onAnimationEnd={() => {
if (isOpen) {
// EuiFocusTrap interferes with animating elements with absolute position:

View file

@ -94,7 +94,7 @@ exports[`ScreenCapturePanelContent properly renders a view with "canvas" layout
style="width: auto; margin-left: -16px; margin-right: -16px;"
/>
<div
class="euiAccordion"
class="euiAccordion emotion-euiAccordion"
data-test-subj="shareReportingAdvancedOptionsButton"
>
<div
@ -288,7 +288,7 @@ exports[`ScreenCapturePanelContent properly renders a view with "print" layout o
style="width: auto; margin-left: -16px; margin-right: -16px;"
/>
<div
class="euiAccordion"
class="euiAccordion emotion-euiAccordion"
data-test-subj="shareReportingAdvancedOptionsButton"
>
<div
@ -423,7 +423,7 @@ exports[`ScreenCapturePanelContent renders the default view properly 1`] = `
style="width: auto; margin-left: -16px; margin-right: -16px;"
/>
<div
class="euiAccordion"
class="euiAccordion emotion-euiAccordion"
data-test-subj="shareReportingAdvancedOptionsButton"
>
<div

View file

@ -1,5 +1,5 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`PromptPage renders as expected with additional scripts 1`] = `"<html lang=\\"en\\"><head><title>Elastic</title><style></style><style data-emotion=\\"eui \\"></style></style><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css\\" rel=\\"stylesheet\\"/><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.v8.light.css\\" rel=\\"stylesheet\\"/>MockedFonts<link rel=\\"alternate icon\\" type=\\"image/png\\" href=\\"/mock-server-basepath/ui/favicons/favicon.png\\"/><link rel=\\"icon\\" type=\\"image/svg+xml\\" href=\\"/mock-server-basepath/ui/favicons/favicon.svg\\"/><script src=\\"/mock-basepath/some/script1.js\\"></script><script src=\\"/mock-basepath/some/script2.js\\"></script><meta name=\\"theme-color\\" content=\\"#ffffff\\"/><meta name=\\"color-scheme\\" content=\\"light dark\\"/></head><body><div data-test-subj=\\"promptPage\\" style=\\"min-block-size:max(460px, 100vh);padding-block-start:0\\" class=\\"euiPageTemplate eui-cjgvy1-euiPageOuter-row-grow\\"><main id=\\"EuiPageTemplateInner_generated-id\\" class=\\"eui-nq554q-euiPageInner\\"><section class=\\"eui-68douo-euiPageSection-grow-l-center-transparent\\"><div class=\\"eui-1sghhs8-euiPageSection__content-l-center\\"><div class=\\"euiPanel euiPanel--plain euiEmptyPrompt euiEmptyPrompt--vertical euiEmptyPrompt--paddingLarge eui-12g67tv-euiPanel-m-plain-hasShadow\\"><div class=\\"euiEmptyPrompt__main\\"><div class=\\"euiEmptyPrompt__icon\\"><span data-euiicon-type=\\"warning\\" color=\\"danger\\"></span></div><div class=\\"euiEmptyPrompt__content\\"><div class=\\"euiEmptyPrompt__contentInner\\"><h2 class=\\"euiTitle eui-smz32e-euiTitle-m\\">Some Title</h2><div class=\\"euiSpacer euiSpacer--m eui-jv9za2-euiSpacer-m\\"></div><div class=\\"euiText eui-1vwhzjf-euiText-m-euiTextColor-subdued\\"><div>Some Body</div></div><div class=\\"euiSpacer euiSpacer--l eui-p2o3x6-euiSpacer-l\\"></div><div class=\\"euiFlexGroup euiEmptyPrompt__actions eui-17kdkag-euiFlexGroup-m-center-center-column\\"><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><span>Action#1</span></div><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><span>Action#2</span></div></div></div></div></div></div></div></section></main></div></body></html>"`;
exports[`PromptPage renders as expected with additional scripts 1`] = `"<html lang=\\"en\\"><head><title>Elastic</title><style></style><style data-emotion=\\"eui \\"></style></style><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css\\" rel=\\"stylesheet\\"/><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.v8.light.css\\" rel=\\"stylesheet\\"/>MockedFonts<link rel=\\"alternate icon\\" type=\\"image/png\\" href=\\"/mock-server-basepath/ui/favicons/favicon.png\\"/><link rel=\\"icon\\" type=\\"image/svg+xml\\" href=\\"/mock-server-basepath/ui/favicons/favicon.svg\\"/><script src=\\"/mock-basepath/some/script1.js\\"></script><script src=\\"/mock-basepath/some/script2.js\\"></script><meta name=\\"theme-color\\" content=\\"#ffffff\\"/><meta name=\\"color-scheme\\" content=\\"light dark\\"/></head><body><div data-test-subj=\\"promptPage\\" style=\\"min-block-size:max(460px, 100vh);padding-block-start:var(--euiFixedHeadersOffset, 0)\\" class=\\"euiPageTemplate eui-cjgvy1-euiPageOuter-row-grow\\"><main id=\\"EuiPageTemplateInner_generated-id\\" class=\\"eui-nq554q-euiPageInner\\"><section class=\\"eui-68douo-euiPageSection-grow-l-center-transparent\\"><div class=\\"eui-1sghhs8-euiPageSection__content-l-center\\"><div class=\\"euiPanel euiPanel--plain euiEmptyPrompt euiEmptyPrompt--vertical euiEmptyPrompt--paddingLarge eui-12g67tv-euiPanel-m-plain-hasShadow\\"><div class=\\"euiEmptyPrompt__main\\"><div class=\\"euiEmptyPrompt__icon\\"><span data-euiicon-type=\\"warning\\" color=\\"danger\\"></span></div><div class=\\"euiEmptyPrompt__content\\"><div class=\\"euiEmptyPrompt__contentInner\\"><h2 class=\\"euiTitle eui-smz32e-euiTitle-m\\">Some Title</h2><div class=\\"euiSpacer euiSpacer--m eui-jv9za2-euiSpacer-m\\"></div><div class=\\"euiText eui-1vwhzjf-euiText-m-euiTextColor-subdued\\"><div>Some Body</div></div><div class=\\"euiSpacer euiSpacer--l eui-p2o3x6-euiSpacer-l\\"></div><div class=\\"euiFlexGroup euiEmptyPrompt__actions eui-17kdkag-euiFlexGroup-m-center-center-column\\"><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><span>Action#1</span></div><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><span>Action#2</span></div></div></div></div></div></div></div></section></main></div></body></html>"`;
exports[`PromptPage renders as expected without additional scripts 1`] = `"<html lang=\\"en\\"><head><title>Elastic</title><style></style><style data-emotion=\\"eui \\"></style></style><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css\\" rel=\\"stylesheet\\"/><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.v8.light.css\\" rel=\\"stylesheet\\"/>MockedFonts<link rel=\\"alternate icon\\" type=\\"image/png\\" href=\\"/mock-server-basepath/ui/favicons/favicon.png\\"/><link rel=\\"icon\\" type=\\"image/svg+xml\\" href=\\"/mock-server-basepath/ui/favicons/favicon.svg\\"/><meta name=\\"theme-color\\" content=\\"#ffffff\\"/><meta name=\\"color-scheme\\" content=\\"light dark\\"/></head><body><div data-test-subj=\\"promptPage\\" style=\\"min-block-size:max(460px, 100vh);padding-block-start:0\\" class=\\"euiPageTemplate eui-cjgvy1-euiPageOuter-row-grow\\"><main id=\\"EuiPageTemplateInner_generated-id\\" class=\\"eui-nq554q-euiPageInner\\"><section class=\\"eui-68douo-euiPageSection-grow-l-center-transparent\\"><div class=\\"eui-1sghhs8-euiPageSection__content-l-center\\"><div class=\\"euiPanel euiPanel--plain euiEmptyPrompt euiEmptyPrompt--vertical euiEmptyPrompt--paddingLarge eui-12g67tv-euiPanel-m-plain-hasShadow\\"><div class=\\"euiEmptyPrompt__main\\"><div class=\\"euiEmptyPrompt__icon\\"><span data-euiicon-type=\\"warning\\" color=\\"danger\\"></span></div><div class=\\"euiEmptyPrompt__content\\"><div class=\\"euiEmptyPrompt__contentInner\\"><h2 class=\\"euiTitle eui-smz32e-euiTitle-m\\">Some Title</h2><div class=\\"euiSpacer euiSpacer--m eui-jv9za2-euiSpacer-m\\"></div><div class=\\"euiText eui-1vwhzjf-euiText-m-euiTextColor-subdued\\"><div>Some Body</div></div><div class=\\"euiSpacer euiSpacer--l eui-p2o3x6-euiSpacer-l\\"></div><div class=\\"euiFlexGroup euiEmptyPrompt__actions eui-17kdkag-euiFlexGroup-m-center-center-column\\"><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><span>Action#1</span></div><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><span>Action#2</span></div></div></div></div></div></div></div></section></main></div></body></html>"`;
exports[`PromptPage renders as expected without additional scripts 1`] = `"<html lang=\\"en\\"><head><title>Elastic</title><style></style><style data-emotion=\\"eui \\"></style></style><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css\\" rel=\\"stylesheet\\"/><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.v8.light.css\\" rel=\\"stylesheet\\"/>MockedFonts<link rel=\\"alternate icon\\" type=\\"image/png\\" href=\\"/mock-server-basepath/ui/favicons/favicon.png\\"/><link rel=\\"icon\\" type=\\"image/svg+xml\\" href=\\"/mock-server-basepath/ui/favicons/favicon.svg\\"/><meta name=\\"theme-color\\" content=\\"#ffffff\\"/><meta name=\\"color-scheme\\" content=\\"light dark\\"/></head><body><div data-test-subj=\\"promptPage\\" style=\\"min-block-size:max(460px, 100vh);padding-block-start:var(--euiFixedHeadersOffset, 0)\\" class=\\"euiPageTemplate eui-cjgvy1-euiPageOuter-row-grow\\"><main id=\\"EuiPageTemplateInner_generated-id\\" class=\\"eui-nq554q-euiPageInner\\"><section class=\\"eui-68douo-euiPageSection-grow-l-center-transparent\\"><div class=\\"eui-1sghhs8-euiPageSection__content-l-center\\"><div class=\\"euiPanel euiPanel--plain euiEmptyPrompt euiEmptyPrompt--vertical euiEmptyPrompt--paddingLarge eui-12g67tv-euiPanel-m-plain-hasShadow\\"><div class=\\"euiEmptyPrompt__main\\"><div class=\\"euiEmptyPrompt__icon\\"><span data-euiicon-type=\\"warning\\" color=\\"danger\\"></span></div><div class=\\"euiEmptyPrompt__content\\"><div class=\\"euiEmptyPrompt__contentInner\\"><h2 class=\\"euiTitle eui-smz32e-euiTitle-m\\">Some Title</h2><div class=\\"euiSpacer euiSpacer--m eui-jv9za2-euiSpacer-m\\"></div><div class=\\"euiText eui-1vwhzjf-euiText-m-euiTextColor-subdued\\"><div>Some Body</div></div><div class=\\"euiSpacer euiSpacer--l eui-p2o3x6-euiSpacer-l\\"></div><div class=\\"euiFlexGroup euiEmptyPrompt__actions eui-17kdkag-euiFlexGroup-m-center-center-column\\"><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><span>Action#1</span></div><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><span>Action#2</span></div></div></div></div></div></div></div></section></main></div></body></html>"`;

View file

@ -1,5 +1,5 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`UnauthenticatedPage renders as expected 1`] = `"<html lang=\\"en\\"><head><title>Elastic</title><style></style><style data-emotion=\\"eui \\"></style></style><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css\\" rel=\\"stylesheet\\"/><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.v8.light.css\\" rel=\\"stylesheet\\"/>MockedFonts<link rel=\\"alternate icon\\" type=\\"image/png\\" href=\\"/mock-server-basepath/ui/favicons/favicon.png\\"/><link rel=\\"icon\\" type=\\"image/svg+xml\\" href=\\"/mock-server-basepath/ui/favicons/favicon.svg\\"/><meta name=\\"theme-color\\" content=\\"#ffffff\\"/><meta name=\\"color-scheme\\" content=\\"light dark\\"/></head><body><div data-test-subj=\\"promptPage\\" style=\\"min-block-size:max(460px, 100vh);padding-block-start:0\\" class=\\"euiPageTemplate eui-cjgvy1-euiPageOuter-row-grow\\"><main id=\\"EuiPageTemplateInner_generated-id\\" class=\\"eui-nq554q-euiPageInner\\"><section class=\\"eui-68douo-euiPageSection-grow-l-center-transparent\\"><div class=\\"eui-1sghhs8-euiPageSection__content-l-center\\"><div class=\\"euiPanel euiPanel--plain euiEmptyPrompt euiEmptyPrompt--vertical euiEmptyPrompt--paddingLarge eui-12g67tv-euiPanel-m-plain-hasShadow\\"><div class=\\"euiEmptyPrompt__main\\"><div class=\\"euiEmptyPrompt__icon\\"><span data-euiicon-type=\\"warning\\" color=\\"danger\\"></span></div><div class=\\"euiEmptyPrompt__content\\"><div class=\\"euiEmptyPrompt__contentInner\\"><h2 class=\\"euiTitle eui-smz32e-euiTitle-m\\">We hit an authentication error</h2><div class=\\"euiSpacer euiSpacer--m eui-jv9za2-euiSpacer-m\\"></div><div class=\\"euiText eui-1vwhzjf-euiText-m-euiTextColor-subdued\\"><p>Try logging in again, and if the problem persists, contact your system administrator.</p></div><div class=\\"euiSpacer euiSpacer--l eui-p2o3x6-euiSpacer-l\\"></div><div class=\\"euiFlexGroup euiEmptyPrompt__actions eui-17kdkag-euiFlexGroup-m-center-center-column\\"><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><a href=\\"/some/url?some-query=some-value#some-hash\\" rel=\\"noreferrer\\" class=\\"euiButton eui-8utmkn-euiButtonDisplay-m-defaultMinWidth-fill-primary\\" data-test-subj=\\"logInButton\\"><span class=\\"eui-1bascr2-euiButtonDisplayContent\\">Log in</span></a></div></div></div></div></div></div></div></section></main></div></body></html>"`;
exports[`UnauthenticatedPage renders as expected 1`] = `"<html lang=\\"en\\"><head><title>Elastic</title><style></style><style data-emotion=\\"eui \\"></style></style><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css\\" rel=\\"stylesheet\\"/><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.v8.light.css\\" rel=\\"stylesheet\\"/>MockedFonts<link rel=\\"alternate icon\\" type=\\"image/png\\" href=\\"/mock-server-basepath/ui/favicons/favicon.png\\"/><link rel=\\"icon\\" type=\\"image/svg+xml\\" href=\\"/mock-server-basepath/ui/favicons/favicon.svg\\"/><meta name=\\"theme-color\\" content=\\"#ffffff\\"/><meta name=\\"color-scheme\\" content=\\"light dark\\"/></head><body><div data-test-subj=\\"promptPage\\" style=\\"min-block-size:max(460px, 100vh);padding-block-start:var(--euiFixedHeadersOffset, 0)\\" class=\\"euiPageTemplate eui-cjgvy1-euiPageOuter-row-grow\\"><main id=\\"EuiPageTemplateInner_generated-id\\" class=\\"eui-nq554q-euiPageInner\\"><section class=\\"eui-68douo-euiPageSection-grow-l-center-transparent\\"><div class=\\"eui-1sghhs8-euiPageSection__content-l-center\\"><div class=\\"euiPanel euiPanel--plain euiEmptyPrompt euiEmptyPrompt--vertical euiEmptyPrompt--paddingLarge eui-12g67tv-euiPanel-m-plain-hasShadow\\"><div class=\\"euiEmptyPrompt__main\\"><div class=\\"euiEmptyPrompt__icon\\"><span data-euiicon-type=\\"warning\\" color=\\"danger\\"></span></div><div class=\\"euiEmptyPrompt__content\\"><div class=\\"euiEmptyPrompt__contentInner\\"><h2 class=\\"euiTitle eui-smz32e-euiTitle-m\\">We hit an authentication error</h2><div class=\\"euiSpacer euiSpacer--m eui-jv9za2-euiSpacer-m\\"></div><div class=\\"euiText eui-1vwhzjf-euiText-m-euiTextColor-subdued\\"><p>Try logging in again, and if the problem persists, contact your system administrator.</p></div><div class=\\"euiSpacer euiSpacer--l eui-p2o3x6-euiSpacer-l\\"></div><div class=\\"euiFlexGroup euiEmptyPrompt__actions eui-17kdkag-euiFlexGroup-m-center-center-column\\"><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><a href=\\"/some/url?some-query=some-value#some-hash\\" rel=\\"noreferrer\\" class=\\"euiButton eui-8utmkn-euiButtonDisplay-m-defaultMinWidth-fill-primary\\" data-test-subj=\\"logInButton\\"><span class=\\"eui-1bascr2-euiButtonDisplayContent\\">Log in</span></a></div></div></div></div></div></div></div></section></main></div></body></html>"`;
exports[`UnauthenticatedPage renders as expected with custom title 1`] = `"<html lang=\\"en\\"><head><title>My Company Name</title><style></style><style data-emotion=\\"eui \\"></style></style><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css\\" rel=\\"stylesheet\\"/><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.v8.light.css\\" rel=\\"stylesheet\\"/>MockedFonts<link rel=\\"alternate icon\\" type=\\"image/png\\" href=\\"/mock-server-basepath/ui/favicons/favicon.png\\"/><link rel=\\"icon\\" type=\\"image/svg+xml\\" href=\\"/mock-server-basepath/ui/favicons/favicon.svg\\"/><meta name=\\"theme-color\\" content=\\"#ffffff\\"/><meta name=\\"color-scheme\\" content=\\"light dark\\"/></head><body><div data-test-subj=\\"promptPage\\" style=\\"min-block-size:max(460px, 100vh);padding-block-start:0\\" class=\\"euiPageTemplate eui-cjgvy1-euiPageOuter-row-grow\\"><main id=\\"EuiPageTemplateInner_generated-id\\" class=\\"eui-nq554q-euiPageInner\\"><section class=\\"eui-68douo-euiPageSection-grow-l-center-transparent\\"><div class=\\"eui-1sghhs8-euiPageSection__content-l-center\\"><div class=\\"euiPanel euiPanel--plain euiEmptyPrompt euiEmptyPrompt--vertical euiEmptyPrompt--paddingLarge eui-12g67tv-euiPanel-m-plain-hasShadow\\"><div class=\\"euiEmptyPrompt__main\\"><div class=\\"euiEmptyPrompt__icon\\"><span data-euiicon-type=\\"warning\\" color=\\"danger\\"></span></div><div class=\\"euiEmptyPrompt__content\\"><div class=\\"euiEmptyPrompt__contentInner\\"><h2 class=\\"euiTitle eui-smz32e-euiTitle-m\\">We hit an authentication error</h2><div class=\\"euiSpacer euiSpacer--m eui-jv9za2-euiSpacer-m\\"></div><div class=\\"euiText eui-1vwhzjf-euiText-m-euiTextColor-subdued\\"><p>Try logging in again, and if the problem persists, contact your system administrator.</p></div><div class=\\"euiSpacer euiSpacer--l eui-p2o3x6-euiSpacer-l\\"></div><div class=\\"euiFlexGroup euiEmptyPrompt__actions eui-17kdkag-euiFlexGroup-m-center-center-column\\"><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><a href=\\"/some/url?some-query=some-value#some-hash\\" rel=\\"noreferrer\\" class=\\"euiButton eui-8utmkn-euiButtonDisplay-m-defaultMinWidth-fill-primary\\" data-test-subj=\\"logInButton\\"><span class=\\"eui-1bascr2-euiButtonDisplayContent\\">Log in</span></a></div></div></div></div></div></div></div></section></main></div></body></html>"`;
exports[`UnauthenticatedPage renders as expected with custom title 1`] = `"<html lang=\\"en\\"><head><title>My Company Name</title><style></style><style data-emotion=\\"eui \\"></style></style><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css\\" rel=\\"stylesheet\\"/><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.v8.light.css\\" rel=\\"stylesheet\\"/>MockedFonts<link rel=\\"alternate icon\\" type=\\"image/png\\" href=\\"/mock-server-basepath/ui/favicons/favicon.png\\"/><link rel=\\"icon\\" type=\\"image/svg+xml\\" href=\\"/mock-server-basepath/ui/favicons/favicon.svg\\"/><meta name=\\"theme-color\\" content=\\"#ffffff\\"/><meta name=\\"color-scheme\\" content=\\"light dark\\"/></head><body><div data-test-subj=\\"promptPage\\" style=\\"min-block-size:max(460px, 100vh);padding-block-start:var(--euiFixedHeadersOffset, 0)\\" class=\\"euiPageTemplate eui-cjgvy1-euiPageOuter-row-grow\\"><main id=\\"EuiPageTemplateInner_generated-id\\" class=\\"eui-nq554q-euiPageInner\\"><section class=\\"eui-68douo-euiPageSection-grow-l-center-transparent\\"><div class=\\"eui-1sghhs8-euiPageSection__content-l-center\\"><div class=\\"euiPanel euiPanel--plain euiEmptyPrompt euiEmptyPrompt--vertical euiEmptyPrompt--paddingLarge eui-12g67tv-euiPanel-m-plain-hasShadow\\"><div class=\\"euiEmptyPrompt__main\\"><div class=\\"euiEmptyPrompt__icon\\"><span data-euiicon-type=\\"warning\\" color=\\"danger\\"></span></div><div class=\\"euiEmptyPrompt__content\\"><div class=\\"euiEmptyPrompt__contentInner\\"><h2 class=\\"euiTitle eui-smz32e-euiTitle-m\\">We hit an authentication error</h2><div class=\\"euiSpacer euiSpacer--m eui-jv9za2-euiSpacer-m\\"></div><div class=\\"euiText eui-1vwhzjf-euiText-m-euiTextColor-subdued\\"><p>Try logging in again, and if the problem persists, contact your system administrator.</p></div><div class=\\"euiSpacer euiSpacer--l eui-p2o3x6-euiSpacer-l\\"></div><div class=\\"euiFlexGroup euiEmptyPrompt__actions eui-17kdkag-euiFlexGroup-m-center-center-column\\"><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><a href=\\"/some/url?some-query=some-value#some-hash\\" rel=\\"noreferrer\\" class=\\"euiButton eui-8utmkn-euiButtonDisplay-m-defaultMinWidth-fill-primary\\" data-test-subj=\\"logInButton\\"><span class=\\"eui-1bascr2-euiButtonDisplayContent\\">Log in</span></a></div></div></div></div></div></div></div></section></main></div></body></html>"`;

View file

@ -1,5 +1,5 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`ResetSessionPage renders as expected 1`] = `"<html lang=\\"en\\"><head><title>Elastic</title><style></style><style data-emotion=\\"eui \\"></style></style><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css\\" rel=\\"stylesheet\\"/><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.v8.light.css\\" rel=\\"stylesheet\\"/>MockedFonts<link rel=\\"alternate icon\\" type=\\"image/png\\" href=\\"/mock-server-basepath/ui/favicons/favicon.png\\"/><link rel=\\"icon\\" type=\\"image/svg+xml\\" href=\\"/mock-server-basepath/ui/favicons/favicon.svg\\"/><script src=\\"/mock-basepath/internal/security/reset_session_page.js\\"></script><meta name=\\"theme-color\\" content=\\"#ffffff\\"/><meta name=\\"color-scheme\\" content=\\"light dark\\"/></head><body><div data-test-subj=\\"promptPage\\" style=\\"min-block-size:max(460px, 100vh);padding-block-start:0\\" class=\\"euiPageTemplate eui-cjgvy1-euiPageOuter-row-grow\\"><main id=\\"EuiPageTemplateInner_generated-id\\" class=\\"eui-nq554q-euiPageInner\\"><section class=\\"eui-68douo-euiPageSection-grow-l-center-transparent\\"><div class=\\"eui-1sghhs8-euiPageSection__content-l-center\\"><div class=\\"euiPanel euiPanel--plain euiEmptyPrompt euiEmptyPrompt--vertical euiEmptyPrompt--paddingLarge eui-12g67tv-euiPanel-m-plain-hasShadow\\"><div class=\\"euiEmptyPrompt__main\\"><div class=\\"euiEmptyPrompt__icon\\"><span data-euiicon-type=\\"warning\\" color=\\"danger\\"></span></div><div class=\\"euiEmptyPrompt__content\\"><div class=\\"euiEmptyPrompt__contentInner\\"><h2 class=\\"euiTitle eui-smz32e-euiTitle-m\\">You do not have permission to access the requested page</h2><div class=\\"euiSpacer euiSpacer--m eui-jv9za2-euiSpacer-m\\"></div><div class=\\"euiText eui-1vwhzjf-euiText-m-euiTextColor-subdued\\"><p>Either go back to the previous page or log in as a different user.</p></div><div class=\\"euiSpacer euiSpacer--l eui-p2o3x6-euiSpacer-l\\"></div><div class=\\"euiFlexGroup euiEmptyPrompt__actions eui-17kdkag-euiFlexGroup-m-center-center-column\\"><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><a href=\\"/path/to/logout\\" rel=\\"noreferrer\\" class=\\"euiButton eui-8utmkn-euiButtonDisplay-m-defaultMinWidth-fill-primary\\" data-test-subj=\\"ResetSessionButton\\"><span class=\\"eui-1bascr2-euiButtonDisplayContent\\">Log in as different user</span></a></div><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><button class=\\"euiButtonEmpty eui-9ywwuh-euiButtonDisplay-euiButtonEmpty-m-empty-primary\\" type=\\"button\\" id=\\"goBackButton\\"><span class=\\"euiButtonEmpty__content eui-1bascr2-euiButtonDisplayContent\\"><span class=\\"eui-textTruncate euiButtonEmpty__text\\">Go back</span></span></button></div></div></div></div></div></div></div></section></main></div></body></html>"`;
exports[`ResetSessionPage renders as expected 1`] = `"<html lang=\\"en\\"><head><title>Elastic</title><style></style><style data-emotion=\\"eui \\"></style></style><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css\\" rel=\\"stylesheet\\"/><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.v8.light.css\\" rel=\\"stylesheet\\"/>MockedFonts<link rel=\\"alternate icon\\" type=\\"image/png\\" href=\\"/mock-server-basepath/ui/favicons/favicon.png\\"/><link rel=\\"icon\\" type=\\"image/svg+xml\\" href=\\"/mock-server-basepath/ui/favicons/favicon.svg\\"/><script src=\\"/mock-basepath/internal/security/reset_session_page.js\\"></script><meta name=\\"theme-color\\" content=\\"#ffffff\\"/><meta name=\\"color-scheme\\" content=\\"light dark\\"/></head><body><div data-test-subj=\\"promptPage\\" style=\\"min-block-size:max(460px, 100vh);padding-block-start:var(--euiFixedHeadersOffset, 0)\\" class=\\"euiPageTemplate eui-cjgvy1-euiPageOuter-row-grow\\"><main id=\\"EuiPageTemplateInner_generated-id\\" class=\\"eui-nq554q-euiPageInner\\"><section class=\\"eui-68douo-euiPageSection-grow-l-center-transparent\\"><div class=\\"eui-1sghhs8-euiPageSection__content-l-center\\"><div class=\\"euiPanel euiPanel--plain euiEmptyPrompt euiEmptyPrompt--vertical euiEmptyPrompt--paddingLarge eui-12g67tv-euiPanel-m-plain-hasShadow\\"><div class=\\"euiEmptyPrompt__main\\"><div class=\\"euiEmptyPrompt__icon\\"><span data-euiicon-type=\\"warning\\" color=\\"danger\\"></span></div><div class=\\"euiEmptyPrompt__content\\"><div class=\\"euiEmptyPrompt__contentInner\\"><h2 class=\\"euiTitle eui-smz32e-euiTitle-m\\">You do not have permission to access the requested page</h2><div class=\\"euiSpacer euiSpacer--m eui-jv9za2-euiSpacer-m\\"></div><div class=\\"euiText eui-1vwhzjf-euiText-m-euiTextColor-subdued\\"><p>Either go back to the previous page or log in as a different user.</p></div><div class=\\"euiSpacer euiSpacer--l eui-p2o3x6-euiSpacer-l\\"></div><div class=\\"euiFlexGroup euiEmptyPrompt__actions eui-17kdkag-euiFlexGroup-m-center-center-column\\"><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><a href=\\"/path/to/logout\\" rel=\\"noreferrer\\" class=\\"euiButton eui-8utmkn-euiButtonDisplay-m-defaultMinWidth-fill-primary\\" data-test-subj=\\"ResetSessionButton\\"><span class=\\"eui-1bascr2-euiButtonDisplayContent\\">Log in as different user</span></a></div><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><button class=\\"euiButtonEmpty eui-9ywwuh-euiButtonDisplay-euiButtonEmpty-m-empty-primary\\" type=\\"button\\" id=\\"goBackButton\\"><span class=\\"euiButtonEmpty__content eui-1bascr2-euiButtonDisplayContent\\"><span class=\\"eui-textTruncate euiButtonEmpty__text\\">Go back</span></span></button></div></div></div></div></div></div></div></section></main></div></body></html>"`;
exports[`ResetSessionPage renders as expected with custom page title 1`] = `"<html lang=\\"en\\"><head><title>My Company Name</title><style></style><style data-emotion=\\"eui \\"></style></style><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css\\" rel=\\"stylesheet\\"/><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.v8.light.css\\" rel=\\"stylesheet\\"/>MockedFonts<link rel=\\"alternate icon\\" type=\\"image/png\\" href=\\"/mock-server-basepath/ui/favicons/favicon.png\\"/><link rel=\\"icon\\" type=\\"image/svg+xml\\" href=\\"/mock-server-basepath/ui/favicons/favicon.svg\\"/><script src=\\"/mock-basepath/internal/security/reset_session_page.js\\"></script><meta name=\\"theme-color\\" content=\\"#ffffff\\"/><meta name=\\"color-scheme\\" content=\\"light dark\\"/></head><body><div data-test-subj=\\"promptPage\\" style=\\"min-block-size:max(460px, 100vh);padding-block-start:0\\" class=\\"euiPageTemplate eui-cjgvy1-euiPageOuter-row-grow\\"><main id=\\"EuiPageTemplateInner_generated-id\\" class=\\"eui-nq554q-euiPageInner\\"><section class=\\"eui-68douo-euiPageSection-grow-l-center-transparent\\"><div class=\\"eui-1sghhs8-euiPageSection__content-l-center\\"><div class=\\"euiPanel euiPanel--plain euiEmptyPrompt euiEmptyPrompt--vertical euiEmptyPrompt--paddingLarge eui-12g67tv-euiPanel-m-plain-hasShadow\\"><div class=\\"euiEmptyPrompt__main\\"><div class=\\"euiEmptyPrompt__icon\\"><span data-euiicon-type=\\"warning\\" color=\\"danger\\"></span></div><div class=\\"euiEmptyPrompt__content\\"><div class=\\"euiEmptyPrompt__contentInner\\"><h2 class=\\"euiTitle eui-smz32e-euiTitle-m\\">You do not have permission to access the requested page</h2><div class=\\"euiSpacer euiSpacer--m eui-jv9za2-euiSpacer-m\\"></div><div class=\\"euiText eui-1vwhzjf-euiText-m-euiTextColor-subdued\\"><p>Either go back to the previous page or log in as a different user.</p></div><div class=\\"euiSpacer euiSpacer--l eui-p2o3x6-euiSpacer-l\\"></div><div class=\\"euiFlexGroup euiEmptyPrompt__actions eui-17kdkag-euiFlexGroup-m-center-center-column\\"><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><a href=\\"/path/to/logout\\" rel=\\"noreferrer\\" class=\\"euiButton eui-8utmkn-euiButtonDisplay-m-defaultMinWidth-fill-primary\\" data-test-subj=\\"ResetSessionButton\\"><span class=\\"eui-1bascr2-euiButtonDisplayContent\\">Log in as different user</span></a></div><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><button class=\\"euiButtonEmpty eui-9ywwuh-euiButtonDisplay-euiButtonEmpty-m-empty-primary\\" type=\\"button\\" id=\\"goBackButton\\"><span class=\\"euiButtonEmpty__content eui-1bascr2-euiButtonDisplayContent\\"><span class=\\"eui-textTruncate euiButtonEmpty__text\\">Go back</span></span></button></div></div></div></div></div></div></div></section></main></div></body></html>"`;
exports[`ResetSessionPage renders as expected with custom page title 1`] = `"<html lang=\\"en\\"><head><title>My Company Name</title><style></style><style data-emotion=\\"eui \\"></style></style><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-src/kbn-ui-shared-deps-src.css\\" rel=\\"stylesheet\\"/><link href=\\"/mock-server-basepath/100500/bundles/kbn-ui-shared-deps-npm/kbn-ui-shared-deps-npm.v8.light.css\\" rel=\\"stylesheet\\"/>MockedFonts<link rel=\\"alternate icon\\" type=\\"image/png\\" href=\\"/mock-server-basepath/ui/favicons/favicon.png\\"/><link rel=\\"icon\\" type=\\"image/svg+xml\\" href=\\"/mock-server-basepath/ui/favicons/favicon.svg\\"/><script src=\\"/mock-basepath/internal/security/reset_session_page.js\\"></script><meta name=\\"theme-color\\" content=\\"#ffffff\\"/><meta name=\\"color-scheme\\" content=\\"light dark\\"/></head><body><div data-test-subj=\\"promptPage\\" style=\\"min-block-size:max(460px, 100vh);padding-block-start:var(--euiFixedHeadersOffset, 0)\\" class=\\"euiPageTemplate eui-cjgvy1-euiPageOuter-row-grow\\"><main id=\\"EuiPageTemplateInner_generated-id\\" class=\\"eui-nq554q-euiPageInner\\"><section class=\\"eui-68douo-euiPageSection-grow-l-center-transparent\\"><div class=\\"eui-1sghhs8-euiPageSection__content-l-center\\"><div class=\\"euiPanel euiPanel--plain euiEmptyPrompt euiEmptyPrompt--vertical euiEmptyPrompt--paddingLarge eui-12g67tv-euiPanel-m-plain-hasShadow\\"><div class=\\"euiEmptyPrompt__main\\"><div class=\\"euiEmptyPrompt__icon\\"><span data-euiicon-type=\\"warning\\" color=\\"danger\\"></span></div><div class=\\"euiEmptyPrompt__content\\"><div class=\\"euiEmptyPrompt__contentInner\\"><h2 class=\\"euiTitle eui-smz32e-euiTitle-m\\">You do not have permission to access the requested page</h2><div class=\\"euiSpacer euiSpacer--m eui-jv9za2-euiSpacer-m\\"></div><div class=\\"euiText eui-1vwhzjf-euiText-m-euiTextColor-subdued\\"><p>Either go back to the previous page or log in as a different user.</p></div><div class=\\"euiSpacer euiSpacer--l eui-p2o3x6-euiSpacer-l\\"></div><div class=\\"euiFlexGroup euiEmptyPrompt__actions eui-17kdkag-euiFlexGroup-m-center-center-column\\"><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><a href=\\"/path/to/logout\\" rel=\\"noreferrer\\" class=\\"euiButton eui-8utmkn-euiButtonDisplay-m-defaultMinWidth-fill-primary\\" data-test-subj=\\"ResetSessionButton\\"><span class=\\"eui-1bascr2-euiButtonDisplayContent\\">Log in as different user</span></a></div><div class=\\"euiFlexItem eui-kpsrin-euiFlexItem-growZero\\"><button class=\\"euiButtonEmpty eui-9ywwuh-euiButtonDisplay-euiButtonEmpty-m-empty-primary\\" type=\\"button\\" id=\\"goBackButton\\"><span class=\\"euiButtonEmpty__content eui-1bascr2-euiButtonDisplayContent\\"><span class=\\"eui-textTruncate euiButtonEmpty__text\\">Go back</span></span></button></div></div></div></div></div></div></div></section></main></div></body></html>"`;

View file

@ -12,7 +12,7 @@ import { useGlobalHeaderPortal } from '../../../../common/hooks/use_global_heade
const StyledStickyWrapper = styled.div`
position: sticky;
z-index: ${(props) => props.theme.eui.euiZHeaderBelowDataGrid};
// TOP location is declared in src/public/rendering/_base.scss to keep in line with Kibana Chrome
top: var(--euiFixedHeadersOffset, 0);
`;
export const GlobalKQLHeader = React.memo(() => {

View file

@ -21,7 +21,7 @@ const AccordionTitleComponent: React.FC<AccordionTitleProps> = ({ name, title, t
<RuleStatusIcon name={name} type={type} />
</EuiFlexItem>
<EuiFlexItem>
<EuiTitle size="s" className="euiAccordionForm__title">
<EuiTitle size="s">
<h6>{title}</h6>
</EuiTitle>
</EuiFlexItem>

View file

@ -58,8 +58,8 @@ describe('When using the `ExecuteActionHostResponse` component', () => {
it('should show execute context accordion as `closed`', async () => {
render();
expect(renderResult.getByTestId('test-executeResponseOutput-context').className).toEqual(
'euiAccordion'
expect(renderResult.getByTestId('test-executeResponseOutput-context').className).not.toContain(
'euiAccordion-isOpen'
);
});

View file

@ -24,11 +24,11 @@ const OverlayRootContainer = styled.div`
position: fixed;
overflow: hidden;
top: calc((${({ theme: { eui } }) => eui.euiHeaderHeightCompensation} * 2));
top: var(--euiFixedHeadersOffset, 0);
bottom: 0;
right: 0;
height: calc(100% - ${({ theme: { eui } }) => eui.euiHeaderHeightCompensation} * 2);
height: calc(100% - var(--euiFixedHeadersOffset, 0));
width: 100%;
z-index: ${({ theme: { eui } }) => eui.euiZFlyout};
@ -89,17 +89,6 @@ const PageOverlayGlobalStyles = createGlobalStyle<{ theme: EuiTheme }>`
body.${PAGE_OVERLAY_DOCUMENT_BODY_FULLSCREEN_CLASSNAME} {
${FULL_SCREEN_CONTENT_OVERRIDES_CSS_STYLESHEET}
}
//-------------------------------------------------------------------------------------------
// Style overrides for when Page Overlay is displayed in serverless project
//-------------------------------------------------------------------------------------------
// With serverless, there is 1 less header displayed, thus the display of the page overlay
// need to be adjusted slightly so that it still display below the header
//-------------------------------------------------------------------------------------------
body.kbnBody.kbnBody--projectLayout:not(.${PAGE_OVERLAY_DOCUMENT_BODY_FULLSCREEN_CLASSNAME}) .${PAGE_OVERLAY_CSS_CLASSNAME} {
top: ${({ theme: { eui } }) => eui.euiHeaderHeightCompensation};
height: calc(100% - (${({ theme: { eui } }) => eui.euiHeaderHeightCompensation}));
}
`;
const setDocumentBodyOverlayIsVisible = () => {

View file

@ -42,12 +42,12 @@ const FlyoutPaneComponent: React.FC<FlyoutPaneComponentProps> = ({
<EuiPortal insert={{ sibling: !visible ? ref?.current : null, position: 'after' }}>
<div
aria-label={i18n.TIMELINE_DESCRIPTION}
className="euiFlyout"
data-test-subj="timeline-flyout"
css={css`
min-width: 150px;
height: 100%;
top: 0;
height: inherit;
bottom: 0;
top: var(--euiFixedHeadersOffset, 0);
left: 0;
background: ${useEuiBackgroundColor('plain')};
position: fixed;

View file

@ -72,8 +72,8 @@ export const BrowserTestRunResult = ({ expectPings, onDone, testRunId }: Props)
key={'accordion-' + checkGroupId}
id={'accordion-' + checkGroupId}
element="fieldset"
className="euiAccordionForm"
buttonClassName="euiAccordionForm__button"
borders="horizontal"
buttonProps={{ paddingSize: 'm' }}
buttonContent={getButtonContent(checkGroupResult)}
paddingSize="s"
data-test-subj="expandResults"

View file

@ -6,6 +6,7 @@
*/
import React, { Fragment, useContext, useState } from 'react';
import { css } from '@emotion/react';
import {
EuiAccordion,
@ -20,6 +21,8 @@ import {
EuiLink,
EuiText,
EuiSpacer,
useEuiTheme,
euiCanAnimate,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { FormattedMessage } from '@kbn/i18n-react';
@ -75,6 +78,7 @@ export const WatchActionsAccordion: React.FunctionComponent<Props> = ({
settings,
actionErrors,
}) => {
const { euiTheme } = useEuiTheme();
const {
links: { watchActionsConfigurationMap },
toasts,
@ -96,8 +100,15 @@ export const WatchActionsAccordion: React.FunctionComponent<Props> = ({
initialIsOpen={action.isNew || hasErrors} // If an action contains errors in edit mode, we want the accordion open so the user is aware
key={action.id}
id={action.id}
className="euiAccordionForm"
buttonContentClassName="euiAccordionForm__button"
borders="horizontal"
buttonProps={{
paddingSize: 'm',
css: css`
&:hover {
text-decoration: none;
}
`,
}}
data-test-subj="watchActionAccordion"
buttonContent={
<EuiFlexGroup gutterSize="s" alignItems="center">
@ -105,7 +116,7 @@ export const WatchActionsAccordion: React.FunctionComponent<Props> = ({
<EuiIcon type={action.iconClass} size="m" />
</EuiFlexItem>
<EuiFlexItem>
<EuiTitle size="s" className="euiAccordionForm__title">
<EuiTitle size="s">
<h6>{action.typeName}</h6>
</EuiTitle>
</EuiFlexItem>
@ -115,7 +126,18 @@ export const WatchActionsAccordion: React.FunctionComponent<Props> = ({
<EuiButtonIcon
iconType="cross"
color="danger"
className="euiAccordionForm__extraAction"
css={css`
opacity: 0;
&:focus,
.euiAccordion:hover & {
opacity: 1;
}
${euiCanAnimate} {
transition: opacity ${euiTheme.animation.normal} ${euiTheme.animation.resistance};
}
`}
aria-label={i18n.translate(
'xpack.watcher.sections.watchEdit.threshold.accordion.deleteIconAriaLabel',
{

View file

@ -113,7 +113,7 @@ export default function ({ getPageObjects, getService, updateBaselines }) {
'flights_map',
updateBaselines
);
expect(percentDifference).to.be.lessThan(0.02);
expect(percentDifference).to.be.lessThan(0.022);
});
});
@ -138,7 +138,7 @@ export default function ({ getPageObjects, getService, updateBaselines }) {
'web_logs_map',
updateBaselines
);
expect(percentDifference).to.be.lessThan(0.02);
expect(percentDifference).to.be.lessThan(0.031);
});
});
});

View file

@ -1596,10 +1596,10 @@
resolved "https://registry.yarnpkg.com/@elastic/eslint-plugin-eui/-/eslint-plugin-eui-0.0.2.tgz#56b9ef03984a05cc213772ae3713ea8ef47b0314"
integrity sha512-IoxURM5zraoQ7C8f+mJb9HYSENiZGgRVcG4tLQxE61yHNNRDXtGDWTZh8N1KIHcsqN1CEPETjuzBXkJYF/fDiQ==
"@elastic/eui@88.1.0":
version "88.1.0"
resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-88.1.0.tgz#0c10173fecd5812b035c349cc8a836fa198d1f59"
integrity sha512-0irae9LLl9j2fc11FZePhioPAyus7YGpm0yoiKOnD5JqSskqRlmlmwPCYSIEYfxbwyibA4qrbt7kenJ7PTOt5g==
"@elastic/eui@88.2.0":
version "88.2.0"
resolved "https://registry.yarnpkg.com/@elastic/eui/-/eui-88.2.0.tgz#ba29775ceaca27b6c44300bcd58783acf720b420"
integrity sha512-h756c4vB6lcyrf5bVZhLeaACWYh2t5Y8rxIX1/0BTQ4kJugBoSwSbSdGgW4G1tUa6hdYEsCzqvAQ2mI6LPSbbw==
dependencies:
"@hello-pangea/dnd" "^16.2.0"
"@types/lodash" "^4.14.194"