@backstage/plugin-search 1.0.4 → 1.0.5-next.1

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 CHANGED
@@ -1,5 +1,40 @@
1
1
  # @backstage/plugin-search
2
2
 
3
+ ## 1.0.5-next.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - @backstage/core-components@0.12.1-next.1
9
+ - @backstage/version-bridge@1.0.3-next.0
10
+ - @backstage/plugin-search-react@1.2.2-next.1
11
+ - @backstage/core-plugin-api@1.1.1-next.1
12
+ - @backstage/types@1.0.2-next.1
13
+ - @backstage/plugin-catalog-react@1.2.2-next.1
14
+ - @backstage/config@1.0.5-next.1
15
+ - @backstage/catalog-model@1.1.4-next.1
16
+ - @backstage/errors@1.1.4-next.1
17
+ - @backstage/theme@0.2.16
18
+ - @backstage/plugin-search-common@1.1.2-next.1
19
+
20
+ ## 1.0.5-next.0
21
+
22
+ ### Patch Changes
23
+
24
+ - 3280711113: Updated dependency `msw` to `^0.49.0`.
25
+ - Updated dependencies
26
+ - @backstage/core-components@0.12.1-next.0
27
+ - @backstage/core-plugin-api@1.1.1-next.0
28
+ - @backstage/types@1.0.2-next.0
29
+ - @backstage/plugin-catalog-react@1.2.2-next.0
30
+ - @backstage/catalog-model@1.1.4-next.0
31
+ - @backstage/config@1.0.5-next.0
32
+ - @backstage/errors@1.1.4-next.0
33
+ - @backstage/theme@0.2.16
34
+ - @backstage/version-bridge@1.0.2
35
+ - @backstage/plugin-search-common@1.1.2-next.0
36
+ - @backstage/plugin-search-react@1.2.2-next.0
37
+
3
38
  ## 1.0.4
4
39
 
5
40
  ### Patch Changes
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import SearchIcon from '@material-ui/icons/Search';
3
3
  import { SidebarItem } from '@backstage/core-components';
4
- import { a as SearchModalProvider, u as useSearchModal, b as SearchModal } from './index-0387f230.esm.js';
4
+ import { a as SearchModalProvider, u as useSearchModal, b as SearchModal } from './index-66078e0a.esm.js';
5
5
  import '@material-ui/core';
6
6
  import '@material-ui/icons/Launch';
7
7
  import '@material-ui/core/styles';
@@ -20,22 +20,26 @@ import 'react-router-dom';
20
20
  const SidebarSearchModalContent = (props) => {
21
21
  const { state, toggleModal } = useSearchModal();
22
22
  const Icon = props.icon ? props.icon : SearchIcon;
23
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(SidebarItem, {
24
- className: "search-icon",
25
- icon: Icon,
26
- text: "Search",
27
- onClick: toggleModal
28
- }), /* @__PURE__ */ React.createElement(SearchModal, {
29
- ...state,
30
- toggleModal,
31
- children: props.children
32
- }));
23
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
24
+ SidebarItem,
25
+ {
26
+ className: "search-icon",
27
+ icon: Icon,
28
+ text: "Search",
29
+ onClick: toggleModal
30
+ }
31
+ ), /* @__PURE__ */ React.createElement(
32
+ SearchModal,
33
+ {
34
+ ...state,
35
+ toggleModal,
36
+ children: props.children
37
+ }
38
+ ));
33
39
  };
34
40
  const SidebarSearchModal = (props) => {
35
- return /* @__PURE__ */ React.createElement(SearchModalProvider, null, /* @__PURE__ */ React.createElement(SidebarSearchModalContent, {
36
- ...props
37
- }));
41
+ return /* @__PURE__ */ React.createElement(SearchModalProvider, null, /* @__PURE__ */ React.createElement(SidebarSearchModalContent, { ...props }));
38
42
  };
39
43
 
40
44
  export { SidebarSearchModal };
41
- //# sourceMappingURL=index-0a13cd80.esm.js.map
45
+ //# sourceMappingURL=index-40f788ca.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-0a13cd80.esm.js","sources":["../../src/components/SidebarSearchModal/SidebarSearchModal.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\nimport React from 'react';\nimport SearchIcon from '@material-ui/icons/Search';\nimport { SidebarItem } from '@backstage/core-components';\nimport { IconComponent } from '@backstage/core-plugin-api';\nimport {\n SearchModal,\n SearchModalChildrenProps,\n SearchModalProvider,\n useSearchModal,\n} from '../SearchModal';\n\n/**\n * Props for {@link SidebarSearchModal}.\n *\n * @public\n */\nexport type SidebarSearchModalProps = {\n icon?: IconComponent;\n children?: (props: SearchModalChildrenProps) => JSX.Element;\n};\n\nconst SidebarSearchModalContent = (props: SidebarSearchModalProps) => {\n const { state, toggleModal } = useSearchModal();\n const Icon = props.icon ? props.icon : SearchIcon;\n\n return (\n <>\n <SidebarItem\n className=\"search-icon\"\n icon={Icon}\n text=\"Search\"\n onClick={toggleModal}\n />\n <SearchModal\n {...state}\n toggleModal={toggleModal}\n children={props.children}\n />\n </>\n );\n};\n\nexport const SidebarSearchModal = (props: SidebarSearchModalProps) => {\n return (\n <SearchModalProvider>\n <SidebarSearchModalContent {...props} />\n </SearchModalProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAoCA,MAAM,yBAAA,GAA4B,CAAC,KAAmC,KAAA;AACpE,EAAA,MAAM,EAAE,KAAA,EAAO,WAAY,EAAA,GAAI,cAAe,EAAA,CAAA;AAC9C,EAAA,MAAM,IAAO,GAAA,KAAA,CAAM,IAAO,GAAA,KAAA,CAAM,IAAO,GAAA,UAAA,CAAA;AAEvC,EAAA,iFAEK,KAAA,CAAA,aAAA,CAAA,WAAA,EAAA;AAAA,IACC,SAAU,EAAA,aAAA;AAAA,IACV,IAAM,EAAA,IAAA;AAAA,IACN,IAAK,EAAA,QAAA;AAAA,IACL,OAAS,EAAA,WAAA;AAAA,GACX,mBACC,KAAA,CAAA,aAAA,CAAA,WAAA,EAAA;AAAA,IACE,GAAG,KAAA;AAAA,IACJ,WAAA;AAAA,IACA,UAAU,KAAM,CAAA,QAAA;AAAA,GAClB,CACF,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEa,MAAA,kBAAA,GAAqB,CAAC,KAAmC,KAAA;AACpE,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,2CACE,KAAA,CAAA,aAAA,CAAA,yBAAA,EAAA;AAAA,IAA2B,GAAG,KAAA;AAAA,GAAO,CACxC,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"index-40f788ca.esm.js","sources":["../../src/components/SidebarSearchModal/SidebarSearchModal.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\nimport React from 'react';\nimport SearchIcon from '@material-ui/icons/Search';\nimport { SidebarItem } from '@backstage/core-components';\nimport { IconComponent } from '@backstage/core-plugin-api';\nimport {\n SearchModal,\n SearchModalChildrenProps,\n SearchModalProvider,\n useSearchModal,\n} from '../SearchModal';\n\n/**\n * Props for {@link SidebarSearchModal}.\n *\n * @public\n */\nexport type SidebarSearchModalProps = {\n icon?: IconComponent;\n children?: (props: SearchModalChildrenProps) => JSX.Element;\n};\n\nconst SidebarSearchModalContent = (props: SidebarSearchModalProps) => {\n const { state, toggleModal } = useSearchModal();\n const Icon = props.icon ? props.icon : SearchIcon;\n\n return (\n <>\n <SidebarItem\n className=\"search-icon\"\n icon={Icon}\n text=\"Search\"\n onClick={toggleModal}\n />\n <SearchModal\n {...state}\n toggleModal={toggleModal}\n children={props.children}\n />\n </>\n );\n};\n\nexport const SidebarSearchModal = (props: SidebarSearchModalProps) => {\n return (\n <SearchModalProvider>\n <SidebarSearchModalContent {...props} />\n </SearchModalProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAoCA,MAAM,yBAAA,GAA4B,CAAC,KAAmC,KAAA;AACpE,EAAA,MAAM,EAAE,KAAA,EAAO,WAAY,EAAA,GAAI,cAAe,EAAA,CAAA;AAC9C,EAAA,MAAM,IAAO,GAAA,KAAA,CAAM,IAAO,GAAA,KAAA,CAAM,IAAO,GAAA,UAAA,CAAA;AAEvC,EAAA,uBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,SAAU,EAAA,aAAA;AAAA,MACV,IAAM,EAAA,IAAA;AAAA,MACN,IAAK,EAAA,QAAA;AAAA,MACL,OAAS,EAAA,WAAA;AAAA,KAAA;AAAA,GAEX,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,WAAA;AAAA,MACA,UAAU,KAAM,CAAA,QAAA;AAAA,KAAA;AAAA,GAEpB,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEa,MAAA,kBAAA,GAAqB,CAAC,KAAmC,KAAA;AACpE,EAAA,2CACG,mBACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,yBAA2B,EAAA,EAAA,GAAG,OAAO,CACxC,CAAA,CAAA;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- export { S as SearchPage } from './index-0387f230.esm.js';
1
+ export { S as SearchPage } from './index-66078e0a.esm.js';
2
2
  import 'react';
3
3
  import '@material-ui/core';
4
4
  import '@material-ui/icons/Launch';
@@ -15,4 +15,4 @@ import 'react-use/lib/useEffectOnce';
15
15
  import '@material-ui/icons/ExpandMore';
16
16
  import '@material-ui/icons/FontDownload';
17
17
  import 'react-router-dom';
18
- //# sourceMappingURL=index-559e7a70.esm.js.map
18
+ //# sourceMappingURL=index-59817db5.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-59817db5.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
@@ -57,7 +57,7 @@ const searchPlugin = createPlugin({
57
57
  const SearchPage$1 = searchPlugin.provide(
58
58
  createRoutableExtension({
59
59
  name: "SearchPage",
60
- component: () => import('./index-559e7a70.esm.js').then((m) => m.SearchPage),
60
+ component: () => import('./index-59817db5.esm.js').then((m) => m.SearchPage),
61
61
  mountPoint: rootRouteRef
62
62
  })
63
63
  );
@@ -65,7 +65,7 @@ const SidebarSearchModal = searchPlugin.provide(
65
65
  createComponentExtension({
66
66
  name: "SidebarSearchModal",
67
67
  component: {
68
- lazy: () => import('./index-0a13cd80.esm.js').then(
68
+ lazy: () => import('./index-40f788ca.esm.js').then(
69
69
  (m) => m.SidebarSearchModal
70
70
  )
71
71
  }
@@ -75,7 +75,7 @@ const HomePageSearchBar = searchPlugin.provide(
75
75
  createComponentExtension({
76
76
  name: "HomePageSearchBar",
77
77
  component: {
78
- lazy: () => import('./index-4003b03a.esm.js').then((m) => m.HomePageSearchBar)
78
+ lazy: () => import('./index-e01a4e2b.esm.js').then((m) => m.HomePageSearchBar)
79
79
  }
80
80
  })
81
81
  );
@@ -106,46 +106,44 @@ const Modal = ({ toggleModal }) => {
106
106
  const handleKeyPress = () => {
107
107
  handleResultClick();
108
108
  };
109
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DialogTitle, null, /* @__PURE__ */ React.createElement(Paper, {
110
- className: classes.container
111
- }, /* @__PURE__ */ React.createElement(SearchBar, {
112
- className: classes.input
113
- }))), /* @__PURE__ */ React.createElement(DialogContent, null, /* @__PURE__ */ React.createElement(Grid, {
114
- container: true,
115
- direction: "row-reverse",
116
- justifyContent: "flex-start",
117
- alignItems: "center"
118
- }, /* @__PURE__ */ React.createElement(Grid, {
119
- item: true
120
- }, /* @__PURE__ */ React.createElement(Link, {
121
- onClick: () => {
122
- toggleModal();
123
- setTimeout(focusContent, transitions.duration.leavingScreen);
109
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DialogTitle, null, /* @__PURE__ */ React.createElement(Paper, { className: classes.container }, /* @__PURE__ */ React.createElement(SearchBar, { className: classes.input }))), /* @__PURE__ */ React.createElement(DialogContent, null, /* @__PURE__ */ React.createElement(
110
+ Grid,
111
+ {
112
+ container: true,
113
+ direction: "row-reverse",
114
+ justifyContent: "flex-start",
115
+ alignItems: "center"
116
+ },
117
+ /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(
118
+ Link,
119
+ {
120
+ onClick: () => {
121
+ toggleModal();
122
+ setTimeout(focusContent, transitions.duration.leavingScreen);
123
+ },
124
+ to: `${getSearchLink()}?query=${term}`
125
+ },
126
+ /* @__PURE__ */ React.createElement("span", { className: classes.viewResultsLink }, "View Full Results"),
127
+ /* @__PURE__ */ React.createElement(LaunchIcon, { color: "primary" })
128
+ ))
129
+ ), /* @__PURE__ */ React.createElement(Divider, null), /* @__PURE__ */ React.createElement(SearchResult, null, ({ results }) => /* @__PURE__ */ React.createElement(List, null, results.map(({ document, highlight }) => /* @__PURE__ */ React.createElement(
130
+ "div",
131
+ {
132
+ role: "button",
133
+ tabIndex: 0,
134
+ key: `${document.location}-btn`,
135
+ onClick: handleResultClick,
136
+ onKeyPress: handleKeyPress
124
137
  },
125
- to: `${getSearchLink()}?query=${term}`
126
- }, /* @__PURE__ */ React.createElement("span", {
127
- className: classes.viewResultsLink
128
- }, "View Full Results"), /* @__PURE__ */ React.createElement(LaunchIcon, {
129
- color: "primary"
130
- })))), /* @__PURE__ */ React.createElement(Divider, null), /* @__PURE__ */ React.createElement(SearchResult, null, ({ results }) => /* @__PURE__ */ React.createElement(List, null, results.map(({ document, highlight }) => /* @__PURE__ */ React.createElement("div", {
131
- role: "button",
132
- tabIndex: 0,
133
- key: `${document.location}-btn`,
134
- onClick: handleResultClick,
135
- onKeyPress: handleKeyPress
136
- }, /* @__PURE__ */ React.createElement(DefaultResultListItem, {
137
- key: document.location,
138
- result: document,
139
- highlight
140
- })))))), /* @__PURE__ */ React.createElement(DialogActions, {
141
- className: classes.dialogActionsContainer
142
- }, /* @__PURE__ */ React.createElement(Grid, {
143
- container: true,
144
- direction: "row"
145
- }, /* @__PURE__ */ React.createElement(Grid, {
146
- item: true,
147
- xs: 12
148
- }, /* @__PURE__ */ React.createElement(SearchResultPager, null)))));
138
+ /* @__PURE__ */ React.createElement(
139
+ DefaultResultListItem,
140
+ {
141
+ key: document.location,
142
+ result: document,
143
+ highlight
144
+ }
145
+ )
146
+ ))))), /* @__PURE__ */ React.createElement(DialogActions, { className: classes.dialogActionsContainer }, /* @__PURE__ */ React.createElement(Grid, { container: true, direction: "row" }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(SearchResultPager, null)))));
149
147
  };
150
148
  const SearchModal = ({
151
149
  open = true,
@@ -155,21 +153,21 @@ const SearchModal = ({
155
153
  }) => {
156
154
  var _a;
157
155
  const classes = useStyles$3();
158
- return /* @__PURE__ */ React.createElement(Dialog, {
159
- classes: {
160
- paperFullWidth: classes.paperFullWidth
156
+ return /* @__PURE__ */ React.createElement(
157
+ Dialog,
158
+ {
159
+ classes: {
160
+ paperFullWidth: classes.paperFullWidth
161
+ },
162
+ onClose: toggleModal,
163
+ "aria-labelledby": "search-modal-title",
164
+ fullWidth: true,
165
+ maxWidth: "lg",
166
+ open,
167
+ hidden
161
168
  },
162
- onClose: toggleModal,
163
- "aria-labelledby": "search-modal-title",
164
- fullWidth: true,
165
- maxWidth: "lg",
166
- open,
167
- hidden
168
- }, open && /* @__PURE__ */ React.createElement(SearchContextProvider, {
169
- inheritParentContextIfAvailable: true
170
- }, (_a = children && children({ toggleModal })) != null ? _a : /* @__PURE__ */ React.createElement(Modal, {
171
- toggleModal
172
- })));
169
+ open && /* @__PURE__ */ React.createElement(SearchContextProvider, { inheritParentContextIfAvailable: true }, (_a = children && children({ toggleModal })) != null ? _a : /* @__PURE__ */ React.createElement(Modal, { toggleModal }))
170
+ );
173
171
  };
174
172
 
175
173
  const SearchModalContext = createVersionedContext("search-modal-context");
@@ -179,9 +177,7 @@ const SearchModalProvider = ({
179
177
  }) => {
180
178
  const value = useSearchModal(showInitially);
181
179
  const versionedValue = createVersionedValueMap({ 1: value });
182
- return /* @__PURE__ */ React.createElement(SearchModalContext.Provider, {
183
- value: versionedValue
184
- }, children);
180
+ return /* @__PURE__ */ React.createElement(SearchModalContext.Provider, { value: versionedValue }, children);
185
181
  };
186
182
  function useSearchModal(initialState = false) {
187
183
  const parentContext = useContext(SearchModalContext);
@@ -321,45 +317,48 @@ const SearchTypeAccordion = (props) => {
321
317
  ...givenTypes
322
318
  ];
323
319
  const selected = types[0] || "";
324
- return /* @__PURE__ */ React.createElement(Card, {
325
- className: classes.card
326
- }, /* @__PURE__ */ React.createElement(CardHeader, {
327
- title: name,
328
- titleTypographyProps: { variant: "overline" }
329
- }), /* @__PURE__ */ React.createElement(CardContent, {
330
- className: classes.cardContent
331
- }, /* @__PURE__ */ React.createElement(Accordion, {
332
- className: classes.accordion,
333
- expanded,
334
- onChange: toggleExpanded
335
- }, /* @__PURE__ */ React.createElement(AccordionSummary, {
336
- classes: {
337
- root: classes.accordionSummary,
338
- content: classes.accordionSummaryContent
320
+ return /* @__PURE__ */ React.createElement(Card, { className: classes.card }, /* @__PURE__ */ React.createElement(CardHeader, { title: name, titleTypographyProps: { variant: "overline" } }), /* @__PURE__ */ React.createElement(CardContent, { className: classes.cardContent }, /* @__PURE__ */ React.createElement(
321
+ Accordion,
322
+ {
323
+ className: classes.accordion,
324
+ expanded,
325
+ onChange: toggleExpanded
339
326
  },
340
- expandIcon: /* @__PURE__ */ React.createElement(ExpandMoreIcon, {
341
- className: classes.icon
342
- }),
343
- IconButtonProps: { size: "small" }
344
- }, expanded ? "Collapse" : definedTypes.filter((t) => t.value === selected)[0].name), /* @__PURE__ */ React.createElement(AccordionDetails, {
345
- classes: { root: classes.accordionDetails }
346
- }, /* @__PURE__ */ React.createElement(List, {
347
- className: classes.list,
348
- component: "nav",
349
- "aria-label": "filter by type",
350
- disablePadding: true,
351
- dense: true
352
- }, definedTypes.map((type) => /* @__PURE__ */ React.createElement(Fragment, {
353
- key: type.value
354
- }, /* @__PURE__ */ React.createElement(Divider, null), /* @__PURE__ */ React.createElement(ListItem, {
355
- selected: types[0] === type.value || types.length === 0 && type.value === "",
356
- onClick: handleClick(type.value),
357
- button: true
358
- }, /* @__PURE__ */ React.createElement(ListItemIcon, null, cloneElement(type.icon, {
359
- className: classes.listItemIcon
360
- })), /* @__PURE__ */ React.createElement(ListItemText, {
361
- primary: type.name
362
- })))))))));
327
+ /* @__PURE__ */ React.createElement(
328
+ AccordionSummary,
329
+ {
330
+ classes: {
331
+ root: classes.accordionSummary,
332
+ content: classes.accordionSummaryContent
333
+ },
334
+ expandIcon: /* @__PURE__ */ React.createElement(ExpandMoreIcon, { className: classes.icon }),
335
+ IconButtonProps: { size: "small" }
336
+ },
337
+ expanded ? "Collapse" : definedTypes.filter((t) => t.value === selected)[0].name
338
+ ),
339
+ /* @__PURE__ */ React.createElement(AccordionDetails, { classes: { root: classes.accordionDetails } }, /* @__PURE__ */ React.createElement(
340
+ List,
341
+ {
342
+ className: classes.list,
343
+ component: "nav",
344
+ "aria-label": "filter by type",
345
+ disablePadding: true,
346
+ dense: true
347
+ },
348
+ definedTypes.map((type) => /* @__PURE__ */ React.createElement(Fragment, { key: type.value }, /* @__PURE__ */ React.createElement(Divider, null), /* @__PURE__ */ React.createElement(
349
+ ListItem,
350
+ {
351
+ selected: types[0] === type.value || types.length === 0 && type.value === "",
352
+ onClick: handleClick(type.value),
353
+ button: true
354
+ },
355
+ /* @__PURE__ */ React.createElement(ListItemIcon, null, cloneElement(type.icon, {
356
+ className: classes.listItemIcon
357
+ })),
358
+ /* @__PURE__ */ React.createElement(ListItemText, { primary: type.name })
359
+ )))
360
+ ))
361
+ )));
363
362
  };
364
363
 
365
364
  const useStyles$1 = makeStyles$1((theme) => ({
@@ -395,18 +394,25 @@ const SearchTypeTabs = (props) => {
395
394
  },
396
395
  ...givenTypes
397
396
  ];
398
- return /* @__PURE__ */ React.createElement(Tabs, {
399
- className: classes.tabs,
400
- indicatorColor: "primary",
401
- value: types.length === 0 ? "" : types[0],
402
- onChange: changeTab
403
- }, definedTypes.map((type, idx) => /* @__PURE__ */ React.createElement(Tab, {
404
- key: idx,
405
- className: classes.tab,
406
- disableRipple: true,
407
- label: type.name,
408
- value: type.value
409
- })));
397
+ return /* @__PURE__ */ React.createElement(
398
+ Tabs,
399
+ {
400
+ className: classes.tabs,
401
+ indicatorColor: "primary",
402
+ value: types.length === 0 ? "" : types[0],
403
+ onChange: changeTab
404
+ },
405
+ definedTypes.map((type, idx) => /* @__PURE__ */ React.createElement(
406
+ Tab,
407
+ {
408
+ key: idx,
409
+ className: classes.tab,
410
+ disableRipple: true,
411
+ label: type.name,
412
+ value: type.value
413
+ }
414
+ ))
415
+ );
410
416
  };
411
417
 
412
418
  const useStyles = makeStyles$1((theme) => ({
@@ -439,46 +445,42 @@ const SearchType = (props) => {
439
445
  const value = e.target.value;
440
446
  setTypes(value);
441
447
  };
442
- return /* @__PURE__ */ React.createElement(FormControl, {
443
- className,
444
- variant: "filled",
445
- fullWidth: true,
446
- "data-testid": "search-typefilter-next"
447
- }, /* @__PURE__ */ React.createElement(InputLabel, {
448
- className: classes.label,
449
- margin: "dense"
450
- }, name), /* @__PURE__ */ React.createElement(Select, {
451
- multiple: true,
452
- variant: "outlined",
453
- value: types,
454
- onChange: handleChange,
455
- placeholder: "All Results",
456
- renderValue: (selected) => /* @__PURE__ */ React.createElement("div", {
457
- className: classes.chips
458
- }, selected.map((value) => /* @__PURE__ */ React.createElement(Chip, {
459
- key: value,
460
- label: value,
461
- className: classes.chip,
462
- size: "small"
463
- })))
464
- }, values.map((value) => /* @__PURE__ */ React.createElement(MenuItem, {
465
- key: value,
466
- value
467
- }, /* @__PURE__ */ React.createElement(Checkbox, {
468
- checked: types.indexOf(value) > -1
469
- }), /* @__PURE__ */ React.createElement(ListItemText, {
470
- primary: value
471
- })))));
448
+ return /* @__PURE__ */ React.createElement(
449
+ FormControl,
450
+ {
451
+ className,
452
+ variant: "filled",
453
+ fullWidth: true,
454
+ "data-testid": "search-typefilter-next"
455
+ },
456
+ /* @__PURE__ */ React.createElement(InputLabel, { className: classes.label, margin: "dense" }, name),
457
+ /* @__PURE__ */ React.createElement(
458
+ Select,
459
+ {
460
+ multiple: true,
461
+ variant: "outlined",
462
+ value: types,
463
+ onChange: handleChange,
464
+ placeholder: "All Results",
465
+ renderValue: (selected) => /* @__PURE__ */ React.createElement("div", { className: classes.chips }, selected.map((value) => /* @__PURE__ */ React.createElement(
466
+ Chip,
467
+ {
468
+ key: value,
469
+ label: value,
470
+ className: classes.chip,
471
+ size: "small"
472
+ }
473
+ )))
474
+ },
475
+ values.map((value) => /* @__PURE__ */ React.createElement(MenuItem, { key: value, value }, /* @__PURE__ */ React.createElement(Checkbox, { checked: types.indexOf(value) > -1 }), /* @__PURE__ */ React.createElement(ListItemText, { primary: value })))
476
+ )
477
+ );
472
478
  };
473
479
  SearchType.Accordion = (props) => {
474
- return /* @__PURE__ */ React.createElement(SearchTypeAccordion, {
475
- ...props
476
- });
480
+ return /* @__PURE__ */ React.createElement(SearchTypeAccordion, { ...props });
477
481
  };
478
482
  SearchType.Tabs = (props) => {
479
- return /* @__PURE__ */ React.createElement(SearchTypeTabs, {
480
- ...props
481
- });
483
+ return /* @__PURE__ */ React.createElement(SearchTypeTabs, { ...props });
482
484
  };
483
485
 
484
486
  const SidebarSearch = (props) => {
@@ -493,12 +495,15 @@ const SidebarSearch = (props) => {
493
495
  },
494
496
  [focusContent, navigate, searchRoute]
495
497
  );
496
- return /* @__PURE__ */ React.createElement(SidebarSearchField, {
497
- icon: props.icon,
498
- onSearch: handleSearch,
499
- to: "/search"
500
- });
498
+ return /* @__PURE__ */ React.createElement(
499
+ SidebarSearchField,
500
+ {
501
+ icon: props.icon,
502
+ onSearch: handleSearch,
503
+ to: "/search"
504
+ }
505
+ );
501
506
  };
502
507
 
503
508
  export { HomePageSearchBar as H, SearchPage as S, SearchModalProvider as a, SearchModal as b, SearchType as c, SidebarSearch as d, SearchPage$1 as e, SidebarSearchModal as f, rootRouteRef as r, searchPlugin as s, useSearchModal as u };
504
- //# sourceMappingURL=index-0387f230.esm.js.map
509
+ //# sourceMappingURL=index-66078e0a.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-0387f230.esm.js","sources":["../../src/apis.ts","../../src/plugin.ts","../../src/components/SearchModal/SearchModal.tsx","../../src/components/SearchModal/useSearchModal.tsx","../../src/components/SearchPage/SearchPage.tsx","../../src/components/SearchType/SearchType.Accordion.tsx","../../src/components/SearchType/SearchType.Tabs.tsx","../../src/components/SearchType/SearchType.tsx","../../src/components/SidebarSearch/SidebarSearch.tsx"],"sourcesContent":["/*\n * Copyright 2020 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 { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api';\nimport { ResponseError } from '@backstage/errors';\nimport { SearchApi } from '@backstage/plugin-search-react';\nimport { SearchQuery, SearchResultSet } from '@backstage/plugin-search-common';\n\nimport qs from 'qs';\n\nexport class SearchClient implements SearchApi {\n private readonly discoveryApi: DiscoveryApi;\n private readonly identityApi: IdentityApi;\n\n constructor(options: {\n discoveryApi: DiscoveryApi;\n identityApi: IdentityApi;\n }) {\n this.discoveryApi = options.discoveryApi;\n this.identityApi = options.identityApi;\n }\n\n async query(query: SearchQuery): Promise<SearchResultSet> {\n const { token } = await this.identityApi.getCredentials();\n const queryString = qs.stringify(query);\n const url = `${await this.discoveryApi.getBaseUrl(\n 'search/query',\n )}?${queryString}`;\n const response = await fetch(url, {\n headers: token ? { Authorization: `Bearer ${token}` } : {},\n });\n\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n\n return response.json();\n }\n}\n","/*\n * Copyright 2020 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 { SearchClient } from './apis';\nimport { searchApiRef } from '@backstage/plugin-search-react';\nimport {\n createApiFactory,\n createPlugin,\n createRouteRef,\n createRoutableExtension,\n discoveryApiRef,\n createComponentExtension,\n identityApiRef,\n} from '@backstage/core-plugin-api';\n\nexport const rootRouteRef = createRouteRef({\n id: 'search',\n});\n\n/**\n * @public\n */\nexport const searchPlugin = createPlugin({\n id: 'search',\n apis: [\n createApiFactory({\n api: searchApiRef,\n deps: { discoveryApi: discoveryApiRef, identityApi: identityApiRef },\n factory: ({ discoveryApi, identityApi }) => {\n return new SearchClient({ discoveryApi, identityApi });\n },\n }),\n ],\n routes: {\n root: rootRouteRef,\n },\n});\n\n/**\n * @public\n */\nexport const SearchPage = searchPlugin.provide(\n createRoutableExtension({\n name: 'SearchPage',\n component: () => import('./components/SearchPage').then(m => m.SearchPage),\n mountPoint: rootRouteRef,\n }),\n);\n\n/**\n * @public\n */\nexport const SidebarSearchModal = searchPlugin.provide(\n createComponentExtension({\n name: 'SidebarSearchModal',\n component: {\n lazy: () =>\n import('./components/SidebarSearchModal').then(\n m => m.SidebarSearchModal,\n ),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const HomePageSearchBar = searchPlugin.provide(\n createComponentExtension({\n name: 'HomePageSearchBar',\n component: {\n lazy: () =>\n import('./components/HomePageComponent').then(m => m.HomePageSearchBar),\n },\n }),\n);\n","/*\n * Copyright 2021 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 React from 'react';\nimport {\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n Grid,\n List,\n Paper,\n useTheme,\n} from '@material-ui/core';\nimport LaunchIcon from '@material-ui/icons/Launch';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n DefaultResultListItem,\n SearchContextProvider,\n SearchBar,\n SearchResult,\n SearchResultPager,\n useSearch,\n} from '@backstage/plugin-search-react';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { Link, useContent } from '@backstage/core-components';\nimport { rootRouteRef } from '../../plugin';\n\n/**\n * @public\n **/\nexport interface SearchModalChildrenProps {\n /**\n * A function that should be invoked when navigating away from the modal.\n */\n toggleModal: () => void;\n}\n\n/**\n * @public\n **/\nexport interface SearchModalProps {\n /**\n * If true, it renders the modal.\n */\n open?: boolean;\n /**\n * This is supposed to be used together with the open prop.\n * If `hidden` is true, it hides the modal.\n * If `open` is false, the value of `hidden` has no effect on the modal.\n * Use `open` for controlling whether the modal should be rendered or not.\n */\n hidden?: boolean;\n /**\n * a function invoked when a search item is pressed or when the dialog\n * should be closed.\n */\n toggleModal: () => void;\n /**\n * A function that returns custom content to render in the search modal in\n * place of the default.\n */\n children?: (props: SearchModalChildrenProps) => JSX.Element;\n}\n\nconst useStyles = makeStyles(theme => ({\n container: {\n borderRadius: 30,\n display: 'flex',\n height: '2.4em',\n },\n input: {\n flex: 1,\n },\n // Reduces default height of the modal, keeping a gap of 128px between the top and bottom of the page.\n paperFullWidth: { height: 'calc(100% - 128px)' },\n dialogActionsContainer: { padding: theme.spacing(1, 3) },\n viewResultsLink: { verticalAlign: '0.5em' },\n}));\n\nexport const Modal = ({ toggleModal }: SearchModalProps) => {\n const getSearchLink = useRouteRef(rootRouteRef);\n const classes = useStyles();\n\n const { term } = useSearch();\n const { focusContent } = useContent();\n const { transitions } = useTheme();\n\n const handleResultClick = () => {\n toggleModal();\n setTimeout(focusContent, transitions.duration.leavingScreen);\n };\n\n const handleKeyPress = () => {\n handleResultClick();\n };\n\n return (\n <>\n <DialogTitle>\n <Paper className={classes.container}>\n <SearchBar className={classes.input} />\n </Paper>\n </DialogTitle>\n <DialogContent>\n <Grid\n container\n direction=\"row-reverse\"\n justifyContent=\"flex-start\"\n alignItems=\"center\"\n >\n <Grid item>\n <Link\n onClick={() => {\n toggleModal();\n setTimeout(focusContent, transitions.duration.leavingScreen);\n }}\n to={`${getSearchLink()}?query=${term}`}\n >\n <span className={classes.viewResultsLink}>View Full Results</span>\n <LaunchIcon color=\"primary\" />\n </Link>\n </Grid>\n </Grid>\n <Divider />\n <SearchResult>\n {({ results }) => (\n <List>\n {results.map(({ document, highlight }) => (\n <div\n role=\"button\"\n tabIndex={0}\n key={`${document.location}-btn`}\n onClick={handleResultClick}\n onKeyPress={handleKeyPress}\n >\n <DefaultResultListItem\n key={document.location}\n result={document}\n highlight={highlight}\n />\n </div>\n ))}\n </List>\n )}\n </SearchResult>\n </DialogContent>\n <DialogActions className={classes.dialogActionsContainer}>\n <Grid container direction=\"row\">\n <Grid item xs={12}>\n <SearchResultPager />\n </Grid>\n </Grid>\n </DialogActions>\n </>\n );\n};\n\n/**\n * @public\n */\nexport const SearchModal = ({\n open = true,\n hidden,\n toggleModal,\n children,\n}: SearchModalProps) => {\n const classes = useStyles();\n\n return (\n <Dialog\n classes={{\n paperFullWidth: classes.paperFullWidth,\n }}\n onClose={toggleModal}\n aria-labelledby=\"search-modal-title\"\n fullWidth\n maxWidth=\"lg\"\n open={open}\n hidden={hidden}\n >\n {open && (\n <SearchContextProvider inheritParentContextIfAvailable>\n {(children && children({ toggleModal })) ?? (\n <Modal toggleModal={toggleModal} />\n )}\n </SearchContextProvider>\n )}\n </Dialog>\n );\n};\n","/*\n * Copyright 2022 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 React, { ReactNode, useCallback, useContext, useState } from 'react';\nimport {\n createVersionedContext,\n createVersionedValueMap,\n} from '@backstage/version-bridge';\n\n/**\n * The state of the search modal, as well as functions for changing the modal's\n * visibility.\n *\n * @public\n */\nexport type SearchModalValue = {\n state: {\n hidden: boolean;\n open: boolean;\n };\n toggleModal: () => void;\n setOpen: (open: boolean) => void;\n};\n\nconst SearchModalContext = createVersionedContext<{\n 1: SearchModalValue | undefined;\n}>('search-modal-context');\n\n/**\n * Props for the SearchModalProvider.\n * @public\n */\nexport type SearchModalProviderProps = {\n /**\n * Children which should have access to the SearchModal context and the\n * associated useSearchModal() hook.\n */\n children: ReactNode;\n\n /**\n * Pass true if the modal should be rendered initially.\n */\n showInitially?: boolean;\n};\n\n/**\n * A context provider responsible for storing and managing state related to the\n * search modal.\n *\n * @remarks\n * If you need to control visibility of the search toggle outside of the modal\n * itself, you can optionally place this higher up in the react tree where your\n * custom code and the search modal share the same context.\n *\n * @example\n * ```tsx\n * import {\n * SearchModalProvider,\n * SidebarSearchModal,\n * } from '@backstage/plugin-search';\n *\n * // ...\n *\n * <SearchModalProvider>\n * <KeyboardShortcutSearchToggler />\n * <SidebarSearchModal>\n * {({ toggleModal }) => <SearchModal toggleModal={toggleModal} />}\n * </SidebarSearchModal>\n * </SearchModalProvider>\n * ```\n *\n * @public\n */\nexport const SearchModalProvider = ({\n children,\n showInitially,\n}: SearchModalProviderProps) => {\n const value = useSearchModal(showInitially);\n const versionedValue = createVersionedValueMap({ 1: value });\n return (\n <SearchModalContext.Provider value={versionedValue}>\n {children}\n </SearchModalContext.Provider>\n );\n};\n\n/**\n * Use this hook to manage the state of {@link SearchModal}\n * and change its visibility.\n *\n * @public\n *\n * @param initialState - pass `true` to make the modal initially visible\n * @returns an object containing the state of the modal together with\n * functions for changing the visibility of the modal.\n */\nexport function useSearchModal(initialState = false) {\n // Check for any existing parent context.\n const parentContext = useContext(SearchModalContext);\n const parentContextValue = parentContext?.atVersion(1);\n\n const [state, setState] = useState({\n hidden: !initialState,\n open: initialState,\n });\n\n const toggleModal = useCallback(\n () =>\n setState(prevState => ({\n open: true,\n hidden: !prevState.hidden,\n })),\n [],\n );\n\n const setOpen = useCallback(\n (open: boolean) =>\n setState(prevState => ({\n open: prevState.open || open,\n hidden: !open,\n })),\n [],\n );\n\n // Inherit from parent context, if set.\n return parentContextValue?.state\n ? parentContextValue\n : { state, toggleModal, setOpen };\n}\n","/*\n * Copyright 2020 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 React, { useEffect } from 'react';\nimport usePrevious from 'react-use/lib/usePrevious';\nimport qs from 'qs';\nimport { useLocation, useOutlet } from 'react-router';\nimport {\n SearchContextProvider,\n useSearch,\n} from '@backstage/plugin-search-react';\nimport { JsonObject } from '@backstage/types';\n\nexport const UrlUpdater = () => {\n const location = useLocation();\n const {\n term,\n setTerm,\n types,\n setTypes,\n pageCursor,\n setPageCursor,\n filters,\n setFilters,\n } = useSearch();\n\n const prevQueryParams = usePrevious(location.search);\n useEffect(() => {\n // Only respond to changes to url query params\n if (location.search === prevQueryParams) {\n return;\n }\n\n const query =\n qs.parse(location.search.substring(1), { arrayLimit: 0 }) || {};\n\n if (query.filters) {\n setFilters(query.filters as JsonObject);\n }\n\n if (query.query) {\n setTerm(query.query as string);\n }\n\n if (query.pageCursor) {\n setPageCursor(query.pageCursor as string);\n }\n\n if (query.types) {\n setTypes(query.types as string[]);\n }\n }, [prevQueryParams, location, setTerm, setTypes, setPageCursor, setFilters]);\n\n useEffect(() => {\n const newParams = qs.stringify(\n {\n query: term,\n types,\n pageCursor,\n filters,\n },\n { arrayFormat: 'brackets' },\n );\n const newUrl = `${window.location.pathname}?${newParams}`;\n\n // We directly manipulate window history here in order to not re-render\n // infinitely (state => location => state => etc). The intention of this\n // code is just to ensure the right query/filters are loaded when a user\n // clicks the \"back\" button after clicking a result.\n window.history.replaceState(null, document.title, newUrl);\n }, [term, types, pageCursor, filters]);\n\n return null;\n};\n\n/**\n * @public\n */\nexport const SearchPage = () => {\n const outlet = useOutlet();\n\n return (\n <SearchContextProvider>\n <UrlUpdater />\n {outlet}\n </SearchContextProvider>\n );\n};\n","/*\n * Copyright 2021 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 React, { cloneElement, Fragment, useEffect, useState } from 'react';\nimport { useSearch } from '@backstage/plugin-search-react';\nimport {\n Accordion,\n AccordionSummary,\n AccordionDetails,\n Card,\n CardContent,\n CardHeader,\n Divider,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n makeStyles,\n} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport AllIcon from '@material-ui/icons/FontDownload';\n\nconst useStyles = makeStyles(theme => ({\n card: {\n backgroundColor: 'rgba(0, 0, 0, .11)',\n },\n cardContent: {\n paddingTop: theme.spacing(1),\n },\n icon: {\n color: theme.palette.common.black,\n },\n list: {\n width: '100%',\n },\n listItemIcon: {\n width: '24px',\n height: '24px',\n },\n accordion: {\n backgroundColor: theme.palette.background.paper,\n },\n accordionSummary: {\n minHeight: 'auto',\n '&.Mui-expanded': {\n minHeight: 'auto',\n },\n },\n accordionSummaryContent: {\n margin: theme.spacing(2, 0),\n '&.Mui-expanded': {\n margin: theme.spacing(2, 0),\n },\n },\n accordionDetails: {\n padding: theme.spacing(0, 0, 1),\n },\n}));\n\n/**\n * @public\n */\nexport type SearchTypeAccordionProps = {\n name: string;\n types: Array<{\n value: string;\n name: string;\n icon: JSX.Element;\n }>;\n defaultValue?: string;\n};\n\nexport const SearchTypeAccordion = (props: SearchTypeAccordionProps) => {\n const classes = useStyles();\n const { setPageCursor, setTypes, types } = useSearch();\n const [expanded, setExpanded] = useState(true);\n const { defaultValue, name, types: givenTypes } = props;\n\n const toggleExpanded = () => setExpanded(prevState => !prevState);\n const handleClick = (type: string) => {\n return () => {\n setTypes(type !== '' ? [type] : []);\n setPageCursor(undefined);\n setExpanded(false);\n };\n };\n\n // Handle any provided defaultValue\n useEffect(() => {\n if (defaultValue) {\n setTypes([defaultValue]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const definedTypes = [\n {\n value: '',\n name: 'All',\n icon: <AllIcon />,\n },\n ...givenTypes,\n ];\n const selected = types[0] || '';\n\n return (\n <Card className={classes.card}>\n <CardHeader title={name} titleTypographyProps={{ variant: 'overline' }} />\n <CardContent className={classes.cardContent}>\n <Accordion\n className={classes.accordion}\n expanded={expanded}\n onChange={toggleExpanded}\n >\n <AccordionSummary\n classes={{\n root: classes.accordionSummary,\n content: classes.accordionSummaryContent,\n }}\n expandIcon={<ExpandMoreIcon className={classes.icon} />}\n IconButtonProps={{ size: 'small' }}\n >\n {expanded\n ? 'Collapse'\n : definedTypes.filter(t => t.value === selected)[0]!.name}\n </AccordionSummary>\n <AccordionDetails classes={{ root: classes.accordionDetails }}>\n <List\n className={classes.list}\n component=\"nav\"\n aria-label=\"filter by type\"\n disablePadding\n dense\n >\n {definedTypes.map(type => (\n <Fragment key={type.value}>\n <Divider />\n <ListItem\n selected={\n types[0] === type.value ||\n (types.length === 0 && type.value === '')\n }\n onClick={handleClick(type.value)}\n button\n >\n <ListItemIcon>\n {cloneElement(type.icon, {\n className: classes.listItemIcon,\n })}\n </ListItemIcon>\n <ListItemText primary={type.name} />\n </ListItem>\n </Fragment>\n ))}\n </List>\n </AccordionDetails>\n </Accordion>\n </CardContent>\n </Card>\n );\n};\n","/*\n * Copyright 2021 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 React, { useEffect } from 'react';\nimport { useSearch } from '@backstage/plugin-search-react';\nimport { BackstageTheme } from '@backstage/theme';\nimport { makeStyles, Tab, Tabs } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme: BackstageTheme) => ({\n tabs: {\n borderBottom: `1px solid ${theme.palette.textVerySubtle}`,\n padding: theme.spacing(0, 4),\n },\n tab: {\n height: '50px',\n fontWeight: theme.typography.fontWeightBold,\n fontSize: theme.typography.pxToRem(13),\n color: theme.palette.textSubtle,\n minWidth: '130px',\n },\n}));\n\n/**\n * @public\n */\nexport type SearchTypeTabsProps = {\n types: Array<{\n value: string;\n name: string;\n }>;\n defaultValue?: string;\n};\n\nexport const SearchTypeTabs = (props: SearchTypeTabsProps) => {\n const classes = useStyles();\n const { setPageCursor, setTypes, types } = useSearch();\n const { defaultValue, types: givenTypes } = props;\n\n const changeTab = (_: React.ChangeEvent<{}>, newType: string) => {\n setTypes(newType !== '' ? [newType] : []);\n setPageCursor(undefined);\n };\n\n // Handle any provided defaultValue\n useEffect(() => {\n if (defaultValue) {\n setTypes([defaultValue]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const definedTypes = [\n {\n value: '',\n name: 'All',\n },\n ...givenTypes,\n ];\n\n return (\n <Tabs\n className={classes.tabs}\n indicatorColor=\"primary\"\n value={types.length === 0 ? '' : types[0]}\n onChange={changeTab}\n >\n {definedTypes.map((type, idx) => (\n <Tab\n key={idx}\n className={classes.tab}\n disableRipple\n label={type.name}\n value={type.value}\n />\n ))}\n </Tabs>\n );\n};\n","/*\n * Copyright 2021 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 */\nimport {\n Checkbox,\n Chip,\n FormControl,\n InputLabel,\n ListItemText,\n makeStyles,\n MenuItem,\n Select,\n} from '@material-ui/core';\nimport React, { ChangeEvent } from 'react';\nimport useEffectOnce from 'react-use/lib/useEffectOnce';\nimport {\n SearchTypeAccordion,\n SearchTypeAccordionProps,\n} from './SearchType.Accordion';\nimport { SearchTypeTabs, SearchTypeTabsProps } from './SearchType.Tabs';\nimport { useSearch } from '@backstage/plugin-search-react';\n\nconst useStyles = makeStyles(theme => ({\n label: {\n textTransform: 'capitalize',\n },\n chips: {\n display: 'flex',\n flexWrap: 'wrap',\n marginTop: theme.spacing(1),\n },\n chip: {\n margin: 2,\n },\n}));\n\n/**\n * Props for {@link SearchType}.\n *\n * @public\n */\nexport type SearchTypeProps = {\n className?: string;\n name: string;\n values?: string[];\n defaultValue?: string[] | string | null;\n};\n\n/**\n * @public\n */\nconst SearchType = (props: SearchTypeProps) => {\n const { className, defaultValue, name, values = [] } = props;\n const classes = useStyles();\n const { types, setTypes } = useSearch();\n\n useEffectOnce(() => {\n if (!types.length) {\n if (defaultValue && Array.isArray(defaultValue)) {\n setTypes(defaultValue);\n } else if (defaultValue) {\n setTypes([defaultValue]);\n }\n }\n });\n\n const handleChange = (e: ChangeEvent<{ value: unknown }>) => {\n const value = e.target.value as string[];\n setTypes(value as string[]);\n };\n\n return (\n <FormControl\n className={className}\n variant=\"filled\"\n fullWidth\n data-testid=\"search-typefilter-next\"\n >\n <InputLabel className={classes.label} margin=\"dense\">\n {name}\n </InputLabel>\n <Select\n multiple\n variant=\"outlined\"\n value={types}\n onChange={handleChange}\n placeholder=\"All Results\"\n renderValue={selected => (\n <div className={classes.chips}>\n {(selected as string[]).map(value => (\n <Chip\n key={value}\n label={value}\n className={classes.chip}\n size=\"small\"\n />\n ))}\n </div>\n )}\n >\n {values.map((value: string) => (\n <MenuItem key={value} value={value}>\n <Checkbox checked={types.indexOf(value) > -1} />\n <ListItemText primary={value} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\n/**\n * A control surface for the search query's \"types\" property, displayed as a\n * single-select collapsible accordion suitable for use in faceted search UIs.\n * @public\n */\nSearchType.Accordion = (props: SearchTypeAccordionProps) => {\n return <SearchTypeAccordion {...props} />;\n};\n\n/**\n * A control surface for the search query's \"types\" property, displayed as a\n * tabs suitable for use in faceted search UIs.\n * @public\n */\nSearchType.Tabs = (props: SearchTypeTabsProps) => {\n return <SearchTypeTabs {...props} />;\n};\n\nexport { SearchType };\nexport type { SearchTypeAccordionProps, SearchTypeTabsProps };\n","/*\n * Copyright 2020 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 */\nimport qs from 'qs';\nimport React, { useCallback } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { rootRouteRef } from '../../plugin';\n\nimport { useRouteRef, IconComponent } from '@backstage/core-plugin-api';\nimport { SidebarSearchField, useContent } from '@backstage/core-components';\n\n/**\n * Props for {@link SidebarSearch}.\n *\n * @public\n */\nexport type SidebarSearchProps = {\n icon?: IconComponent;\n};\n\n/**\n * @public\n */\nexport const SidebarSearch = (props: SidebarSearchProps) => {\n const searchRoute = useRouteRef(rootRouteRef);\n const { focusContent } = useContent();\n const navigate = useNavigate();\n const handleSearch = useCallback(\n (query: string): void => {\n const queryString = qs.stringify({ query }, { addQueryPrefix: true });\n focusContent();\n navigate(`${searchRoute()}${queryString}`);\n },\n [focusContent, navigate, searchRoute],\n );\n\n return (\n <SidebarSearchField\n icon={props.icon}\n onSearch={handleSearch}\n to=\"/search\"\n />\n );\n};\n"],"names":["SearchPage","useStyles","makeStyles"],"mappings":"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"}
1
+ {"version":3,"file":"index-66078e0a.esm.js","sources":["../../src/apis.ts","../../src/plugin.ts","../../src/components/SearchModal/SearchModal.tsx","../../src/components/SearchModal/useSearchModal.tsx","../../src/components/SearchPage/SearchPage.tsx","../../src/components/SearchType/SearchType.Accordion.tsx","../../src/components/SearchType/SearchType.Tabs.tsx","../../src/components/SearchType/SearchType.tsx","../../src/components/SidebarSearch/SidebarSearch.tsx"],"sourcesContent":["/*\n * Copyright 2020 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 { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api';\nimport { ResponseError } from '@backstage/errors';\nimport { SearchApi } from '@backstage/plugin-search-react';\nimport { SearchQuery, SearchResultSet } from '@backstage/plugin-search-common';\n\nimport qs from 'qs';\n\nexport class SearchClient implements SearchApi {\n private readonly discoveryApi: DiscoveryApi;\n private readonly identityApi: IdentityApi;\n\n constructor(options: {\n discoveryApi: DiscoveryApi;\n identityApi: IdentityApi;\n }) {\n this.discoveryApi = options.discoveryApi;\n this.identityApi = options.identityApi;\n }\n\n async query(query: SearchQuery): Promise<SearchResultSet> {\n const { token } = await this.identityApi.getCredentials();\n const queryString = qs.stringify(query);\n const url = `${await this.discoveryApi.getBaseUrl(\n 'search/query',\n )}?${queryString}`;\n const response = await fetch(url, {\n headers: token ? { Authorization: `Bearer ${token}` } : {},\n });\n\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n\n return response.json();\n }\n}\n","/*\n * Copyright 2020 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 { SearchClient } from './apis';\nimport { searchApiRef } from '@backstage/plugin-search-react';\nimport {\n createApiFactory,\n createPlugin,\n createRouteRef,\n createRoutableExtension,\n discoveryApiRef,\n createComponentExtension,\n identityApiRef,\n} from '@backstage/core-plugin-api';\n\nexport const rootRouteRef = createRouteRef({\n id: 'search',\n});\n\n/**\n * @public\n */\nexport const searchPlugin = createPlugin({\n id: 'search',\n apis: [\n createApiFactory({\n api: searchApiRef,\n deps: { discoveryApi: discoveryApiRef, identityApi: identityApiRef },\n factory: ({ discoveryApi, identityApi }) => {\n return new SearchClient({ discoveryApi, identityApi });\n },\n }),\n ],\n routes: {\n root: rootRouteRef,\n },\n});\n\n/**\n * @public\n */\nexport const SearchPage = searchPlugin.provide(\n createRoutableExtension({\n name: 'SearchPage',\n component: () => import('./components/SearchPage').then(m => m.SearchPage),\n mountPoint: rootRouteRef,\n }),\n);\n\n/**\n * @public\n */\nexport const SidebarSearchModal = searchPlugin.provide(\n createComponentExtension({\n name: 'SidebarSearchModal',\n component: {\n lazy: () =>\n import('./components/SidebarSearchModal').then(\n m => m.SidebarSearchModal,\n ),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const HomePageSearchBar = searchPlugin.provide(\n createComponentExtension({\n name: 'HomePageSearchBar',\n component: {\n lazy: () =>\n import('./components/HomePageComponent').then(m => m.HomePageSearchBar),\n },\n }),\n);\n","/*\n * Copyright 2021 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 React from 'react';\nimport {\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n Grid,\n List,\n Paper,\n useTheme,\n} from '@material-ui/core';\nimport LaunchIcon from '@material-ui/icons/Launch';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n DefaultResultListItem,\n SearchContextProvider,\n SearchBar,\n SearchResult,\n SearchResultPager,\n useSearch,\n} from '@backstage/plugin-search-react';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { Link, useContent } from '@backstage/core-components';\nimport { rootRouteRef } from '../../plugin';\n\n/**\n * @public\n **/\nexport interface SearchModalChildrenProps {\n /**\n * A function that should be invoked when navigating away from the modal.\n */\n toggleModal: () => void;\n}\n\n/**\n * @public\n **/\nexport interface SearchModalProps {\n /**\n * If true, it renders the modal.\n */\n open?: boolean;\n /**\n * This is supposed to be used together with the open prop.\n * If `hidden` is true, it hides the modal.\n * If `open` is false, the value of `hidden` has no effect on the modal.\n * Use `open` for controlling whether the modal should be rendered or not.\n */\n hidden?: boolean;\n /**\n * a function invoked when a search item is pressed or when the dialog\n * should be closed.\n */\n toggleModal: () => void;\n /**\n * A function that returns custom content to render in the search modal in\n * place of the default.\n */\n children?: (props: SearchModalChildrenProps) => JSX.Element;\n}\n\nconst useStyles = makeStyles(theme => ({\n container: {\n borderRadius: 30,\n display: 'flex',\n height: '2.4em',\n },\n input: {\n flex: 1,\n },\n // Reduces default height of the modal, keeping a gap of 128px between the top and bottom of the page.\n paperFullWidth: { height: 'calc(100% - 128px)' },\n dialogActionsContainer: { padding: theme.spacing(1, 3) },\n viewResultsLink: { verticalAlign: '0.5em' },\n}));\n\nexport const Modal = ({ toggleModal }: SearchModalProps) => {\n const getSearchLink = useRouteRef(rootRouteRef);\n const classes = useStyles();\n\n const { term } = useSearch();\n const { focusContent } = useContent();\n const { transitions } = useTheme();\n\n const handleResultClick = () => {\n toggleModal();\n setTimeout(focusContent, transitions.duration.leavingScreen);\n };\n\n const handleKeyPress = () => {\n handleResultClick();\n };\n\n return (\n <>\n <DialogTitle>\n <Paper className={classes.container}>\n <SearchBar className={classes.input} />\n </Paper>\n </DialogTitle>\n <DialogContent>\n <Grid\n container\n direction=\"row-reverse\"\n justifyContent=\"flex-start\"\n alignItems=\"center\"\n >\n <Grid item>\n <Link\n onClick={() => {\n toggleModal();\n setTimeout(focusContent, transitions.duration.leavingScreen);\n }}\n to={`${getSearchLink()}?query=${term}`}\n >\n <span className={classes.viewResultsLink}>View Full Results</span>\n <LaunchIcon color=\"primary\" />\n </Link>\n </Grid>\n </Grid>\n <Divider />\n <SearchResult>\n {({ results }) => (\n <List>\n {results.map(({ document, highlight }) => (\n <div\n role=\"button\"\n tabIndex={0}\n key={`${document.location}-btn`}\n onClick={handleResultClick}\n onKeyPress={handleKeyPress}\n >\n <DefaultResultListItem\n key={document.location}\n result={document}\n highlight={highlight}\n />\n </div>\n ))}\n </List>\n )}\n </SearchResult>\n </DialogContent>\n <DialogActions className={classes.dialogActionsContainer}>\n <Grid container direction=\"row\">\n <Grid item xs={12}>\n <SearchResultPager />\n </Grid>\n </Grid>\n </DialogActions>\n </>\n );\n};\n\n/**\n * @public\n */\nexport const SearchModal = ({\n open = true,\n hidden,\n toggleModal,\n children,\n}: SearchModalProps) => {\n const classes = useStyles();\n\n return (\n <Dialog\n classes={{\n paperFullWidth: classes.paperFullWidth,\n }}\n onClose={toggleModal}\n aria-labelledby=\"search-modal-title\"\n fullWidth\n maxWidth=\"lg\"\n open={open}\n hidden={hidden}\n >\n {open && (\n <SearchContextProvider inheritParentContextIfAvailable>\n {(children && children({ toggleModal })) ?? (\n <Modal toggleModal={toggleModal} />\n )}\n </SearchContextProvider>\n )}\n </Dialog>\n );\n};\n","/*\n * Copyright 2022 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 React, { ReactNode, useCallback, useContext, useState } from 'react';\nimport {\n createVersionedContext,\n createVersionedValueMap,\n} from '@backstage/version-bridge';\n\n/**\n * The state of the search modal, as well as functions for changing the modal's\n * visibility.\n *\n * @public\n */\nexport type SearchModalValue = {\n state: {\n hidden: boolean;\n open: boolean;\n };\n toggleModal: () => void;\n setOpen: (open: boolean) => void;\n};\n\nconst SearchModalContext = createVersionedContext<{\n 1: SearchModalValue | undefined;\n}>('search-modal-context');\n\n/**\n * Props for the SearchModalProvider.\n * @public\n */\nexport type SearchModalProviderProps = {\n /**\n * Children which should have access to the SearchModal context and the\n * associated useSearchModal() hook.\n */\n children: ReactNode;\n\n /**\n * Pass true if the modal should be rendered initially.\n */\n showInitially?: boolean;\n};\n\n/**\n * A context provider responsible for storing and managing state related to the\n * search modal.\n *\n * @remarks\n * If you need to control visibility of the search toggle outside of the modal\n * itself, you can optionally place this higher up in the react tree where your\n * custom code and the search modal share the same context.\n *\n * @example\n * ```tsx\n * import {\n * SearchModalProvider,\n * SidebarSearchModal,\n * } from '@backstage/plugin-search';\n *\n * // ...\n *\n * <SearchModalProvider>\n * <KeyboardShortcutSearchToggler />\n * <SidebarSearchModal>\n * {({ toggleModal }) => <SearchModal toggleModal={toggleModal} />}\n * </SidebarSearchModal>\n * </SearchModalProvider>\n * ```\n *\n * @public\n */\nexport const SearchModalProvider = ({\n children,\n showInitially,\n}: SearchModalProviderProps) => {\n const value = useSearchModal(showInitially);\n const versionedValue = createVersionedValueMap({ 1: value });\n return (\n <SearchModalContext.Provider value={versionedValue}>\n {children}\n </SearchModalContext.Provider>\n );\n};\n\n/**\n * Use this hook to manage the state of {@link SearchModal}\n * and change its visibility.\n *\n * @public\n *\n * @param initialState - pass `true` to make the modal initially visible\n * @returns an object containing the state of the modal together with\n * functions for changing the visibility of the modal.\n */\nexport function useSearchModal(initialState = false) {\n // Check for any existing parent context.\n const parentContext = useContext(SearchModalContext);\n const parentContextValue = parentContext?.atVersion(1);\n\n const [state, setState] = useState({\n hidden: !initialState,\n open: initialState,\n });\n\n const toggleModal = useCallback(\n () =>\n setState(prevState => ({\n open: true,\n hidden: !prevState.hidden,\n })),\n [],\n );\n\n const setOpen = useCallback(\n (open: boolean) =>\n setState(prevState => ({\n open: prevState.open || open,\n hidden: !open,\n })),\n [],\n );\n\n // Inherit from parent context, if set.\n return parentContextValue?.state\n ? parentContextValue\n : { state, toggleModal, setOpen };\n}\n","/*\n * Copyright 2020 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 React, { useEffect } from 'react';\nimport usePrevious from 'react-use/lib/usePrevious';\nimport qs from 'qs';\nimport { useLocation, useOutlet } from 'react-router';\nimport {\n SearchContextProvider,\n useSearch,\n} from '@backstage/plugin-search-react';\nimport { JsonObject } from '@backstage/types';\n\nexport const UrlUpdater = () => {\n const location = useLocation();\n const {\n term,\n setTerm,\n types,\n setTypes,\n pageCursor,\n setPageCursor,\n filters,\n setFilters,\n } = useSearch();\n\n const prevQueryParams = usePrevious(location.search);\n useEffect(() => {\n // Only respond to changes to url query params\n if (location.search === prevQueryParams) {\n return;\n }\n\n const query =\n qs.parse(location.search.substring(1), { arrayLimit: 0 }) || {};\n\n if (query.filters) {\n setFilters(query.filters as JsonObject);\n }\n\n if (query.query) {\n setTerm(query.query as string);\n }\n\n if (query.pageCursor) {\n setPageCursor(query.pageCursor as string);\n }\n\n if (query.types) {\n setTypes(query.types as string[]);\n }\n }, [prevQueryParams, location, setTerm, setTypes, setPageCursor, setFilters]);\n\n useEffect(() => {\n const newParams = qs.stringify(\n {\n query: term,\n types,\n pageCursor,\n filters,\n },\n { arrayFormat: 'brackets' },\n );\n const newUrl = `${window.location.pathname}?${newParams}`;\n\n // We directly manipulate window history here in order to not re-render\n // infinitely (state => location => state => etc). The intention of this\n // code is just to ensure the right query/filters are loaded when a user\n // clicks the \"back\" button after clicking a result.\n window.history.replaceState(null, document.title, newUrl);\n }, [term, types, pageCursor, filters]);\n\n return null;\n};\n\n/**\n * @public\n */\nexport const SearchPage = () => {\n const outlet = useOutlet();\n\n return (\n <SearchContextProvider>\n <UrlUpdater />\n {outlet}\n </SearchContextProvider>\n );\n};\n","/*\n * Copyright 2021 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 React, { cloneElement, Fragment, useEffect, useState } from 'react';\nimport { useSearch } from '@backstage/plugin-search-react';\nimport {\n Accordion,\n AccordionSummary,\n AccordionDetails,\n Card,\n CardContent,\n CardHeader,\n Divider,\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n makeStyles,\n} from '@material-ui/core';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport AllIcon from '@material-ui/icons/FontDownload';\n\nconst useStyles = makeStyles(theme => ({\n card: {\n backgroundColor: 'rgba(0, 0, 0, .11)',\n },\n cardContent: {\n paddingTop: theme.spacing(1),\n },\n icon: {\n color: theme.palette.common.black,\n },\n list: {\n width: '100%',\n },\n listItemIcon: {\n width: '24px',\n height: '24px',\n },\n accordion: {\n backgroundColor: theme.palette.background.paper,\n },\n accordionSummary: {\n minHeight: 'auto',\n '&.Mui-expanded': {\n minHeight: 'auto',\n },\n },\n accordionSummaryContent: {\n margin: theme.spacing(2, 0),\n '&.Mui-expanded': {\n margin: theme.spacing(2, 0),\n },\n },\n accordionDetails: {\n padding: theme.spacing(0, 0, 1),\n },\n}));\n\n/**\n * @public\n */\nexport type SearchTypeAccordionProps = {\n name: string;\n types: Array<{\n value: string;\n name: string;\n icon: JSX.Element;\n }>;\n defaultValue?: string;\n};\n\nexport const SearchTypeAccordion = (props: SearchTypeAccordionProps) => {\n const classes = useStyles();\n const { setPageCursor, setTypes, types } = useSearch();\n const [expanded, setExpanded] = useState(true);\n const { defaultValue, name, types: givenTypes } = props;\n\n const toggleExpanded = () => setExpanded(prevState => !prevState);\n const handleClick = (type: string) => {\n return () => {\n setTypes(type !== '' ? [type] : []);\n setPageCursor(undefined);\n setExpanded(false);\n };\n };\n\n // Handle any provided defaultValue\n useEffect(() => {\n if (defaultValue) {\n setTypes([defaultValue]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const definedTypes = [\n {\n value: '',\n name: 'All',\n icon: <AllIcon />,\n },\n ...givenTypes,\n ];\n const selected = types[0] || '';\n\n return (\n <Card className={classes.card}>\n <CardHeader title={name} titleTypographyProps={{ variant: 'overline' }} />\n <CardContent className={classes.cardContent}>\n <Accordion\n className={classes.accordion}\n expanded={expanded}\n onChange={toggleExpanded}\n >\n <AccordionSummary\n classes={{\n root: classes.accordionSummary,\n content: classes.accordionSummaryContent,\n }}\n expandIcon={<ExpandMoreIcon className={classes.icon} />}\n IconButtonProps={{ size: 'small' }}\n >\n {expanded\n ? 'Collapse'\n : definedTypes.filter(t => t.value === selected)[0]!.name}\n </AccordionSummary>\n <AccordionDetails classes={{ root: classes.accordionDetails }}>\n <List\n className={classes.list}\n component=\"nav\"\n aria-label=\"filter by type\"\n disablePadding\n dense\n >\n {definedTypes.map(type => (\n <Fragment key={type.value}>\n <Divider />\n <ListItem\n selected={\n types[0] === type.value ||\n (types.length === 0 && type.value === '')\n }\n onClick={handleClick(type.value)}\n button\n >\n <ListItemIcon>\n {cloneElement(type.icon, {\n className: classes.listItemIcon,\n })}\n </ListItemIcon>\n <ListItemText primary={type.name} />\n </ListItem>\n </Fragment>\n ))}\n </List>\n </AccordionDetails>\n </Accordion>\n </CardContent>\n </Card>\n );\n};\n","/*\n * Copyright 2021 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 React, { useEffect } from 'react';\nimport { useSearch } from '@backstage/plugin-search-react';\nimport { BackstageTheme } from '@backstage/theme';\nimport { makeStyles, Tab, Tabs } from '@material-ui/core';\n\nconst useStyles = makeStyles((theme: BackstageTheme) => ({\n tabs: {\n borderBottom: `1px solid ${theme.palette.textVerySubtle}`,\n padding: theme.spacing(0, 4),\n },\n tab: {\n height: '50px',\n fontWeight: theme.typography.fontWeightBold,\n fontSize: theme.typography.pxToRem(13),\n color: theme.palette.textSubtle,\n minWidth: '130px',\n },\n}));\n\n/**\n * @public\n */\nexport type SearchTypeTabsProps = {\n types: Array<{\n value: string;\n name: string;\n }>;\n defaultValue?: string;\n};\n\nexport const SearchTypeTabs = (props: SearchTypeTabsProps) => {\n const classes = useStyles();\n const { setPageCursor, setTypes, types } = useSearch();\n const { defaultValue, types: givenTypes } = props;\n\n const changeTab = (_: React.ChangeEvent<{}>, newType: string) => {\n setTypes(newType !== '' ? [newType] : []);\n setPageCursor(undefined);\n };\n\n // Handle any provided defaultValue\n useEffect(() => {\n if (defaultValue) {\n setTypes([defaultValue]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const definedTypes = [\n {\n value: '',\n name: 'All',\n },\n ...givenTypes,\n ];\n\n return (\n <Tabs\n className={classes.tabs}\n indicatorColor=\"primary\"\n value={types.length === 0 ? '' : types[0]}\n onChange={changeTab}\n >\n {definedTypes.map((type, idx) => (\n <Tab\n key={idx}\n className={classes.tab}\n disableRipple\n label={type.name}\n value={type.value}\n />\n ))}\n </Tabs>\n );\n};\n","/*\n * Copyright 2021 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 */\nimport {\n Checkbox,\n Chip,\n FormControl,\n InputLabel,\n ListItemText,\n makeStyles,\n MenuItem,\n Select,\n} from '@material-ui/core';\nimport React, { ChangeEvent } from 'react';\nimport useEffectOnce from 'react-use/lib/useEffectOnce';\nimport {\n SearchTypeAccordion,\n SearchTypeAccordionProps,\n} from './SearchType.Accordion';\nimport { SearchTypeTabs, SearchTypeTabsProps } from './SearchType.Tabs';\nimport { useSearch } from '@backstage/plugin-search-react';\n\nconst useStyles = makeStyles(theme => ({\n label: {\n textTransform: 'capitalize',\n },\n chips: {\n display: 'flex',\n flexWrap: 'wrap',\n marginTop: theme.spacing(1),\n },\n chip: {\n margin: 2,\n },\n}));\n\n/**\n * Props for {@link SearchType}.\n *\n * @public\n */\nexport type SearchTypeProps = {\n className?: string;\n name: string;\n values?: string[];\n defaultValue?: string[] | string | null;\n};\n\n/**\n * @public\n */\nconst SearchType = (props: SearchTypeProps) => {\n const { className, defaultValue, name, values = [] } = props;\n const classes = useStyles();\n const { types, setTypes } = useSearch();\n\n useEffectOnce(() => {\n if (!types.length) {\n if (defaultValue && Array.isArray(defaultValue)) {\n setTypes(defaultValue);\n } else if (defaultValue) {\n setTypes([defaultValue]);\n }\n }\n });\n\n const handleChange = (e: ChangeEvent<{ value: unknown }>) => {\n const value = e.target.value as string[];\n setTypes(value as string[]);\n };\n\n return (\n <FormControl\n className={className}\n variant=\"filled\"\n fullWidth\n data-testid=\"search-typefilter-next\"\n >\n <InputLabel className={classes.label} margin=\"dense\">\n {name}\n </InputLabel>\n <Select\n multiple\n variant=\"outlined\"\n value={types}\n onChange={handleChange}\n placeholder=\"All Results\"\n renderValue={selected => (\n <div className={classes.chips}>\n {(selected as string[]).map(value => (\n <Chip\n key={value}\n label={value}\n className={classes.chip}\n size=\"small\"\n />\n ))}\n </div>\n )}\n >\n {values.map((value: string) => (\n <MenuItem key={value} value={value}>\n <Checkbox checked={types.indexOf(value) > -1} />\n <ListItemText primary={value} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\n/**\n * A control surface for the search query's \"types\" property, displayed as a\n * single-select collapsible accordion suitable for use in faceted search UIs.\n * @public\n */\nSearchType.Accordion = (props: SearchTypeAccordionProps) => {\n return <SearchTypeAccordion {...props} />;\n};\n\n/**\n * A control surface for the search query's \"types\" property, displayed as a\n * tabs suitable for use in faceted search UIs.\n * @public\n */\nSearchType.Tabs = (props: SearchTypeTabsProps) => {\n return <SearchTypeTabs {...props} />;\n};\n\nexport { SearchType };\nexport type { SearchTypeAccordionProps, SearchTypeTabsProps };\n","/*\n * Copyright 2020 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 */\nimport qs from 'qs';\nimport React, { useCallback } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { rootRouteRef } from '../../plugin';\n\nimport { useRouteRef, IconComponent } from '@backstage/core-plugin-api';\nimport { SidebarSearchField, useContent } from '@backstage/core-components';\n\n/**\n * Props for {@link SidebarSearch}.\n *\n * @public\n */\nexport type SidebarSearchProps = {\n icon?: IconComponent;\n};\n\n/**\n * @public\n */\nexport const SidebarSearch = (props: SidebarSearchProps) => {\n const searchRoute = useRouteRef(rootRouteRef);\n const { focusContent } = useContent();\n const navigate = useNavigate();\n const handleSearch = useCallback(\n (query: string): void => {\n const queryString = qs.stringify({ query }, { addQueryPrefix: true });\n focusContent();\n navigate(`${searchRoute()}${queryString}`);\n },\n [focusContent, navigate, searchRoute],\n );\n\n return (\n <SidebarSearchField\n icon={props.icon}\n onSearch={handleSearch}\n to=\"/search\"\n />\n );\n};\n"],"names":["SearchPage","useStyles","makeStyles"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { makeStyles } from '@material-ui/core/styles';
3
3
  import { SearchBarBase } from '@backstage/plugin-search-react';
4
4
  import qs from 'qs';
5
5
  import { useNavigate } from 'react-router-dom';
6
- import { r as rootRouteRef } from './index-0387f230.esm.js';
6
+ import { r as rootRouteRef } from './index-66078e0a.esm.js';
7
7
  import { useRouteRef } from '@backstage/core-plugin-api';
8
8
  import '@material-ui/core';
9
9
  import '@material-ui/icons/Launch';
@@ -48,14 +48,17 @@ const HomePageSearchBar = ({ ...props }) => {
48
48
  },
49
49
  [setQuery]
50
50
  );
51
- return /* @__PURE__ */ React.createElement(SearchBarBase, {
52
- classes: { root: classes.root },
53
- value: query,
54
- onSubmit: handleSubmit,
55
- onChange: handleChange,
56
- ...props
57
- });
51
+ return /* @__PURE__ */ React.createElement(
52
+ SearchBarBase,
53
+ {
54
+ classes: { root: classes.root },
55
+ value: query,
56
+ onSubmit: handleSubmit,
57
+ onChange: handleChange,
58
+ ...props
59
+ }
60
+ );
58
61
  };
59
62
 
60
63
  export { HomePageSearchBar };
61
- //# sourceMappingURL=index-4003b03a.esm.js.map
64
+ //# sourceMappingURL=index-e01a4e2b.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-4003b03a.esm.js","sources":["../../src/components/util.ts","../../src/components/HomePageComponent/HomePageSearchBar.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\nimport qs from 'qs';\nimport { useCallback } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { rootRouteRef } from '../plugin';\n\nimport { useRouteRef } from '@backstage/core-plugin-api';\n\nexport const useNavigateToQuery = () => {\n const searchRoute = useRouteRef(rootRouteRef);\n const navigate = useNavigate();\n return useCallback(\n ({ query }: { query: string }): void => {\n const queryString = qs.stringify({ query }, { addQueryPrefix: true });\n\n navigate(`${searchRoute()}${queryString}`);\n },\n [navigate, searchRoute],\n );\n};\n","/*\n * Copyright 2021 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 React, { useCallback, useState } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n SearchBarBase,\n SearchBarBaseProps,\n} from '@backstage/plugin-search-react';\nimport { useNavigateToQuery } from '../util';\n\nconst useStyles = makeStyles({\n root: {\n border: '1px solid #555',\n borderRadius: '6px',\n fontSize: '1.5em',\n },\n});\n\n/**\n * Props for {@link HomePageSearchBar}.\n *\n * @public\n */\nexport type HomePageSearchBarProps = Partial<\n Omit<SearchBarBaseProps, 'onChange' | 'onSubmit'>\n>;\n\n/**\n * The search bar created specifically for the composable home page.\n */\nexport const HomePageSearchBar = ({ ...props }: HomePageSearchBarProps) => {\n const classes = useStyles(props);\n const [query, setQuery] = useState('');\n const handleSearch = useNavigateToQuery();\n\n const handleSubmit = () => {\n handleSearch({ query });\n };\n\n const handleChange = useCallback(\n value => {\n setQuery(value);\n },\n [setQuery],\n );\n\n return (\n <SearchBarBase\n classes={{ root: classes.root }}\n value={query}\n onSubmit={handleSubmit}\n onChange={handleChange}\n {...props}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAsBO,MAAM,qBAAqB,MAAM;AACtC,EAAM,MAAA,WAAA,GAAc,YAAY,YAAY,CAAA,CAAA;AAC5C,EAAA,MAAM,WAAW,WAAY,EAAA,CAAA;AAC7B,EAAO,OAAA,WAAA;AAAA,IACL,CAAC,EAAE,KAAA,EAAqC,KAAA;AACtC,MAAM,MAAA,WAAA,GAAc,GAAG,SAAU,CAAA,EAAE,OAAS,EAAA,EAAE,cAAgB,EAAA,IAAA,EAAM,CAAA,CAAA;AAEpE,MAAS,QAAA,CAAA,CAAA,EAAG,WAAY,EAAA,CAAA,EAAI,WAAa,CAAA,CAAA,CAAA,CAAA;AAAA,KAC3C;AAAA,IACA,CAAC,UAAU,WAAW,CAAA;AAAA,GACxB,CAAA;AACF,CAAA;;ACTA,MAAM,YAAY,UAAW,CAAA;AAAA,EAC3B,IAAM,EAAA;AAAA,IACJ,MAAQ,EAAA,gBAAA;AAAA,IACR,YAAc,EAAA,KAAA;AAAA,IACd,QAAU,EAAA,OAAA;AAAA,GACZ;AACF,CAAC,CAAA,CAAA;AAcM,MAAM,iBAAoB,GAAA,CAAC,EAAK,GAAA,KAAA,EAAoC,KAAA;AACzE,EAAM,MAAA,OAAA,GAAU,UAAU,KAAK,CAAA,CAAA;AAC/B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,EAAE,CAAA,CAAA;AACrC,EAAA,MAAM,eAAe,kBAAmB,EAAA,CAAA;AAExC,EAAA,MAAM,eAAe,MAAM;AACzB,IAAa,YAAA,CAAA,EAAE,OAAO,CAAA,CAAA;AAAA,GACxB,CAAA;AAEA,EAAA,MAAM,YAAe,GAAA,WAAA;AAAA,IACnB,CAAS,KAAA,KAAA;AACP,MAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AAAA,KAChB;AAAA,IACA,CAAC,QAAQ,CAAA;AAAA,GACX,CAAA;AAEA,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA;AAAA,IACC,OAAS,EAAA,EAAE,IAAM,EAAA,OAAA,CAAQ,IAAK,EAAA;AAAA,IAC9B,KAAO,EAAA,KAAA;AAAA,IACP,QAAU,EAAA,YAAA;AAAA,IACV,QAAU,EAAA,YAAA;AAAA,IACT,GAAG,KAAA;AAAA,GACN,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"index-e01a4e2b.esm.js","sources":["../../src/components/util.ts","../../src/components/HomePageComponent/HomePageSearchBar.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\nimport qs from 'qs';\nimport { useCallback } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { rootRouteRef } from '../plugin';\n\nimport { useRouteRef } from '@backstage/core-plugin-api';\n\nexport const useNavigateToQuery = () => {\n const searchRoute = useRouteRef(rootRouteRef);\n const navigate = useNavigate();\n return useCallback(\n ({ query }: { query: string }): void => {\n const queryString = qs.stringify({ query }, { addQueryPrefix: true });\n\n navigate(`${searchRoute()}${queryString}`);\n },\n [navigate, searchRoute],\n );\n};\n","/*\n * Copyright 2021 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 React, { useCallback, useState } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n SearchBarBase,\n SearchBarBaseProps,\n} from '@backstage/plugin-search-react';\nimport { useNavigateToQuery } from '../util';\n\nconst useStyles = makeStyles({\n root: {\n border: '1px solid #555',\n borderRadius: '6px',\n fontSize: '1.5em',\n },\n});\n\n/**\n * Props for {@link HomePageSearchBar}.\n *\n * @public\n */\nexport type HomePageSearchBarProps = Partial<\n Omit<SearchBarBaseProps, 'onChange' | 'onSubmit'>\n>;\n\n/**\n * The search bar created specifically for the composable home page.\n */\nexport const HomePageSearchBar = ({ ...props }: HomePageSearchBarProps) => {\n const classes = useStyles(props);\n const [query, setQuery] = useState('');\n const handleSearch = useNavigateToQuery();\n\n const handleSubmit = () => {\n handleSearch({ query });\n };\n\n const handleChange = useCallback(\n value => {\n setQuery(value);\n },\n [setQuery],\n );\n\n return (\n <SearchBarBase\n classes={{ root: classes.root }}\n value={query}\n onSubmit={handleSubmit}\n onChange={handleChange}\n {...props}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAsBO,MAAM,qBAAqB,MAAM;AACtC,EAAM,MAAA,WAAA,GAAc,YAAY,YAAY,CAAA,CAAA;AAC5C,EAAA,MAAM,WAAW,WAAY,EAAA,CAAA;AAC7B,EAAO,OAAA,WAAA;AAAA,IACL,CAAC,EAAE,KAAA,EAAqC,KAAA;AACtC,MAAM,MAAA,WAAA,GAAc,GAAG,SAAU,CAAA,EAAE,OAAS,EAAA,EAAE,cAAgB,EAAA,IAAA,EAAM,CAAA,CAAA;AAEpE,MAAS,QAAA,CAAA,CAAA,EAAG,WAAY,EAAA,CAAA,EAAI,WAAa,CAAA,CAAA,CAAA,CAAA;AAAA,KAC3C;AAAA,IACA,CAAC,UAAU,WAAW,CAAA;AAAA,GACxB,CAAA;AACF,CAAA;;ACTA,MAAM,YAAY,UAAW,CAAA;AAAA,EAC3B,IAAM,EAAA;AAAA,IACJ,MAAQ,EAAA,gBAAA;AAAA,IACR,YAAc,EAAA,KAAA;AAAA,IACd,QAAU,EAAA,OAAA;AAAA,GACZ;AACF,CAAC,CAAA,CAAA;AAcM,MAAM,iBAAoB,GAAA,CAAC,EAAK,GAAA,KAAA,EAAoC,KAAA;AACzE,EAAM,MAAA,OAAA,GAAU,UAAU,KAAK,CAAA,CAAA;AAC/B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,EAAE,CAAA,CAAA;AACrC,EAAA,MAAM,eAAe,kBAAmB,EAAA,CAAA;AAExC,EAAA,MAAM,eAAe,MAAM;AACzB,IAAa,YAAA,CAAA,EAAE,OAAO,CAAA,CAAA;AAAA,GACxB,CAAA;AAEA,EAAA,MAAM,YAAe,GAAA,WAAA;AAAA,IACnB,CAAS,KAAA,KAAA;AACP,MAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AAAA,KAChB;AAAA,IACA,CAAC,QAAQ,CAAA;AAAA,GACX,CAAA;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,EAAE,IAAM,EAAA,OAAA,CAAQ,IAAK,EAAA;AAAA,MAC9B,KAAO,EAAA,KAAA;AAAA,MACP,QAAU,EAAA,YAAA;AAAA,MACV,QAAU,EAAA,YAAA;AAAA,MACT,GAAG,KAAA;AAAA,KAAA;AAAA,GACN,CAAA;AAEJ;;;;"}
package/dist/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- export { H as HomePageSearchBar, S as Router, b as SearchModal, a as SearchModalProvider, e as SearchPage, c as SearchType, d as SidebarSearch, f as SidebarSearchModal, s as plugin, s as searchPlugin, u as useSearchModal } from './esm/index-0387f230.esm.js';
1
+ export { H as HomePageSearchBar, S as Router, b as SearchModal, a as SearchModalProvider, e as SearchPage, c as SearchType, d as SidebarSearch, f as SidebarSearchModal, s as plugin, s as searchPlugin, u as useSearchModal } from './esm/index-66078e0a.esm.js';
2
2
  import 'react';
3
3
  import '@material-ui/core';
4
4
  import '@material-ui/icons/Launch';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@backstage/plugin-search",
3
3
  "description": "The Backstage plugin that provides your backstage app with search",
4
- "version": "1.0.4",
4
+ "version": "1.0.5-next.1",
5
5
  "main": "dist/index.esm.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "license": "Apache-2.0",
@@ -32,17 +32,17 @@
32
32
  "clean": "backstage-cli package clean"
33
33
  },
34
34
  "dependencies": {
35
- "@backstage/catalog-model": "^1.1.3",
36
- "@backstage/config": "^1.0.4",
37
- "@backstage/core-components": "^0.12.0",
38
- "@backstage/core-plugin-api": "^1.1.0",
39
- "@backstage/errors": "^1.1.3",
40
- "@backstage/plugin-catalog-react": "^1.2.1",
41
- "@backstage/plugin-search-common": "^1.1.1",
42
- "@backstage/plugin-search-react": "^1.2.1",
35
+ "@backstage/catalog-model": "^1.1.4-next.1",
36
+ "@backstage/config": "^1.0.5-next.1",
37
+ "@backstage/core-components": "^0.12.1-next.1",
38
+ "@backstage/core-plugin-api": "^1.1.1-next.1",
39
+ "@backstage/errors": "^1.1.4-next.1",
40
+ "@backstage/plugin-catalog-react": "^1.2.2-next.1",
41
+ "@backstage/plugin-search-common": "^1.1.2-next.1",
42
+ "@backstage/plugin-search-react": "^1.2.2-next.1",
43
43
  "@backstage/theme": "^0.2.16",
44
- "@backstage/types": "^1.0.1",
45
- "@backstage/version-bridge": "^1.0.2",
44
+ "@backstage/types": "^1.0.2-next.1",
45
+ "@backstage/version-bridge": "^1.0.3-next.0",
46
46
  "@material-ui/core": "^4.12.2",
47
47
  "@material-ui/icons": "^4.9.1",
48
48
  "@material-ui/lab": "4.0.0-alpha.57",
@@ -56,17 +56,17 @@
56
56
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
57
57
  },
58
58
  "devDependencies": {
59
- "@backstage/cli": "^0.21.0",
60
- "@backstage/core-app-api": "^1.2.0",
61
- "@backstage/dev-utils": "^1.0.8",
62
- "@backstage/test-utils": "^1.2.2",
59
+ "@backstage/cli": "^0.21.2-next.1",
60
+ "@backstage/core-app-api": "^1.2.1-next.1",
61
+ "@backstage/dev-utils": "^1.0.9-next.1",
62
+ "@backstage/test-utils": "^1.2.3-next.1",
63
63
  "@testing-library/jest-dom": "^5.10.1",
64
64
  "@testing-library/react": "^12.1.3",
65
65
  "@testing-library/react-hooks": "^8.0.0",
66
66
  "@testing-library/user-event": "^14.0.0",
67
67
  "@types/node": "^16.11.26",
68
68
  "cross-fetch": "^3.1.5",
69
- "msw": "^0.48.0"
69
+ "msw": "^0.49.0"
70
70
  },
71
71
  "files": [
72
72
  "dist"
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-559e7a70.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}