refactor: use Laravel route() helper for shared variable URLs
- Replace hardcoded URL paths in getScopeUrl() with Laravel's route() helper - Add scopeUrls property to EnvVarInput component with named routes - Pass projectUuid and environmentUuid to enable context-specific environment links - Environment scope link now navigates to the specific project/environment shared variables page 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
01d3f07934
commit
4147cfa537
3 changed files with 23 additions and 10 deletions
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -3,7 +3,9 @@
|
|||
<x-forms.textarea x-show="$wire.is_multiline === true" x-cloak id="value" label="Value" required />
|
||||
<x-forms.env-var-input x-show="$wire.is_multiline === false" x-cloak placeholder="production" id="value"
|
||||
x-bind:label="$wire.is_multiline === false && 'Value'" required
|
||||
:availableVars="$shared ? [] : $this->availableSharedVariables" />
|
||||
:availableVars="$shared ? [] : $this->availableSharedVariables"
|
||||
:projectUuid="data_get($parameters, 'project_uuid')"
|
||||
:environmentUuid="data_get($parameters, 'environment_uuid')" />
|
||||
|
||||
@if (!$shared)
|
||||
<div x-show="$wire.is_multiline === false" x-cloak class="text-xs text-neutral-500 dark:text-neutral-400 -mt-1">
|
||||
|
|
|
|||
Loading…
Reference in a new issue