-
Notifications
You must be signed in to change notification settings - Fork 8.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Onboarding] Expose settings component in index_management to reuse i…
…n search_indices (#193492) ## Summary This PR exposes `index_management` index details [settings component ](https://github.com/elastic/kibana/blob/main/x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/details_page_settings.tsx#L16)during `index_management` plugin start. This would enable `search_indices` plugin to reuse. With this change, in new search index details page user can : - Can View settings - Update settings & save - Reset changes <img width="1719" alt="Screenshot 2024-09-19 at 5 48 28 PM" src="https://github.com/user-attachments/assets/a6179fb6-c180-434e-bdb1-3c784006069f"> **How to test:** 1. Enable searchIndices plugin in `kibana.dev.yml` as this plugin is behind Feature flag ``` xpack.searchIndices.enabled: true ``` 2. [Create new index](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html) 3. Navigate to `/app/elasticsearch/indices/index_details/${indexName}/settings` ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [x] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
- Loading branch information
1 parent
92f1320
commit d925391
Showing
14 changed files
with
220 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
29 changes: 29 additions & 0 deletions
29
...ctions/home/index_list/details_page/with_context_components/index_settings_embeddable.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
/* | ||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one | ||
* or more contributor license agreements. Licensed under the Elastic License | ||
* 2.0; you may not use this file except in compliance with the Elastic License | ||
* 2.0. | ||
*/ | ||
|
||
/* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one | ||
* or more contributor license agreements. Licensed under the Elastic License | ||
* 2.0; you may not use this file except in compliance with the Elastic License | ||
* 2.0. | ||
*/ | ||
|
||
import { EuiLoadingSpinner } from '@elastic/eui'; | ||
import { dynamic } from '@kbn/shared-ux-utility'; | ||
import React, { Suspense, ComponentType } from 'react'; | ||
import { IndexSettingWithContextProps } from './index_settings_with_context_types'; | ||
|
||
const IndexSettingsWithContext = dynamic<ComponentType<IndexSettingWithContextProps>>(() => | ||
import('./index_settings_with_context').then((mod) => ({ default: mod.IndexSettingsWithContext })) | ||
); | ||
|
||
export const IndexSettings: React.FC<IndexSettingWithContextProps> = (props) => { | ||
return ( | ||
<Suspense fallback={<EuiLoadingSpinner />}> | ||
<IndexSettingsWithContext {...props} /> | ||
</Suspense> | ||
); | ||
}; |
52 changes: 52 additions & 0 deletions
52
...ions/home/index_list/details_page/with_context_components/index_settings_with_context.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
/* | ||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one | ||
* or more contributor license agreements. Licensed under the Elastic License | ||
* 2.0; you may not use this file except in compliance with the Elastic License | ||
* 2.0. | ||
*/ | ||
import React from 'react'; | ||
import { documentationService } from '../../../../../services'; | ||
import { UIM_APP_NAME } from '../../../../../../../common/constants/ui_metric'; | ||
import { httpService } from '../../../../../services/http'; | ||
import { notificationService } from '../../../../../services/notification'; | ||
import { UiMetricService } from '../../../../../services/ui_metric'; | ||
import { AppDependencies, IndexManagementAppContext } from '../../../../..'; | ||
import { DetailsPageSettings } from '../details_page_settings'; | ||
import { IndexSettingWithContextProps } from './index_settings_with_context_types'; | ||
import { setUiMetricService } from '../../../../../services/api'; | ||
|
||
export const IndexSettingsWithContext: React.FC<IndexSettingWithContextProps> = ({ | ||
core, | ||
dependencies, | ||
indexName, | ||
usageCollection, | ||
}) => { | ||
// this normally happens when the index management app is rendered | ||
// but if components are embedded elsewhere that setup is skipped, so we have to do it here | ||
// would do it in plugin.ts but that blows up the bundle size | ||
// can't do it in an effect because then the first http call fails as the instantiation happens after first render | ||
if (!httpService.httpClient) { | ||
httpService.setup(core.http); | ||
notificationService.setup(core.notifications); | ||
} | ||
documentationService.setup(core.docLinks); | ||
|
||
const uiMetricService = new UiMetricService(UIM_APP_NAME); | ||
setUiMetricService(uiMetricService); | ||
uiMetricService.setup(usageCollection); | ||
|
||
const newDependencies: AppDependencies = { | ||
...dependencies, | ||
services: { | ||
...(dependencies.services || {}), | ||
httpService, | ||
notificationService, | ||
uiMetricService, | ||
}, | ||
}; | ||
return ( | ||
<IndexManagementAppContext core={core} dependencies={newDependencies}> | ||
<DetailsPageSettings indexName={indexName} /> | ||
</IndexManagementAppContext> | ||
); | ||
}; |
22 changes: 22 additions & 0 deletions
22
...ome/index_list/details_page/with_context_components/index_settings_with_context_types.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
/* | ||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one | ||
* or more contributor license agreements. Licensed under the Elastic License | ||
* 2.0; you may not use this file except in compliance with the Elastic License | ||
* 2.0. | ||
*/ | ||
|
||
import { CoreStart } from '@kbn/core/public'; | ||
import type { IndexSettingProps } from '@kbn/index-management-shared-types'; | ||
import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public'; | ||
import { AppDependencies } from '../../../../../app_context'; | ||
import { ExtensionsService } from '../../../../../../services/extensions_service'; | ||
|
||
export type IndexSettingWithContextProps = { | ||
core: CoreStart; | ||
// omitting services here to constitute them inside the component | ||
// this helps reduce bundle size significantly | ||
dependencies: Omit<AppDependencies, 'services'> & { | ||
services: { extensionsService: ExtensionsService }; | ||
}; | ||
usageCollection: UsageCollectionSetup; | ||
} & IndexSettingProps; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
24 changes: 24 additions & 0 deletions
24
x-pack/plugins/search_indices/public/components/indices/details_page_settings.tsx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
/* | ||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one | ||
* or more contributor license agreements. Licensed under the Elastic License | ||
* 2.0; you may not use this file except in compliance with the Elastic License | ||
* 2.0. | ||
*/ | ||
|
||
import React from 'react'; | ||
import { useMemo } from 'react'; | ||
import { useKibana } from '../../hooks/use_kibana'; | ||
|
||
interface SearchIndexDetailsSettingsProps { | ||
indexName: string; | ||
} | ||
export const SearchIndexDetailsSettings = ({ indexName }: SearchIndexDetailsSettingsProps) => { | ||
const { indexManagement, history } = useKibana().services; | ||
|
||
const IndexSettingsComponent = useMemo( | ||
() => indexManagement.getIndexSettingsComponent({ history }), | ||
[indexManagement, history] | ||
); | ||
|
||
return <IndexSettingsComponent indexName={indexName} />; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters