Giter Site home page Giter Site logo

Comments (6)

sylr avatar sylr commented on June 15, 2024 1

I guess @a-h workaround is the closest to what I wished for.

from templ.

joerdav avatar joerdav commented on June 15, 2024

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.

a-h avatar a-h commented on June 15, 2024

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.

a-h avatar a-h commented on June 15, 2024

On attributes, there's a similar feature: https://templ.guide/syntax-and-usage/attributes#spread-attributes

from templ.

joerdav avatar joerdav commented on June 15, 2024

@sylr do any of these solutions fit your needs?

from templ.

joerdav avatar joerdav commented on June 15, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.