diff --git a/src/platform/plugins/private/links/public/components/dashboard_link/dashboard_link_component.tsx b/src/platform/plugins/private/links/public/components/dashboard_link/dashboard_link_component.tsx index 4f581fbafc949..eab6f86c1807a 100644 --- a/src/platform/plugins/private/links/public/components/dashboard_link/dashboard_link_component.tsx +++ b/src/platform/plugins/private/links/public/components/dashboard_link/dashboard_link_component.tsx @@ -13,7 +13,7 @@ import React, { useMemo } from 'react'; import { EuiListGroupItem, UseEuiTheme } from '@elastic/eui'; import { css } from '@emotion/react'; import { METRIC_TYPE } from '@kbn/analytics'; -import { DashboardLocatorParams } from '@kbn/dashboard-plugin/public'; +import type { DashboardLocatorParams } from '@kbn/dashboard-plugin/common'; import { Query, isFilterPinned } from '@kbn/es-query'; import { useBatchedPublishingSubjects } from '@kbn/presentation-publishing'; import { diff --git a/src/platform/plugins/private/links/public/types.ts b/src/platform/plugins/private/links/public/types.ts index aaa5e34faa236..98e6f5e0d17b4 100644 --- a/src/platform/plugins/private/links/public/types.ts +++ b/src/platform/plugins/private/links/public/types.ts @@ -21,7 +21,8 @@ import { DefaultEmbeddableApi } from '@kbn/embeddable-plugin/public'; import { DynamicActionsSerializedState } from '@kbn/embeddable-enhanced-plugin/public/plugin'; import { HasSerializedChildState, PresentationContainer } from '@kbn/presentation-containers'; import { LocatorPublic } from '@kbn/share-plugin/common'; -import { DashboardLocatorParams, DASHBOARD_API_TYPE } from '@kbn/dashboard-plugin/public'; +import { DASHBOARD_API_TYPE } from '@kbn/dashboard-plugin/public'; +import type { DashboardLocatorParams } from '@kbn/dashboard-plugin/common'; import type { DashboardAttributes } from '@kbn/dashboard-plugin/server'; import { CONTENT_ID } from '../common'; diff --git a/src/platform/plugins/shared/dashboard/common/constants.ts b/src/platform/plugins/shared/dashboard/common/constants.ts new file mode 100644 index 0000000000000..1b5b5695e02ed --- /dev/null +++ b/src/platform/plugins/shared/dashboard/common/constants.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +export const LANDING_PAGE_PATH = '/list'; +export const DASHBOARD_APP_ID = 'dashboards'; +export const LEGACY_DASHBOARD_APP_ID = 'dashboard'; +export const SEARCH_SESSION_ID = 'searchSessionId'; +export const UI_SETTINGS = { + ENABLE_LABS_UI: 'labs:dashboard:enable_ui', +}; diff --git a/src/platform/plugins/shared/dashboard/common/index.ts b/src/platform/plugins/shared/dashboard/common/index.ts index cbc0d6200b990..dae523f3f0fd1 100644 --- a/src/platform/plugins/shared/dashboard/common/index.ts +++ b/src/platform/plugins/shared/dashboard/common/index.ts @@ -7,29 +7,13 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export type { DashboardCapabilities } from './types'; +export type { + DashboardCapabilities, + DashboardLocatorParams, + DashboardSettings, + DashboardState, +} from './types'; export type { DashboardPanelMap, DashboardPanelState } from './dashboard_container/types'; -export { - type InjectExtractDeps, - injectReferences, - extractReferences, -} from './dashboard_saved_object/persistable_state/dashboard_saved_object_references'; - -export { - createInject, - createExtract, -} from './dashboard_container/persistable_state/dashboard_container_references'; - -export { prefixReferencesFromPanel } from './dashboard_container/persistable_state/dashboard_container_references'; - -export { - convertPanelsArrayToPanelMap, - convertPanelMapToPanelsArray, - generateNewPanelIds, -} from './lib/dashboard_panel_converters'; - -export const UI_SETTINGS = { - ENABLE_LABS_UI: 'labs:dashboard:enable_ui', -}; +export { type InjectExtractDeps } from './dashboard_saved_object/persistable_state/dashboard_saved_object_references'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/locator/get_dashboard_locator_params.ts b/src/platform/plugins/shared/dashboard/common/locator/get_dashboard_locator_params.ts similarity index 96% rename from src/platform/plugins/shared/dashboard/public/dashboard_app/locator/get_dashboard_locator_params.ts rename to src/platform/plugins/shared/dashboard/common/locator/get_dashboard_locator_params.ts index 8441265e71853..01a56697b8eda 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_app/locator/get_dashboard_locator_params.ts +++ b/src/platform/plugins/shared/dashboard/common/locator/get_dashboard_locator_params.ts @@ -10,7 +10,7 @@ import { isFilterPinned, type Query } from '@kbn/es-query'; import type { HasParentApi, PublishesUnifiedSearch } from '@kbn/presentation-publishing'; import type { DashboardDrilldownOptions } from '@kbn/presentation-util-plugin/public'; -import { DashboardLocatorParams } from '../../dashboard_api/types'; +import type { DashboardLocatorParams } from '..'; export const getDashboardLocatorParamsFromEmbeddable = ( api: Partial>>, diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/locator/load_dashboard_history_location_state.ts b/src/platform/plugins/shared/dashboard/common/locator/load_dashboard_history_location_state.ts similarity index 83% rename from src/platform/plugins/shared/dashboard/public/dashboard_app/locator/load_dashboard_history_location_state.ts rename to src/platform/plugins/shared/dashboard/common/locator/load_dashboard_history_location_state.ts index 0d58bbcceb5f9..c9980386bf91b 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_app/locator/load_dashboard_history_location_state.ts +++ b/src/platform/plugins/shared/dashboard/common/locator/load_dashboard_history_location_state.ts @@ -7,11 +7,11 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { ScopedHistory } from '@kbn/core-application-browser'; +import type { ScopedHistory } from '@kbn/core-application-browser'; import { ForwardedDashboardState } from './locator'; -import { convertPanelsArrayToPanelMap } from '../../../common'; -import { DashboardState } from '../../dashboard_api/types'; +import type { DashboardState } from '../types'; +import { convertPanelsArrayToPanelMap } from '../lib/dashboard_panel_converters'; export const loadDashboardHistoryLocationState = ( getScopedHistory: () => ScopedHistory diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/locator/locator.test.ts b/src/platform/plugins/shared/dashboard/common/locator/locator.test.ts similarity index 100% rename from src/platform/plugins/shared/dashboard/public/dashboard_app/locator/locator.test.ts rename to src/platform/plugins/shared/dashboard/common/locator/locator.test.ts diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/locator/locator.ts b/src/platform/plugins/shared/dashboard/common/locator/locator.ts similarity index 94% rename from src/platform/plugins/shared/dashboard/public/dashboard_app/locator/locator.ts rename to src/platform/plugins/shared/dashboard/common/locator/locator.ts index 2233cca93b82d..c9634544bdedc 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_app/locator/locator.ts +++ b/src/platform/plugins/shared/dashboard/common/locator/locator.ts @@ -11,13 +11,13 @@ import type { SerializableRecord } from '@kbn/utility-types'; import { flow } from 'lodash'; import type { Filter } from '@kbn/es-query'; -import { setStateToKbnUrl } from '@kbn/kibana-utils-plugin/public'; +import { setStateToKbnUrl } from '@kbn/kibana-utils-plugin/common'; import type { LocatorDefinition, LocatorPublic } from '@kbn/share-plugin/public'; import type { GlobalQueryStateFromUrl } from '@kbn/data-plugin/public'; import { DASHBOARD_APP_LOCATOR } from '@kbn/deeplinks-analytics'; -import { DASHBOARD_APP_ID, SEARCH_SESSION_ID } from '../../plugin_constants'; -import { DashboardLocatorParams } from '../../dashboard_api/types'; +import { DashboardLocatorParams } from '../types'; +import { DASHBOARD_APP_ID, SEARCH_SESSION_ID } from '../constants'; /** * Useful for ensuring that we don't pass any non-serializable values to history.push (for example, functions). diff --git a/src/platform/plugins/shared/dashboard/common/types.ts b/src/platform/plugins/shared/dashboard/common/types.ts index b1bc9a244da16..f7fe3c11a8884 100644 --- a/src/platform/plugins/shared/dashboard/common/types.ts +++ b/src/platform/plugins/shared/dashboard/common/types.ts @@ -8,8 +8,21 @@ */ import type { Reference } from '@kbn/content-management-utils'; +import type { SerializableRecord } from '@kbn/utility-types'; +import type { Filter, Query, TimeRange } from '@kbn/es-query'; +import type { ViewMode } from '@kbn/presentation-publishing'; +import type { RefreshInterval } from '@kbn/data-plugin/public'; +import type { + ControlGroupRuntimeState, + ControlGroupSerializedState, +} from '@kbn/controls-plugin/common'; + import type { DashboardPanelMap } from './dashboard_container/types'; -import type { DashboardAttributes } from '../server/content_management'; +import type { + DashboardAttributes, + DashboardOptions, + DashboardPanel, +} from '../server/content_management'; export interface DashboardCapabilities { showWriteControls: boolean; @@ -31,3 +44,77 @@ export interface DashboardAttributesAndReferences { attributes: DashboardAttributes; references: Reference[]; } + +export type DashboardSettings = DashboardOptions & { + description?: DashboardAttributes['description']; + tags: string[]; + timeRestore: DashboardAttributes['timeRestore']; + title: DashboardAttributes['description']; +}; + +export interface DashboardState extends DashboardSettings { + query: Query; + filters: Filter[]; + timeRange?: TimeRange; + refreshInterval?: RefreshInterval; + viewMode: ViewMode; + panels: DashboardPanelMap; + + /** + * Temporary. Currently Dashboards are in charge of providing references to all of their children. + * Eventually this will be removed in favour of the Dashboard injecting references serverside. + */ + references?: Reference[]; + + /** + * Serialized control group state. + * Contains state loaded from dashboard saved object + */ + controlGroupInput?: ControlGroupSerializedState | undefined; + /** + * Runtime control group state. + * Contains state passed from dashboard locator + * Use runtime state when building input for portable dashboards + */ + controlGroupState?: Partial; +} + +export type DashboardLocatorParams = Partial< + Omit +> & { + /** + * If given, the dashboard saved object with this id will be loaded. If not given, + * a new, unsaved dashboard will be loaded up. + */ + dashboardId?: string; + + /** + * If not given, will use the uiSettings configuration for `storeInSessionStorage`. useHash determines + * whether to hash the data in the url to avoid url length issues. + */ + useHash?: boolean; + + /** + * When `true` filters from saved filters from destination dashboard as merged with applied filters + * When `false` applied filters take precedence and override saved filters + * + * true is default + */ + preserveSavedFilters?: boolean; + + /** + * Search search session ID to restore. + * (Background search) + */ + searchSessionId?: string; + + /** + * List of dashboard panels + */ + panels?: Array; // used SerializableRecord here to force the GridData type to be read as serializable + + /** + * Control group changes + */ + controlGroupState?: Partial & SerializableRecord; // used SerializableRecord here to force the GridData type to be read as serializable +}; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/default_dashboard_state.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/default_dashboard_state.ts index ceb62d630ed68..88ab9681eb35b 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/default_dashboard_state.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/default_dashboard_state.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { DashboardState } from './types'; +import { DashboardState } from '../../common'; export const DEFAULT_DASHBOARD_STATE: DashboardState = { viewMode: 'view', diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/get_dashboard_api.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/get_dashboard_api.ts index 9ce395da303e1..37636a6033fb8 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/get_dashboard_api.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/get_dashboard_api.ts @@ -18,7 +18,7 @@ import { getReferencesForControls, getReferencesForPanelId, } from '../../common/dashboard_container/persistable_state/dashboard_container_references'; -import { DASHBOARD_APP_ID } from '../plugin_constants'; +import { DASHBOARD_APP_ID } from '../../common/constants'; import { PANELS_CONTROL_GROUP_KEY } from '../services/dashboard_backup_service'; import { getDashboardContentManagementService } from '../services/dashboard_content_management_service'; import { LoadDashboardReturn } from '../services/dashboard_content_management_service/types'; @@ -38,9 +38,9 @@ import { DashboardApi, DashboardCreationOptions, DashboardInternalApi, - DashboardState, UnsavedPanelState, } from './types'; +import type { DashboardState } from '../../common/types'; import { initializeUnifiedSearchManager } from './unified_search_manager'; import { initializeUnsavedChangesManager } from './unsaved_changes_manager'; import { initializeViewModeManager } from './view_mode_manager'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/get_serialized_state.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/get_serialized_state.ts index 854e3fb6717e1..acc80d6de8010 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/get_serialized_state.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/get_serialized_state.ts @@ -12,7 +12,11 @@ import moment, { Moment } from 'moment'; import { RefreshInterval } from '@kbn/data-plugin/public'; import type { Reference } from '@kbn/content-management-utils'; -import { convertPanelMapToPanelsArray, extractReferences, generateNewPanelIds } from '../../common'; +import { + convertPanelMapToPanelsArray, + generateNewPanelIds, +} from '../../common/lib/dashboard_panel_converters'; +import { extractReferences } from '../../common/dashboard_saved_object/persistable_state/dashboard_saved_object_references'; import type { DashboardAttributes } from '../../server'; import { convertDashboardVersionToNumber } from '../services/dashboard_content_management_service/lib/dashboard_versioning'; @@ -21,7 +25,7 @@ import { embeddableService, savedObjectsTaggingService, } from '../services/kibana_services'; -import { DashboardState } from './types'; +import type { DashboardState } from '../../common'; import { LATEST_VERSION } from '../../common/content_management'; import { convertNumberToDashboardVersion } from '../services/dashboard_content_management_service/lib/dashboard_versioning'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/load_dashboard_api.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/load_dashboard_api.ts index ff4ddba50139b..24553eaf698b2 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/load_dashboard_api.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/load_dashboard_api.ts @@ -8,9 +8,9 @@ */ import { ContentInsightsClient } from '@kbn/content-management-content-insights-public'; -import { DashboardPanelMap } from '../../common'; +import { DashboardPanelMap, DashboardState } from '../../common'; import { getDashboardContentManagementService } from '../services/dashboard_content_management_service'; -import { DashboardCreationOptions, DashboardState, UnsavedPanelState } from './types'; +import { DashboardCreationOptions, UnsavedPanelState } from './types'; import { getDashboardApi } from './get_dashboard_api'; import { startQueryPerformanceTracking } from './performance/query_performance_tracking'; import { coreServices } from '../services/kibana_services'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/panels_manager.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/panels_manager.ts index f060c5e3fdfe0..54528907415bf 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/panels_manager.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/panels_manager.ts @@ -29,14 +29,15 @@ import { } from '@kbn/presentation-publishing'; import { i18n } from '@kbn/i18n'; import { coreServices, usageCollectionService } from '../services/kibana_services'; -import { DashboardPanelMap, DashboardPanelState, prefixReferencesFromPanel } from '../../common'; +import { prefixReferencesFromPanel } from '../../common/dashboard_container/persistable_state/dashboard_container_references'; +import type { DashboardPanelMap, DashboardPanelState, DashboardState } from '../../common'; import type { initializeTrackPanel } from './track_panel'; import { getPanelAddedSuccessString } from '../dashboard_app/_dashboard_app_strings'; import { runPanelPlacementStrategy } from '../panel_placement/place_new_panel_strategies'; import { DEFAULT_PANEL_HEIGHT, DEFAULT_PANEL_WIDTH } from '../../common/content_management'; import { DASHBOARD_UI_METRIC_ID } from '../utils/telemetry_constants'; import { getDashboardPanelPlacementSetting } from '../panel_placement/panel_placement_registry'; -import { DashboardState, UnsavedPanelState } from './types'; +import { UnsavedPanelState } from './types'; import { arePanelLayoutsEqual } from './are_panel_layouts_equal'; import { dashboardClonePanelActionStrings } from '../dashboard_actions/_dashboard_actions_strings'; import { placeClonePanel } from '../panel_placement/place_clone_panel_strategy'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/save_modal/open_save_modal.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_api/save_modal/open_save_modal.tsx index db369168a22ae..4fb6f6276158a 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/save_modal/open_save_modal.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/save_modal/open_save_modal.tsx @@ -21,7 +21,7 @@ import { savedObjectsTaggingService, } from '../../services/kibana_services'; import { getDashboardContentManagementService } from '../../services/dashboard_content_management_service'; -import { DashboardState } from '../types'; +import { DashboardState } from '../../../common'; import { DASHBOARD_CONTENT_ID, SAVED_OBJECT_POST_TIME } from '../../utils/telemetry_constants'; import { extractTitleAndCount } from '../../utils/extract_title_and_count'; import { DashboardSaveModal } from './save_modal'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/settings_manager.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_api/settings_manager.tsx index 5d268cdce1726..32ac316ae1102 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/settings_manager.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/settings_manager.tsx @@ -10,7 +10,7 @@ import fastIsEqual from 'fast-deep-equal'; import { StateComparators, initializeTitleManager } from '@kbn/presentation-publishing'; import { BehaviorSubject } from 'rxjs'; -import { DashboardSettings, DashboardState } from './types'; +import { DashboardSettings, DashboardState } from '../../common'; import { DEFAULT_DASHBOARD_STATE } from './default_dashboard_state'; export function initializeSettingsManager(initialState?: DashboardState) { diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/types.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/types.ts index 9557cb970a934..ac2b417ada8ae 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/types.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/types.ts @@ -8,12 +8,8 @@ */ import type { Reference } from '@kbn/content-management-utils'; -import { - ControlGroupApi, - ControlGroupRuntimeState, - ControlGroupSerializedState, -} from '@kbn/controls-plugin/public'; -import { RefreshInterval, SearchSessionInfoProvider } from '@kbn/data-plugin/public'; +import { ControlGroupApi, ControlGroupSerializedState } from '@kbn/controls-plugin/public'; +import { SearchSessionInfoProvider } from '@kbn/data-plugin/public'; import type { DefaultEmbeddableApi, EmbeddablePackageState } from '@kbn/embeddable-plugin/public'; import { Filter, Query, TimeRange } from '@kbn/es-query'; import { PublishesESQLVariables } from '@kbn/esql-types'; @@ -44,16 +40,19 @@ import { PublishesViewMode, PublishesWritableViewMode, PublishingSubject, - ViewMode, } from '@kbn/presentation-publishing'; import { PublishesReload } from '@kbn/presentation-publishing/interfaces/fetch/publishes_reload'; import { PublishesSearchSession } from '@kbn/presentation-publishing/interfaces/fetch/publishes_search_session'; import { LocatorPublic } from '@kbn/share-plugin/common'; -import { SerializableRecord } from '@kbn/utility-types'; import { Observable, Subject } from 'rxjs'; -import { DashboardPanelMap, DashboardPanelState } from '../../common'; -import type { DashboardAttributes, DashboardOptions } from '../../server/content_management'; -import type { DashboardPanel } from '../../server/content_management'; +import { + DashboardLocatorParams, + DashboardPanelMap, + DashboardPanelState, + DashboardSettings, + DashboardState, +} from '../../common'; +import type { DashboardAttributes } from '../../server/content_management'; import { LoadDashboardReturn, SaveDashboardReturn, @@ -88,80 +87,6 @@ export interface DashboardCreationOptions { getEmbeddableAppContext?: (dashboardId?: string) => EmbeddableAppContext; } -export type DashboardSettings = DashboardOptions & { - description?: DashboardAttributes['description']; - tags: string[]; - timeRestore: DashboardAttributes['timeRestore']; - title: DashboardAttributes['description']; -}; - -export interface DashboardState extends DashboardSettings { - query: Query; - filters: Filter[]; - timeRange?: TimeRange; - refreshInterval?: RefreshInterval; - viewMode: ViewMode; - panels: DashboardPanelMap; - - /** - * Temporary. Currently Dashboards are in charge of providing references to all of their children. - * Eventually this will be removed in favour of the Dashboard injecting references serverside. - */ - references?: Reference[]; - - /** - * Serialized control group state. - * Contains state loaded from dashboard saved object - */ - controlGroupInput?: ControlGroupSerializedState | undefined; - /** - * Runtime control group state. - * Contains state passed from dashboard locator - * Use runtime state when building input for portable dashboards - */ - controlGroupState?: Partial; -} - -export type DashboardLocatorParams = Partial< - Omit -> & { - /** - * If given, the dashboard saved object with this id will be loaded. If not given, - * a new, unsaved dashboard will be loaded up. - */ - dashboardId?: string; - - /** - * If not given, will use the uiSettings configuration for `storeInSessionStorage`. useHash determines - * whether to hash the data in the url to avoid url length issues. - */ - useHash?: boolean; - - /** - * When `true` filters from saved filters from destination dashboard as merged with applied filters - * When `false` applied filters take precedence and override saved filters - * - * true is default - */ - preserveSavedFilters?: boolean; - - /** - * Search search session ID to restore. - * (Background search) - */ - searchSessionId?: string; - - /** - * List of dashboard panels - */ - panels?: Array; // used SerializableRecord here to force the GridData type to be read as serializable - - /** - * Control group changes - */ - controlGroupState?: Partial & SerializableRecord; // used SerializableRecord here to force the GridData type to be read as serializable -}; - export interface UnsavedPanelState { [key: string]: object | undefined; } diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/unified_search_manager.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/unified_search_manager.ts index 92ad14f34b805..b289488956494 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/unified_search_manager.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/unified_search_manager.ts @@ -47,7 +47,8 @@ import { dataService } from '../services/kibana_services'; import { cleanFiltersForSerialize } from '../utils/clean_filters_for_serialize'; import { GLOBAL_STATE_STORAGE_KEY } from '../utils/urls'; import { DEFAULT_DASHBOARD_STATE } from './default_dashboard_state'; -import { DashboardCreationOptions, DashboardState } from './types'; +import { DashboardCreationOptions } from './types'; +import { DashboardState } from '../../common'; export function initializeUnifiedSearchManager( initialState: DashboardState, diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/unsaved_changes_manager.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/unsaved_changes_manager.ts index 4d93836976b8a..ab743747f0336 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/unsaved_changes_manager.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/unsaved_changes_manager.ts @@ -24,7 +24,8 @@ import { } from '../services/dashboard_backup_service'; import { initializePanelsManager } from './panels_manager'; import { initializeSettingsManager } from './settings_manager'; -import { DashboardCreationOptions, DashboardState } from './types'; +import { DashboardCreationOptions } from './types'; +import { DashboardState } from '../../common'; import { initializeUnifiedSearchManager } from './unified_search_manager'; import { initializeViewModeManager } from './view_mode_manager'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_api/view_mode_manager.ts b/src/platform/plugins/shared/dashboard/public/dashboard_api/view_mode_manager.ts index 24c0a0a6ba75a..658ff6face177 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_api/view_mode_manager.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_api/view_mode_manager.ts @@ -13,7 +13,7 @@ import { BehaviorSubject } from 'rxjs'; import { LoadDashboardReturn } from '../services/dashboard_content_management_service/types'; import { getDashboardBackupService } from '../services/dashboard_backup_service'; import { getDashboardCapabilities } from '../utils/get_dashboard_capabilities'; -import { DashboardState } from './types'; +import { DashboardState } from '../../common'; export function initializeViewModeManager( incomingEmbeddable?: EmbeddablePackageState, diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/dashboard_app.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_app/dashboard_app.tsx index 82fe3f7690ab1..2eded27427fc5 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_app/dashboard_app.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_app/dashboard_app.tsx @@ -18,7 +18,7 @@ import { useExecutionContext } from '@kbn/kibana-react-plugin/public'; import { createKbnUrlStateStorage, withNotifyOnErrors } from '@kbn/kibana-utils-plugin/public'; import { ViewMode } from '@kbn/presentation-publishing'; import { DashboardApi, DashboardCreationOptions } from '..'; -import { DASHBOARD_APP_ID } from '../plugin_constants'; +import { DASHBOARD_APP_ID } from '../../common/constants'; import { DashboardTopNav } from '../dashboard_top_nav'; import { coreServices, @@ -30,7 +30,7 @@ import { import { useDashboardMountContext } from './hooks/dashboard_mount_context'; import { useDashboardOutcomeValidation } from './hooks/use_dashboard_outcome_validation'; import { useObservabilityAIAssistantContext } from './hooks/use_observability_ai_assistant_context'; -import { loadDashboardHistoryLocationState } from './locator/load_dashboard_history_location_state'; +import { loadDashboardHistoryLocationState } from '../../common/locator/load_dashboard_history_location_state'; import { DashboardAppNoDataPage, isDashboardAppInNoDataState, diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/dashboard_router.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_app/dashboard_router.tsx index 885f7ee1dd14e..a17fbe3e1908c 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_app/dashboard_router.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_app/dashboard_router.tsx @@ -18,7 +18,7 @@ import React from 'react'; import { render, unmountComponentAtNode } from 'react-dom'; import { HashRouter, Redirect, RouteComponentProps } from 'react-router-dom'; -import { DASHBOARD_APP_ID, LANDING_PAGE_PATH } from '../plugin_constants'; +import { DASHBOARD_APP_ID, LANDING_PAGE_PATH } from '../../common/constants'; import { RedirectToProps } from './types'; import { coreServices, dataService, embeddableService } from '../services/kibana_services'; import { getDashboardCapabilities } from '../utils/get_dashboard_capabilities'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx index 072d7263aab92..e2195a2202466 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx @@ -15,7 +15,7 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { toMountPoint } from '@kbn/react-kibana-mount'; -import { LANDING_PAGE_PATH } from '../../plugin_constants'; +import { LANDING_PAGE_PATH } from '../../../common/constants'; import { coreServices, urlForwardingService } from '../../services/kibana_services'; import { useDashboardMountContext } from '../hooks/dashboard_mount_context'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/listing_page/get_dashboard_list_item_link.ts b/src/platform/plugins/shared/dashboard/public/dashboard_app/listing_page/get_dashboard_list_item_link.ts index 6ae30796f45a3..a85273b91b0e2 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_app/listing_page/get_dashboard_list_item_link.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_app/listing_page/get_dashboard_list_item_link.ts @@ -10,7 +10,7 @@ import type { QueryState } from '@kbn/data-plugin/public'; import { IKbnUrlStateStorage, setStateToKbnUrl } from '@kbn/kibana-utils-plugin/public'; -import { DASHBOARD_APP_ID } from '../../plugin_constants'; +import { DASHBOARD_APP_ID } from '../../../common/constants'; import { coreServices } from '../../services/kibana_services'; import { GLOBAL_STATE_STORAGE_KEY, createDashboardEditUrl } from '../../utils/urls'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.test.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.test.tsx index f2e757192d6f4..f4cf0c77e5308 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.test.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.test.tsx @@ -8,12 +8,12 @@ */ import { Capabilities } from '@kbn/core/public'; -import { convertPanelMapToPanelsArray } from '../../../../common'; +import { convertPanelMapToPanelsArray } from '../../../../common/lib/dashboard_panel_converters'; import { shareService } from '../../../services/kibana_services'; import { showPublicUrlSwitch, ShowShareModal, ShowShareModalProps } from './show_share_modal'; import { getDashboardBackupService } from '../../../services/dashboard_backup_service'; -import { DashboardLocatorParams, DashboardState } from '../../../dashboard_api/types'; +import { DashboardLocatorParams, DashboardState } from '../../../../common/types'; describe('showPublicUrlSwitch', () => { test('returns false if "dashboard_v2" app is not available', () => { diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.tsx index 0e5cb3fecc44d..6b25f7bc61aff 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/share/show_share_modal.tsx @@ -19,7 +19,8 @@ import { i18n } from '@kbn/i18n'; import { getStateFromKbnUrl, setStateToKbnUrl, unhashUrl } from '@kbn/kibana-utils-plugin/public'; import { FormattedMessage } from '@kbn/i18n-react'; -import { convertPanelMapToPanelsArray, DashboardPanelMap } from '../../../../common'; +import { convertPanelMapToPanelsArray } from '../../../../common/lib/dashboard_panel_converters'; +import { DashboardPanelMap } from '../../../../common'; import { getDashboardBackupService, PANELS_CONTROL_GROUP_KEY, @@ -28,7 +29,7 @@ import { coreServices, dataService, shareService } from '../../../services/kiban import { getDashboardCapabilities } from '../../../utils/get_dashboard_capabilities'; import { shareModalStrings } from '../../_dashboard_app_strings'; import { dashboardUrlParams } from '../../dashboard_router'; -import { DashboardLocatorParams } from '../../../dashboard_api/types'; +import { DashboardLocatorParams } from '../../../../common'; const showFilterBarId = 'showFilterBar'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/use_dashboard_menu_items.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/use_dashboard_menu_items.tsx index 0ddc8614db318..a2bb8c32636c2 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/use_dashboard_menu_items.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_app/top_nav/use_dashboard_menu_items.tsx @@ -13,7 +13,7 @@ import type { TopNavMenuData } from '@kbn/navigation-plugin/public'; import useMountedState from 'react-use/lib/useMountedState'; import { useBatchedPublishingSubjects } from '@kbn/presentation-publishing'; -import { UI_SETTINGS } from '../../../common'; +import { UI_SETTINGS } from '../../../common/constants'; import { useDashboardApi } from '../../dashboard_api/use_dashboard_api'; import { openSettingsFlyout } from '../../dashboard_renderer/settings/open_settings_flyout'; import { confirmDiscardUnsavedChanges } from '../../dashboard_listing/confirm_overlays'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/url/search_sessions_integration.ts b/src/platform/plugins/shared/dashboard/public/dashboard_app/url/search_sessions_integration.ts index 1967646be5c7b..7f0d8853f9b0e 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_app/url/search_sessions_integration.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_app/url/search_sessions_integration.ts @@ -19,10 +19,11 @@ import { replaceUrlHashQuery } from '@kbn/kibana-utils-plugin/common'; import type { Query } from '@kbn/es-query'; import { SearchSessionInfoProvider } from '@kbn/data-plugin/public'; import { DASHBOARD_APP_LOCATOR } from '@kbn/deeplinks-analytics'; -import { SEARCH_SESSION_ID } from '../../plugin_constants'; -import { convertPanelMapToPanelsArray } from '../../../common'; +import { SEARCH_SESSION_ID } from '../../../common/constants'; +import { convertPanelMapToPanelsArray } from '../../../common/lib/dashboard_panel_converters'; import { dataService } from '../../services/kibana_services'; -import { DashboardApi, DashboardLocatorParams } from '../../dashboard_api/types'; +import { DashboardApi } from '../../dashboard_api/types'; +import { DashboardLocatorParams } from '../../../common/types'; export const removeSearchSessionIdFromURL = (kbnUrlStateStorage: IKbnUrlStateStorage) => { kbnUrlStateStorage.kbnUrlControls.updateAsync((nextUrl) => { diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_app/url/url_utils.ts b/src/platform/plugins/shared/dashboard/public/dashboard_app/url/url_utils.ts index f69f7b0cb9ba8..b3dfceb5e3d05 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_app/url/url_utils.ts +++ b/src/platform/plugins/shared/dashboard/public/dashboard_app/url/url_utils.ts @@ -15,10 +15,12 @@ import semverSatisfies from 'semver/functions/satisfies'; import { replaceUrlHashQuery } from '@kbn/kibana-utils-plugin/common'; import { IKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; -import { DashboardPanelMap, convertPanelsArrayToPanelMap } from '../../../common'; +import { convertPanelsArrayToPanelMap } from '../../../common/lib/dashboard_panel_converters'; +import type { DashboardState } from '../../../common/types'; +import type { DashboardPanelMap } from '../../../common/dashboard_container/types'; import type { DashboardPanel } from '../../../server/content_management'; import type { SavedDashboardPanel } from '../../../server/dashboard_saved_object'; -import { DashboardApi, DashboardState } from '../../dashboard_api/types'; +import { DashboardApi } from '../../dashboard_api/types'; import { DASHBOARD_STATE_STORAGE_KEY, createDashboardEditUrl } from '../../utils/urls'; import { migrateLegacyQuery } from '../../services/dashboard_content_management_service/lib/load_dashboard_state'; import { coreServices } from '../../services/kibana_services'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing.tsx index f440b35a4610c..f8f08883da9fb 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_listing/dashboard_listing.tsx @@ -16,7 +16,7 @@ import { FormattedRelative, I18nProvider } from '@kbn/i18n-react'; import { useExecutionContext } from '@kbn/kibana-react-plugin/public'; import { QueryClientProvider } from '@tanstack/react-query'; -import { DASHBOARD_APP_ID } from '../plugin_constants'; +import { DASHBOARD_APP_ID } from '../../common/constants'; import { DASHBOARD_CONTENT_ID } from '../utils/telemetry_constants'; import { coreServices, diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_renderer/dashboard_renderer.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_renderer/dashboard_renderer.tsx index 3bc1cf2109f04..c7df84f03083f 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_renderer/dashboard_renderer.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_renderer/dashboard_renderer.tsx @@ -18,7 +18,8 @@ import { useStateFromPublishingSubject } from '@kbn/presentation-publishing'; import { LocatorPublic } from '@kbn/share-plugin/common'; import { ExitFullScreenButtonKibanaProvider } from '@kbn/shared-ux-button-exit-full-screen'; -import { DashboardApi, DashboardInternalApi, DashboardLocatorParams } from '../dashboard_api/types'; +import type { DashboardLocatorParams } from '../../common'; +import { DashboardApi, DashboardInternalApi } from '../dashboard_api/types'; import { coreServices, screenshotModeService } from '../services/kibana_services'; import type { DashboardCreationOptions } from '..'; import { Dashboard404Page } from './dashboard_404'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_renderer/settings/settings_flyout.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_renderer/settings/settings_flyout.tsx index af21f4634e578..2d721e9064f74 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_renderer/settings/settings_flyout.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_renderer/settings/settings_flyout.tsx @@ -31,7 +31,7 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { DashboardSettings } from '../../dashboard_api/types'; +import { DashboardSettings } from '../../../common'; import { useDashboardApi } from '../../dashboard_api/use_dashboard_api'; import { getDashboardContentManagementService } from '../../services/dashboard_content_management_service'; import { savedObjectsTaggingService } from '../../services/kibana_services'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/dashboard_favorite_button.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/dashboard_favorite_button.tsx index 7976cda6228d6..10144ec7e76d3 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/dashboard_favorite_button.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/dashboard_favorite_button.tsx @@ -14,7 +14,7 @@ import { FavoritesContextProvider, } from '@kbn/content-management-favorites-public'; import { QueryClientProvider } from '@tanstack/react-query'; -import { DASHBOARD_APP_ID } from '../plugin_constants'; +import { DASHBOARD_APP_ID } from '../../common/constants'; import { DASHBOARD_CONTENT_ID } from '../utils/telemetry_constants'; import { coreServices, usageCollectionService } from '../services/kibana_services'; import { dashboardQueryClient } from '../services/dashboard_query_client'; diff --git a/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx b/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx index 69e4aed1ecb07..8a467567972ce 100644 --- a/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx +++ b/src/platform/plugins/shared/dashboard/public/dashboard_top_nav/internal_dashboard_top_nav.tsx @@ -28,7 +28,7 @@ import { useBatchedPublishingSubjects } from '@kbn/presentation-publishing'; import { LazyLabsFlyout, withSuspense } from '@kbn/presentation-util-plugin/public'; import { MountPointPortal } from '@kbn/react-kibana-mount'; -import { UI_SETTINGS } from '../../common'; +import { UI_SETTINGS } from '../../common/constants'; import { useDashboardApi } from '../dashboard_api/use_dashboard_api'; import { dashboardManagedBadge, @@ -41,7 +41,7 @@ import { useDashboardMountContext } from '../dashboard_app/hooks/dashboard_mount import { DashboardEditingToolbar } from '../dashboard_app/top_nav/dashboard_editing_toolbar'; import { useDashboardMenuItems } from '../dashboard_app/top_nav/use_dashboard_menu_items'; import { DashboardEmbedSettings, DashboardRedirect } from '../dashboard_app/types'; -import { LEGACY_DASHBOARD_APP_ID } from '../plugin_constants'; +import { LEGACY_DASHBOARD_APP_ID } from '../../common/constants'; import { openSettingsFlyout } from '../dashboard_renderer/settings/open_settings_flyout'; import { SaveDashboardReturn } from '../services/dashboard_content_management_service/types'; import { getDashboardRecentlyAccessedService } from '../services/dashboard_recently_accessed_service'; diff --git a/src/platform/plugins/shared/dashboard/public/index.ts b/src/platform/plugins/shared/dashboard/public/index.ts index 97f2500eda21a..bdbb27fe59460 100644 --- a/src/platform/plugins/shared/dashboard/public/index.ts +++ b/src/platform/plugins/shared/dashboard/public/index.ts @@ -10,17 +10,9 @@ import { PluginInitializerContext } from '@kbn/core/public'; import { DashboardPlugin } from './plugin'; -export { - DASHBOARD_APP_ID, - LEGACY_DASHBOARD_APP_ID, - PanelPlacementStrategy, -} from './plugin_constants'; +export { PanelPlacementStrategy } from './plugin_constants'; export { DASHBOARD_GRID_COLUMN_COUNT } from '../common/content_management'; -export type { - DashboardApi, - DashboardCreationOptions, - DashboardLocatorParams, -} from './dashboard_api/types'; +export type { DashboardApi, DashboardCreationOptions } from './dashboard_api/types'; export { DASHBOARD_API_TYPE } from './dashboard_api/types'; export type { DashboardRendererProps } from './dashboard_renderer/dashboard_renderer'; export { LazyDashboardRenderer as DashboardRenderer } from './dashboard_renderer/lazy_dashboard_renderer'; @@ -29,11 +21,13 @@ export type { DashboardStart } from './plugin'; export { DashboardListingTable } from './dashboard_listing'; export { DashboardTopNav } from './dashboard_top_nav'; export type { RedirectToProps } from './dashboard_app/types'; -export { type DashboardAppLocator, cleanEmptyKeys } from './dashboard_app/locator/locator'; -export { getDashboardLocatorParamsFromEmbeddable } from './dashboard_app/locator/get_dashboard_locator_params'; export { type SearchDashboardsResponse } from './services/dashboard_content_management_service/lib/find_dashboards'; +export { DASHBOARD_APP_ID } from '../common/constants'; +export { cleanEmptyKeys, DashboardAppLocatorDefinition } from '../common/locator/locator'; +export { getDashboardLocatorParamsFromEmbeddable } from '../common/locator/get_dashboard_locator_params'; + export function plugin(initializerContext: PluginInitializerContext) { return new DashboardPlugin(initializerContext); } diff --git a/src/platform/plugins/shared/dashboard/public/mocks.tsx b/src/platform/plugins/shared/dashboard/public/mocks.tsx index 8bc2c197abfe5..ba7d446332aba 100644 --- a/src/platform/plugins/shared/dashboard/public/mocks.tsx +++ b/src/platform/plugins/shared/dashboard/public/mocks.tsx @@ -10,9 +10,9 @@ import { ControlGroupApi } from '@kbn/controls-plugin/public'; import { BehaviorSubject } from 'rxjs'; import { DashboardStart } from './plugin'; -import { DashboardState } from './dashboard_api/types'; +import { DashboardState } from '../common/types'; import { getDashboardApi } from './dashboard_api/get_dashboard_api'; -import { DashboardPanelState } from '../common'; +import { DashboardPanelState } from '../common/dashboard_container/types'; export type Start = jest.Mocked; diff --git a/src/platform/plugins/shared/dashboard/public/plugin.tsx b/src/platform/plugins/shared/dashboard/public/plugin.tsx index e68a28fb9d788..b46d20b92bad8 100644 --- a/src/platform/plugins/shared/dashboard/public/plugin.tsx +++ b/src/platform/plugins/shared/dashboard/public/plugin.tsx @@ -61,14 +61,14 @@ import type { } from '@kbn/usage-collection-plugin/public'; import { CONTENT_ID, LATEST_VERSION } from '../common/content_management'; -import { DashboardAppLocatorDefinition } from './dashboard_app/locator/locator'; +import { DashboardAppLocatorDefinition } from '../common/locator/locator'; import { DashboardMountContextProps } from './dashboard_app/types'; import { DASHBOARD_APP_ID, LANDING_PAGE_PATH, LEGACY_DASHBOARD_APP_ID, SEARCH_SESSION_ID, -} from './plugin_constants'; +} from '../common/constants'; import { GetPanelPlacementSettings, registerDashboardPanelPlacementSetting, diff --git a/src/platform/plugins/shared/dashboard/public/plugin_constants.ts b/src/platform/plugins/shared/dashboard/public/plugin_constants.ts index 935bfef027c99..68a15e79e6b9d 100644 --- a/src/platform/plugins/shared/dashboard/public/plugin_constants.ts +++ b/src/platform/plugins/shared/dashboard/public/plugin_constants.ts @@ -7,12 +7,6 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -export const LANDING_PAGE_PATH = '/list'; - -export const DASHBOARD_APP_ID = 'dashboards'; -export const LEGACY_DASHBOARD_APP_ID = 'dashboard'; -export const SEARCH_SESSION_ID = 'searchSessionId'; - export enum PanelPlacementStrategy { /** Place on the very top of the Dashboard, add the height of this panel to all other panels. */ placeAtTop = 'placeAtTop', diff --git a/src/platform/plugins/shared/dashboard/public/services/dashboard_backup_service.ts b/src/platform/plugins/shared/dashboard/public/services/dashboard_backup_service.ts index d0700b0c6718d..0c489fb5aaeb7 100644 --- a/src/platform/plugins/shared/dashboard/public/services/dashboard_backup_service.ts +++ b/src/platform/plugins/shared/dashboard/public/services/dashboard_backup_service.ts @@ -16,7 +16,8 @@ import { set } from '@kbn/safer-lodash-set'; import { SerializedPanelState, ViewMode } from '@kbn/presentation-publishing'; import { coreServices, spacesService } from './kibana_services'; -import { DashboardState, UnsavedPanelState } from '../dashboard_api/types'; +import { DashboardState } from '../../common'; +import { UnsavedPanelState } from '../dashboard_api/types'; import { DEFAULT_DASHBOARD_STATE } from '../dashboard_api/default_dashboard_state'; export const DASHBOARD_PANELS_UNSAVED_ID = 'unsavedDashboard'; diff --git a/src/platform/plugins/shared/dashboard/public/services/dashboard_content_management_service/lib/load_dashboard_state.ts b/src/platform/plugins/shared/dashboard/public/services/dashboard_content_management_service/lib/load_dashboard_state.ts index 5f7c24a91f358..80fb13563129a 100644 --- a/src/platform/plugins/shared/dashboard/public/services/dashboard_content_management_service/lib/load_dashboard_state.ts +++ b/src/platform/plugins/shared/dashboard/public/services/dashboard_content_management_service/lib/load_dashboard_state.ts @@ -15,7 +15,8 @@ import { SavedObjectNotFound } from '@kbn/kibana-utils-plugin/public'; import { cleanFiltersForSerialize } from '../../../utils/clean_filters_for_serialize'; import { getDashboardContentManagementCache } from '..'; -import { convertPanelsArrayToPanelMap, injectReferences } from '../../../../common'; +import { convertPanelsArrayToPanelMap } from '../../../../common/lib/dashboard_panel_converters'; +import { injectReferences } from '../../../../common/dashboard_saved_object/persistable_state/dashboard_saved_object_references'; import type { DashboardGetIn, DashboardGetOut } from '../../../../server/content_management'; import { DASHBOARD_CONTENT_ID } from '../../../utils/telemetry_constants'; import { DEFAULT_DASHBOARD_STATE } from '../../../dashboard_api/default_dashboard_state'; diff --git a/src/platform/plugins/shared/dashboard/public/services/dashboard_content_management_service/types.ts b/src/platform/plugins/shared/dashboard/public/services/dashboard_content_management_service/types.ts index 1ae9d3fc4ee0a..a29fca108818e 100644 --- a/src/platform/plugins/shared/dashboard/public/services/dashboard_content_management_service/types.ts +++ b/src/platform/plugins/shared/dashboard/public/services/dashboard_content_management_service/types.ts @@ -18,7 +18,7 @@ import { SearchDashboardsArgs, SearchDashboardsResponse, } from './lib/find_dashboards'; -import { DashboardState } from '../../dashboard_api/types'; +import { DashboardState } from '../../../common'; import { UpdateDashboardMetaProps } from './lib/update_dashboard_meta'; export interface DashboardContentManagementService { diff --git a/src/platform/plugins/shared/dashboard/public/utils/urls.ts b/src/platform/plugins/shared/dashboard/public/utils/urls.ts index 4e78946ee64ec..3d4c5adb8ccad 100644 --- a/src/platform/plugins/shared/dashboard/public/utils/urls.ts +++ b/src/platform/plugins/shared/dashboard/public/utils/urls.ts @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -import { LANDING_PAGE_PATH } from '../plugin_constants'; +import { LANDING_PAGE_PATH } from '../../common/constants'; export const DASHBOARD_STATE_STORAGE_KEY = '_a'; export const GLOBAL_STATE_STORAGE_KEY = '_g'; diff --git a/src/platform/plugins/shared/dashboard/server/dashboard_container/dashboard_container_embeddable_factory.ts b/src/platform/plugins/shared/dashboard/server/dashboard_container/dashboard_container_embeddable_factory.ts index 90d3422bc73ef..f5eaa9fc42873 100644 --- a/src/platform/plugins/shared/dashboard/server/dashboard_container/dashboard_container_embeddable_factory.ts +++ b/src/platform/plugins/shared/dashboard/server/dashboard_container/dashboard_container_embeddable_factory.ts @@ -9,7 +9,10 @@ import { EmbeddablePersistableStateService } from '@kbn/embeddable-plugin/common'; import { EmbeddableRegistryDefinition } from '@kbn/embeddable-plugin/server'; -import { createExtract, createInject } from '../../common'; +import { + createExtract, + createInject, +} from '../../common/dashboard_container/persistable_state/dashboard_container_references'; export const dashboardPersistableStateServiceFactory = ( persistableStateService: EmbeddablePersistableStateService diff --git a/src/platform/plugins/shared/dashboard/server/dashboard_saved_object/migrations/dashboard_saved_object_migrations.test.ts b/src/platform/plugins/shared/dashboard/server/dashboard_saved_object/migrations/dashboard_saved_object_migrations.test.ts index b5f5b6b20b312..5a66aa101973c 100644 --- a/src/platform/plugins/shared/dashboard/server/dashboard_saved_object/migrations/dashboard_saved_object_migrations.test.ts +++ b/src/platform/plugins/shared/dashboard/server/dashboard_saved_object/migrations/dashboard_saved_object_migrations.test.ts @@ -13,7 +13,10 @@ import { createEmbeddableSetupMock } from '@kbn/embeddable-plugin/server/mocks'; import { SavedObjectReference, SavedObjectUnsanitizedDoc } from '@kbn/core/server'; import { SavedObjectsUtils } from '@kbn/core-saved-objects-utils-server'; -import { createExtract, createInject } from '../../../common'; +import { + createExtract, + createInject, +} from '../../../common/dashboard_container/persistable_state/dashboard_container_references'; import { EmbeddableStateWithType } from '@kbn/embeddable-plugin/common'; import { createDashboardSavedObjectTypeMigrations } from './dashboard_saved_object_migrations'; import { DashboardDoc730ToLatest } from './migrate_to_730/types'; diff --git a/src/platform/plugins/shared/dashboard/server/dashboard_saved_object/migrations/migrate_extract_panel_references.ts b/src/platform/plugins/shared/dashboard/server/dashboard_saved_object/migrations/migrate_extract_panel_references.ts index 4654e763a7460..c6a24285f8cbb 100644 --- a/src/platform/plugins/shared/dashboard/server/dashboard_saved_object/migrations/migrate_extract_panel_references.ts +++ b/src/platform/plugins/shared/dashboard/server/dashboard_saved_object/migrations/migrate_extract_panel_references.ts @@ -9,7 +9,10 @@ import { SavedObject, SavedObjectMigrationFn } from '@kbn/core/server'; -import { extractReferences, injectReferences } from '../../../common'; +import { + extractReferences, + injectReferences, +} from '../../../common/dashboard_saved_object/persistable_state/dashboard_saved_object_references'; import type { DashboardSavedObjectTypeMigrationsDeps } from './dashboard_saved_object_migrations'; import type { DashboardSavedObjectAttributes } from '../schema'; import { itemAttrsToSavedObject, savedObjectToItem } from '../../content_management/latest'; diff --git a/src/platform/plugins/shared/dashboard/server/plugin.ts b/src/platform/plugins/shared/dashboard/server/plugin.ts index 7ad376f8698b5..96b50d3be548f 100644 --- a/src/platform/plugins/shared/dashboard/server/plugin.ts +++ b/src/platform/plugins/shared/dashboard/server/plugin.ts @@ -14,6 +14,7 @@ import { import { EmbeddableSetup } from '@kbn/embeddable-plugin/server'; import { UsageCollectionSetup, UsageCollectionStart } from '@kbn/usage-collection-plugin/server'; import { ContentManagementServerSetup } from '@kbn/content-management-plugin/server'; +import { SharePluginStart } from '@kbn/share-plugin/server'; import { PluginInitializerContext, CoreSetup, CoreStart, Plugin, Logger } from '@kbn/core/server'; import { registerContentInsights } from '@kbn/content-management-content-insights-server'; @@ -32,6 +33,7 @@ import { CONTENT_ID, LATEST_VERSION } from '../common/content_management'; import { registerDashboardUsageCollector } from './usage/register_collector'; import { dashboardPersistableStateServiceFactory } from './dashboard_container/dashboard_container_embeddable_factory'; import { registerAPIRoutes } from './api'; +import { DashboardAppLocatorDefinition } from '../common/locator/locator'; interface SetupDeps { embeddable: EmbeddableSetup; @@ -44,6 +46,7 @@ interface StartDeps { taskManager: TaskManagerStartContract; usageCollection?: UsageCollectionStart; savedObjectsTagging?: SavedObjectTaggingStart; + share?: SharePluginStart; } export class DashboardPlugin @@ -133,6 +136,19 @@ export class DashboardPlugin public start(core: CoreStart, plugins: StartDeps) { this.logger.debug('dashboard: Started'); + if (plugins.share) { + plugins.share.url.locators.create( + new DashboardAppLocatorDefinition({ + useHashedUrl: false, + getDashboardFilterFields: async (dashboardId: string) => { + throw new Error( + 'Locator .getLocation() is not supported on the server with the `preserveSavedFilters` parameter.' + ); + }, + }) + ); + } + if (plugins.taskManager) { scheduleDashboardTelemetry(this.logger, plugins.taskManager) .then(async () => { diff --git a/src/platform/plugins/shared/dashboard/server/ui_settings.ts b/src/platform/plugins/shared/dashboard/server/ui_settings.ts index f37f86443ae74..0ba35bee8ee33 100644 --- a/src/platform/plugins/shared/dashboard/server/ui_settings.ts +++ b/src/platform/plugins/shared/dashboard/server/ui_settings.ts @@ -11,7 +11,7 @@ import { i18n } from '@kbn/i18n'; import { schema } from '@kbn/config-schema'; import { SETTING_CATEGORY } from '@kbn/presentation-util-plugin/server'; import { UiSettingsParams } from '@kbn/core/types'; -import { UI_SETTINGS } from '../common'; +import { UI_SETTINGS } from '../common/constants'; /** * uiSettings definitions for Dashboard. diff --git a/x-pack/platform/plugins/shared/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.test.tsx b/x-pack/platform/plugins/shared/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.test.tsx index 83728cb2ec8bf..cb249c80fc284 100644 --- a/x-pack/platform/plugins/shared/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.test.tsx +++ b/x-pack/platform/plugins/shared/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.test.tsx @@ -9,10 +9,10 @@ import { Filter, RangeFilter, FilterStateStore, Query, TimeRange } from '@kbn/es import { type Context, EmbeddableToDashboardDrilldown } from './embeddable_to_dashboard_drilldown'; import { AbstractDashboardDrilldownConfig as Config } from '../abstract_dashboard_drilldown'; import { savedObjectsServiceMock } from '@kbn/core/public/mocks'; -import { DashboardLocatorParams } from '@kbn/dashboard-plugin/public'; import { StartDependencies } from '../../../plugin'; import { StartServicesGetter } from '@kbn/kibana-utils-plugin/public/core'; -import { DashboardAppLocatorDefinition } from '@kbn/dashboard-plugin/public/dashboard_app/locator/locator'; +import type { DashboardLocatorParams } from '@kbn/dashboard-plugin/common'; +import { DashboardAppLocatorDefinition } from '@kbn/dashboard-plugin/public'; import { BehaviorSubject } from 'rxjs'; describe('.isConfigValid()', () => { diff --git a/x-pack/platform/plugins/shared/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx b/x-pack/platform/plugins/shared/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx index 0eac896c32ec8..99510aea64297 100644 --- a/x-pack/platform/plugins/shared/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx +++ b/x-pack/platform/plugins/shared/dashboard_enhanced/public/services/drilldowns/embeddable_to_dashboard_drilldown/embeddable_to_dashboard_drilldown.tsx @@ -9,9 +9,9 @@ import type { HasParentApi, PublishesUnifiedSearch } from '@kbn/presentation-pub import type { KibanaLocation } from '@kbn/share-plugin/public'; import { cleanEmptyKeys, - DashboardLocatorParams, getDashboardLocatorParamsFromEmbeddable, } from '@kbn/dashboard-plugin/public'; +import type { DashboardLocatorParams } from '@kbn/dashboard-plugin/common'; import { setStateToKbnUrl } from '@kbn/kibana-utils-plugin/public'; import { APPLY_FILTER_TRIGGER } from '@kbn/data-plugin/public'; import { ApplyGlobalFilterActionContext } from '@kbn/unified-search-plugin/public'; diff --git a/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/job_from_dashboard/quick_create_job_base.ts b/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/job_from_dashboard/quick_create_job_base.ts index 5a16659027f2b..6adbf25fa94b2 100644 --- a/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/job_from_dashboard/quick_create_job_base.ts +++ b/x-pack/platform/plugins/shared/ml/public/application/jobs/new_job/job_from_dashboard/quick_create_job_base.ts @@ -11,7 +11,8 @@ import type { IUiSettingsClient } from '@kbn/core/public'; import type { TimefilterContract } from '@kbn/data-plugin/public'; import { firstValueFrom } from 'rxjs'; import type { estypes } from '@elastic/elasticsearch'; -import type { DashboardApi, DashboardLocatorParams } from '@kbn/dashboard-plugin/public'; +import type { DashboardApi } from '@kbn/dashboard-plugin/public'; +import type { DashboardLocatorParams } from '@kbn/dashboard-plugin/common'; import { getTitle } from '@kbn/presentation-publishing'; import type { Filter, Query, DataViewBase } from '@kbn/es-query'; import { FilterStateStore } from '@kbn/es-query'; diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_dashboards_view/dashboard_table.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_dashboards_view/dashboard_table.tsx index f7ccdca7ba714..9cf9193db6351 100644 --- a/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_dashboards_view/dashboard_table.tsx +++ b/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_dashboards_view/dashboard_table.tsx @@ -15,7 +15,7 @@ import { i18n } from '@kbn/i18n'; import React, { useMemo } from 'react'; import type { SanitizedDashboardAsset } from '@kbn/streams-plugin/server/routes/dashboards/route'; import { DASHBOARD_APP_LOCATOR } from '@kbn/deeplinks-analytics'; -import { DashboardLocatorParams } from '@kbn/dashboard-plugin/public'; +import type { DashboardLocatorParams } from '@kbn/dashboard-plugin/common'; import { useKibana } from '../../hooks/use_kibana'; import { tagListToReferenceList } from './to_reference_list'; import { useTimefilter } from '../../hooks/use_timefilter'; diff --git a/x-pack/solutions/observability/plugins/inventory/public/hooks/use_detail_view_redirect.ts b/x-pack/solutions/observability/plugins/inventory/public/hooks/use_detail_view_redirect.ts index 4ba96c0e5f7d6..53ad1d47c7435 100644 --- a/x-pack/solutions/observability/plugins/inventory/public/hooks/use_detail_view_redirect.ts +++ b/x-pack/solutions/observability/plugins/inventory/public/hooks/use_detail_view_redirect.ts @@ -12,7 +12,7 @@ import { type ServiceOverviewParams, } from '@kbn/observability-shared-plugin/common'; import { useCallback } from 'react'; -import type { DashboardLocatorParams } from '@kbn/dashboard-plugin/public'; +import type { DashboardLocatorParams } from '@kbn/dashboard-plugin/common'; import { DASHBOARD_APP_LOCATOR } from '@kbn/deeplinks-analytics'; import { isBuiltinEntityOfType } from '../../common/utils/check_entity_type'; import type { InventoryEntity } from '../../common/entities'; diff --git a/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_renderer.tsx b/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_renderer.tsx index 3f7cf73662050..334838934bed7 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_renderer.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/dashboards/components/dashboard_renderer.tsx @@ -10,10 +10,10 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react'; import type { DashboardApi, DashboardCreationOptions, - DashboardLocatorParams, DashboardRendererProps, } from '@kbn/dashboard-plugin/public'; import { DashboardRenderer as DashboardContainerRenderer } from '@kbn/dashboard-plugin/public'; +import type { DashboardLocatorParams } from '@kbn/dashboard-plugin/common'; import type { Filter, Query } from '@kbn/es-query'; import type { ViewMode } from '@kbn/presentation-publishing';