From a3eb9810581b8594619d9964aeee4fe8e45f0bb9 Mon Sep 17 00:00:00 2001 From: "Calum H." Date: Mon, 23 Mar 2026 16:47:51 +0000 Subject: [PATCH] fix: env filters + properties (#5642) * fix: env filters * fix: server * fix: lint * fix: properties --- .../manage/[id]/options/properties.vue | 24 +++++++++---------- packages/ui/src/utils/search.ts | 10 ++++---- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/apps/frontend/src/pages/hosting/manage/[id]/options/properties.vue b/apps/frontend/src/pages/hosting/manage/[id]/options/properties.vue index c074e1373..ae73daf96 100644 --- a/apps/frontend/src/pages/hosting/manage/[id]/options/properties.vue +++ b/apps/frontend/src/pages/hosting/manage/[id]/options/properties.vue @@ -2,7 +2,7 @@
@@ -199,10 +199,18 @@ function syncFormFromData() { originalProperties.value = { ...flat } } +const hasNoProperties = computed(() => Object.keys(liveProperties.value).length === 0) + +const hasUnsavedChanges = computed(() => + Object.keys(liveProperties.value).some( + (key) => liveProperties.value[key] !== originalProperties.value[key], + ), +) + watch( propsData, - (newData, oldData) => { - if (newData && !oldData) { + (newData) => { + if (newData && !hasUnsavedChanges.value) { syncFormFromData() } }, @@ -213,16 +221,6 @@ watch(powerState, () => { queryClient.invalidateQueries({ queryKey: queryKey.value }) }) -const missingKnownProperties = computed(() => - Object.keys(KNOWN_PROPERTIES).filter((key) => !(key in liveProperties.value)), -) - -const hasUnsavedChanges = computed(() => - Object.keys(liveProperties.value).some( - (key) => liveProperties.value[key] !== originalProperties.value[key], - ), -) - function buildPatch(): Archon.Content.v1.PatchPropertiesFields { const known: Record = {} const custom: Record = {} diff --git a/packages/ui/src/utils/search.ts b/packages/ui/src/utils/search.ts index 093cfc60c..e1a4f0c09 100644 --- a/packages/ui/src/utils/search.ts +++ b/packages/ui/src/utils/search.ts @@ -766,17 +766,17 @@ function mapProjectTypeToSearch(projectType: ProjectType): string { function getEnvironmentFilterGroups(client: boolean, server: boolean): string[][] { const groups: string[][] = [] if (client && server) { - groups.push(['client_side:required'], ['server_side:required']) + groups.push( + ['client_side:required', 'client_side:optional', 'client_side:unsupported'], + ['server_side:required', 'server_side:optional'], + ) } else if (client) { groups.push( ['client_side:optional', 'client_side:required'], ['server_side:optional', 'server_side:unsupported'], ) } else if (server) { - groups.push( - ['client_side:optional', 'client_side:unsupported'], - ['server_side:optional', 'server_side:required'], - ) + groups.push(['server_side:optional', 'server_side:required']) } return groups }