diff --git a/src/ext/loading-states.js b/src/ext/loading-states.js index d18b109f..20f7d3bf 100644 --- a/src/ext/loading-states.js +++ b/src/ext/loading-states.js @@ -169,7 +169,7 @@ ) } - if (name === 'htmx:afterOnLoad') { + if (name === 'htmx:beforeOnLoad') { while (loadingStatesUndoQueue.length > 0) { loadingStatesUndoQueue.shift()() } diff --git a/test/ext/loading-states.js b/test/ext/loading-states.js index d64c2b47..d73634d4 100644 --- a/test/ext/loading-states.js +++ b/test/ext/loading-states.js @@ -1,4 +1,4 @@ -describe("loading states extension", function() { +describe("loading states extension", function () { beforeEach(function () { this.server = makeServer(); this.clock = sinon.useFakeTimers(); @@ -140,4 +140,28 @@ describe("loading states extension", function() { btn.getElementsByTagName("button")[0].innerHTML.should.equal("Clicked!"); }); + it('history restore should not have loading states in content', function () { + // this test is based on test from test/attributes/hx-push-url.js:65 + this.server.respondWith("GET", "/test1", ''); + this.server.respondWith("GET", "/test2", ''); + + make('
'); + + byId("d1").click(); + byId("d1").disabled.should.be.true; + this.server.respond(); + byId("d2").disabled.should.be.false; + var workArea = getWorkArea(); + workArea.textContent.should.equal("test1"); + + byId("d2").click(); + byId("d2").disabled.should.be.true; + this.server.respond(); + workArea.textContent.should.equal("test2") + + htmx._('restoreHistory')("/test1") + + var el = byId("d2"); + el.disabled.should.be.false; + }) });