[refactor] remove drilldown plugin, move components to uiActionsEnhanced (#69403)

* refactor: remove drilldown plugin by moving components to uiActionsEnhanced

* fix

* fix mistake in test

* fix i18n
This commit is contained in:
Anton Dosov 2020-06-18 15:35:22 +02:00 committed by GitHub
parent 4f271c0cbb
commit f33192d35f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
55 changed files with 194 additions and 310 deletions

View file

@ -22,7 +22,6 @@ export const storybookAliases = {
canvas: 'x-pack/plugins/canvas/scripts/storybook_new.js',
codeeditor: 'src/plugins/kibana_react/public/code_editor/scripts/storybook.ts',
dashboard_enhanced: 'x-pack/plugins/dashboard_enhanced/scripts/storybook.js',
drilldowns: 'x-pack/plugins/drilldowns/scripts/storybook.js',
embeddable: 'src/plugins/embeddable/scripts/storybook.js',
infra: 'x-pack/legacy/plugins/infra/scripts/storybook.js',
security_solution: 'x-pack/plugins/security_solution/scripts/storybook.js',

View file

@ -81,7 +81,7 @@ function renderNotifications(
if (tooltip) {
badge = (
<EuiToolTip position="top" delay="regular" content={tooltip}>
<EuiToolTip position="top" delay="regular" content={tooltip} key={notification.id}>
{badge}
</EuiToolTip>
);

View file

@ -13,7 +13,6 @@
"xpack.crossClusterReplication": "plugins/cross_cluster_replication",
"xpack.dashboardMode": "legacy/plugins/dashboard_mode",
"xpack.data": "plugins/data_enhanced",
"xpack.drilldowns": "plugins/drilldowns",
"xpack.embeddableEnhanced": "plugins/embeddable_enhanced",
"xpack.endpoint": "plugins/endpoint",
"xpack.features": "plugins/features",

View file

@ -3,6 +3,6 @@
"version": "kibana",
"server": false,
"ui": true,
"requiredPlugins": ["data", "uiActionsEnhanced", "drilldowns", "embeddable", "dashboard", "share"],
"requiredPlugins": ["data", "uiActionsEnhanced", "embeddable", "dashboard", "share"],
"configPath": ["xpack", "dashboardEnhanced"]
}

View file

@ -10,12 +10,10 @@ import { EmbeddableSetup, EmbeddableStart } from '../../../../src/plugins/embedd
import { DashboardDrilldownsService } from './services';
import { DataPublicPluginStart } from '../../../../src/plugins/data/public';
import { AdvancedUiActionsSetup, AdvancedUiActionsStart } from '../../ui_actions_enhanced/public';
import { DrilldownsSetup, DrilldownsStart } from '../../drilldowns/public';
import { DashboardStart } from '../../../../src/plugins/dashboard/public';
export interface SetupDependencies {
uiActionsEnhanced: AdvancedUiActionsSetup;
drilldowns: DrilldownsSetup;
embeddable: EmbeddableSetup;
share: SharePluginSetup;
}
@ -23,7 +21,6 @@ export interface SetupDependencies {
export interface StartDependencies {
uiActionsEnhanced: AdvancedUiActionsStart;
data: DataPublicPluginStart;
drilldowns: DrilldownsStart;
embeddable: EmbeddableStart;
share: SharePluginStart;
dashboard: DashboardStart;

View file

@ -9,13 +9,13 @@ import {
OpenFlyoutAddDrilldownParams,
} from './flyout_create_drilldown';
import { coreMock } from '../../../../../../../../src/core/public/mocks';
import { drilldownsPluginMock } from '../../../../../../drilldowns/public/mocks';
import { ViewMode } from '../../../../../../../../src/plugins/embeddable/public';
import { TriggerContextMapping } from '../../../../../../../../src/plugins/ui_actions/public';
import { MockEmbeddable, enhanceEmbeddable } from '../test_helpers';
import { uiActionsEnhancedPluginMock } from '../../../../../../ui_actions_enhanced/public/mocks';
const overlays = coreMock.createStart().overlays;
const drilldowns = drilldownsPluginMock.createStartContract();
const uiActionsEnhanced = uiActionsEnhancedPluginMock.createStartContract();
const actionParams: OpenFlyoutAddDrilldownParams = {
start: () => ({
@ -23,7 +23,7 @@ const actionParams: OpenFlyoutAddDrilldownParams = {
overlays,
} as any,
plugins: {
drilldowns,
uiActionsEnhanced,
},
self: {},
}),

View file

@ -16,7 +16,7 @@ import { StartServicesGetter } from '../../../../../../../../src/plugins/kibana_
export const OPEN_FLYOUT_ADD_DRILLDOWN = 'OPEN_FLYOUT_ADD_DRILLDOWN';
export interface OpenFlyoutAddDrilldownParams {
start: StartServicesGetter<Pick<StartDependencies, 'drilldowns'>>;
start: StartServicesGetter<Pick<StartDependencies, 'uiActionsEnhanced'>>;
}
export class FlyoutCreateDrilldownAction implements ActionByType<typeof OPEN_FLYOUT_ADD_DRILLDOWN> {
@ -62,7 +62,7 @@ export class FlyoutCreateDrilldownAction implements ActionByType<typeof OPEN_FLY
const handle = core.overlays.openFlyout(
toMountPoint(
<plugins.drilldowns.FlyoutManageDrilldowns
<plugins.uiActionsEnhanced.FlyoutManageDrilldowns
onClose={() => handle.close()}
viewMode={'create'}
dynamicActionManager={embeddable.enhancements.dynamicActions}

View file

@ -6,14 +6,12 @@
import { FlyoutEditDrilldownAction, FlyoutEditDrilldownParams } from './flyout_edit_drilldown';
import { coreMock } from '../../../../../../../../src/core/public/mocks';
import { drilldownsPluginMock } from '../../../../../../drilldowns/public/mocks';
import { ViewMode } from '../../../../../../../../src/plugins/embeddable/public';
import { uiActionsEnhancedPluginMock } from '../../../../../../ui_actions_enhanced/public/mocks';
import { EnhancedEmbeddable } from '../../../../../../embeddable_enhanced/public';
import { MockEmbeddable, enhanceEmbeddable } from '../test_helpers';
const overlays = coreMock.createStart().overlays;
const drilldowns = drilldownsPluginMock.createStartContract();
const uiActionsPlugin = uiActionsEnhancedPluginMock.createPlugin();
const uiActions = uiActionsPlugin.doStart();
@ -32,7 +30,7 @@ const actionParams: FlyoutEditDrilldownParams = {
overlays,
} as any,
plugins: {
drilldowns,
uiActionsEnhanced: uiActions,
},
self: {},
}),

View file

@ -20,7 +20,7 @@ import { StartServicesGetter } from '../../../../../../../../src/plugins/kibana_
export const OPEN_FLYOUT_EDIT_DRILLDOWN = 'OPEN_FLYOUT_EDIT_DRILLDOWN';
export interface FlyoutEditDrilldownParams {
start: StartServicesGetter<Pick<StartDependencies, 'drilldowns'>>;
start: StartServicesGetter<Pick<StartDependencies, 'uiActionsEnhanced'>>;
}
export class FlyoutEditDrilldownAction implements ActionByType<typeof OPEN_FLYOUT_EDIT_DRILLDOWN> {
@ -58,7 +58,7 @@ export class FlyoutEditDrilldownAction implements ActionByType<typeof OPEN_FLYOU
const handle = core.overlays.openFlyout(
toMountPoint(
<plugins.drilldowns.FlyoutManageDrilldowns
<plugins.uiActionsEnhanced.FlyoutManageDrilldowns
onClose={() => handle.close()}
viewMode={'manage'}
dynamicActionManager={embeddable.enhancements.dynamicActions}

View file

@ -1,3 +0,0 @@
# Drilldowns
Provides functionality to navigate between Kibana apps with context information.

View file

@ -1,8 +0,0 @@
{
"id": "drilldowns",
"version": "kibana",
"server": false,
"ui": true,
"requiredPlugins": ["uiActions", "embeddable", "uiActionsEnhanced"],
"configPath": ["xpack", "drilldowns"]
}

View file

@ -1,15 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { i18n } from '@kbn/i18n';
export const txtClose = i18n.translate('xpack.drilldowns.components.FlyoutFrame.CloseButtonLabel', {
defaultMessage: 'Close',
});
export const txtBack = i18n.translate('xpack.drilldowns.components.FlyoutFrame.BackButtonLabel', {
defaultMessage: 'Back',
});

View file

@ -1,18 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { DrilldownsPlugin } from './plugin';
export {
SetupContract as DrilldownsSetup,
SetupDependencies as DrilldownsSetupDependencies,
StartContract as DrilldownsStart,
StartDependencies as DrilldownsStartDependencies,
} from './plugin';
export function plugin() {
return new DrilldownsPlugin();
}

View file

@ -1,30 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { DrilldownsSetup, DrilldownsStart } from '.';
export type Setup = jest.Mocked<DrilldownsSetup>;
export type Start = jest.Mocked<DrilldownsStart>;
const createSetupContract = (): Setup => {
const setupContract: Setup = {
registerDrilldown: jest.fn(),
};
return setupContract;
};
const createStartContract = (): Start => {
const startContract: Start = {
FlyoutManageDrilldowns: jest.fn(),
};
return startContract;
};
export const drilldownsPluginMock = {
createSetupContract,
createStartContract,
};

View file

@ -1,48 +0,0 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { CoreStart, CoreSetup, Plugin } from 'src/core/public';
import { UiActionsSetup, UiActionsStart } from '../../../../src/plugins/ui_actions/public';
import { AdvancedUiActionsSetup, AdvancedUiActionsStart } from '../../ui_actions_enhanced/public';
import { createFlyoutManageDrilldowns } from './components/connected_flyout_manage_drilldowns';
import { Storage } from '../../../../src/plugins/kibana_utils/public';
export interface SetupDependencies {
uiActions: UiActionsSetup;
uiActionsEnhanced: AdvancedUiActionsSetup;
}
export interface StartDependencies {
uiActions: UiActionsStart;
uiActionsEnhanced: AdvancedUiActionsStart;
}
// eslint-disable-next-line
export interface SetupContract {}
export interface StartContract {
FlyoutManageDrilldowns: ReturnType<typeof createFlyoutManageDrilldowns>;
}
export class DrilldownsPlugin
implements Plugin<SetupContract, StartContract, SetupDependencies, StartDependencies> {
public setup(core: CoreSetup, plugins: SetupDependencies): SetupContract {
return {};
}
public start(core: CoreStart, plugins: StartDependencies): StartContract {
return {
FlyoutManageDrilldowns: createFlyoutManageDrilldowns({
uiActionsEnhanced: plugins.uiActionsEnhanced,
storage: new Storage(localStorage),
notifications: core.notifications,
docsLink: core.docLinks.links.dashboard.drilldowns,
}),
};
}
public stop() {}
}

View file

@ -3970,6 +3970,27 @@
"xpack.uiActionsEnhanced.customizeTimeRangeMenuItem.displayName": "時間範囲のカスタマイズ",
"xpack.uiActionsEnhanced.components.DiscoverDrilldownConfig.chooseIndexPattern": "対象インデックスパターンを選択",
"xpack.uiActionsEnhanced.drilldown.goToDiscover": "Discoverに移動",
"xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.helpText": "ドロップダウンを使用すると、パネルを操作するときに、新しい動作を定義できます。複数のオプションを追加するか、既定のフィルタリング動作を上書きできます。",
"xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.hideHelpButtonLabel": "非表示",
"xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.viewDocsLinkLabel": "ドキュメントを表示",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.createDrilldownButtonLabel": "ドリルダウンを作成",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.createDrilldownTitle": "ドリルダウンを作成",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.deleteDrilldownButtonLabel": "ドリルダウンを削除",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.editDrilldownButtonLabel": "保存",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.editDrilldownTitle": "ドリルダウンを編集",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownDeletedText": "ドリルダウンを削除しました。",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownDeletedTitle": "ドリルダウンが削除されました",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownsCRUDErrorTitle": "ドリルダウンの保存エラー",
"xpack.uiActionsEnhanced.drilldowns.components.FlyoutFrame.BackButtonLabel": "戻る",
"xpack.uiActionsEnhanced.drilldowns.components.FlyoutFrame.CloseButtonLabel": "閉じる",
"xpack.uiActionsEnhanced.drilldowns.components.FlyoutListManageDrilldowns.manageDrilldownsTitle": "ドリルダウンを管理",
"xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.drilldownAction": "アクション",
"xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.nameOfDrilldown": "名前",
"xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.untitledDrilldown": "無題のドリルダウン",
"xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.createDrilldownButtonLabel": "新規作成...",
"xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.deleteDrilldownsButtonLabel": "削除({count}",
"xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.editDrilldownButtonLabel": "編集",
"xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.selectThisDrilldownCheckboxLabel": "このドリルダウンを選択",
"xpack.alerts.alertNavigationRegistry.get.missingNavigationError": "「{consumer}」内のアラートタイプ「{alertType}」のナビゲーションは登録されていません。",
"xpack.alerts.alertNavigationRegistry.register.duplicateDefaultError": "「{consumer}」内のデフォルトナビゲーションは既に登録されています。",
"xpack.alerts.alertNavigationRegistry.register.duplicateNavigationError": "「{consumer}」内のアラートタイプ「{alertType}」のナビゲーションは既に登録されています。",
@ -6122,27 +6143,6 @@
"xpack.data.kueryAutocomplete.orOperatorDescription.oneOrMoreArgumentsText": "1つ以上の引数",
"xpack.data.query.queryBar.cancelLongQuery": "キャンセル",
"xpack.data.query.queryBar.runBeyond": "タイムアウトを越えて実行",
"xpack.drilldowns.components.DrilldownHelloBar.helpText": "ドロップダウンを使用すると、パネルを操作するときに、新しい動作を定義できます。複数のオプションを追加するか、既定のフィルタリング動作を上書きできます。",
"xpack.drilldowns.components.DrilldownHelloBar.hideHelpButtonLabel": "非表示",
"xpack.drilldowns.components.DrilldownHelloBar.viewDocsLinkLabel": "ドキュメントを表示",
"xpack.drilldowns.components.flyoutDrilldownWizard.createDrilldownButtonLabel": "ドリルダウンを作成",
"xpack.drilldowns.components.flyoutDrilldownWizard.createDrilldownTitle": "ドリルダウンを作成",
"xpack.drilldowns.components.flyoutDrilldownWizard.deleteDrilldownButtonLabel": "ドリルダウンを削除",
"xpack.drilldowns.components.flyoutDrilldownWizard.editDrilldownButtonLabel": "保存",
"xpack.drilldowns.components.flyoutDrilldownWizard.editDrilldownTitle": "ドリルダウンを編集",
"xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownDeletedText": "ドリルダウンを削除しました。",
"xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownDeletedTitle": "ドリルダウンが削除されました",
"xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownsCRUDErrorTitle": "ドリルダウンの保存エラー",
"xpack.drilldowns.components.FlyoutFrame.BackButtonLabel": "戻る",
"xpack.drilldowns.components.FlyoutFrame.CloseButtonLabel": "閉じる",
"xpack.drilldowns.components.FlyoutListManageDrilldowns.manageDrilldownsTitle": "ドリルダウンを管理",
"xpack.drilldowns.components.FormCreateDrilldown.drilldownAction": "アクション",
"xpack.drilldowns.components.FormCreateDrilldown.nameOfDrilldown": "名前",
"xpack.drilldowns.components.FormCreateDrilldown.untitledDrilldown": "無題のドリルダウン",
"xpack.drilldowns.components.ListManageDrilldowns.createDrilldownButtonLabel": "新規作成...",
"xpack.drilldowns.components.ListManageDrilldowns.deleteDrilldownsButtonLabel": "削除({count}",
"xpack.drilldowns.components.ListManageDrilldowns.editDrilldownButtonLabel": "編集",
"xpack.drilldowns.components.ListManageDrilldowns.selectThisDrilldownCheckboxLabel": "このドリルダウンを選択",
"xpack.features.advancedSettingsFeatureName": "高度な設定",
"xpack.features.dashboardFeatureName": "ダッシュボード",
"xpack.features.devToolsFeatureName": "開発ツール",

View file

@ -3973,6 +3973,27 @@
"xpack.uiActionsEnhanced.customizeTimeRangeMenuItem.displayName": "定制时间范围",
"xpack.uiActionsEnhanced.components.DiscoverDrilldownConfig.chooseIndexPattern": "选择目标索引模式",
"xpack.uiActionsEnhanced.drilldown.goToDiscover": "前往 Discover示例",
"xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.helpText": "向下钻取可用于定义与面板交互时的新行为。可以添加多个选项或仅覆盖默认筛选行为。",
"xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.hideHelpButtonLabel": "隐藏",
"xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.viewDocsLinkLabel": "查看文档",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.createDrilldownButtonLabel": "创建向下钻取",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.createDrilldownTitle": "创建向下钻取",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.deleteDrilldownButtonLabel": "删除向下钻取",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.editDrilldownButtonLabel": "保存",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.editDrilldownTitle": "编辑向下钻取",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownDeletedText": "您已删除向下钻取。",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownDeletedTitle": "向下钻取已删除",
"xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownsCRUDErrorTitle": "保存向下钻取时出错",
"xpack.uiActionsEnhanced.drilldowns.components.FlyoutFrame.BackButtonLabel": "上一步",
"xpack.uiActionsEnhanced.drilldowns.components.FlyoutFrame.CloseButtonLabel": "关闭",
"xpack.uiActionsEnhanced.drilldowns.components.FlyoutListManageDrilldowns.manageDrilldownsTitle": "管理向下钻取",
"xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.drilldownAction": "操作",
"xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.nameOfDrilldown": "名称",
"xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.untitledDrilldown": "未命名向下钻取",
"xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.createDrilldownButtonLabel": "新建",
"xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.deleteDrilldownsButtonLabel": "删除 ({count})",
"xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.editDrilldownButtonLabel": "编辑",
"xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.selectThisDrilldownCheckboxLabel": "选择此向下钻取",
"xpack.alerts.alertNavigationRegistry.get.missingNavigationError": "在“{consumer}”内针对告警类型“{alertType}”的导航未注册。",
"xpack.alerts.alertNavigationRegistry.register.duplicateDefaultError": "“{consumer}”内的默认导航已注册。",
"xpack.alerts.alertNavigationRegistry.register.duplicateNavigationError": "在“{consumer}”内针对告警类型“{alertType}”的导航已注册。",
@ -6125,27 +6146,6 @@
"xpack.data.kueryAutocomplete.orOperatorDescription.oneOrMoreArgumentsText": "一个或多个参数",
"xpack.data.query.queryBar.cancelLongQuery": "取消",
"xpack.data.query.queryBar.runBeyond": "运行超时",
"xpack.drilldowns.components.DrilldownHelloBar.helpText": "向下钻取可用于定义与面板交互时的新行为。可以添加多个选项或仅覆盖默认筛选行为。",
"xpack.drilldowns.components.DrilldownHelloBar.hideHelpButtonLabel": "隐藏",
"xpack.drilldowns.components.DrilldownHelloBar.viewDocsLinkLabel": "查看文档",
"xpack.drilldowns.components.flyoutDrilldownWizard.createDrilldownButtonLabel": "创建向下钻取",
"xpack.drilldowns.components.flyoutDrilldownWizard.createDrilldownTitle": "创建向下钻取",
"xpack.drilldowns.components.flyoutDrilldownWizard.deleteDrilldownButtonLabel": "删除向下钻取",
"xpack.drilldowns.components.flyoutDrilldownWizard.editDrilldownButtonLabel": "保存",
"xpack.drilldowns.components.flyoutDrilldownWizard.editDrilldownTitle": "编辑向下钻取",
"xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownDeletedText": "您已删除向下钻取。",
"xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownDeletedTitle": "向下钻取已删除",
"xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownsCRUDErrorTitle": "保存向下钻取时出错",
"xpack.drilldowns.components.FlyoutFrame.BackButtonLabel": "上一步",
"xpack.drilldowns.components.FlyoutFrame.CloseButtonLabel": "关闭",
"xpack.drilldowns.components.FlyoutListManageDrilldowns.manageDrilldownsTitle": "管理向下钻取",
"xpack.drilldowns.components.FormCreateDrilldown.drilldownAction": "操作",
"xpack.drilldowns.components.FormCreateDrilldown.nameOfDrilldown": "名称",
"xpack.drilldowns.components.FormCreateDrilldown.untitledDrilldown": "未命名向下钻取",
"xpack.drilldowns.components.ListManageDrilldowns.createDrilldownButtonLabel": "新建",
"xpack.drilldowns.components.ListManageDrilldowns.deleteDrilldownsButtonLabel": "删除 ({count})",
"xpack.drilldowns.components.ListManageDrilldowns.editDrilldownButtonLabel": "编辑",
"xpack.drilldowns.components.ListManageDrilldowns.selectThisDrilldownCheckboxLabel": "选择此向下钻取",
"xpack.features.advancedSettingsFeatureName": "高级设置",
"xpack.features.dashboardFeatureName": "仪表板",
"xpack.features.devToolsFeatureName": "开发工具",

View file

@ -12,28 +12,23 @@ import {
dashboardFactory,
urlFactory,
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
} from '../../../../ui_actions_enhanced/public/components/action_wizard/test_data';
import { Storage } from '../../../../../../src/plugins/kibana_utils/public';
import { StubBrowserStorage } from '../../../../../../src/test_utils/public/stub_browser_storage';
} from '../../../components/action_wizard/test_data';
import { Storage } from '../../../../../../../src/plugins/kibana_utils/public';
import { StubBrowserStorage } from '../../../../../../../src/test_utils/public/stub_browser_storage';
import { mockDynamicActionManager } from './test_data';
import { ActionFactory } from '../../../dynamic_actions';
const FlyoutManageDrilldowns = createFlyoutManageDrilldowns({
uiActionsEnhanced: {
getActionFactories() {
return [dashboardFactory, urlFactory];
actionFactories: [dashboardFactory as ActionFactory, urlFactory as ActionFactory],
storage: new Storage(new StubBrowserStorage()),
toastService: {
addError: (...args: any[]) => {
alert(JSON.stringify(args));
},
addSuccess: (...args: any[]) => {
alert(JSON.stringify(args));
},
} as any,
storage: new Storage(new StubBrowserStorage()),
notifications: {
toasts: {
addError: (...args: any[]) => {
alert(JSON.stringify(args));
},
addSuccess: (...args: any[]) => {
alert(JSON.stringify(args));
},
} as any,
},
});
storiesOf('components/FlyoutManageDrilldowns', module).add('default', () => (

View file

@ -8,29 +8,23 @@ import React from 'react';
import { cleanup, fireEvent, render, wait } from '@testing-library/react/pure';
import '@testing-library/jest-dom/extend-expect';
import { createFlyoutManageDrilldowns } from './connected_flyout_manage_drilldowns';
import {
dashboardFactory,
urlFactory,
} from '../../../../ui_actions_enhanced/public/components/action_wizard/test_data';
import { StubBrowserStorage } from '../../../../../../src/test_utils/public/stub_browser_storage';
import { Storage } from '../../../../../../src/plugins/kibana_utils/public';
import { dashboardFactory, urlFactory } from '../../../components/action_wizard/test_data';
import { StubBrowserStorage } from '../../../../../../../src/test_utils/public/stub_browser_storage';
import { Storage } from '../../../../../../../src/plugins/kibana_utils/public';
import { mockDynamicActionManager } from './test_data';
import { TEST_SUBJ_DRILLDOWN_ITEM } from '../list_manage_drilldowns';
import { WELCOME_MESSAGE_TEST_SUBJ } from '../drilldown_hello_bar';
import { coreMock } from '../../../../../../src/core/public/mocks';
import { coreMock } from '../../../../../../../src/core/public/mocks';
import { NotificationsStart } from 'kibana/public';
import { toastDrilldownsCRUDError } from './i18n';
import { ActionFactory } from '../../../dynamic_actions';
const storage = new Storage(new StubBrowserStorage());
const notifications = coreMock.createStart().notifications;
const toasts = coreMock.createStart().notifications.toasts;
const FlyoutManageDrilldowns = createFlyoutManageDrilldowns({
uiActionsEnhanced: {
getActionFactories() {
return [dashboardFactory, urlFactory];
},
} as any,
storage,
notifications,
actionFactories: [dashboardFactory as ActionFactory, urlFactory as ActionFactory],
storage: new Storage(new StubBrowserStorage()),
toastService: toasts,
});
// https://github.com/elastic/kibana/issues/59469
@ -38,8 +32,8 @@ afterEach(cleanup);
beforeEach(() => {
storage.clear();
(notifications.toasts as jest.Mocked<NotificationsStart['toasts']>).addSuccess.mockClear();
(notifications.toasts as jest.Mocked<NotificationsStart['toasts']>).addError.mockClear();
(toasts as jest.Mocked<NotificationsStart['toasts']>).addSuccess.mockClear();
(toasts as jest.Mocked<NotificationsStart['toasts']>).addError.mockClear();
});
test('Allows to manage drilldowns', async () => {
@ -163,7 +157,7 @@ test('Create only mode', async () => {
});
fireEvent.click(screen.getAllByText(/Create Drilldown/i)[1]);
await wait(() => expect(notifications.toasts.addSuccess).toBeCalled());
await wait(() => expect(toasts.addSuccess).toBeCalled());
expect(onClose).toBeCalled();
expect(await mockDynamicActionManager.state.get().events.length).toBe(1);
});
@ -194,7 +188,7 @@ test('After switching between action factories state is restored', async () => {
expect(screen.getByLabelText(/name/i)).toHaveValue('test');
fireEvent.click(screen.getAllByText(/Create Drilldown/i)[1]);
await wait(() => expect(notifications.toasts.addSuccess).toBeCalled());
await wait(() => expect(toasts.addSuccess).toBeCalled());
expect(await (mockDynamicActionManager.state.get().events[0].action.config as any).url).toBe(
'https://elastic.co'
);
@ -220,7 +214,7 @@ test("Error when can't save drilldown changes", async () => {
});
fireEvent.click(screen.getAllByText(/Create Drilldown/i)[1]);
await wait(() =>
expect(notifications.toasts.addError).toBeCalledWith(error, { title: toastDrilldownsCRUDError })
expect(toasts.addError).toBeCalledWith(error, { title: toastDrilldownsCRUDError })
);
});

View file

@ -5,24 +5,17 @@
*/
import React, { useEffect, useState } from 'react';
import { ToastsStart } from 'kibana/public';
import useMountedState from 'react-use/lib/useMountedState';
import {
UiActionsEnhancedActionFactory as ActionFactory,
AdvancedUiActionsStart,
UiActionsEnhancedDynamicActionManager as DynamicActionManager,
UiActionsEnhancedSerializedAction,
UiActionsEnhancedSerializedEvent,
} from '../../../../ui_actions_enhanced/public';
import { NotificationsStart } from '../../../../../../src/core/public';
import { DrilldownWizardConfig, FlyoutDrilldownWizard } from '../flyout_drilldown_wizard';
import { FlyoutListManageDrilldowns } from '../flyout_list_manage_drilldowns';
import { IStorageWrapper } from '../../../../../../src/plugins/kibana_utils/public';
import { IStorageWrapper } from '../../../../../../../src/plugins/kibana_utils/public';
import {
VALUE_CLICK_TRIGGER,
SELECT_RANGE_TRIGGER,
TriggerContextMapping,
} from '../../../../../../src/plugins/ui_actions/public';
import { useContainerState } from '../../../../../../src/plugins/kibana_utils/public';
} from '../../../../../../../src/plugins/ui_actions/public';
import { useContainerState } from '../../../../../../../src/plugins/kibana_utils/public';
import { DrilldownListItem } from '../list_manage_drilldowns';
import {
toastDrilldownCreated,
@ -31,6 +24,12 @@ import {
toastDrilldownsCRUDError,
toastDrilldownsDeleted,
} from './i18n';
import {
ActionFactory,
DynamicActionManager,
SerializedAction,
SerializedEvent,
} from '../../../dynamic_actions';
interface ConnectedFlyoutManageDrilldownsProps {
dynamicActionManager: DynamicActionManager;
@ -48,19 +47,16 @@ enum Routes {
}
export function createFlyoutManageDrilldowns({
uiActionsEnhanced,
actionFactories: allActionFactories,
storage,
notifications,
toastService,
docsLink,
}: {
uiActionsEnhanced: AdvancedUiActionsStart;
actionFactories: ActionFactory[];
storage: IStorageWrapper;
notifications: NotificationsStart;
toastService: ToastsStart;
docsLink?: string;
}) {
// fine to assume this is static,
// because all action factories should be registered in setup phase
const allActionFactories = uiActionsEnhanced.getActionFactories();
const allActionFactoriesById = allActionFactories.reduce((acc, next) => {
acc[next.id] = next;
return acc;
@ -98,7 +94,7 @@ export function createFlyoutManageDrilldowns({
createDrilldown,
editDrilldown,
deleteDrilldown,
} = useDrilldownsStateManager(props.dynamicActionManager, notifications);
} = useDrilldownsStateManager(props.dynamicActionManager, toastService);
/**
* isCompatible promise is not yet resolved.
@ -130,9 +126,7 @@ export function createFlyoutManageDrilldowns({
/**
* Maps drilldown to list item view model
*/
function mapToDrilldownToDrilldownListItem(
drilldown: UiActionsEnhancedSerializedEvent
): DrilldownListItem {
function mapToDrilldownToDrilldownListItem(drilldown: SerializedEvent): DrilldownListItem {
const actionFactory = allActionFactoriesById[drilldown.action.factoryId];
return {
id: drilldown.eventId,
@ -260,10 +254,7 @@ function useWelcomeMessage(storage: IStorageWrapper): [boolean, () => void] {
];
}
function useDrilldownsStateManager(
actionManager: DynamicActionManager,
notifications: NotificationsStart
) {
function useDrilldownsStateManager(actionManager: DynamicActionManager, toastService: ToastsStart) {
const { events: drilldowns } = useContainerState(actionManager.state);
const [isLoading, setIsLoading] = useState(false);
const isMounted = useMountedState();
@ -273,7 +264,7 @@ function useDrilldownsStateManager(
try {
await op();
} catch (e) {
notifications.toasts.addError(e, {
toastService.addError(e, {
title: toastDrilldownsCRUDError,
});
if (!isMounted) return;
@ -283,12 +274,12 @@ function useDrilldownsStateManager(
}
async function createDrilldown(
action: UiActionsEnhancedSerializedAction,
action: SerializedAction,
selectedTriggers: Array<keyof TriggerContextMapping>
) {
await run(async () => {
await actionManager.createEvent(action, selectedTriggers);
notifications.toasts.addSuccess({
toastService.addSuccess({
title: toastDrilldownCreated.title(action.name),
text: toastDrilldownCreated.text,
});
@ -297,12 +288,12 @@ function useDrilldownsStateManager(
async function editDrilldown(
drilldownId: string,
action: UiActionsEnhancedSerializedAction,
action: SerializedAction,
selectedTriggers: Array<keyof TriggerContextMapping>
) {
await run(async () => {
await actionManager.updateEvent(drilldownId, action, selectedTriggers);
notifications.toasts.addSuccess({
toastService.addSuccess({
title: toastDrilldownEdited.title(action.name),
text: toastDrilldownEdited.text,
});
@ -313,7 +304,7 @@ function useDrilldownsStateManager(
await run(async () => {
drilldownIds = Array.isArray(drilldownIds) ? drilldownIds : [drilldownIds];
await actionManager.deleteEvents(drilldownIds);
notifications.toasts.addSuccess(
toastService.addSuccess(
drilldownIds.length === 1
? {
title: toastDrilldownDeleted.title,

View file

@ -9,7 +9,7 @@ import { i18n } from '@kbn/i18n';
export const toastDrilldownCreated = {
title: (drilldownName: string) =>
i18n.translate(
'xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownCreatedTitle',
'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownCreatedTitle',
{
defaultMessage: 'Drilldown "{drilldownName}" created',
values: {
@ -18,7 +18,7 @@ export const toastDrilldownCreated = {
}
),
text: i18n.translate(
'xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownCreatedText',
'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownCreatedText',
{
// TODO: remove `Save your dashboard before testing.` part
// when drilldowns are used not only in dashboard
@ -30,14 +30,17 @@ export const toastDrilldownCreated = {
export const toastDrilldownEdited = {
title: (drilldownName: string) =>
i18n.translate('xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownEditedTitle', {
defaultMessage: 'Drilldown "{drilldownName}" updated',
values: {
drilldownName,
},
}),
i18n.translate(
'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownEditedTitle',
{
defaultMessage: 'Drilldown "{drilldownName}" updated',
values: {
drilldownName,
},
}
),
text: i18n.translate(
'xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownEditedText',
'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownEditedText',
{
defaultMessage: 'Save your dashboard before testing.',
}
@ -46,13 +49,13 @@ export const toastDrilldownEdited = {
export const toastDrilldownDeleted = {
title: i18n.translate(
'xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownDeletedTitle',
'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownDeletedTitle',
{
defaultMessage: 'Drilldown deleted',
}
),
text: i18n.translate(
'xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownDeletedText',
'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownDeletedText',
{
defaultMessage: 'Save your dashboard before testing.',
}
@ -62,14 +65,14 @@ export const toastDrilldownDeleted = {
export const toastDrilldownsDeleted = {
title: (n: number) =>
i18n.translate(
'xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownsDeletedTitle',
'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownsDeletedTitle',
{
defaultMessage: '{n} drilldowns deleted',
values: { n },
}
),
text: i18n.translate(
'xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownsDeletedText',
'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownsDeletedText',
{
defaultMessage: 'Save your dashboard before testing.',
}
@ -77,7 +80,7 @@ export const toastDrilldownsDeleted = {
};
export const toastDrilldownsCRUDError = i18n.translate(
'xpack.drilldowns.components.flyoutDrilldownWizard.toast.drilldownsCRUDErrorTitle',
'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.toast.drilldownsCRUDErrorTitle',
{
defaultMessage: 'Error saving drilldown',
description: 'Title for generic error toast when persisting drilldown updates failed',

View file

@ -9,9 +9,9 @@ import {
UiActionsEnhancedDynamicActionManager as DynamicActionManager,
UiActionsEnhancedDynamicActionManagerState as DynamicActionManagerState,
UiActionsEnhancedSerializedAction,
} from '../../../../ui_actions_enhanced/public';
import { TriggerContextMapping } from '../../../../../../src/plugins/ui_actions/public';
import { createStateContainer } from '../../../../../../src/plugins/kibana_utils/common';
} from '../../../index';
import { TriggerContextMapping } from '../../../../../../../src/plugins/ui_actions/public';
import { createStateContainer } from '../../../../../../../src/plugins/kibana_utils/common';
class MockDynamicActionManager implements PublicMethodsOf<DynamicActionManager> {
public readonly state = createStateContainer<DynamicActionManagerState>({

View file

@ -6,7 +6,7 @@
import * as React from 'react';
import { storiesOf } from '@storybook/react';
import { DrilldownHelloBar } from '.';
import { DrilldownHelloBar } from './index';
const Demo = () => {
const [show, setShow] = React.useState(true);

View file

@ -7,7 +7,7 @@
import { i18n } from '@kbn/i18n';
export const txtHelpText = i18n.translate(
'xpack.drilldowns.components.DrilldownHelloBar.helpText',
'xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.helpText',
{
defaultMessage:
'Drilldowns enable you to define new behaviors for interacting with panels. You can add multiple actions and override the default filter.',
@ -15,14 +15,14 @@ export const txtHelpText = i18n.translate(
);
export const txtViewDocsLinkLabel = i18n.translate(
'xpack.drilldowns.components.DrilldownHelloBar.viewDocsLinkLabel',
'xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.viewDocsLinkLabel',
{
defaultMessage: 'View docs',
}
);
export const txtHideHelpButtonLabel = i18n.translate(
'xpack.drilldowns.components.DrilldownHelloBar.hideHelpButtonLabel',
'xpack.uiActionsEnhanced.drilldowns.components.DrilldownHelloBar.hideHelpButtonLabel',
{
defaultMessage: 'Hide',
}

View file

@ -9,13 +9,13 @@
import * as React from 'react';
import { EuiFlyout } from '@elastic/eui';
import { storiesOf } from '@storybook/react';
import { FlyoutDrilldownWizard } from '.';
import { FlyoutDrilldownWizard } from './index';
import {
dashboardFactory,
urlFactory,
// eslint-disable-next-line @kbn/eslint/no-restricted-paths
} from '../../../../ui_actions_enhanced/public/components/action_wizard/test_data';
import { UiActionsEnhancedActionFactory as ActionFactory } from '../../../../ui_actions_enhanced/public/';
} from '../../../components/action_wizard/test_data';
import { ActionFactory } from '../../../dynamic_actions';
storiesOf('components/FlyoutDrilldownWizard', module)
.add('default', () => {

View file

@ -16,7 +16,7 @@ import {
txtEditDrilldownTitle,
} from './i18n';
import { DrilldownHelloBar } from '../drilldown_hello_bar';
import { UiActionsEnhancedActionFactory as ActionFactory } from '../../../../ui_actions_enhanced/public';
import { ActionFactory } from '../../../dynamic_actions';
export interface DrilldownWizardConfig<ActionConfig extends object = object> {
name: string;

View file

@ -7,35 +7,35 @@
import { i18n } from '@kbn/i18n';
export const txtCreateDrilldownTitle = i18n.translate(
'xpack.drilldowns.components.flyoutDrilldownWizard.createDrilldownTitle',
'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.createDrilldownTitle',
{
defaultMessage: 'Create Drilldown',
}
);
export const txtEditDrilldownTitle = i18n.translate(
'xpack.drilldowns.components.flyoutDrilldownWizard.editDrilldownTitle',
'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.editDrilldownTitle',
{
defaultMessage: 'Edit Drilldown',
}
);
export const txtCreateDrilldownButtonLabel = i18n.translate(
'xpack.drilldowns.components.flyoutDrilldownWizard.createDrilldownButtonLabel',
'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.createDrilldownButtonLabel',
{
defaultMessage: 'Create drilldown',
}
);
export const txtEditDrilldownButtonLabel = i18n.translate(
'xpack.drilldowns.components.flyoutDrilldownWizard.editDrilldownButtonLabel',
'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.editDrilldownButtonLabel',
{
defaultMessage: 'Save',
}
);
export const txtDeleteDrilldownButtonLabel = i18n.translate(
'xpack.drilldowns.components.flyoutDrilldownWizard.deleteDrilldownButtonLabel',
'xpack.uiActionsEnhanced.drilldowns.components.flyoutDrilldownWizard.deleteDrilldownButtonLabel',
{
defaultMessage: 'Delete drilldown',
}

View file

@ -9,7 +9,7 @@
import * as React from 'react';
import { EuiFlyout, EuiButton } from '@elastic/eui';
import { storiesOf } from '@storybook/react';
import { FlyoutFrame } from '.';
import { FlyoutFrame } from './index';
storiesOf('components/FlyoutFrame', module)
.add('default', () => {

View file

@ -7,7 +7,7 @@
import React from 'react';
import { render } from 'react-dom';
import { render as renderTestingLibrary, fireEvent, cleanup } from '@testing-library/react/pure';
import { FlyoutFrame } from '.';
import { FlyoutFrame } from './index';
afterEach(cleanup);

View file

@ -0,0 +1,21 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
import { i18n } from '@kbn/i18n';
export const txtClose = i18n.translate(
'xpack.uiActionsEnhanced.drilldowns.components.FlyoutFrame.CloseButtonLabel',
{
defaultMessage: 'Close',
}
);
export const txtBack = i18n.translate(
'xpack.uiActionsEnhanced.drilldowns.components.FlyoutFrame.BackButtonLabel',
{
defaultMessage: 'Back',
}
);

View file

@ -7,7 +7,7 @@
import { i18n } from '@kbn/i18n';
export const txtManageDrilldowns = i18n.translate(
'xpack.drilldowns.components.FlyoutListManageDrilldowns.manageDrilldownsTitle',
'xpack.uiActionsEnhanced.drilldowns.components.FlyoutListManageDrilldowns.manageDrilldownsTitle',
{
defaultMessage: 'Manage Drilldowns',
}

View file

@ -6,7 +6,7 @@
import * as React from 'react';
import { storiesOf } from '@storybook/react';
import { FormDrilldownWizard } from '.';
import { FormDrilldownWizard } from './index';
const DemoEditName: React.FC = () => {
const [name, setName] = React.useState('');

View file

@ -7,10 +7,8 @@
import React from 'react';
import { EuiFieldText, EuiForm, EuiFormRow, EuiSpacer } from '@elastic/eui';
import { txtDrilldownAction, txtNameOfDrilldown, txtUntitledDrilldown } from './i18n';
import {
UiActionsEnhancedActionFactory as ActionFactory,
ActionWizard,
} from '../../../../ui_actions_enhanced/public';
import { ActionFactory } from '../../../dynamic_actions';
import { ActionWizard } from '../../../components/action_wizard';
const noopFn = () => {};

View file

@ -7,21 +7,21 @@
import { i18n } from '@kbn/i18n';
export const txtNameOfDrilldown = i18n.translate(
'xpack.drilldowns.components.FormCreateDrilldown.nameOfDrilldown',
'xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.nameOfDrilldown',
{
defaultMessage: 'Name',
}
);
export const txtUntitledDrilldown = i18n.translate(
'xpack.drilldowns.components.FormCreateDrilldown.untitledDrilldown',
'xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.untitledDrilldown',
{
defaultMessage: 'Untitled drilldown',
}
);
export const txtDrilldownAction = i18n.translate(
'xpack.drilldowns.components.FormCreateDrilldown.drilldownAction',
'xpack.uiActionsEnhanced.drilldowns.components.FormCreateDrilldown.drilldownAction',
{
defaultMessage: 'Action',
}

View file

@ -4,10 +4,4 @@
* you may not use this file except in compliance with the Elastic License.
*/
import { join } from 'path';
// eslint-disable-next-line
require('@kbn/storybook').runStorybookCli({
name: 'drilldowns',
storyGlobs: [join(__dirname, '..', 'public', 'components', '**', '*.story.tsx')],
});
export { createFlyoutManageDrilldowns } from './connected_flyout_manage_drilldowns';

View file

@ -7,29 +7,32 @@
import { i18n } from '@kbn/i18n';
export const txtCreateDrilldown = i18n.translate(
'xpack.drilldowns.components.ListManageDrilldowns.createDrilldownButtonLabel',
'xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.createDrilldownButtonLabel',
{
defaultMessage: 'Create new',
}
);
export const txtEditDrilldown = i18n.translate(
'xpack.drilldowns.components.ListManageDrilldowns.editDrilldownButtonLabel',
'xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.editDrilldownButtonLabel',
{
defaultMessage: 'Edit',
}
);
export const txtDeleteDrilldowns = (count: number) =>
i18n.translate('xpack.drilldowns.components.ListManageDrilldowns.deleteDrilldownsButtonLabel', {
defaultMessage: 'Delete ({count})',
values: {
count,
},
});
i18n.translate(
'xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.deleteDrilldownsButtonLabel',
{
defaultMessage: 'Delete ({count})',
values: {
count,
},
}
);
export const txtSelectDrilldown = i18n.translate(
'xpack.drilldowns.components.ListManageDrilldowns.selectThisDrilldownCheckboxLabel',
'xpack.uiActionsEnhanced.drilldowns.components.ListManageDrilldowns.selectThisDrilldownCheckboxLabel',
{
defaultMessage: 'Select this drilldown',
}

View file

@ -5,3 +5,4 @@
*/
export * from './drilldown_definition';
export * from './components';

View file

@ -27,6 +27,7 @@ const createStartContract = (): Start => {
...uiActionsPluginMock.createStartContract(),
getActionFactories: jest.fn(),
getActionFactory: jest.fn(),
FlyoutManageDrilldowns: jest.fn(),
};
return startContract;

View file

@ -24,7 +24,6 @@ import {
CUSTOM_TIME_RANGE,
TimeRangeActionContext,
} from './custom_time_range_action';
import {
CustomTimeRangeBadge,
CUSTOM_TIME_RANGE_BADGE,
@ -32,6 +31,8 @@ import {
} from './custom_time_range_badge';
import { CommonlyUsedRange } from './types';
import { UiActionsServiceEnhancements } from './services';
import { createFlyoutManageDrilldowns } from './drilldowns';
import { Storage } from '../../../../src/plugins/kibana_utils/public';
interface SetupDependencies {
embeddable: EmbeddableSetup; // Embeddable are needed because they register basic triggers/actions.
@ -49,7 +50,9 @@ export interface SetupContract
export interface StartContract
extends UiActionsStart,
Pick<UiActionsServiceEnhancements, 'getActionFactory' | 'getActionFactories'> {}
Pick<UiActionsServiceEnhancements, 'getActionFactory' | 'getActionFactories'> {
FlyoutManageDrilldowns: ReturnType<typeof createFlyoutManageDrilldowns>;
}
declare module '../../../../src/plugins/ui_actions/public' {
export interface ActionContextMapping {
@ -94,6 +97,12 @@ export class AdvancedUiActionsPublicPlugin
return {
...uiActions,
...this.enhancements,
FlyoutManageDrilldowns: createFlyoutManageDrilldowns({
actionFactories: this.enhancements.getActionFactories(),
storage: new Storage(window?.localStorage),
toastService: core.notifications.toasts,
docsLink: core.docLinks.links.dashboard.drilldowns,
}),
};
}

View file

@ -9,5 +9,8 @@ import { join } from 'path';
// eslint-disable-next-line
require('@kbn/storybook').runStorybookCli({
name: 'ui_actions_enhanced',
storyGlobs: [join(__dirname, '..', 'public', 'components', '**', '*.story.tsx')],
storyGlobs: [
join(__dirname, '..', 'public', 'components', '**', '*.story.tsx'),
join(__dirname, '..', 'public', 'drilldowns', 'components', '**', '*.story.tsx'),
],
});