diff --git a/app/react/edge/edge-stacks/CreateView/CreateForm.tsx b/app/react/edge/edge-stacks/CreateView/CreateForm.tsx
index 544cb46f0..e09e827c1 100644
--- a/app/react/edge/edge-stacks/CreateView/CreateForm.tsx
+++ b/app/react/edge/edge-stacks/CreateView/CreateForm.tsx
@@ -120,10 +120,10 @@ function useTemplate(
id: number | undefined
) {
const customTemplateQuery = useCustomTemplate(id, {
- enabled: !!id && type === 'custom',
+ enabled: type === 'custom',
});
const appTemplateQuery = useAppTemplate(id, {
- enabled: !!id && type === 'app',
+ enabled: type === 'app',
});
return {
diff --git a/app/react/edge/edge-stacks/CreateView/DockerComposeForm.tsx b/app/react/edge/edge-stacks/CreateView/DockerComposeForm.tsx
index 3ce03d5d0..fe24a2888 100644
--- a/app/react/edge/edge-stacks/CreateView/DockerComposeForm.tsx
+++ b/app/react/edge/edge-stacks/CreateView/DockerComposeForm.tsx
@@ -13,12 +13,12 @@ import {
edgeStackTemplate,
upload,
} from '@@/BoxSelector/common-options/build-methods';
-import { WebEditorForm } from '@@/WebEditorForm';
import { FileUploadForm } from '@@/form-components/FileUpload';
import { TemplateFieldset } from './TemplateFieldset/TemplateFieldset';
import { useRenderTemplate } from './useRenderTemplate';
import { DockerFormValues } from './types';
+import { DockerContentField } from './DockerContentField';
const buildMethods = [editor, upload, git, edgeStackTemplate] as const;
@@ -78,26 +78,12 @@ export function DockerComposeForm({
{(method === editor.value ||
(method === edgeStackTemplate.value && template)) && (
- handleChange({ fileContent: value })}
- yaml
- placeholder="Define or paste the content of your docker compose file here"
- error={errors?.fileContent}
readonly={method === edgeStackTemplate.value && !!template?.GitConfig}
- data-cy="stack-creation-editor"
- >
- You can get more information about Compose file format in the{' '}
-
- official documentation
-
- .
-
+ error={errors?.fileContent}
+ />
)}
{method === upload.value && (
diff --git a/app/react/edge/edge-stacks/CreateView/DockerContentField.tsx b/app/react/edge/edge-stacks/CreateView/DockerContentField.tsx
new file mode 100644
index 000000000..4499e6dfc
--- /dev/null
+++ b/app/react/edge/edge-stacks/CreateView/DockerContentField.tsx
@@ -0,0 +1,36 @@
+import { WebEditorForm } from '@@/WebEditorForm';
+
+export function DockerContentField({
+ error,
+ onChange,
+ readonly,
+ value,
+}: {
+ value: string;
+ onChange: (value: string) => void;
+ error?: string;
+ readonly?: boolean;
+}) {
+ return (
+
+ You can get more information about Compose file format in the{' '}
+
+ official documentation
+
+ .
+
+ );
+}
diff --git a/app/react/edge/edge-stacks/CreateView/TemplateFieldset/TemplateSelector.tsx b/app/react/edge/edge-stacks/CreateView/TemplateFieldset/TemplateSelector.tsx
index ef291e1e3..e8bca4456 100644
--- a/app/react/edge/edge-stacks/CreateView/TemplateFieldset/TemplateSelector.tsx
+++ b/app/react/edge/edge-stacks/CreateView/TemplateFieldset/TemplateSelector.tsx
@@ -24,7 +24,7 @@ export function TemplateSelector({
) => void;
error?: string;
}) {
- const { options, getTemplate } = useOptions();
+ const { options, getTemplate, selectedValue } = useOptions(value);
return (
@@ -32,10 +32,8 @@ export function TemplateSelector({
inputId="template_selector"
formatGroupLabel={GroupLabel}
placeholder="Select an Edge stack template"
- value={{
- templateId: value.templateId,
- type: value.type,
- }}
+ options={options}
+ value={selectedValue}
onChange={(value) => {
if (!value) {
onChange(undefined, undefined);
@@ -48,14 +46,19 @@ export function TemplateSelector({
}
onChange(getTemplate({ type, id: templateId }), type);
}}
- options={options}
data-cy="edge-stacks-create-template-selector"
/>
);
}
-function useOptions() {
+interface Option {
+ label: string;
+ templateId?: number;
+ type: 'app' | 'custom';
+}
+
+function useOptions(value: SelectedTemplateValue) {
const customTemplatesQuery = useCustomTemplates({
params: {
edge: true,
@@ -71,43 +74,75 @@ function useOptions() {
),
});
+ const appTemplateOptions: Array