Skip to content

Commit

Permalink
Move top nav to NP (#52877) (#53114)
Browse files Browse the repository at this point in the history
* Move top nav to NP

* TopNavMenu karma mock

* Fixed lens test mocking
Removed old plugin code

* readme

* Code review fixes

* lint

* ts
  • Loading branch information
Liza Katz authored Dec 16, 2019
1 parent 601c241 commit fc0d6af
Show file tree
Hide file tree
Showing 38 changed files with 183 additions and 102 deletions.
18 changes: 13 additions & 5 deletions .i18nrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@
"console": "src/legacy/core_plugins/console",
"core": "src/core",
"dashboardEmbeddableContainer": "src/plugins/dashboard_embeddable_container",
"data": ["src/legacy/core_plugins/data", "src/plugins/data"],
"data": [
"src/legacy/core_plugins/data",
"src/plugins/data"
],
"embeddableApi": "src/plugins/embeddable",
"share": "src/plugins/share",
"esUi": "src/plugins/es_ui_shared",
Expand All @@ -21,7 +24,7 @@
"kibana_react": "src/legacy/core_plugins/kibana_react",
"kibana-react": "src/plugins/kibana_react",
"kibana_utils": "src/plugins/kibana_utils",
"navigation": "src/legacy/core_plugins/navigation",
"navigation": "src/plugins/navigation",
"newsfeed": "src/plugins/newsfeed",
"regionMap": "src/legacy/core_plugins/region_map",
"server": "src/legacy/server",
Expand All @@ -36,8 +39,13 @@
"visTypeTagCloud": "src/legacy/core_plugins/vis_type_tagcloud",
"visTypeTimeseries": "src/legacy/core_plugins/vis_type_timeseries",
"visTypeVega": "src/legacy/core_plugins/vis_type_vega",
"visualizations": ["src/plugins/visualizations", "src/legacy/core_plugins/visualizations"]
"visualizations": [
"src/plugins/visualizations",
"src/legacy/core_plugins/visualizations"
]
},
"exclude": ["src/legacy/ui/ui_render/ui_render_mixin.js"],
"exclude": [
"src/legacy/ui/ui_render/ui_render_mixin.js"
],
"translations": []
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ import {
// @ts-ignore
import { initDashboardApp } from './legacy_app';
import { IEmbeddableStart } from '../../../../../plugins/embeddable/public';
import { NavigationStart } from '../../../navigation/public';
import { NavigationPublicPluginStart as NavigationStart } from '../../../../../plugins/navigation/public';
import { DataPublicPluginStart as NpDataStart } from '../../../../../plugins/data/public';
import { SharePluginStart } from '../../../../../plugins/share/public';

Expand Down
3 changes: 1 addition & 2 deletions src/legacy/core_plugins/kibana/public/dashboard/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import {
import { DashboardPlugin, LegacyAngularInjectedDependencies } from './plugin';
import { start as data } from '../../../data/public/legacy';
import { start as embeddables } from '../../../embeddable_api/public/np_ready/public/legacy';
import { start as navigation } from '../../../navigation/public/legacy';
import './saved_dashboard/saved_dashboards';
import './dashboard_config';

Expand Down Expand Up @@ -62,6 +61,6 @@ async function getAngularDependencies(): Promise<LegacyAngularInjectedDependenci
data,
npData: npStart.plugins.data,
embeddables,
navigation,
navigation: npStart.plugins.navigation,
});
})();
2 changes: 1 addition & 1 deletion src/legacy/core_plugins/kibana/public/dashboard/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import { DataStart } from '../../../data/public';
import { DataPublicPluginStart as NpDataStart } from '../../../../../plugins/data/public';
import { IEmbeddableStart } from '../../../../../plugins/embeddable/public';
import { Storage } from '../../../../../plugins/kibana_utils/public';
import { NavigationStart } from '../../../navigation/public';
import { NavigationPublicPluginStart as NavigationStart } from '../../../../../plugins/navigation/public';
import { DashboardConstants } from './dashboard_constants';
import { SharePluginStart } from '../../../../../plugins/share/public';
import {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ import { createTopNavDirective, createTopNavHelper } from 'ui/kbn_top_nav/kbn_to
import { configureAppAngularModule } from 'ui/legacy_compat';
import { IndexPatterns } from '../../../../../plugins/data/public';
import { Storage } from '../../../../../plugins/kibana_utils/public';
import { NavigationStart } from '../../../navigation/public';
import { NavigationPublicPluginStart as NavigationStart } from '../../../../../plugins/navigation/public';
import { createDocTableDirective } from './angular/doc_table/doc_table';
import { createTableHeaderDirective } from './angular/doc_table/components/table_header';
import {
Expand Down
3 changes: 1 addition & 2 deletions src/legacy/core_plugins/kibana/public/discover/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import { PluginInitializer, PluginInitializerContext } from 'kibana/public';
import { npSetup, npStart } from 'ui/new_platform';
import { SavedObjectRegistryProvider } from 'ui/saved_objects';
import { DiscoverPlugin, DiscoverSetup, DiscoverStart } from './plugin';
import { start as navigation } from '../../../navigation/public/legacy';

// Core will be looking for this when loading our plugin in the new platform
export const plugin: PluginInitializer<DiscoverSetup, DiscoverStart> = (
Expand All @@ -33,7 +32,7 @@ export const plugin: PluginInitializer<DiscoverSetup, DiscoverStart> = (
export const pluginInstance = plugin({} as PluginInitializerContext);
(async () => {
pluginInstance.setup(npSetup.core, npSetup.plugins);
pluginInstance.start(npStart.core, { ...npStart.plugins, navigation });
pluginInstance.start(npStart.core, npStart.plugins);
})();

SavedObjectRegistryProvider.register((savedSearches: any) => {
Expand Down
2 changes: 1 addition & 1 deletion src/legacy/core_plugins/kibana/public/discover/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import './kibana_services';
import { IEmbeddableStart, IEmbeddableSetup } from '../../../../../plugins/embeddable/public';
import { getInnerAngularModule, getInnerAngularModuleEmbeddable } from './get_inner_angular';
import { setAngularModule, setServices } from './kibana_services';
import { NavigationStart } from '../../../navigation/public';
import { NavigationPublicPluginStart as NavigationStart } from '../../../../../plugins/navigation/public';
import { EuiUtilsStart } from '../../../../../plugins/eui_utils/public';
import { buildServices } from './helpers/build_services';
import { SharePluginStart } from '../../../../../plugins/share/public';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import {
PromiseServiceCreator,
StateManagementConfigProvider,
} from './legacy_imports';
import { NavigationStart } from '../../../navigation/public';
import { NavigationPublicPluginStart as NavigationStart } from '../../../../../plugins/navigation/public';

// @ts-ignore
import { initVisualizeApp } from './legacy_app';
Expand Down
2 changes: 0 additions & 2 deletions src/legacy/core_plugins/kibana/public/visualize/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import {
} from './legacy_imports';
import { VisualizePlugin, LegacyAngularInjectedDependencies } from './plugin';
import { start as embeddables } from '../../../embeddable_api/public/np_ready/public/legacy';
import { start as navigation } from '../../../navigation/public/legacy';
import { start as visualizations } from '../../../visualizations/public/np_ready/public/legacy';

/**
Expand Down Expand Up @@ -64,7 +63,6 @@ async function getAngularDependencies(): Promise<LegacyAngularInjectedDependenci
instance.start(npStart.core, {
...npStart.plugins,
embeddables,
navigation,
visualizations,
});
})();
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import {
IUiSettingsClient,
} from 'kibana/public';

import { NavigationStart } from '../../../navigation/public';
import { NavigationPublicPluginStart as NavigationStart } from '../../../../../plugins/navigation/public';
import { Storage } from '../../../../../plugins/kibana_utils/public';
import { IEmbeddableStart } from '../../../../../plugins/embeddable/public';
import { SharePluginStart } from '../../../../../plugins/share/public';
Expand Down
2 changes: 1 addition & 1 deletion src/legacy/core_plugins/kibana/public/visualize/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import {
import { Storage } from '../../../../../plugins/kibana_utils/public';
import { DataPublicPluginStart } from '../../../../../plugins/data/public';
import { IEmbeddableStart } from '../../../../../plugins/embeddable/public';
import { NavigationStart } from '../../../navigation/public';
import { NavigationPublicPluginStart as NavigationStart } from '../../../../../plugins/navigation/public';
import { SharePluginStart } from '../../../../../plugins/share/public';
import { KibanaLegacySetup } from '../../../../../plugins/kibana_legacy/public';
import { VisualizationsStart } from '../../../visualizations/public';
Expand Down
2 changes: 1 addition & 1 deletion src/legacy/core_plugins/navigation/public/index.scss
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
@import 'src/legacy/ui/public/styles/styling_constants';

@import './top_nav_menu/index';
@import '../../../../plugins/navigation/public/top_nav_menu/index';
9 changes: 0 additions & 9 deletions src/legacy/core_plugins/navigation/public/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,3 @@
// Once the new platform is ready, they can get removed
// and handled by the platform itself in the setup method
// of the ExpressionExectorService

/** @public types */
export { TopNavMenu, TopNavMenuData } from './top_nav_menu';
export { NavigationSetup, NavigationStart } from './plugin';

import { NavigationPlugin as Plugin } from './plugin';
export function plugin() {
return new Plugin();
}
4 changes: 2 additions & 2 deletions src/legacy/ui/public/kbn_top_nav/kbn_top_nav.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import 'ngreact';
import { wrapInI18nContext } from 'ui/i18n';
import { uiModules } from 'ui/modules';
import { start as navigation } from '../../../core_plugins/navigation/public/legacy';
import { npStart } from 'ui/new_platform';

const module = uiModules.get('kibana');

Expand Down Expand Up @@ -116,4 +116,4 @@ export const createTopNavHelper = ({ TopNavMenu }) => reactDirective => {
]);
};

module.directive('kbnTopNavHelper', createTopNavHelper(navigation.ui));
module.directive('kbnTopNavHelper', createTopNavHelper(npStart.plugins.navigation.ui));
3 changes: 3 additions & 0 deletions src/legacy/ui/public/new_platform/__mocks__/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import { coreMock } from '../../../../../core/public/mocks';
import { dataPluginMock } from '../../../../../plugins/data/public/mocks';
import { embeddablePluginMock } from '../../../../../plugins/embeddable/public/mocks';
import { navigationPluginMock } from '../../../../../plugins/navigation/public/mocks';
import { expressionsPluginMock } from '../../../../../plugins/expressions/public/mocks';
import { inspectorPluginMock } from '../../../../../plugins/inspector/public/mocks';
import { uiActionsPluginMock } from '../../../../../plugins/ui_actions/public/mocks';
Expand All @@ -30,6 +31,7 @@ import { usageCollectionPluginMock } from '../../../../../plugins/usage_collecti
export const pluginsMock = {
createSetup: () => ({
data: dataPluginMock.createSetupContract(),
navigation: navigationPluginMock.createSetupContract(),
embeddable: embeddablePluginMock.createSetupContract(),
inspector: inspectorPluginMock.createSetupContract(),
expressions: expressionsPluginMock.createSetupContract(),
Expand All @@ -38,6 +40,7 @@ export const pluginsMock = {
}),
createStart: () => ({
data: dataPluginMock.createStartContract(),
navigation: navigationPluginMock.createStartContract(),
embeddable: embeddablePluginMock.createStartContract(),
inspector: inspectorPluginMock.createStartContract(),
expressions: expressionsPluginMock.createStartContract(),
Expand Down
5 changes: 5 additions & 0 deletions src/legacy/ui/public/new_platform/new_platform.karma_mock.js
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,11 @@ export const npStart = {
register: sinon.fake(),
},
},
navigation: {
ui: {
TopNavMenu: mockComponent,
},
},
},
};

Expand Down
6 changes: 6 additions & 0 deletions src/legacy/ui/public/new_platform/new_platform.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ import { HomePublicPluginSetup, HomePublicPluginStart } from '../../../../plugin
import { SharePluginSetup, SharePluginStart } from '../../../../plugins/share/public';
import { BfetchPublicSetup, BfetchPublicStart } from '../../../../plugins/bfetch/public';
import { UsageCollectionSetup } from '../../../../plugins/usage_collection/public';
import {
NavigationPublicPluginSetup,
NavigationPublicPluginStart,
} from '../../../../plugins/navigation/public';

export interface PluginsSetup {
bfetch: BfetchPublicSetup;
Expand All @@ -43,6 +47,7 @@ export interface PluginsSetup {
home: HomePublicPluginSetup;
inspector: InspectorSetup;
uiActions: IUiActionsSetup;
navigation: NavigationPublicPluginSetup;
dev_tools: DevToolsSetup;
kibana_legacy: KibanaLegacySetup;
share: SharePluginSetup;
Expand All @@ -58,6 +63,7 @@ export interface PluginsStart {
home: HomePublicPluginStart;
inspector: InspectorStart;
uiActions: IUiActionsStart;
navigation: NavigationPublicPluginStart;
dev_tools: DevToolsStart;
kibana_legacy: KibanaLegacyStart;
share: SharePluginStart;
Expand Down
5 changes: 5 additions & 0 deletions src/plugins/navigation/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# navigation

The navigation plugins exports the `TopNavMenu` component.
It also provides a stateful version of it on the `start` contract.

7 changes: 7 additions & 0 deletions src/plugins/navigation/kibana.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"id": "navigation",
"version": "kibana",
"server": false,
"ui": true,
"requiredPlugins": ["data"]
}
31 changes: 31 additions & 0 deletions src/plugins/navigation/public/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

import { PluginInitializerContext } from '../../../core/public';
export function plugin(initializerContext: PluginInitializerContext) {
return new NavigationPublicPlugin(initializerContext);
}

export { TopNavMenuData, TopNavMenu } from './top_nav_menu';

export { NavigationPublicPluginSetup, NavigationPublicPluginStart } from './types';

// Export plugin after all other imports
import { NavigationPublicPlugin } from './plugin';
export { NavigationPublicPlugin as Plugin };
44 changes: 44 additions & 0 deletions src/plugins/navigation/public/mocks.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { Plugin } from '.';

export type Setup = jest.Mocked<ReturnType<Plugin['setup']>>;
export type Start = jest.Mocked<ReturnType<Plugin['start']>>;

const createSetupContract = (): jest.Mocked<Setup> => {
const setupContract = {
registerMenuItem: jest.fn(),
};

return setupContract;
};

const createStartContract = (): jest.Mocked<Start> => {
const startContract = {
ui: {
TopNavMenu: jest.fn(),
},
};
return startContract;
};

export const navigationPluginMock = {
createSetupContract,
createStartContract,
};
Loading

0 comments on commit fc0d6af

Please sign in to comment.