符合人体工程学的 HTMX 扩展,用于 Elementary
import Elementary
import ElementaryHTMX
// first-class support for all HTMX attributes
form(.hx.post("/items"), .hx.target("#list"), .hx.swap(.outerHTML)) {
input(.type(.text), .name("item"), .value("New Item"))
input(.type(.submit), .value("Add Item"))
}
div {
button(.hx.delete("items/\(item.id)")) { "❌" }
item.text
}
MyFragment(items: items)
.attributes(.hx.swapOOB(.outerHTML, "#list"))
import Elementary
import ElementaryHTMXSSE
// HTMX Server Send Events extension
div(.hx.ext(.sse), .sse.connect("/time"), .sse.swap("message")) {
Date()
}
import Elementary
import ElementaryHTMXWS
// HTMX WebSockets extension
div(.hx.ext(.ws), .ws.connect("/echo")) {
form(.ws.send) {
input(.type(.text), .name("message"))
button { "Send" }
}
div(.id("echo")) {}
}
import Elementary
import ElementaryHyperscript
// Hyperscript extension
button(.hyperscript("on click send hello to <form />")) {
"Send"
}
查看 Hummingbird 示例应用。
查看 Vapor 示例应用。
该包为所有 HTMLElements
引入了 .hx
语法 - 为大多数 HTMX 属性 提供了丰富的 API。
还有一个 ElementaryHTMXSSE
模块,为 服务器发送事件扩展 添加了 .sse
语法,以及 ElementaryHTMXWS
模块,为 WebSockets 扩展 添加了 .ws
语法。
该包还支持 Hyperscript 的 _
属性,作为 .hyperscript
。
欢迎提交 PR。