@backstage/plugin-search 1.6.2-next.2 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/alpha.d.ts +14 -13
- package/dist/alpha.esm.js +96 -98
- package/dist/alpha.esm.js.map +1 -1
- package/dist/index.d.ts +15 -1
- package/dist/index.esm.js +1 -0
- package/dist/index.esm.js.map +1 -1
- package/dist/package.json.esm.js +2 -1
- package/dist/package.json.esm.js.map +1 -1
- package/dist/translation.esm.js.map +1 -1
- package/package.json +15 -14
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @backstage/plugin-search
|
|
2
2
|
|
|
3
|
+
## 1.7.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 0be2541: Promoted the plugin's translation ref to the stable package entry point. It was previously only available through the alpha entry point.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- d5eb954: Fixes the search component not registering the first search on navigate to the search page.
|
|
12
|
+
- aa29b50: New frontend system pages now use the default plugin header together with `HeaderPage` instead of the legacy core page header pattern.
|
|
13
|
+
- 3f36ce1: Updated alpha plugin icons to follow the new frontend icon sizing rules when rendered in plugin and navigation surfaces.
|
|
14
|
+
- Updated dependencies
|
|
15
|
+
- @backstage/plugin-catalog-react@2.1.0
|
|
16
|
+
- @backstage/ui@0.13.0
|
|
17
|
+
- @backstage/core-plugin-api@1.12.4
|
|
18
|
+
- @backstage/core-components@0.18.8
|
|
19
|
+
- @backstage/frontend-plugin-api@0.15.0
|
|
20
|
+
- @backstage/plugin-search-react@1.11.0
|
|
21
|
+
|
|
3
22
|
## 1.6.2-next.2
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
package/dist/alpha.d.ts
CHANGED
|
@@ -3,19 +3,6 @@ import * as _backstage_plugin_search_react_alpha from '@backstage/plugin-search-
|
|
|
3
3
|
import * as react from 'react';
|
|
4
4
|
import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* @alpha
|
|
8
|
-
*/
|
|
9
|
-
declare const searchTranslationRef: _backstage_frontend_plugin_api.TranslationRef<"search", {
|
|
10
|
-
readonly "searchModal.viewFullResults": "View Full Results";
|
|
11
|
-
readonly "searchType.tabs.allTitle": "All";
|
|
12
|
-
readonly "searchType.allResults": "All Results";
|
|
13
|
-
readonly "searchType.accordion.collapse": "Collapse";
|
|
14
|
-
readonly "searchType.accordion.numberOfResults": "{{number}} results";
|
|
15
|
-
readonly "searchType.accordion.allTitle": "All";
|
|
16
|
-
readonly "sidebarSearchModal.title": "Search";
|
|
17
|
-
}>;
|
|
18
|
-
|
|
19
6
|
/** @alpha */
|
|
20
7
|
declare const searchApi: _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
21
8
|
kind: "api";
|
|
@@ -211,4 +198,18 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
211
198
|
}>;
|
|
212
199
|
}>;
|
|
213
200
|
|
|
201
|
+
/**
|
|
202
|
+
* @alpha
|
|
203
|
+
* @deprecated Import from `@backstage/plugin-search` instead.
|
|
204
|
+
*/
|
|
205
|
+
declare const searchTranslationRef: _backstage_frontend_plugin_api.TranslationRef<"search", {
|
|
206
|
+
readonly "searchModal.viewFullResults": "View Full Results";
|
|
207
|
+
readonly "searchType.tabs.allTitle": "All";
|
|
208
|
+
readonly "searchType.allResults": "All Results";
|
|
209
|
+
readonly "searchType.accordion.collapse": "Collapse";
|
|
210
|
+
readonly "searchType.accordion.numberOfResults": "{{number}} results";
|
|
211
|
+
readonly "searchType.accordion.allTitle": "All";
|
|
212
|
+
readonly "sidebarSearchModal.title": "Search";
|
|
213
|
+
}>;
|
|
214
|
+
|
|
214
215
|
export { _default as default, searchApi, searchNavItem, searchPage, searchTranslationRef };
|
package/dist/alpha.esm.js
CHANGED
|
@@ -4,7 +4,7 @@ import Grid from '@material-ui/core/Grid';
|
|
|
4
4
|
import Paper from '@material-ui/core/Paper';
|
|
5
5
|
import { makeStyles } from '@material-ui/core/styles';
|
|
6
6
|
import SearchIcon from '@material-ui/icons/Search';
|
|
7
|
-
import { useSidebarPinState,
|
|
7
|
+
import { useSidebarPinState, Content, CatalogIcon, DocsIcon } from '@backstage/core-components';
|
|
8
8
|
import { fetchApiRef, discoveryApiRef, useApi } from '@backstage/core-plugin-api';
|
|
9
9
|
import { ApiBlueprint, PageBlueprint, createExtensionInput, NavItemBlueprint, createFrontendPlugin, configApiRef } from '@backstage/frontend-plugin-api';
|
|
10
10
|
import { catalogApiRef, CATALOG_FILTER_EXISTS } from '@backstage/plugin-catalog-react';
|
|
@@ -14,7 +14,7 @@ import { rootRouteRef } from './plugin.esm.js';
|
|
|
14
14
|
import { SearchClient } from './apis.esm.js';
|
|
15
15
|
import { SearchType } from './components/SearchType/SearchType.esm.js';
|
|
16
16
|
import { UrlUpdater } from './components/SearchPage/SearchPage.esm.js';
|
|
17
|
-
|
|
17
|
+
import { searchTranslationRef as searchTranslationRef$1 } from './translation.esm.js';
|
|
18
18
|
|
|
19
19
|
const searchApi = ApiBlueprint.make({
|
|
20
20
|
params: (defineParams) => defineParams({
|
|
@@ -72,106 +72,103 @@ const searchPage = PageBlueprint.makeWithOverrides({
|
|
|
72
72
|
const { types } = useSearch();
|
|
73
73
|
const catalogApi = useApi(catalogApiRef);
|
|
74
74
|
const configApi = useApi(configApiRef);
|
|
75
|
-
return /* @__PURE__ */ jsxs(
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
/* @__PURE__ */ jsx(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
defaultValue: configApi.getOptionalString(
|
|
85
|
-
"search.defaultType"
|
|
86
|
-
),
|
|
87
|
-
showCounts: true,
|
|
88
|
-
types: [
|
|
89
|
-
{
|
|
90
|
-
value: "software-catalog",
|
|
91
|
-
name: "Software Catalog",
|
|
92
|
-
icon: /* @__PURE__ */ jsx(CatalogIcon, {})
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
value: "techdocs",
|
|
96
|
-
name: "Documentation",
|
|
97
|
-
icon: /* @__PURE__ */ jsx(DocsIcon, {})
|
|
98
|
-
}
|
|
99
|
-
].concat(resultTypes)
|
|
100
|
-
}
|
|
101
|
-
),
|
|
102
|
-
/* @__PURE__ */ jsxs(Paper, { className: classes.filters, children: [
|
|
103
|
-
types.includes("techdocs") && /* @__PURE__ */ jsx(
|
|
104
|
-
SearchFilter.Select,
|
|
105
|
-
{
|
|
106
|
-
className: classes.filter,
|
|
107
|
-
label: "Entity",
|
|
108
|
-
name: "name",
|
|
109
|
-
values: async () => {
|
|
110
|
-
const { items } = await catalogApi.getEntities({
|
|
111
|
-
fields: ["metadata.name"],
|
|
112
|
-
filter: {
|
|
113
|
-
"metadata.annotations.backstage.io/techdocs-ref": CATALOG_FILTER_EXISTS
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
const names = items.map(
|
|
117
|
-
(entity) => entity.metadata.name
|
|
118
|
-
);
|
|
119
|
-
names.sort();
|
|
120
|
-
return names;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
75
|
+
return /* @__PURE__ */ jsx(Content, { children: /* @__PURE__ */ jsxs(Grid, { container: true, direction: "row", children: [
|
|
76
|
+
/* @__PURE__ */ jsx(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsx(SearchBar, { debounceTime: 100 }) }),
|
|
77
|
+
!isMobile && /* @__PURE__ */ jsxs(Grid, { item: true, xs: 3, children: [
|
|
78
|
+
/* @__PURE__ */ jsx(
|
|
79
|
+
SearchType.Accordion,
|
|
80
|
+
{
|
|
81
|
+
name: "Result Type",
|
|
82
|
+
defaultValue: configApi.getOptionalString(
|
|
83
|
+
"search.defaultType"
|
|
123
84
|
),
|
|
124
|
-
|
|
125
|
-
|
|
85
|
+
showCounts: true,
|
|
86
|
+
types: [
|
|
126
87
|
{
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
"API",
|
|
132
|
-
"Component",
|
|
133
|
-
"Domain",
|
|
134
|
-
"Group",
|
|
135
|
-
"Location",
|
|
136
|
-
"Resource",
|
|
137
|
-
"System",
|
|
138
|
-
"Template",
|
|
139
|
-
"User"
|
|
140
|
-
]
|
|
141
|
-
}
|
|
142
|
-
),
|
|
143
|
-
/* @__PURE__ */ jsx(
|
|
144
|
-
SearchFilter.Checkbox,
|
|
88
|
+
value: "software-catalog",
|
|
89
|
+
name: "Software Catalog",
|
|
90
|
+
icon: /* @__PURE__ */ jsx(CatalogIcon, {})
|
|
91
|
+
},
|
|
145
92
|
{
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
values: ["experimental", "production"]
|
|
93
|
+
value: "techdocs",
|
|
94
|
+
name: "Documentation",
|
|
95
|
+
icon: /* @__PURE__ */ jsx(DocsIcon, {})
|
|
150
96
|
}
|
|
151
|
-
)
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
97
|
+
].concat(resultTypes)
|
|
98
|
+
}
|
|
99
|
+
),
|
|
100
|
+
/* @__PURE__ */ jsxs(Paper, { className: classes.filters, children: [
|
|
101
|
+
types.includes("techdocs") && /* @__PURE__ */ jsx(
|
|
102
|
+
SearchFilter.Select,
|
|
103
|
+
{
|
|
104
|
+
className: classes.filter,
|
|
105
|
+
label: "Entity",
|
|
106
|
+
name: "name",
|
|
107
|
+
values: async () => {
|
|
108
|
+
const { items } = await catalogApi.getEntities({
|
|
109
|
+
fields: ["metadata.name"],
|
|
110
|
+
filter: {
|
|
111
|
+
"metadata.annotations.backstage.io/techdocs-ref": CATALOG_FILTER_EXISTS
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
const names = items.map(
|
|
115
|
+
(entity) => entity.metadata.name
|
|
116
|
+
);
|
|
117
|
+
names.sort();
|
|
118
|
+
return names;
|
|
168
119
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
/* @__PURE__ */ jsx(
|
|
120
|
+
}
|
|
121
|
+
),
|
|
122
|
+
/* @__PURE__ */ jsx(
|
|
123
|
+
SearchFilter.Select,
|
|
124
|
+
{
|
|
125
|
+
className: classes.filter,
|
|
126
|
+
label: "Kind",
|
|
127
|
+
name: "kind",
|
|
128
|
+
values: [
|
|
129
|
+
"API",
|
|
130
|
+
"Component",
|
|
131
|
+
"Domain",
|
|
132
|
+
"Group",
|
|
133
|
+
"Location",
|
|
134
|
+
"Resource",
|
|
135
|
+
"System",
|
|
136
|
+
"Template",
|
|
137
|
+
"User"
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
),
|
|
141
|
+
/* @__PURE__ */ jsx(
|
|
142
|
+
SearchFilter.Checkbox,
|
|
143
|
+
{
|
|
144
|
+
className: classes.filter,
|
|
145
|
+
label: "Lifecycle",
|
|
146
|
+
name: "lifecycle",
|
|
147
|
+
values: ["experimental", "production"]
|
|
148
|
+
}
|
|
149
|
+
),
|
|
150
|
+
additionalSearchFilters.map((SearchFilterComponent) => /* @__PURE__ */ jsx(SearchFilterComponent, { className: classes.filter }))
|
|
172
151
|
] })
|
|
173
|
-
] })
|
|
174
|
-
|
|
152
|
+
] }),
|
|
153
|
+
/* @__PURE__ */ jsxs(Grid, { item: true, xs: true, children: [
|
|
154
|
+
/* @__PURE__ */ jsx(SearchPagination, {}),
|
|
155
|
+
/* @__PURE__ */ jsx(SearchResult, { children: ({ results }) => /* @__PURE__ */ jsx(Fragment, { children: results.map((result, index) => {
|
|
156
|
+
const { noTrack } = config;
|
|
157
|
+
const { document, ...rest } = result;
|
|
158
|
+
const SearchResultListItem = getResultItemComponent(result);
|
|
159
|
+
return /* @__PURE__ */ createElement(
|
|
160
|
+
SearchResultListItem,
|
|
161
|
+
{
|
|
162
|
+
...rest,
|
|
163
|
+
key: index,
|
|
164
|
+
result: document,
|
|
165
|
+
noTrack
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
}) }) }),
|
|
169
|
+
/* @__PURE__ */ jsx(SearchResultPager, {})
|
|
170
|
+
] })
|
|
171
|
+
] }) });
|
|
175
172
|
};
|
|
176
173
|
return /* @__PURE__ */ jsxs(SearchContextProvider, { children: [
|
|
177
174
|
/* @__PURE__ */ jsx(UrlUpdater, {}),
|
|
@@ -191,13 +188,14 @@ const searchNavItem = NavItemBlueprint.make({
|
|
|
191
188
|
var alpha = createFrontendPlugin({
|
|
192
189
|
pluginId: "search",
|
|
193
190
|
title: "Search",
|
|
194
|
-
icon: /* @__PURE__ */ jsx(SearchIcon, {}),
|
|
191
|
+
icon: /* @__PURE__ */ jsx(SearchIcon, { fontSize: "inherit" }),
|
|
195
192
|
info: { packageJson: () => import('./package.json.esm.js') },
|
|
196
193
|
extensions: [searchApi, searchPage, searchNavItem],
|
|
197
194
|
routes: {
|
|
198
195
|
root: rootRouteRef
|
|
199
196
|
}
|
|
200
197
|
});
|
|
198
|
+
const searchTranslationRef = searchTranslationRef$1;
|
|
201
199
|
|
|
202
|
-
export { alpha as default, searchApi, searchNavItem, searchPage };
|
|
200
|
+
export { alpha as default, searchApi, searchNavItem, searchPage, searchTranslationRef };
|
|
203
201
|
//# sourceMappingURL=alpha.esm.js.map
|
package/dist/alpha.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alpha.esm.js","sources":["../src/alpha.tsx"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Grid from '@material-ui/core/Grid';\nimport Paper from '@material-ui/core/Paper';\nimport { makeStyles, Theme } from '@material-ui/core/styles';\nimport SearchIcon from '@material-ui/icons/Search';\n\nimport {\n CatalogIcon,\n Content,\n DocsIcon,\n Header,\n Page,\n useSidebarPinState,\n} from '@backstage/core-components';\nimport {\n useApi,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/core-plugin-api';\n\nimport {\n createFrontendPlugin,\n ApiBlueprint,\n createExtensionInput,\n PageBlueprint,\n NavItemBlueprint,\n configApiRef,\n} from '@backstage/frontend-plugin-api';\n\nimport {\n catalogApiRef,\n CATALOG_FILTER_EXISTS,\n} from '@backstage/plugin-catalog-react';\n\nimport {\n DefaultResultListItem,\n SearchBar,\n SearchFilter,\n SearchPagination,\n SearchResult as SearchResults,\n SearchResultPager,\n useSearch,\n SearchContextProvider,\n} from '@backstage/plugin-search-react';\nimport { SearchResult } from '@backstage/plugin-search-common';\nimport { searchApiRef } from '@backstage/plugin-search-react';\nimport {\n SearchResultListItemBlueprint,\n SearchFilterResultTypeBlueprint,\n SearchFilterBlueprint,\n} from '@backstage/plugin-search-react/alpha';\n\nimport { rootRouteRef } from './plugin';\nimport { SearchClient } from './apis';\nimport { SearchType } from './components/SearchType';\nimport { UrlUpdater } from './components/SearchPage/SearchPage';\n\n/** @alpha */\nexport const searchApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: searchApiRef,\n deps: { discoveryApi: discoveryApiRef, fetchApi: fetchApiRef },\n factory: ({ discoveryApi, fetchApi }) =>\n new SearchClient({ discoveryApi, fetchApi }),\n }),\n});\n\nconst useSearchPageStyles = makeStyles((theme: Theme) => ({\n filter: {\n '& + &': {\n marginTop: theme.spacing(2.5),\n },\n },\n filters: {\n padding: theme.spacing(2),\n marginTop: theme.spacing(2),\n },\n}));\n\n/** @alpha */\nexport const searchPage = PageBlueprint.makeWithOverrides({\n config: {\n schema: {\n noTrack: z => z.boolean().default(false),\n },\n },\n inputs: {\n items: createExtensionInput([SearchResultListItemBlueprint.dataRefs.item]),\n resultTypes: createExtensionInput([\n SearchFilterResultTypeBlueprint.dataRefs.resultType,\n ]),\n searchFilters: createExtensionInput([\n SearchFilterBlueprint.dataRefs.searchFilters,\n ]),\n },\n factory(originalFactory, { config, inputs }) {\n return originalFactory({\n path: '/search',\n routeRef: rootRouteRef,\n loader: async () => {\n const getResultItemComponent = (result: SearchResult) => {\n const value = inputs.items.find(item =>\n item\n ?.get(SearchResultListItemBlueprint.dataRefs.item)\n .predicate?.(result),\n );\n return (\n value?.get(SearchResultListItemBlueprint.dataRefs.item).component ??\n DefaultResultListItem\n );\n };\n\n const resultTypes = inputs.resultTypes.map(item =>\n item.get(SearchFilterResultTypeBlueprint.dataRefs.resultType),\n );\n\n const additionalSearchFilters = inputs.searchFilters.map(\n item =>\n item.get(SearchFilterBlueprint.dataRefs.searchFilters).component,\n );\n\n const Component = () => {\n const classes = useSearchPageStyles();\n const { isMobile } = useSidebarPinState();\n const { types } = useSearch();\n const catalogApi = useApi(catalogApiRef);\n const configApi = useApi(configApiRef);\n\n return (\n <Page themeId=\"home\">\n {!isMobile && <Header title=\"Search\" />}\n <Content>\n <Grid container direction=\"row\">\n <Grid item xs={12}>\n <SearchBar debounceTime={100} />\n </Grid>\n {!isMobile && (\n <Grid item xs={3}>\n <SearchType.Accordion\n name=\"Result Type\"\n defaultValue={configApi.getOptionalString(\n 'search.defaultType',\n )}\n showCounts\n types={[\n {\n value: 'software-catalog',\n name: 'Software Catalog',\n icon: <CatalogIcon />,\n },\n {\n value: 'techdocs',\n name: 'Documentation',\n icon: <DocsIcon />,\n },\n ].concat(resultTypes)}\n />\n <Paper className={classes.filters}>\n {types.includes('techdocs') && (\n <SearchFilter.Select\n className={classes.filter}\n label=\"Entity\"\n name=\"name\"\n values={async () => {\n // Return a list of entities which are documented.\n const { items } = await catalogApi.getEntities({\n fields: ['metadata.name'],\n filter: {\n 'metadata.annotations.backstage.io/techdocs-ref':\n CATALOG_FILTER_EXISTS,\n },\n });\n\n const names = items.map(\n entity => entity.metadata.name,\n );\n names.sort();\n return names;\n }}\n />\n )}\n <SearchFilter.Select\n className={classes.filter}\n label=\"Kind\"\n name=\"kind\"\n values={[\n 'API',\n 'Component',\n 'Domain',\n 'Group',\n 'Location',\n 'Resource',\n 'System',\n 'Template',\n 'User',\n ]}\n />\n <SearchFilter.Checkbox\n className={classes.filter}\n label=\"Lifecycle\"\n name=\"lifecycle\"\n values={['experimental', 'production']}\n />\n {additionalSearchFilters.map(SearchFilterComponent => (\n <SearchFilterComponent className={classes.filter} />\n ))}\n </Paper>\n </Grid>\n )}\n <Grid item xs>\n <SearchPagination />\n <SearchResults>\n {({ results }) => (\n <>\n {results.map((result, index) => {\n const { noTrack } = config;\n const { document, ...rest } = result;\n const SearchResultListItem =\n getResultItemComponent(result);\n return (\n <SearchResultListItem\n {...rest}\n key={index}\n result={document}\n noTrack={noTrack}\n />\n );\n })}\n </>\n )}\n </SearchResults>\n <SearchResultPager />\n </Grid>\n </Grid>\n </Content>\n </Page>\n );\n };\n\n return (\n <SearchContextProvider>\n <UrlUpdater />\n <Component />\n </SearchContextProvider>\n );\n },\n });\n },\n});\n\n/** @alpha */\nexport const searchNavItem = NavItemBlueprint.make({\n params: {\n routeRef: rootRouteRef,\n title: 'Search',\n icon: SearchIcon,\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'search',\n title: 'Search',\n icon: <SearchIcon />,\n info: { packageJson: () => import('../package.json') },\n extensions: [searchApi, searchPage, searchNavItem],\n routes: {\n root: rootRouteRef,\n },\n});\n\n/** @alpha */\nexport { searchTranslationRef } from './translation';\n"],"names":["SearchResults"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alpha.esm.js","sources":["../src/alpha.tsx"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Grid from '@material-ui/core/Grid';\nimport Paper from '@material-ui/core/Paper';\nimport { makeStyles, Theme } from '@material-ui/core/styles';\nimport SearchIcon from '@material-ui/icons/Search';\n\nimport {\n CatalogIcon,\n Content,\n DocsIcon,\n useSidebarPinState,\n} from '@backstage/core-components';\nimport {\n useApi,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/core-plugin-api';\n\nimport {\n createFrontendPlugin,\n ApiBlueprint,\n createExtensionInput,\n PageBlueprint,\n NavItemBlueprint,\n configApiRef,\n} from '@backstage/frontend-plugin-api';\n\nimport {\n catalogApiRef,\n CATALOG_FILTER_EXISTS,\n} from '@backstage/plugin-catalog-react';\n\nimport {\n DefaultResultListItem,\n SearchBar,\n SearchFilter,\n SearchPagination,\n SearchResult as SearchResults,\n SearchResultPager,\n useSearch,\n SearchContextProvider,\n} from '@backstage/plugin-search-react';\nimport { SearchResult } from '@backstage/plugin-search-common';\nimport { searchApiRef } from '@backstage/plugin-search-react';\nimport {\n SearchResultListItemBlueprint,\n SearchFilterResultTypeBlueprint,\n SearchFilterBlueprint,\n} from '@backstage/plugin-search-react/alpha';\n\nimport { rootRouteRef } from './plugin';\nimport { SearchClient } from './apis';\nimport { SearchType } from './components/SearchType';\nimport { UrlUpdater } from './components/SearchPage/SearchPage';\n\n/** @alpha */\nexport const searchApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: searchApiRef,\n deps: { discoveryApi: discoveryApiRef, fetchApi: fetchApiRef },\n factory: ({ discoveryApi, fetchApi }) =>\n new SearchClient({ discoveryApi, fetchApi }),\n }),\n});\n\nconst useSearchPageStyles = makeStyles((theme: Theme) => ({\n filter: {\n '& + &': {\n marginTop: theme.spacing(2.5),\n },\n },\n filters: {\n padding: theme.spacing(2),\n marginTop: theme.spacing(2),\n },\n}));\n\n/** @alpha */\nexport const searchPage = PageBlueprint.makeWithOverrides({\n config: {\n schema: {\n noTrack: z => z.boolean().default(false),\n },\n },\n inputs: {\n items: createExtensionInput([SearchResultListItemBlueprint.dataRefs.item]),\n resultTypes: createExtensionInput([\n SearchFilterResultTypeBlueprint.dataRefs.resultType,\n ]),\n searchFilters: createExtensionInput([\n SearchFilterBlueprint.dataRefs.searchFilters,\n ]),\n },\n factory(originalFactory, { config, inputs }) {\n return originalFactory({\n path: '/search',\n routeRef: rootRouteRef,\n loader: async () => {\n const getResultItemComponent = (result: SearchResult) => {\n const value = inputs.items.find(item =>\n item\n ?.get(SearchResultListItemBlueprint.dataRefs.item)\n .predicate?.(result),\n );\n return (\n value?.get(SearchResultListItemBlueprint.dataRefs.item).component ??\n DefaultResultListItem\n );\n };\n\n const resultTypes = inputs.resultTypes.map(item =>\n item.get(SearchFilterResultTypeBlueprint.dataRefs.resultType),\n );\n\n const additionalSearchFilters = inputs.searchFilters.map(\n item =>\n item.get(SearchFilterBlueprint.dataRefs.searchFilters).component,\n );\n\n const Component = () => {\n const classes = useSearchPageStyles();\n const { isMobile } = useSidebarPinState();\n const { types } = useSearch();\n const catalogApi = useApi(catalogApiRef);\n const configApi = useApi(configApiRef);\n\n return (\n <Content>\n <Grid container direction=\"row\">\n <Grid item xs={12}>\n <SearchBar debounceTime={100} />\n </Grid>\n {!isMobile && (\n <Grid item xs={3}>\n <SearchType.Accordion\n name=\"Result Type\"\n defaultValue={configApi.getOptionalString(\n 'search.defaultType',\n )}\n showCounts\n types={[\n {\n value: 'software-catalog',\n name: 'Software Catalog',\n icon: <CatalogIcon />,\n },\n {\n value: 'techdocs',\n name: 'Documentation',\n icon: <DocsIcon />,\n },\n ].concat(resultTypes)}\n />\n <Paper className={classes.filters}>\n {types.includes('techdocs') && (\n <SearchFilter.Select\n className={classes.filter}\n label=\"Entity\"\n name=\"name\"\n values={async () => {\n // Return a list of entities which are documented.\n const { items } = await catalogApi.getEntities({\n fields: ['metadata.name'],\n filter: {\n 'metadata.annotations.backstage.io/techdocs-ref':\n CATALOG_FILTER_EXISTS,\n },\n });\n\n const names = items.map(\n entity => entity.metadata.name,\n );\n names.sort();\n return names;\n }}\n />\n )}\n <SearchFilter.Select\n className={classes.filter}\n label=\"Kind\"\n name=\"kind\"\n values={[\n 'API',\n 'Component',\n 'Domain',\n 'Group',\n 'Location',\n 'Resource',\n 'System',\n 'Template',\n 'User',\n ]}\n />\n <SearchFilter.Checkbox\n className={classes.filter}\n label=\"Lifecycle\"\n name=\"lifecycle\"\n values={['experimental', 'production']}\n />\n {additionalSearchFilters.map(SearchFilterComponent => (\n <SearchFilterComponent className={classes.filter} />\n ))}\n </Paper>\n </Grid>\n )}\n <Grid item xs>\n <SearchPagination />\n <SearchResults>\n {({ results }) => (\n <>\n {results.map((result, index) => {\n const { noTrack } = config;\n const { document, ...rest } = result;\n const SearchResultListItem =\n getResultItemComponent(result);\n return (\n <SearchResultListItem\n {...rest}\n key={index}\n result={document}\n noTrack={noTrack}\n />\n );\n })}\n </>\n )}\n </SearchResults>\n <SearchResultPager />\n </Grid>\n </Grid>\n </Content>\n );\n };\n\n return (\n <SearchContextProvider>\n <UrlUpdater />\n <Component />\n </SearchContextProvider>\n );\n },\n });\n },\n});\n\n/** @alpha */\nexport const searchNavItem = NavItemBlueprint.make({\n params: {\n routeRef: rootRouteRef,\n title: 'Search',\n icon: SearchIcon,\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'search',\n title: 'Search',\n icon: <SearchIcon fontSize=\"inherit\" />,\n info: { packageJson: () => import('../package.json') },\n extensions: [searchApi, searchPage, searchNavItem],\n routes: {\n root: rootRouteRef,\n },\n});\n\nimport { searchTranslationRef as _searchTranslationRef } from './translation';\n\n/**\n * @alpha\n * @deprecated Import from `@backstage/plugin-search` instead.\n */\nexport const searchTranslationRef = _searchTranslationRef;\n"],"names":["SearchResults","_searchTranslationRef"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { ReactNode } from 'react';
|
|
|
4
4
|
import { SearchResultSet } from '@backstage/plugin-search-common';
|
|
5
5
|
import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
|
|
6
6
|
import { IconComponent } from '@backstage/core-plugin-api';
|
|
7
|
+
import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Props for {@link HomePageSearchBar}.
|
|
@@ -222,5 +223,18 @@ declare const SidebarSearchModal: (props: SidebarSearchModalProps) => JSX.Elemen
|
|
|
222
223
|
*/
|
|
223
224
|
declare const HomePageSearchBar: (props: HomePageSearchBarProps) => react_jsx_runtime.JSX.Element;
|
|
224
225
|
|
|
225
|
-
|
|
226
|
+
/**
|
|
227
|
+
* @public
|
|
228
|
+
*/
|
|
229
|
+
declare const searchTranslationRef: _backstage_frontend_plugin_api.TranslationRef<"search", {
|
|
230
|
+
readonly "searchModal.viewFullResults": "View Full Results";
|
|
231
|
+
readonly "searchType.tabs.allTitle": "All";
|
|
232
|
+
readonly "searchType.allResults": "All Results";
|
|
233
|
+
readonly "searchType.accordion.collapse": "Collapse";
|
|
234
|
+
readonly "searchType.accordion.numberOfResults": "{{number}} results";
|
|
235
|
+
readonly "searchType.accordion.allTitle": "All";
|
|
236
|
+
readonly "sidebarSearchModal.title": "Search";
|
|
237
|
+
}>;
|
|
238
|
+
|
|
239
|
+
export { HomePageSearchBar, SearchPage$1 as Router, SearchModal, SearchModalProvider, SearchPage, SearchType, SidebarSearch, SidebarSearchModal, searchPlugin as plugin, searchPlugin, searchTranslationRef, useSearchModal };
|
|
226
240
|
export type { HomePageSearchBarProps, SearchModalChildrenProps, SearchModalProps, SearchModalProviderProps, SearchModalValue, SearchTypeAccordionProps, SearchTypeProps, SearchTypeTabsProps, SidebarSearchModalProps, SidebarSearchProps };
|
package/dist/index.esm.js
CHANGED
|
@@ -4,4 +4,5 @@ export { SearchPage as Router } from './components/SearchPage/SearchPage.esm.js'
|
|
|
4
4
|
export { SearchType } from './components/SearchType/SearchType.esm.js';
|
|
5
5
|
export { SidebarSearch } from './components/SidebarSearch/SidebarSearch.esm.js';
|
|
6
6
|
export { HomePageSearchBar, SearchPage, SidebarSearchModal, searchPlugin as plugin, searchPlugin } from './plugin.esm.js';
|
|
7
|
+
export { searchTranslationRef } from './translation.esm.js';
|
|
7
8
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
package/dist/package.json.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "@backstage/plugin-search";
|
|
2
|
-
var version = "1.
|
|
2
|
+
var version = "1.7.0";
|
|
3
3
|
var description = "The Backstage plugin that provides your backstage app with search";
|
|
4
4
|
var backstage = {
|
|
5
5
|
role: "frontend-plugin",
|
|
@@ -65,6 +65,7 @@ var dependencies = {
|
|
|
65
65
|
"@backstage/plugin-search-common": "workspace:^",
|
|
66
66
|
"@backstage/plugin-search-react": "workspace:^",
|
|
67
67
|
"@backstage/types": "workspace:^",
|
|
68
|
+
"@backstage/ui": "workspace:^",
|
|
68
69
|
"@backstage/version-bridge": "workspace:^",
|
|
69
70
|
"@material-ui/core": "^4.12.2",
|
|
70
71
|
"@material-ui/icons": "^4.9.1",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translation.esm.js","sources":["../src/translation.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/**\n * @
|
|
1
|
+
{"version":3,"file":"translation.esm.js","sources":["../src/translation.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/**\n * @public\n */\nexport const searchTranslationRef = createTranslationRef({\n id: 'search',\n messages: {\n searchModal: {\n viewFullResults: 'View Full Results',\n },\n searchType: {\n allResults: 'All Results',\n tabs: {\n allTitle: 'All',\n },\n accordion: {\n allTitle: 'All',\n collapse: 'Collapse',\n numberOfResults: '{{number}} results',\n },\n },\n sidebarSearchModal: {\n title: 'Search',\n },\n },\n});\n"],"names":[],"mappings":";;AAqBO,MAAM,uBAAuB,oBAAA,CAAqB;AAAA,EACvD,EAAA,EAAI,QAAA;AAAA,EACJ,QAAA,EAAU;AAAA,IACR,WAAA,EAAa;AAAA,MACX,eAAA,EAAiB;AAAA,KACnB;AAAA,IACA,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,aAAA;AAAA,MACZ,IAAA,EAAM;AAAA,QACJ,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,SAAA,EAAW;AAAA,QACT,QAAA,EAAU,KAAA;AAAA,QACV,QAAA,EAAU,UAAA;AAAA,QACV,eAAA,EAAiB;AAAA;AACnB,KACF;AAAA,IACA,kBAAA,EAAoB;AAAA,MAClB,KAAA,EAAO;AAAA;AACT;AAEJ,CAAC;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/plugin-search",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "The Backstage plugin that provides your backstage app with search",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "frontend-plugin",
|
|
@@ -70,25 +70,26 @@
|
|
|
70
70
|
"test": "backstage-cli package test"
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@backstage/core-components": "0.18.8
|
|
74
|
-
"@backstage/core-plugin-api": "1.12.4
|
|
75
|
-
"@backstage/errors": "1.2.7",
|
|
76
|
-
"@backstage/frontend-plugin-api": "0.15.0
|
|
77
|
-
"@backstage/plugin-catalog-react": "2.1.0
|
|
78
|
-
"@backstage/plugin-search-common": "1.2.22",
|
|
79
|
-
"@backstage/plugin-search-react": "1.
|
|
80
|
-
"@backstage/types": "1.2.2",
|
|
81
|
-
"@backstage/
|
|
73
|
+
"@backstage/core-components": "^0.18.8",
|
|
74
|
+
"@backstage/core-plugin-api": "^1.12.4",
|
|
75
|
+
"@backstage/errors": "^1.2.7",
|
|
76
|
+
"@backstage/frontend-plugin-api": "^0.15.0",
|
|
77
|
+
"@backstage/plugin-catalog-react": "^2.1.0",
|
|
78
|
+
"@backstage/plugin-search-common": "^1.2.22",
|
|
79
|
+
"@backstage/plugin-search-react": "^1.11.0",
|
|
80
|
+
"@backstage/types": "^1.2.2",
|
|
81
|
+
"@backstage/ui": "^0.13.0",
|
|
82
|
+
"@backstage/version-bridge": "^1.0.12",
|
|
82
83
|
"@material-ui/core": "^4.12.2",
|
|
83
84
|
"@material-ui/icons": "^4.9.1",
|
|
84
85
|
"qs": "^6.9.4",
|
|
85
86
|
"react-use": "^17.2.4"
|
|
86
87
|
},
|
|
87
88
|
"devDependencies": {
|
|
88
|
-
"@backstage/cli": "0.36.0
|
|
89
|
-
"@backstage/core-app-api": "1.19.6
|
|
90
|
-
"@backstage/dev-utils": "1.1.21
|
|
91
|
-
"@backstage/test-utils": "1.7.16
|
|
89
|
+
"@backstage/cli": "^0.36.0",
|
|
90
|
+
"@backstage/core-app-api": "^1.19.6",
|
|
91
|
+
"@backstage/dev-utils": "^1.1.21",
|
|
92
|
+
"@backstage/test-utils": "^1.7.16",
|
|
92
93
|
"@testing-library/dom": "^10.0.0",
|
|
93
94
|
"@testing-library/jest-dom": "^6.0.0",
|
|
94
95
|
"@testing-library/react": "^16.0.0",
|