modified: web/components/base/input.templ modified: web/components/base/input_templ.go modified: web/components/base/range.templ modified: web/components/base/range_templ.go modified: web/components/base/select.templ modified: web/components/base/select_templ.go modified: web/components/base/textarea.templ modified: web/components/base/textarea_templ.go modified: web/components/icons.templ modified: web/components/icons_templ.go modified: web/components/issue.templ modified: web/components/issue_templ.go modified: web/components/layout.templ modified: web/components/layout_templ.go new file: web/components/sidebar.templ new file: web/components/sidebar_templ.go new file: web/components/status.templ new file: web/components/status_templ.go modified: web/handler/issues.go new file: web/handler/task.go modified: web/input.css deleted: web/package-lock.json deleted: web/package.json modified: web/routes/layout.templ modified: web/routes/layout_templ.go modified: web/server/routes.go modified: web/server/server.go modified: web/web.go
67 lines
1.2 KiB
Plaintext
67 lines
1.2 KiB
Plaintext
package base
|
|
|
|
type SelectProps struct {
|
|
ID string
|
|
Label string
|
|
Name string
|
|
Description string
|
|
Class string
|
|
Size string
|
|
Required bool
|
|
Options []SelectOption
|
|
Attrs templ.Attributes
|
|
}
|
|
|
|
type SelectOption struct {
|
|
Label string
|
|
Value string
|
|
Selected bool
|
|
Disabled bool
|
|
}
|
|
|
|
templ Select(props SelectProps) {
|
|
<fieldset class="fieldset">
|
|
if props.Label != "" {
|
|
<legend class="fieldset-legend">{ props.Label }</legend>
|
|
}
|
|
<select
|
|
class={
|
|
"select w-full",
|
|
props.Class,
|
|
templ.KV("select-xs", props.Size == "xs"),
|
|
templ.KV("select-sm", props.Size == "sm"),
|
|
templ.KV("select-lg", props.Size == "lg"),
|
|
templ.KV("select-xl", props.Size == "xl"),
|
|
}
|
|
id={ props.Name }
|
|
name={ props.Name }
|
|
aria-label={ props.Label }
|
|
if props.Required {
|
|
required
|
|
}
|
|
{ props.Attrs... }
|
|
>
|
|
@SelectOptions(props.Options)
|
|
</select>
|
|
if props.Description != "" {
|
|
<span class="label">{ props.Description }</span>
|
|
}
|
|
</fieldset>
|
|
}
|
|
|
|
templ SelectOptions(options []SelectOption) {
|
|
for i := range options {
|
|
<option
|
|
if options[i].Selected {
|
|
selected
|
|
}
|
|
if options[i].Disabled {
|
|
disabled
|
|
}
|
|
value={ options[i].Value }
|
|
>
|
|
{ options[i].Label }
|
|
</option>
|
|
}
|
|
}
|