@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,40 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { TranslatableString } from '@rjsf/utils';
|
|
3
|
+
import { Box, Text } from '@backstage/ui';
|
|
4
|
+
|
|
5
|
+
function ErrorListTemplate({ errors, registry }) {
|
|
6
|
+
const { translateString } = registry;
|
|
7
|
+
if (errors.length === 0) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
return /* @__PURE__ */ jsxs(
|
|
11
|
+
Box,
|
|
12
|
+
{
|
|
13
|
+
p: "4",
|
|
14
|
+
mb: "8",
|
|
15
|
+
style: {
|
|
16
|
+
backgroundColor: "var(--bui-bg-danger)",
|
|
17
|
+
border: "1px solid var(--bui-border-danger)",
|
|
18
|
+
borderRadius: "var(--bui-radius-2)"
|
|
19
|
+
},
|
|
20
|
+
children: [
|
|
21
|
+
/* @__PURE__ */ jsx(Text, { as: "h4", variant: "title-small", weight: "bold", color: "danger", children: translateString(TranslatableString.ErrorsLabel) }),
|
|
22
|
+
/* @__PURE__ */ jsx(Box, { mt: "2", pl: "8", children: errors.map((error, i) => /* @__PURE__ */ jsx(
|
|
23
|
+
Box,
|
|
24
|
+
{
|
|
25
|
+
style: {
|
|
26
|
+
display: "list-item",
|
|
27
|
+
listStyleType: "disc",
|
|
28
|
+
marginLeft: "20px"
|
|
29
|
+
},
|
|
30
|
+
children: /* @__PURE__ */ jsx(Text, { variant: "body-small", color: "danger", children: error.stack })
|
|
31
|
+
},
|
|
32
|
+
i
|
|
33
|
+
)) })
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export { ErrorListTemplate as default };
|
|
40
|
+
//# sourceMappingURL=ErrorListTemplate.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorListTemplate.esm.js","sources":["../../../../../../src/next/components/Form/BuiTheme/templates/ErrorListTemplate.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 ErrorListProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n} from '@rjsf/utils';\nimport { Box, Text } from '@backstage/ui';\n\nexport default function ErrorListTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({ errors, registry }: ErrorListProps<T, S, F>) {\n const { translateString } = registry;\n\n if (errors.length === 0) {\n return null;\n }\n\n return (\n <Box\n p=\"4\"\n mb=\"8\"\n style={{\n backgroundColor: 'var(--bui-bg-danger)',\n border: '1px solid var(--bui-border-danger)',\n borderRadius: 'var(--bui-radius-2)',\n }}\n >\n <Text as=\"h4\" variant=\"title-small\" weight=\"bold\" color=\"danger\">\n {translateString(TranslatableString.ErrorsLabel)}\n </Text>\n <Box mt=\"2\" pl=\"8\">\n {errors.map((error, i) => (\n <Box\n key={i}\n style={{\n display: 'list-item',\n listStyleType: 'disc',\n marginLeft: '20px',\n }}\n >\n <Text variant=\"body-small\" color=\"danger\">\n {error.stack}\n </Text>\n </Box>\n ))}\n </Box>\n </Box>\n );\n}\n"],"names":[],"mappings":";;;;AAwBA,SAAwB,iBAAA,CAItB,EAAE,MAAA,EAAQ,QAAA,EAAS,EAA4B;AAC/C,EAAA,MAAM,EAAE,iBAAgB,GAAI,QAAA;AAE5B,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,CAAA,EAAE,GAAA;AAAA,MACF,EAAA,EAAG,GAAA;AAAA,MACH,KAAA,EAAO;AAAA,QACL,eAAA,EAAiB,sBAAA;AAAA,QACjB,MAAA,EAAQ,oCAAA;AAAA,QACR,YAAA,EAAc;AAAA,OAChB;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAG,IAAA,EAAK,OAAA,EAAQ,aAAA,EAAc,MAAA,EAAO,MAAA,EAAO,KAAA,EAAM,QAAA,EACrD,QAAA,EAAA,eAAA,CAAgB,kBAAA,CAAmB,WAAW,CAAA,EACjD,CAAA;AAAA,wBACA,GAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAG,GAAA,EAAI,EAAA,EAAG,KACZ,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,CAAA,qBAClB,GAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EAAO;AAAA,cACL,OAAA,EAAS,WAAA;AAAA,cACT,aAAA,EAAe,MAAA;AAAA,cACf,UAAA,EAAY;AAAA,aACd;AAAA,YAEA,8BAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,cAAa,KAAA,EAAM,QAAA,EAC9B,gBAAM,KAAA,EACT;AAAA,WAAA;AAAA,UATK;AAAA,SAWR,CAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { errorId } from '@rjsf/utils';
|
|
3
|
+
import { Text } from '@backstage/ui';
|
|
4
|
+
|
|
5
|
+
function FieldErrorTemplate({ errors = [], idSchema }) {
|
|
6
|
+
if (errors.length === 0) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const id = errorId(idSchema);
|
|
10
|
+
return /* @__PURE__ */ jsx("div", { id, children: errors.map((error, i) => /* @__PURE__ */ jsx(Text, { as: "div", variant: "body-small", color: "danger", children: error }, i)) });
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { FieldErrorTemplate as default };
|
|
14
|
+
//# sourceMappingURL=FieldErrorTemplate.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FieldErrorTemplate.esm.js","sources":["../../../../../../src/next/components/Form/BuiTheme/templates/FieldErrorTemplate.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 errorId,\n FieldErrorProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\nimport { Text } from '@backstage/ui';\n\nexport default function FieldErrorTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({ errors = [], idSchema }: FieldErrorProps<T, S, F>) {\n if (errors.length === 0) {\n return null;\n }\n\n const id = errorId<T>(idSchema);\n\n return (\n <div id={id}>\n {errors.map((error, i) => (\n <Text key={i} as=\"div\" variant=\"body-small\" color=\"danger\">\n {error}\n </Text>\n ))}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;AAwBA,SAAwB,mBAItB,EAAE,MAAA,GAAS,EAAC,EAAG,UAAS,EAA6B;AACrD,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,EAAA,GAAK,QAAW,QAAQ,CAAA;AAE9B,EAAA,2BACG,KAAA,EAAA,EAAI,EAAA,EACF,iBAAO,GAAA,CAAI,CAAC,OAAO,CAAA,qBAClB,GAAA,CAAC,QAAa,EAAA,EAAG,KAAA,EAAM,SAAQ,YAAA,EAAa,KAAA,EAAM,UAC/C,QAAA,EAAA,KAAA,EAAA,EADQ,CAEX,CACD,CAAA,EACH,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { isValidElement } from 'react';
|
|
3
|
+
import { helpId } from '@rjsf/utils';
|
|
4
|
+
import { Text } from '@backstage/ui';
|
|
5
|
+
|
|
6
|
+
function FieldHelpTemplate({ idSchema, help }) {
|
|
7
|
+
if (!help) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
const id = helpId(idSchema);
|
|
11
|
+
return /* @__PURE__ */ jsx("div", { id, style: { marginTop: "var(--bui-space-1)" }, children: isValidElement(help) ? help : /* @__PURE__ */ jsx(Text, { variant: "body-small", color: "secondary", children: help }) });
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { FieldHelpTemplate as default };
|
|
15
|
+
//# sourceMappingURL=FieldHelpTemplate.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FieldHelpTemplate.esm.js","sources":["../../../../../../src/next/components/Form/BuiTheme/templates/FieldHelpTemplate.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 { isValidElement } from 'react';\nimport {\n FieldHelpProps,\n FormContextType,\n helpId,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\nimport { Text } from '@backstage/ui';\n\nexport default function FieldHelpTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({ idSchema, help }: FieldHelpProps<T, S, F>) {\n if (!help) {\n return null;\n }\n\n const id = helpId<T>(idSchema);\n\n return (\n <div id={id} style={{ marginTop: 'var(--bui-space-1)' }}>\n {isValidElement(help) ? (\n help\n ) : (\n <Text variant=\"body-small\" color=\"secondary\">\n {help}\n </Text>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;AAyBA,SAAwB,iBAAA,CAItB,EAAE,QAAA,EAAU,IAAA,EAAK,EAA4B;AAC7C,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,EAAA,GAAK,OAAU,QAAQ,CAAA;AAE7B,EAAA,2BACG,KAAA,EAAA,EAAI,EAAA,EAAQ,OAAO,EAAE,SAAA,EAAW,sBAAqB,EACnD,QAAA,EAAA,cAAA,CAAe,IAAI,CAAA,GAClB,IAAA,uBAEC,IAAA,EAAA,EAAK,OAAA,EAAQ,cAAa,KAAA,EAAM,WAAA,EAC9B,gBACH,CAAA,EAEJ,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { getUiOptions, getTemplate } from '@rjsf/utils';
|
|
3
|
+
import { Box } from '@backstage/ui';
|
|
4
|
+
import { ScaffolderField } from '../../../ScaffolderField/ScaffolderField.esm.js';
|
|
5
|
+
|
|
6
|
+
function FieldTemplate(props) {
|
|
7
|
+
const {
|
|
8
|
+
id,
|
|
9
|
+
children,
|
|
10
|
+
classNames,
|
|
11
|
+
style,
|
|
12
|
+
disabled,
|
|
13
|
+
displayLabel,
|
|
14
|
+
hidden,
|
|
15
|
+
label,
|
|
16
|
+
onDropPropertyClick,
|
|
17
|
+
onKeyChange,
|
|
18
|
+
readonly,
|
|
19
|
+
registry,
|
|
20
|
+
required,
|
|
21
|
+
rawErrors = [],
|
|
22
|
+
errors,
|
|
23
|
+
help,
|
|
24
|
+
rawDescription,
|
|
25
|
+
schema,
|
|
26
|
+
uiSchema
|
|
27
|
+
} = props;
|
|
28
|
+
const uiOptions = getUiOptions(uiSchema);
|
|
29
|
+
const WrapIfAdditionalTemplate = getTemplate("WrapIfAdditionalTemplate", registry, uiOptions);
|
|
30
|
+
if (hidden) {
|
|
31
|
+
return /* @__PURE__ */ jsx(Box, { display: "none", children });
|
|
32
|
+
}
|
|
33
|
+
return /* @__PURE__ */ jsx(
|
|
34
|
+
WrapIfAdditionalTemplate,
|
|
35
|
+
{
|
|
36
|
+
classNames,
|
|
37
|
+
style,
|
|
38
|
+
disabled,
|
|
39
|
+
id,
|
|
40
|
+
label,
|
|
41
|
+
onDropPropertyClick,
|
|
42
|
+
onKeyChange,
|
|
43
|
+
readonly,
|
|
44
|
+
required,
|
|
45
|
+
schema,
|
|
46
|
+
uiSchema,
|
|
47
|
+
registry,
|
|
48
|
+
children: /* @__PURE__ */ jsx(
|
|
49
|
+
ScaffolderField,
|
|
50
|
+
{
|
|
51
|
+
displayLabel,
|
|
52
|
+
rawErrors,
|
|
53
|
+
help,
|
|
54
|
+
disabled,
|
|
55
|
+
rawDescription,
|
|
56
|
+
errors,
|
|
57
|
+
required,
|
|
58
|
+
children
|
|
59
|
+
}
|
|
60
|
+
)
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export { FieldTemplate as default };
|
|
66
|
+
//# sourceMappingURL=FieldTemplate.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FieldTemplate.esm.js","sources":["../../../../../../src/next/components/Form/BuiTheme/templates/FieldTemplate.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 {\n FieldTemplateProps,\n FormContextType,\n getTemplate,\n getUiOptions,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\nimport { Box } from '@backstage/ui';\nimport { ScaffolderField } from '../../../ScaffolderField';\n\nexport default function FieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldTemplateProps<T, S, F>) {\n const {\n id,\n children,\n classNames,\n style,\n disabled,\n displayLabel,\n hidden,\n label,\n onDropPropertyClick,\n onKeyChange,\n readonly,\n registry,\n required,\n rawErrors = [],\n errors,\n help,\n rawDescription,\n schema,\n uiSchema,\n } = props;\n\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const WrapIfAdditionalTemplate = getTemplate<\n 'WrapIfAdditionalTemplate',\n T,\n S,\n F\n >('WrapIfAdditionalTemplate', registry, uiOptions);\n\n if (hidden) {\n return <Box display=\"none\">{children}</Box>;\n }\n\n return (\n <WrapIfAdditionalTemplate\n classNames={classNames}\n style={style}\n disabled={disabled}\n id={id}\n label={label}\n onDropPropertyClick={onDropPropertyClick}\n onKeyChange={onKeyChange}\n readonly={readonly}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n >\n <ScaffolderField\n displayLabel={displayLabel}\n rawErrors={rawErrors}\n help={help}\n disabled={disabled}\n rawDescription={rawDescription}\n errors={errors}\n required={required}\n >\n {children}\n </ScaffolderField>\n </WrapIfAdditionalTemplate>\n );\n}\n"],"names":[],"mappings":";;;;;AA0BA,SAAwB,cAItB,KAAA,EAAoC;AACpC,EAAA,MAAM;AAAA,IACJ,EAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,mBAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAY,EAAC;AAAA,IACb,MAAA;AAAA,IACA,IAAA;AAAA,IACA,cAAA;AAAA,IACA,MAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,SAAA,GAAY,aAAsB,QAAQ,CAAA;AAChD,EAAA,MAAM,wBAAA,GAA2B,WAAA,CAK/B,0BAAA,EAA4B,QAAA,EAAU,SAAS,CAAA;AAEjD,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,uBAAO,GAAA,CAAC,GAAA,EAAA,EAAI,OAAA,EAAQ,MAAA,EAAQ,QAAA,EAAS,CAAA;AAAA,EACvC;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,wBAAA;AAAA,IAAA;AAAA,MACC,UAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,EAAA;AAAA,MACA,KAAA;AAAA,MACA,mBAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,YAAA;AAAA,UACA,SAAA;AAAA,UACA,IAAA;AAAA,UACA,QAAA;AAAA,UACA,cAAA;AAAA,UACA,MAAA;AAAA,UACA,QAAA;AAAA,UAEC;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { getUiOptions, getTemplate, canExpand } from '@rjsf/utils';
|
|
3
|
+
import { Box } from '@backstage/ui';
|
|
4
|
+
|
|
5
|
+
function ObjectFieldTemplate({
|
|
6
|
+
description,
|
|
7
|
+
title,
|
|
8
|
+
properties,
|
|
9
|
+
required,
|
|
10
|
+
disabled,
|
|
11
|
+
readonly,
|
|
12
|
+
uiSchema,
|
|
13
|
+
idSchema,
|
|
14
|
+
schema,
|
|
15
|
+
formData,
|
|
16
|
+
onAddClick,
|
|
17
|
+
registry
|
|
18
|
+
}) {
|
|
19
|
+
const uiOptions = getUiOptions(uiSchema);
|
|
20
|
+
const TitleFieldTemplate = getTemplate(
|
|
21
|
+
"TitleFieldTemplate",
|
|
22
|
+
registry,
|
|
23
|
+
uiOptions
|
|
24
|
+
);
|
|
25
|
+
const DescriptionFieldTemplate = getTemplate("DescriptionFieldTemplate", registry, uiOptions);
|
|
26
|
+
const {
|
|
27
|
+
ButtonTemplates: { AddButton }
|
|
28
|
+
} = registry.templates;
|
|
29
|
+
const isNested = idSchema.$id !== "root" && (idSchema.$id.includes(".") || idSchema.$id.includes("_"));
|
|
30
|
+
const isRoot = idSchema.$id === "root";
|
|
31
|
+
const hasTitle = !isRoot && (uiOptions.title || title);
|
|
32
|
+
const hasDescription = !isRoot && (uiOptions.description || description);
|
|
33
|
+
const isAutoGeneratedTitle = title && /^.+-\d+$/.test(title);
|
|
34
|
+
if (isNested || isAutoGeneratedTitle) {
|
|
35
|
+
return /* @__PURE__ */ jsxs(Box, { children: [
|
|
36
|
+
properties.map((element) => element.content),
|
|
37
|
+
canExpand(schema, uiSchema, formData) && /* @__PURE__ */ jsx(Box, { mt: "3", children: /* @__PURE__ */ jsx(
|
|
38
|
+
AddButton,
|
|
39
|
+
{
|
|
40
|
+
onClick: onAddClick(schema),
|
|
41
|
+
disabled: disabled || readonly,
|
|
42
|
+
className: "object-property-expand",
|
|
43
|
+
uiSchema,
|
|
44
|
+
registry
|
|
45
|
+
}
|
|
46
|
+
) })
|
|
47
|
+
] });
|
|
48
|
+
}
|
|
49
|
+
return /* @__PURE__ */ jsxs(Box, { children: [
|
|
50
|
+
hasTitle && /* @__PURE__ */ jsx(
|
|
51
|
+
TitleFieldTemplate,
|
|
52
|
+
{
|
|
53
|
+
id: `${idSchema.$id}__title`,
|
|
54
|
+
title: title || uiOptions.title,
|
|
55
|
+
required,
|
|
56
|
+
schema,
|
|
57
|
+
uiSchema,
|
|
58
|
+
registry
|
|
59
|
+
}
|
|
60
|
+
),
|
|
61
|
+
hasDescription && /* @__PURE__ */ jsx(
|
|
62
|
+
DescriptionFieldTemplate,
|
|
63
|
+
{
|
|
64
|
+
id: `${idSchema.$id}__description`,
|
|
65
|
+
description: uiOptions.description || description,
|
|
66
|
+
schema,
|
|
67
|
+
uiSchema,
|
|
68
|
+
registry
|
|
69
|
+
}
|
|
70
|
+
),
|
|
71
|
+
properties.map((element) => element.content),
|
|
72
|
+
canExpand(schema, uiSchema, formData) && /* @__PURE__ */ jsx(Box, { mt: "3", children: /* @__PURE__ */ jsx(
|
|
73
|
+
AddButton,
|
|
74
|
+
{
|
|
75
|
+
onClick: onAddClick(schema),
|
|
76
|
+
disabled: disabled || readonly,
|
|
77
|
+
className: "object-property-expand",
|
|
78
|
+
uiSchema,
|
|
79
|
+
registry
|
|
80
|
+
}
|
|
81
|
+
) })
|
|
82
|
+
] });
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export { ObjectFieldTemplate as default };
|
|
86
|
+
//# sourceMappingURL=ObjectFieldTemplate.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectFieldTemplate.esm.js","sources":["../../../../../../src/next/components/Form/BuiTheme/templates/ObjectFieldTemplate.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 {\n canExpand,\n FormContextType,\n getTemplate,\n getUiOptions,\n ObjectFieldTemplateProps,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\nimport { Box } from '@backstage/ui';\n\nexport default function ObjectFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({\n description,\n title,\n properties,\n required,\n disabled,\n readonly,\n uiSchema,\n idSchema,\n schema,\n formData,\n onAddClick,\n registry,\n}: ObjectFieldTemplateProps<T, S, F>) {\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const TitleFieldTemplate = getTemplate<'TitleFieldTemplate', T, S, F>(\n 'TitleFieldTemplate',\n registry,\n uiOptions,\n );\n const DescriptionFieldTemplate = getTemplate<\n 'DescriptionFieldTemplate',\n T,\n S,\n F\n >('DescriptionFieldTemplate', registry, uiOptions);\n const {\n ButtonTemplates: { AddButton },\n } = registry.templates;\n\n const isNested =\n idSchema.$id !== 'root' &&\n (idSchema.$id.includes('.') || idSchema.$id.includes('_'));\n\n const isRoot = idSchema.$id === 'root';\n const hasTitle = !isRoot && (uiOptions.title || title);\n const hasDescription = !isRoot && (uiOptions.description || description);\n\n const isAutoGeneratedTitle = title && /^.+-\\d+$/.test(title);\n\n if (isNested || isAutoGeneratedTitle) {\n return (\n <Box>\n {properties.map(element => element.content)}\n {canExpand<T, S, F>(schema, uiSchema, formData) && (\n <Box mt=\"3\">\n <AddButton\n onClick={onAddClick(schema)}\n disabled={disabled || readonly}\n className=\"object-property-expand\"\n uiSchema={uiSchema}\n registry={registry}\n />\n </Box>\n )}\n </Box>\n );\n }\n\n return (\n <Box>\n {hasTitle && (\n <TitleFieldTemplate\n id={`${idSchema.$id}__title`}\n title={(title || uiOptions.title) as string}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {hasDescription && (\n <DescriptionFieldTemplate\n id={`${idSchema.$id}__description`}\n description={uiOptions.description || description!}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {properties.map(element => element.content)}\n {canExpand<T, S, F>(schema, uiSchema, formData) && (\n <Box mt=\"3\">\n <AddButton\n onClick={onAddClick(schema)}\n disabled={disabled || readonly}\n className=\"object-property-expand\"\n uiSchema={uiSchema}\n registry={registry}\n />\n </Box>\n )}\n </Box>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { Box, Text } from '@backstage/ui';
|
|
3
|
+
|
|
4
|
+
function TitleFieldTemplate({ id, title, required }) {
|
|
5
|
+
return /* @__PURE__ */ jsx(Box, { mb: "3", children: /* @__PURE__ */ jsxs(Text, { id, as: "h3", variant: "title-small", weight: "bold", children: [
|
|
6
|
+
title,
|
|
7
|
+
required && /* @__PURE__ */ jsxs(Text, { as: "span", color: "danger", children: [
|
|
8
|
+
" ",
|
|
9
|
+
"*"
|
|
10
|
+
] })
|
|
11
|
+
] }) });
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { TitleFieldTemplate as default };
|
|
15
|
+
//# sourceMappingURL=TitleFieldTemplate.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TitleFieldTemplate.esm.js","sources":["../../../../../../src/next/components/Form/BuiTheme/templates/TitleFieldTemplate.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 {\n FormContextType,\n TitleFieldProps,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\nimport { Box, Text } from '@backstage/ui';\n\nexport default function TitleFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({ id, title, required }: TitleFieldProps<T, S, F>) {\n return (\n <Box mb=\"3\">\n <Text id={id} as=\"h3\" variant=\"title-small\" weight=\"bold\">\n {title}\n {required && (\n <Text as=\"span\" color=\"danger\">\n {' '}\n *\n </Text>\n )}\n </Text>\n </Box>\n );\n}\n"],"names":[],"mappings":";;;AAuBA,SAAwB,kBAAA,CAItB,EAAE,EAAA,EAAI,KAAA,EAAO,UAAS,EAA6B;AACnD,EAAA,uBACE,GAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAG,GAAA,EACN,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAQ,EAAA,EAAG,IAAA,EAAK,OAAA,EAAQ,aAAA,EAAc,MAAA,EAAO,MAAA,EAChD,QAAA,EAAA;AAAA,IAAA,KAAA;AAAA,IACA,4BACC,IAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAG,MAAA,EAAO,OAAM,QAAA,EACnB,QAAA,EAAA;AAAA,MAAA,GAAA;AAAA,MAAI;AAAA,KAAA,EAEP;AAAA,GAAA,EAEJ,CAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { Box, Text } from '@backstage/ui';
|
|
3
|
+
|
|
4
|
+
function UnsupportedFieldTemplate(props) {
|
|
5
|
+
const { schema, reason } = props;
|
|
6
|
+
return /* @__PURE__ */ jsx(Box, { p: "3", style: { backgroundColor: "var(--bui-bg-neutral-3)" }, children: /* @__PURE__ */ jsxs(Text, { variant: "body-small", color: "danger", children: [
|
|
7
|
+
"Unsupported field schema",
|
|
8
|
+
schema && schema.type && ` for type: ${JSON.stringify(schema.type)}`,
|
|
9
|
+
reason && `: ${reason}`
|
|
10
|
+
] }) });
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { UnsupportedFieldTemplate as default };
|
|
14
|
+
//# sourceMappingURL=UnsupportedFieldTemplate.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnsupportedFieldTemplate.esm.js","sources":["../../../../../../src/next/components/Form/BuiTheme/templates/UnsupportedFieldTemplate.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 UnsupportedFieldProps,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\nimport { Box, Text } from '@backstage/ui';\n\nexport default function UnsupportedFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: UnsupportedFieldProps<T, S, F>) {\n const { schema, reason } = props;\n return (\n <Box p=\"3\" style={{ backgroundColor: 'var(--bui-bg-neutral-3)' }}>\n <Text variant=\"body-small\" color=\"danger\">\n Unsupported field schema\n {schema && schema.type && ` for type: ${JSON.stringify(schema.type)}`}\n {reason && `: ${reason}`}\n </Text>\n </Box>\n );\n}\n"],"names":[],"mappings":";;;AAuBA,SAAwB,yBAItB,KAAA,EAAuC;AACvC,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAO,GAAI,KAAA;AAC3B,EAAA,uBACE,GAAA,CAAC,GAAA,EAAA,EAAI,CAAA,EAAE,GAAA,EAAI,OAAO,EAAE,eAAA,EAAiB,yBAAA,EAA0B,EAC7D,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,YAAA,EAAa,OAAM,QAAA,EAAS,QAAA,EAAA;AAAA,IAAA,0BAAA;AAAA,IAEvC,MAAA,IAAU,OAAO,IAAA,IAAQ,CAAA,WAAA,EAAc,KAAK,SAAA,CAAU,MAAA,CAAO,IAAI,CAAC,CAAA,CAAA;AAAA,IAClE,MAAA,IAAU,KAAK,MAAM,CAAA;AAAA,GAAA,EACxB,CAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { ADDITIONAL_PROPERTY_FLAG } from '@rjsf/utils';
|
|
3
|
+
import { Box, Flex, TextField, Button } from '@backstage/ui';
|
|
4
|
+
import { RiDeleteBinLine } from '@remixicon/react';
|
|
5
|
+
|
|
6
|
+
function WrapIfAdditionalTemplate({
|
|
7
|
+
children,
|
|
8
|
+
classNames,
|
|
9
|
+
style,
|
|
10
|
+
disabled,
|
|
11
|
+
id,
|
|
12
|
+
label,
|
|
13
|
+
onDropPropertyClick,
|
|
14
|
+
onKeyChange,
|
|
15
|
+
readonly,
|
|
16
|
+
required,
|
|
17
|
+
schema
|
|
18
|
+
}) {
|
|
19
|
+
const keyLabel = `${label} Key`;
|
|
20
|
+
const additional = ADDITIONAL_PROPERTY_FLAG in schema;
|
|
21
|
+
if (!additional) {
|
|
22
|
+
return /* @__PURE__ */ jsx(Box, { className: classNames, style, children });
|
|
23
|
+
}
|
|
24
|
+
const handleChange = (value) => {
|
|
25
|
+
onKeyChange(value);
|
|
26
|
+
};
|
|
27
|
+
return /* @__PURE__ */ jsx(Box, { className: classNames, style, children: /* @__PURE__ */ jsxs(Flex, { align: "start", gap: "4", children: [
|
|
28
|
+
/* @__PURE__ */ jsxs(Box, { style: { flex: 1 }, children: [
|
|
29
|
+
/* @__PURE__ */ jsx(Box, { mb: "4", children: /* @__PURE__ */ jsx(
|
|
30
|
+
TextField,
|
|
31
|
+
{
|
|
32
|
+
id: `${id}-key`,
|
|
33
|
+
label: keyLabel,
|
|
34
|
+
secondaryLabel: required ? "Required" : void 0,
|
|
35
|
+
defaultValue: label,
|
|
36
|
+
isDisabled: disabled || readonly,
|
|
37
|
+
onChange: handleChange
|
|
38
|
+
}
|
|
39
|
+
) }),
|
|
40
|
+
children
|
|
41
|
+
] }),
|
|
42
|
+
/* @__PURE__ */ jsx(
|
|
43
|
+
Button,
|
|
44
|
+
{
|
|
45
|
+
variant: "tertiary",
|
|
46
|
+
size: "small",
|
|
47
|
+
isDisabled: disabled || readonly,
|
|
48
|
+
onClick: onDropPropertyClick(label),
|
|
49
|
+
iconStart: /* @__PURE__ */ jsx(RiDeleteBinLine, {}),
|
|
50
|
+
"aria-label": "Remove"
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
] }) });
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export { WrapIfAdditionalTemplate as default };
|
|
57
|
+
//# sourceMappingURL=WrapIfAdditionalTemplate.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WrapIfAdditionalTemplate.esm.js","sources":["../../../../../../src/next/components/Form/BuiTheme/templates/WrapIfAdditionalTemplate.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 ADDITIONAL_PROPERTY_FLAG,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n WrapIfAdditionalTemplateProps,\n} from '@rjsf/utils';\nimport { Button, Flex, Box, TextField } from '@backstage/ui';\nimport { RiDeleteBinLine } from '@remixicon/react';\n\nexport default function WrapIfAdditionalTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({\n children,\n classNames,\n style,\n disabled,\n id,\n label,\n onDropPropertyClick,\n onKeyChange,\n readonly,\n required,\n schema,\n}: WrapIfAdditionalTemplateProps<T, S, F>) {\n const keyLabel = `${label} Key`;\n const additional = ADDITIONAL_PROPERTY_FLAG in schema;\n\n if (!additional) {\n return (\n <Box className={classNames} style={style}>\n {children}\n </Box>\n );\n }\n\n const handleChange = (value: string) => {\n onKeyChange(value);\n };\n\n return (\n <Box className={classNames} style={style}>\n <Flex align=\"start\" gap=\"4\">\n <Box style={{ flex: 1 }}>\n <Box mb=\"4\">\n <TextField\n id={`${id}-key`}\n label={keyLabel}\n secondaryLabel={required ? 'Required' : undefined}\n defaultValue={label}\n isDisabled={disabled || readonly}\n onChange={handleChange}\n />\n </Box>\n {children}\n </Box>\n <Button\n variant=\"tertiary\"\n size=\"small\"\n isDisabled={disabled || readonly}\n onClick={onDropPropertyClick(label)}\n iconStart={<RiDeleteBinLine />}\n aria-label=\"Remove\"\n />\n </Flex>\n </Box>\n );\n}\n"],"names":[],"mappings":";;;;;AAyBA,SAAwB,wBAAA,CAItB;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,mBAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAA2C;AACzC,EAAA,MAAM,QAAA,GAAW,GAAG,KAAK,CAAA,IAAA,CAAA;AACzB,EAAA,MAAM,aAAa,wBAAA,IAA4B,MAAA;AAE/C,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,uBACE,GAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAW,UAAA,EAAY,OACzB,QAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAkB;AACtC,IAAA,WAAA,CAAY,KAAK,CAAA;AAAA,EACnB,CAAA;AAEA,EAAA,uBACE,GAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAW,UAAA,EAAY,KAAA,EAC1B,+BAAC,IAAA,EAAA,EAAK,KAAA,EAAM,OAAA,EAAQ,GAAA,EAAI,GAAA,EACtB,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,GAAA,EAAA,EAAI,KAAA,EAAO,EAAE,IAAA,EAAM,GAAE,EACpB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,GAAA,EAAA,EAAI,IAAG,GAAA,EACN,QAAA,kBAAA,GAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,EAAA,EAAI,GAAG,EAAE,CAAA,IAAA,CAAA;AAAA,UACT,KAAA,EAAO,QAAA;AAAA,UACP,cAAA,EAAgB,WAAW,UAAA,GAAa,MAAA;AAAA,UACxC,YAAA,EAAc,KAAA;AAAA,UACd,YAAY,QAAA,IAAY,QAAA;AAAA,UACxB,QAAA,EAAU;AAAA;AAAA,OACZ,EACF,CAAA;AAAA,MACC;AAAA,KAAA,EACH,CAAA;AAAA,oBACA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,UAAA;AAAA,QACR,IAAA,EAAK,OAAA;AAAA,QACL,YAAY,QAAA,IAAY,QAAA;AAAA,QACxB,OAAA,EAAS,oBAAoB,KAAK,CAAA;AAAA,QAClC,SAAA,sBAAY,eAAA,EAAA,EAAgB,CAAA;AAAA,QAC5B,YAAA,EAAW;AAAA;AAAA;AACb,GAAA,EACF,CAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import ArrayFieldDescriptionTemplate from './ArrayFieldDescriptionTemplate.esm.js';
|
|
2
|
+
import ArrayFieldItemTemplate from './ArrayFieldItemTemplate.esm.js';
|
|
3
|
+
import ArrayFieldTemplate from './ArrayFieldTemplate.esm.js';
|
|
4
|
+
import ArrayFieldTitleTemplate from './ArrayFieldTitleTemplate.esm.js';
|
|
5
|
+
import ButtonTemplates, { IconButton, AddButton, SubmitButton } from './ButtonTemplates.esm.js';
|
|
6
|
+
import DescriptionFieldTemplate from './DescriptionFieldTemplate.esm.js';
|
|
7
|
+
import ErrorListTemplate from './ErrorListTemplate.esm.js';
|
|
8
|
+
import FieldErrorTemplate from './FieldErrorTemplate.esm.js';
|
|
9
|
+
import FieldHelpTemplate from './FieldHelpTemplate.esm.js';
|
|
10
|
+
import FieldTemplate from './FieldTemplate.esm.js';
|
|
11
|
+
import ObjectFieldTemplate from './ObjectFieldTemplate.esm.js';
|
|
12
|
+
import TitleFieldTemplate from './TitleFieldTemplate.esm.js';
|
|
13
|
+
import UnsupportedFieldTemplate from './UnsupportedFieldTemplate.esm.js';
|
|
14
|
+
import WrapIfAdditionalTemplate from './WrapIfAdditionalTemplate.esm.js';
|
|
15
|
+
|
|
16
|
+
function generateBuiTemplates() {
|
|
17
|
+
return {
|
|
18
|
+
ArrayFieldDescriptionTemplate,
|
|
19
|
+
ArrayFieldItemTemplate,
|
|
20
|
+
ArrayFieldTemplate,
|
|
21
|
+
ArrayFieldTitleTemplate,
|
|
22
|
+
ButtonTemplates: {
|
|
23
|
+
...ButtonTemplates,
|
|
24
|
+
SubmitButton,
|
|
25
|
+
AddButton,
|
|
26
|
+
RemoveButton: IconButton,
|
|
27
|
+
MoveDownButton: IconButton,
|
|
28
|
+
MoveUpButton: IconButton,
|
|
29
|
+
CopyButton: IconButton
|
|
30
|
+
},
|
|
31
|
+
DescriptionFieldTemplate,
|
|
32
|
+
ErrorListTemplate,
|
|
33
|
+
FieldErrorTemplate,
|
|
34
|
+
FieldHelpTemplate,
|
|
35
|
+
FieldTemplate,
|
|
36
|
+
ObjectFieldTemplate,
|
|
37
|
+
TitleFieldTemplate,
|
|
38
|
+
UnsupportedFieldTemplate,
|
|
39
|
+
WrapIfAdditionalTemplate
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export { generateBuiTemplates };
|
|
44
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../../../../src/next/components/Form/BuiTheme/templates/index.ts"],"sourcesContent":["/*\n * Copyright 2026 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 FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n TemplatesType,\n} from '@rjsf/utils';\n\nimport ArrayFieldDescriptionTemplate from './ArrayFieldDescriptionTemplate';\nimport ArrayFieldItemTemplate from './ArrayFieldItemTemplate';\nimport ArrayFieldTemplate from './ArrayFieldTemplate';\nimport ArrayFieldTitleTemplate from './ArrayFieldTitleTemplate';\nimport ButtonTemplates, {\n SubmitButton,\n AddButton,\n IconButton,\n} from './ButtonTemplates';\nimport DescriptionFieldTemplate from './DescriptionFieldTemplate';\nimport ErrorListTemplate from './ErrorListTemplate';\nimport FieldErrorTemplate from './FieldErrorTemplate';\nimport FieldHelpTemplate from './FieldHelpTemplate';\nimport FieldTemplate from './FieldTemplate';\nimport ObjectFieldTemplate from './ObjectFieldTemplate';\nimport TitleFieldTemplate from './TitleFieldTemplate';\nimport UnsupportedFieldTemplate from './UnsupportedFieldTemplate';\nimport WrapIfAdditionalTemplate from './WrapIfAdditionalTemplate';\n\nexport function generateBuiTemplates<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): Partial<TemplatesType<T, S, F>> {\n return {\n ArrayFieldDescriptionTemplate,\n ArrayFieldItemTemplate,\n ArrayFieldTemplate,\n ArrayFieldTitleTemplate,\n ButtonTemplates: {\n ...ButtonTemplates,\n SubmitButton,\n AddButton,\n RemoveButton: IconButton,\n MoveDownButton: IconButton,\n MoveUpButton: IconButton,\n CopyButton: IconButton,\n },\n DescriptionFieldTemplate,\n ErrorListTemplate,\n FieldErrorTemplate,\n FieldHelpTemplate,\n FieldTemplate,\n ObjectFieldTemplate,\n TitleFieldTemplate,\n UnsupportedFieldTemplate,\n WrapIfAdditionalTemplate,\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAyCO,SAAS,oBAAA,GAIqB;AACnC,EAAA,OAAO;AAAA,IACL,6BAAA;AAAA,IACA,sBAAA;AAAA,IACA,kBAAA;AAAA,IACA,uBAAA;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,GAAG,eAAA;AAAA,MACH,YAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAA,EAAc,UAAA;AAAA,MACd,cAAA,EAAgB,UAAA;AAAA,MAChB,YAAA,EAAc,UAAA;AAAA,MACd,UAAA,EAAY;AAAA,KACd;AAAA,IACA,wBAAA;AAAA,IACA,iBAAA;AAAA,IACA,kBAAA;AAAA,IACA,iBAAA;AAAA,IACA,aAAA;AAAA,IACA,mBAAA;AAAA,IACA,kBAAA;AAAA,IACA,wBAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { getInputProps, examplesId, ariaDescribedByIds } from '@rjsf/utils';
|
|
3
|
+
import { TextField } from '@backstage/ui';
|
|
4
|
+
|
|
5
|
+
function BaseInputTemplate({
|
|
6
|
+
id,
|
|
7
|
+
placeholder,
|
|
8
|
+
required,
|
|
9
|
+
readonly,
|
|
10
|
+
disabled,
|
|
11
|
+
type,
|
|
12
|
+
label,
|
|
13
|
+
value,
|
|
14
|
+
onChange: onFieldChange,
|
|
15
|
+
onBlur: onFieldBlur,
|
|
16
|
+
onFocus: onFieldFocus,
|
|
17
|
+
autofocus,
|
|
18
|
+
options,
|
|
19
|
+
schema,
|
|
20
|
+
rawErrors = [],
|
|
21
|
+
children,
|
|
22
|
+
extraProps
|
|
23
|
+
}) {
|
|
24
|
+
const { type: inputType, ...restInputProps } = {
|
|
25
|
+
...extraProps,
|
|
26
|
+
...getInputProps(schema, type, options)
|
|
27
|
+
};
|
|
28
|
+
const list = schema.examples ? examplesId(id) : void 0;
|
|
29
|
+
const handleChange = (val) => onFieldChange(val === "" ? options.emptyValue : val);
|
|
30
|
+
const handleBlur = () => onFieldBlur(id, value);
|
|
31
|
+
const handleFocus = () => onFieldFocus(id, value);
|
|
32
|
+
const hasError = rawErrors.length > 0;
|
|
33
|
+
const isNumeric = inputType === "number" || inputType === "integer";
|
|
34
|
+
let inputValue;
|
|
35
|
+
if (isNumeric) {
|
|
36
|
+
inputValue = value || value === 0 ? String(value) : "";
|
|
37
|
+
} else {
|
|
38
|
+
inputValue = value === null || value === void 0 ? "" : String(value);
|
|
39
|
+
}
|
|
40
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
41
|
+
/* @__PURE__ */ jsx(
|
|
42
|
+
TextField,
|
|
43
|
+
{
|
|
44
|
+
id,
|
|
45
|
+
name: id,
|
|
46
|
+
label: label || schema.title,
|
|
47
|
+
secondaryLabel: required ? "Required" : void 0,
|
|
48
|
+
placeholder,
|
|
49
|
+
autoFocus: autofocus,
|
|
50
|
+
isRequired: required,
|
|
51
|
+
isDisabled: disabled,
|
|
52
|
+
isReadOnly: readonly,
|
|
53
|
+
isInvalid: hasError,
|
|
54
|
+
value: inputValue,
|
|
55
|
+
onChange: handleChange,
|
|
56
|
+
onBlur: handleBlur,
|
|
57
|
+
onFocus: handleFocus,
|
|
58
|
+
"aria-describedby": ariaDescribedByIds(id, !!schema.examples),
|
|
59
|
+
list,
|
|
60
|
+
...restInputProps
|
|
61
|
+
}
|
|
62
|
+
),
|
|
63
|
+
children,
|
|
64
|
+
Array.isArray(schema.examples) ? /* @__PURE__ */ jsx("datalist", { id: examplesId(id), children: schema.examples.concat(
|
|
65
|
+
schema.default && !schema.examples.includes(schema.default) ? [schema.default] : []
|
|
66
|
+
).map((example) => {
|
|
67
|
+
return /* @__PURE__ */ jsx("option", { value: example }, example);
|
|
68
|
+
}) }) : null
|
|
69
|
+
] });
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export { BaseInputTemplate as default };
|
|
73
|
+
//# sourceMappingURL=BaseInputTemplate.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseInputTemplate.esm.js","sources":["../../../../../../src/next/components/Form/BuiTheme/widgets/BaseInputTemplate.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 ariaDescribedByIds,\n BaseInputTemplateProps,\n examplesId,\n FormContextType,\n getInputProps,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\nimport { TextField } from '@backstage/ui';\n\nexport default function BaseInputTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({\n id,\n placeholder,\n required,\n readonly,\n disabled,\n type,\n label,\n value,\n onChange: onFieldChange,\n onBlur: onFieldBlur,\n onFocus: onFieldFocus,\n autofocus,\n options,\n schema,\n rawErrors = [],\n children,\n extraProps,\n}: BaseInputTemplateProps<T, S, F>) {\n const { type: inputType, ...restInputProps } = {\n ...extraProps,\n ...getInputProps<T, S, F>(schema, type, options),\n };\n\n const list = schema.examples ? examplesId<T>(id) : undefined;\n\n const handleChange = (val: string) =>\n onFieldChange(val === '' ? options.emptyValue : val);\n const handleBlur = () => onFieldBlur(id, value);\n const handleFocus = () => onFieldFocus(id, value);\n\n const hasError = rawErrors.length > 0;\n const isNumeric = inputType === 'number' || inputType === 'integer';\n\n // Normalize value to string for the input\n let inputValue: string;\n if (isNumeric) {\n inputValue = value || value === 0 ? String(value) : '';\n } else {\n inputValue = value === null || value === undefined ? '' : String(value);\n }\n\n return (\n <>\n <TextField\n id={id}\n name={id}\n label={label || schema.title}\n secondaryLabel={required ? 'Required' : undefined}\n placeholder={placeholder}\n // eslint-disable-next-line jsx-a11y/no-autofocus\n autoFocus={autofocus}\n isRequired={required}\n isDisabled={disabled}\n isReadOnly={readonly}\n isInvalid={hasError}\n value={inputValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n aria-describedby={ariaDescribedByIds<T>(id, !!schema.examples)}\n list={list}\n {...restInputProps}\n />\n {children}\n {Array.isArray(schema.examples) ? (\n <datalist id={examplesId<T>(id)}>\n {(schema.examples as string[])\n .concat(\n schema.default && !schema.examples.includes(schema.default)\n ? ([schema.default] as string[])\n : [],\n )\n .map((example: any) => {\n return <option key={example} value={example} />;\n })}\n </datalist>\n ) : null}\n </>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { schemaRequiresTrueValue, labelValue } from '@rjsf/utils';
|
|
3
|
+
import { Checkbox } from '@backstage/ui';
|
|
4
|
+
|
|
5
|
+
function CheckboxWidget(props) {
|
|
6
|
+
const {
|
|
7
|
+
id,
|
|
8
|
+
value,
|
|
9
|
+
disabled,
|
|
10
|
+
readonly,
|
|
11
|
+
label,
|
|
12
|
+
hideLabel,
|
|
13
|
+
schema,
|
|
14
|
+
onChange: onFieldChange
|
|
15
|
+
} = props;
|
|
16
|
+
const required = schemaRequiresTrueValue(schema);
|
|
17
|
+
const handleChange = (checked) => {
|
|
18
|
+
onFieldChange(checked);
|
|
19
|
+
};
|
|
20
|
+
return /* @__PURE__ */ jsx(
|
|
21
|
+
Checkbox,
|
|
22
|
+
{
|
|
23
|
+
name: id,
|
|
24
|
+
isSelected: typeof value === "undefined" ? false : Boolean(value),
|
|
25
|
+
isRequired: required,
|
|
26
|
+
isDisabled: disabled || readonly,
|
|
27
|
+
onChange: handleChange,
|
|
28
|
+
children: labelValue(label, hideLabel || !label)
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { CheckboxWidget as default };
|
|
34
|
+
//# sourceMappingURL=CheckboxWidget.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxWidget.esm.js","sources":["../../../../../../src/next/components/Form/BuiTheme/widgets/CheckboxWidget.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 FormContextType,\n labelValue,\n RJSFSchema,\n schemaRequiresTrueValue,\n StrictRJSFSchema,\n WidgetProps,\n} from '@rjsf/utils';\nimport { Checkbox } from '@backstage/ui';\n\nexport default function CheckboxWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n const {\n id,\n value,\n disabled,\n readonly,\n label,\n hideLabel,\n schema,\n onChange: onFieldChange,\n } = props;\n\n const required = schemaRequiresTrueValue<S>(schema);\n\n const handleChange = (checked: boolean) => {\n onFieldChange(checked);\n };\n\n return (\n <Checkbox\n name={id}\n isSelected={typeof value === 'undefined' ? false : Boolean(value)}\n isRequired={required}\n isDisabled={disabled || readonly}\n onChange={handleChange}\n >\n {labelValue(label, hideLabel || !label)}\n </Checkbox>\n );\n}\n"],"names":[],"mappings":";;;;AAyBA,SAAwB,eAItB,KAAA,EAA6B;AAC7B,EAAA,MAAM;AAAA,IACJ,EAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA,EAAU;AAAA,GACZ,GAAI,KAAA;AAEJ,EAAA,MAAM,QAAA,GAAW,wBAA2B,MAAM,CAAA;AAElD,EAAA,MAAM,YAAA,GAAe,CAAC,OAAA,KAAqB;AACzC,IAAA,aAAA,CAAc,OAAO,CAAA;AAAA,EACvB,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,EAAA;AAAA,MACN,YAAY,OAAO,KAAA,KAAU,WAAA,GAAc,KAAA,GAAQ,QAAQ,KAAK,CAAA;AAAA,MAChE,UAAA,EAAY,QAAA;AAAA,MACZ,YAAY,QAAA,IAAY,QAAA;AAAA,MACxB,QAAA,EAAU,YAAA;AAAA,MAET,QAAA,EAAA,UAAA,CAAW,KAAA,EAAO,SAAA,IAAa,CAAC,KAAK;AAAA;AAAA,GACxC;AAEJ;;;;"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { optionId, ariaDescribedByIds } from '@rjsf/utils';
|
|
3
|
+
import { CheckboxGroup, Checkbox } from '@backstage/ui';
|
|
4
|
+
|
|
5
|
+
function CheckboxesWidget({
|
|
6
|
+
id,
|
|
7
|
+
label,
|
|
8
|
+
required,
|
|
9
|
+
disabled,
|
|
10
|
+
readonly,
|
|
11
|
+
options,
|
|
12
|
+
value,
|
|
13
|
+
onChange: onFieldChange,
|
|
14
|
+
rawErrors = []
|
|
15
|
+
}) {
|
|
16
|
+
const { enumOptions, enumDisabled } = options;
|
|
17
|
+
const selectedKeys = Array.isArray(value) ? value.map(String) : [];
|
|
18
|
+
const hasError = rawErrors.length > 0;
|
|
19
|
+
const handleChange = (keys) => {
|
|
20
|
+
const next = enumOptions?.filter((option) => keys.includes(String(option.value))).map((option) => option.value) ?? [];
|
|
21
|
+
onFieldChange(next);
|
|
22
|
+
};
|
|
23
|
+
return /* @__PURE__ */ jsx(
|
|
24
|
+
CheckboxGroup,
|
|
25
|
+
{
|
|
26
|
+
label,
|
|
27
|
+
isRequired: required,
|
|
28
|
+
isInvalid: hasError,
|
|
29
|
+
isDisabled: disabled || readonly,
|
|
30
|
+
value: selectedKeys,
|
|
31
|
+
onChange: handleChange,
|
|
32
|
+
"aria-describedby": ariaDescribedByIds(id),
|
|
33
|
+
children: enumOptions?.map((option, index) => {
|
|
34
|
+
const itemDisabled = Array.isArray(enumDisabled) && enumDisabled.indexOf(option.value) !== -1;
|
|
35
|
+
return /* @__PURE__ */ jsx(
|
|
36
|
+
Checkbox,
|
|
37
|
+
{
|
|
38
|
+
value: String(option.value),
|
|
39
|
+
isDisabled: itemDisabled,
|
|
40
|
+
children: option.label
|
|
41
|
+
},
|
|
42
|
+
optionId(id, index)
|
|
43
|
+
);
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export { CheckboxesWidget as default };
|
|
50
|
+
//# sourceMappingURL=CheckboxesWidget.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckboxesWidget.esm.js","sources":["../../../../../../src/next/components/Form/BuiTheme/widgets/CheckboxesWidget.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 ariaDescribedByIds,\n FormContextType,\n optionId,\n RJSFSchema,\n StrictRJSFSchema,\n WidgetProps,\n} from '@rjsf/utils';\nimport { Checkbox, CheckboxGroup } from '@backstage/ui';\n\nexport default function CheckboxesWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({\n id,\n label,\n required,\n disabled,\n readonly,\n options,\n value,\n onChange: onFieldChange,\n rawErrors = [],\n}: WidgetProps<T, S, F>) {\n const { enumOptions, enumDisabled } = options;\n\n const selectedKeys = Array.isArray(value) ? value.map(String) : [];\n const hasError = rawErrors.length > 0;\n\n const handleChange = (keys: string[]) => {\n const next =\n enumOptions\n ?.filter(option => keys.includes(String(option.value)))\n .map(option => option.value) ?? [];\n onFieldChange(next as T);\n };\n\n return (\n <CheckboxGroup\n label={label}\n isRequired={required}\n isInvalid={hasError}\n isDisabled={disabled || readonly}\n value={selectedKeys}\n onChange={handleChange}\n aria-describedby={ariaDescribedByIds<T>(id)}\n >\n {enumOptions?.map((option, index) => {\n const itemDisabled =\n Array.isArray(enumDisabled) &&\n enumDisabled.indexOf(option.value) !== -1;\n return (\n <Checkbox\n key={optionId(id, index)}\n value={String(option.value)}\n isDisabled={itemDisabled}\n >\n {option.label}\n </Checkbox>\n );\n })}\n </CheckboxGroup>\n );\n}\n"],"names":[],"mappings":";;;;AAyBA,SAAwB,gBAAA,CAItB;AAAA,EACA,EAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA,EAAU,aAAA;AAAA,EACV,YAAY;AACd,CAAA,EAAyB;AACvB,EAAA,MAAM,EAAE,WAAA,EAAa,YAAA,EAAa,GAAI,OAAA;AAEtC,EAAA,MAAM,YAAA,GAAe,MAAM,OAAA,CAAQ,KAAK,IAAI,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA,GAAI,EAAC;AACjE,EAAA,MAAM,QAAA,GAAW,UAAU,MAAA,GAAS,CAAA;AAEpC,EAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAmB;AACvC,IAAA,MAAM,OACJ,WAAA,EACI,MAAA,CAAO,CAAA,MAAA,KAAU,IAAA,CAAK,SAAS,MAAA,CAAO,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA,CACrD,GAAA,CAAI,YAAU,MAAA,CAAO,KAAK,KAAK,EAAC;AACrC,IAAA,aAAA,CAAc,IAAS,CAAA;AAAA,EACzB,CAAA;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,UAAA,EAAY,QAAA;AAAA,MACZ,SAAA,EAAW,QAAA;AAAA,MACX,YAAY,QAAA,IAAY,QAAA;AAAA,MACxB,KAAA,EAAO,YAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,kBAAA,EAAkB,mBAAsB,EAAE,CAAA;AAAA,MAEzC,QAAA,EAAA,WAAA,EAAa,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAA,KAAU;AACnC,QAAA,MAAM,YAAA,GACJ,MAAM,OAAA,CAAQ,YAAY,KAC1B,YAAA,CAAa,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAA,KAAM,EAAA;AACzC,QAAA,uBACE,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EAAO,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AAAA,YAC1B,UAAA,EAAY,YAAA;AAAA,YAEX,QAAA,EAAA,MAAA,CAAO;AAAA,WAAA;AAAA,UAJH,QAAA,CAAS,IAAI,KAAK;AAAA,SAKzB;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ;;;;"}
|