only return a promise for API usage

fixes https://github.com/bigskysoftware/htmx/issues/585
This commit is contained in:
carson 2021-09-06 10:43:04 -06:00
parent f4ff7ac949
commit a1d320243d
2 changed files with 24 additions and 7 deletions

View File

@ -2134,7 +2134,8 @@ return (function () {
if (context) {
if (context instanceof Element || isType(context, 'String')) {
return issueAjaxRequest(verb, path, null, null, {
targetOverride: resolveTarget(context)
targetOverride: resolveTarget(context),
returnPromise: true
});
} else {
return issueAjaxRequest(verb, path, resolveTarget(context.source), context.event,
@ -2142,7 +2143,8 @@ return (function () {
handler : context.handler,
headers : context.headers,
values : context.values,
targetOverride: resolveTarget(context.target)
targetOverride: resolveTarget(context.target),
returnPromise: true
});
}
} else {
@ -2163,7 +2165,7 @@ return (function () {
var resolve = null;
var reject = null;
etc = etc != null ? etc : {};
if(typeof Promise !== "undefined"){
if(etc.returnPromise && typeof Promise !== "undefined"){
var promise = new Promise(function (_resolve, _reject) {
resolve = _resolve;
reject = _reject;

View File

@ -31,11 +31,20 @@
htmx.logAll();
this.server.respondWith("GET", "/test", function(xhr){
xhr.respond(201, {}, '<form><input hx-trigger="keyup delay:1s changed" hx-swap="outerHTML" hx-get="/test" id="i1" value="blahblah"/></form>')
// var i = 1;
// this.server.respondWith("GET", "/test", function(xhr){
// xhr.respond(201, {}, "" + i++);
// });
//
// make('<div hx-get="/test" hx-trigger="load, every 5s">Init</div>');
let xhr;
htmx.on('htmx:beforeSend', function(evt) {
xhr = evt.detail.xhr;
});
make('<form hx-target="this"><input hx-trigger="keyup delay:1s changed" hx-swap="outerHTML" hx-get="/test" id="i1"/></form>');
</script>
@ -49,8 +58,14 @@ Autorespond: <input id="autorespond" type="checkbox" onclick="toggleAutoRespond(
<hr/>
<div id="work-area" hx-history-elt>
<button hx-get="/foo" id="my-button">My Button</button>
</div>
<script>
htmx.on('#my-button', 'click', function (evt) {
xhr.abort();
});
</script>
</body>
</html>