templ icon indicating copy to clipboard operation
templ copied to clipboard

Support else ifs in conditional attributes

Open dimmerz92 opened this issue 5 months ago • 4 comments

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: Screenshot from 2024-09-25 12-46-39

The relevant part of the component: Screenshot from 2024-09-25 12-49-48

After the LSP has its way with it: Screenshot from 2024-09-25 12-52-35

Rendered in the browser: Screenshot from 2024-09-25 12-51-06

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 ]

dimmerz92 avatar Sep 25 '24 05:09 dimmerz92