@backstage/plugin-scaffolder 1.10.0-next.1 → 1.10.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 CHANGED
@@ -1,5 +1,176 @@
1
1
  # @backstage/plugin-scaffolder
2
2
 
3
+ ## 1.10.0
4
+
5
+ ### Minor Changes
6
+
7
+ - e4c0240445: Added `catalogFilter` field to OwnerPicker and EntityPicker components to support filtering options by any field(s) of an entity.
8
+
9
+ The `allowedKinds` field has been deprecated. Use `catalogFilter` instead. This field allows users to specify a filter on the shape of [EntityFilterQuery](https://github.com/backstage/backstage/blob/774c42003782121d3d6b2aa5f2865d53370c160e/packages/catalog-client/src/types/api.ts#L74), which can be passed into the CatalogClient. See examples below:
10
+
11
+ - Get all entities of kind `Group`
12
+
13
+ ```yaml
14
+ owner:
15
+ title: Owner
16
+ type: string
17
+ description: Owner of the component
18
+ ui:field: OwnerPicker
19
+ ui:options:
20
+ catalogFilter:
21
+ - kind: Group
22
+ ```
23
+
24
+ - Get entities of kind `Group` and spec.type `team`
25
+ ```yaml
26
+ owner:
27
+ title: Owner
28
+ type: string
29
+ description: Owner of the component
30
+ ui:field: OwnerPicker
31
+ ui:options:
32
+ catalogFilter:
33
+ - kind: Group
34
+ spec.type: team
35
+ ```
36
+
37
+ - b4955ed7b9: - **Deprecation** - Deprecated the following exports, please import them directly from `@backstage/plugin-scaffolder-react` instead
38
+
39
+ ```
40
+ createScaffolderFieldExtension
41
+ ScaffolderFieldExtensions
42
+ useTemplateSecrets
43
+ scaffolderApiRef
44
+ ScaffolderApi
45
+ ScaffolderUseTemplateSecrets
46
+ TemplateParameterSchema
47
+ CustomFieldExtensionSchema
48
+ CustomFieldValidator
49
+ FieldExtensionOptions
50
+ FieldExtensionComponentProps
51
+ FieldExtensionComponent
52
+ ListActionsResponse
53
+ LogEvent
54
+ ScaffolderDryRunOptions
55
+ ScaffolderDryRunResponse
56
+ ScaffolderGetIntegrationsListOptions
57
+ ScaffolderGetIntegrationsListResponse
58
+ ScaffolderOutputlink
59
+ ScaffolderScaffoldOptions
60
+ ScaffolderScaffoldResponse
61
+ ScaffolderStreamLogsOptions
62
+ ScaffolderTask
63
+ ScaffolderTaskOutput
64
+ ScaffolderTaskStatus
65
+ ```
66
+
67
+ - **Deprecation** - Deprecated the `rootRouteRef` export, this should now be used from `scaffolderPlugin.routes.root`
68
+
69
+ - The following `/alpha` types have removed from this package and moved to the `@backstage/plugin-scaffolder-react/alpha` package
70
+
71
+ ```
72
+ createNextScaffolderFieldExtension
73
+ FormProps
74
+ NextCustomFieldValidator
75
+ NextFieldExtensionComponentProps
76
+ NextFieldExtensionOptions
77
+ ```
78
+
79
+ ### Patch Changes
80
+
81
+ - 3c112f6967: rollback `@rjsf/validator-ajv8` to `@rjsf/validator-v6`
82
+ - 2fadff2a25: Render the scaffolder action description using the `MarkdownContent` component. This will allow the page to show richer content to describe scaffolder actions.
83
+ - 27a5e90e97: Small updates to some paragraph components to ensure theme typography properties are inherited correctly.
84
+ - 223e2c5f03: add `onChange` handler to`Stepper` component
85
+ - 659c92a1dc: Updated dependency `use-immer` to `^0.8.0`.
86
+ - 489935d625: Show action example yaml on the scaffolder actions documentation page.
87
+ - b8269de9f1: Explicitly declaring children as optional props to facilitate react 18 changes
88
+ - Updated dependencies
89
+ - @backstage/catalog-model@1.1.5
90
+ - @backstage/plugin-scaffolder-common@1.2.4
91
+ - @backstage/catalog-client@1.3.0
92
+ - @backstage/plugin-catalog-react@1.2.4
93
+ - @backstage/core-components@0.12.3
94
+ - @backstage/plugin-scaffolder-react@1.0.0
95
+ - @backstage/core-plugin-api@1.3.0
96
+ - @backstage/plugin-permission-react@0.4.9
97
+ - @backstage/config@1.0.6
98
+ - @backstage/errors@1.1.4
99
+ - @backstage/integration@1.4.2
100
+ - @backstage/integration-react@1.1.9
101
+ - @backstage/theme@0.2.16
102
+ - @backstage/types@1.0.2
103
+ - @backstage/plugin-catalog-common@1.0.10
104
+
105
+ ## 1.10.0-next.2
106
+
107
+ ### Minor Changes
108
+
109
+ - b4955ed7b9: - **Deprecation** - Deprecated the following exports, please import them directly from `@backstage/plugin-scaffolder-react` instead
110
+
111
+ ```
112
+ createScaffolderFieldExtension
113
+ ScaffolderFieldExtensions
114
+ useTemplateSecrets
115
+ scaffolderApiRef
116
+ ScaffolderApi
117
+ ScaffolderUseTemplateSecrets
118
+ TemplateParameterSchema
119
+ CustomFieldExtensionSchema
120
+ CustomFieldValidator
121
+ FieldExtensionOptions
122
+ FieldExtensionComponentProps
123
+ FieldExtensionComponent
124
+ ListActionsResponse
125
+ LogEvent
126
+ ScaffolderDryRunOptions
127
+ ScaffolderDryRunResponse
128
+ ScaffolderGetIntegrationsListOptions
129
+ ScaffolderGetIntegrationsListResponse
130
+ ScaffolderOutputlink
131
+ ScaffolderScaffoldOptions
132
+ ScaffolderScaffoldResponse
133
+ ScaffolderStreamLogsOptions
134
+ ScaffolderTask
135
+ ScaffolderTaskOutput
136
+ ScaffolderTaskStatus
137
+ ```
138
+
139
+ - **Deprecation** - Deprecated the `rootRouteRef` export, this should now be used from `scaffolderPlugin.routes.root`
140
+
141
+ - The following `/alpha` types have removed from this package and moved to the `@backstage/plugin-scaffolder-react/alpha` package
142
+
143
+ ```
144
+ createNextScaffolderFieldExtension
145
+ FormProps
146
+ NextCustomFieldValidator
147
+ NextFieldExtensionComponentProps
148
+ NextFieldExtensionOptions
149
+ ```
150
+
151
+ ### Patch Changes
152
+
153
+ - 2fadff2a25: Render the scaffolder action description using the `MarkdownContent` component. This will allow the page to show richer content to describe scaffolder actions.
154
+ - 659c92a1dc: Updated dependency `use-immer` to `^0.8.0`.
155
+ - 489935d625: Show action example yaml on the scaffolder actions documentation page.
156
+ - b8269de9f1: Explicitly declaring children as optional props to facilitate react 18 changes
157
+ - Updated dependencies
158
+ - @backstage/plugin-scaffolder-react@1.0.0-next.0
159
+ - @backstage/core-plugin-api@1.3.0-next.1
160
+ - @backstage/catalog-client@1.3.0-next.2
161
+ - @backstage/plugin-catalog-react@1.2.4-next.2
162
+ - @backstage/plugin-permission-react@0.4.9-next.1
163
+ - @backstage/catalog-model@1.1.5-next.1
164
+ - @backstage/config@1.0.6-next.0
165
+ - @backstage/core-components@0.12.3-next.2
166
+ - @backstage/errors@1.1.4
167
+ - @backstage/integration@1.4.2-next.0
168
+ - @backstage/integration-react@1.1.9-next.2
169
+ - @backstage/theme@0.2.16
170
+ - @backstage/types@1.0.2
171
+ - @backstage/plugin-catalog-common@1.0.10-next.1
172
+ - @backstage/plugin-scaffolder-common@1.2.4-next.1
173
+
3
174
  ## 1.10.0-next.1
4
175
 
5
176
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-scaffolder",
3
- "version": "1.10.0-next.1",
3
+ "version": "1.10.0",
4
4
  "main": "../dist/index.esm.js",
5
5
  "types": "../dist/index.alpha.d.ts"
6
6
  }
@@ -1,14 +1,14 @@
1
- import React, { useState, useContext, useCallback, createContext, useEffect, useRef, useMemo, Component, Children, Fragment } from 'react';
1
+ import React, { useState, useCallback, Fragment, createContext, useEffect, useContext, useRef, useMemo, Component, Children } from 'react';
2
2
  import { useNavigate, Navigate, useOutlet, Routes, Route } from 'react-router-dom';
3
- import { ItemCardHeader, MarkdownContent, Button, Link, ContentHeader, Progress, WarningPanel, Content, ItemCardGrid, Page, Header, CreateButton, SupportButton, StructuredMetadataTable, InfoCard, ErrorPage, ErrorPanel, LogViewer, StatusError, StatusOK, StatusPending, Lifecycle, EmptyState, Table as Table$1 } from '@backstage/core-components';
3
+ import { ItemCardHeader, MarkdownContent, Button, Link, ContentHeader, Progress, WarningPanel, Content, ItemCardGrid, Page, Header, CreateButton, SupportButton, StructuredMetadataTable, InfoCard, ErrorPage, CodeSnippet, ErrorPanel, LogViewer, StatusError, StatusOK, StatusPending, Lifecycle, EmptyState, Table as Table$1 } from '@backstage/core-components';
4
4
  import { useApp, useRouteRef, useApi, useRouteRefParams, useAnalytics, errorApiRef, featureFlagsApiRef, useApiHolder, AnalyticsContext, alertApiRef, useElementFilter } from '@backstage/core-plugin-api';
5
5
  import { getEntityRelations, getEntitySourceLocation, FavoriteEntity, EntityRefLinks, useEntityList, EntityListProvider, CatalogFilterLayout, EntitySearchBar, EntityKindPicker, UserListPicker, EntityTagPicker, catalogApiRef, humanizeEntityRef, EntityRefLink } from '@backstage/plugin-catalog-react';
6
- import { s as selectedTemplateRouteRef, v as viewTechDocRouteRef, e as editRouteRef, a as actionsRouteRef, b as scaffolderListTaskRouteRef, r as registerComponentRouteRef, T as TemplateTypePicker, S as SecretsContext, c as scaffolderApiRef, d as scaffolderTaskRouteRef, f as rootRouteRef, g as TaskStatusStepper, h as TaskPageLinks, F as FIELD_EXTENSION_WRAPPER_KEY, i as FIELD_EXTENSION_KEY, L as LAYOUTS_WRAPPER_KEY, j as LAYOUTS_KEY, l as legacySelectedTemplateRouteRef, k as SecretsContextProvider, m as TaskPage } from './index-7e25101d.esm.js';
7
6
  import { RELATION_OWNED_BY, parseEntityRef, stringifyEntityRef, DEFAULT_NAMESPACE } from '@backstage/catalog-model';
8
- import { makeStyles, useTheme, Card, CardMedia, CardContent, Box, Typography, Chip, CardActions, Tooltip, IconButton, Paper, Button as Button$1, Stepper, Step, StepLabel, StepContent, LinearProgress, TableContainer, Table, TableHead, TableRow, TableCell, TableBody, FormControl, InputLabel, Select, MenuItem as MenuItem$1, CardHeader, Divider as Divider$1, List as List$2, ListItemIcon as ListItemIcon$1, ListItemText as ListItemText$1 } from '@material-ui/core';
7
+ import { makeStyles, useTheme, Card, CardMedia, CardContent, Box, Typography, Chip, CardActions, Tooltip, IconButton, Paper, Button as Button$1, Stepper, Step, StepLabel, StepContent, LinearProgress, Accordion, AccordionSummary, AccordionDetails, Grid, TableContainer, Table, TableHead, TableRow, TableCell, TableBody, FormControl, InputLabel, Select, MenuItem as MenuItem$1, CardHeader, Divider as Divider$1, List as List$2, ListItemIcon as ListItemIcon$1, ListItemText as ListItemText$1 } from '@material-ui/core';
9
8
  import { scmIntegrationsApiRef, ScmIntegrationIcon } from '@backstage/integration-react';
10
9
  import LanguageIcon from '@material-ui/icons/Language';
11
10
  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, T as TemplateTypePicker, c as scaffolderTaskRouteRef, d as rootRouteRef, f as TaskStatusStepper, g as TaskPageLinks, L as LAYOUTS_WRAPPER_KEY, h as LAYOUTS_KEY, l as legacySelectedTemplateRouteRef, i as TaskPage } from './index-4dbb353c.esm.js';
12
12
  import { catalogEntityCreatePermission } from '@backstage/plugin-catalog-common';
13
13
  import { usePermission } from '@backstage/plugin-permission-react';
14
14
  import IconButton$1 from '@material-ui/core/IconButton';
@@ -24,11 +24,12 @@ import List from '@material-ui/icons/List';
24
24
  import MoreVert from '@material-ui/icons/MoreVert';
25
25
  import qs from 'qs';
26
26
  import useAsync from 'react-use/lib/useAsync';
27
+ import { extractSchemaFromStep, useTemplateSecrets, scaffolderApiRef, useCustomFieldExtensions, SecretsContextProvider } from '@backstage/plugin-scaffolder-react';
27
28
  import { withTheme } from '@rjsf/core';
28
29
  import { Theme } from '@rjsf/material-ui';
29
30
  import cloneDeep from 'lodash/cloneDeep';
30
- import { e as extractSchemaFromStep, D as DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS } from './schema-bfff60e2.esm.js';
31
31
  import classNames from 'classnames';
32
+ import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
32
33
  import { StreamLanguage } from '@codemirror/language';
33
34
  import { yaml as yaml$1 } from '@codemirror/legacy-modes/mode/yaml';
34
35
  import CloseIcon from '@material-ui/icons/Close';
@@ -42,9 +43,9 @@ import CardContent$1 from '@material-ui/core/CardContent';
42
43
  import Tooltip$1 from '@material-ui/core/Tooltip';
43
44
  import Typography$1 from '@material-ui/core/Typography';
44
45
  import InfoOutlinedIcon from '@material-ui/icons/InfoOutlined';
45
- import Accordion from '@material-ui/core/Accordion';
46
- import AccordionDetails from '@material-ui/core/AccordionDetails';
47
- import AccordionSummary from '@material-ui/core/AccordionSummary';
46
+ import Accordion$1 from '@material-ui/core/Accordion';
47
+ import AccordionDetails$1 from '@material-ui/core/AccordionDetails';
48
+ import AccordionSummary$1 from '@material-ui/core/AccordionSummary';
48
49
  import Divider from '@material-ui/core/Divider';
49
50
  import ExpandMoreIcon$1 from '@material-ui/icons/ExpandLess';
50
51
  import List$1 from '@material-ui/core/List';
@@ -57,12 +58,12 @@ import Box$1 from '@material-ui/core/Box';
57
58
  import Tab from '@material-ui/core/Tab';
58
59
  import Tabs from '@material-ui/core/Tabs';
59
60
  import TreeView from '@material-ui/lab/TreeView';
60
- import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
61
61
  import ChevronRightIcon from '@material-ui/icons/ChevronRight';
62
62
  import TreeItem from '@material-ui/lab/TreeItem';
63
63
  import RefreshIcon from '@material-ui/icons/Refresh';
64
64
  import SaveIcon from '@material-ui/icons/Save';
65
65
  import { showPanel } from '@codemirror/view';
66
+ import { D as DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS } from './default-40114591.esm.js';
66
67
  import SettingsIcon from '@material-ui/icons/Settings';
67
68
  import AllIcon from '@material-ui/icons/FontDownload';
68
69
  import { DateTime, Interval } from 'luxon';
@@ -73,14 +74,17 @@ import '@material-ui/core/FormControl';
73
74
  import '@material-ui/lab/Autocomplete';
74
75
  import 'zod';
75
76
  import 'zod-to-json-schema';
76
- import 'react-use/lib/useEffectOnce';
77
- import '@material-ui/lab';
78
77
  import '@material-ui/core/FormHelperText';
79
78
  import '@material-ui/core/Input';
80
79
  import '@material-ui/core/InputLabel';
80
+ import 'react-use/lib/useEffectOnce';
81
+ import '@material-ui/lab';
81
82
  import 'lodash/capitalize';
82
83
  import '@material-ui/icons/CheckBox';
83
84
  import '@material-ui/icons/CheckBoxOutlineBlank';
85
+ import '@material-ui/core/Button';
86
+ import '@material-ui/core/useMediaQuery';
87
+ import '@material-ui/icons/AddCircleOutline';
84
88
  import '@material-ui/core/Grid';
85
89
  import '@material-ui/core/Step';
86
90
  import '@material-ui/core/StepLabel';
@@ -759,7 +763,7 @@ const TemplatePage = ({
759
763
  headerOptions
760
764
  }) => {
761
765
  const apiHolder = useApiHolder();
762
- const secretsContext = useContext(SecretsContext);
766
+ const secretsContext = useTemplateSecrets();
763
767
  const errorApi = useApi(errorApiRef);
764
768
  const scaffolderApi = useApi(scaffolderApiRef);
765
769
  const { templateName, namespace } = useRouteRefParams(
@@ -880,6 +884,19 @@ const useStyles$d = makeStyles((theme) => ({
880
884
  }
881
885
  }
882
886
  }));
887
+ const ExamplesTable = (props) => {
888
+ return /* @__PURE__ */ React.createElement(Grid, { container: true }, props.examples.map((example, index) => {
889
+ return /* @__PURE__ */ React.createElement(Fragment, { key: `example-${index}` }, /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 3 }, /* @__PURE__ */ React.createElement(Box, { padding: 4 }, /* @__PURE__ */ React.createElement(Typography, null, example.description))), /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 9 }, /* @__PURE__ */ React.createElement(Box, { padding: 1 }, /* @__PURE__ */ React.createElement(
890
+ CodeSnippet,
891
+ {
892
+ text: example.example,
893
+ showLineNumbers: true,
894
+ showCopyCodeButton: true,
895
+ language: "yaml"
896
+ }
897
+ ))));
898
+ }));
899
+ };
883
900
  const ActionsPage = () => {
884
901
  const api = useApi(scaffolderApiRef);
885
902
  const classes = useStyles$d();
@@ -910,7 +927,7 @@ const ActionsPage = () => {
910
927
  const codeClassname = classNames(classes.code, {
911
928
  [classes.codeRequired]: (_a = input.required) == null ? void 0 : _a.includes(key)
912
929
  });
913
- return /* @__PURE__ */ React.createElement(TableRow, { key }, /* @__PURE__ */ React.createElement(TableCell, null, /* @__PURE__ */ React.createElement("div", { className: codeClassname }, key)), /* @__PURE__ */ React.createElement(TableCell, null, props.title), /* @__PURE__ */ React.createElement(TableCell, null, props.description), /* @__PURE__ */ React.createElement(TableCell, null, /* @__PURE__ */ React.createElement(React.Fragment, null, [props.type].flat().map((type) => /* @__PURE__ */ React.createElement(Chip, { label: type })))));
930
+ return /* @__PURE__ */ React.createElement(TableRow, { key }, /* @__PURE__ */ React.createElement(TableCell, null, /* @__PURE__ */ React.createElement("div", { className: codeClassname }, key)), /* @__PURE__ */ React.createElement(TableCell, null, props.title), /* @__PURE__ */ React.createElement(TableCell, null, props.description), /* @__PURE__ */ React.createElement(TableCell, null, /* @__PURE__ */ React.createElement(React.Fragment, null, [props.type].flat().map((type) => /* @__PURE__ */ React.createElement(Chip, { label: type, key: type })))));
914
931
  });
915
932
  };
916
933
  const renderTable = (input) => {
@@ -931,7 +948,7 @@ const ActionsPage = () => {
931
948
  return void 0;
932
949
  }
933
950
  const oneOf = renderTables("oneOf", (_b = (_a = action.schema) == null ? void 0 : _a.input) == null ? void 0 : _b.oneOf);
934
- return /* @__PURE__ */ React.createElement(Box, { pb: 4, key: action.id }, /* @__PURE__ */ React.createElement(Typography, { variant: "h4", className: classes.code }, action.id), /* @__PURE__ */ React.createElement(Typography, null, action.description), ((_c = action.schema) == null ? void 0 : _c.input) && /* @__PURE__ */ React.createElement(Box, { pb: 2 }, /* @__PURE__ */ React.createElement(Typography, { variant: "h5" }, "Input"), renderTable(action.schema.input), oneOf), ((_d = action.schema) == null ? void 0 : _d.output) && /* @__PURE__ */ React.createElement(Box, { pb: 2 }, /* @__PURE__ */ React.createElement(Typography, { variant: "h5" }, "Output"), renderTable(action.schema.output)));
951
+ return /* @__PURE__ */ React.createElement(Box, { pb: 4, key: action.id }, /* @__PURE__ */ React.createElement(Typography, { variant: "h4", className: classes.code }, action.id), action.description && /* @__PURE__ */ React.createElement(MarkdownContent, { content: action.description }), ((_c = action.schema) == null ? void 0 : _c.input) && /* @__PURE__ */ React.createElement(Box, { pb: 2 }, /* @__PURE__ */ React.createElement(Typography, { variant: "h5" }, "Input"), renderTable(action.schema.input), oneOf), ((_d = action.schema) == null ? void 0 : _d.output) && /* @__PURE__ */ React.createElement(Box, { pb: 2 }, /* @__PURE__ */ React.createElement(Typography, { variant: "h5" }, "Output"), renderTable(action.schema.output)), action.examples && /* @__PURE__ */ React.createElement(Accordion, null, /* @__PURE__ */ React.createElement(AccordionSummary, { expandIcon: /* @__PURE__ */ React.createElement(ExpandMoreIcon, null) }, /* @__PURE__ */ React.createElement(Typography, { variant: "h5" }, "Examples")), /* @__PURE__ */ React.createElement(AccordionDetails, null, /* @__PURE__ */ React.createElement(Box, { pb: 2 }, /* @__PURE__ */ React.createElement(ExamplesTable, { examples: action.examples })))));
935
952
  });
936
953
  return /* @__PURE__ */ React.createElement(Page, { themeId: "home" }, /* @__PURE__ */ React.createElement(
937
954
  Header,
@@ -1965,7 +1982,7 @@ function DryRunResults() {
1965
1982
  }
1966
1983
  }, [prevResultsLength, resultsLength]);
1967
1984
  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
1968
- Accordion,
1985
+ Accordion$1,
1969
1986
  {
1970
1987
  variant: "outlined",
1971
1988
  expanded,
@@ -1974,7 +1991,7 @@ function DryRunResults() {
1974
1991
  onTransitionEnd: () => resultsLength === 0 && setHidden(true)
1975
1992
  },
1976
1993
  /* @__PURE__ */ React.createElement(
1977
- AccordionSummary,
1994
+ AccordionSummary$1,
1978
1995
  {
1979
1996
  className: classes.header,
1980
1997
  expandIcon: /* @__PURE__ */ React.createElement(ExpandMoreIcon$1, null)
@@ -1982,7 +1999,7 @@ function DryRunResults() {
1982
1999
  /* @__PURE__ */ React.createElement(Typography$1, null, "Dry-run results")
1983
2000
  ),
1984
2001
  /* @__PURE__ */ React.createElement(Divider, { orientation: "horizontal" }),
1985
- /* @__PURE__ */ React.createElement(AccordionDetails, { className: classes.content }, /* @__PURE__ */ React.createElement(DryRunResultsList, null), /* @__PURE__ */ React.createElement(Divider, { orientation: "horizontal" }), /* @__PURE__ */ React.createElement(DryRunResultsView, null))
2002
+ /* @__PURE__ */ React.createElement(AccordionDetails$1, { className: classes.content }, /* @__PURE__ */ React.createElement(DryRunResultsList, null), /* @__PURE__ */ React.createElement(Divider, { orientation: "horizontal" }), /* @__PURE__ */ React.createElement(DryRunResultsView, null))
1986
2003
  ));
1987
2004
  }
1988
2005
 
@@ -2152,6 +2169,7 @@ function TemplateEditorDirectoryEditorTextArea(props) {
2152
2169
  TemplateEditorTextArea.DirectoryEditor = TemplateEditorDirectoryEditorTextArea;
2153
2170
 
2154
2171
  const useStyles$2 = makeStyles({
2172
+ // Reset and fix sizing to make sure scrolling behaves correctly
2155
2173
  root: {
2156
2174
  gridArea: "pageContent",
2157
2175
  display: "grid",
@@ -2462,7 +2480,7 @@ const OwnerListPicker = (props) => {
2462
2480
  const CreatedAtColumn = ({ createdAt }) => {
2463
2481
  const createdAtTime = DateTime.fromISO(createdAt);
2464
2482
  const formatted = Interval.fromDateTimes(createdAtTime, DateTime.local()).toDuration().valueOf();
2465
- return /* @__PURE__ */ React.createElement("p", null, humanizeDuration(formatted, { round: true }), " ago");
2483
+ return /* @__PURE__ */ React.createElement(Typography$1, { paragraph: true }, humanizeDuration(formatted, { round: true }), " ago");
2466
2484
  };
2467
2485
 
2468
2486
  const OwnerEntityColumn = ({ entityRef }) => {
@@ -2473,7 +2491,7 @@ const OwnerEntityColumn = ({ entityRef }) => {
2473
2491
  [catalogApi, entityRef]
2474
2492
  );
2475
2493
  if (!entityRef) {
2476
- return /* @__PURE__ */ React.createElement("p", null, "Unknown");
2494
+ return /* @__PURE__ */ React.createElement(Typography$1, { paragraph: true }, "Unknown");
2477
2495
  }
2478
2496
  if (loading || error) {
2479
2497
  return null;
@@ -2607,14 +2625,7 @@ const Router = (props) => {
2607
2625
  const { ReviewStepComponent, TemplateCardComponent, TaskPageComponent } = components;
2608
2626
  const outlet = useOutlet();
2609
2627
  const TaskPageElement = TaskPageComponent != null ? TaskPageComponent : TaskPage;
2610
- const customFieldExtensions = useElementFilter(
2611
- outlet,
2612
- (elements) => elements.selectByComponentData({
2613
- key: FIELD_EXTENSION_WRAPPER_KEY
2614
- }).findComponentData({
2615
- key: FIELD_EXTENSION_KEY
2616
- })
2617
- );
2628
+ const customFieldExtensions = useCustomFieldExtensions(outlet);
2618
2629
  const fieldExtensions = [
2619
2630
  ...customFieldExtensions,
2620
2631
  ...DEFAULT_SCAFFOLDER_FIELD_EXTENSIONS.filter(
@@ -2635,7 +2646,8 @@ const Router = (props) => {
2635
2646
  const { templateName } = useRouteRefParams(legacySelectedTemplateRouteRef);
2636
2647
  const newLink = useRouteRef(selectedTemplateRouteRef);
2637
2648
  useEffect(
2638
- () => console.warn(
2649
+ () => // eslint-disable-next-line no-console
2650
+ console.warn(
2639
2651
  "The route /template/:templateName is deprecated, please use the new /template/:namespace/:templateName route instead"
2640
2652
  ),
2641
2653
  []
@@ -2699,4 +2711,4 @@ const Router = (props) => {
2699
2711
  };
2700
2712
 
2701
2713
  export { Router };
2702
- //# sourceMappingURL=Router-416b874d.esm.js.map
2714
+ //# sourceMappingURL=Router-77e86b6b.esm.js.map