| Commit message (Collapse) | Author | Age | Lines |
|
|
|
|
|
|
|
|
| |
Hey! I just discovered this repo and I love being able to write
templates while still having compile-time checks.
I was looking through the code and noticed slices aren't currently
preallocated in `Map()` and `Classes.Render()`. Preallocating will
improve performance since the resulting slice won't have to be grown
dynamically during the append loop.
|
|
|
|
|
|
|
|
|
| |
Hello,
A patch to add
[`download`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#download)
and
[`referrerpolicy`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#referrerpolicy)
for the anchor `<a>` element.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Hello,
A small patch to add the following attributes:
- formaction
- formenctype
- formmethod
- formnovalidate
- formtarget
These attributes are useful in `<input type="submit">` element: [MDN
documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/submit#additional_attributes)
|
|
|
|
|
| |
This PR updates the HTML5 function to accept and render additional HTML
attributes. An additional test case to validate this enhancement has
been added as well.
|
| |
|
|
|
|
|
|
|
|
| |
This PR adds popover attributes as detailed here:
https://developer.mozilla.org/en-US/docs/Web/API/Popover_API/Using
---------
Co-authored-by: Markus Wüstenberg <markus@maragu.dk>
|
|
|
|
| |
The slot attribute is a standard attribute for use with web components:
https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots
|
| |
|
|
|
|
|
|
| |
v1.0.0-beta1 gave no problems with my other gomponents libraries, that
of others, and some of my large projects, so releasing v1!
No more breaking changes! 😁
|
|
|
| |
So we can be sure all dot imports work at the same time.
|
| |
|
|
|
| |
Mainly the linter action is easier to use.
|
|
|
|
| |
Until we're out of beta.
|
|
|
| |
It didn't actually work the way it was written.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This is a breaking change to move gomponents to my own import namespace.
I will obviously be careful with this, test it out in all kinds of
scenarios, release betas, etc. But otherwise, because the `Node`
interface is so simple and has basically never changed, I don't think
this will break much. 🤞
Fixes #200
|
|
|
|
|
|
|
|
|
|
|
| |
Because the added value of having this was very small, and I don't want
to confuse people about what's properly supported, I've removed the SVG
package. As #196 showed, there can easily be conflicts between HTML and
SVG, and the rendering isn't really set up for anything else than HTML.
It's still easy to create SVG elements: `html.SVG` exists in this repo,
and the rest is often just a string that can be included using `g.Raw`.
Fixes #206
|
| |
|
| |
|
|
|
|
| |
For getting the slice index using a counter outside the closure.
|
|
|
|
| |
Apparently, [Node]s doesn't link in Godoc, while [Node]-s does.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changes `Group` to be a type instead of a function, which means it
can support both grouping `[]Node` as well as doing variadic-ish slice things
like `Group{n1, n2}`.
This also means that `Map` can just return a `Group`.
Special thanks to @deitrix for this simple and elegant solution that,
for some reason or another, has had me perplexed for a long time.
Fixes #201.
|
|
|
|
| |
This reverts commit a4327a0fb6bd02a3d8fb7677ba118b3b5dd1b3e8.
|
| |
|
| |
|
| |
|
|
|
| |
Also, remove the other examples and simplify the readme.
|
|
|
| |
Fixes #184
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change makes the result of `Group` renderable directly, instead of
panicking, with the important caveat that root-level attributes are
_ignored_. I don't think this will give problems in practice, as the
main use case for rendering `Group` is basically to return root-level
elements to the client using something like HTMX.
I tried adding a `Fragment`, but it was weird and confusing having two
functions (`Group` and `Fragment`) do essentially the same thing, the
only difference being whether the argument was a slice of `Node`s or
varargs.
Fixes #162
|
|
|
|
| |
functions (#194)
|
| |
|
|
|
|
|
|
|
| |
It can appear in a `<blockquote>`.
- Closes https://github.com/maragudk/gomponents/issues/189
Signed-off-by: Yarden Shoham <git@yardenshoham.com>
|
| |
|
| |
|
|
|
|
|
| |
Also add an example for `http.Adapt`.
Fixes #182
|
|
|
|
|
|
| |
For consistency with the other name clashes. Also, adjust the readme.
I know it's a bit weird to add a pre-deprecated function, but know it's
the same as the other functions.
|
| |
|
|
|
|
|
| |
`<time>`, `<del>` and `<ins>` can receive a
[`datetime`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLTimeElement/dateTime)
attribute
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I ran into some situation where I want to conditionally render a node if
some variable is not nil and obviously I got a panic
```go
// package viewmodels
type SomePage struct {
s *string
}
// package views
func SomePage (vm viewmodels.SomePage) g,Node {
return Div(
If(vm.s == nil, Text("s is nil"),
If(vm.s !- nil, Text("s is " + vm.s), // this will panic when `s` is nil
)
}
```
In this situation, go will interpret the code of the second `if`
regardless of the condition because the code itself is not in a
condition.
This PR introduces a new `Iff` helper that accepts a callback. The
callback content is only interpreted when it's called, making the code
safe:
```go
// package viewmodels
type SomePage struct {
s *string
}
// package views
func SomePage (vm viewmodels.SomePage) g,Node {
return Div(
Iff(vm.s == nil, func () g.Node { return Text("s is nil") },
Iff(vm.s !- nil, func () g.Node { return Text("s is " + vm.s) },
)
}
```
I'm aware of the `Lazy` effort on the side, but I guess this is no a
breaking change and can still exist in addition to the `Lazy` effort.
Co-authored-by: Markus Wüstenberg <markus@maragu.dk>
|
|
|
|
|
|
|
| |
`dir` is a global attribute that lets you specify whether text is RTL or
LTR or if it should be determined by the browser.
Documentation:
https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir
|
|
|
| |
Fixes #168 and fixes #169.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This change addresses #170 by deprecating some HTML helpers in favor of
using one of the styles as a main one, selected based on what I think is
the main use case.
- For `Data`, it's the attribute. I don't see much use of the `<data>`
element in the wild.
- For `Style`, it's the attribute. The `style` attribute is everywhere,
the `<style>` element is perhaps less so (but not much). This was the
hardest one to decide.
- For `Title`, it's the attribute. The `<title>` element only shows up
once per document.
- For `Form`, it's the element. I haven't seen much use of the `form`
attribute in the wild.
I know this is arguably not a "consistent" approach, but I think it
makes for a much nicer API, simply because the most-used option will not
be a suffixed version.
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
| |
This change addresses #170 by deprecating some HTML helpers in favor of using one of the styles as a main one,
selected based on what I think is the main use case.
- For `Data`, it's the attribute. I don't see much use of the `<data>` element in the wild.
- For `Style`, it's the attribute. The `style` attribute is everywhere, the `<style>` element is perhaps less so (but not much). This was the hardest one to decide.
- For `Title`, it's the attribute. The `<title>` element only shows up once per document.
- For `Form`, it's the element. I haven't seen much use of the `data` attribute in the wild.
I know this is arguably not a "consistent" approach, but I think it makes for a much nicer API, simply because the most-used option will not be a suffixed version.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When using `<script>` to pull a library from a CDN, it's usually a good
idea to attach an integrity check so that if they get hacked and someone
changes all the script, malicious scripts don't get executed on your
website.
To achieve this, you need to attach `integrity` and `crossorigin` to
your `<script/>` tag
```go
Script(
Scr("https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js"),
Integrity("sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW"),
CrossOrigin("anonymous"),
)
```
Turns into
```html
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js"
integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW"
crossorigin="anonymous"></script>
```
Hint for whoever likes unpkg.com, adding `?meta` at the end of any
script you import form them will give you the current `integrity` for
the file. Example: https://unpkg.com/three@0.165.0/build/three.cjs?meta
|
|/ |
|
|
|
|
| |
This reverts commit b33f84310916b238af0006fb151a4b980721bc33.
|