Fix aria-busy during swap and make it a plugin

This commit is contained in:
2026-09-07 17:23:23 +02:00
parent 4f885b4ba7
commit cbd80c17a2
+18 -11
View File
@@ -48,19 +48,26 @@ polyfillCountryFlagEmojis();
/**
* HTMX
*/
document.body.addEventListener(
"htmx:before:request" as keyof HTMLElementEventMap,
(event) => {
(event as CustomEvent).detail.ctx.target.ariaBusy = true;
htmx.registerExtension("aria-busy", {
// biome-ignore lint/style/useNamingConvention: api's name
htmx_before_request: (
_: HTMLElement,
detail: { ctx: { target: HTMLElement | undefined } },
) => {
if (detail.ctx.target !== undefined) {
(detail.ctx.target as HTMLElement).ariaBusy = "true";
}
},
);
document.body.addEventListener(
"htmx:before:swap" as keyof HTMLElementEventMap,
(event) => {
(event as CustomEvent).detail.ctx.target.ariaBusy = null;
// biome-ignore lint/style/useNamingConvention: api's name
htmx_after_swap: (
_: HTMLElement,
detail: { ctx: { target: HTMLElement | undefined } },
) => {
if (detail.ctx.target !== undefined) {
(detail.ctx.target as HTMLElement).ariaBusy = null;
}
},
);
});
Object.assign(window, { htmx });