Coverage for src / lexigram / ui / htmx / attrs.py: 43%
28 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-10 04:11 +0800
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-10 04:11 +0800
1"""HTMX helpers for Lexigram Admin UI."""
3from __future__ import annotations
5from typing import Any
8def hx_get(url: str, **kwargs: Any) -> dict[str, Any]:
9 """HTMX GET request attribute."""
10 return {"hx-get": url, **kwargs}
13def hx_post(url: str, **kwargs: Any) -> dict[str, Any]:
14 """HTMX POST request attribute."""
15 return {"hx-post": url, **kwargs}
18def hx_put(url: str, **kwargs: Any) -> dict[str, Any]:
19 """HTMX PUT request attribute."""
20 return {"hx-put": url, **kwargs}
23def hx_delete(url: str, **kwargs: Any) -> dict[str, Any]:
24 """HTMX DELETE request attribute."""
25 return {"hx-delete": url, **kwargs}
28def hx_patch(url: str, **kwargs: Any) -> dict[str, Any]:
29 """HTMX PATCH request attribute."""
30 return {"hx-patch": url, **kwargs}
33def hx_target(target: str) -> dict[str, Any]:
34 """HTMX target attribute."""
35 return {"hx-target": target}
38def hx_swap(swap: str) -> dict[str, Any]:
39 """HTMX swap attribute."""
40 return {"hx-swap": swap}
43def hx_trigger(trigger: str) -> dict[str, Any]:
44 """HTMX trigger attribute."""
45 return {"hx-trigger": trigger}
48def hx_vals(vals: dict[str, Any] | str) -> dict[str, Any]:
49 """HTMX values attribute."""
50 from lexigram.serialization import dumps_str
52 if isinstance(vals, dict):
53 vals = dumps_str(vals)
54 return {"hx-vals": vals}
57def hx_headers(headers: dict[str, Any] | str) -> dict[str, Any]:
58 """HTMX headers attribute."""
59 from lexigram.serialization import dumps_str
61 if isinstance(headers, dict):
62 headers = dumps_str(headers)
63 return {"hx-headers": headers}