update target to result of `beforeSwap` event
This commit is contained in:
Carson Gross 2023-02-24 11:01:53 -07:00
parent 26bd4002d0
commit f84029badb
2 changed files with 27 additions and 0 deletions

View File

@ -3102,6 +3102,7 @@ return (function () {
serverResponse = beforeSwapDetails.serverResponse; // allow updating content
isError = beforeSwapDetails.isError; // allow updating error
responseInfo.target = target; // Make updated target available to response events
responseInfo.failed = isError; // Make failed property available to response events
responseInfo.successful = !isError; // Make successful property available to response events

View File

@ -628,4 +628,30 @@ describe("Core htmx Events", function() {
}
});
it("has updated target available when target set via htmx:beforeSwap", function () {
var targetWasUpdatedInAfterSwapHandler = false;
var beforeSwapHandler = htmx.on("htmx:beforeSwap", function (evt) {
console.log("beforeSwap", evt.detail.target, byId('d2'));
evt.detail.target = byId('d2');
});
var afterSwapHandler = htmx.on("htmx:afterSwap", function (evt) {
console.log("afterSwap", evt.detail.target, byId('d2'));
targetWasUpdatedInAfterSwapHandler = evt.detail.target === byId('d2');
});
try {
this.server.respondWith("GET", "/test", "updated");
make("<div id='d0' hx-get='/test' hx-target='#d1'></div><div id='d1'></div><div id='d2'></div>");
var div = byId('d0');
div.click();
this.server.respond();
targetWasUpdatedInAfterSwapHandler.should.equal(true);
} finally {
htmx.off("htmx:beforeSwap", beforeSwapHandler);
htmx.off("htmx:afterSwap", afterSwapHandler);
}
});
});