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 0000000000000..7a77fdc6223de
--- /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 f1c046c51b728..dc6804b0630bd 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 e307b5c9971b0..5524cf328fbfe 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 0b7e6467667cb..6fcfae559dd33 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 0000000000000..d93aaeb904616
--- /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 5753704ccfe03..65e6264ea1e08 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 d35afc4a149d1..4bb7be77c595a 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 0000000000000..140bdad5d786b
--- /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 3c439897ea031..7edee442baa24 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 f576d795b93a5..d2e7ef9db05e8 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 0000000000000..ad16d21403a98
--- /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 3a68e81879e24..cc7adc87b150e 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 0fa8ef31ab251..9ddb37b60021d 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 a1e40c06f6fa1..6d81b39df7113 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 3222e0e90797b..a4ee6ec491ef1 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 0000000000000..2dbef465e074e
--- /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 8c054e770bd4b..f6ff5619bfc53 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 cb0876f6bc725..ae9c58af69603 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 ee8d1c17ccd59..e69bf9025fdb9 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. +
+