Skip to content

Commit 4fb2b0d

Browse files
authored
feat(confluence): create search result list item extension for ConfluenceResultListItem (#220)
Signed-off-by: bejanssens <[email protected]>
1 parent 3a5a772 commit 4fb2b0d

File tree

5 files changed

+40
-26
lines changed

5 files changed

+40
-26
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@philips-software/backstage-plugin-search-confluence-frontend': minor
3+
---
4+
5+
Added search result list item extension for ConfluenceResultListItem

workspaces/confluence/plugins/search-confluence-frontend/README.md

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,23 +39,7 @@ import {
3939
/>
4040

4141
<SearchResult>
42-
{({ results }) => (
43-
<List>
44-
{results.map(({ type, document, highlight, rank }) => {
45-
switch (type) {
46-
// Add the following case to the switch statement above the default case
47-
case 'confluence':
48-
return (
49-
<ConfluenceResultListItem
50-
key={document.location}
51-
result={document}
52-
highlight={highlight}
53-
/>
54-
);
55-
// ...
56-
}
57-
})}
58-
</List>
59-
)}
42+
// ...
43+
<ConfluenceResultListItem />
6044
</SearchResult>
6145
```

workspaces/confluence/plugins/search-confluence-frontend/report.api.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
44
55
```ts
6+
/// <reference types="react" />
7+
68
import { BackstagePlugin } from '@backstage/core-plugin-api';
79
import { IndexableDocument } from '@backstage/plugin-search-common';
810
import { default as React_2 } from 'react';
911
import { ResultHighlight } from '@backstage/plugin-search-common';
12+
import { SearchResultListItemExtensionProps } from '@backstage/plugin-search-react';
1013

1114
// @public
1215
export interface ConfluenceResultItemProps {
@@ -15,10 +18,9 @@ export interface ConfluenceResultItemProps {
1518
}
1619

1720
// @public
18-
export const ConfluenceResultListItem: ({
19-
result,
20-
highlight,
21-
}: ConfluenceResultItemProps) => React_2.JSX.Element | null;
21+
export const ConfluenceResultListItem: (
22+
props: SearchResultListItemExtensionProps<ConfluenceResultItemProps>,
23+
) => JSX.Element | null;
2224

2325
// @public
2426
export const ConfluenceSearchIcon: () => React_2.JSX.Element;

workspaces/confluence/plugins/search-confluence-frontend/src/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
* @packageDocumentation
55
*/
66

7-
export { searchConfluenceFrontendPlugin } from './plugin';
8-
export { ConfluenceSearchIcon } from './icons';
97
export {
8+
searchConfluenceFrontendPlugin,
109
ConfluenceResultListItem,
11-
type ConfluenceResultItemProps,
12-
} from './components/ConfluenceResultListItem';
10+
} from './plugin';
11+
export { ConfluenceSearchIcon } from './icons';
12+
export { type ConfluenceResultItemProps } from './components/ConfluenceResultListItem';

workspaces/confluence/plugins/search-confluence-frontend/src/plugin.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
import { createPlugin } from '@backstage/core-plugin-api';
2+
import {
3+
createSearchResultListItemExtension,
4+
SearchResultListItemExtensionProps,
5+
} from '@backstage/plugin-search-react';
6+
import { ConfluenceResultItemProps } from './components/ConfluenceResultListItem';
27

38
/**
49
* A plugin to display search results from Confluence.
@@ -8,3 +13,21 @@ import { createPlugin } from '@backstage/core-plugin-api';
813
export const searchConfluenceFrontendPlugin = createPlugin({
914
id: 'search-confluence-frontend',
1015
});
16+
17+
/**
18+
* A search result item extension for Confluence.
19+
*
20+
* @public
21+
*/
22+
export const ConfluenceResultListItem: (
23+
props: SearchResultListItemExtensionProps<ConfluenceResultItemProps>,
24+
) => JSX.Element | null = searchConfluenceFrontendPlugin.provide(
25+
createSearchResultListItemExtension({
26+
name: 'ConfluenceResultListItem',
27+
component: () =>
28+
import('./components/ConfluenceResultListItem').then(
29+
m => m.ConfluenceResultListItem,
30+
),
31+
predicate: result => result.type === 'confluence',
32+
}),
33+
);

0 commit comments

Comments
 (0)