diff --git a/src/legacy/core_plugins/kibana/public/discover/components/top_nav/open_search_panel.js b/src/legacy/core_plugins/kibana/public/discover/components/top_nav/open_search_panel.js index 0c3b52fbf0640c..ec1763f44f25f6 100644 --- a/src/legacy/core_plugins/kibana/public/discover/components/top_nav/open_search_panel.js +++ b/src/legacy/core_plugins/kibana/public/discover/components/top_nav/open_search_panel.js @@ -32,11 +32,16 @@ import { EuiFlyoutBody, EuiTitle, } from '@elastic/eui'; -import { SavedObjectFinder } from 'ui/saved_objects/components/saved_object_finder'; +import { SavedObjectFinderUi } from '../../../../../../../plugins/kibana_react/public'; +import { getServices } from '../../kibana_services'; const SEARCH_OBJECT_TYPE = 'search'; export function OpenSearchPanel(props) { + const { + core: { uiSettings, savedObjects }, + } = getServices(); + return ( @@ -50,7 +55,7 @@ export function OpenSearchPanel(props) { - diff --git a/src/legacy/core_plugins/kibana/public/visualize/wizard/search_selection/search_selection.tsx b/src/legacy/core_plugins/kibana/public/visualize/wizard/search_selection/search_selection.tsx index 41607bdea75037..338623975e4c52 100644 --- a/src/legacy/core_plugins/kibana/public/visualize/wizard/search_selection/search_selection.tsx +++ b/src/legacy/core_plugins/kibana/public/visualize/wizard/search_selection/search_selection.tsx @@ -23,7 +23,7 @@ import { FormattedMessage } from '@kbn/i18n/react'; import React from 'react'; import { VisType, getServices } from '../../kibana_services'; -import { SavedObjectFinder } from '../../../../../../../plugins/kibana_react/public'; +import { SavedObjectFinderUi } from '../../../../../../../plugins/kibana_react/public'; interface SearchSelectionProps { onSearchSelected: (searchId: string, searchType: string) => void; @@ -54,7 +54,7 @@ export class SearchSelection extends React.Component { - { - type: string; - name: string; - getIconForSavedObject(savedObject: SimpleSavedObject): IconType; - getTooltipForSavedObject?(savedObject: SimpleSavedObject): string; - showSavedObject?(savedObject: SimpleSavedObject): boolean; -} - -interface BaseSavedObjectFinder { - /** - * @deprecated - * - * Use component in `src/plugins/kibana_react` instead. - */ - onChoose?: ( - id: SimpleSavedObject['id'], - type: SimpleSavedObject['type'], - name: string - ) => void; - /** - * @deprecated - * - * Use component in `src/plugins/kibana_react` instead. - */ - noItemsMessage?: React.ReactNode; - /** - * @deprecated - * - * Use component in `src/plugins/kibana_react` instead. - */ - savedObjectMetaData: Array>; - /** - * @deprecated - * - * Use component in `src/plugins/kibana_react` instead. - */ - showFilter?: boolean; -} - -interface SavedObjectFinderFixedPage extends BaseSavedObjectFinder { - /** - * @deprecated - * - * Use component in `src/plugins/kibana_react` instead. - */ - initialPageSize?: undefined; - /** - * @deprecated - * - * Use component in `src/plugins/kibana_react` instead. - */ - fixedPageSize: number; -} - -interface SavedObjectFinderInitialPageSize extends BaseSavedObjectFinder { - /** - * @deprecated - * - * Use component in `src/plugins/kibana_react` instead. - */ - initialPageSize?: 5 | 10 | 15 | 25; - /** - * @deprecated - * - * Use component in `src/plugins/kibana_react` instead. - */ - fixedPageSize?: undefined; -} -type SavedObjectFinderProps = SavedObjectFinderFixedPage | SavedObjectFinderInitialPageSize; - -export const SavedObjectFinder: React.FC = props => ( - -); diff --git a/src/plugins/dashboard_embeddable_container/public/actions/expand_panel_action.test.tsx b/src/plugins/dashboard_embeddable_container/public/actions/expand_panel_action.test.tsx index f8c05170e8f672..69e1eb86b71ec9 100644 --- a/src/plugins/dashboard_embeddable_container/public/actions/expand_panel_action.test.tsx +++ b/src/plugins/dashboard_embeddable_container/public/actions/expand_panel_action.test.tsx @@ -42,7 +42,6 @@ let embeddable: ContactCardEmbeddable; beforeEach(async () => { const options: DashboardOptions = { ExitFullScreenButton: () => null, - SavedObjectFinder: () => null, application: {} as any, embeddable: { getEmbeddableFactory: (id: string) => embeddableFactories.get(id)!, @@ -52,6 +51,8 @@ beforeEach(async () => { overlays: {} as any, savedObjectMetaData: {} as any, uiActions: {} as any, + uiSettings: {} as any, + savedObjects: {} as any, }; const input = getSampleDashboardInput({ panels: { diff --git a/src/plugins/dashboard_embeddable_container/public/actions/open_replace_panel_flyout.tsx b/src/plugins/dashboard_embeddable_container/public/actions/open_replace_panel_flyout.tsx index f15d538703e21c..1a17962ad4e587 100644 --- a/src/plugins/dashboard_embeddable_container/public/actions/open_replace_panel_flyout.tsx +++ b/src/plugins/dashboard_embeddable_container/public/actions/open_replace_panel_flyout.tsx @@ -31,19 +31,10 @@ import { export async function openReplacePanelFlyout(options: { embeddable: IContainer; core: CoreStart; - savedObjectFinder: React.ComponentType; - notifications: CoreStart['notifications']; panelToRemove: IEmbeddable; getEmbeddableFactories: IEmbeddableStart['getEmbeddableFactories']; }) { - const { - embeddable, - core, - panelToRemove, - savedObjectFinder, - notifications, - getEmbeddableFactories, - } = options; + const { embeddable, core, panelToRemove, getEmbeddableFactories } = options; const flyoutSession = core.overlays.openFlyout( toMountPoint( ), diff --git a/src/plugins/dashboard_embeddable_container/public/actions/replace_panel_action.test.tsx b/src/plugins/dashboard_embeddable_container/public/actions/replace_panel_action.test.tsx index de29e1dec85a86..64b62e236bbcf4 100644 --- a/src/plugins/dashboard_embeddable_container/public/actions/replace_panel_action.test.tsx +++ b/src/plugins/dashboard_embeddable_container/public/actions/replace_panel_action.test.tsx @@ -43,7 +43,6 @@ let embeddable: ContactCardEmbeddable; beforeEach(async () => { const options: DashboardOptions = { ExitFullScreenButton: () => null, - SavedObjectFinder: () => null, application: {} as any, embeddable: { getEmbeddableFactory: (id: string) => embeddableFactories.get(id)!, @@ -51,6 +50,8 @@ beforeEach(async () => { inspector: {} as any, notifications: {} as any, overlays: {} as any, + uiSettings: {} as any, + savedObjects: {} as any, savedObjectMetaData: {} as any, uiActions: {} as any, }; @@ -81,27 +82,13 @@ beforeEach(async () => { test('Executes the replace panel action', async () => { let core: any; - let SavedObjectFinder: any; - let notifications: any; - const action = new ReplacePanelAction( - core, - SavedObjectFinder, - notifications, - getEmbeddableFactories - ); + const action = new ReplacePanelAction(core, getEmbeddableFactories); action.execute({ embeddable }); }); test('Is not compatible when embeddable is not in a dashboard container', async () => { let core: any; - let SavedObjectFinder: any; - let notifications: any; - const action = new ReplacePanelAction( - core, - SavedObjectFinder, - notifications, - getEmbeddableFactories - ); + const action = new ReplacePanelAction(core, getEmbeddableFactories); expect( await action.isCompatible({ embeddable: new ContactCardEmbeddable( @@ -114,14 +101,7 @@ test('Is not compatible when embeddable is not in a dashboard container', async test('Execute throws an error when called with an embeddable not in a parent', async () => { let core: any; - let SavedObjectFinder: any; - let notifications: any; - const action = new ReplacePanelAction( - core, - SavedObjectFinder, - notifications, - getEmbeddableFactories - ); + const action = new ReplacePanelAction(core, getEmbeddableFactories); async function check() { await action.execute({ embeddable: container }); } @@ -130,26 +110,12 @@ test('Execute throws an error when called with an embeddable not in a parent', a test('Returns title', async () => { let core: any; - let SavedObjectFinder: any; - let notifications: any; - const action = new ReplacePanelAction( - core, - SavedObjectFinder, - notifications, - getEmbeddableFactories - ); + const action = new ReplacePanelAction(core, getEmbeddableFactories); expect(action.getDisplayName({ embeddable })).toBeDefined(); }); test('Returns an icon', async () => { let core: any; - let SavedObjectFinder: any; - let notifications: any; - const action = new ReplacePanelAction( - core, - SavedObjectFinder, - notifications, - getEmbeddableFactories - ); + const action = new ReplacePanelAction(core, getEmbeddableFactories); expect(action.getIconType({ embeddable })).toBeDefined(); }); diff --git a/src/plugins/dashboard_embeddable_container/public/actions/replace_panel_action.tsx b/src/plugins/dashboard_embeddable_container/public/actions/replace_panel_action.tsx index 78ce6bdc4c58f8..f06e578b8a10f2 100644 --- a/src/plugins/dashboard_embeddable_container/public/actions/replace_panel_action.tsx +++ b/src/plugins/dashboard_embeddable_container/public/actions/replace_panel_action.tsx @@ -41,8 +41,6 @@ export class ReplacePanelAction implements IAction { constructor( private core: CoreStart, - private savedobjectfinder: React.ComponentType, - private notifications: CoreStart['notifications'], private getEmbeddableFactories: IEmbeddableStart['getEmbeddableFactories'] ) {} @@ -82,8 +80,6 @@ export class ReplacePanelAction implements IAction { openReplacePanelFlyout({ embeddable: dash, core: this.core, - savedObjectFinder: this.savedobjectfinder, - notifications: this.notifications, panelToRemove: view, getEmbeddableFactories: this.getEmbeddableFactories, }); diff --git a/src/plugins/dashboard_embeddable_container/public/actions/replace_panel_flyout.tsx b/src/plugins/dashboard_embeddable_container/public/actions/replace_panel_flyout.tsx index 36313353e3c332..885d0bfaec2546 100644 --- a/src/plugins/dashboard_embeddable_container/public/actions/replace_panel_flyout.tsx +++ b/src/plugins/dashboard_embeddable_container/public/actions/replace_panel_flyout.tsx @@ -22,14 +22,16 @@ import React from 'react'; import { EuiFlyout, EuiFlyoutBody, EuiFlyoutHeader, EuiTitle } from '@elastic/eui'; import { GetEmbeddableFactories } from 'src/plugins/embeddable/public'; import { DashboardPanelState } from '../embeddable'; -import { NotificationsStart, Toast } from '../../../../core/public'; +import { CoreStart, NotificationsStart, Toast } from '../../../../core/public'; import { IContainer, IEmbeddable, EmbeddableInput, EmbeddableOutput } from '../embeddable_plugin'; +import { SavedObjectFinderUi } from '../../../kibana_react/public'; interface Props { container: IContainer; - savedObjectsFinder: React.ComponentType; onClose: () => void; notifications: NotificationsStart; + uiSettings: CoreStart['uiSettings']; + savedObjects: CoreStart['savedObjects']; panelToRemove: IEmbeddable; getEmbeddableFactories: GetEmbeddableFactories; } @@ -94,9 +96,8 @@ export class ReplacePanelFlyout extends React.Component { }; public render() { - const SavedObjectFinder = this.props.savedObjectsFinder; const savedObjectsFinder = ( - { .map(({ savedObjectMetaData }) => savedObjectMetaData as any)} showFilter={true} onChoose={this.onReplacePanel} + uiSettings={this.props.uiSettings} + savedObjects={this.props.savedObjects} /> ); diff --git a/src/plugins/dashboard_embeddable_container/public/embeddable/dashboard_container.test.tsx b/src/plugins/dashboard_embeddable_container/public/embeddable/dashboard_container.test.tsx index 770c46c62e42f6..1dd5c6ab15c7f4 100644 --- a/src/plugins/dashboard_embeddable_container/public/embeddable/dashboard_container.test.tsx +++ b/src/plugins/dashboard_embeddable_container/public/embeddable/dashboard_container.test.tsx @@ -41,9 +41,10 @@ const options: DashboardContainerOptions = { notifications: {} as any, overlays: {} as any, inspector: {} as any, - SavedObjectFinder: () => null, ExitFullScreenButton: () => null, uiActions: {} as any, + uiSettings: {} as any, + savedObjects: {} as any, }; beforeEach(() => { diff --git a/src/plugins/dashboard_embeddable_container/public/embeddable/dashboard_container.tsx b/src/plugins/dashboard_embeddable_container/public/embeddable/dashboard_container.tsx index 684aa93779bc13..b9866f3a717334 100644 --- a/src/plugins/dashboard_embeddable_container/public/embeddable/dashboard_container.tsx +++ b/src/plugins/dashboard_embeddable_container/public/embeddable/dashboard_container.tsx @@ -77,9 +77,10 @@ export interface DashboardContainerOptions { application: CoreStart['application']; overlays: CoreStart['overlays']; notifications: CoreStart['notifications']; + savedObjects: CoreStart['savedObjects']; + uiSettings: CoreStart['uiSettings']; embeddable: IEmbeddableStart; inspector: InspectorStartContract; - SavedObjectFinder: React.ComponentType; ExitFullScreenButton: React.ComponentType; uiActions: IUiActionsStart; } diff --git a/src/plugins/dashboard_embeddable_container/public/embeddable/grid/dashboard_grid.test.tsx b/src/plugins/dashboard_embeddable_container/public/embeddable/grid/dashboard_grid.test.tsx index e4338dc89153d3..4581aa1f0a4218 100644 --- a/src/plugins/dashboard_embeddable_container/public/embeddable/grid/dashboard_grid.test.tsx +++ b/src/plugins/dashboard_embeddable_container/public/embeddable/grid/dashboard_grid.test.tsx @@ -66,9 +66,10 @@ function prepare(props?: Partial) { notifications: {} as any, overlays: {} as any, inspector: {} as any, - SavedObjectFinder: () => null, ExitFullScreenButton: () => null, uiActions: {} as any, + uiSettings: {} as any, + savedObjects: {} as any, }; dashboardContainer = new DashboardContainer(initialInput, options); const defaultTestProps: DashboardGridProps = { diff --git a/src/plugins/dashboard_embeddable_container/public/embeddable/grid/dashboard_grid.tsx b/src/plugins/dashboard_embeddable_container/public/embeddable/grid/dashboard_grid.tsx index 2b905626d0db5e..6a8ee13e2a971b 100644 --- a/src/plugins/dashboard_embeddable_container/public/embeddable/grid/dashboard_grid.tsx +++ b/src/plugins/dashboard_embeddable_container/public/embeddable/grid/dashboard_grid.tsx @@ -276,7 +276,8 @@ class DashboardGridUi extends React.Component { overlays={this.props.kibana.services.overlays} notifications={this.props.kibana.services.notifications} inspector={this.props.kibana.services.inspector} - uiSettings={this.props.kibana.services.} + uiSettings={this.props.kibana.services.uiSettings} + savedObjects={this.props.kibana.services.savedObjects} /> ); diff --git a/src/plugins/dashboard_embeddable_container/public/embeddable/viewport/dashboard_viewport.test.tsx b/src/plugins/dashboard_embeddable_container/public/embeddable/viewport/dashboard_viewport.test.tsx index 7b83407bf8063c..c40384acfa3a76 100644 --- a/src/plugins/dashboard_embeddable_container/public/embeddable/viewport/dashboard_viewport.test.tsx +++ b/src/plugins/dashboard_embeddable_container/public/embeddable/viewport/dashboard_viewport.test.tsx @@ -57,7 +57,8 @@ function getProps( notifications: {} as any, overlays: {} as any, inspector: {} as any, - SavedObjectFinder: () => null, + uiSettings: {} as any, + savedObjects: {} as any, ExitFullScreenButton, uiActions: {} as any, }; diff --git a/src/plugins/dashboard_embeddable_container/public/plugin.tsx b/src/plugins/dashboard_embeddable_container/public/plugin.tsx index 79cc9b6980545e..9753e7fcae5a5b 100644 --- a/src/plugins/dashboard_embeddable_container/public/plugin.tsx +++ b/src/plugins/dashboard_embeddable_container/public/plugin.tsx @@ -27,8 +27,6 @@ import { ExpandPanelAction, ReplacePanelAction } from '.'; import { DashboardContainerFactory } from './embeddable/dashboard_container_factory'; import { Start as InspectorStartContract } from '../../../plugins/inspector/public'; import { - SavedObjectFinder as SavedObjectFinderUi, - SavedObjectFinderProps, ExitFullScreenButton as ExitFullScreenButtonUi, ExitFullScreenButtonProps, } from '../../../plugins/kibana_react/public'; @@ -58,20 +56,9 @@ export class DashboardEmbeddableContainerPublicPlugin } public start(core: CoreStart, plugins: StartDependencies): Start { - const { application, notifications, overlays } = core; + const { application, notifications, overlays, uiSettings, savedObjects } = core; const { embeddable, inspector, uiActions } = plugins; - const SavedObjectFinder: React.FC> = props => ( - - ); - const useHideChrome = () => { React.useEffect(() => { core.chrome.setIsVisible(false); @@ -86,8 +73,6 @@ export class DashboardEmbeddableContainerPublicPlugin const changeViewAction = new ReplacePanelAction( core, - SavedObjectFinder, - notifications, plugins.embeddable.getEmbeddableFactories ); uiActions.registerAction(changeViewAction); @@ -99,9 +84,10 @@ export class DashboardEmbeddableContainerPublicPlugin overlays, embeddable, inspector, - SavedObjectFinder, ExitFullScreenButton, uiActions, + uiSettings, + savedObjects, }); embeddable.registerEmbeddableFactory(factory.type, factory); diff --git a/src/plugins/dashboard_embeddable_container/public/tests/dashboard_container.test.tsx b/src/plugins/dashboard_embeddable_container/public/tests/dashboard_container.test.tsx index 6a3b69af60d6b3..fd2b294663642a 100644 --- a/src/plugins/dashboard_embeddable_container/public/tests/dashboard_container.test.tsx +++ b/src/plugins/dashboard_embeddable_container/public/tests/dashboard_container.test.tsx @@ -64,7 +64,8 @@ test('DashboardContainer in edit mode shows edit mode actions', async () => { notifications: {} as any, overlays: {} as any, inspector: {} as any, - SavedObjectFinder: () => null, + uiSettings: {} as any, + savedObjects: {} as any, ExitFullScreenButton: () => null, uiActions: {} as any, }; @@ -89,7 +90,8 @@ test('DashboardContainer in edit mode shows edit mode actions', async () => { notifications={{} as any} overlays={{} as any} inspector={inspector} - SavedObjectFinder={() => null} + uiSettings={{} as any} + savedObjects={{} as any} /> diff --git a/src/plugins/embeddable/public/lib/panel/embeddable_panel.test.tsx b/src/plugins/embeddable/public/lib/panel/embeddable_panel.test.tsx index 9eed400daf9c9b..01d087875a3d71 100644 --- a/src/plugins/embeddable/public/lib/panel/embeddable_panel.test.tsx +++ b/src/plugins/embeddable/public/lib/panel/embeddable_panel.test.tsx @@ -161,8 +161,9 @@ test('HelloWorldContainer in view mode hides edit mode actions', async () => { getEmbeddableFactory={(() => undefined) as any} notifications={{} as any} overlays={{} as any} + uiSettings={{} as any} + savedObjects={{} as any} inspector={inspector} - SavedObjectFinder={() => null} /> ); @@ -199,7 +200,8 @@ test('HelloWorldContainer in edit mode shows edit mode actions', async () => { notifications={{} as any} overlays={{} as any} inspector={inspector} - SavedObjectFinder={() => null} + uiSettings={{} as any} + savedObjects={{} as any} /> ); @@ -261,7 +263,8 @@ test('Updates when hidePanelTitles is toggled', async () => { notifications={{} as any} overlays={{} as any} inspector={inspector} - SavedObjectFinder={() => null} + uiSettings={{} as any} + savedObjects={{} as any} /> ); @@ -313,7 +316,8 @@ test('Check when hide header option is false', async () => { notifications={{} as any} overlays={{} as any} inspector={inspector} - SavedObjectFinder={() => null} + uiSettings={{} as any} + savedObjects={{} as any} hideHeader={false} /> @@ -350,7 +354,8 @@ test('Check when hide header option is true', async () => { notifications={{} as any} overlays={{} as any} inspector={inspector} - SavedObjectFinder={() => null} + uiSettings={{} as any} + savedObjects={{} as any} hideHeader={true} /> diff --git a/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_action.test.tsx b/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_action.test.tsx index 47113ffc59561c..b0c9e16cc4dce0 100644 --- a/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_action.test.tsx +++ b/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_action.test.tsx @@ -48,7 +48,8 @@ beforeEach(async () => { () => [] as any, start.overlays, start.notifications, - () => null + start.uiSettings, + start.savedObjects ); const derivedFilter: esFilters.Filter = { @@ -83,7 +84,8 @@ test('Is not compatible when container is in view mode', async () => { () => [] as any, start.overlays, start.notifications, - () => null + start.uiSettings, + start.savedObjects ); container.updateInput({ viewMode: ViewMode.VIEW }); expect(await addPanelAction.isCompatible({ embeddable: container })).toBe(false); diff --git a/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_flyout.test.tsx b/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_flyout.test.tsx index fd8f286a9d8f6d..c69c25837f80e1 100644 --- a/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_flyout.test.tsx +++ b/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_flyout.test.tsx @@ -63,7 +63,8 @@ test('createNewEmbeddable() add embeddable to container', async () => { getFactory={getEmbeddableFactory} getAllFactories={() => new Set([contactCardEmbeddableFactory]).values()} notifications={core.notifications} - SavedObjectFinder={() => null} + uiSettings={core.uiSettings} + savedObjects={core.savedObjects} /> ) as ReactWrapper; @@ -108,7 +109,8 @@ test('selecting embeddable in "Create new ..." list calls createNewEmbeddable()' getFactory={getEmbeddableFactory} getAllFactories={() => new Set([contactCardEmbeddableFactory]).values()} notifications={core.notifications} - SavedObjectFinder={() => null} + uiSettings={core.uiSettings} + savedObjects={core.savedObjects} /> ) as ReactWrapper; diff --git a/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_flyout.tsx b/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_flyout.tsx index 73b2433c3d51e2..cc49e0d8777abc 100644 --- a/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_flyout.tsx +++ b/src/plugins/embeddable/public/lib/panel/panel_header/panel_actions/add_panel/add_panel_flyout.tsx @@ -36,7 +36,7 @@ import { import { IContainer } from '../../../../containers'; import { EmbeddableFactoryNotFoundError } from '../../../../errors'; import { GetEmbeddableFactories, GetEmbeddableFactory } from '../../../../types'; -import { SavedObjectFinder } from '../../../../../../../kibana_react/public'; +import { SavedObjectFinderUi } from '../../../../../../../kibana_react/public'; interface Props { onClose: () => void; @@ -134,7 +134,7 @@ export class AddPanelFlyout extends React.Component { public render() { const savedObjectsFinder = ( - ; } export class HelloWorldContainer extends Container { @@ -83,7 +84,8 @@ export class HelloWorldContainer extends Container , node diff --git a/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container_component.tsx b/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container_component.tsx index 7c0e09eff1d50a..8cd30cde42f942 100644 --- a/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container_component.tsx +++ b/src/plugins/embeddable/public/lib/test_samples/embeddables/hello_world_container_component.tsx @@ -34,7 +34,8 @@ interface Props { overlays: CoreStart['overlays']; notifications: CoreStart['notifications']; inspector: InspectorStartContract; - SavedObjectFinder: React.ComponentType; + uiSettings: CoreStart['uiSettings']; + savedObjects: CoreStart['savedObjects']; } interface State { @@ -112,8 +113,9 @@ export class HelloWorldContainerComponent extends Component { getAllEmbeddableFactories={this.props.getAllEmbeddableFactories} overlays={this.props.overlays} notifications={this.props.notifications} + uiSettings={this.props.uiSettings} + savedObjects={this.props.savedObjects} inspector={this.props.inspector} - SavedObjectFinder={this.props.SavedObjectFinder} /> ); diff --git a/src/plugins/embeddable/public/tests/apply_filter_action.test.ts b/src/plugins/embeddable/public/tests/apply_filter_action.test.ts index 0721acb1a1fba9..2c3299f3bc630c 100644 --- a/src/plugins/embeddable/public/tests/apply_filter_action.test.ts +++ b/src/plugins/embeddable/public/tests/apply_filter_action.test.ts @@ -106,8 +106,9 @@ test('ApplyFilterAction is incompatible if the root container does not accept a getAllEmbeddableFactories: api.getEmbeddableFactories, overlays: coreStart.overlays, notifications: coreStart.notifications, + uiSettings: coreStart.uiSettings, + savedObjects: coreStart.savedObjects, inspector, - SavedObjectFinder: () => null, } ); @@ -146,7 +147,8 @@ test('trying to execute on incompatible context throws an error ', async () => { overlays: coreStart.overlays, notifications: coreStart.notifications, inspector, - SavedObjectFinder: () => null, + uiSettings: coreStart.uiSettings, + savedObjects: coreStart.savedObjects, } ); diff --git a/src/plugins/embeddable/public/tests/container.test.ts b/src/plugins/embeddable/public/tests/container.test.ts index f97c26a41b901b..3385bf9354a913 100644 --- a/src/plugins/embeddable/public/tests/container.test.ts +++ b/src/plugins/embeddable/public/tests/container.test.ts @@ -73,7 +73,8 @@ async function creatHelloWorldContainerAndEmbeddable( overlays: coreStart.overlays, notifications: coreStart.notifications, inspector: {} as any, - SavedObjectFinder: () => null, + uiSettings: coreStart.uiSettings, + savedObjects: coreStart.savedObjects, }); const embeddable = await container.addNewEmbeddable< ContactCardEmbeddableInput, @@ -146,7 +147,8 @@ test('Container.removeEmbeddable removes and cleans up', async done => { overlays: coreStart.overlays, notifications: coreStart.notifications, inspector: {} as any, - SavedObjectFinder: () => null, + uiSettings: coreStart.uiSettings, + savedObjects: coreStart.savedObjects, } ); const embeddable = await container.addNewEmbeddable< @@ -326,7 +328,8 @@ test(`Container updates its state when a child's input is updated`, async done = notifications: coreStart.notifications, overlays: coreStart.overlays, inspector: {} as any, - SavedObjectFinder: () => null, + uiSettings: coreStart.uiSettings, + savedObjects: coreStart.savedObjects, }); const cloneSubscription = Rx.merge( containerClone.getOutput$(), @@ -576,7 +579,8 @@ test('Container changes made directly after adding a new embeddable are propagat overlays: coreStart.overlays, notifications: coreStart.notifications, inspector: {} as any, - SavedObjectFinder: () => null, + uiSettings: coreStart.uiSettings, + savedObjects: coreStart.savedObjects, } ); @@ -708,7 +712,8 @@ test('untilEmbeddableLoaded() throws an error if there is no such child panel in overlays: coreStart.overlays, notifications: coreStart.notifications, inspector: {} as any, - SavedObjectFinder: () => null, + uiSettings: coreStart.uiSettings, + savedObjects: coreStart.savedObjects, } ); @@ -742,7 +747,8 @@ test('untilEmbeddableLoaded() resolves if child is loaded in the container', asy overlays: coreStart.overlays, notifications: coreStart.notifications, inspector: {} as any, - SavedObjectFinder: () => null, + uiSettings: coreStart.uiSettings, + savedObjects: coreStart.savedObjects, } ); @@ -780,7 +786,8 @@ test('untilEmbeddableLoaded resolves with undefined if child is subsequently rem overlays: coreStart.overlays, notifications: coreStart.notifications, inspector: {} as any, - SavedObjectFinder: () => null, + uiSettings: coreStart.uiSettings, + savedObjects: coreStart.savedObjects, } ); @@ -820,7 +827,8 @@ test('adding a panel then subsequently removing it before its loaded removes the overlays: coreStart.overlays, notifications: coreStart.notifications, inspector: {} as any, - SavedObjectFinder: () => null, + uiSettings: coreStart.uiSettings, + savedObjects: coreStart.savedObjects, } ); diff --git a/src/plugins/embeddable/public/tests/customize_panel_modal.test.tsx b/src/plugins/embeddable/public/tests/customize_panel_modal.test.tsx index 70d7c99d3fb9d0..a1b85384d9b6ba 100644 --- a/src/plugins/embeddable/public/tests/customize_panel_modal.test.tsx +++ b/src/plugins/embeddable/public/tests/customize_panel_modal.test.tsx @@ -65,7 +65,8 @@ beforeEach(async () => { overlays: coreStart.overlays, notifications: coreStart.notifications, inspector: {} as any, - SavedObjectFinder: () => null, + uiSettings: coreStart.uiSettings, + savedObjects: coreStart.savedObjects, } ); const contactCardEmbeddable = await container.addNewEmbeddable< diff --git a/src/plugins/embeddable/public/tests/explicit_input.test.ts b/src/plugins/embeddable/public/tests/explicit_input.test.ts index 47c4b0944cef22..a7fbc4c96b69b1 100644 --- a/src/plugins/embeddable/public/tests/explicit_input.test.ts +++ b/src/plugins/embeddable/public/tests/explicit_input.test.ts @@ -86,7 +86,8 @@ test('Explicit embeddable input mapped to undefined with no inherited value will notifications: coreStart.notifications, overlays: coreStart.overlays, inspector: {} as any, - SavedObjectFinder: () => null, + uiSettings: coreStart.uiSettings, + savedObjects: coreStart.savedObjects, } ); @@ -134,7 +135,8 @@ test('Explicit input tests in async situations', (done: () => void) => { notifications: coreStart.notifications, overlays: coreStart.overlays, inspector: {} as any, - SavedObjectFinder: () => null, + uiSettings: coreStart.uiSettings, + savedObjects: coreStart.savedObjects, } ); diff --git a/src/plugins/kibana_react/public/saved_objects/saved_object_finder.test.tsx b/src/plugins/kibana_react/public/saved_objects/saved_object_finder.test.tsx index 5b3d638f9e9351..c1125fcf7355b1 100644 --- a/src/plugins/kibana_react/public/saved_objects/saved_object_finder.test.tsx +++ b/src/plugins/kibana_react/public/saved_objects/saved_object_finder.test.tsx @@ -35,7 +35,7 @@ import { IconType } from '@elastic/eui'; import { shallow } from 'enzyme'; import React from 'react'; import * as sinon from 'sinon'; -import { SavedObjectFinder } from './saved_object_finder'; +import { SavedObjectFinderUi as SavedObjectFinder } from './saved_object_finder'; // eslint-disable-next-line import { coreMock } from '../../../../core/public/mocks'; diff --git a/src/plugins/kibana_react/public/saved_objects/saved_object_finder.tsx b/src/plugins/kibana_react/public/saved_objects/saved_object_finder.tsx index c65d4289587670..51fbbd2ba3046d 100644 --- a/src/plugins/kibana_react/public/saved_objects/saved_object_finder.tsx +++ b/src/plugins/kibana_react/public/saved_objects/saved_object_finder.tsx @@ -46,6 +46,7 @@ import { i18n } from '@kbn/i18n'; import { SavedObjectAttributes } from '../../../../core/server'; import { SimpleSavedObject, CoreStart } from '../../../../core/public'; +import { useKibana } from '../context'; // TODO the typings for EuiListGroup are incorrect - maxWidth is missing. This can be removed when the types are adjusted const FixedEuiListGroup = (EuiListGroup as any) as React.FunctionComponent< @@ -104,12 +105,18 @@ interface SavedObjectFinderInitialPageSize extends BaseSavedObjectFinder { initialPageSize?: 5 | 10 | 15 | 25; fixedPageSize?: undefined; } -export type SavedObjectFinderProps = { + +export type SavedObjectFinderProps = SavedObjectFinderFixedPage | SavedObjectFinderInitialPageSize; + +export type SavedObjectFinderUiProps = { savedObjects: CoreStart['savedObjects']; uiSettings: CoreStart['uiSettings']; -} & (SavedObjectFinderFixedPage | SavedObjectFinderInitialPageSize); +} & SavedObjectFinderProps; -class SavedObjectFinder extends React.Component { +class SavedObjectFinderUi extends React.Component< + SavedObjectFinderUiProps, + SavedObjectFinderState +> { public static propTypes = { onChoose: PropTypes.func, noItemsMessage: PropTypes.node, @@ -174,7 +181,7 @@ class SavedObjectFinder extends React.Component { + const { services } = useKibana(); + return ( + + ); +}; + +export { SavedObjectFinder, SavedObjectFinderUi }; diff --git a/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/app.tsx b/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/app.tsx index c0ed2b027f0e4b..1c8cbde5668594 100644 --- a/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/app.tsx +++ b/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/app.tsx @@ -36,7 +36,8 @@ export interface AppProps { overlays: CoreStart['overlays']; notifications: CoreStart['notifications']; inspector: InspectorStartContract; - SavedObjectFinder: React.ComponentType; + uiSettings: CoreStart['uiSettings']; + savedObjects: CoreStart['savedObjects']; I18nContext: CoreStart['i18n']['Context']; } @@ -105,7 +106,8 @@ export class App extends Component { overlays={this.props.overlays} notifications={this.props.notifications} inspector={this.props.inspector} - SavedObjectFinder={this.props.SavedObjectFinder} + uiSettings={this.props.uiSettings} + savedObjects={this.props.savedObjects} /> ); } @@ -118,7 +120,8 @@ export class App extends Component { overlays={this.props.overlays} notifications={this.props.notifications} inspector={this.props.inspector} - SavedObjectFinder={this.props.SavedObjectFinder} + uiSettings={this.props.uiSettings} + savedObjects={this.props.savedObjects} /> ); } @@ -131,7 +134,8 @@ export class App extends Component { overlays={this.props.overlays} notifications={this.props.notifications} inspector={this.props.inspector} - SavedObjectFinder={this.props.SavedObjectFinder} + uiSettings={this.props.uiSettings} + savedObjects={this.props.savedObjects} /> ); } diff --git a/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/dashboard_container_example.tsx b/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/dashboard_container_example.tsx index 5cfaa1c22f4e50..d8a569d367bccd 100644 --- a/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/dashboard_container_example.tsx +++ b/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/dashboard_container_example.tsx @@ -43,8 +43,9 @@ interface Props { getAllEmbeddableFactories: GetEmbeddableFactories; overlays: CoreStart['overlays']; notifications: CoreStart['notifications']; + uiSettings: CoreStart['uiSettings']; + savedObjects: CoreStart['savedObjects']; inspector: InspectorStartContract; - SavedObjectFinder: React.ComponentType; } interface State { @@ -114,7 +115,8 @@ export class DashboardContainerExample extends React.Component { overlays={this.props.overlays} notifications={this.props.notifications} inspector={this.props.inspector} - SavedObjectFinder={this.props.SavedObjectFinder} + uiSettings={this.props.uiSettings} + savedObjects={this.props.savedObjects} /> )} diff --git a/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/hello_world_container_example.tsx b/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/hello_world_container_example.tsx index efd700552ec325..45b36d3a277187 100644 --- a/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/hello_world_container_example.tsx +++ b/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/hello_world_container_example.tsx @@ -41,7 +41,8 @@ interface Props { overlays: CoreStart['overlays']; notifications: CoreStart['notifications']; inspector: InspectorStartContract; - SavedObjectFinder: React.ComponentType; + uiSettings: CoreStart['uiSettings']; + savedObjects: CoreStart['savedObjects']; } export class HelloWorldContainerExample extends React.Component { @@ -80,7 +81,8 @@ export class HelloWorldContainerExample extends React.Component ); diff --git a/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/hello_world_embeddable_example.tsx b/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/hello_world_embeddable_example.tsx index 78b122cb1baf57..4f1456f136c0aa 100644 --- a/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/hello_world_embeddable_example.tsx +++ b/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/app/hello_world_embeddable_example.tsx @@ -35,7 +35,8 @@ interface Props { overlays: CoreStart['overlays']; notifications: CoreStart['notifications']; inspector: InspectorStartContract; - SavedObjectFinder: React.ComponentType; + uiSettings: CoreStart['uiSettings']; + savedObjects: CoreStart['savedObjects']; } export class ContactCardEmbeddableExample extends React.Component { @@ -64,7 +65,8 @@ export class ContactCardEmbeddableExample extends React.Component { overlays={this.props.overlays} notifications={this.props.notifications} inspector={this.props.inspector} - SavedObjectFinder={this.props.SavedObjectFinder} + uiSettings={this.props.uiSettings} + savedObjects={this.props.savedObjects} /> ); diff --git a/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/plugin.tsx b/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/plugin.tsx index 5245935c191ee5..8cf74dbdf8a5ac 100644 --- a/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/plugin.tsx +++ b/test/plugin_functional/plugins/kbn_tp_embeddable_explorer/public/np_ready/public/plugin.tsx @@ -38,7 +38,6 @@ import { ContactCardEmbeddableFactory, } from './embeddable_api'; import { App } from './app'; -import { SavedObjectFinder as SavedObjectFinderNP } from '../../../../../../../src/plugins/kibana_react/public'; import { IEmbeddableStart, IEmbeddableSetup, @@ -96,14 +95,6 @@ export class EmbeddableExplorerPublicPlugin contactCardEmbeddableFactory ); - const SavedObjectFinder = (props: any) => ( - - ); - plugins.__LEGACY.onRenderComplete(() => { const root = document.getElementById(REACT_ROOT_ID); ReactDOM.render( @@ -115,7 +106,8 @@ export class EmbeddableExplorerPublicPlugin overlays={core.overlays} inspector={plugins.inspector} I18nContext={core.i18n.Context} - SavedObjectFinder={SavedObjectFinder} + uiSettings={core.uiSettings} + savedObjects={core.savedObjects} />, root ); diff --git a/x-pack/legacy/plugins/canvas/public/components/embeddable_flyout/flyout.tsx b/x-pack/legacy/plugins/canvas/public/components/embeddable_flyout/flyout.tsx index d09ef53f65fbbc..786403f2748fab 100644 --- a/x-pack/legacy/plugins/canvas/public/components/embeddable_flyout/flyout.tsx +++ b/x-pack/legacy/plugins/canvas/public/components/embeddable_flyout/flyout.tsx @@ -8,7 +8,7 @@ import React from 'react'; import { EuiFlyout, EuiFlyoutHeader, EuiFlyoutBody, EuiTitle } from '@elastic/eui'; import { - SavedObjectFinder, + SavedObjectFinderUi, SavedObjectMetaData, } from '../../../../../../../src/plugins/kibana_react/public/saved_objects'; // eslint-disable-line import { start } from '../../../../../../../src/legacy/core_plugins/embeddable_api/public/np_ready/public/legacy'; @@ -64,7 +64,7 @@ export class AddEmbeddableFlyout extends React.Component { - { diff --git a/x-pack/legacy/plugins/ml/public/application/jobs/new_job/pages/index_or_search/page.tsx b/x-pack/legacy/plugins/ml/public/application/jobs/new_job/pages/index_or_search/page.tsx index 22904b5efdfc28..cb311f04dd1d75 100644 --- a/x-pack/legacy/plugins/ml/public/application/jobs/new_job/pages/index_or_search/page.tsx +++ b/x-pack/legacy/plugins/ml/public/application/jobs/new_job/pages/index_or_search/page.tsx @@ -16,7 +16,7 @@ import { import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n/react'; import { npStart } from 'ui/new_platform'; -import { SavedObjectFinder } from '../../../../../../../../../../src/plugins/kibana_react/public'; +import { SavedObjectFinderUi } from '../../../../../../../../../../src/plugins/kibana_react/public'; export interface PageProps { nextStepPath: string; @@ -47,7 +47,7 @@ export const Page: FC = ({ nextStepPath }) => { - = ({ onSearchSelected }) -