Comments (6)
I guess @a-h workaround is the closest to what I wished for.
from templ.
Currently, as you say, we are trying to stay as familiar to Go as possible. So I can't see us implementing this syntax.
However, I have seen some other patterns emerge... such as defining an iif
function in your code:
func iif[T any](b bool, i, e T) T {
if b {
return i
}
return e
}
Then using it as a sort of ternary:
class={ "px-2 bg-green-200 hover:bg-green-400 disabled:bg-gray-400 disabled:text-gray-700",
iif(isAdmin(username), "rounded-bl w-1/3", "rounded-b w-full") }
Maybe this will suit your needs?
from templ.
Agreed that I don't want to be adding things that aren't in the Go language already.
Specifically for classes, class
attribute also takes a map that can be used to dynamically add classes.
package main
import "fmt"
import "os"
templ oddeven() {
<table>
for i := 0; i < 5; i ++ {
<tr class={ map[string]bool{"even": i%2 == 0, "odd": i%2 != 0} }>
<td>{ fmt.Sprintf("%d", i) }</td>
</tr>
}
</table>
}
func main() {
oddeven().Render(context.Background(), os.Stdout)
}
Or you can use templ.KV
with a boolean, which I think looks a little nicer:
<tr class={ templ.KV("even", i%2 == 0), templ.KV("odd", i%2 != 0) }>
<td>{ fmt.Sprintf("%d", i) }</td>
</tr>
Either way, you get dynamic class names.
<table>
<tbody>
<tr class="even">
<td>
0
</td>
</tr>
<tr class="odd">
<td>
1
</td>
</tr>
<tr class="even">
<td>
2
</td>
</tr>
<tr class="odd">
<td>
3
</td>
</tr>
<tr class="even">
<td>
4
</td>
</tr>
</tbody>
</table>
from templ.
On attributes, there's a similar feature: https://templ.guide/syntax-and-usage/attributes#spread-attributes
from templ.
@sylr do any of these solutions fit your needs?
from templ.
I'll close this as I believe we're in agreement that we don't want to add a ternary to templ.
from templ.
Related Issues (20)
- Binary in`templ_Darwin_arm64.tar.gz` v0.2.697 displays version 0.2.696 HOT 8
- -stdout sends error report to output file HOT 3
- bug: script elements don't render script templates
- lsp: support the organizeImports code action HOT 3
- Wasm support for interacting with the DOM HOT 3
- generator: can't use iterator value in for loop HOT 8
- max retries reached HOT 3
- lsp: panic on codeAction HOT 4
- question: Escape go keywords at the beginning of the line HOT 3
- generator: Duplicate Import Statements in Generated Templates Cause go build Failure HOT 4
- vscode: folded files in tree view seem to not work when rust-analyzer is installed HOT 2
- Issue: Unexpected Script Placement in Generated HTML HOT 3
- fmt: <pre> tags not handled correctly HOT 3
- parser: style attribute of DOM element doesn't accept dynamic styles HOT 1
- proposal: Typed Children for Wrappers HOT 2
- Proposal: Allow spreading List of `templ.Components`, similar to `{ children ... }` HOT 1
- css expression: found unexpected parameters
- generator: Add nonce support for style tags
- Abandoned change to not modify files where fmt makes no changes
- Proposal: Load file as templ
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from templ.