ChromeUserBanner
| |
+
+Returns:
+
+`void`
+
+## Remarks
+
+Using `undefined` when invoking this API will remove the banner.
+
diff --git a/docs/development/core/public/kibana-plugin-core-public.chromeuserbanner.content.md b/docs/development/core/public/kibana-plugin-core-public.chromeuserbanner.content.md
new file mode 100644
index 00000000000000..7a77fdc6223de9
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.chromeuserbanner.content.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [ChromeUserBanner](./kibana-plugin-core-public.chromeuserbanner.md) > [content](./kibana-plugin-core-public.chromeuserbanner.content.md)
+
+## ChromeUserBanner.content property
+
+Signature:
+
+```typescript
+content: MountPointMountPoint<HTMLDivElement>
| |
+
diff --git a/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md b/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md
index f1c046c51b7287..dc6804b0630bd4 100644
--- a/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md
+++ b/docs/development/core/public/kibana-plugin-core-public.doclinksstart.md
@@ -18,4 +18,3 @@ export interface DocLinksStart
| [DOC\_LINK\_VERSION](./kibana-plugin-core-public.doclinksstart.doc_link_version.md) | string
| |
| [ELASTIC\_WEBSITE\_URL](./kibana-plugin-core-public.doclinksstart.elastic_website_url.md) | string
| |
| [links](./kibana-plugin-core-public.doclinksstart.links.md) | {
readonly dashboard: {
readonly guide: string;
readonly drilldowns: string;
readonly drilldownsTriggerPicker: string;
readonly urlDrilldownTemplateSyntax: string;
readonly urlDrilldownVariables: string;
};
readonly discover: Record<string, string>;
readonly filebeat: {
readonly base: string;
readonly installation: string;
readonly configuration: string;
readonly elasticsearchOutput: string;
readonly elasticsearchModule: string;
readonly startup: string;
readonly exportedFields: string;
};
readonly auditbeat: {
readonly base: string;
};
readonly metricbeat: {
readonly base: string;
readonly configure: string;
readonly httpEndpoint: string;
readonly install: string;
readonly start: string;
};
readonly enterpriseSearch: {
readonly base: string;
readonly appSearchBase: string;
readonly workplaceSearchBase: string;
};
readonly heartbeat: {
readonly base: string;
};
readonly logstash: {
readonly base: string;
};
readonly functionbeat: {
readonly base: string;
};
readonly winlogbeat: {
readonly base: string;
};
readonly aggs: {
readonly date_histogram: string;
readonly date_range: string;
readonly date_format_pattern: string;
readonly filter: string;
readonly filters: string;
readonly geohash_grid: string;
readonly histogram: string;
readonly ip_range: string;
readonly range: string;
readonly significant_terms: string;
readonly terms: string;
readonly avg: string;
readonly avg_bucket: string;
readonly max_bucket: string;
readonly min_bucket: string;
readonly sum_bucket: string;
readonly cardinality: string;
readonly count: string;
readonly cumulative_sum: string;
readonly derivative: string;
readonly geo_bounds: string;
readonly geo_centroid: string;
readonly max: string;
readonly median: string;
readonly min: string;
readonly moving_avg: string;
readonly percentile_ranks: string;
readonly serial_diff: string;
readonly std_dev: string;
readonly sum: string;
readonly top_hits: string;
};
readonly runtimeFields: string;
readonly scriptedFields: {
readonly scriptFields: string;
readonly scriptAggs: string;
readonly painless: string;
readonly painlessApi: string;
readonly painlessSyntax: string;
readonly luceneExpressions: string;
};
readonly indexPatterns: {
readonly loadingData: string;
readonly introduction: string;
};
readonly addData: string;
readonly kibana: string;
readonly elasticsearch: Record<string, string>;
readonly siem: {
readonly guide: string;
readonly gettingStarted: string;
};
readonly query: {
readonly eql: string;
readonly luceneQuerySyntax: string;
readonly queryDsl: string;
readonly kueryQuerySyntax: string;
};
readonly date: {
readonly dateMath: string;
};
readonly management: Record<string, string>;
readonly ml: Record<string, string>;
readonly transforms: Record<string, string>;
readonly visualize: Record<string, string>;
readonly apis: Readonly<{
createIndex: string;
createSnapshotLifecyclePolicy: string;
createRoleMapping: string;
createRoleMappingTemplates: string;
createApiKey: string;
createPipeline: string;
createTransformRequest: string;
executeWatchActionModes: string;
indexExists: string;
openIndex: string;
putComponentTemplate: string;
painlessExecute: string;
putComponentTemplateMetadata: string;
putWatch: string;
updateTransform: string;
}>;
readonly observability: Record<string, string>;
readonly alerting: Record<string, string>;
readonly maps: Record<string, string>;
readonly monitoring: Record<string, string>;
readonly security: Readonly<{
apiKeyServiceSettings: string;
clusterPrivileges: string;
elasticsearchSettings: string;
elasticsearchEnableSecurity: string;
indicesPrivileges: string;
kibanaTLS: string;
kibanaPrivileges: string;
mappingRoles: string;
mappingRolesFieldRules: string;
runAsPrivilege: string;
}>;
readonly watcher: Record<string, string>;
readonly ccs: Record<string, string>;
}
| |
-
diff --git a/docs/development/core/public/kibana-plugin-core-public.md b/docs/development/core/public/kibana-plugin-core-public.md
index e307b5c9971b0b..5524cf328fbfe6 100644
--- a/docs/development/core/public/kibana-plugin-core-public.md
+++ b/docs/development/core/public/kibana-plugin-core-public.md
@@ -56,6 +56,7 @@ The plugin integrates with the core system via lifecycle events: `setup`
| [ChromeRecentlyAccessed](./kibana-plugin-core-public.chromerecentlyaccessed.md) | [APIs](./kibana-plugin-core-public.chromerecentlyaccessed.md) for recently accessed history. |
| [ChromeRecentlyAccessedHistoryItem](./kibana-plugin-core-public.chromerecentlyaccessedhistoryitem.md) | |
| [ChromeStart](./kibana-plugin-core-public.chromestart.md) | ChromeStart allows plugins to customize the global chrome header UI and enrich the UX with additional information about the current location of the browser. |
+| [ChromeUserBanner](./kibana-plugin-core-public.chromeuserbanner.md) | |
| [CoreSetup](./kibana-plugin-core-public.coresetup.md) | Core services exposed to the Plugin
setup lifecycle |
| [CoreStart](./kibana-plugin-core-public.corestart.md) | Core services exposed to the Plugin
start lifecycle |
| [DocLinksStart](./kibana-plugin-core-public.doclinksstart.md) | |
diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.md
index 0b7e6467667cb2..6fcfae559dd33f 100644
--- a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.md
+++ b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.md
@@ -23,6 +23,7 @@ export interface UiSettingsParamsstring
| title in the UI |
| [optionLabels](./kibana-plugin-core-public.uisettingsparams.optionlabels.md) | Record<string, string>
| text labels for 'select' type UI element |
| [options](./kibana-plugin-core-public.uisettingsparams.options.md) | string[]
| array of permitted values for this setting |
+| [order](./kibana-plugin-core-public.uisettingsparams.order.md) | number
| index of the settings within its category (ascending order, smallest will be displayed first). Used for ordering in the UI. settings without order defined will be displayed last and ordered by name |
| [readonly](./kibana-plugin-core-public.uisettingsparams.readonly.md) | boolean
| a flag indicating that value cannot be changed |
| [requiresPageReload](./kibana-plugin-core-public.uisettingsparams.requirespagereload.md) | boolean
| a flag indicating whether new value applying requires page reloading |
| [schema](./kibana-plugin-core-public.uisettingsparams.schema.md) | Type<T>
| |
diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.order.md b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.order.md
new file mode 100644
index 00000000000000..d93aaeb9046168
--- /dev/null
+++ b/docs/development/core/public/kibana-plugin-core-public.uisettingsparams.order.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-public](./kibana-plugin-core-public.md) > [UiSettingsParams](./kibana-plugin-core-public.uisettingsparams.md) > [order](./kibana-plugin-core-public.uisettingsparams.order.md)
+
+## UiSettingsParams.order property
+
+index of the settings within its category (ascending order, smallest will be displayed first). Used for ordering in the UI.
+
+ settings without order defined will be displayed last and ordered by name
+
+Signature:
+
+```typescript
+order?: number;
+```
diff --git a/docs/development/core/public/kibana-plugin-core-public.uisettingstype.md b/docs/development/core/public/kibana-plugin-core-public.uisettingstype.md
index 5753704ccfe037..65e6264ea1e08a 100644
--- a/docs/development/core/public/kibana-plugin-core-public.uisettingstype.md
+++ b/docs/development/core/public/kibana-plugin-core-public.uisettingstype.md
@@ -9,5 +9,5 @@ UI element type to represent the settings.
Signature:
```typescript
-export declare type UiSettingsType = 'undefined' | 'json' | 'markdown' | 'number' | 'select' | 'boolean' | 'string' | 'array' | 'image';
+export declare type UiSettingsType = 'undefined' | 'json' | 'markdown' | 'number' | 'select' | 'boolean' | 'string' | 'array' | 'image' | 'color';
```
diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.md
index d35afc4a149d19..4bb7be77c595a9 100644
--- a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.md
+++ b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.md
@@ -23,6 +23,7 @@ export interface UiSettingsParamsstring
| title in the UI |
| [optionLabels](./kibana-plugin-core-server.uisettingsparams.optionlabels.md) | Record<string, string>
| text labels for 'select' type UI element |
| [options](./kibana-plugin-core-server.uisettingsparams.options.md) | string[]
| array of permitted values for this setting |
+| [order](./kibana-plugin-core-server.uisettingsparams.order.md) | number
| index of the settings within its category (ascending order, smallest will be displayed first). Used for ordering in the UI. settings without order defined will be displayed last and ordered by name |
| [readonly](./kibana-plugin-core-server.uisettingsparams.readonly.md) | boolean
| a flag indicating that value cannot be changed |
| [requiresPageReload](./kibana-plugin-core-server.uisettingsparams.requirespagereload.md) | boolean
| a flag indicating whether new value applying requires page reloading |
| [schema](./kibana-plugin-core-server.uisettingsparams.schema.md) | Type<T>
| |
diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.order.md b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.order.md
new file mode 100644
index 00000000000000..140bdad5d786bf
--- /dev/null
+++ b/docs/development/core/server/kibana-plugin-core-server.uisettingsparams.order.md
@@ -0,0 +1,15 @@
+
+
+[Home](./index.md) > [kibana-plugin-core-server](./kibana-plugin-core-server.md) > [UiSettingsParams](./kibana-plugin-core-server.uisettingsparams.md) > [order](./kibana-plugin-core-server.uisettingsparams.order.md)
+
+## UiSettingsParams.order property
+
+index of the settings within its category (ascending order, smallest will be displayed first). Used for ordering in the UI.
+
+ settings without order defined will be displayed last and ordered by name
+
+Signature:
+
+```typescript
+order?: number;
+```
diff --git a/docs/development/core/server/kibana-plugin-core-server.uisettingstype.md b/docs/development/core/server/kibana-plugin-core-server.uisettingstype.md
index 3c439897ea0310..7edee442baa24b 100644
--- a/docs/development/core/server/kibana-plugin-core-server.uisettingstype.md
+++ b/docs/development/core/server/kibana-plugin-core-server.uisettingstype.md
@@ -9,5 +9,5 @@ UI element type to represent the settings.
Signature:
```typescript
-export declare type UiSettingsType = 'undefined' | 'json' | 'markdown' | 'number' | 'select' | 'boolean' | 'string' | 'array' | 'image';
+export declare type UiSettingsType = 'undefined' | 'json' | 'markdown' | 'number' | 'select' | 'boolean' | 'string' | 'array' | 'image' | 'color';
```
diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md
index f576d795b93a52..d2e7ef9db05e8e 100644
--- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md
+++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.md
@@ -126,6 +126,7 @@
| [noSearchSessionStorageCapabilityMessage](./kibana-plugin-plugins-data-public.nosearchsessionstoragecapabilitymessage.md) | Message to display in case storing session session is disabled due to turned off capability |
| [parseSearchSourceJSON](./kibana-plugin-plugins-data-public.parsesearchsourcejson.md) | |
| [QueryStringInput](./kibana-plugin-plugins-data-public.querystringinput.md) | |
+| [SEARCH\_SESSIONS\_MANAGEMENT\_ID](./kibana-plugin-plugins-data-public.search_sessions_management_id.md) | |
| [search](./kibana-plugin-plugins-data-public.search.md) | |
| [SearchBar](./kibana-plugin-plugins-data-public.searchbar.md) | |
| [syncQueryStateWithUrl](./kibana-plugin-plugins-data-public.syncquerystatewithurl.md) | Helper to setup syncing of global data with the URL |
diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search_sessions_management_id.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search_sessions_management_id.md
new file mode 100644
index 00000000000000..ad16d21403a984
--- /dev/null
+++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.search_sessions_management_id.md
@@ -0,0 +1,11 @@
+
+
+[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [SEARCH\_SESSIONS\_MANAGEMENT\_ID](./kibana-plugin-plugins-data-public.search_sessions_management_id.md)
+
+## SEARCH\_SESSIONS\_MANAGEMENT\_ID variable
+
+Signature:
+
+```typescript
+SEARCH_SESSIONS_MANAGEMENT_ID = "search_sessions"
+```
diff --git a/docs/user/alerting/alerting-production-considerations.asciidoc b/docs/user/alerting/alerting-production-considerations.asciidoc
index 3a68e81879e249..cc7adc87b150ef 100644
--- a/docs/user/alerting/alerting-production-considerations.asciidoc
+++ b/docs/user/alerting/alerting-production-considerations.asciidoc
@@ -27,4 +27,9 @@ Because by default tasks are polled at 3 second intervals and only 10 tasks can
For details on the settings that can influence the performance and throughput of Task Manager, see {task-manager-settings}.
-==============================================
\ No newline at end of file
+==============================================
+
+[float]
+=== Deployment considerations
+
+{es} and {kib} instances use the system clock to determine the current time. To ensure schedules are triggered when expected, you should synchronize the clocks of all nodes in the cluster using a time service such as http://www.ntp.org/[Network Time Protocol].
\ No newline at end of file
diff --git a/package.json b/package.json
index 0fa8ef31ab251d..9ddb37b60021d6 100644
--- a/package.json
+++ b/package.json
@@ -351,7 +351,7 @@
"@cypress/webpack-preprocessor": "^5.5.0",
"@elastic/apm-rum": "^5.6.1",
"@elastic/apm-rum-react": "^1.2.5",
- "@elastic/charts": "24.4.0",
+ "@elastic/charts": "24.5.1",
"@elastic/eslint-config-kibana": "link:packages/elastic-eslint-config-kibana",
"@elastic/eslint-plugin-eui": "0.0.2",
"@elastic/github-checks-reporter": "0.0.20b3",
diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml
index a1e40c06f6fa17..6d81b39df71135 100644
--- a/packages/kbn-optimizer/limits.yml
+++ b/packages/kbn-optimizer/limits.yml
@@ -91,7 +91,7 @@ pageLoadAssetSize:
visTypeMetric: 42790
visTypeTable: 94934
visTypeTagcloud: 37575
- visTypeTimelion: 51933
+ visTypeTimelion: 68883
visTypeTimeseries: 155203
visTypeVega: 153573
visTypeVislib: 242838
@@ -105,3 +105,4 @@ pageLoadAssetSize:
spacesOss: 18817
osquery: 107090
fileUpload: 25664
+ banners: 17946
diff --git a/scripts/build_ts_refs.js b/scripts/build_ts_refs.js
index 3222e0e90797bb..a4ee6ec491ef15 100644
--- a/scripts/build_ts_refs.js
+++ b/scripts/build_ts_refs.js
@@ -7,4 +7,4 @@
*/
require('../src/setup_node_env');
-require('../src/dev/typescript/build_refs').runBuildRefs();
+require('../src/dev/typescript').runBuildRefsCli();
diff --git a/src/core/public/_mixins.scss b/src/core/public/_mixins.scss
new file mode 100644
index 00000000000000..2dbef465e074e6
--- /dev/null
+++ b/src/core/public/_mixins.scss
@@ -0,0 +1,43 @@
+@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});
+ }
+ }
+}
diff --git a/src/core/public/_variables.scss b/src/core/public/_variables.scss
index 8c054e770bd4b7..f6ff5619bfc534 100644
--- a/src/core/public/_variables.scss
+++ b/src/core/public/_variables.scss
@@ -1,3 +1,8 @@
@import '@elastic/eui/src/global_styling/variables/header';
+// height of the header banner
+$kbnHeaderBannerHeight: $euiSizeXL;
+// 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;
diff --git a/src/core/public/chrome/chrome_service.mock.ts b/src/core/public/chrome/chrome_service.mock.ts
index cb0876f6bc7253..ae9c58af696032 100644
--- a/src/core/public/chrome/chrome_service.mock.ts
+++ b/src/core/public/chrome/chrome_service.mock.ts
@@ -61,6 +61,8 @@ const createStartContractMock = () => {
getIsNavDrawerLocked$: jest.fn(),
getCustomNavLink$: jest.fn(),
setCustomNavLink: jest.fn(),
+ setHeaderBanner: jest.fn(),
+ getBodyClasses$: jest.fn(),
};
startContract.navLinks.getAll.mockReturnValue([]);
startContract.getBrand$.mockReturnValue(new BehaviorSubject({} as ChromeBrand));
@@ -72,6 +74,7 @@ const createStartContractMock = () => {
startContract.getCustomNavLink$.mockReturnValue(new BehaviorSubject(undefined));
startContract.getHelpExtension$.mockReturnValue(new BehaviorSubject(undefined));
startContract.getIsNavDrawerLocked$.mockReturnValue(new BehaviorSubject(false));
+ startContract.getBodyClasses$.mockReturnValue(new BehaviorSubject([]));
return startContract;
};
diff --git a/src/core/public/chrome/chrome_service.tsx b/src/core/public/chrome/chrome_service.tsx
index ee8d1c17ccd59c..e69bf9025fdb92 100644
--- a/src/core/public/chrome/chrome_service.tsx
+++ b/src/core/public/chrome/chrome_service.tsx
@@ -6,69 +6,37 @@
* Side Public License, v 1.
*/
-import { EuiBreadcrumb, IconType } from '@elastic/eui';
import React from 'react';
import { FormattedMessage } from '@kbn/i18n/react';
import { BehaviorSubject, combineLatest, merge, Observable, of, ReplaySubject } from 'rxjs';
import { flatMap, map, takeUntil } from 'rxjs/operators';
import { parse } from 'url';
import { EuiLink } from '@elastic/eui';
-import { MountPoint } from '../types';
import { mountReactNode } from '../utils/mount';
import { InternalApplicationStart } from '../application';
import { DocLinksStart } from '../doc_links';
import { HttpStart } from '../http';
import { InjectedMetadataStart } from '../injected_metadata';
import { NotificationsStart } from '../notifications';
-import { IUiSettingsClient } from '../ui_settings';
import { KIBANA_ASK_ELASTIC_LINK } from './constants';
import { ChromeDocTitle, DocTitleService } from './doc_title';
import { ChromeNavControls, NavControlsService } from './nav_controls';
-import { ChromeNavLinks, NavLinksService, ChromeNavLink } from './nav_links';
+import { NavLinksService, ChromeNavLink } from './nav_links';
import { ChromeRecentlyAccessed, RecentlyAccessedService } from './recently_accessed';
import { Header } from './ui';
-import { ChromeHelpExtensionMenuLink } from './ui/header/header_help_menu';
export { ChromeNavControls, ChromeRecentlyAccessed, ChromeDocTitle };
+import {
+ ChromeBadge,
+ ChromeBrand,
+ ChromeBreadcrumb,
+ ChromeBreadcrumbsAppendExtension,
+ ChromeHelpExtension,
+ InternalChromeStart,
+ ChromeUserBanner,
+} from './types';
const IS_LOCKED_KEY = 'core.chrome.isLocked';
-/** @public */
-export interface ChromeBadge {
- text: string;
- tooltip: string;
- iconType?: IconType;
-}
-
-/** @public */
-export interface ChromeBrand {
- logo?: string;
- smallLogo?: string;
-}
-
-/** @public */
-export type ChromeBreadcrumb = EuiBreadcrumb;
-
-/** @public */
-export interface ChromeBreadcrumbsAppendExtension {
- content: MountPoint+ Setting is currently not saved. +
+