From 83964e8b428872be351d10c8bf192de2d7004c74 Mon Sep 17 00:00:00 2001 From: Romain Billard Date: Thu, 26 Mar 2026 15:06:35 +0100 Subject: [PATCH 01/10] feat(new-nav): add Terraform variables settings page --- .../settings/terraform-variables.tsx | 48 +- .../service-settings/feature/src/index.ts | 2 + .../dockerfile-fragment-inline-modal.spec.tsx | 0 .../dockerfile-fragment-inline-modal.tsx | 0 ...file-fragment-inline-setting.spec.tsx.snap | 109 ++++ ...ockerfile-fragment-inline-setting.spec.tsx | 68 +++ .../dockerfile-fragment-inline-setting.tsx | 32 ++ .../terraform-tfvars-popover.spec.tsx | 0 .../terraform-tfvars-popover.tsx | 0 .../terraform-variables-context.tsx | 513 ++++++++++++++++++ .../terraform-variables-settings.tsx | 0 .../terraform-variables-table.spec.tsx | 0 .../terraform-variables-table.tsx | 0 .../terraform-variables-utils.spec.ts | 0 .../terraform-variables-utils.ts | 0 15 files changed, 770 insertions(+), 2 deletions(-) rename libs/domains/{service-terraform => service-settings}/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-modal/dockerfile-fragment-inline-modal.spec.tsx (100%) rename libs/domains/{service-terraform => service-settings}/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-modal/dockerfile-fragment-inline-modal.tsx (100%) create mode 100644 libs/domains/service-settings/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-setting/__snapshots__/dockerfile-fragment-inline-setting.spec.tsx.snap create mode 100644 libs/domains/service-settings/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-setting/dockerfile-fragment-inline-setting.spec.tsx create mode 100644 libs/domains/service-settings/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-setting/dockerfile-fragment-inline-setting.tsx rename libs/domains/{service-terraform => service-settings}/feature/src/lib/terraform-variables-settings/terraform-tfvars-popover/terraform-tfvars-popover.spec.tsx (100%) rename libs/domains/{service-terraform => service-settings}/feature/src/lib/terraform-variables-settings/terraform-tfvars-popover/terraform-tfvars-popover.tsx (100%) create mode 100644 libs/domains/service-settings/feature/src/lib/terraform-variables-settings/terraform-variables-context.tsx rename libs/domains/{service-terraform => service-settings}/feature/src/lib/terraform-variables-settings/terraform-variables-settings.tsx (100%) rename libs/domains/{service-terraform => service-settings}/feature/src/lib/terraform-variables-settings/terraform-variables-table/terraform-variables-table.spec.tsx (100%) rename libs/domains/{service-terraform => service-settings}/feature/src/lib/terraform-variables-settings/terraform-variables-table/terraform-variables-table.tsx (100%) rename libs/domains/{service-terraform => service-settings}/feature/src/lib/terraform-variables-settings/terraform-variables-utils.spec.ts (100%) rename libs/domains/{service-terraform => service-settings}/feature/src/lib/terraform-variables-settings/terraform-variables-utils.ts (100%) diff --git a/apps/console-v5/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/terraform-variables.tsx b/apps/console-v5/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/terraform-variables.tsx index 99b85e0ec34..9f7765ced05 100644 --- a/apps/console-v5/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/terraform-variables.tsx +++ b/apps/console-v5/src/routes/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/terraform-variables.tsx @@ -1,4 +1,11 @@ -import { createFileRoute } from '@tanstack/react-router' +import { createFileRoute, useParams } from '@tanstack/react-router' +import { Suspense } from 'react' +import { FormProvider, useForm } from 'react-hook-form' +import { match } from 'ts-pattern' +import { TerraformVariablesProvider, TerraformVariablesTable } from '@qovery/domains/service-settings/feature' +import { type TerraformGeneralData, useService } from '@qovery/domains/services/feature' +import { SettingsHeading } from '@qovery/shared/console-shared' +import { LoaderSpinner, Section } from '@qovery/shared/ui' export const Route = createFileRoute( '/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/terraform-variables' @@ -6,6 +13,43 @@ export const Route = createFileRoute( component: RouteComponent, }) +const TerraformVariablesLoader = () => ( +
+ +
+) + +const TerraformVariablesWrapper = () => { + const { serviceId } = useParams({ strict: false }) + const { data: service } = useService({ serviceId }) + const methods = useForm({ + mode: 'onChange', + defaultValues: match(service) + .with({ serviceType: 'TERRAFORM' }, (s) => s) + .otherwise(() => ({})), + }) + + return ( +
+ +
+ + + + + +
+
+ ) +} + function RouteComponent() { - return
Terraform variables
+ return ( + }> + + + ) } diff --git a/libs/domains/service-settings/feature/src/index.ts b/libs/domains/service-settings/feature/src/index.ts index 9bef3cb849a..69fd42887c1 100644 --- a/libs/domains/service-settings/feature/src/index.ts +++ b/libs/domains/service-settings/feature/src/index.ts @@ -9,3 +9,5 @@ export * from './lib/service-domain-settings/service-domain-settings/service-dom export * from './lib/service-deployment-restrictions-settings/service-deployment-restrictions-settings/service-deployment-restrictions-settings' export * from './lib/terraform-configuration-settings/terraform-configuration-settings' export * from './lib/terraform-arguments-settings/terraform-arguments-settings' +export * from './lib/terraform-variables-settings/terraform-variables-table/terraform-variables-table' +export * from './lib/terraform-variables-settings/terraform-variables-context' diff --git a/libs/domains/service-terraform/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-modal/dockerfile-fragment-inline-modal.spec.tsx b/libs/domains/service-settings/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-modal/dockerfile-fragment-inline-modal.spec.tsx similarity index 100% rename from libs/domains/service-terraform/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-modal/dockerfile-fragment-inline-modal.spec.tsx rename to libs/domains/service-settings/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-modal/dockerfile-fragment-inline-modal.spec.tsx diff --git a/libs/domains/service-terraform/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-modal/dockerfile-fragment-inline-modal.tsx b/libs/domains/service-settings/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-modal/dockerfile-fragment-inline-modal.tsx similarity index 100% rename from libs/domains/service-terraform/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-modal/dockerfile-fragment-inline-modal.tsx rename to libs/domains/service-settings/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-modal/dockerfile-fragment-inline-modal.tsx diff --git a/libs/domains/service-settings/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-setting/__snapshots__/dockerfile-fragment-inline-setting.spec.tsx.snap b/libs/domains/service-settings/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-setting/__snapshots__/dockerfile-fragment-inline-setting.spec.tsx.snap new file mode 100644 index 00000000000..59731808ac1 --- /dev/null +++ b/libs/domains/service-settings/feature/src/lib/terraform-variables-settings/dockerfile-fragment-inline-setting/__snapshots__/dockerfile-fragment-inline-setting.spec.tsx.snap @@ -0,0 +1,109 @@ +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing + +exports[`DockerfileFragmentInlineSetting should match snapshot with content 1`] = ` + +