Skip to content

Commit 883d19f

Browse files
authored
Merge branch 'main' into ad-worker-skeleton
2 parents fead7ae + 556c9f7 commit 883d19f

239 files changed

Lines changed: 70218 additions & 5036 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,19 +42,25 @@ For information about building the documentation, see the README in [elastic/doc
4242

4343
## Version Compatibility with Elasticsearch
4444

45-
Ideally, you should be running Elasticsearch and Kibana with matching version numbers. If your Elasticsearch has an older version number or a newer _major_ number than Kibana, then Kibana will fail to run. If Elasticsearch has a newer minor or patch number than Kibana, then the Kibana Server will log a warning.
45+
### Elasticsearch & Kibana Compatibility
46+
47+
The recommended configuration is to run Elasticsearch and Kibana using the same version number. If you encounter issues on mismatched versions, you will first be asked to upgrade before support or troubleshooting can begin.
48+
49+
- __Major Versions:__ Must strictly match (with exceptions for `prevmajor.last`)
50+
- __Kibana Patch Ahead:__ Kibana can run on a newer patch version than Elasticsearch (e.g. Elasticsearch 9.4.0 with Kibana 9.4.2) to allow easier Kibana-only patching.
51+
- __Kibana Minor Behind:__ Kibana can run using an older minor version than Elasticsearch (e.g. Kibana 9.3.x with Elasticsearch 9.4.x) to simplify rolling upgrades.
4652

4753
_Note: The version numbers below are only examples, meant to illustrate the relationships between different types of version numbers._
4854

49-
| Situation | Example Kibana version | Example ES version | Outcome |
50-
| ------------------------- | -------------------------- |------------------- | ------- |
51-
| Versions are the same. | 7.15.1 | 7.15.1 | 💚 OK |
52-
| ES patch number is newer. | 7.15.__0__ | 7.15.__1__ | ⚠️ Logged warning |
53-
| ES minor number is newer. | 7.__14__.2 | 7.__15__.0 | ⚠️ Logged warning |
54-
| ES major number is newer. | __7__.15.1 | __8__.0.0 | 🚫 Fatal error |
55-
| ES patch number is older. | 7.15.__1__ | 7.15.__0__ | ⚠️ Logged warning |
56-
| ES minor number is older. | 7.__15__.1 | 7.__14__.2 | 🚫 Fatal error |
57-
| ES major number is older. | __8__.0.0 | __7__.15.1 | 🚫 Fatal error |
55+
| Situation | Example Kibana version | Example ES version | Outcome |
56+
| ------------------------- | ------------------------- |------------------- | ------- |
57+
| Versions are the same. | 9.4.1 | 9.4.1 | OK |
58+
| ES patch number is newer. | 9.4.__0__ | 9.4.__1__ | Logged warning |
59+
| ES minor number is newer. | 9.__3__.2 | 9.__4__.0 | Logged warning |
60+
| ES major number is newer. | __8__.14.1 | __9__.0.0 | Fatal error |
61+
| ES patch number is older. | 9.4.__1__ | 9.4.__0__ | Logged warning |
62+
| ES minor number is older. | 9.__4__.1 | 9.__3__.2 | Fatal error |
63+
| ES major number is older. | __9__.0.0 | __8__.19.1 | Fatal error |
5864

5965
## Questions? Problems? Suggestions?
6066

fleet_packages.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,4 @@
6363
"version": "1.0.13",
6464
"allowSyncToPrerelease": true
6565
}
66-
]
66+
]

oas_docs/output/kibana.serverless.yaml

Lines changed: 669 additions & 1698 deletions
Large diffs are not rendered by default.

oas_docs/output/kibana.yaml

Lines changed: 669 additions & 1698 deletions
Large diffs are not rendered by default.

pnpm-lock.yaml

Lines changed: 26 additions & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-workspace.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ allowBuilds:
4747
# deprecated `$@elastic/esql` override syntax). Must match `@elastic/esql` in
4848
# package.json; the renovate `esql-js` group bumps them together.
4949
catalog:
50-
'@elastic/esql-grammar': '4.21.1'
51-
'@elastic/esql-promql-grammar': '4.21.1'
52-
'@elastic/esql-types': '4.21.1'
53-
'@elastic/pretty-printer': '4.21.1'
50+
'@elastic/esql-grammar': '4.22.0'
51+
'@elastic/esql-promql-grammar': '4.22.0'
52+
'@elastic/esql-types': '4.22.0'
53+
'@elastic/pretty-printer': '4.22.0'
5454
overrides:
5555
# Generated from package.json#resolutions by `kbn bootstrap` — edit
5656
# resolutions, not this block (yarn keys are mapped: `**/a` -> `a`, `a/b` -> `a>b`).

src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,9 @@ kibana_vars=(
180180
server.securityResponseHeaders.strictTransportSecurity
181181
server.securityResponseHeaders.xContentTypeOptions
182182
server.securityResponseHeaders.crossOriginOpenerPolicy
183+
server.selfHttp.target
184+
server.selfHttp.ssl.verificationMode
185+
server.selfHttp.ssl.certificateAuthorities
183186
server.shutdownTimeout
184187
server.socketTimeout
185188
server.ssl.cert

src/dev/build/tasks/os_packages/docker_generator/run.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export async function runDockerGenerator(
5151
*/
5252
if (flags.baseImage === 'wolfi')
5353
baseImageName =
54-
'docker.elastic.co/wolfi/chainguard-base:latest@sha256:ed06bcb85d26381eeccfe3a1be9cf6bade8603536791a68f9dea5aabe7655fc6';
54+
'docker.elastic.co/wolfi/chainguard-base:latest@sha256:a6f1b7fa63adf228802cb89b804b40f1d77a3d88d694c9a3a84c1e289fd5c71f';
5555

5656
let imageFlavor = '';
5757
if (flags.baseImage === 'wolfi' && !flags.serverless && !flags.cloud) imageFlavor += `-wolfi`;
@@ -61,7 +61,7 @@ export async function runDockerGenerator(
6161
if (flags.fips) {
6262
imageFlavor += '-fips';
6363
baseImageName =
64-
'docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:571fb83b1cee35d55b250649f03a92fec19ffbda89feb2e92cd9b3d97a980011';
64+
'docker.elastic.co/wolfi/chainguard-base-fips:latest@sha256:8300c6a397b8049a92967f92d4bb6dd404449937638d48f666859059244256ac';
6565
}
6666

6767
// General docker var config

src/platform/kbn-ui/side-navigation/src/__tests__/both_modes.test.tsx

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,6 +1188,55 @@ describe('Both modes', () => {
11881188
});
11891189
});
11901190

1191+
describe('Hover-only lists', () => {
1192+
/**
1193+
* GIVEN a primary item has hover `popoverSections` and an href
1194+
* WHEN I hover it, click it, and stay hovered
1195+
* THEN the popover must not reopen on the click's focus
1196+
* AND hovering again after leaving still opens it
1197+
*/
1198+
it('should not reopen the hover popover after clicking the parent while still hovering', async () => {
1199+
const recentsNav = {
1200+
primaryItems: [
1201+
{
1202+
id: 'dashboards',
1203+
label: 'Dashboards',
1204+
iconType: 'dashboardApp',
1205+
href: '/dashboards',
1206+
popoverSections: [
1207+
{
1208+
id: 'recentlyViewed',
1209+
label: 'Recently viewed',
1210+
items: [{ id: 'dash-1', label: 'One', href: '/dashboards/1' }],
1211+
},
1212+
],
1213+
},
1214+
],
1215+
footerItems: [],
1216+
};
1217+
1218+
render(<TestComponent items={recentsNav} />);
1219+
1220+
const dashboardsLink = screen.getByTestId(primaryItemId('dashboards'));
1221+
1222+
await user.hover(dashboardsLink);
1223+
flushPopoverTimers();
1224+
1225+
expect(await screen.findByTestId(popoverId('Dashboards'))).toBeInTheDocument();
1226+
1227+
await user.click(dashboardsLink);
1228+
flushPopoverTimers();
1229+
1230+
expect(screen.queryByTestId(popoverId('Dashboards'))).not.toBeInTheDocument();
1231+
1232+
await user.unhover(dashboardsLink);
1233+
await user.hover(dashboardsLink);
1234+
flushPopoverTimers();
1235+
1236+
expect(await screen.findByTestId(popoverId('Dashboards'))).toBeInTheDocument();
1237+
});
1238+
});
1239+
11911240
describe('Hover-only lists in More', () => {
11921241
/**
11931242
* GIVEN an overflow item has hover `popoverSections` but no tree `sections`

src/platform/kbn-ui/side-navigation/src/components/side_nav/popover.tsx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ export interface PopoverProps {
6565
ref?: Ref<HTMLElement>;
6666
onClick?: (e: MouseEvent) => void;
6767
onKeyDown?: (e: KeyboardEvent) => void;
68+
onMouseDown?: (e: MouseEvent) => void;
6869
tabIndex?: number;
6970
'aria-haspopup'?: boolean | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';
7071
'aria-expanded'?: boolean;
@@ -104,6 +105,9 @@ export const Popover = ({
104105

105106
const popoverRef = useRef<HTMLDivElement | null>(null);
106107
const triggerRef = useRef<HTMLElement>(null);
108+
// Clicking the trigger means navigate, not open the hover menu. Keep hover
109+
// closed until mouseleave so the click's focus cannot reopen it.
110+
const suppressHoverRef = useRef(false);
107111

108112
const [isOpenedByClick, setIsOpenedByClick] = useState(false);
109113
const [isOpen, setIsOpen] = useState(false);
@@ -136,6 +140,9 @@ export const Popover = ({
136140
}, [clearHoverTimeout, close]);
137141

138142
const handleMouseEnter = useCallback(() => {
143+
if (suppressHoverRef.current) {
144+
return;
145+
}
139146
if ((!persistent || !isOpenedByClick) && (!isAnyPopoverLocked || isOpen)) {
140147
clearHoverTimeout();
141148
if (!isSidePanelOpen) {
@@ -154,13 +161,23 @@ export const Popover = ({
154161
]);
155162

156163
const handleMouseLeave = useCallback(() => {
164+
suppressHoverRef.current = false;
157165
if (!persistent || !isOpenedByClick) {
158166
setHoverTimeout(handleClose, POPOVER_HOVER_DELAY);
159167
}
160168
}, [persistent, isOpenedByClick, setHoverTimeout, handleClose]);
161169

162170
const scrollStyles = useScroll(true);
163171

172+
const handleTriggerMouseDown = useCallback(() => {
173+
if (persistent) {
174+
return;
175+
}
176+
suppressHoverRef.current = true;
177+
clearHoverTimeout();
178+
close();
179+
}, [persistent, clearHoverTimeout, close]);
180+
164181
const handleTriggerClick = useCallback(() => {
165182
if (persistent) {
166183
if (isOpen && isOpenedByClick) {
@@ -253,6 +270,10 @@ export const Popover = ({
253270
trigger.props.onClick?.(e);
254271
handleTriggerClick();
255272
},
273+
onMouseDown: (e: MouseEvent) => {
274+
trigger.props.onMouseDown?.(e);
275+
handleTriggerMouseDown();
276+
},
256277
onKeyDown: handleTriggerKeyDown,
257278
});
258279
}, [
@@ -261,6 +282,7 @@ export const Popover = ({
261282
isOpen,
262283
handleTriggerKeyDown,
263284
handleTriggerClick,
285+
handleTriggerMouseDown,
264286
isSidePanelOpen,
265287
popoverEnterAndExitInstructionsId,
266288
]);

0 commit comments

Comments
 (0)