mirror of
https://github.com/robertwayne/axum-htmx
synced 2024-11-26 05:09:35 +01:00
Fixed docs
This commit is contained in:
parent
1dfff29673
commit
f07518d5a2
3 changed files with 29 additions and 19 deletions
|
@ -30,5 +30,8 @@ pin-project-lite = { version = "0.2", optional = true }
|
||||||
serde = { version = "1", features = ["derive"], optional = true }
|
serde = { version = "1", features = ["derive"], optional = true }
|
||||||
serde_json = { version = "1", optional = true }
|
serde_json = { version = "1", optional = true }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
axum = { version = "0.7.1", default-features = false }
|
||||||
|
|
||||||
[package.metadata.docs.rs]
|
[package.metadata.docs.rs]
|
||||||
all-features = true
|
all-features = true
|
||||||
|
|
22
README.md
22
README.md
|
@ -74,11 +74,9 @@ any of your responses.
|
||||||
| `HX-Reswap` | `HxReswap` | `axum_htmx::responders::SwapOption` |
|
| `HX-Reswap` | `HxReswap` | `axum_htmx::responders::SwapOption` |
|
||||||
| `HX-Retarget` | `HxRetarget` | `String` |
|
| `HX-Retarget` | `HxRetarget` | `String` |
|
||||||
| `HX-Reselect` | `HxReselect` | `String` |
|
| `HX-Reselect` | `HxReselect` | `String` |
|
||||||
| `HX-Trigger` | `HxResponseTrigger` | `String` or `axum_htmx::serde::HxEvent`* |
|
| `HX-Trigger` | `HxResponseTrigger` | `axum_htmx::serde::HxEvent` |
|
||||||
| `HX-Trigger-After-Settle` | `HxResponseTriggerAfterSettle` | `String` or `axum_htmx::serde::HxEvent`* |
|
| `HX-Trigger-After-Settle` | `HxResponseTriggerAfterSettle` | `axum_htmx::serde::HxEvent` |
|
||||||
| `HX-Trigger-After-Swap` | `HxResponseTriggerAfterSwap` | `String` or `axum_htmx::serde::HxEvent`* |
|
| `HX-Trigger-After-Swap` | `HxResponseTriggerAfterSwap` | `axum_htmx::serde::HxEvent` |
|
||||||
|
|
||||||
_* requires the `serde` feature flag to be enabled._
|
|
||||||
|
|
||||||
## Request Guards
|
## Request Guards
|
||||||
|
|
||||||
|
@ -137,7 +135,7 @@ use axum_htmx::HxResponseTrigger;
|
||||||
async fn index() -> (&'static str, HxResponseTrigger) {
|
async fn index() -> (&'static str, HxResponseTrigger) {
|
||||||
(
|
(
|
||||||
"Hello, world!",
|
"Hello, world!",
|
||||||
HxResponseTrigger(vec!["my-event".to_string()]),
|
HxResponseTrigger::from(["my-event", "second-event"]),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
@ -146,16 +144,16 @@ async fn index() -> (&'static str, HxResponseTrigger) {
|
||||||
can use via the `serde` feature flag and the `HxEvent` type.
|
can use via the `serde` feature flag and the `HxEvent` type.
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
use axum_htmx::serde::HxEvent;
|
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
|
|
||||||
// Note that we are using `HxResponseTrigger` from the `axum_htmx::serde` module
|
// Note that we are using `HxResponseTrigger` from the `axum_htmx::serde` module
|
||||||
// instead of the root module.
|
// instead of the root module.
|
||||||
use axum_htmx::serde::HxResponseTrigger;
|
use axum_htmx::{HxEvent, HxResponseTrigger};
|
||||||
|
|
||||||
async fn index() -> (&'static str, HxResponseTrigger) {
|
async fn index() -> (&'static str, HxResponseTrigger) {
|
||||||
let event = HxEvent::new_with_data(
|
let event = HxEvent::new_with_data(
|
||||||
"my-event",
|
"my-event",
|
||||||
|
// May be any object that implements `serde::Serialize`
|
||||||
json!({"level": "info", "message": {
|
json!({"level": "info", "message": {
|
||||||
"title": "Hello, world!",
|
"title": "Hello, world!",
|
||||||
"body": "This is a test message.",
|
"body": "This is a test message.",
|
||||||
|
@ -188,10 +186,10 @@ fn router_two() -> Router {
|
||||||
## Feature Flags
|
## Feature Flags
|
||||||
|
|
||||||
<!-- markdownlint-disable -->
|
<!-- markdownlint-disable -->
|
||||||
| Flag | Default | Description | Dependencies |
|
| Flag | Default | Description | Dependencies |
|
||||||
|----------|----------|------------------------------------------------------------------------------------|---------------------------------------------|
|
|----------|----------|------------------------------------------------------------|---------------------------------------------|
|
||||||
| `guards` | Disabled | Adds request guard layers. | `tower`, `futures-core`, `pin-project-lite` |
|
| `guards` | Disabled | Adds request guard layers. | `tower`, `futures-core`, `pin-project-lite` |
|
||||||
| `serde` | Disabled | Adds serde support for the `HxResponseTrigger*` and `HxLocation` response headers. | `serde`, `serde_json` |
|
| `serde` | Disabled | Adds serde support for the `HxEvent` and `LocationOptions` | `serde`, `serde_json` |
|
||||||
<!-- markdownlint-enable -->
|
<!-- markdownlint-enable -->
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
|
@ -23,7 +23,7 @@ impl HxEvent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates new event with event data.
|
/// Creates new event with data.
|
||||||
#[cfg(feature = "serde")]
|
#[cfg(feature = "serde")]
|
||||||
#[cfg_attr(feature = "unstable", doc(cfg(feature = "serde")))]
|
#[cfg_attr(feature = "unstable", doc(cfg(feature = "serde")))]
|
||||||
pub fn new_with_data<T: ::serde::Serialize>(
|
pub fn new_with_data<T: ::serde::Serialize>(
|
||||||
|
@ -116,8 +116,10 @@ impl IntoResponseParts for HxResponseTrigger {
|
||||||
type Error = HxError;
|
type Error = HxError;
|
||||||
|
|
||||||
fn into_response_parts(self, mut res: ResponseParts) -> Result<ResponseParts, Self::Error> {
|
fn into_response_parts(self, mut res: ResponseParts) -> Result<ResponseParts, Self::Error> {
|
||||||
res.headers_mut()
|
if !self.0.is_empty() {
|
||||||
.insert(headers::HX_TRIGGER, events_to_header_value(self.0)?);
|
res.headers_mut()
|
||||||
|
.insert(headers::HX_TRIGGER, events_to_header_value(self.0)?);
|
||||||
|
}
|
||||||
|
|
||||||
Ok(res)
|
Ok(res)
|
||||||
}
|
}
|
||||||
|
@ -148,8 +150,10 @@ impl IntoResponseParts for HxResponseTriggerAfterSettle {
|
||||||
type Error = HxError;
|
type Error = HxError;
|
||||||
|
|
||||||
fn into_response_parts(self, mut res: ResponseParts) -> Result<ResponseParts, Self::Error> {
|
fn into_response_parts(self, mut res: ResponseParts) -> Result<ResponseParts, Self::Error> {
|
||||||
res.headers_mut()
|
if !self.0.is_empty() {
|
||||||
.insert(headers::HX_TRIGGER, events_to_header_value(self.0)?);
|
res.headers_mut()
|
||||||
|
.insert(headers::HX_TRIGGER, events_to_header_value(self.0)?);
|
||||||
|
}
|
||||||
|
|
||||||
Ok(res)
|
Ok(res)
|
||||||
}
|
}
|
||||||
|
@ -180,8 +184,10 @@ impl IntoResponseParts for HxResponseTriggerAfterSwap {
|
||||||
type Error = HxError;
|
type Error = HxError;
|
||||||
|
|
||||||
fn into_response_parts(self, mut res: ResponseParts) -> Result<ResponseParts, Self::Error> {
|
fn into_response_parts(self, mut res: ResponseParts) -> Result<ResponseParts, Self::Error> {
|
||||||
res.headers_mut()
|
if !self.0.is_empty() {
|
||||||
.insert(headers::HX_TRIGGER, events_to_header_value(self.0)?);
|
res.headers_mut()
|
||||||
|
.insert(headers::HX_TRIGGER, events_to_header_value(self.0)?);
|
||||||
|
}
|
||||||
|
|
||||||
Ok(res)
|
Ok(res)
|
||||||
}
|
}
|
||||||
|
@ -210,5 +216,8 @@ mod tests {
|
||||||
let expected_value = r#"{"my-event":{"level":"info","message":{"body":"This is a test message.","title":"Hello, world!"}}}"#;
|
let expected_value = r#"{"my-event":{"level":"info","message":{"body":"This is a test message.","title":"Hello, world!"}}}"#;
|
||||||
|
|
||||||
assert_eq!(header_value, HeaderValue::from_static(expected_value));
|
assert_eq!(header_value, HeaderValue::from_static(expected_value));
|
||||||
|
|
||||||
|
let value = events_to_header_value(HxResponseTrigger::from(["foo", "bar"]).0).unwrap();
|
||||||
|
assert_eq!(value, HeaderValue::from_static("foo, bar"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue