@backstage/plugin-scaffolder-react 1.20.2-next.0 → 1.21.0-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 +38 -0
- package/dist/alpha.d.ts +35 -8
- package/dist/alpha.esm.js +1 -0
- package/dist/alpha.esm.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/next/blueprints/FormDecoratorBlueprint.esm.js.map +1 -1
- package/dist/next/components/Form/BuiTheme/Form.module.css.esm.js +8 -0
- package/dist/next/components/Form/BuiTheme/Form.module.css.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/index.esm.js +12 -0
- package/dist/next/components/Form/BuiTheme/index.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/ArrayFieldDescriptionTemplate.esm.js +17 -0
- package/dist/next/components/Form/BuiTheme/templates/ArrayFieldDescriptionTemplate.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/ArrayFieldItemTemplate.esm.js +107 -0
- package/dist/next/components/Form/BuiTheme/templates/ArrayFieldItemTemplate.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/ArrayFieldTemplate.esm.js +84 -0
- package/dist/next/components/Form/BuiTheme/templates/ArrayFieldTemplate.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/ArrayFieldTitleTemplate.esm.js +20 -0
- package/dist/next/components/Form/BuiTheme/templates/ArrayFieldTitleTemplate.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/ButtonTemplates.esm.js +83 -0
- package/dist/next/components/Form/BuiTheme/templates/ButtonTemplates.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/DescriptionFieldTemplate.esm.js +19 -0
- package/dist/next/components/Form/BuiTheme/templates/DescriptionFieldTemplate.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/ErrorListTemplate.esm.js +40 -0
- package/dist/next/components/Form/BuiTheme/templates/ErrorListTemplate.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/FieldErrorTemplate.esm.js +14 -0
- package/dist/next/components/Form/BuiTheme/templates/FieldErrorTemplate.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/FieldHelpTemplate.esm.js +15 -0
- package/dist/next/components/Form/BuiTheme/templates/FieldHelpTemplate.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/FieldTemplate.esm.js +66 -0
- package/dist/next/components/Form/BuiTheme/templates/FieldTemplate.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/ObjectFieldTemplate.esm.js +86 -0
- package/dist/next/components/Form/BuiTheme/templates/ObjectFieldTemplate.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/TitleFieldTemplate.esm.js +15 -0
- package/dist/next/components/Form/BuiTheme/templates/TitleFieldTemplate.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/UnsupportedFieldTemplate.esm.js +14 -0
- package/dist/next/components/Form/BuiTheme/templates/UnsupportedFieldTemplate.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/WrapIfAdditionalTemplate.esm.js +57 -0
- package/dist/next/components/Form/BuiTheme/templates/WrapIfAdditionalTemplate.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/templates/index.esm.js +44 -0
- package/dist/next/components/Form/BuiTheme/templates/index.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/BaseInputTemplate.esm.js +73 -0
- package/dist/next/components/Form/BuiTheme/widgets/BaseInputTemplate.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/CheckboxWidget.esm.js +34 -0
- package/dist/next/components/Form/BuiTheme/widgets/CheckboxWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/CheckboxesWidget.esm.js +50 -0
- package/dist/next/components/Form/BuiTheme/widgets/CheckboxesWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/ColorWidget.esm.js +9 -0
- package/dist/next/components/Form/BuiTheme/widgets/ColorWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/DateInput.esm.js +89 -0
- package/dist/next/components/Form/BuiTheme/widgets/DateInput.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/DateTimeWidget.esm.js +9 -0
- package/dist/next/components/Form/BuiTheme/widgets/DateTimeWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/DateWidget.esm.js +9 -0
- package/dist/next/components/Form/BuiTheme/widgets/DateWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/EmailWidget.esm.js +9 -0
- package/dist/next/components/Form/BuiTheme/widgets/EmailWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/FileWidget.esm.js +62 -0
- package/dist/next/components/Form/BuiTheme/widgets/FileWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/HiddenWidget.esm.js +16 -0
- package/dist/next/components/Form/BuiTheme/widgets/HiddenWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/PasswordWidget.esm.js +48 -0
- package/dist/next/components/Form/BuiTheme/widgets/PasswordWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/RadioWidget.esm.js +48 -0
- package/dist/next/components/Form/BuiTheme/widgets/RadioWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/RangeWidget.esm.js +56 -0
- package/dist/next/components/Form/BuiTheme/widgets/RangeWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/SelectWidget.esm.js +73 -0
- package/dist/next/components/Form/BuiTheme/widgets/SelectWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/TextWidget.esm.js +9 -0
- package/dist/next/components/Form/BuiTheme/widgets/TextWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/TextareaWidget.esm.js +90 -0
- package/dist/next/components/Form/BuiTheme/widgets/TextareaWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/TimeWidget.esm.js +9 -0
- package/dist/next/components/Form/BuiTheme/widgets/TimeWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/URLWidget.esm.js +9 -0
- package/dist/next/components/Form/BuiTheme/widgets/URLWidget.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/index.esm.js +42 -0
- package/dist/next/components/Form/BuiTheme/widgets/index.esm.js.map +1 -0
- package/dist/next/components/Form/BuiTheme/widgets/selectOverrides.module.css.esm.js +8 -0
- package/dist/next/components/Form/BuiTheme/widgets/selectOverrides.module.css.esm.js.map +1 -0
- package/dist/next/components/Form/Form.esm.js +16 -8
- package/dist/next/components/Form/Form.esm.js.map +1 -1
- package/dist/next/components/Form/ScaffolderThemeContext.esm.js +8 -0
- package/dist/next/components/Form/ScaffolderThemeContext.esm.js.map +1 -0
- package/dist/next/components/ScaffolderField/ScaffolderField.esm.js +25 -2
- package/dist/next/components/ScaffolderField/ScaffolderField.esm.js.map +1 -1
- package/dist/next/components/Stepper/Stepper.esm.js +12 -19
- package/dist/next/components/Stepper/Stepper.esm.js.map +1 -1
- package/dist/next/components/TemplateCard/CardHeader.esm.js +1 -1
- package/dist/next/components/TemplateCard/TemplateCard.esm.js +5 -67
- package/dist/next/components/TemplateCard/TemplateCard.esm.js.map +1 -1
- package/dist/next/components/TemplateCard/TemplateCardImpl.esm.js +71 -0
- package/dist/next/components/TemplateCard/TemplateCardImpl.esm.js.map +1 -0
- package/dist/next/components/TemplateGroup/TemplateGroup.esm.js +9 -3
- package/dist/next/components/TemplateGroup/TemplateGroup.esm.js.map +1 -1
- package/dist/next/extensions/createScaffolderFormDecorator.esm.js.map +1 -1
- package/dist/node_modules_dist/style-inject/dist/style-inject.es.esm.js +29 -0
- package/dist/node_modules_dist/style-inject/dist/style-inject.es.esm.js.map +1 -0
- package/package.json +15 -12
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { RELATION_OWNED_BY } from '@backstage/catalog-model';
|
|
3
|
+
import { useAnalytics } from '@backstage/core-plugin-api';
|
|
4
|
+
import { getEntityRelations } from '@backstage/plugin-catalog-react';
|
|
5
|
+
import Card from '@material-ui/core/Card';
|
|
6
|
+
import CardActions from '@material-ui/core/CardActions';
|
|
7
|
+
import CardContent from '@material-ui/core/CardContent';
|
|
8
|
+
import Divider from '@material-ui/core/Divider';
|
|
9
|
+
import Grid from '@material-ui/core/Grid';
|
|
10
|
+
import { makeStyles } from '@material-ui/core/styles';
|
|
11
|
+
import { useCallback } from 'react';
|
|
12
|
+
import { CardHeader } from './CardHeader.esm.js';
|
|
13
|
+
import { usePermission } from '@backstage/plugin-permission-react';
|
|
14
|
+
import { taskCreatePermission } from '@backstage/plugin-scaffolder-common/alpha';
|
|
15
|
+
import { TemplateCardContent } from './TemplateCardContent.esm.js';
|
|
16
|
+
import { TemplateCardTags } from './TemplateCardTags.esm.js';
|
|
17
|
+
import { TemplateCardLinks } from './TemplateCardLinks.esm.js';
|
|
18
|
+
import { TemplateCardActions } from './TemplateCardActions.esm.js';
|
|
19
|
+
|
|
20
|
+
const useStyles = makeStyles(() => ({
|
|
21
|
+
actionContainer: { padding: "16px", flex: 1, alignItems: "flex-end" }
|
|
22
|
+
}));
|
|
23
|
+
const TemplateCardImpl = (props) => {
|
|
24
|
+
const { additionalLinks, onSelected, template } = props;
|
|
25
|
+
const styles = useStyles();
|
|
26
|
+
const analytics = useAnalytics();
|
|
27
|
+
const ownedByRelations = getEntityRelations(template, RELATION_OWNED_BY);
|
|
28
|
+
const hasTags = !!template.metadata.tags?.length;
|
|
29
|
+
const hasLinks = !!additionalLinks?.length || !!template.metadata.links?.length;
|
|
30
|
+
const displayDefaultDivider = !hasTags && !hasLinks;
|
|
31
|
+
const { allowed: canCreateTask } = usePermission({
|
|
32
|
+
permission: taskCreatePermission
|
|
33
|
+
});
|
|
34
|
+
const handleChoose = useCallback(() => {
|
|
35
|
+
analytics.captureEvent("click", "Template has been opened");
|
|
36
|
+
onSelected?.();
|
|
37
|
+
}, [analytics, onSelected]);
|
|
38
|
+
return /* @__PURE__ */ jsxs(Card, { children: [
|
|
39
|
+
/* @__PURE__ */ jsx(CardHeader, { template, "data-testid": "template-card-header" }),
|
|
40
|
+
/* @__PURE__ */ jsx(CardContent, { children: /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 2, "data-testid": "template-card-content", children: [
|
|
41
|
+
/* @__PURE__ */ jsx(TemplateCardContent, { template }),
|
|
42
|
+
displayDefaultDivider && /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsx(Divider, { "data-testid": "template-card-separator" }) }),
|
|
43
|
+
hasTags && /* @__PURE__ */ jsx(TemplateCardTags, { template }),
|
|
44
|
+
hasLinks && /* @__PURE__ */ jsx(
|
|
45
|
+
TemplateCardLinks,
|
|
46
|
+
{
|
|
47
|
+
template,
|
|
48
|
+
additionalLinks
|
|
49
|
+
}
|
|
50
|
+
)
|
|
51
|
+
] }) }),
|
|
52
|
+
/* @__PURE__ */ jsx(
|
|
53
|
+
CardActions,
|
|
54
|
+
{
|
|
55
|
+
className: styles.actionContainer,
|
|
56
|
+
"data-testid": "template-card-actions",
|
|
57
|
+
children: /* @__PURE__ */ jsx(
|
|
58
|
+
TemplateCardActions,
|
|
59
|
+
{
|
|
60
|
+
canCreateTask,
|
|
61
|
+
handleChoose,
|
|
62
|
+
ownedByRelations
|
|
63
|
+
}
|
|
64
|
+
)
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
] });
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export { TemplateCardImpl };
|
|
71
|
+
//# sourceMappingURL=TemplateCardImpl.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateCardImpl.esm.js","sources":["../../../../src/next/components/TemplateCard/TemplateCardImpl.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RELATION_OWNED_BY } from '@backstage/catalog-model';\nimport { IconComponent, useAnalytics } from '@backstage/core-plugin-api';\nimport { getEntityRelations } from '@backstage/plugin-catalog-react';\nimport { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport Divider from '@material-ui/core/Divider';\nimport Grid from '@material-ui/core/Grid';\nimport { makeStyles, Theme } from '@material-ui/core/styles';\nimport { useCallback } from 'react';\nimport { CardHeader } from './CardHeader';\nimport { usePermission } from '@backstage/plugin-permission-react';\nimport { taskCreatePermission } from '@backstage/plugin-scaffolder-common/alpha';\nimport { TemplateCardContent } from './TemplateCardContent';\nimport { TemplateCardTags } from './TemplateCardTags';\nimport { TemplateCardLinks } from './TemplateCardLinks';\nimport { TemplateCardActions } from './TemplateCardActions';\n\nconst useStyles = makeStyles<Theme>(() => ({\n actionContainer: { padding: '16px', flex: 1, alignItems: 'flex-end' },\n}));\n\n/**\n * The legacy Props for the `CardComponent` slot in {@link TemplateGroupsProps}.\n * @alpha\n */\nexport interface TemplateCardProps {\n template: TemplateEntityV1beta3;\n additionalLinks?: {\n icon: IconComponent;\n text: string;\n url: string;\n }[];\n onSelected?: (template: TemplateEntityV1beta3) => void;\n}\n\n/**\n * The Props for components used as the swappable {@link TemplateCard}. The\n * surrounding list takes care of binding the template to `onSelected`, so\n * implementations only need to invoke it without arguments.\n * @alpha\n */\nexport interface TemplateCardComponentProps {\n template: TemplateEntityV1beta3;\n additionalLinks?: {\n icon: IconComponent;\n text: string;\n url: string;\n }[];\n onSelected?: () => void;\n}\n\n/**\n * Default implementation of the `TemplateCard`. The exported `TemplateCard`\n * is a swappable wrapper around this component.\n */\nexport const TemplateCardImpl = (props: TemplateCardComponentProps) => {\n const { additionalLinks, onSelected, template } = props;\n const styles = useStyles();\n const analytics = useAnalytics();\n const ownedByRelations = getEntityRelations(template, RELATION_OWNED_BY);\n const hasTags = !!template.metadata.tags?.length;\n const hasLinks =\n !!additionalLinks?.length || !!template.metadata.links?.length;\n const displayDefaultDivider = !hasTags && !hasLinks;\n\n const { allowed: canCreateTask } = usePermission({\n permission: taskCreatePermission,\n });\n const handleChoose = useCallback(() => {\n analytics.captureEvent('click', 'Template has been opened');\n onSelected?.();\n }, [analytics, onSelected]);\n\n return (\n <Card>\n <CardHeader template={template} data-testid=\"template-card-header\" />\n <CardContent>\n <Grid container spacing={2} data-testid=\"template-card-content\">\n <TemplateCardContent template={template} />\n {displayDefaultDivider && (\n <Grid item xs={12}>\n <Divider data-testid=\"template-card-separator\" />\n </Grid>\n )}\n {hasTags && <TemplateCardTags template={template} />}\n {hasLinks && (\n <TemplateCardLinks\n template={template}\n additionalLinks={additionalLinks}\n />\n )}\n </Grid>\n </CardContent>\n <CardActions\n className={styles.actionContainer}\n data-testid=\"template-card-actions\"\n >\n <TemplateCardActions\n canCreateTask={canCreateTask}\n handleChoose={handleChoose}\n ownedByRelations={ownedByRelations}\n />\n </CardActions>\n </Card>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAmCA,MAAM,SAAA,GAAY,WAAkB,OAAO;AAAA,EACzC,iBAAiB,EAAE,OAAA,EAAS,QAAQ,IAAA,EAAM,CAAA,EAAG,YAAY,UAAA;AAC3D,CAAA,CAAE,CAAA;AAoCK,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAAsC;AACrE,EAAA,MAAM,EAAE,eAAA,EAAiB,UAAA,EAAY,QAAA,EAAS,GAAI,KAAA;AAClD,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,YAAY,YAAA,EAAa;AAC/B,EAAA,MAAM,gBAAA,GAAmB,kBAAA,CAAmB,QAAA,EAAU,iBAAiB,CAAA;AACvE,EAAA,MAAM,OAAA,GAAU,CAAC,CAAC,QAAA,CAAS,SAAS,IAAA,EAAM,MAAA;AAC1C,EAAA,MAAM,QAAA,GACJ,CAAC,CAAC,eAAA,EAAiB,UAAU,CAAC,CAAC,QAAA,CAAS,QAAA,CAAS,KAAA,EAAO,MAAA;AAC1D,EAAA,MAAM,qBAAA,GAAwB,CAAC,OAAA,IAAW,CAAC,QAAA;AAE3C,EAAA,MAAM,EAAE,OAAA,EAAS,aAAA,EAAc,GAAI,aAAA,CAAc;AAAA,IAC/C,UAAA,EAAY;AAAA,GACb,CAAA;AACD,EAAA,MAAM,YAAA,GAAe,YAAY,MAAM;AACrC,IAAA,SAAA,CAAU,YAAA,CAAa,SAAS,0BAA0B,CAAA;AAC1D,IAAA,UAAA,IAAa;AAAA,EACf,CAAA,EAAG,CAAC,SAAA,EAAW,UAAU,CAAC,CAAA;AAE1B,EAAA,4BACG,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,QAAA,EAAoB,aAAA,EAAY,sBAAA,EAAuB,CAAA;AAAA,oBACnE,GAAA,CAAC,eACC,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAK,WAAS,IAAA,EAAC,OAAA,EAAS,CAAA,EAAG,aAAA,EAAY,uBAAA,EACtC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,uBAAoB,QAAA,EAAoB,CAAA;AAAA,MACxC,qBAAA,oBACC,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,IAAA,EAAC,EAAA,EAAI,EAAA,EACb,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,aAAA,EAAY,yBAAA,EAA0B,CAAA,EACjD,CAAA;AAAA,MAED,OAAA,oBAAW,GAAA,CAAC,gBAAA,EAAA,EAAiB,QAAA,EAAoB,CAAA;AAAA,MACjD,QAAA,oBACC,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,QAAA;AAAA,UACA;AAAA;AAAA;AACF,KAAA,EAEJ,CAAA,EACF,CAAA;AAAA,oBACA,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,WAAW,MAAA,CAAO,eAAA;AAAA,QAClB,aAAA,EAAY,uBAAA;AAAA,QAEZ,QAAA,kBAAA,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YACC,aAAA;AAAA,YACA,YAAA;AAAA,YACA;AAAA;AAAA;AACF;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -15,7 +15,6 @@ const TemplateGroup = (props) => {
|
|
|
15
15
|
if (templates.length === 0) {
|
|
16
16
|
return null;
|
|
17
17
|
}
|
|
18
|
-
const Card = CardComponent || TemplateCard;
|
|
19
18
|
return /* @__PURE__ */ jsxs(Content, { children: [
|
|
20
19
|
titleComponent,
|
|
21
20
|
/* @__PURE__ */ jsx(ItemCardGrid, { children: templates.map(({ template, additionalLinks }) => /* @__PURE__ */ jsx(
|
|
@@ -24,13 +23,20 @@ const TemplateGroup = (props) => {
|
|
|
24
23
|
attributes: {
|
|
25
24
|
entityRef: stringifyEntityRef(template)
|
|
26
25
|
},
|
|
27
|
-
children: /* @__PURE__ */ jsx(
|
|
28
|
-
|
|
26
|
+
children: CardComponent ? /* @__PURE__ */ jsx(
|
|
27
|
+
CardComponent,
|
|
29
28
|
{
|
|
30
29
|
additionalLinks,
|
|
31
30
|
template,
|
|
32
31
|
onSelected
|
|
33
32
|
}
|
|
33
|
+
) : /* @__PURE__ */ jsx(
|
|
34
|
+
TemplateCard,
|
|
35
|
+
{
|
|
36
|
+
additionalLinks,
|
|
37
|
+
template,
|
|
38
|
+
onSelected: () => onSelected(template)
|
|
39
|
+
}
|
|
34
40
|
)
|
|
35
41
|
},
|
|
36
42
|
stringifyEntityRef(template)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateGroup.esm.js","sources":["../../../../src/next/components/TemplateGroup/TemplateGroup.tsx"],"sourcesContent":["/*\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 { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport { ReactNode, ComponentType } from 'react';\nimport {\n Content,\n ContentHeader,\n ItemCardGrid,\n} from '@backstage/core-components';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\nimport { TemplateCardProps, TemplateCard } from '../TemplateCard';\nimport { AnalyticsContext, IconComponent } from '@backstage/core-plugin-api';\n\n/**\n * The props for the {@link TemplateGroup} component.\n * @alpha\n */\nexport interface TemplateGroupProps {\n templates: {\n template: TemplateEntityV1beta3;\n additionalLinks?: {\n icon: IconComponent;\n text: string;\n url: string;\n }[];\n }[];\n onSelected: (template: TemplateEntityV1beta3) => void;\n title: ReactNode;\n components?: {\n CardComponent?: ComponentType<TemplateCardProps>;\n };\n}\n\n/**\n * The `TemplateGroup` component is used to display a group of templates with a title.\n * @alpha\n */\nexport const TemplateGroup = (props: TemplateGroupProps) => {\n const {\n templates,\n title,\n components: { CardComponent } = {},\n onSelected,\n } = props;\n const titleComponent =\n typeof title === 'string' ? <ContentHeader title={title} /> : title;\n\n if (templates.length === 0) {\n return null;\n }\n\n
|
|
1
|
+
{"version":3,"file":"TemplateGroup.esm.js","sources":["../../../../src/next/components/TemplateGroup/TemplateGroup.tsx"],"sourcesContent":["/*\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 { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common';\nimport { ReactNode, ComponentType } from 'react';\nimport {\n Content,\n ContentHeader,\n ItemCardGrid,\n} from '@backstage/core-components';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\nimport { TemplateCardProps, TemplateCard } from '../TemplateCard';\nimport { AnalyticsContext, IconComponent } from '@backstage/core-plugin-api';\n\n/**\n * The props for the {@link TemplateGroup} component.\n * @alpha\n */\nexport interface TemplateGroupProps {\n templates: {\n template: TemplateEntityV1beta3;\n additionalLinks?: {\n icon: IconComponent;\n text: string;\n url: string;\n }[];\n }[];\n onSelected: (template: TemplateEntityV1beta3) => void;\n title: ReactNode;\n components?: {\n CardComponent?: ComponentType<TemplateCardProps>;\n };\n}\n\n/**\n * The `TemplateGroup` component is used to display a group of templates with a title.\n * @alpha\n */\nexport const TemplateGroup = (props: TemplateGroupProps) => {\n const {\n templates,\n title,\n components: { CardComponent } = {},\n onSelected,\n } = props;\n const titleComponent =\n typeof title === 'string' ? <ContentHeader title={title} /> : title;\n\n if (templates.length === 0) {\n return null;\n }\n\n return (\n <Content>\n {titleComponent}\n <ItemCardGrid>\n {templates.map(({ template, additionalLinks }) => (\n <AnalyticsContext\n attributes={{\n entityRef: stringifyEntityRef(template),\n }}\n key={stringifyEntityRef(template)}\n >\n {CardComponent ? (\n <CardComponent\n additionalLinks={additionalLinks}\n template={template}\n onSelected={onSelected}\n />\n ) : (\n <TemplateCard\n additionalLinks={additionalLinks}\n template={template}\n onSelected={() => onSelected(template)}\n />\n )}\n </AnalyticsContext>\n ))}\n </ItemCardGrid>\n </Content>\n );\n};\n"],"names":[],"mappings":";;;;;;AAkDO,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA8B;AAC1D,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA,EAAY,EAAE,aAAA,EAAc,GAAI,EAAC;AAAA,IACjC;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,iBACJ,OAAO,KAAA,KAAU,2BAAW,GAAA,CAAC,aAAA,EAAA,EAAc,OAAc,CAAA,GAAK,KAAA;AAEhE,EAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,4BACG,OAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,cAAA;AAAA,oBACD,GAAA,CAAC,gBACE,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,EAAE,QAAA,EAAU,iBAAgB,qBAC1C,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAY;AAAA,UACV,SAAA,EAAW,mBAAmB,QAAQ;AAAA,SACxC;AAAA,QAGC,QAAA,EAAA,aAAA,mBACC,GAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,eAAA;AAAA,YACA,QAAA;AAAA,YACA;AAAA;AAAA,SACF,mBAEA,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,eAAA;AAAA,YACA,QAAA;AAAA,YACA,UAAA,EAAY,MAAM,UAAA,CAAW,QAAQ;AAAA;AAAA;AACvC,OAAA;AAAA,MAbG,mBAAmB,QAAQ;AAAA,KAgBnC,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createScaffolderFormDecorator.esm.js","sources":["../../../src/next/extensions/createScaffolderFormDecorator.ts"],"sourcesContent":["/*\n * Copyright 2024 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 { AnyApiRef } from '@backstage/core-plugin-api';\nimport { JsonObject, JsonValue } from '@backstage/types';\nimport { OpaqueFormDecorator } from '@internal/scaffolder';\nimport { z } from 'zod/v3';\n\n/** @alpha */\nexport type ScaffolderFormDecoratorContext<\n TInput extends JsonObject = JsonObject,\n> = {\n input: TInput;\n formState: Record<string, JsonValue>;\n\n setFormState: (\n fn: (currentState: Record<string, JsonValue>) => Record<string, JsonValue>,\n ) => void;\n setSecrets: (\n fn: (currentState: Record<string, string>) => Record<string, string>,\n ) => void;\n};\n\n/** @
|
|
1
|
+
{"version":3,"file":"createScaffolderFormDecorator.esm.js","sources":["../../../src/next/extensions/createScaffolderFormDecorator.ts"],"sourcesContent":["/*\n * Copyright 2024 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 { AnyApiRef } from '@backstage/core-plugin-api';\nimport { JsonObject, JsonValue } from '@backstage/types';\nimport { OpaqueFormDecorator } from '@internal/scaffolder';\nimport { z } from 'zod/v3';\n\n/** @alpha */\nexport type ScaffolderFormDecoratorContext<\n TInput extends JsonObject = JsonObject,\n> = {\n input: TInput;\n formState: Record<string, JsonValue>;\n\n setFormState: (\n fn: (currentState: Record<string, JsonValue>) => Record<string, JsonValue>,\n ) => void;\n setSecrets: (\n fn: (currentState: Record<string, string>) => Record<string, string>,\n ) => void;\n};\n\n/** @public */\nexport type ScaffolderFormDecorator<TInput extends JsonObject = JsonObject> = {\n readonly $$type: '@backstage/scaffolder/FormDecorator';\n readonly id: string;\n readonly TInput: TInput;\n};\n\n/**\n * Method for creating decorators which can be used to collect\n * secrets from the user before submitting to the backend.\n * @alpha\n */\nexport function createScaffolderFormDecorator<\n TInputSchema extends { [key in string]: (zImpl: typeof z) => z.ZodType } = {\n [key in string]: (zImpl: typeof z) => z.ZodType;\n },\n TDeps extends { [key in string]: AnyApiRef } = { [key in string]: AnyApiRef },\n TInput extends JsonObject = {\n [key in keyof TInputSchema]: z.infer<ReturnType<TInputSchema[key]>>;\n },\n>(options: {\n id: string;\n schema?: {\n input?: TInputSchema;\n };\n deps?: TDeps;\n decorator: (\n ctx: ScaffolderFormDecoratorContext<TInput>,\n deps: TDeps extends { [key in string]: AnyApiRef }\n ? { [key in keyof TDeps]: TDeps[key]['T'] }\n : never,\n ) => Promise<void>;\n}): ScaffolderFormDecorator<TInput> {\n return OpaqueFormDecorator.createInstance('v1', {\n ...options,\n TInput: null as unknown as TInput,\n } as {\n id: string;\n schema?: {\n input?: TInputSchema;\n };\n TInput: TInput;\n deps?: TDeps;\n decorator: (\n ctx: ScaffolderFormDecoratorContext,\n deps: { [key in string]: AnyApiRef['T'] },\n ) => Promise<void>;\n });\n}\n"],"names":[],"mappings":";;;AA+CO,SAAS,8BAQd,OAAA,EAYkC;AAClC,EAAA,OAAO,mBAAA,CAAoB,eAAe,IAAA,EAAM;AAAA,IAC9C,GAAG,OAAA;AAAA,IACH,MAAA,EAAQ;AAAA,GAYT,CAAA;AACH;;;;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
function styleInject(css, ref) {
|
|
2
|
+
if ( ref === void 0 ) ref = {};
|
|
3
|
+
var insertAt = ref.insertAt;
|
|
4
|
+
|
|
5
|
+
if (!css || typeof document === 'undefined') { return; }
|
|
6
|
+
|
|
7
|
+
var head = document.head || document.getElementsByTagName('head')[0];
|
|
8
|
+
var style = document.createElement('style');
|
|
9
|
+
style.type = 'text/css';
|
|
10
|
+
|
|
11
|
+
if (insertAt === 'top') {
|
|
12
|
+
if (head.firstChild) {
|
|
13
|
+
head.insertBefore(style, head.firstChild);
|
|
14
|
+
} else {
|
|
15
|
+
head.appendChild(style);
|
|
16
|
+
}
|
|
17
|
+
} else {
|
|
18
|
+
head.appendChild(style);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (style.styleSheet) {
|
|
22
|
+
style.styleSheet.cssText = css;
|
|
23
|
+
} else {
|
|
24
|
+
style.appendChild(document.createTextNode(css));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { styleInject as default };
|
|
29
|
+
//# sourceMappingURL=style-inject.es.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style-inject.es.esm.js","sources":["../../../../../../node_modules/style-inject/dist/style-inject.es.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n"],"names":[],"mappings":"AAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAChC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ;;AAE7B,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,CAAC;;AAEzD,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU;;AAEzB,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AAC/C,IAAI,CAAC,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC7B,IAAI;AACJ,EAAE,CAAC,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3B,EAAE;;AAEF,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG;AAClC,EAAE,CAAC,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACnD,EAAE;AACF;;;;","x_google_ignoreList":[0]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/plugin-scaffolder-react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.21.0-next.1",
|
|
4
4
|
"description": "A frontend library that helps other Backstage plugins interact with the Scaffolder",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "web-library",
|
|
@@ -75,20 +75,22 @@
|
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
77
|
"@backstage/catalog-client": "1.15.1-next.0",
|
|
78
|
-
"@backstage/catalog-model": "1.8.1-next.
|
|
79
|
-
"@backstage/core-components": "0.18.10-next.
|
|
80
|
-
"@backstage/core-plugin-api": "1.12.6-next.
|
|
81
|
-
"@backstage/frontend-plugin-api": "0.17.0-next.
|
|
82
|
-
"@backstage/plugin-catalog-react": "2.1.5-next.
|
|
78
|
+
"@backstage/catalog-model": "1.8.1-next.1",
|
|
79
|
+
"@backstage/core-components": "0.18.10-next.1",
|
|
80
|
+
"@backstage/core-plugin-api": "1.12.6-next.1",
|
|
81
|
+
"@backstage/frontend-plugin-api": "0.17.0-next.1",
|
|
82
|
+
"@backstage/plugin-catalog-react": "2.1.5-next.1",
|
|
83
83
|
"@backstage/plugin-permission-react": "0.5.1-next.0",
|
|
84
|
-
"@backstage/plugin-scaffolder-common": "2.
|
|
84
|
+
"@backstage/plugin-scaffolder-common": "2.2.0-next.1",
|
|
85
85
|
"@backstage/theme": "0.7.3",
|
|
86
86
|
"@backstage/types": "1.2.2",
|
|
87
|
+
"@backstage/ui": "0.15.0-next.3",
|
|
87
88
|
"@backstage/version-bridge": "1.0.12",
|
|
88
89
|
"@material-ui/core": "^4.12.2",
|
|
89
90
|
"@material-ui/icons": "^4.9.1",
|
|
90
91
|
"@material-ui/lab": "4.0.0-alpha.61",
|
|
91
92
|
"@react-hookz/web": "^24.0.0",
|
|
93
|
+
"@remixicon/react": "^4.6.0",
|
|
92
94
|
"@rjsf/core": "5.24.13",
|
|
93
95
|
"@rjsf/material-ui": "5.24.13",
|
|
94
96
|
"@rjsf/utils": "5.24.13",
|
|
@@ -105,6 +107,7 @@
|
|
|
105
107
|
"lodash": "^4.17.21",
|
|
106
108
|
"luxon": "^3.0.0",
|
|
107
109
|
"qs": "^6.9.4",
|
|
110
|
+
"react-aria-components": "^1.14.0",
|
|
108
111
|
"react-use": "^17.2.4",
|
|
109
112
|
"use-immer": "^0.11.0",
|
|
110
113
|
"zen-observable": "^0.10.0",
|
|
@@ -112,12 +115,12 @@
|
|
|
112
115
|
"zod-to-json-schema": "^3.25.1"
|
|
113
116
|
},
|
|
114
117
|
"devDependencies": {
|
|
115
|
-
"@backstage/cli": "0.36.2-next.
|
|
118
|
+
"@backstage/cli": "0.36.2-next.1",
|
|
116
119
|
"@backstage/core-app-api": "1.20.1-next.0",
|
|
117
|
-
"@backstage/frontend-test-utils": "0.5.3-next.
|
|
118
|
-
"@backstage/plugin-catalog": "2.0.5-next.
|
|
120
|
+
"@backstage/frontend-test-utils": "0.5.3-next.1",
|
|
121
|
+
"@backstage/plugin-catalog": "2.0.5-next.1",
|
|
119
122
|
"@backstage/plugin-catalog-common": "1.1.10-next.0",
|
|
120
|
-
"@backstage/plugin-permission-common": "0.9.9-next.
|
|
123
|
+
"@backstage/plugin-permission-common": "0.9.9-next.1",
|
|
121
124
|
"@backstage/test-utils": "1.7.18-next.0",
|
|
122
125
|
"@testing-library/dom": "^10.0.0",
|
|
123
126
|
"@testing-library/jest-dom": "^6.0.0",
|
|
@@ -131,7 +134,7 @@
|
|
|
131
134
|
"swr": "^2.0.0"
|
|
132
135
|
},
|
|
133
136
|
"peerDependencies": {
|
|
134
|
-
"@backstage/frontend-test-utils": "0.5.3-next.
|
|
137
|
+
"@backstage/frontend-test-utils": "0.5.3-next.1",
|
|
135
138
|
"@types/react": "^17.0.0 || ^18.0.0",
|
|
136
139
|
"react": "^17.0.0 || ^18.0.0",
|
|
137
140
|
"react-dom": "^17.0.0 || ^18.0.0",
|