@backstage/plugin-scaffolder 1.12.0 → 1.13.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -0
- package/alpha/package.json +1 -1
- package/dist/alpha.d.ts +32 -21
- package/dist/alpha.esm.js +13 -21
- package/dist/alpha.esm.js.map +1 -1
- package/dist/esm/alpha/{ListTasksPage-2e8f4176.esm.js → ListTasksPage-a9fab591.esm.js} +2 -2
- package/dist/esm/alpha/{ListTasksPage-2e8f4176.esm.js.map → ListTasksPage-a9fab591.esm.js.map} +1 -1
- package/dist/esm/alpha/{Router-2826a2b8.esm.js → Router-ea3122d2.esm.js} +24 -9
- package/dist/esm/alpha/Router-ea3122d2.esm.js.map +1 -0
- package/dist/esm/alpha/{alpha-714dad1b.esm.js → alpha-0764fae7.esm.js} +243 -255
- package/dist/esm/alpha/alpha-0764fae7.esm.js.map +1 -0
- package/dist/esm/alpha/{index-2131f4a0.esm.js → index-d45f106a.esm.js} +79 -142
- package/dist/esm/alpha/index-d45f106a.esm.js.map +1 -0
- package/dist/esm/index/ListTasksPage-64779a2d.esm.js +1310 -0
- package/dist/esm/index/ListTasksPage-64779a2d.esm.js.map +1 -0
- package/dist/esm/index/{Router-6fd61bff.esm.js → Router-f32000f9.esm.js} +42 -33
- package/dist/esm/index/Router-f32000f9.esm.js.map +1 -0
- package/dist/esm/index/index-8321766a.esm.js +1741 -0
- package/dist/esm/index/index-8321766a.esm.js.map +1 -0
- package/dist/esm/index/index-e3edaa49.esm.js +991 -0
- package/dist/esm/index/index-e3edaa49.esm.js.map +1 -0
- package/dist/index.d.ts +25 -5
- package/dist/index.esm.js +9 -59
- package/dist/index.esm.js.map +1 -1
- package/package.json +14 -14
- package/dist/esm/alpha/Router-2826a2b8.esm.js.map +0 -1
- package/dist/esm/alpha/alpha-714dad1b.esm.js.map +0 -1
- package/dist/esm/alpha/index-2131f4a0.esm.js.map +0 -1
- package/dist/esm/index/ListTasksPage-fa403ee3.esm.js +0 -192
- package/dist/esm/index/ListTasksPage-fa403ee3.esm.js.map +0 -1
- package/dist/esm/index/Router-6fd61bff.esm.js.map +0 -1
- package/dist/esm/index/index-0b6cdf44.esm.js +0 -3475
- package/dist/esm/index/index-0b6cdf44.esm.js.map +0 -1
- package/dist/esm/index/index-f404fb0b.esm.js +0 -449
- package/dist/esm/index/index-f404fb0b.esm.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
# @backstage/plugin-scaffolder
|
|
2
2
|
|
|
3
|
+
## 1.13.0-next.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- cdab34fd9a2: scaffolder/next: removing the `routeRefs` and exporting the originals on `scaffolderPlugin.routes.x` instead
|
|
8
|
+
- e5ad1bd61ec: Allow `TemplateListPage` and `TemplateWizardPage` to be passed in as props
|
|
9
|
+
- 92cf86a4b5d: Added a `templateFilter` prop to the `<Router/>` component to allow for filtering of templates through a function.
|
|
10
|
+
- 259d3407b9b: Move `CategoryPicker` from `scaffolder` into `scaffolder-react`
|
|
11
|
+
Move `ContextMenu` into `scaffolder-react` and rename it to `ScaffolderPageContextMenu`
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- e27ddc36dad: Added a possibility to cancel the running task (executing of a scaffolder template)
|
|
16
|
+
- 57c1b4752fa: Allow use of `{ exists: true }` value inside filters to filter entities that has that key.
|
|
17
|
+
|
|
18
|
+
this example will filter all entities that has the annotation `someAnnotation` set to any value.
|
|
19
|
+
|
|
20
|
+
```yaml
|
|
21
|
+
ui:options:
|
|
22
|
+
catalogFilter:
|
|
23
|
+
kind: Group
|
|
24
|
+
metadata.annotations.someAnnotation: { exists: true }
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
- 7a6b16cc506: `scaffolder/next`: Bump `@rjsf/*` deps to 5.3.1
|
|
28
|
+
- f84fc7fd040: Updated dependency `@rjsf/validator-ajv8` to `5.3.0`.
|
|
29
|
+
- 8e00acb28db: Small tweaks to remove warnings in the console during development (mainly focusing on techdocs)
|
|
30
|
+
- Updated dependencies
|
|
31
|
+
- @backstage/plugin-scaffolder-react@1.3.0-next.0
|
|
32
|
+
- @backstage/plugin-scaffolder-common@1.2.7-next.0
|
|
33
|
+
- @backstage/core-components@0.12.6-next.0
|
|
34
|
+
- @backstage/plugin-catalog-react@1.4.1-next.0
|
|
35
|
+
- @backstage/integration-react@1.1.12-next.0
|
|
36
|
+
- @backstage/core-plugin-api@1.5.0
|
|
37
|
+
- @backstage/config@1.0.7
|
|
38
|
+
- @backstage/integration@1.4.3
|
|
39
|
+
- @backstage/plugin-permission-react@0.4.11
|
|
40
|
+
- @backstage/catalog-client@1.4.0
|
|
41
|
+
- @backstage/catalog-model@1.2.1
|
|
42
|
+
- @backstage/errors@1.1.5
|
|
43
|
+
- @backstage/theme@0.2.18
|
|
44
|
+
- @backstage/types@1.0.2
|
|
45
|
+
- @backstage/plugin-catalog-common@1.0.12
|
|
46
|
+
|
|
3
47
|
## 1.12.0
|
|
4
48
|
|
|
5
49
|
### Minor Changes
|
package/alpha/package.json
CHANGED
package/dist/alpha.d.ts
CHANGED
|
@@ -1,19 +1,34 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import React__default from 'react';
|
|
4
|
-
import { FormProps as FormProps$1 } from '@backstage/plugin-scaffolder-react/alpha';
|
|
5
|
-
import { ScaffolderTaskOutput } from '@backstage/plugin-scaffolder-react';
|
|
6
4
|
import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
|
|
7
|
-
import {
|
|
5
|
+
import { TemplateGroupFilter, NextFieldExtensionOptions, FormProps as FormProps$1 } from '@backstage/plugin-scaffolder-react/alpha';
|
|
6
|
+
import { LayoutOptions, ScaffolderTaskOutput } from '@backstage/plugin-scaffolder-react';
|
|
8
7
|
import { FormProps as FormProps$2 } from '@rjsf/core-v5';
|
|
9
|
-
import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
|
|
10
8
|
|
|
11
9
|
/**
|
|
12
10
|
* @alpha
|
|
13
11
|
*/
|
|
14
|
-
declare type
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
declare type TemplateListPageProps = {
|
|
13
|
+
TemplateCardComponent?: React__default.ComponentType<{
|
|
14
|
+
template: TemplateEntityV1beta3;
|
|
15
|
+
}>;
|
|
16
|
+
groups?: TemplateGroupFilter[];
|
|
17
|
+
templateFilter?: (entity: TemplateEntityV1beta3) => boolean;
|
|
18
|
+
contextMenu?: {
|
|
19
|
+
editor?: boolean;
|
|
20
|
+
actions?: boolean;
|
|
21
|
+
tasks?: boolean;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @alpha
|
|
27
|
+
*/
|
|
28
|
+
declare type TemplateWizardPageProps = {
|
|
29
|
+
customFieldExtensions: NextFieldExtensionOptions<any, any>[];
|
|
30
|
+
layouts?: LayoutOptions[];
|
|
31
|
+
FormProps?: FormProps$1;
|
|
17
32
|
};
|
|
18
33
|
|
|
19
34
|
/**
|
|
@@ -30,8 +45,11 @@ declare type NextRouterProps = {
|
|
|
30
45
|
TemplateOutputsComponent?: React__default.ComponentType<{
|
|
31
46
|
output?: ScaffolderTaskOutput;
|
|
32
47
|
}>;
|
|
48
|
+
TemplateListPageComponent?: React__default.ComponentType<TemplateListPageProps>;
|
|
49
|
+
TemplateWizardPageComponent?: React__default.ComponentType<TemplateWizardPageProps>;
|
|
33
50
|
};
|
|
34
51
|
groups?: TemplateGroupFilter[];
|
|
52
|
+
templateFilter?: (entity: TemplateEntityV1beta3) => boolean;
|
|
35
53
|
FormProps?: FormProps$1;
|
|
36
54
|
contextMenu?: {
|
|
37
55
|
/** Whether to show a link to the template editor */
|
|
@@ -43,6 +61,12 @@ declare type NextRouterProps = {
|
|
|
43
61
|
};
|
|
44
62
|
};
|
|
45
63
|
|
|
64
|
+
/**
|
|
65
|
+
* @alpha
|
|
66
|
+
* The Router and main entrypoint to the Alpha Scaffolder plugin.
|
|
67
|
+
*/
|
|
68
|
+
declare const NextScaffolderPage: (props: React.PropsWithChildren<NextRouterProps>) => JSX.Element;
|
|
69
|
+
|
|
46
70
|
/**
|
|
47
71
|
* These types will be replaced eventually by the one in the scaffolder-react plugin.
|
|
48
72
|
* It is a temporary solution to avoid the `/alpha` types being re-exported and that not being supported right now.
|
|
@@ -57,17 +81,4 @@ declare type NextRouterProps = {
|
|
|
57
81
|
*/
|
|
58
82
|
declare type FormProps = Pick<FormProps$2, 'transformErrors' | 'noHtml5Validate'>;
|
|
59
83
|
|
|
60
|
-
|
|
61
|
-
declare const nextRouteRef: _backstage_core_plugin_api.RouteRef<undefined>;
|
|
62
|
-
/** @alpha */
|
|
63
|
-
declare const nextSelectedTemplateRouteRef: _backstage_core_plugin_api.SubRouteRef<_backstage_core_plugin_api.PathParams<"/templates/:namespace/:templateName">>;
|
|
64
|
-
/** @alpha */
|
|
65
|
-
declare const nextScaffolderTaskRouteRef: _backstage_core_plugin_api.SubRouteRef<_backstage_core_plugin_api.PathParams<"/tasks/:taskId">>;
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* @alpha
|
|
69
|
-
* The Router and main entrypoint to the Alpha Scaffolder plugin.
|
|
70
|
-
*/
|
|
71
|
-
declare const NextScaffolderPage: (props: React.PropsWithChildren<NextRouterProps>) => JSX.Element;
|
|
72
|
-
|
|
73
|
-
export { FormProps, NextRouterProps, NextScaffolderPage, TemplateGroupFilter, nextRouteRef, nextScaffolderTaskRouteRef, nextSelectedTemplateRouteRef };
|
|
84
|
+
export { FormProps, NextRouterProps, NextScaffolderPage, TemplateListPageProps, TemplateWizardPageProps };
|
package/dist/alpha.esm.js
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { N as NextScaffolderPage } from './esm/alpha/alpha-0764fae7.esm.js';
|
|
2
2
|
import 'react';
|
|
3
3
|
import 'react-router-dom';
|
|
4
|
+
import '@backstage/core-plugin-api';
|
|
4
5
|
import '@backstage/core-components';
|
|
5
6
|
import '@backstage/plugin-catalog-react';
|
|
6
|
-
import '
|
|
7
|
-
import '@material-ui/core';
|
|
8
|
-
import '@material-ui/icons/CheckBox';
|
|
9
|
-
import '@material-ui/icons/CheckBoxOutlineBlank';
|
|
10
|
-
import '@material-ui/icons/ExpandMore';
|
|
11
|
-
import '@material-ui/lab';
|
|
12
|
-
import '@backstage/core-plugin-api';
|
|
7
|
+
import '@backstage/plugin-scaffolder-react/alpha';
|
|
13
8
|
import '@material-ui/core/Button';
|
|
14
9
|
import '@material-ui/core/IconButton';
|
|
15
10
|
import '@material-ui/core/useMediaQuery';
|
|
@@ -17,12 +12,14 @@ import '@material-ui/icons/AddCircleOutline';
|
|
|
17
12
|
import '@backstage/plugin-catalog-common/alpha';
|
|
18
13
|
import '@backstage/plugin-permission-react';
|
|
19
14
|
import '@backstage/catalog-model';
|
|
20
|
-
import '@backstage/plugin-scaffolder-react/alpha';
|
|
21
15
|
import '@backstage/plugin-scaffolder-react';
|
|
16
|
+
import '@backstage/catalog-client';
|
|
17
|
+
import '@material-ui/core';
|
|
22
18
|
import '@material-ui/core/FormControl';
|
|
23
19
|
import '@material-ui/lab/Autocomplete';
|
|
24
20
|
import 'react-use/lib/useAsync';
|
|
25
21
|
import 'react-use/lib/useEffectOnce';
|
|
22
|
+
import '@material-ui/lab';
|
|
26
23
|
import '@backstage/integration-react';
|
|
27
24
|
import '@material-ui/core/FormHelperText';
|
|
28
25
|
import '@material-ui/core/Input';
|
|
@@ -36,19 +33,13 @@ import 'qs';
|
|
|
36
33
|
import 'zen-observable';
|
|
37
34
|
import 'zod';
|
|
38
35
|
import 'zod-to-json-schema';
|
|
39
|
-
import '@
|
|
40
|
-
import '@material-ui/
|
|
41
|
-
import '@material-ui/core/MenuItem';
|
|
42
|
-
import '@material-ui/core/MenuList';
|
|
43
|
-
import '@material-ui/core/Popover';
|
|
44
|
-
import '@material-ui/core/styles';
|
|
45
|
-
import '@material-ui/icons/Description';
|
|
46
|
-
import '@material-ui/icons/Edit';
|
|
47
|
-
import '@material-ui/icons/List';
|
|
48
|
-
import '@material-ui/icons/MoreVert';
|
|
36
|
+
import '@react-hookz/web';
|
|
37
|
+
import '@material-ui/icons/Cancel';
|
|
49
38
|
import '@material-ui/icons/Repeat';
|
|
50
39
|
import '@material-ui/icons/Toc';
|
|
40
|
+
import '@material-ui/icons/MoreVert';
|
|
51
41
|
import 'classnames';
|
|
42
|
+
import '@material-ui/icons/ExpandMore';
|
|
52
43
|
import '@material-ui/icons/Settings';
|
|
53
44
|
import '@material-ui/icons/FontDownload';
|
|
54
45
|
import '@codemirror/language';
|
|
@@ -56,7 +47,7 @@ import '@codemirror/legacy-modes/mode/yaml';
|
|
|
56
47
|
import '@material-ui/icons/Close';
|
|
57
48
|
import '@uiw/react-codemirror';
|
|
58
49
|
import 'yaml';
|
|
59
|
-
import '@
|
|
50
|
+
import '@material-ui/core/styles';
|
|
60
51
|
import '@rjsf/validator-ajv8';
|
|
61
52
|
import '@material-ui/core/Accordion';
|
|
62
53
|
import '@material-ui/core/AccordionDetails';
|
|
@@ -65,8 +56,9 @@ import '@material-ui/core/Divider';
|
|
|
65
56
|
import '@material-ui/icons/ExpandLess';
|
|
66
57
|
import '@material-ui/core/List';
|
|
67
58
|
import '@material-ui/core/ListItem';
|
|
59
|
+
import '@material-ui/core/ListItemIcon';
|
|
68
60
|
import '@material-ui/core/ListItemSecondaryAction';
|
|
69
|
-
import '@material-ui/
|
|
61
|
+
import '@material-ui/core/ListItemText';
|
|
70
62
|
import '@material-ui/icons/Check';
|
|
71
63
|
import '@material-ui/icons/Delete';
|
|
72
64
|
import '@material-ui/core/Box';
|
package/dist/alpha.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alpha.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"alpha.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { E as EntityPicker, m as EntityPickerSchema, n as EntityNamePicker, o as entityNamePickerValidation, p as EntityNamePickerSchema, q as EntityTagsPicker, t as EntityTagsPickerSchema, R as RepoUrlPicker, w as repoPickerValidation, x as RepoUrlPickerSchema, O as OwnerPicker, y as OwnerPickerSchema, z as OwnedEntityPicker, B as OwnedEntityPickerSchema, d as rootRouteRef, C as OwnerListPicker } from './alpha-
|
|
1
|
+
import { E as EntityPicker, m as EntityPickerSchema, n as EntityNamePicker, o as entityNamePickerValidation, p as EntityNamePickerSchema, q as EntityTagsPicker, t as EntityTagsPickerSchema, R as RepoUrlPicker, w as repoPickerValidation, x as RepoUrlPickerSchema, O as OwnerPicker, y as OwnerPickerSchema, z as OwnedEntityPicker, B as OwnedEntityPickerSchema, d as rootRouteRef, C as OwnerListPicker } from './alpha-0764fae7.esm.js';
|
|
2
2
|
import { StatusError, StatusOK, StatusPending, Page, Header, Lifecycle, Content, Progress, ErrorPanel, EmptyState, Table, Link } from '@backstage/core-components';
|
|
3
3
|
import { useApi, useRouteRef } from '@backstage/core-plugin-api';
|
|
4
4
|
import { catalogApiRef, EntityRefLink, CatalogFilterLayout } from '@backstage/plugin-catalog-react';
|
|
@@ -189,4 +189,4 @@ const ListTasksPage = (props) => {
|
|
|
189
189
|
};
|
|
190
190
|
|
|
191
191
|
export { DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS as D, ListTasksPage as L };
|
|
192
|
-
//# sourceMappingURL=ListTasksPage-
|
|
192
|
+
//# sourceMappingURL=ListTasksPage-a9fab591.esm.js.map
|
package/dist/esm/alpha/{ListTasksPage-2e8f4176.esm.js.map → ListTasksPage-a9fab591.esm.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListTasksPage-2e8f4176.esm.js","sources":["../../../src/extensions/default.ts","../../../src/components/ListTasksPage/columns/CreatedAtColumn.tsx","../../../src/components/ListTasksPage/columns/OwnerEntityColumn.tsx","../../../src/components/ListTasksPage/columns/TaskStatusColumn.tsx","../../../src/components/ListTasksPage/columns/TemplateTitleColumn.tsx","../../../src/components/ListTasksPage/ListTasksPage.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 {\n EntityPicker,\n EntityPickerSchema,\n} from '../components/fields/EntityPicker/EntityPicker';\nimport {\n EntityNamePicker,\n EntityNamePickerSchema,\n} from '../components/fields/EntityNamePicker/EntityNamePicker';\nimport { entityNamePickerValidation } from '../components/fields/EntityNamePicker/validation';\nimport {\n EntityTagsPicker,\n EntityTagsPickerSchema,\n} from '../components/fields/EntityTagsPicker/EntityTagsPicker';\nimport {\n OwnerPicker,\n OwnerPickerSchema,\n} from '../components/fields/OwnerPicker/OwnerPicker';\nimport {\n RepoUrlPicker,\n RepoUrlPickerSchema,\n} from '../components/fields/RepoUrlPicker/RepoUrlPicker';\nimport { repoPickerValidation } from '../components/fields/RepoUrlPicker/validation';\nimport {\n OwnedEntityPicker,\n OwnedEntityPickerSchema,\n} from '../components/fields/OwnedEntityPicker/OwnedEntityPicker';\n\nexport const DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS = [\n {\n component: EntityPicker,\n name: 'EntityPicker',\n schema: EntityPickerSchema,\n },\n {\n component: EntityNamePicker,\n name: 'EntityNamePicker',\n validation: entityNamePickerValidation,\n schema: EntityNamePickerSchema,\n },\n {\n component: EntityTagsPicker,\n name: 'EntityTagsPicker',\n schema: EntityTagsPickerSchema,\n },\n {\n component: RepoUrlPicker,\n name: 'RepoUrlPicker',\n validation: repoPickerValidation,\n schema: RepoUrlPickerSchema,\n },\n {\n component: OwnerPicker,\n name: 'OwnerPicker',\n schema: OwnerPickerSchema,\n },\n {\n component: OwnedEntityPicker,\n name: 'OwnedEntityPicker',\n schema: OwnedEntityPickerSchema,\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 */\nimport { DateTime, Interval } from 'luxon';\nimport humanizeDuration from 'humanize-duration';\nimport React from 'react';\nimport Typography from '@material-ui/core/Typography';\n\nexport const CreatedAtColumn = ({ createdAt }: { createdAt: string }) => {\n const createdAtTime = DateTime.fromISO(createdAt);\n const formatted = Interval.fromDateTimes(createdAtTime, DateTime.local())\n .toDuration()\n .valueOf();\n\n return (\n <Typography paragraph>\n {humanizeDuration(formatted, { round: true })} ago\n </Typography>\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 */\nimport { useApi } from '@backstage/core-plugin-api';\nimport React from 'react';\n\nimport useAsync from 'react-use/lib/useAsync';\n\nimport { catalogApiRef, EntityRefLink } from '@backstage/plugin-catalog-react';\nimport { parseEntityRef, UserEntity } from '@backstage/catalog-model';\nimport Typography from '@material-ui/core/Typography';\n\nexport const OwnerEntityColumn = ({ entityRef }: { entityRef?: string }) => {\n const catalogApi = useApi(catalogApiRef);\n\n const { value, loading, error } = useAsync(\n () => catalogApi.getEntityByRef(entityRef || ''),\n [catalogApi, entityRef],\n );\n\n if (!entityRef) {\n return <Typography paragraph>Unknown</Typography>;\n }\n\n if (loading || error) {\n return null;\n }\n\n return (\n <EntityRefLink\n entityRef={parseEntityRef(entityRef)}\n title={\n (value as UserEntity)?.spec?.profile?.displayName ??\n value?.metadata.name\n }\n />\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 */\nimport {\n StatusError,\n StatusOK,\n StatusPending,\n} from '@backstage/core-components';\nimport React from 'react';\n\nexport const TaskStatusColumn = ({ status }: { status: string }) => {\n switch (status) {\n case 'processing':\n return <StatusPending>{status}</StatusPending>;\n case 'completed':\n return <StatusOK>{status}</StatusOK>;\n case 'error':\n default:\n return <StatusError>{status}</StatusError>;\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 */\nimport { useApi } from '@backstage/core-plugin-api';\nimport React from 'react';\nimport { scaffolderApiRef } from '@backstage/plugin-scaffolder-react';\nimport useAsync from 'react-use/lib/useAsync';\nimport { parseEntityRef } from '@backstage/catalog-model';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\n\nexport const TemplateTitleColumn = ({ entityRef }: { entityRef?: string }) => {\n const scaffolder = useApi(scaffolderApiRef);\n const { value, loading, error } = useAsync(\n () => scaffolder.getTemplateParameterSchema(entityRef || ''),\n [scaffolder, entityRef],\n );\n\n if (loading || error || !entityRef) {\n return null;\n }\n\n return (\n <EntityRefLink entityRef={parseEntityRef(entityRef)} title={value?.title} />\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 */\nimport {\n Content,\n EmptyState,\n ErrorPanel,\n Header,\n Lifecycle,\n Link,\n Page,\n Progress,\n Table,\n} from '@backstage/core-components';\nimport { useApi, useRouteRef } from '@backstage/core-plugin-api';\nimport { CatalogFilterLayout } from '@backstage/plugin-catalog-react';\nimport useAsync from 'react-use/lib/useAsync';\nimport React, { useState } from 'react';\nimport {\n ScaffolderTask,\n scaffolderApiRef,\n} from '@backstage/plugin-scaffolder-react';\nimport { OwnerListPicker } from './OwnerListPicker';\nimport {\n CreatedAtColumn,\n OwnerEntityColumn,\n TaskStatusColumn,\n TemplateTitleColumn,\n} from './columns';\nimport { rootRouteRef } from '../../routes';\n\nexport interface MyTaskPageProps {\n initiallySelectedFilter?: 'owned' | 'all';\n}\n\nconst ListTaskPageContent = (props: MyTaskPageProps) => {\n const { initiallySelectedFilter = 'owned' } = props;\n\n const scaffolderApi = useApi(scaffolderApiRef);\n const rootLink = useRouteRef(rootRouteRef);\n\n const [ownerFilter, setOwnerFilter] = useState(initiallySelectedFilter);\n const { value, loading, error } = useAsync(() => {\n if (scaffolderApi.listTasks) {\n return scaffolderApi.listTasks?.({ filterByOwnership: ownerFilter });\n }\n\n // eslint-disable-next-line no-console\n console.warn(\n 'listTasks is not implemented in the scaffolderApi, please make sure to implement this method.',\n );\n\n return Promise.resolve({ tasks: [] });\n }, [scaffolderApi, ownerFilter]);\n\n if (loading) {\n return <Progress />;\n }\n\n if (error) {\n return (\n <>\n <ErrorPanel error={error} />\n <EmptyState\n missing=\"info\"\n title=\"No information to display\"\n description=\"There is no Tasks or there was an issue communicating with backend.\"\n />\n </>\n );\n }\n\n return (\n <CatalogFilterLayout>\n <CatalogFilterLayout.Filters>\n <OwnerListPicker\n filter={ownerFilter}\n onSelectOwner={id => setOwnerFilter(id)}\n />\n </CatalogFilterLayout.Filters>\n <CatalogFilterLayout.Content>\n <Table<ScaffolderTask>\n data={value?.tasks ?? []}\n title=\"Tasks\"\n columns={[\n {\n title: 'Task ID',\n field: 'id',\n render: row => (\n <Link to={`${rootLink()}/tasks/${row.id}`}>{row.id}</Link>\n ),\n },\n {\n title: 'Template',\n render: row => (\n <TemplateTitleColumn\n entityRef={row.spec.templateInfo?.entityRef}\n />\n ),\n },\n {\n title: 'Created',\n field: 'createdAt',\n render: row => <CreatedAtColumn createdAt={row.createdAt} />,\n },\n {\n title: 'Owner',\n field: 'createdBy',\n render: row => (\n <OwnerEntityColumn entityRef={row.spec?.user?.ref} />\n ),\n },\n {\n title: 'Status',\n field: 'status',\n render: row => <TaskStatusColumn status={row.status} />,\n },\n ]}\n />\n </CatalogFilterLayout.Content>\n </CatalogFilterLayout>\n );\n};\n\nexport const ListTasksPage = (props: MyTaskPageProps) => {\n return (\n <Page themeId=\"home\">\n <Header\n pageTitleOverride=\"Templates Tasks\"\n title={\n <>\n List template tasks <Lifecycle shorthand alpha />\n </>\n }\n subtitle=\"All tasks that have been started\"\n />\n <Content>\n <ListTaskPageContent {...props} />\n </Content>\n </Page>\n );\n};\n"],"names":["_a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListTasksPage-a9fab591.esm.js","sources":["../../../src/extensions/default.ts","../../../src/components/ListTasksPage/columns/CreatedAtColumn.tsx","../../../src/components/ListTasksPage/columns/OwnerEntityColumn.tsx","../../../src/components/ListTasksPage/columns/TaskStatusColumn.tsx","../../../src/components/ListTasksPage/columns/TemplateTitleColumn.tsx","../../../src/components/ListTasksPage/ListTasksPage.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 {\n EntityPicker,\n EntityPickerSchema,\n} from '../components/fields/EntityPicker/EntityPicker';\nimport {\n EntityNamePicker,\n EntityNamePickerSchema,\n} from '../components/fields/EntityNamePicker/EntityNamePicker';\nimport { entityNamePickerValidation } from '../components/fields/EntityNamePicker/validation';\nimport {\n EntityTagsPicker,\n EntityTagsPickerSchema,\n} from '../components/fields/EntityTagsPicker/EntityTagsPicker';\nimport {\n OwnerPicker,\n OwnerPickerSchema,\n} from '../components/fields/OwnerPicker/OwnerPicker';\nimport {\n RepoUrlPicker,\n RepoUrlPickerSchema,\n} from '../components/fields/RepoUrlPicker/RepoUrlPicker';\nimport { repoPickerValidation } from '../components/fields/RepoUrlPicker/validation';\nimport {\n OwnedEntityPicker,\n OwnedEntityPickerSchema,\n} from '../components/fields/OwnedEntityPicker/OwnedEntityPicker';\n\nexport const DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS = [\n {\n component: EntityPicker,\n name: 'EntityPicker',\n schema: EntityPickerSchema,\n },\n {\n component: EntityNamePicker,\n name: 'EntityNamePicker',\n validation: entityNamePickerValidation,\n schema: EntityNamePickerSchema,\n },\n {\n component: EntityTagsPicker,\n name: 'EntityTagsPicker',\n schema: EntityTagsPickerSchema,\n },\n {\n component: RepoUrlPicker,\n name: 'RepoUrlPicker',\n validation: repoPickerValidation,\n schema: RepoUrlPickerSchema,\n },\n {\n component: OwnerPicker,\n name: 'OwnerPicker',\n schema: OwnerPickerSchema,\n },\n {\n component: OwnedEntityPicker,\n name: 'OwnedEntityPicker',\n schema: OwnedEntityPickerSchema,\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 */\nimport { DateTime, Interval } from 'luxon';\nimport humanizeDuration from 'humanize-duration';\nimport React from 'react';\nimport Typography from '@material-ui/core/Typography';\n\nexport const CreatedAtColumn = ({ createdAt }: { createdAt: string }) => {\n const createdAtTime = DateTime.fromISO(createdAt);\n const formatted = Interval.fromDateTimes(createdAtTime, DateTime.local())\n .toDuration()\n .valueOf();\n\n return (\n <Typography paragraph>\n {humanizeDuration(formatted, { round: true })} ago\n </Typography>\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 */\nimport { useApi } from '@backstage/core-plugin-api';\nimport React from 'react';\n\nimport useAsync from 'react-use/lib/useAsync';\n\nimport { catalogApiRef, EntityRefLink } from '@backstage/plugin-catalog-react';\nimport { parseEntityRef, UserEntity } from '@backstage/catalog-model';\nimport Typography from '@material-ui/core/Typography';\n\nexport const OwnerEntityColumn = ({ entityRef }: { entityRef?: string }) => {\n const catalogApi = useApi(catalogApiRef);\n\n const { value, loading, error } = useAsync(\n () => catalogApi.getEntityByRef(entityRef || ''),\n [catalogApi, entityRef],\n );\n\n if (!entityRef) {\n return <Typography paragraph>Unknown</Typography>;\n }\n\n if (loading || error) {\n return null;\n }\n\n return (\n <EntityRefLink\n entityRef={parseEntityRef(entityRef)}\n title={\n (value as UserEntity)?.spec?.profile?.displayName ??\n value?.metadata.name\n }\n />\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 */\nimport {\n StatusError,\n StatusOK,\n StatusPending,\n} from '@backstage/core-components';\nimport React from 'react';\n\nexport const TaskStatusColumn = ({ status }: { status: string }) => {\n switch (status) {\n case 'processing':\n return <StatusPending>{status}</StatusPending>;\n case 'completed':\n return <StatusOK>{status}</StatusOK>;\n case 'error':\n default:\n return <StatusError>{status}</StatusError>;\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 */\nimport { useApi } from '@backstage/core-plugin-api';\nimport React from 'react';\nimport { scaffolderApiRef } from '@backstage/plugin-scaffolder-react';\nimport useAsync from 'react-use/lib/useAsync';\nimport { parseEntityRef } from '@backstage/catalog-model';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\n\nexport const TemplateTitleColumn = ({ entityRef }: { entityRef?: string }) => {\n const scaffolder = useApi(scaffolderApiRef);\n const { value, loading, error } = useAsync(\n () => scaffolder.getTemplateParameterSchema(entityRef || ''),\n [scaffolder, entityRef],\n );\n\n if (loading || error || !entityRef) {\n return null;\n }\n\n return (\n <EntityRefLink entityRef={parseEntityRef(entityRef)} title={value?.title} />\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 */\nimport {\n Content,\n EmptyState,\n ErrorPanel,\n Header,\n Lifecycle,\n Link,\n Page,\n Progress,\n Table,\n} from '@backstage/core-components';\nimport { useApi, useRouteRef } from '@backstage/core-plugin-api';\nimport { CatalogFilterLayout } from '@backstage/plugin-catalog-react';\nimport useAsync from 'react-use/lib/useAsync';\nimport React, { useState } from 'react';\nimport {\n ScaffolderTask,\n scaffolderApiRef,\n} from '@backstage/plugin-scaffolder-react';\nimport { OwnerListPicker } from './OwnerListPicker';\nimport {\n CreatedAtColumn,\n OwnerEntityColumn,\n TaskStatusColumn,\n TemplateTitleColumn,\n} from './columns';\nimport { rootRouteRef } from '../../routes';\n\nexport interface MyTaskPageProps {\n initiallySelectedFilter?: 'owned' | 'all';\n}\n\nconst ListTaskPageContent = (props: MyTaskPageProps) => {\n const { initiallySelectedFilter = 'owned' } = props;\n\n const scaffolderApi = useApi(scaffolderApiRef);\n const rootLink = useRouteRef(rootRouteRef);\n\n const [ownerFilter, setOwnerFilter] = useState(initiallySelectedFilter);\n const { value, loading, error } = useAsync(() => {\n if (scaffolderApi.listTasks) {\n return scaffolderApi.listTasks?.({ filterByOwnership: ownerFilter });\n }\n\n // eslint-disable-next-line no-console\n console.warn(\n 'listTasks is not implemented in the scaffolderApi, please make sure to implement this method.',\n );\n\n return Promise.resolve({ tasks: [] });\n }, [scaffolderApi, ownerFilter]);\n\n if (loading) {\n return <Progress />;\n }\n\n if (error) {\n return (\n <>\n <ErrorPanel error={error} />\n <EmptyState\n missing=\"info\"\n title=\"No information to display\"\n description=\"There is no Tasks or there was an issue communicating with backend.\"\n />\n </>\n );\n }\n\n return (\n <CatalogFilterLayout>\n <CatalogFilterLayout.Filters>\n <OwnerListPicker\n filter={ownerFilter}\n onSelectOwner={id => setOwnerFilter(id)}\n />\n </CatalogFilterLayout.Filters>\n <CatalogFilterLayout.Content>\n <Table<ScaffolderTask>\n data={value?.tasks ?? []}\n title=\"Tasks\"\n columns={[\n {\n title: 'Task ID',\n field: 'id',\n render: row => (\n <Link to={`${rootLink()}/tasks/${row.id}`}>{row.id}</Link>\n ),\n },\n {\n title: 'Template',\n render: row => (\n <TemplateTitleColumn\n entityRef={row.spec.templateInfo?.entityRef}\n />\n ),\n },\n {\n title: 'Created',\n field: 'createdAt',\n render: row => <CreatedAtColumn createdAt={row.createdAt} />,\n },\n {\n title: 'Owner',\n field: 'createdBy',\n render: row => (\n <OwnerEntityColumn entityRef={row.spec?.user?.ref} />\n ),\n },\n {\n title: 'Status',\n field: 'status',\n render: row => <TaskStatusColumn status={row.status} />,\n },\n ]}\n />\n </CatalogFilterLayout.Content>\n </CatalogFilterLayout>\n );\n};\n\nexport const ListTasksPage = (props: MyTaskPageProps) => {\n return (\n <Page themeId=\"home\">\n <Header\n pageTitleOverride=\"Templates Tasks\"\n title={\n <>\n List template tasks <Lifecycle shorthand alpha />\n </>\n }\n subtitle=\"All tasks that have been started\"\n />\n <Content>\n <ListTaskPageContent {...props} />\n </Content>\n </Page>\n );\n};\n"],"names":["_a"],"mappings":"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"}
|
|
@@ -4,11 +4,12 @@ import { ItemCardHeader, MarkdownContent, LinkButton, Link, ContentHeader, Progr
|
|
|
4
4
|
import { useApp, useRouteRef, useApi, alertApiRef, useRouteRefParams, useAnalytics, errorApiRef, featureFlagsApiRef, useApiHolder, AnalyticsContext } from '@backstage/core-plugin-api';
|
|
5
5
|
import { getEntityRelations, getEntitySourceLocation, FavoriteEntity, EntityRefLinks, useEntityList, useEntityTypeFilter, EntityListProvider, CatalogFilterLayout, EntitySearchBar, EntityKindPicker, UserListPicker, EntityTagPicker, catalogApiRef, humanizeEntityRef } from '@backstage/plugin-catalog-react';
|
|
6
6
|
import { RELATION_OWNED_BY, parseEntityRef, stringifyEntityRef, DEFAULT_NAMESPACE } from '@backstage/catalog-model';
|
|
7
|
+
import { isTemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';
|
|
7
8
|
import { makeStyles, useTheme, Card, CardMedia, CardContent, Box, Typography, Chip, CardActions, Tooltip, IconButton, FormControlLabel, Checkbox, TextField, Paper, Button, Stepper, Step, StepLabel, StepContent, LinearProgress, FormControl, InputLabel, Select, MenuItem as MenuItem$1, CardHeader } from '@material-ui/core';
|
|
8
9
|
import { scmIntegrationsApiRef, ScmIntegrationIcon } from '@backstage/integration-react';
|
|
9
10
|
import LanguageIcon from '@material-ui/icons/Language';
|
|
10
11
|
import WarningIcon from '@material-ui/icons/Warning';
|
|
11
|
-
import { s as selectedTemplateRouteRef, v as viewTechDocRouteRef, e as editRouteRef, a as actionsRouteRef, b as scaffolderListTaskRouteRef, r as registerComponentRouteRef, c as scaffolderTaskRouteRef, d as rootRouteRef, u as useDryRun, f as useDirectoryEditor, D as DirectoryEditorProvider, g as DryRunProvider, T as TemplateEditorBrowser, h as TemplateEditorTextArea, i as DryRunResults, j as TemplateEditorIntro, W as WebFileSystemAccess, l as legacySelectedTemplateRouteRef, A as ActionsPage, k as TaskPage } from './alpha-
|
|
12
|
+
import { s as selectedTemplateRouteRef, v as viewTechDocRouteRef, e as editRouteRef, a as actionsRouteRef, b as scaffolderListTaskRouteRef, r as registerComponentRouteRef, c as scaffolderTaskRouteRef, d as rootRouteRef, u as useDryRun, f as useDirectoryEditor, D as DirectoryEditorProvider, g as DryRunProvider, T as TemplateEditorBrowser, h as TemplateEditorTextArea, i as DryRunResults, j as TemplateEditorIntro, W as WebFileSystemAccess, l as legacySelectedTemplateRouteRef, A as ActionsPage, k as TaskPage } from './alpha-0764fae7.esm.js';
|
|
12
13
|
import capitalize from 'lodash/capitalize';
|
|
13
14
|
import CheckBoxIcon from '@material-ui/icons/CheckBox';
|
|
14
15
|
import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';
|
|
@@ -40,9 +41,10 @@ import CloseIcon from '@material-ui/icons/Close';
|
|
|
40
41
|
import CodeMirror from '@uiw/react-codemirror';
|
|
41
42
|
import yaml from 'yaml';
|
|
42
43
|
import useDebounce from 'react-use/lib/useDebounce';
|
|
43
|
-
import { D as DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS, L as ListTasksPage } from './ListTasksPage-
|
|
44
|
+
import { D as DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS, L as ListTasksPage } from './ListTasksPage-a9fab591.esm.js';
|
|
44
45
|
import '@backstage/errors';
|
|
45
46
|
import 'zen-observable';
|
|
47
|
+
import '@backstage/catalog-client';
|
|
46
48
|
import '@material-ui/core/FormControl';
|
|
47
49
|
import '@material-ui/lab/Autocomplete';
|
|
48
50
|
import 'zod';
|
|
@@ -54,6 +56,8 @@ import 'react-use/lib/useEffectOnce';
|
|
|
54
56
|
import '@material-ui/core/Button';
|
|
55
57
|
import '@material-ui/core/useMediaQuery';
|
|
56
58
|
import '@material-ui/icons/AddCircleOutline';
|
|
59
|
+
import '@react-hookz/web';
|
|
60
|
+
import '@material-ui/icons/Cancel';
|
|
57
61
|
import '@material-ui/icons/Repeat';
|
|
58
62
|
import '@material-ui/icons/Toc';
|
|
59
63
|
import 'classnames';
|
|
@@ -62,7 +66,6 @@ import '@material-ui/icons/FontDownload';
|
|
|
62
66
|
import 'luxon';
|
|
63
67
|
import 'humanize-duration';
|
|
64
68
|
import '@material-ui/core/Typography';
|
|
65
|
-
import '@react-hookz/web';
|
|
66
69
|
import '@rjsf/validator-ajv8';
|
|
67
70
|
import '@material-ui/core/Accordion';
|
|
68
71
|
import '@material-ui/core/AccordionDetails';
|
|
@@ -72,7 +75,6 @@ import '@material-ui/icons/ExpandLess';
|
|
|
72
75
|
import '@material-ui/core/List';
|
|
73
76
|
import '@material-ui/core/ListItem';
|
|
74
77
|
import '@material-ui/core/ListItemSecondaryAction';
|
|
75
|
-
import '@material-ui/icons/Cancel';
|
|
76
78
|
import '@material-ui/icons/Check';
|
|
77
79
|
import '@material-ui/icons/Delete';
|
|
78
80
|
import '@material-ui/core/Box';
|
|
@@ -275,11 +277,13 @@ const TemplateCard = ({ template, deprecated }) => {
|
|
|
275
277
|
|
|
276
278
|
const TemplateList = ({
|
|
277
279
|
TemplateCardComponent,
|
|
278
|
-
group
|
|
280
|
+
group,
|
|
281
|
+
templateFilter
|
|
279
282
|
}) => {
|
|
280
283
|
const { loading, error, entities } = useEntityList();
|
|
281
284
|
const Card = TemplateCardComponent || TemplateCard;
|
|
282
|
-
const
|
|
285
|
+
const templateEntities = entities.filter(isTemplateEntityV1beta3);
|
|
286
|
+
const maybeFilteredEntities = (group ? templateEntities.filter(group.filter) : templateEntities).filter((e) => templateFilter ? !templateFilter(e) : true);
|
|
283
287
|
const titleComponent = (() => {
|
|
284
288
|
if (group && group.title) {
|
|
285
289
|
if (typeof group.title === "string") {
|
|
@@ -399,6 +403,7 @@ function ScaffolderPageContextMenu(props) {
|
|
|
399
403
|
const ScaffolderPageContents = ({
|
|
400
404
|
TemplateCardComponent,
|
|
401
405
|
groups,
|
|
406
|
+
templateFilter,
|
|
402
407
|
contextMenu,
|
|
403
408
|
headerOptions
|
|
404
409
|
}) => {
|
|
@@ -439,13 +444,15 @@ const ScaffolderPageContents = ({
|
|
|
439
444
|
{
|
|
440
445
|
key: index,
|
|
441
446
|
TemplateCardComponent,
|
|
442
|
-
group
|
|
447
|
+
group,
|
|
448
|
+
templateFilter
|
|
443
449
|
}
|
|
444
450
|
)), /* @__PURE__ */ React.createElement(
|
|
445
451
|
TemplateList,
|
|
446
452
|
{
|
|
447
453
|
key: "other",
|
|
448
454
|
TemplateCardComponent,
|
|
455
|
+
templateFilter,
|
|
449
456
|
group: otherTemplatesGroup
|
|
450
457
|
}
|
|
451
458
|
)))));
|
|
@@ -453,6 +460,7 @@ const ScaffolderPageContents = ({
|
|
|
453
460
|
const ScaffolderPage = ({
|
|
454
461
|
TemplateCardComponent,
|
|
455
462
|
groups,
|
|
463
|
+
templateFilter,
|
|
456
464
|
contextMenu,
|
|
457
465
|
headerOptions
|
|
458
466
|
}) => /* @__PURE__ */ React.createElement(EntityListProvider, null, /* @__PURE__ */ React.createElement(
|
|
@@ -460,6 +468,7 @@ const ScaffolderPage = ({
|
|
|
460
468
|
{
|
|
461
469
|
TemplateCardComponent,
|
|
462
470
|
groups,
|
|
471
|
+
templateFilter,
|
|
463
472
|
contextMenu,
|
|
464
473
|
headerOptions
|
|
465
474
|
}
|
|
@@ -1478,7 +1487,12 @@ function TemplateEditorPage(props) {
|
|
|
1478
1487
|
}
|
|
1479
1488
|
|
|
1480
1489
|
const Router = (props) => {
|
|
1481
|
-
const {
|
|
1490
|
+
const {
|
|
1491
|
+
groups,
|
|
1492
|
+
templateFilter,
|
|
1493
|
+
components = {},
|
|
1494
|
+
defaultPreviewTemplate
|
|
1495
|
+
} = props;
|
|
1482
1496
|
const { ReviewStepComponent, TemplateCardComponent, TaskPageComponent } = components;
|
|
1483
1497
|
const outlet = useOutlet();
|
|
1484
1498
|
const TaskPageElement = TaskPageComponent != null ? TaskPageComponent : TaskPage;
|
|
@@ -1514,6 +1528,7 @@ const Router = (props) => {
|
|
|
1514
1528
|
ScaffolderPage,
|
|
1515
1529
|
{
|
|
1516
1530
|
groups,
|
|
1531
|
+
templateFilter,
|
|
1517
1532
|
TemplateCardComponent,
|
|
1518
1533
|
contextMenu: props.contextMenu,
|
|
1519
1534
|
headerOptions: props.headerOptions
|
|
@@ -1563,4 +1578,4 @@ const Router = (props) => {
|
|
|
1563
1578
|
};
|
|
1564
1579
|
|
|
1565
1580
|
export { Router };
|
|
1566
|
-
//# sourceMappingURL=Router-
|
|
1581
|
+
//# sourceMappingURL=Router-ea3122d2.esm.js.map
|