@backstage/plugin-catalog-react 1.12.2 → 1.12.3-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 +41 -0
- package/alpha/package.json +1 -1
- package/dist/alpha.d.ts +8 -4
- package/dist/alpha.esm.js +8 -10
- package/dist/alpha.esm.js.map +1 -1
- package/dist/components/EntityDisplayName/EntityDisplayName.esm.js +3 -1
- package/dist/components/EntityDisplayName/EntityDisplayName.esm.js.map +1 -1
- package/dist/components/UserListPicker/UserListPicker.esm.js +2 -2
- package/dist/components/UserListPicker/UserListPicker.esm.js.map +1 -1
- package/package.json +12 -12
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# @backstage/plugin-catalog-react
|
|
2
2
|
|
|
3
|
+
## 1.12.3-next.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 7ca331c: Correct `EntityDisplayName`'s icon alignment with the text.
|
|
8
|
+
- 6349099: Added config input type to the extensions
|
|
9
|
+
- Updated dependencies
|
|
10
|
+
- @backstage/plugin-permission-common@0.8.1-next.0
|
|
11
|
+
- @backstage/frontend-plugin-api@0.6.8-next.1
|
|
12
|
+
- @backstage/plugin-catalog-common@1.0.26-next.0
|
|
13
|
+
- @backstage/plugin-permission-react@0.4.25-next.0
|
|
14
|
+
- @backstage/catalog-client@1.6.5
|
|
15
|
+
- @backstage/catalog-model@1.5.0
|
|
16
|
+
- @backstage/core-components@0.14.10-next.0
|
|
17
|
+
- @backstage/core-plugin-api@1.9.3
|
|
18
|
+
- @backstage/errors@1.2.4
|
|
19
|
+
- @backstage/integration-react@1.1.30-next.0
|
|
20
|
+
- @backstage/types@1.1.1
|
|
21
|
+
- @backstage/version-bridge@1.0.8
|
|
22
|
+
|
|
23
|
+
## 1.12.3-next.0
|
|
24
|
+
|
|
25
|
+
### Patch Changes
|
|
26
|
+
|
|
27
|
+
- 31bfc44: Updated alpha definitions of extension data references.
|
|
28
|
+
- 9b89b82: Internal refactor to remove unnecessary `routable` prop in the implementation of the `createEntityContentExtension` alpha export.
|
|
29
|
+
- bebd569: Fix extra divider displayed on user list picker component
|
|
30
|
+
- Updated dependencies
|
|
31
|
+
- @backstage/frontend-plugin-api@0.6.8-next.0
|
|
32
|
+
- @backstage/core-components@0.14.10-next.0
|
|
33
|
+
- @backstage/catalog-client@1.6.5
|
|
34
|
+
- @backstage/catalog-model@1.5.0
|
|
35
|
+
- @backstage/core-plugin-api@1.9.3
|
|
36
|
+
- @backstage/errors@1.2.4
|
|
37
|
+
- @backstage/integration-react@1.1.30-next.0
|
|
38
|
+
- @backstage/types@1.1.1
|
|
39
|
+
- @backstage/version-bridge@1.0.8
|
|
40
|
+
- @backstage/plugin-catalog-common@1.0.25
|
|
41
|
+
- @backstage/plugin-permission-common@0.8.0
|
|
42
|
+
- @backstage/plugin-permission-react@0.4.24
|
|
43
|
+
|
|
3
44
|
## 1.12.2
|
|
4
45
|
|
|
5
46
|
### Patch Changes
|
package/alpha/package.json
CHANGED
package/dist/alpha.d.ts
CHANGED
|
@@ -98,9 +98,9 @@ declare const catalogReactTranslationRef: _backstage_core_plugin_api_alpha.Trans
|
|
|
98
98
|
|
|
99
99
|
/** @alpha */
|
|
100
100
|
declare const catalogExtensionData: {
|
|
101
|
-
entityContentTitle: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, {}>;
|
|
102
|
-
entityFilterFunction: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(entity: Entity) => boolean, {}>;
|
|
103
|
-
entityFilterExpression: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, {}>;
|
|
101
|
+
entityContentTitle: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-content-title", {}>;
|
|
102
|
+
entityFilterFunction: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<(entity: Entity) => boolean, "catalog.entity-filter-function", {}>;
|
|
103
|
+
entityFilterExpression: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "catalog.entity-filter-expression", {}>;
|
|
104
104
|
};
|
|
105
105
|
/** @alpha */
|
|
106
106
|
declare function createEntityCardExtension<TConfig extends {
|
|
@@ -120,7 +120,7 @@ declare function createEntityCardExtension<TConfig extends {
|
|
|
120
120
|
config: TConfig;
|
|
121
121
|
inputs: Expand<ResolvedExtensionInputs<TInputs>>;
|
|
122
122
|
}) => Promise<JSX.Element>;
|
|
123
|
-
}): _backstage_frontend_plugin_api.ExtensionDefinition<TConfig>;
|
|
123
|
+
}): _backstage_frontend_plugin_api.ExtensionDefinition<TConfig & {}, TConfig & {}>;
|
|
124
124
|
/** @alpha */
|
|
125
125
|
declare function createEntityContentExtension<TInputs extends AnyExtensionInputMap>(options: {
|
|
126
126
|
namespace?: string;
|
|
@@ -142,6 +142,10 @@ declare function createEntityContentExtension<TInputs extends AnyExtensionInputM
|
|
|
142
142
|
title: string;
|
|
143
143
|
path: string;
|
|
144
144
|
filter?: string | undefined;
|
|
145
|
+
}, {
|
|
146
|
+
filter?: string | undefined;
|
|
147
|
+
title?: string | undefined;
|
|
148
|
+
path?: string | undefined;
|
|
145
149
|
}>;
|
|
146
150
|
|
|
147
151
|
export { catalogExtensionData, catalogReactTranslationRef, createEntityCardExtension, createEntityContentExtension, isOwnerOf, useEntityPermission };
|
package/dist/alpha.esm.js
CHANGED
|
@@ -6,15 +6,13 @@ export { isOwnerOf } from './utils/isOwnerOf.esm.js';
|
|
|
6
6
|
export { catalogReactTranslationRef } from './translation.esm.js';
|
|
7
7
|
|
|
8
8
|
const catalogExtensionData = {
|
|
9
|
-
entityContentTitle: createExtensionDataRef(
|
|
10
|
-
"catalog.entity-content-title"
|
|
11
|
-
),
|
|
12
|
-
entityFilterFunction: createExtensionDataRef(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"catalog.entity-filter-expression"
|
|
17
|
-
)
|
|
9
|
+
entityContentTitle: createExtensionDataRef().with({
|
|
10
|
+
id: "catalog.entity-content-title"
|
|
11
|
+
}),
|
|
12
|
+
entityFilterFunction: createExtensionDataRef().with({ id: "catalog.entity-filter-function" }),
|
|
13
|
+
entityFilterExpression: createExtensionDataRef().with({
|
|
14
|
+
id: "catalog.entity-filter-expression"
|
|
15
|
+
})
|
|
18
16
|
};
|
|
19
17
|
function createEntityCardExtension(options) {
|
|
20
18
|
const configSchema = "configSchema" in options ? options.configSchema : createSchemaFromZod(
|
|
@@ -83,7 +81,7 @@ function createEntityContentExtension(options) {
|
|
|
83
81
|
path: config.path,
|
|
84
82
|
title: config.title,
|
|
85
83
|
routeRef: options.routeRef,
|
|
86
|
-
element: /* @__PURE__ */ React.createElement(ExtensionBoundary, { node
|
|
84
|
+
element: /* @__PURE__ */ React.createElement(ExtensionBoundary, { node }, /* @__PURE__ */ React.createElement(ExtensionComponent, null)),
|
|
87
85
|
...mergeFilters({ config, options })
|
|
88
86
|
};
|
|
89
87
|
}
|
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 {\n AnyExtensionInputMap,\n ExtensionBoundary,\n PortableSchema,\n ResolvedExtensionInputs,\n RouteRef,\n coreExtensionData,\n createExtension,\n createExtensionDataRef,\n createSchemaFromZod,\n} from '@backstage/frontend-plugin-api';\nimport React, { lazy } from 'react';\nimport { Entity } from '@backstage/catalog-model';\n// eslint-disable-next-line @backstage/no-relative-monorepo-imports\nimport { Expand } from '../../../packages/frontend-plugin-api/src/types';\n\nexport { useEntityPermission } from './hooks/useEntityPermission';\nexport { isOwnerOf } from './utils';\nexport * from './translation';\n\n/** @alpha */\nexport const catalogExtensionData = {\n entityContentTitle: createExtensionDataRef<string>(\n 'catalog.entity-content-title',\n ),\n entityFilterFunction: createExtensionDataRef
|
|
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 {\n AnyExtensionInputMap,\n ExtensionBoundary,\n PortableSchema,\n ResolvedExtensionInputs,\n RouteRef,\n coreExtensionData,\n createExtension,\n createExtensionDataRef,\n createSchemaFromZod,\n} from '@backstage/frontend-plugin-api';\nimport React, { lazy } from 'react';\nimport { Entity } from '@backstage/catalog-model';\n// eslint-disable-next-line @backstage/no-relative-monorepo-imports\nimport { Expand } from '../../../packages/frontend-plugin-api/src/types';\n\nexport { useEntityPermission } from './hooks/useEntityPermission';\nexport { isOwnerOf } from './utils';\nexport * from './translation';\n\n/** @alpha */\nexport const catalogExtensionData = {\n entityContentTitle: createExtensionDataRef<string>().with({\n id: 'catalog.entity-content-title',\n }),\n entityFilterFunction: createExtensionDataRef<\n (entity: Entity) => boolean\n >().with({ id: 'catalog.entity-filter-function' }),\n entityFilterExpression: createExtensionDataRef<string>().with({\n id: 'catalog.entity-filter-expression',\n }),\n};\n\n// TODO: Figure out how to merge with provided config schema\n/** @alpha */\nexport function createEntityCardExtension<\n TConfig extends { filter?: string },\n TInputs extends AnyExtensionInputMap,\n>(options: {\n namespace?: string;\n name?: string;\n attachTo?: { id: string; input: string };\n disabled?: boolean;\n inputs?: TInputs;\n configSchema?: PortableSchema<TConfig>;\n filter?:\n | typeof catalogExtensionData.entityFilterFunction.T\n | typeof catalogExtensionData.entityFilterExpression.T;\n loader: (options: {\n config: TConfig;\n inputs: Expand<ResolvedExtensionInputs<TInputs>>;\n }) => Promise<JSX.Element>;\n}) {\n const configSchema =\n 'configSchema' in options\n ? options.configSchema\n : (createSchemaFromZod(z =>\n z.object({\n filter: z.string().optional(),\n }),\n ) as PortableSchema<TConfig>);\n return createExtension({\n kind: 'entity-card',\n namespace: options.namespace,\n name: options.name,\n attachTo: options.attachTo ?? {\n id: 'entity-content:catalog/overview',\n input: 'cards',\n },\n disabled: options.disabled ?? true,\n output: {\n element: coreExtensionData.reactElement,\n filterFunction: catalogExtensionData.entityFilterFunction.optional(),\n filterExpression: catalogExtensionData.entityFilterExpression.optional(),\n },\n inputs: options.inputs,\n configSchema,\n factory({ config, inputs, node }) {\n const ExtensionComponent = lazy(() =>\n options\n .loader({ inputs, config })\n .then(element => ({ default: () => element })),\n );\n\n return {\n element: (\n <ExtensionBoundary node={node}>\n <ExtensionComponent />\n </ExtensionBoundary>\n ),\n ...mergeFilters({ config, options }),\n };\n },\n });\n}\n\n/** @alpha */\nexport function createEntityContentExtension<\n TInputs extends AnyExtensionInputMap,\n>(options: {\n namespace?: string;\n name?: string;\n attachTo?: { id: string; input: string };\n disabled?: boolean;\n inputs?: TInputs;\n routeRef?: RouteRef;\n defaultPath: string;\n defaultTitle: string;\n filter?:\n | typeof catalogExtensionData.entityFilterFunction.T\n | typeof catalogExtensionData.entityFilterExpression.T;\n loader: (options: {\n inputs: Expand<ResolvedExtensionInputs<TInputs>>;\n }) => Promise<JSX.Element>;\n}) {\n return createExtension({\n kind: 'entity-content',\n namespace: options.namespace,\n name: options.name,\n attachTo: options.attachTo ?? {\n id: 'page:catalog/entity',\n input: 'contents',\n },\n disabled: options.disabled ?? true,\n output: {\n element: coreExtensionData.reactElement,\n path: coreExtensionData.routePath,\n routeRef: coreExtensionData.routeRef.optional(),\n title: catalogExtensionData.entityContentTitle,\n filterFunction: catalogExtensionData.entityFilterFunction.optional(),\n filterExpression: catalogExtensionData.entityFilterExpression.optional(),\n },\n inputs: options.inputs,\n configSchema: createSchemaFromZod(z =>\n z.object({\n path: z.string().default(options.defaultPath),\n title: z.string().default(options.defaultTitle),\n filter: z.string().optional(),\n }),\n ),\n factory({ config, inputs, node }) {\n const ExtensionComponent = lazy(() =>\n options\n .loader({ inputs })\n .then(element => ({ default: () => element })),\n );\n\n return {\n path: config.path,\n title: config.title,\n routeRef: options.routeRef,\n element: (\n <ExtensionBoundary node={node}>\n <ExtensionComponent />\n </ExtensionBoundary>\n ),\n ...mergeFilters({ config, options }),\n };\n },\n });\n}\n\n/**\n * Decides what filter outputs to produce, given some options and config\n */\nfunction mergeFilters(inputs: {\n options: {\n filter?:\n | typeof catalogExtensionData.entityFilterFunction.T\n | typeof catalogExtensionData.entityFilterExpression.T;\n };\n config: {\n filter?: string;\n };\n}): {\n filterFunction?: typeof catalogExtensionData.entityFilterFunction.T;\n filterExpression?: typeof catalogExtensionData.entityFilterExpression.T;\n} {\n const { options, config } = inputs;\n if (config.filter) {\n return { filterExpression: config.filter };\n } else if (typeof options.filter === 'string') {\n return { filterExpression: options.filter };\n } else if (typeof options.filter === 'function') {\n return { filterFunction: options.filter };\n }\n return {};\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityDisplayName.esm.js","sources":["../../../src/components/EntityDisplayName/EntityDisplayName.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 { CompoundEntityRef, Entity } from '@backstage/catalog-model';\nimport Box from '@material-ui/core/Box';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { Theme, makeStyles } from '@material-ui/core/styles';\nimport React from 'react';\nimport { useEntityPresentation } from '../../apis';\n\n/**\n * The available style class keys for {@link EntityDisplayName}, under the name\n * \"CatalogReactEntityDisplayName\".\n *\n * @public\n */\nexport type CatalogReactEntityDisplayNameClassKey = 'root' | 'icon';\n\nconst useStyles = makeStyles(\n (theme: Theme) => ({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n },\n icon: {\n marginRight: theme.spacing(0.5),\n color: theme.palette.text.secondary,\n
|
|
1
|
+
{"version":3,"file":"EntityDisplayName.esm.js","sources":["../../../src/components/EntityDisplayName/EntityDisplayName.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 { CompoundEntityRef, Entity } from '@backstage/catalog-model';\nimport Box from '@material-ui/core/Box';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport { Theme, makeStyles } from '@material-ui/core/styles';\nimport React from 'react';\nimport { useEntityPresentation } from '../../apis';\n\n/**\n * The available style class keys for {@link EntityDisplayName}, under the name\n * \"CatalogReactEntityDisplayName\".\n *\n * @public\n */\nexport type CatalogReactEntityDisplayNameClassKey = 'root' | 'icon';\n\nconst useStyles = makeStyles(\n (theme: Theme) => ({\n root: {\n display: 'inline-flex',\n alignItems: 'center',\n },\n icon: {\n marginRight: theme.spacing(0.5),\n color: theme.palette.text.secondary,\n '& svg': {\n verticalAlign: 'middle',\n },\n },\n }),\n { name: 'CatalogReactEntityDisplayName' },\n);\n\n/**\n * Props for {@link EntityDisplayName}.\n *\n * @public\n */\nexport type EntityDisplayNameProps = {\n entityRef: Entity | CompoundEntityRef | string;\n hideIcon?: boolean;\n disableTooltip?: boolean;\n defaultKind?: string;\n defaultNamespace?: string;\n};\n\n/**\n * Shows a nice representation of a reference to an entity.\n *\n * @public\n */\nexport const EntityDisplayName = (\n props: EntityDisplayNameProps,\n): JSX.Element => {\n const { entityRef, hideIcon, disableTooltip, defaultKind, defaultNamespace } =\n props;\n\n const classes = useStyles();\n const { primaryTitle, secondaryTitle, Icon } = useEntityPresentation(\n entityRef,\n { defaultKind, defaultNamespace },\n );\n\n // The innermost \"body\" content\n let content = <>{primaryTitle}</>;\n\n // Optionally an icon, and wrapper around them both\n content = (\n <Box component=\"span\" className={classes.root}>\n {Icon && !hideIcon ? (\n <Box component=\"span\" className={classes.icon}>\n <Icon fontSize=\"inherit\" />\n </Box>\n ) : null}\n {content}\n </Box>\n );\n\n // Optionally, a tooltip as the outermost layer\n if (secondaryTitle && !disableTooltip) {\n content = (\n <Tooltip enterDelay={1500} title={secondaryTitle}>\n {content}\n </Tooltip>\n );\n }\n\n return content;\n};\n"],"names":[],"mappings":";;;;;;;;;;;AA+BA,MAAM,SAAY,GAAA,UAAA;AAAA,EAChB,CAAC,KAAkB,MAAA;AAAA,IACjB,IAAM,EAAA;AAAA,MACJ,OAAS,EAAA,aAAA;AAAA,MACT,UAAY,EAAA,QAAA;AAAA,KACd;AAAA,IACA,IAAM,EAAA;AAAA,MACJ,WAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,MAC9B,KAAA,EAAO,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,SAAA;AAAA,MAC1B,OAAS,EAAA;AAAA,QACP,aAAe,EAAA,QAAA;AAAA,OACjB;AAAA,KACF;AAAA,GACF,CAAA;AAAA,EACA,EAAE,MAAM,+BAAgC,EAAA;AAC1C,CAAA,CAAA;AAoBa,MAAA,iBAAA,GAAoB,CAC/B,KACgB,KAAA;AAChB,EAAA,MAAM,EAAE,SAAW,EAAA,QAAA,EAAU,cAAgB,EAAA,WAAA,EAAa,kBACxD,GAAA,KAAA,CAAA;AAEF,EAAA,MAAM,UAAU,SAAU,EAAA,CAAA;AAC1B,EAAA,MAAM,EAAE,YAAA,EAAc,cAAgB,EAAA,IAAA,EAAS,GAAA,qBAAA;AAAA,IAC7C,SAAA;AAAA,IACA,EAAE,aAAa,gBAAiB,EAAA;AAAA,GAClC,CAAA;AAGA,EAAI,IAAA,OAAA,6DAAa,YAAa,CAAA,CAAA;AAG9B,EACE,OAAA,mBAAA,KAAA,CAAA,aAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAU,MAAO,EAAA,SAAA,EAAW,QAAQ,IACtC,EAAA,EAAA,IAAA,IAAQ,CAAC,QAAA,mBACP,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,WAAU,MAAO,EAAA,SAAA,EAAW,OAAQ,CAAA,IAAA,EAAA,kBACtC,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,UAAS,SAAU,EAAA,CAC3B,CACE,GAAA,IAAA,EACH,OACH,CAAA,CAAA;AAIF,EAAI,IAAA,cAAA,IAAkB,CAAC,cAAgB,EAAA;AACrC,IAAA,OAAA,uCACG,OAAQ,EAAA,EAAA,UAAA,EAAY,IAAM,EAAA,KAAA,EAAO,kBAC/B,OACH,CAAA,CAAA;AAAA,GAEJ;AAEA,EAAO,OAAA,OAAA,CAAA;AACT;;;;"}
|
|
@@ -174,12 +174,12 @@ const UserListPicker = (props) => {
|
|
|
174
174
|
className: classes.title
|
|
175
175
|
},
|
|
176
176
|
group.name
|
|
177
|
-
), /* @__PURE__ */ React.createElement(Card, { className: classes.groupWrapper }, /* @__PURE__ */ React.createElement(List, { disablePadding: true, dense: true, role: "menu", "aria-label": group.name }, group.items.map((item) => /* @__PURE__ */ React.createElement(
|
|
177
|
+
), /* @__PURE__ */ React.createElement(Card, { className: classes.groupWrapper }, /* @__PURE__ */ React.createElement(List, { disablePadding: true, dense: true, role: "menu", "aria-label": group.name }, group.items.map((item, index) => /* @__PURE__ */ React.createElement(
|
|
178
178
|
MenuItem,
|
|
179
179
|
{
|
|
180
180
|
role: "none presentation",
|
|
181
181
|
key: item.id,
|
|
182
|
-
divider:
|
|
182
|
+
divider: index !== group.items.length - 1,
|
|
183
183
|
onClick: () => setSelectedUserFilter(item.id),
|
|
184
184
|
selected: item.id === filters.user?.value,
|
|
185
185
|
className: classes.menuItem,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserListPicker.esm.js","sources":["../../../src/components/UserListPicker/UserListPicker.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 */\n\nimport {\n configApiRef,\n IconComponent,\n useApi,\n} from '@backstage/core-plugin-api';\nimport Card from '@material-ui/core/Card';\nimport List from '@material-ui/core/List';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport StarIcon from '@material-ui/icons/Star';\nimport React, { Fragment, useEffect, useMemo, useState } from 'react';\nimport { EntityUserFilter } from '../../filters';\nimport { useEntityList } from '../../hooks';\nimport { UserListFilterKind } from '../../types';\nimport { useOwnedEntitiesCount } from './useOwnedEntitiesCount';\nimport { useAllEntitiesCount } from './useAllEntitiesCount';\nimport { useStarredEntitiesCount } from './useStarredEntitiesCount';\nimport {\n TranslationFunction,\n useTranslationRef,\n} from '@backstage/core-plugin-api/alpha';\nimport { catalogReactTranslationRef } from '../../translation';\n\n/** @public */\nexport type CatalogReactUserListPickerClassKey =\n | 'root'\n | 'title'\n | 'listIcon'\n | 'menuItem'\n | 'groupWrapper';\n\nconst useStyles = makeStyles(\n theme => ({\n root: {\n backgroundColor: 'rgba(0, 0, 0, .11)',\n boxShadow: 'none',\n margin: theme.spacing(1, 0, 1, 0),\n },\n title: {\n margin: theme.spacing(1, 0, 0, 1),\n textTransform: 'uppercase',\n fontSize: 12,\n fontWeight: 'bold',\n },\n listIcon: {\n minWidth: 30,\n color: theme.palette.text.primary,\n },\n menuItem: {\n minHeight: theme.spacing(6),\n },\n groupWrapper: {\n margin: theme.spacing(1, 1, 2, 1),\n },\n }),\n {\n name: 'CatalogReactUserListPicker',\n },\n);\n\nexport type ButtonGroup = {\n name: string;\n items: {\n id: 'owned' | 'starred' | 'all';\n label: string;\n icon?: IconComponent;\n }[];\n};\n\nfunction getFilterGroups(\n orgName: string,\n t: TranslationFunction<typeof catalogReactTranslationRef.T>,\n): ButtonGroup[] {\n return [\n {\n name: t('userListPicker.personalFilter.title'),\n items: [\n {\n id: 'owned',\n label: t('userListPicker.personalFilter.ownedLabel'),\n icon: SettingsIcon,\n },\n {\n id: 'starred',\n label: t('userListPicker.personalFilter.starredLabel'),\n icon: StarIcon,\n },\n ],\n },\n {\n name: orgName,\n items: [\n {\n id: 'all',\n label: t('userListPicker.orgFilterAllLabel'),\n },\n ],\n },\n ];\n}\n\n/** @public */\nexport type UserListPickerProps = {\n initialFilter?: UserListFilterKind;\n availableFilters?: UserListFilterKind[];\n};\n\n/** @public */\nexport const UserListPicker = (props: UserListPickerProps) => {\n const { initialFilter, availableFilters } = props;\n const classes = useStyles();\n const configApi = useApi(configApiRef);\n const { t } = useTranslationRef(catalogReactTranslationRef);\n const orgName =\n configApi.getOptionalString('organization.name') ??\n t('userListPicker.defaultOrgName');\n const {\n filters,\n updateFilters,\n queryParameters: { kind: kindParameter, user: userParameter },\n } = useEntityList();\n\n // Remove group items that aren't in availableFilters and exclude\n // any now-empty groups.\n const userAndGroupFilterIds = ['starred', 'all'];\n const filterGroups = getFilterGroups(orgName, t)\n .map(filterGroup => ({\n ...filterGroup,\n items: filterGroup.items.filter(({ id }) =>\n // TODO: avoid hardcoding kinds here\n ['group', 'user'].some(kind => kind === kindParameter)\n ? userAndGroupFilterIds.includes(id)\n : !availableFilters || availableFilters.includes(id),\n ),\n }))\n .filter(({ items }) => !!items.length);\n\n const {\n count: ownedEntitiesCount,\n loading: loadingOwnedEntities,\n filter: ownedEntitiesFilter,\n } = useOwnedEntitiesCount();\n const { count: allCount } = useAllEntitiesCount();\n const {\n count: starredEntitiesCount,\n filter: starredEntitiesFilter,\n loading: loadingStarredEntities,\n } = useStarredEntitiesCount();\n\n const queryParamUserFilter = useMemo(\n () => [userParameter].flat()[0],\n [userParameter],\n );\n\n const [selectedUserFilter, setSelectedUserFilter] = useState(\n (queryParamUserFilter as UserListFilterKind) ?? initialFilter,\n );\n\n const filterCounts = useMemo(() => {\n return {\n all: allCount,\n starred: starredEntitiesCount,\n owned: ownedEntitiesCount,\n };\n }, [starredEntitiesCount, ownedEntitiesCount, allCount]);\n\n // Set selected user filter on query parameter updates; this happens at initial page load and from\n // external updates to the page location.\n useEffect(() => {\n if (queryParamUserFilter) {\n setSelectedUserFilter(queryParamUserFilter as UserListFilterKind);\n }\n }, [queryParamUserFilter]);\n\n const loading = loadingOwnedEntities || loadingStarredEntities;\n\n useEffect(() => {\n if (\n !loading &&\n !!selectedUserFilter &&\n selectedUserFilter !== 'all' &&\n filterCounts[selectedUserFilter] === 0\n ) {\n setSelectedUserFilter('all');\n }\n }, [loading, filterCounts, selectedUserFilter, setSelectedUserFilter]);\n\n useEffect(() => {\n if (!selectedUserFilter) {\n return;\n }\n if (loading) {\n return;\n }\n\n const getFilter = () => {\n if (selectedUserFilter === 'owned') {\n return ownedEntitiesFilter;\n }\n if (selectedUserFilter === 'starred') {\n return starredEntitiesFilter;\n }\n return EntityUserFilter.all();\n };\n\n updateFilters({ user: getFilter() });\n }, [\n selectedUserFilter,\n starredEntitiesFilter,\n ownedEntitiesFilter,\n updateFilters,\n\n loading,\n ]);\n\n return (\n <Card className={classes.root}>\n {filterGroups.map(group => (\n <Fragment key={group.name}>\n <Typography\n variant=\"subtitle2\"\n component=\"span\"\n className={classes.title}\n >\n {group.name}\n </Typography>\n <Card className={classes.groupWrapper}>\n <List disablePadding dense role=\"menu\" aria-label={group.name}>\n {group.items.map(item => (\n <MenuItem\n role=\"none presentation\"\n key={item.id}\n divider\n onClick={() => setSelectedUserFilter(item.id)}\n selected={item.id === filters.user?.value}\n className={classes.menuItem}\n disabled={filterCounts[item.id] === 0}\n data-testid={`user-picker-${item.id}`}\n tabIndex={0}\n ContainerProps={{ role: 'menuitem' }}\n >\n {item.icon && (\n <ListItemIcon className={classes.listIcon}>\n <item.icon fontSize=\"small\" />\n </ListItemIcon>\n )}\n <ListItemText>\n <Typography variant=\"body1\">{item.label} </Typography>\n </ListItemText>\n <ListItemSecondaryAction>\n {filterCounts[item.id] ?? '-'}\n </ListItemSecondaryAction>\n </MenuItem>\n ))}\n </List>\n </Card>\n </Fragment>\n ))}\n </Card>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UserListPicker.esm.js","sources":["../../../src/components/UserListPicker/UserListPicker.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 */\n\nimport {\n configApiRef,\n IconComponent,\n useApi,\n} from '@backstage/core-plugin-api';\nimport Card from '@material-ui/core/Card';\nimport List from '@material-ui/core/List';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport StarIcon from '@material-ui/icons/Star';\nimport React, { Fragment, useEffect, useMemo, useState } from 'react';\nimport { EntityUserFilter } from '../../filters';\nimport { useEntityList } from '../../hooks';\nimport { UserListFilterKind } from '../../types';\nimport { useOwnedEntitiesCount } from './useOwnedEntitiesCount';\nimport { useAllEntitiesCount } from './useAllEntitiesCount';\nimport { useStarredEntitiesCount } from './useStarredEntitiesCount';\nimport {\n TranslationFunction,\n useTranslationRef,\n} from '@backstage/core-plugin-api/alpha';\nimport { catalogReactTranslationRef } from '../../translation';\n\n/** @public */\nexport type CatalogReactUserListPickerClassKey =\n | 'root'\n | 'title'\n | 'listIcon'\n | 'menuItem'\n | 'groupWrapper';\n\nconst useStyles = makeStyles(\n theme => ({\n root: {\n backgroundColor: 'rgba(0, 0, 0, .11)',\n boxShadow: 'none',\n margin: theme.spacing(1, 0, 1, 0),\n },\n title: {\n margin: theme.spacing(1, 0, 0, 1),\n textTransform: 'uppercase',\n fontSize: 12,\n fontWeight: 'bold',\n },\n listIcon: {\n minWidth: 30,\n color: theme.palette.text.primary,\n },\n menuItem: {\n minHeight: theme.spacing(6),\n },\n groupWrapper: {\n margin: theme.spacing(1, 1, 2, 1),\n },\n }),\n {\n name: 'CatalogReactUserListPicker',\n },\n);\n\nexport type ButtonGroup = {\n name: string;\n items: {\n id: 'owned' | 'starred' | 'all';\n label: string;\n icon?: IconComponent;\n }[];\n};\n\nfunction getFilterGroups(\n orgName: string,\n t: TranslationFunction<typeof catalogReactTranslationRef.T>,\n): ButtonGroup[] {\n return [\n {\n name: t('userListPicker.personalFilter.title'),\n items: [\n {\n id: 'owned',\n label: t('userListPicker.personalFilter.ownedLabel'),\n icon: SettingsIcon,\n },\n {\n id: 'starred',\n label: t('userListPicker.personalFilter.starredLabel'),\n icon: StarIcon,\n },\n ],\n },\n {\n name: orgName,\n items: [\n {\n id: 'all',\n label: t('userListPicker.orgFilterAllLabel'),\n },\n ],\n },\n ];\n}\n\n/** @public */\nexport type UserListPickerProps = {\n initialFilter?: UserListFilterKind;\n availableFilters?: UserListFilterKind[];\n};\n\n/** @public */\nexport const UserListPicker = (props: UserListPickerProps) => {\n const { initialFilter, availableFilters } = props;\n const classes = useStyles();\n const configApi = useApi(configApiRef);\n const { t } = useTranslationRef(catalogReactTranslationRef);\n const orgName =\n configApi.getOptionalString('organization.name') ??\n t('userListPicker.defaultOrgName');\n const {\n filters,\n updateFilters,\n queryParameters: { kind: kindParameter, user: userParameter },\n } = useEntityList();\n\n // Remove group items that aren't in availableFilters and exclude\n // any now-empty groups.\n const userAndGroupFilterIds = ['starred', 'all'];\n const filterGroups = getFilterGroups(orgName, t)\n .map(filterGroup => ({\n ...filterGroup,\n items: filterGroup.items.filter(({ id }) =>\n // TODO: avoid hardcoding kinds here\n ['group', 'user'].some(kind => kind === kindParameter)\n ? userAndGroupFilterIds.includes(id)\n : !availableFilters || availableFilters.includes(id),\n ),\n }))\n .filter(({ items }) => !!items.length);\n\n const {\n count: ownedEntitiesCount,\n loading: loadingOwnedEntities,\n filter: ownedEntitiesFilter,\n } = useOwnedEntitiesCount();\n const { count: allCount } = useAllEntitiesCount();\n const {\n count: starredEntitiesCount,\n filter: starredEntitiesFilter,\n loading: loadingStarredEntities,\n } = useStarredEntitiesCount();\n\n const queryParamUserFilter = useMemo(\n () => [userParameter].flat()[0],\n [userParameter],\n );\n\n const [selectedUserFilter, setSelectedUserFilter] = useState(\n (queryParamUserFilter as UserListFilterKind) ?? initialFilter,\n );\n\n const filterCounts = useMemo(() => {\n return {\n all: allCount,\n starred: starredEntitiesCount,\n owned: ownedEntitiesCount,\n };\n }, [starredEntitiesCount, ownedEntitiesCount, allCount]);\n\n // Set selected user filter on query parameter updates; this happens at initial page load and from\n // external updates to the page location.\n useEffect(() => {\n if (queryParamUserFilter) {\n setSelectedUserFilter(queryParamUserFilter as UserListFilterKind);\n }\n }, [queryParamUserFilter]);\n\n const loading = loadingOwnedEntities || loadingStarredEntities;\n\n useEffect(() => {\n if (\n !loading &&\n !!selectedUserFilter &&\n selectedUserFilter !== 'all' &&\n filterCounts[selectedUserFilter] === 0\n ) {\n setSelectedUserFilter('all');\n }\n }, [loading, filterCounts, selectedUserFilter, setSelectedUserFilter]);\n\n useEffect(() => {\n if (!selectedUserFilter) {\n return;\n }\n if (loading) {\n return;\n }\n\n const getFilter = () => {\n if (selectedUserFilter === 'owned') {\n return ownedEntitiesFilter;\n }\n if (selectedUserFilter === 'starred') {\n return starredEntitiesFilter;\n }\n return EntityUserFilter.all();\n };\n\n updateFilters({ user: getFilter() });\n }, [\n selectedUserFilter,\n starredEntitiesFilter,\n ownedEntitiesFilter,\n updateFilters,\n\n loading,\n ]);\n\n return (\n <Card className={classes.root}>\n {filterGroups.map(group => (\n <Fragment key={group.name}>\n <Typography\n variant=\"subtitle2\"\n component=\"span\"\n className={classes.title}\n >\n {group.name}\n </Typography>\n <Card className={classes.groupWrapper}>\n <List disablePadding dense role=\"menu\" aria-label={group.name}>\n {group.items.map((item, index) => (\n <MenuItem\n role=\"none presentation\"\n key={item.id}\n divider={index !== group.items.length - 1}\n onClick={() => setSelectedUserFilter(item.id)}\n selected={item.id === filters.user?.value}\n className={classes.menuItem}\n disabled={filterCounts[item.id] === 0}\n data-testid={`user-picker-${item.id}`}\n tabIndex={0}\n ContainerProps={{ role: 'menuitem' }}\n >\n {item.icon && (\n <ListItemIcon className={classes.listIcon}>\n <item.icon fontSize=\"small\" />\n </ListItemIcon>\n )}\n <ListItemText>\n <Typography variant=\"body1\">{item.label} </Typography>\n </ListItemText>\n <ListItemSecondaryAction>\n {filterCounts[item.id] ?? '-'}\n </ListItemSecondaryAction>\n </MenuItem>\n ))}\n </List>\n </Card>\n </Fragment>\n ))}\n </Card>\n );\n};\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/plugin-catalog-react",
|
|
3
|
-
"version": "1.12.
|
|
3
|
+
"version": "1.12.3-next.1",
|
|
4
4
|
"description": "A frontend library that helps other Backstage plugins interact with the catalog",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "web-library",
|
|
@@ -58,14 +58,14 @@
|
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@backstage/catalog-client": "^1.6.5",
|
|
60
60
|
"@backstage/catalog-model": "^1.5.0",
|
|
61
|
-
"@backstage/core-components": "^0.14.
|
|
61
|
+
"@backstage/core-components": "^0.14.10-next.0",
|
|
62
62
|
"@backstage/core-plugin-api": "^1.9.3",
|
|
63
63
|
"@backstage/errors": "^1.2.4",
|
|
64
|
-
"@backstage/frontend-plugin-api": "^0.6.
|
|
65
|
-
"@backstage/integration-react": "^1.1.
|
|
66
|
-
"@backstage/plugin-catalog-common": "^1.0.
|
|
67
|
-
"@backstage/plugin-permission-common": "^0.8.0",
|
|
68
|
-
"@backstage/plugin-permission-react": "^0.4.
|
|
64
|
+
"@backstage/frontend-plugin-api": "^0.6.8-next.1",
|
|
65
|
+
"@backstage/integration-react": "^1.1.30-next.0",
|
|
66
|
+
"@backstage/plugin-catalog-common": "^1.0.26-next.0",
|
|
67
|
+
"@backstage/plugin-permission-common": "^0.8.1-next.0",
|
|
68
|
+
"@backstage/plugin-permission-react": "^0.4.25-next.0",
|
|
69
69
|
"@backstage/types": "^1.1.1",
|
|
70
70
|
"@backstage/version-bridge": "^1.0.8",
|
|
71
71
|
"@material-ui/core": "^4.12.2",
|
|
@@ -82,11 +82,11 @@
|
|
|
82
82
|
"zen-observable": "^0.10.0"
|
|
83
83
|
},
|
|
84
84
|
"devDependencies": {
|
|
85
|
-
"@backstage/cli": "^0.
|
|
86
|
-
"@backstage/core-app-api": "^1.14.0",
|
|
87
|
-
"@backstage/plugin-catalog-common": "^1.0.
|
|
88
|
-
"@backstage/plugin-scaffolder-common": "^1.5.
|
|
89
|
-
"@backstage/test-utils": "^1.5.
|
|
85
|
+
"@backstage/cli": "^0.27.0-next.1",
|
|
86
|
+
"@backstage/core-app-api": "^1.14.2-next.0",
|
|
87
|
+
"@backstage/plugin-catalog-common": "^1.0.26-next.0",
|
|
88
|
+
"@backstage/plugin-scaffolder-common": "^1.5.5-next.0",
|
|
89
|
+
"@backstage/test-utils": "^1.5.10-next.1",
|
|
90
90
|
"@testing-library/dom": "^10.0.0",
|
|
91
91
|
"@testing-library/jest-dom": "^6.0.0",
|
|
92
92
|
"@testing-library/react": "^15.0.0",
|