diff --git a/app/View/Components/Forms/EnvVarInput.php b/app/View/Components/Forms/EnvVarInput.php
index 6b37e3a7b..7cf8ee8fa 100644
--- a/app/View/Components/Forms/EnvVarInput.php
+++ b/app/View/Components/Forms/EnvVarInput.php
@@ -14,6 +14,8 @@ class EnvVarInput extends Component
public ?string $htmlId = null;
+ public array $scopeUrls = [];
+
public function __construct(
public ?string $id = null,
public ?string $name = null,
@@ -33,6 +35,8 @@ public function __construct(
public mixed $canResource = null,
public bool $autoDisable = true,
public array $availableVars = [],
+ public ?string $projectUuid = null,
+ public ?string $environmentUuid = null,
) {
// Handle authorization-based disabling
if ($this->canGate && $this->canResource && $this->autoDisable) {
@@ -68,6 +72,18 @@ public function render(): View|Closure|string
$this->name = $this->modelBinding !== 'null' ? $this->modelBinding : (string) $this->id;
}
+ $this->scopeUrls = [
+ 'team' => route('shared-variables.team.index'),
+ 'project' => route('shared-variables.project.index'),
+ 'environment' => $this->projectUuid && $this->environmentUuid
+ ? route('shared-variables.environment.show', [
+ 'project_uuid' => $this->projectUuid,
+ 'environment_uuid' => $this->environmentUuid,
+ ])
+ : route('shared-variables.environment.index'),
+ 'default' => route('shared-variables.index'),
+ ];
+
return view('components.forms.env-var-input');
}
}
diff --git a/resources/views/components/forms/env-var-input.blade.php b/resources/views/components/forms/env-var-input.blade.php
index c621f566b..5639cdbca 100644
--- a/resources/views/components/forms/env-var-input.blade.php
+++ b/resources/views/components/forms/env-var-input.blade.php
@@ -18,6 +18,7 @@
currentScope: null,
availableScopes: ['team', 'project', 'environment'],
availableVars: @js($availableVars),
+ scopeUrls: @js($scopeUrls),
isAutocompleteDisabled() {
const hasAnyVars = Object.values(this.availableVars).some(vars => vars.length > 0);
@@ -28,13 +29,14 @@
const input = this.$refs.input;
if (!input) return;
+ const value = input.value || '';
+
if (this.isAutocompleteDisabled()) {
this.showDropdown = false;
return;
}
this.cursorPosition = input.selectionStart || 0;
- const value = input.value || '';
const textBeforeCursor = value.substring(0, this.cursorPosition);
const openBraces = '{' + '{';
@@ -107,14 +109,7 @@
},
getScopeUrl(scope) {
- if (scope === 'team') {
- return '/shared-variables/team';
- } else if (scope === 'project') {
- return '/shared-variables/projects';
- } else if (scope === 'environment') {
- return '/shared-variables/environments';
- }
- return '/shared-variables';
+ return this.scopeUrls[scope] || this.scopeUrls['default'];
},
selectSuggestion(suggestion) {
diff --git a/resources/views/livewire/project/shared/environment-variable/add.blade.php b/resources/views/livewire/project/shared/environment-variable/add.blade.php
index 2016c8c9f..6b6c660ec 100644
--- a/resources/views/livewire/project/shared/environment-variable/add.blade.php
+++ b/resources/views/livewire/project/shared/environment-variable/add.blade.php
@@ -3,7 +3,9 @@