Skip to content

Commit b9aff1c

Browse files
committed
dynamic defaults
1 parent cc30cfe commit b9aff1c

File tree

1 file changed

+54
-2
lines changed

1 file changed

+54
-2
lines changed

docs/admin/templates/extending-templates/dynamic-parameters.md

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ data "coder_parameter" "ide_selector" {
195195
name = "ide_selector"
196196
description = "Choose any IDEs for your workspace."
197197
mutable = true
198-
display_name = "Select mutliple IDEs"
198+
display_name = "Select multiple IDEs"
199199
200200
201201
# Allows users to select multiple IDEs from the list.
@@ -335,7 +335,59 @@ data "coder_parameter" "cpu_cores" {
335335

336336
## Dynamic Defaults
337337

338-
For a given parameter, we can influence which option is selected by default based on the selection of another parameter.
338+
For a given parameter, we can influence which option is selected by default based on the selection of another. This allows us to suggest an option dynamically without strict enforcement.
339+
340+
[Try dynamic defaults in the Parameter Playground](https://playground.coder.app/parameters/Ilko59tf89).
341+
342+
```terraform
343+
data "coder_parameter" "git_repo" {
344+
name = "git_repo"
345+
display_name = "Git repo"
346+
description = "Select a git repo to work on."
347+
order = 1
348+
mutable = true
349+
type = "string"
350+
form_type = "dropdown"
351+
352+
option {
353+
# A Go-heavy repository
354+
name = "coder/coder"
355+
value = "coder/coder"
356+
}
357+
358+
option {
359+
# A python-heavy repository
360+
name = "coder/mlkit"
361+
value = "coder/mlkit"
362+
}
363+
}
364+
365+
data "coder_parameter" "ide_selector" {
366+
# Conditionally expose this parameter
367+
count = try(data.coder_parameter.git_repo.value, "") != "" ? 1 : 0
368+
369+
name = "ide_selector"
370+
description = "Choose any IDEs for your workspace."
371+
order = 2
372+
mutable = true
373+
374+
display_name = "Select IDEs"
375+
form_type = "multi-select"
376+
type = "list(string)"
377+
default = try(data.coder_parameter.git_repo.value, "") == "coder/mlkit" ? jsonencode(["Databricks", "PyCharm"]) : jsonencode(["VS Code", "GoLand"])
378+
379+
380+
dynamic "option" {
381+
for_each = local.ides
382+
content {
383+
name = option.value
384+
value = option.value
385+
}
386+
}
387+
}
388+
```
389+
390+
339391

340392
## Dynamic Validation
341393

0 commit comments

Comments
 (0)