From f35280bfb7e0d1c7b1b531a32ee9ce2ef0859c52 Mon Sep 17 00:00:00 2001 From: Josh Romero Date: Mon, 25 Apr 2022 22:15:57 +0000 Subject: [PATCH] fix(actions): Better type checks for icons - fix typo in iconType for `replace_panel` action - change iconType types from `string` to `EuiIconType` - use `icon` instead of `iconType` for svg pathseslin Signed-off-by: Josh Romero --- .../public/context_menu_examples/util.ts | 3 ++- src/core/public/application/types.ts | 3 ++- src/core/public/chrome/nav_links/nav_link.ts | 3 ++- .../chrome/nav_links/nav_links_service.test.ts | 5 +++-- src/core/public/chrome/nav_links/to_nav_link.test.ts | 5 +++-- src/core/types/app_category.ts | 4 +++- .../management_app/mount_management_section.tsx | 3 ++- src/plugins/apm_oss/server/tutorial/envs/on_prem.ts | 3 ++- src/plugins/apm_oss/server/tutorial/index.ts | 3 ++- .../application/actions/add_to_library_action.tsx | 3 ++- .../application/actions/clone_panel_action.tsx | 3 ++- .../application/actions/expand_panel_action.tsx | 3 ++- .../actions/library_notification_action.tsx | 5 +++-- .../application/actions/replace_panel_action.tsx | 5 +++-- .../actions/unlink_from_library_action.tsx | 3 ++- .../public/application/top_nav/get_top_nav_config.ts | 5 +++-- .../public/lib/actions/edit_panel_action.ts | 3 ++- .../panel_actions/add_panel/add_panel_action.ts | 3 ++- .../customize_title/customize_panel_action.ts | 3 ++- .../panel_actions/inspect_panel_action.ts | 3 ++- .../panel_actions/remove_panel_action.ts | 3 ++- .../management_app/mount_management_section.tsx | 3 ++- src/plugins/management/public/plugin.ts | 2 +- src/plugins/management/public/types.ts | 3 ++- .../management/public/utils/management_item.ts | 3 ++- .../public/top_nav_menu/top_nav_menu_data.tsx | 3 ++- src/plugins/ui_actions/public/actions/action.ts | 3 ++- .../ui_actions/public/actions/action_internal.ts | 3 ++- .../public/service/ui_actions_service.test.ts | 12 ++++++------ src/plugins/ui_actions/public/util/presentable.ts | 3 ++- .../public/application/utils/get_top_nav_config.tsx | 5 +++-- 31 files changed, 72 insertions(+), 42 deletions(-) diff --git a/examples/ui_actions_explorer/public/context_menu_examples/util.ts b/examples/ui_actions_explorer/public/context_menu_examples/util.ts index 946267a2f34..86a495c1726 100644 --- a/examples/ui_actions_explorer/public/context_menu_examples/util.ts +++ b/examples/ui_actions_explorer/public/context_menu_examples/util.ts @@ -28,13 +28,14 @@ * under the License. */ +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { Action } from '../../../../src/plugins/ui_actions/public'; export const sampleAction = ( id: string, order: number, name: string, - icon: string, + icon: EuiIconType, grouping?: Action['grouping'] ): Action => { return { diff --git a/src/core/public/application/types.ts b/src/core/public/application/types.ts index 5f620d266d2..084f7aaf029 100644 --- a/src/core/public/application/types.ts +++ b/src/core/public/application/types.ts @@ -32,6 +32,7 @@ import { Observable } from 'rxjs'; import { History } from 'history'; import { RecursiveReadonly } from '@osd/utility-types'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { MountPoint } from '../types'; import { Capabilities } from './capabilities'; import { ChromeStart } from '../chrome'; @@ -190,7 +191,7 @@ export interface App { * A EUI iconType that will be used for the app's icon. This icon * takes precendence over the `icon` property. */ - euiIconType?: string; + euiIconType?: EuiIconType; /** * A URL to an image file used as an icon. Used as a fallback diff --git a/src/core/public/chrome/nav_links/nav_link.ts b/src/core/public/chrome/nav_links/nav_link.ts index a7811e1c54f..cddd4523451 100644 --- a/src/core/public/chrome/nav_links/nav_link.ts +++ b/src/core/public/chrome/nav_links/nav_link.ts @@ -28,6 +28,7 @@ * under the License. */ +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { pick } from '@osd/std'; import { AppCategory } from '../../'; @@ -75,7 +76,7 @@ export interface ChromeNavLink { * A EUI iconType that will be used for the app's icon. This icon * takes precedence over the `icon` property. */ - readonly euiIconType?: string; + readonly euiIconType?: EuiIconType; /** * A URL to an image file used as an icon. Used as a fallback diff --git a/src/core/public/chrome/nav_links/nav_links_service.test.ts b/src/core/public/chrome/nav_links/nav_links_service.test.ts index 3fe2b57676e..62d247a3607 100644 --- a/src/core/public/chrome/nav_links/nav_links_service.test.ts +++ b/src/core/public/chrome/nav_links/nav_links_service.test.ts @@ -32,6 +32,7 @@ import { NavLinksService } from './nav_links_service'; import { take, map, takeLast } from 'rxjs/operators'; import { App } from '../../application'; import { BehaviorSubject } from 'rxjs'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; const availableApps = new Map([ ['app1', { id: 'app1', order: 0, title: 'App 1', icon: 'app1' }], @@ -41,7 +42,7 @@ const availableApps = new Map([ id: 'app2', order: -10, title: 'App 2', - euiIconType: 'canvasApp', + euiIconType: 'canvasApp' as EuiIconType, }, ], ['chromelessApp', { id: 'chromelessApp', order: 20, title: 'Chromless App', chromeless: true }], @@ -200,7 +201,7 @@ describe('NavLinksService', () => { id: 'app2', order: -10, title: 'App 2', - euiIconType: 'canvasApp', + euiIconType: 'canvasApp' as EuiIconType, }) ); const hiddenLinkIds = await start diff --git a/src/core/public/chrome/nav_links/to_nav_link.test.ts b/src/core/public/chrome/nav_links/to_nav_link.test.ts index 279cf6be23e..b89ea0bfdcf 100644 --- a/src/core/public/chrome/nav_links/to_nav_link.test.ts +++ b/src/core/public/chrome/nav_links/to_nav_link.test.ts @@ -32,6 +32,7 @@ import { PublicAppInfo, AppNavLinkStatus, AppStatus } from '../../application'; import { toNavLink } from './to_nav_link'; import { httpServiceMock } from '../../mocks'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; const app = (props: Partial = {}): PublicAppInfo => ({ id: 'some-id', @@ -52,7 +53,7 @@ describe('toNavLink', () => { title: 'title', order: 12, tooltip: 'tooltip', - euiIconType: 'my-icon', + euiIconType: 'my-icon' as EuiIconType, }), basePath ); @@ -62,7 +63,7 @@ describe('toNavLink', () => { title: 'title', order: 12, tooltip: 'tooltip', - euiIconType: 'my-icon', + euiIconType: 'my-icon' as EuiIconType, }) ); }); diff --git a/src/core/types/app_category.ts b/src/core/types/app_category.ts index 79854ce45c0..7e843b6ab55 100644 --- a/src/core/types/app_category.ts +++ b/src/core/types/app_category.ts @@ -9,6 +9,8 @@ * GitHub history for details. */ +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; + /* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with @@ -64,5 +66,5 @@ export interface AppCategory { * If the category is only 1 item, and no icon is defined, will default to the product icon * Defaults to initials if no icon is defined */ - euiIconType?: string; + euiIconType?: EuiIconType; } diff --git a/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx b/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx index a8e4595b2cf..752069ee1fe 100644 --- a/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx +++ b/src/plugins/advanced_settings/public/management_app/mount_management_section.tsx @@ -36,6 +36,7 @@ import { i18n } from '@osd/i18n'; import { I18nProvider } from '@osd/i18n/react'; import { StartServicesAccessor } from 'src/core/public'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { AdvancedSettings } from './advanced_settings'; import { ManagementAppMountParams } from '../../../management/public'; import { ComponentRegistry } from '../types'; @@ -54,7 +55,7 @@ const readOnlyBadge = { tooltip: i18n.translate('advancedSettings.badge.readOnly.tooltip', { defaultMessage: 'Unable to save advanced settings', }), - iconType: 'glasses', + iconType: 'glasses' as EuiIconType, }; export async function mountManagementSection( diff --git a/src/plugins/apm_oss/server/tutorial/envs/on_prem.ts b/src/plugins/apm_oss/server/tutorial/envs/on_prem.ts index 4b135c9385e..bc67c635df2 100644 --- a/src/plugins/apm_oss/server/tutorial/envs/on_prem.ts +++ b/src/plugins/apm_oss/server/tutorial/envs/on_prem.ts @@ -29,6 +29,7 @@ */ import { i18n } from '@osd/i18n'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { INSTRUCTION_VARIANT } from '../../../../../../src/plugins/home/server'; import { createWindowsServerInstructions, @@ -82,7 +83,7 @@ export function onPremInstructions({ defaultMessage: `Please make sure your APM Server is updated to 7.0 or higher. \ You can also migrate your 6.x data with the migration assistant found in OpenSearch Dashboards's management section.`, }), - iconType: 'alert', + iconType: 'alert' as EuiIconType, }, instructionVariants: [ { diff --git a/src/plugins/apm_oss/server/tutorial/index.ts b/src/plugins/apm_oss/server/tutorial/index.ts index 451763ab186..5e67e2b5a44 100644 --- a/src/plugins/apm_oss/server/tutorial/index.ts +++ b/src/plugins/apm_oss/server/tutorial/index.ts @@ -29,6 +29,7 @@ */ import { i18n } from '@osd/i18n'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { onPremInstructions } from './envs/on_prem'; import apmIndexPattern from './index_pattern.json'; import { ArtifactsSchema, TutorialsCategory } from '../../../../../src/plugins/home/server'; @@ -94,7 +95,7 @@ It allows you to monitor the performance of thousands of applications in real ti '{config.docs.base_url}guide/en/apm/get-started/{config.docs.version}/index.html', }, }), - euiIconType: 'apmApp', + euiIconType: 'apmApp' as EuiIconType, artifacts, onPrem: onPremInstructions(indices), previewImagePath: '/plugins/apmOss/assets/apm.png', diff --git a/src/plugins/dashboard/public/application/actions/add_to_library_action.tsx b/src/plugins/dashboard/public/application/actions/add_to_library_action.tsx index c2df06499c0..1418cc65dc5 100644 --- a/src/plugins/dashboard/public/application/actions/add_to_library_action.tsx +++ b/src/plugins/dashboard/public/application/actions/add_to_library_action.tsx @@ -31,6 +31,7 @@ import { i18n } from '@osd/i18n'; import _ from 'lodash'; import uuid from 'uuid'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { ActionByType, IncompatibleActionError } from '../../ui_actions_plugin'; import { ViewMode, PanelState, IEmbeddable } from '../../embeddable_plugin'; import { @@ -63,7 +64,7 @@ export class AddToLibraryAction implements ActionByType }); } - public getIconType({ embeddable }: ClonePanelActionContext) { + public getIconType({ embeddable }: ClonePanelActionContext): EuiIconType { if (!embeddable.getRoot() || !embeddable.getRoot().isContainer) { throw new IncompatibleActionError(); } diff --git a/src/plugins/dashboard/public/application/actions/expand_panel_action.tsx b/src/plugins/dashboard/public/application/actions/expand_panel_action.tsx index 9a8f2af8860..63a69e21b48 100644 --- a/src/plugins/dashboard/public/application/actions/expand_panel_action.tsx +++ b/src/plugins/dashboard/public/application/actions/expand_panel_action.tsx @@ -28,6 +28,7 @@ * under the License. */ +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { i18n } from '@osd/i18n'; import { IEmbeddable } from '../../embeddable_plugin'; import { ActionByType, IncompatibleActionError } from '../../ui_actions_plugin'; @@ -72,7 +73,7 @@ export class ExpandPanelAction implements ActionByType ( { }); } - getIconType() { + getIconType(): EuiIconType { return 'pencil'; } diff --git a/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_action.ts b/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_action.ts index f406c9f25ff..d98ab4c6efd 100644 --- a/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_action.ts +++ b/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_action.ts @@ -32,6 +32,7 @@ import { i18n } from '@osd/i18n'; import { Action, ActionExecutionContext } from 'src/plugins/ui_actions/public'; import { NotificationsStart, OverlayStart } from 'src/core/public'; import { EmbeddableStart } from 'src/plugins/embeddable/public/plugin'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { ViewMode } from '../../../../types'; import { openAddPanelFlyout } from './open_add_panel_flyout'; import { IContainer } from '../../../../containers'; @@ -60,7 +61,7 @@ export class AddPanelAction implements Action { }); } - public getIconType() { + public getIconType(): EuiIconType { return 'plusInCircleFilled'; } diff --git a/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/customize_title/customize_panel_action.ts b/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/customize_title/customize_panel_action.ts index 7eedcc6dbb0..a07695d8ddf 100644 --- a/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/customize_title/customize_panel_action.ts +++ b/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/customize_title/customize_panel_action.ts @@ -30,6 +30,7 @@ import { i18n } from '@osd/i18n'; import { Action } from 'src/plugins/ui_actions/public'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { ViewMode } from '../../../../types'; import { IEmbeddable } from '../../../../embeddables'; @@ -56,7 +57,7 @@ export class CustomizePanelTitleAction implements Action { }); } - public getIconType() { + public getIconType(): EuiIconType { return 'pencil'; } diff --git a/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/inspect_panel_action.ts b/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/inspect_panel_action.ts index d0b3d2316b7..ce1657b7ad7 100644 --- a/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/inspect_panel_action.ts +++ b/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/inspect_panel_action.ts @@ -31,6 +31,7 @@ import { i18n } from '@osd/i18n'; import { Action } from 'src/plugins/ui_actions/public'; import { Start as InspectorStartContract } from 'src/plugins/inspector/public'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { IEmbeddable } from '../../../embeddables'; export const ACTION_INSPECT_PANEL = 'openInspector'; @@ -52,7 +53,7 @@ export class InspectPanelAction implements Action { }); } - public getIconType() { + public getIconType(): EuiIconType { return 'inspect'; } diff --git a/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/remove_panel_action.ts b/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/remove_panel_action.ts index 22419874c81..37bb1ceaa31 100644 --- a/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/remove_panel_action.ts +++ b/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/remove_panel_action.ts @@ -29,6 +29,7 @@ */ import { i18n } from '@osd/i18n'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { Action, IncompatibleActionError } from '../../../ui_actions'; import { ContainerInput, IContainer } from '../../../containers'; import { ViewMode } from '../../../types'; @@ -63,7 +64,7 @@ export class RemovePanelAction implements Action { }); } - public getIconType() { + public getIconType(): EuiIconType { return 'trash'; } diff --git a/src/plugins/index_pattern_management/public/management_app/mount_management_section.tsx b/src/plugins/index_pattern_management/public/management_app/mount_management_section.tsx index fbc00105f94..301469ae570 100644 --- a/src/plugins/index_pattern_management/public/management_app/mount_management_section.tsx +++ b/src/plugins/index_pattern_management/public/management_app/mount_management_section.tsx @@ -36,6 +36,7 @@ import { i18n } from '@osd/i18n'; import { I18nProvider } from '@osd/i18n/react'; import { StartServicesAccessor } from 'src/core/public'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { OpenSearchDashboardsContextProvider } from '../../../opensearch_dashboards_react/public'; import { ManagementAppMountParams } from '../../../management/public'; import { @@ -54,7 +55,7 @@ const readOnlyBadge = { tooltip: i18n.translate('indexPatternManagement.indexPatterns.badge.readOnly.tooltip', { defaultMessage: 'Unable to save index patterns', }), - iconType: 'glasses', + iconType: 'glasses' as EuiIconType, }; export async function mountManagementSection( diff --git a/src/plugins/management/public/plugin.ts b/src/plugins/management/public/plugin.ts index 45e3cbf5064..b50b2dba247 100644 --- a/src/plugins/management/public/plugin.ts +++ b/src/plugins/management/public/plugin.ts @@ -89,7 +89,7 @@ export class ManagementPlugin implements Plugin void; @@ -42,7 +43,7 @@ export interface TopNavMenuData { disableButton?: boolean | (() => boolean); tooltip?: string | (() => string | undefined); emphasize?: boolean; - iconType?: string; + iconType?: EuiIconType; iconSide?: EuiButtonProps['iconSide']; } diff --git a/src/plugins/ui_actions/public/actions/action.ts b/src/plugins/ui_actions/public/actions/action.ts index ba8d01fcdac..b38e2bd4e40 100644 --- a/src/plugins/ui_actions/public/actions/action.ts +++ b/src/plugins/ui_actions/public/actions/action.ts @@ -29,6 +29,7 @@ */ import { UiComponent } from 'src/plugins/opensearch_dashboards_utils/public'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { ActionType, ActionContextMapping, BaseContext } from '../types'; import { Presentable } from '../util/presentable'; import { Trigger } from '../triggers'; @@ -85,7 +86,7 @@ export interface Action /** * Optional EUI icon type that can be displayed along with the title. */ - getIconType(context: ActionExecutionContext): string | undefined; + getIconType(context: ActionExecutionContext): EuiIconType | undefined; /** * Returns a title to be displayed to the user. diff --git a/src/plugins/ui_actions/public/actions/action_internal.ts b/src/plugins/ui_actions/public/actions/action_internal.ts index f071e04c340..fb39a01ed69 100644 --- a/src/plugins/ui_actions/public/actions/action_internal.ts +++ b/src/plugins/ui_actions/public/actions/action_internal.ts @@ -30,6 +30,7 @@ // @ts-ignore import React from 'react'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { Action, ActionContext as Context, ActionDefinition } from './action'; import { Presentable, PresentableGrouping } from '../util/presentable'; import { uiToReactComponent } from '../../../opensearch_dashboards_react/public'; @@ -53,7 +54,7 @@ export class ActionInternal return this.definition.execute(context); } - public getIconType(context: Context): string | undefined { + public getIconType(context: Context): EuiIconType | undefined { if (!this.definition.getIconType) return undefined; return this.definition.getIconType(context); } diff --git a/src/plugins/ui_actions/public/service/ui_actions_service.test.ts b/src/plugins/ui_actions/public/service/ui_actions_service.test.ts index 82194de2489..18c4db4f0aa 100644 --- a/src/plugins/ui_actions/public/service/ui_actions_service.test.ts +++ b/src/plugins/ui_actions/public/service/ui_actions_service.test.ts @@ -46,7 +46,7 @@ const testAction1: Action = { type: 'type1' as ActionType, execute: async () => {}, getDisplayName: () => 'test1', - getIconType: () => '', + getIconType: () => undefined, isCompatible: async () => true, }; @@ -56,7 +56,7 @@ const testAction2: Action = { type: 'type2' as ActionType, execute: async () => {}, getDisplayName: () => 'test2', - getIconType: () => '', + getIconType: () => undefined, isCompatible: async () => true, }; @@ -108,7 +108,7 @@ describe('UiActionsService', () => { id: 'test', execute: async () => {}, getDisplayName: () => 'test', - getIconType: () => '', + getIconType: () => undefined, isCompatible: async () => true, type: 'test' as ActionType, }); @@ -120,7 +120,7 @@ describe('UiActionsService', () => { id: 'test', execute: async () => {}, getDisplayName: () => 'test', - getIconType: () => '', + getIconType: () => undefined, isCompatible: async () => true, type: 'test' as ActionType, }); @@ -137,7 +137,7 @@ describe('UiActionsService', () => { type: 'type1' as ActionType, execute: async () => {}, getDisplayName: () => 'test', - getIconType: () => '', + getIconType: () => undefined, isCompatible: async () => true, }; const action2: Action = { @@ -146,7 +146,7 @@ describe('UiActionsService', () => { type: 'type2' as ActionType, execute: async () => {}, getDisplayName: () => 'test', - getIconType: () => '', + getIconType: () => undefined, isCompatible: async () => true, }; diff --git a/src/plugins/ui_actions/public/util/presentable.ts b/src/plugins/ui_actions/public/util/presentable.ts index ef726333e15..428644e1c2c 100644 --- a/src/plugins/ui_actions/public/util/presentable.ts +++ b/src/plugins/ui_actions/public/util/presentable.ts @@ -28,6 +28,7 @@ * under the License. */ +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { UiComponent } from 'src/plugins/opensearch_dashboards_utils/public'; /** @@ -54,7 +55,7 @@ export interface Presentable { /** * Optional EUI icon type that can be displayed along with the title. */ - getIconType(context: Context): string | undefined; + getIconType(context: Context): EuiIconType | undefined; /** * Returns a title to be displayed to the user. diff --git a/src/plugins/visualize/public/application/utils/get_top_nav_config.tsx b/src/plugins/visualize/public/application/utils/get_top_nav_config.tsx index d0e79b85d7c..d0d98387229 100644 --- a/src/plugins/visualize/public/application/utils/get_top_nav_config.tsx +++ b/src/plugins/visualize/public/application/utils/get_top_nav_config.tsx @@ -33,6 +33,7 @@ import { i18n } from '@osd/i18n'; import { TopNavMenuData } from 'src/plugins/navigation/public'; import { AppMountParameters } from 'opensearch-dashboards/public'; +import { EuiIconType } from '@elastic/eui/src/components/icon/icon'; import { VISUALIZE_EMBEDDABLE_TYPE, VisualizeInput } from '../../../../visualizations/public'; import { showSaveModal, @@ -274,7 +275,7 @@ export const getTopNavConfig = ( ? [ { id: 'save', - iconType: savedVis?.id && originatingApp ? undefined : 'save', + iconType: savedVis?.id && originatingApp ? undefined : ('save' as EuiIconType), label: savedVis?.id && originatingApp ? i18n.translate('visualize.topNavMenu.saveVisualizationAsButtonLabel', { @@ -366,7 +367,7 @@ export const getTopNavConfig = ( defaultMessage: 'Save and return', }), emphasize: true, - iconType: 'checkInCircleFilled', + iconType: 'checkInCircleFilled' as EuiIconType, description: i18n.translate( 'visualize.topNavMenu.saveAndReturnVisualizationButtonAriaLabel', {