Skip to content

Commit 6359483

Browse files
committed
feat: add better default form
1 parent 171b871 commit 6359483

File tree

1 file changed

+135
-0
lines changed

1 file changed

+135
-0
lines changed

src/server/utils.tsx

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,139 @@ export const defaultCode = `terraform {
4848
version = "2.5.3"
4949
}
5050
}
51+
}
52+
53+
# This example shows new form types and conditionality using dynamic parameters.
54+
# When starting from scratch, retain the providers block above.
55+
#
56+
# In the playground, you can get started with:
57+
# - snippets for parameter types
58+
# - example forms for advanced use
59+
# - documentation for how and when to enable Dynamic Parameters.
60+
#
61+
# You can edit user data in the "users" tab, and share your form via URL.
62+
# Enjoy Dynamic Parameters!
63+
64+
locals {
65+
ides = [
66+
{
67+
name = "VSCode",
68+
value = "vscode",
69+
icon = "/icon/code.svg"
70+
},
71+
{
72+
name = "Jetbrains IntelliJ",
73+
value = "intellij",
74+
icon = "/icon/intellij.svg"
75+
},
76+
{
77+
name = "Cursor",
78+
value = "cursor",
79+
icon = "/icon/cursor.svg"
80+
},
81+
]
82+
83+
username = data.coder_workspace_owner.me.name
84+
is_admin = contains(data.coder_workspace_owner.me.groups, "admin")
85+
}
86+
87+
data "coder_workspace_owner" "me" {}
88+
89+
data "coder_parameter" "dropdown_picker" {
90+
name = "dropdown_picker"
91+
display_name = "Pick your next parameter!"
92+
description = "Hello \${username}, pick your next parameter using this \`dropdown\` parameter."
93+
form_type = "dropdown"
94+
mutable = true
95+
96+
option {
97+
value = "ide_picker"
98+
name = "IDE multi-select"
99+
}
100+
101+
option {
102+
value = "text_area"
103+
name = "Large text entry"
104+
}
105+
106+
option {
107+
value = "cpu_slider"
108+
name = "CPU slider"
109+
}
110+
}
111+
112+
data "coder_parameter" "ide_picker" {
113+
count = try(data.coder_parameter.dropdown_picker.value, "") == "ide_picker" ? 1 : 0
114+
115+
name = "ide_picker"
116+
display_name = "Pick your IDEs!"
117+
description = "This is created using the \`form_type = 'multi-select'\` option."
118+
119+
type = "list(string)"
120+
form_type = "multi-select"
121+
order = 2
122+
mutable = true
123+
124+
dynamic "option" {
125+
for_each = local.ides
126+
content {
127+
name = option.value.name
128+
value = option.value.value
129+
description = option.value.description
130+
icon = option.value.icon
131+
}
132+
}
133+
}
134+
135+
data "coder_parameter" "text_area" {
136+
count = try(data.coder_parameter.dropdown_picker.value, "") == "text_area" ? 1 : 0
137+
138+
name = "text_area"
139+
display_name = "Enter a large AI prompt or script!"
140+
description = "This is created using the \`form_type = 'textarea'\` option."
141+
142+
type = "string"
143+
form_type = "textarea"
144+
order = 2
145+
mutable = true
146+
147+
styling = jsonencode({
148+
placeholder = <<-EOT
149+
This is a large text entry, try it out!
150+
151+
Including support for multi-line text entry.
152+
EOT
153+
})
154+
}
155+
156+
data "coder_parameter" "cpu_slider" {
157+
count = try(data.coder_parameter.dropdown_picker.value, "") == "cpu_slider" ? 1 : 0
158+
name = "cpu_slider"
159+
display_name = "CPU Cores Slider"
160+
description = "This is created using the \`form_type = 'slider'\` option."
161+
162+
type = "number"
163+
form_type = "slider"
164+
order = 2
165+
default = 4
166+
mutable = true
167+
168+
validation {
169+
min = 2
170+
max = 8
171+
}
172+
}
173+
174+
data "coder_parameter" "admin_only" {
175+
count = local.is_admin ? 1 : 0
176+
177+
name = "admin_only"
178+
display_name = "Use imaginary experimental features?"
179+
description = "This option is only available to those in the 'admin' group. You can hide it by changing your user data. \\n\\n _This does not actually enable experimental features._"
180+
181+
type = "bool"
182+
form_type = "checkbox"
183+
default = false
184+
185+
order = 5
51186
}`;

0 commit comments

Comments
 (0)