Refactor client-side fetch logic (#693)

* extract generic behaviors

* preserve query string when refreshing content

* refactor details modal refresh

* refactor bulk edit

* update tests

* restore tag modal

* Make IntelliJ aware of custom attributes

* improve e2e test coverage
This commit is contained in:
Sascha Ißbrücker
2024-04-11 19:07:20 +02:00
committed by GitHub
parent 82f86bf537
commit 65f0eb2a04
32 changed files with 630 additions and 418 deletions

View File

@@ -0,0 +1,25 @@
import { fireEvents, registerBehavior, swap } from "./index";
class FetchBehavior {
constructor(element) {
this.element = element;
const eventName = element.getAttribute("ld-on");
element.addEventListener(eventName, this.onFetch.bind(this));
}
async onFetch(event) {
event.preventDefault();
const url = this.element.getAttribute("ld-fetch");
const html = await fetch(url).then((response) => response.text());
const target = this.element.getAttribute("ld-target");
const select = this.element.getAttribute("ld-select");
swap(this.element, html, { target, select });
const events = this.element.getAttribute("ld-fire");
fireEvents(events);
}
}
registerBehavior("ld-fetch", FetchBehavior);