mirror of
https://github.com/bigskysoftware/htmx.git
synced 2025-09-30 14:31:47 +00:00
bump version & disambiguate non-swaps from errors
This commit is contained in:
parent
a4f1dc8a49
commit
e67e5ba41b
@ -1,6 +1,8 @@
|
||||
# Changelog
|
||||
|
||||
|
||||
## [1.6.1] - 2021-11-??
|
||||
|
||||
## [1.6.0] - 2021-10-01
|
||||
|
||||
* Completely reworked `<script>` tag support that now supports the `<script src="...'/>` form
|
||||
|
@ -35,7 +35,7 @@ By removing these arbitrary constraints htmx completes HTML as a
|
||||
|
||||
```html
|
||||
<!-- Load from unpkg -->
|
||||
<script src="https://unpkg.com/htmx.org@1.6.0" ></script>
|
||||
<script src="https://unpkg.com/htmx.org@1.6.1" ></script>
|
||||
<!-- have a button POST a click via AJAX -->
|
||||
<button hx-post="/clicked" hx-swap="outerHTML">
|
||||
Click Me
|
||||
|
@ -5,7 +5,7 @@
|
||||
"AJAX",
|
||||
"HTML"
|
||||
],
|
||||
"version": "1.6.0",
|
||||
"version": "1.6.1",
|
||||
"homepage": "https://htmx.org/",
|
||||
"bugs": {
|
||||
"url": "https://github.com/bigskysoftware/htmx/issues"
|
||||
|
@ -67,7 +67,7 @@ return (function () {
|
||||
createWebSocket: function(url){
|
||||
return new WebSocket(url, []);
|
||||
},
|
||||
version: "1.6.0"
|
||||
version: "1.6.1"
|
||||
};
|
||||
|
||||
var VERBS = ['get', 'post', 'put', 'delete', 'patch'];
|
||||
@ -2481,11 +2481,13 @@ return (function () {
|
||||
// overriding the detail.shouldSwap property
|
||||
var shouldSwap = xhr.status >= 200 && xhr.status < 400 && xhr.status !== 204;
|
||||
var serverResponse = xhr.response;
|
||||
var beforeSwapDetails = mergeObjects({shouldSwap: shouldSwap, serverResponse:serverResponse}, responseInfo);
|
||||
var isError = xhr.status >= 400;
|
||||
var beforeSwapDetails = mergeObjects({shouldSwap: shouldSwap, serverResponse:serverResponse, isError:isError}, responseInfo);
|
||||
if (!triggerEvent(target, 'htmx:beforeSwap', beforeSwapDetails)) return;
|
||||
|
||||
target = beforeSwapDetails.target; // allow re-targeting
|
||||
serverResponse = beforeSwapDetails.serverResponse; // allow updating content
|
||||
isError = beforeSwapDetails.isError; // allow updating error
|
||||
|
||||
if (beforeSwapDetails.shouldSwap) {
|
||||
if (xhr.status === 286) {
|
||||
@ -2600,7 +2602,8 @@ return (function () {
|
||||
} else {
|
||||
doSwap();
|
||||
}
|
||||
} else {
|
||||
}
|
||||
if (isError) {
|
||||
triggerErrorEvent(elt, 'htmx:responseError', mergeObjects({error: "Response Status Error Code " + xhr.status + " from " + responseInfo.pathInfo.path}, responseInfo));
|
||||
}
|
||||
}
|
||||
|
@ -871,7 +871,7 @@ describe("Core htmx AJAX Tests", function(){
|
||||
btn.click();
|
||||
this.server.respond();
|
||||
btn.innerText.should.equal("Clicked!");
|
||||
htmx.off("htmx:shouldSwap", handler);
|
||||
htmx.off("htmx:beforeSwap", handler);
|
||||
});
|
||||
|
||||
it('400 content can be retargeted if configured to do so', function()
|
||||
@ -891,7 +891,29 @@ describe("Core htmx AJAX Tests", function(){
|
||||
btn.click();
|
||||
this.server.respond();
|
||||
div.innerText.should.equal("Clicked!");
|
||||
htmx.off("htmx:shouldSwap", handler);
|
||||
htmx.off("htmx:beforeSwap", handler);
|
||||
});
|
||||
|
||||
it('errors are triggered only on 400+', function()
|
||||
{
|
||||
var errors = 0;
|
||||
var handler = htmx.on("htmx:responseError", function(){
|
||||
errors++;
|
||||
})
|
||||
this.server.respondWith("GET", "/test1", function (xhr) {
|
||||
xhr.respond(204, {}, "Clicked!");
|
||||
});
|
||||
this.server.respondWith("GET", "/test2", function (xhr) {
|
||||
xhr.respond(400, {}, "Clicked!");
|
||||
});
|
||||
var btn1 = make('<button hx-get="/test1">Click Me!</button>')
|
||||
var btn2 = make('<button hx-get="/test2">Click Me!</button>')
|
||||
btn1.click();
|
||||
btn2.click();
|
||||
this.server.respond();
|
||||
this.server.respond();
|
||||
errors.should.equal(1);
|
||||
htmx.off("htmx:responseError", handler);
|
||||
});
|
||||
|
||||
|
||||
@ -908,11 +930,10 @@ describe("Core htmx AJAX Tests", function(){
|
||||
xhr.respond(400, {}, "Clicked!");
|
||||
});
|
||||
var btn = make('<button hx-get="/test">Click Me!</button>')
|
||||
var div = make('<div id="d1"></div>')
|
||||
btn.click();
|
||||
this.server.respond();
|
||||
div.innerText.should.equal("Clicked!!!");
|
||||
htmx.off("htmx:shouldSwap", handler);
|
||||
btn.innerText.should.equal("Clicked!!!");
|
||||
htmx.off("htmx:beforeSwap", handler);
|
||||
});
|
||||
|
||||
it('scripts w/ src attribute are properly loaded', function(done)
|
||||
|
@ -103,13 +103,13 @@ It can be used via [NPM](https://www.npmjs.com/) as "`htmx.org`" or downloaded o
|
||||
[unpkg](https://unpkg.com/browse/htmx.org/) or your other favorite NPM-based CDN:
|
||||
|
||||
``` html
|
||||
<script src="https://unpkg.com/htmx.org@1.6.0"></script>
|
||||
<script src="https://unpkg.com/htmx.org@1.6.1"></script>
|
||||
```
|
||||
|
||||
For added security, you can load the script using [Subresource Integrity (SRI)](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity).
|
||||
|
||||
``` html
|
||||
<script src="https://unpkg.com/htmx.org@1.6.0" integrity="sha384-G4dtlRlMBrk5fEiRXDsLjriPo8Qk5ZeHVVxS8KhX6D7I9XXJlNqbdvRlp9/glk5D" crossorigin="anonymous"></script>
|
||||
<script src="https://unpkg.com/htmx.org@1.6.1" integrity="sha384-G4dtlRlMBrk5fEiRXDsLjriPo8Qk5ZeHVVxS8KhX6D7I9XXJlNqbdvRlp9/glk5D" crossorigin="anonymous"></script>
|
||||
```
|
||||
|
||||
## <a name="ajax"></a> [AJAX](#ajax)
|
||||
|
@ -61,8 +61,8 @@ If you wish to put a template into another file, you can use a directive such as
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<title>JS Bin</title>
|
||||
<script src="https://unpkg.com/htmx.org@1.6.0"></script>
|
||||
<script src="https://unpkg.com/htmx.org@1.6.0/dist/ext/client-side-templates.js"></script>
|
||||
<script src="https://unpkg.com/htmx.org@1.6.1"></script>
|
||||
<script src="https://unpkg.com/htmx.org@1.6.1/dist/ext/client-side-templates.js"></script>
|
||||
<script src="https://unpkg.com/mustache@latest"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
@ -35,7 +35,7 @@ By removing these arbitrary constraints htmx completes HTML as a
|
||||
|
||||
```html
|
||||
<!-- Load from unpkg -->
|
||||
<script src="https://unpkg.com/htmx.org@1.6.0"></script>
|
||||
<script src="https://unpkg.com/htmx.org@1.6.1"></script>
|
||||
<!-- have a button POST a click via AJAX -->
|
||||
<button hx-post="/clicked" hx-swap="outerHTML">
|
||||
Click Me
|
||||
|
Loading…
x
Reference in New Issue
Block a user