Skip to content

Commit 63185c7

Browse files
committed
Merge branch 'main' into brett/custom-users-tab
2 parents eabedd5 + 32cf6f7 commit 63185c7

File tree

3 files changed

+146
-10
lines changed

3 files changed

+146
-10
lines changed

src/examples/code/default.tf

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
terraform {
2+
required_providers {
3+
coder = {
4+
source = "coder/coder"
5+
version = "2.5.3"
6+
}
7+
}
8+
}
9+
10+
# This example shows new form types and conditionality using dynamic parameters.
11+
# When starting from scratch, retain the providers block above.
12+
#
13+
# In the playground, you can get started with:
14+
# - snippets for parameter types
15+
# - example forms for advanced use
16+
# - documentation for how and when to enable Dynamic Parameters.
17+
#
18+
# You can edit user data in the "users" tab, and share your form via URL.
19+
# Enjoy Dynamic Parameters!
20+
21+
locals {
22+
ides = [
23+
{
24+
name = "VSCode",
25+
value = "vscode",
26+
icon = "/icon/code.svg"
27+
},
28+
{
29+
name = "Jetbrains IntelliJ",
30+
value = "intellij",
31+
icon = "/icon/intellij.svg"
32+
},
33+
{
34+
name = "Cursor",
35+
value = "cursor",
36+
icon = "/icon/cursor.svg"
37+
},
38+
]
39+
40+
username = data.coder_workspace_owner.me.name
41+
is_admin = contains(data.coder_workspace_owner.me.groups, "admin")
42+
}
43+
44+
data "coder_workspace_owner" "me" {}
45+
46+
data "coder_parameter" "dropdown_picker" {
47+
name = "dropdown_picker"
48+
display_name = "Pick your next parameter!"
49+
description = "Hello ${username}, pick your next parameter using this `dropdown` parameter."
50+
form_type = "dropdown"
51+
mutable = true
52+
53+
option {
54+
value = "ide_picker"
55+
name = "IDE multi-select"
56+
}
57+
58+
option {
59+
value = "text_area"
60+
name = "Large text entry"
61+
}
62+
63+
option {
64+
value = "cpu_slider"
65+
name = "CPU slider"
66+
}
67+
}
68+
69+
data "coder_parameter" "ide_picker" {
70+
count = try(data.coder_parameter.dropdown_picker.value, "") == "ide_picker" ? 1 : 0
71+
72+
name = "ide_picker"
73+
display_name = "Pick your IDEs!"
74+
description = "This is created using the `form_type = 'multi-select'` option."
75+
76+
type = "list(string)"
77+
form_type = "multi-select"
78+
order = 2
79+
mutable = true
80+
81+
dynamic "option" {
82+
for_each = local.ides
83+
content {
84+
name = option.value.name
85+
value = option.value.value
86+
description = option.value.description
87+
icon = option.value.icon
88+
}
89+
}
90+
}
91+
92+
data "coder_parameter" "text_area" {
93+
count = try(data.coder_parameter.dropdown_picker.value, "") == "text_area" ? 1 : 0
94+
95+
name = "text_area"
96+
display_name = "Enter a large AI prompt or script!"
97+
description = "This is created using the `form_type = 'textarea'` option."
98+
99+
type = "string"
100+
form_type = "textarea"
101+
order = 2
102+
mutable = true
103+
104+
styling = jsonencode({
105+
placeholder = <<-EOT
106+
This is a large text entry, try it out!
107+
108+
Including support for multi-line text entry.
109+
EOT
110+
})
111+
}
112+
113+
data "coder_parameter" "cpu_slider" {
114+
count = try(data.coder_parameter.dropdown_picker.value, "") == "cpu_slider" ? 1 : 0
115+
name = "cpu_slider"
116+
display_name = "CPU Cores Slider"
117+
description = "This is created using the `form_type = 'slider'` option."
118+
119+
type = "number"
120+
form_type = "slider"
121+
order = 2
122+
default = 4
123+
mutable = true
124+
125+
validation {
126+
min = 2
127+
max = 8
128+
}
129+
}
130+
131+
data "coder_parameter" "admin_only" {
132+
count = local.is_admin ? 1 : 0
133+
134+
name = "admin_only"
135+
display_name = "Use imaginary experimental features?"
136+
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._"
137+
138+
type = "bool"
139+
form_type = "checkbox"
140+
default = false
141+
142+
order = 5
143+
}

src/server/index.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ import { renderToString } from "react-dom/server";
44
import { examples } from "@/examples/code";
55
import { api } from "@/server/routes/api";
66
import { getShareData, type ShareData } from "./blob";
7+
import { BaseHeader, getAssetPath, HmrScript } from "./utils";
78
import { notFound } from "./routes/404";
8-
import { BaseHeader, defaultCode, getAssetPath, HmrScript } from "./utils";
9+
import defaultExample from "@/examples/code/default.tf?raw";
910

1011
// This must be exported for the dev server to work
1112
export const app = new Hono();
@@ -39,7 +40,7 @@ app.get("/parameters/:shareId?/:example?", async (c, next) => {
3940
return code ? { code } : null;
4041
}
4142

42-
return { code: defaultCode };
43+
return { code: defaultExample };
4344
};
4445

4546
const codeAndUsers = await getCodeAndUsers();

src/server/utils.tsx

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,3 @@ export const BaseHeader = () => {
4141
);
4242
};
4343

44-
export const defaultCode = `terraform {
45-
required_providers {
46-
coder = {
47-
source = "coder/coder"
48-
version = "2.5.3"
49-
}
50-
}
51-
}`;

0 commit comments

Comments
 (0)