templ
templ copied to clipboard
Support else ifs in conditional attributes
Describe the bug Writing a template that contains a simple if, else if, else.
The bug I am experiencing is that the else if is not respected. the else in the else if ends up becoming an attribute in the HTML component and the if statement starts again on the second if with the final else being respected.
Note: I have noticed that the LSP will reformat it, however, I have saved with :noa w
to prevent formatting and I still get this issue. So I don't believe this is an LSP issue.
To Reproduce
var DefaultStyle = "some-default-class"
type ButtonProps struct {
Classes string
ButtonStyle string
VoidStyle bool
}
templ Button(props ButtonProps) {
<button
if props.VoidStyle {
class={ props.Classes }
} else if props.ButtonStyle != "" {
class={ props.ButtonStyle, props.Classes }
} else {
class={ DefaultStyle, props.Classes }
}
>
{ Test Button }
</button>
}
Expected behavior I would expect that the if, else if, and else are all evaluated as necessary.
Screenshots
In use:
The relevant part of the component:
After the LSP has its way with it:
Rendered in the browser:
Logs If the issue is related to IDE support, run through the LSP troubleshooting section at https://templ.guide/commands-and-tools/ide-support/#troubleshooting-1 and include logs from templ
templ info
output
Run templ info
and include the output.
Desktop (please complete the following information):
(✓) os [ goos=linux goarch=amd64 ]
(✓) go [ location=/usr/local/go/bin/go version=go version go1.22.5 linux/amd64 ]
(✓) gopls [ location=/home/andrew/go/bin/gopls version=golang.org/x/tools/gopls v0.16.2 ]
(✓) templ [ location=/home/andrew/go/bin/templ version=v0.2.778 ]