From f8dfe727b33d498e89f4d842e5c9341629a94897 Mon Sep 17 00:00:00 2001 From: carson Date: Tue, 26 May 2020 12:14:03 -0700 Subject: [PATCH] final countdown for publishing 0.0.4 --- README.md | 2 +- dist/ext/include-vals.js | 24 ++++++++++ dist/ext/remove-me.js | 17 +++++++ dist/htmx.js | 54 ++++++++++++++++------ dist/htmx.min.js | 2 +- dist/htmx.min.js.gz | Bin 6781 -> 6878 bytes www/index.md | 2 +- www/js/htmx.js | 54 ++++++++++++++++------ www/test/0.0.4/src/ext/include-vals.js | 24 ++++++++++ www/test/0.0.4/src/ext/remove-me.js | 17 +++++++ www/test/0.0.4/src/htmx.js | 54 ++++++++++++++++------ www/test/0.0.4/test/ext/bad-extension.js | 27 +++++++++++ www/test/0.0.4/test/ext/include-vals.js | 23 ++++++++++ www/test/0.0.4/test/ext/remove-me.js | 55 +++++++++++++++++++++++ www/test/0.0.4/test/index.html | 9 ++++ 15 files changed, 319 insertions(+), 45 deletions(-) create mode 100644 dist/ext/include-vals.js create mode 100644 dist/ext/remove-me.js create mode 100644 www/test/0.0.4/src/ext/include-vals.js create mode 100644 www/test/0.0.4/src/ext/remove-me.js create mode 100644 www/test/0.0.4/test/ext/bad-extension.js create mode 100644 www/test/0.0.4/test/ext/include-vals.js create mode 100644 www/test/0.0.4/test/ext/remove-me.js diff --git a/README.md b/README.md index 6e00e860..9633bf8c 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ htmx is a set of HTML extensions give you to access to [AJAX](https://htmx.org/d via [attributes](https://htmx.org/reference#attributes), allowing you to build [modern UI](https://htmx.org/examples) with the [simplicity](https://en.wikipedia.org/wiki/HATEOAS) and [power](https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm) of hypertext -htmx is small ([~6k min.gz'd](https://unpkg.com/htmx.org/dist/)), +htmx is small ([~7k min.gz'd](https://unpkg.com/htmx.org/dist/)), [dependency-free](https://github.com/bigskysoftware/htmx/blob/master/package.json), [extendable](https://htmx.org/extensions), IE11 compatible & you can try it out quickly, without a huge rewrite diff --git a/dist/ext/include-vals.js b/dist/ext/include-vals.js new file mode 100644 index 00000000..6e8f8b3a --- /dev/null +++ b/dist/ext/include-vals.js @@ -0,0 +1,24 @@ +(function(){ + + function mergeObjects(obj1, obj2) { + for (var key in obj2) { + if (obj2.hasOwnProperty(key)) { + obj1[key] = obj2[key]; + } + } + return obj1; + } + + htmx.defineExtension('include-vals', { + onEvent: function (name, evt) { + if (name === "configRequest.htmx") { + var includeValsElt = htmx.closest(evt.detail.elt, "[include-vals],[data-include-vals]"); + if (includeValsElt) { + var includeVals = includeValsElt.getAttribute("include-vals") || includeValsElt.getAttribute("data-include-vals"); + var valuesToInclude = eval("({" + includeVals + "})"); + mergeObjects(evt.detail.parameters, valuesToInclude); + } + } + } + }); +})(); diff --git a/dist/ext/remove-me.js b/dist/ext/remove-me.js new file mode 100644 index 00000000..e5cef276 --- /dev/null +++ b/dist/ext/remove-me.js @@ -0,0 +1,17 @@ +(function(){ + htmx.defineExtension('remove-me', { + onEvent: function (name, evt) { + if (name === "processedNode.htmx") { + var elt = evt.detail.elt; + if (elt.getAttribute) { + var timing = elt.getAttribute("remove-me") || elt.getAttribute("data-remove-me"); + if (timing) { + setTimeout(function () { + elt.parentElement.removeChild(elt); + }, htmx.parseInterval(timing)); + } + } + } + } + }); +})(); diff --git a/dist/htmx.js b/dist/htmx.js index 3731fe4e..52116ab3 100644 --- a/dist/htmx.js +++ b/dist/htmx.js @@ -332,8 +332,12 @@ return (function () { var extensions = getExtensions(target); for (var i = 0; i < extensions.length; i++) { var extension = extensions[i]; - if (extension.isInlineSwap(swapStyle)) { - return true; + try { + if (extension.isInlineSwap(swapStyle)) { + return true; + } + } catch(e) { + logError(e); } } return swapStyle === "outerHTML"; @@ -492,8 +496,12 @@ return (function () { var extensions = getExtensions(elt); for (var i = 0; i < extensions.length; i++) { var ext = extensions[i]; - if (ext.handleSwap(swapStyle, target, fragment, settleInfo)) { - return; + try { + if (ext.handleSwap(swapStyle, target, fragment, settleInfo)) { + return; + } + } catch (e) { + logError(e); } } swapInnerHTML(target, fragment, settleInfo); @@ -708,7 +716,7 @@ return (function () { } var response = event.data; - forEach(getExtensions(elt), function(extension){ + withExtensions(elt, function(extension){ response = extension.transformResponse(response, null, elt); }); @@ -904,13 +912,31 @@ return (function () { } function triggerErrorEvent(elt, eventName, detail) { - triggerEvent(elt, eventName, mergeObjects({isError:true}, detail)); + triggerEvent(elt, eventName, mergeObjects({error:eventName}, detail)); } function ignoreEventForLogging(eventName) { return eventName === "processedNode.htmx" } + function withExtensions(elt, toDo) { + forEach(getExtensions(elt), function(extension){ + try { + toDo(extension); + } catch (e) { + logError(e); + } + }); + } + + function logError(msg) { + if(console.error) { + console.error(msg); + } else if (console.log) { + console.log("ERROR: ", msg); + } + } + function triggerEvent(elt, eventName, detail) { if (detail == null) { detail = {}; @@ -920,13 +946,14 @@ return (function () { if (htmx.logger && !ignoreEventForLogging(eventName)) { htmx.logger(elt, eventName, detail); } - if (detail.isError) { + if (detail.error) { + logError(detail.error); sendError(elt, eventName, detail); } var eventResult = elt.dispatchEvent(event); - forEach(getExtensions(elt), function (extension) { + withExtensions(elt, function (extension) { eventResult = eventResult && (extension.onEvent(eventName, event) !== false) - }) + }); return eventResult; } @@ -1239,7 +1266,7 @@ return (function () { function encodeParamsForBody(xhr, elt, filteredParameters) { var encodedParameters = null; - forEach(getExtensions(elt), function (extension) { + withExtensions(elt, function (extension) { if (encodedParameters == null) { encodedParameters = extension.encodeParameters(xhr, filteredParameters, elt); } @@ -1361,7 +1388,7 @@ return (function () { if (!triggerEvent(elt, 'beforeSwap.htmx', eventDetail)) return; var resp = this.response; - forEach(getExtensions(elt), function(extension){ + withExtensions(elt, function(extension){ resp = extension.transformResponse(resp, xhr, elt); }); @@ -1421,11 +1448,10 @@ return (function () { } } } else { - triggerErrorEvent(elt, 'responseError.htmx', eventDetail); + triggerErrorEvent(elt, 'responseError.htmx', mergeObjects({error: "Response Status Error Code " + this.status + " from " + path}, eventDetail)); } } catch (e) { - eventDetail['exception'] = e; - triggerErrorEvent(elt, 'onLoadError.htmx', eventDetail); + triggerErrorEvent(elt, 'onLoadError.htmx', mergeObjects({error:e}, eventDetail)); throw e; } finally { removeRequestIndicatorClasses(elt); diff --git a/dist/htmx.min.js b/dist/htmx.min.js index 8865b535..3787dcad 100644 --- a/dist/htmx.min.js +++ b/dist/htmx.min.js @@ -1 +1 @@ -(function(e,t){if(typeof define==="function"&&define.amd){define([],t)}else{e.htmx=t()}})(typeof self!=="undefined"?self:this,function(){return function(){"use strict";var t=["get","post","put","delete","patch"];function a(e){if(e==="null"||e==="false"||e===""){return null}else if(e.lastIndexOf("ms")===e.length-2){return parseFloat(e.substr(0,e.length-2))}else if(e.lastIndexOf("s")===e.length-1){return parseFloat(e.substr(0,e.length-1))*1e3}else{return parseFloat(e)}}function u(e,t){return e.getAttribute&&e.getAttribute(t)}function w(e,t){return u(e,t)||u(e,"data-"+t)}function o(e){return e.parentElement}function E(){return document}function l(e,t){if(t(e)){return e}else if(o(e)){return l(o(e),t)}else{return null}}function L(e,t){var r=null;l(e,function(e){return r=w(e,t)});return r}function s(e,t){var r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector;return r&&r.call(e,t)}function r(e){var t=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i;var r=t.exec(e);if(r){return r[1].toLowerCase()}else{return""}}function n(e,t){var r=new DOMParser;var n=r.parseFromString(e,"text/html");var i=n.body;while(t>0){t--;i=i.firstChild}if(i==null){i=E().createDocumentFragment()}return i}function f(e){var t=r(e);switch(t){case"thead":case"tbody":case"tfoot":case"colgroup":case"caption":return n(""+e+"
",1);case"col":return n(""+e+"
",2);case"tr":return n(""+e+"
",2);case"td":case"th":return n(""+e+"
",3);default:return n(e,0)}}function i(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"}function c(e){return i(e,"Function")}function v(e){return i(e,"Object")}function O(e){var t="htmx-internal-data";var r=e[t];if(!r){r=e[t]={}}return r}function h(e){var t=[];if(e){for(var r=0;r=0}function m(e){return E().body.contains(e)}function g(e){return e.split(/\s+/)}function p(e,t){for(var r in t){if(t.hasOwnProperty(r)){e[r]=t[r]}}return e}function e(e){return eval(e)}function x(t){var e=htmx.on("load.htmx",function(e){t(e.detail.elt)});return e}function y(){htmx.logger=function(e,t,r){if(console){console.log(t,e,r)}}}function b(e,t){if(t){return e.querySelector(t)}else{return E().body.querySelector(e)}}function S(e,t){if(t){return e.querySelectorAll(t)}else{return E().body.querySelectorAll(e)}}function T(e,t){if(t){setTimeout(function(){T(e)},t)}else{e.parentElement.removeChild(e)}}function H(e,t,r){if(r){setTimeout(function(){H(e,t)},r)}else{e.classList.add(t)}}function N(e,t,r){if(r){setTimeout(function(){N(e,t)},r)}else{e.classList.remove(t)}}function q(e,t){e.classList.toggle(t)}function X(e,t){C(e.parentElement.children,function(e){N(e,t)});H(e,t)}function A(e,t){do{if(e==null||s(e,t))return e}while(e=e&&o(e))}function k(e,t,r){if(c(t)){return{target:E().body,event:e,listener:t}}else{return{target:e,event:t,listener:r}}}function R(t,r,n){it(function(){var e=k(t,r,n);e.target.addEventListener(e.event,e.listener)});var e=c(r);return e?r:n}function D(t,r,n){it(function(){var e=k(t,r,n);e.target.removeEventListener(e.event,e.listener)});return c(r)?r:n}function M(e){var t=l(e,function(e){return w(e,"hx-target")!==null});if(t){var r=w(t,"hx-target");if(r==="this"){return t}else if(r.indexOf("closest ")===0){return A(e,r.substr(8))}else{return E().querySelector(r)}}else{var n=O(e);if(n.boosted){return E().body}else{return e}}}function I(t,r){C(t.attributes,function(e){if(!r.hasAttribute(e.name)){t.removeAttribute(e.name)}});C(r.attributes,function(e){t.setAttribute(e.name,e.value)})}function F(e,t){var r=nt(t);for(var n=0;n0){var i=r.firstChild;e.insertBefore(i,t);if(i.nodeType!==Node.TEXT_NODE){n.tasks.push(U(i))}}}function B(e){var t=O(e);if(t.webSocket){t.webSocket.close()}if(t.sseEventSource){t.sseEventSource.close()}if(e.children){C(e.children,function(e){B(e)})}}function W(e,t,r){if(e.tagName==="BODY"){return K(e,t)}else{var n=e.previousSibling;z(o(e),e,t,r);if(n==null){var i=o(e).firstChild}else{var i=n.nextSibling}while(i&&i!=e){r.elts.push(i);i=i.nextSibling}B(e);o(e).removeChild(e)}}function V(e,t,r){return z(e,e.firstChild,t,r)}function G(e,t,r){return z(o(e),e,t,r)}function Y(e,t,r){return z(e,null,t,r)}function _(e,t,r){return z(o(e),e.nextSibling,t,r)}function K(e,t,r){var n=e.firstChild;z(e,n,t,r);if(n){while(n.nextSibling){e.removeChild(n.nextSibling)}e.removeChild(n)}}function Q(e,t){var r=L(e,"hx-select");if(r){var n=E().createDocumentFragment();C(t.querySelectorAll(r),function(e){n.appendChild(e)});t=n}return t}function Z(e,t,r,n,i){switch(e){case"outerHTML":W(r,n,i);return;case"afterbegin":V(r,n,i);return;case"beforebegin":G(r,n,i);return;case"beforeend":Y(r,n,i);return;case"afterend":_(r,n,i);return;default:var o=nt(t);for(var a=0;ahtmx.config.historyCacheSize){i.shift()}localStorage.setItem("htmx-history-cache",JSON.stringify(i))}function Xe(e){var t=JSON.parse(localStorage.getItem("htmx-history-cache"))||[];for(var r=0;r=200&&this.status<400){Te(E().body,"historyCacheMissLoad.htmx",i);var e=f(this.response);e=e.querySelector("[hx-history-elt],[data-hx-history-elt]")||e;var t=Ne();var r=Qe(t);K(t,e,r);Re(r.tasks);He=n}else{Oe(E().body,"historyCacheMissLoadError.htmx",i)}};e.send()}function Me(e){Ae(He);e=e||location.pathname+location.search;Te(E().body,"historyRestore.htmx",{path:e});var t=Xe(e);if(t){var r=f(t.content);var n=Ne();var i=Qe(n);K(n,r,i);Re(i.tasks);document.title=t.title;window.scrollTo(0,t.scroll);He=e}else{De(e)}}function Ie(e){return L(e,"hx-push-url")==="true"||e.tagName==="A"&&O(e).boosted}function Fe(e){je(e,"add")}function Pe(e){je(e,"remove")}function je(e,t){var r=L(e,"hx-indicator");if(r){var n=E().querySelectorAll(r)}else{n=[e]}C(n,function(e){e.classList[t].call(e.classList,"htmx-request")})}function Je(e,t){for(var r=0;r0){r["swapStyle"]=n[0];for(var i=1;i=200&&this.status<400){if(this.status===286){re(a)}if(this.status!==204){if(!Te(a,"beforeSwap.htmx",S))return;var i=this.response;C(nt(a),function(e){i=e.transformResponse(i,f,a)});if(n){Ae()}var o=_e(a);l.classList.add("htmx-swapping");var e=function(){try{var e=Qe(l);$(o.swapStyle,l,a,i,e);l.classList.remove("htmx-swapping");C(e.elts,function(e){if(e.classList){e.classList.add("htmx-settling")}});Te(a,"afterSwap.htmx",S);if(p){location.hash=p}var t=function(){C(e.tasks,function(e){e.call()});C(e.elts,function(e){if(e.classList){e.classList.remove("htmx-settling")}});if(n){ke(r||u)}Te(a,"afterSettle.htmx",S)};if(o.settleDelay>0){setTimeout(t,o.settleDelay)}else{t()}}catch(e){Oe(a,"swapError.htmx",S);throw e}};if(o.swapDelay>0){setTimeout(e,o.swapDelay)}else{e()}}}else{Oe(a,"responseError.htmx",S)}}catch(e){S["exception"]=e;Oe(a,"onLoadError.htmx",S);throw e}finally{Pe(a);Te(a,"afterRequest.htmx",S);Te(a,"afterOnLoad.htmx",S);s()}};f.onerror=function(){Pe(a);Oe(a,"afterRequest.htmx",S);Oe(a,"sendError.htmx",S);s()};if(!Te(a,"beforeRequest.htmx",S))return s();Fe(a);f.send(e==="get"?null:Ke(f,a,h))}var $e={};function et(){return{onEvent:function(e,t){return true},transformResponse:function(e,t,r){return e},isInlineSwap:function(e){return false},handleSwap:function(e,t,r,n){return false},encodeParameters:function(e,t,r){return null}}}function tt(e,t){$e[e]=p(et(),t)}function rt(e){delete $e[e]}function nt(e,r){if(e==null){return r}if(r==null){r=[]}var t=w(e,"hx-ext");if(t){C(t.split(","),function(e){e=e.replace(/ /g,"");var t=$e[e];if(t&&r.indexOf(t)<0){r.push(t)}})}return nt(o(e),r)}function it(e){if(E().readyState!=="loading"){e()}else{E().addEventListener("DOMContentLoaded",e)}}(function(){var e=ot();if(e===null||e.includeIndicatorStyles!==false){E().head.insertAdjacentHTML("beforeend","")}})();function ot(){var e=E().querySelector('meta[name="htmx-config"]');if(e){return JSON.parse(e.content)}else{return null}}function at(){var e=ot();if(e){htmx.config=p(htmx.config,e)}}it(function(){at();var e=E().body;we(e);Te(e,"load.htmx",{});window.onpopstate=function(){Me()}});return{onLoad:x,process:we,on:R,off:D,trigger:Te,find:b,findAll:S,closest:A,remove:T,addClass:H,removeClass:N,toggleClass:q,takeClass:X,defineExtension:tt,removeExtension:rt,logAll:y,logger:null,config:{historyEnabled:true,historyCacheSize:10,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:100,includeIndicatorStyles:true},parseInterval:a,_:e,createEventSource:function(e){return new EventSource(e,{withCredentials:true})},createWebSocket:function(e){return new WebSocket(e,[])}}}()}); \ No newline at end of file +(function(e,t){if(typeof define==="function"&&define.amd){define([],t)}else{e.htmx=t()}})(typeof self!=="undefined"?self:this,function(){return function(){"use strict";var t=["get","post","put","delete","patch"];function a(e){if(e==="null"||e==="false"||e===""){return null}else if(e.lastIndexOf("ms")===e.length-2){return parseFloat(e.substr(0,e.length-2))}else if(e.lastIndexOf("s")===e.length-1){return parseFloat(e.substr(0,e.length-1))*1e3}else{return parseFloat(e)}}function u(e,t){return e.getAttribute&&e.getAttribute(t)}function w(e,t){return u(e,t)||u(e,"data-"+t)}function o(e){return e.parentElement}function E(){return document}function l(e,t){if(t(e)){return e}else if(o(e)){return l(o(e),t)}else{return null}}function L(e,t){var r=null;l(e,function(e){return r=w(e,t)});return r}function s(e,t){var r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector;return r&&r.call(e,t)}function r(e){var t=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i;var r=t.exec(e);if(r){return r[1].toLowerCase()}else{return""}}function n(e,t){var r=new DOMParser;var n=r.parseFromString(e,"text/html");var i=n.body;while(t>0){t--;i=i.firstChild}if(i==null){i=E().createDocumentFragment()}return i}function f(e){var t=r(e);switch(t){case"thead":case"tbody":case"tfoot":case"colgroup":case"caption":return n(""+e+"
",1);case"col":return n(""+e+"
",2);case"tr":return n(""+e+"
",2);case"td":case"th":return n(""+e+"
",3);default:return n(e,0)}}function i(e,t){return Object.prototype.toString.call(e)==="[object "+t+"]"}function c(e){return i(e,"Function")}function v(e){return i(e,"Object")}function O(e){var t="htmx-internal-data";var r=e[t];if(!r){r=e[t]={}}return r}function h(e){var t=[];if(e){for(var r=0;r=0}function m(e){return E().body.contains(e)}function g(e){return e.split(/\s+/)}function T(e,t){for(var r in t){if(t.hasOwnProperty(r)){e[r]=t[r]}}return e}function e(e){return eval(e)}function p(t){var e=htmx.on("load.htmx",function(e){t(e.detail.elt)});return e}function y(){htmx.logger=function(e,t,r){if(console){console.log(t,e,r)}}}function x(e,t){if(t){return e.querySelector(t)}else{return E().body.querySelector(e)}}function b(e,t){if(t){return e.querySelectorAll(t)}else{return E().body.querySelectorAll(e)}}function S(e,t){if(t){setTimeout(function(){S(e)},t)}else{e.parentElement.removeChild(e)}}function H(e,t,r){if(r){setTimeout(function(){H(e,t)},r)}else{e.classList.add(t)}}function N(e,t,r){if(r){setTimeout(function(){N(e,t)},r)}else{e.classList.remove(t)}}function q(e,t){e.classList.toggle(t)}function X(e,t){C(e.parentElement.children,function(e){N(e,t)});H(e,t)}function A(e,t){do{if(e==null||s(e,t))return e}while(e=e&&o(e))}function R(e,t,r){if(c(t)){return{target:E().body,event:e,listener:t}}else{return{target:e,event:t,listener:r}}}function k(t,r,n){at(function(){var e=R(t,r,n);e.target.addEventListener(e.event,e.listener)});var e=c(r);return e?r:n}function D(t,r,n){at(function(){var e=R(t,r,n);e.target.removeEventListener(e.event,e.listener)});return c(r)?r:n}function M(e){var t=l(e,function(e){return w(e,"hx-target")!==null});if(t){var r=w(t,"hx-target");if(r==="this"){return t}else if(r.indexOf("closest ")===0){return A(e,r.substr(8))}else{return E().querySelector(r)}}else{var n=O(e);if(n.boosted){return E().body}else{return e}}}function I(t,r){C(t.attributes,function(e){if(!r.hasAttribute(e.name)){t.removeAttribute(e.name)}});C(r.attributes,function(e){t.setAttribute(e.name,e.value)})}function F(e,t){var r=ot(t);for(var n=0;n0){var i=r.firstChild;e.insertBefore(i,t);if(i.nodeType!==Node.TEXT_NODE){n.tasks.push(U(i))}}}function B(e){var t=O(e);if(t.webSocket){t.webSocket.close()}if(t.sseEventSource){t.sseEventSource.close()}if(e.children){C(e.children,function(e){B(e)})}}function W(e,t,r){if(e.tagName==="BODY"){return K(e,t)}else{var n=e.previousSibling;z(o(e),e,t,r);if(n==null){var i=o(e).firstChild}else{var i=n.nextSibling}while(i&&i!=e){r.elts.push(i);i=i.nextSibling}B(e);o(e).removeChild(e)}}function V(e,t,r){return z(e,e.firstChild,t,r)}function G(e,t,r){return z(o(e),e,t,r)}function Y(e,t,r){return z(e,null,t,r)}function _(e,t,r){return z(o(e),e.nextSibling,t,r)}function K(e,t,r){var n=e.firstChild;z(e,n,t,r);if(n){while(n.nextSibling){e.removeChild(n.nextSibling)}e.removeChild(n)}}function Q(e,t){var r=L(e,"hx-select");if(r){var n=E().createDocumentFragment();C(t.querySelectorAll(r),function(e){n.appendChild(e)});t=n}return t}function Z(e,t,r,n,i){switch(e){case"outerHTML":W(r,n,i);return;case"afterbegin":V(r,n,i);return;case"beforebegin":G(r,n,i);return;case"beforeend":Y(r,n,i);return;case"afterend":_(r,n,i);return;default:var o=ot(t);for(var a=0;ahtmx.config.historyCacheSize){i.shift()}localStorage.setItem("htmx-history-cache",JSON.stringify(i))}function Re(e){var t=JSON.parse(localStorage.getItem("htmx-history-cache"))||[];for(var r=0;r=200&&this.status<400){Ne(E().body,"historyCacheMissLoad.htmx",i);var e=f(this.response);e=e.querySelector("[hx-history-elt],[data-hx-history-elt]")||e;var t=Xe();var r=$e(t);K(t,e,r);Me(r.tasks);qe=n}else{Oe(E().body,"historyCacheMissLoadError.htmx",i)}};e.send()}function Fe(e){ke(qe);e=e||location.pathname+location.search;Ne(E().body,"historyRestore.htmx",{path:e});var t=Re(e);if(t){var r=f(t.content);var n=Xe();var i=$e(n);K(n,r,i);Me(i.tasks);document.title=t.title;window.scrollTo(0,t.scroll);qe=e}else{Ie(e)}}function Pe(e){return L(e,"hx-push-url")==="true"||e.tagName==="A"&&O(e).boosted}function je(e){Ue(e,"add")}function Je(e){Ue(e,"remove")}function Ue(e,t){var r=L(e,"hx-indicator");if(r){var n=E().querySelectorAll(r)}else{n=[e]}C(n,function(e){e.classList[t].call(e.classList,"htmx-request")})}function ze(e,t){for(var r=0;r0){r["swapStyle"]=n[0];for(var i=1;i=200&&this.status<400){if(this.status===286){re(a)}if(this.status!==204){if(!Ne(a,"beforeSwap.htmx",S))return;var i=this.response;Te(a,function(e){i=e.transformResponse(i,f,a)});if(n){ke()}var o=Qe(a);l.classList.add("htmx-swapping");var e=function(){try{var e=$e(l);$(o.swapStyle,l,a,i,e);l.classList.remove("htmx-swapping");C(e.elts,function(e){if(e.classList){e.classList.add("htmx-settling")}});Ne(a,"afterSwap.htmx",S);if(p){location.hash=p}var t=function(){C(e.tasks,function(e){e.call()});C(e.elts,function(e){if(e.classList){e.classList.remove("htmx-settling")}});if(n){De(r||u)}Ne(a,"afterSettle.htmx",S)};if(o.settleDelay>0){setTimeout(t,o.settleDelay)}else{t()}}catch(e){Oe(a,"swapError.htmx",S);throw e}};if(o.swapDelay>0){setTimeout(e,o.swapDelay)}else{e()}}}else{Oe(a,"responseError.htmx",T({error:"Response Status Error Code "+this.status+" from "+u},S))}}catch(e){Oe(a,"onLoadError.htmx",T({error:e},S));throw e}finally{Je(a);Ne(a,"afterRequest.htmx",S);Ne(a,"afterOnLoad.htmx",S);s()}};f.onerror=function(){Je(a);Oe(a,"afterRequest.htmx",S);Oe(a,"sendError.htmx",S);s()};if(!Ne(a,"beforeRequest.htmx",S))return s();je(a);f.send(e==="get"?null:Ze(f,a,h))}var tt={};function rt(){return{onEvent:function(e,t){return true},transformResponse:function(e,t,r){return e},isInlineSwap:function(e){return false},handleSwap:function(e,t,r,n){return false},encodeParameters:function(e,t,r){return null}}}function nt(e,t){tt[e]=T(rt(),t)}function it(e){delete tt[e]}function ot(e,r){if(e==null){return r}if(r==null){r=[]}var t=w(e,"hx-ext");if(t){C(t.split(","),function(e){e=e.replace(/ /g,"");var t=tt[e];if(t&&r.indexOf(t)<0){r.push(t)}})}return ot(o(e),r)}function at(e){if(E().readyState!=="loading"){e()}else{E().addEventListener("DOMContentLoaded",e)}}(function(){var e=ut();if(e===null||e.includeIndicatorStyles!==false){E().head.insertAdjacentHTML("beforeend","")}})();function ut(){var e=E().querySelector('meta[name="htmx-config"]');if(e){return JSON.parse(e.content)}else{return null}}function lt(){var e=ut();if(e){htmx.config=T(htmx.config,e)}}at(function(){lt();var e=E().body;we(e);Ne(e,"load.htmx",{});window.onpopstate=function(){Fe()}});return{onLoad:p,process:we,on:k,off:D,trigger:Ne,find:x,findAll:b,closest:A,remove:S,addClass:H,removeClass:N,toggleClass:q,takeClass:X,defineExtension:nt,removeExtension:it,logAll:y,logger:null,config:{historyEnabled:true,historyCacheSize:10,defaultSwapStyle:"innerHTML",defaultSwapDelay:0,defaultSettleDelay:100,includeIndicatorStyles:true},parseInterval:a,_:e,createEventSource:function(e){return new EventSource(e,{withCredentials:true})},createWebSocket:function(e){return new WebSocket(e,[])}}}()}); \ No newline at end of file diff --git a/dist/htmx.min.js.gz b/dist/htmx.min.js.gz index 00b5fc5b16235732c3ad41d799fab086a7846b98..5687aac44d25eb3894bf238aeccb2405e76feb3d 100644 GIT binary patch literal 6878 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 YZ03Ef1?kSh5F=IVAL&NPRO?Lu0GC)^d;kCd literal 6781 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 Me!') + div.click(); + this.server.respond(); + div.innerHTML.should.equal("clicked!"); + }); + +}); \ No newline at end of file diff --git a/www/test/0.0.4/test/ext/include-vals.js b/www/test/0.0.4/test/ext/include-vals.js new file mode 100644 index 00000000..fc05a067 --- /dev/null +++ b/www/test/0.0.4/test/ext/include-vals.js @@ -0,0 +1,23 @@ +describe("include-vals extension", function() { + beforeEach(function () { + this.server = makeServer(); + clearWorkArea(); + }); + afterEach(function () { + this.server.restore(); + clearWorkArea(); + }); + + it('Includes values properly', function () { + var params = {}; + this.server.respondWith("POST", "/test", function (xhr) { + params = getParameters(xhr); + xhr.respond(200, {}, "clicked"); + }); + var btn = make('') + btn.click(); + this.server.respond(); + params['foo'].should.equal("bar"); + }); + +}); \ No newline at end of file diff --git a/www/test/0.0.4/test/ext/remove-me.js b/www/test/0.0.4/test/ext/remove-me.js new file mode 100644 index 00000000..b539a18f --- /dev/null +++ b/www/test/0.0.4/test/ext/remove-me.js @@ -0,0 +1,55 @@ +describe("remove-me extension", function(){ + beforeEach(function() { + this.server = makeServer(); + clearWorkArea(); + }); + afterEach(function() { + this.server.restore(); + clearWorkArea(); + }); + + it('removes elements properly', function(done) + { + var div = make('
Click Me!
') + byId("d1").should.equal(div) + setTimeout(function(){ + should.equal(byId("d1"), null); + done(); + }, 40); + }); + + it('removes classes properly', function(done) + { + var div = make('
Click Me!
') + should.equal(div.classList.contains("foo"), true); + should.equal(div.classList.contains("bar"), true); + setTimeout(function(){ + should.equal(div.classList.contains("foo"), true); + should.equal(div.classList.contains("bar"), false); + done(); + }, 100); + }); + + it('adds classes properly w/ data-* prefix', function(done) + { + var div = make('
Click Me!
') + should.equal(div.classList.length, 0); + setTimeout(function(){ + should.equal(div.classList.contains("c1"), true); + done(); + }, 100); + }); + + it('extension can be on parent', function(done) + { + var div = make('
Click Me!
') + should.equal(div.classList.length, 0); + setTimeout(function(){ + should.equal(div.classList.contains("c1"), false); + should.equal(byId("d1").classList.contains("c1"), true); + done(); + }, 100); + }); + + +}) diff --git a/www/test/0.0.4/test/index.html b/www/test/0.0.4/test/index.html index 8af64347..24704252 100644 --- a/www/test/0.0.4/test/index.html +++ b/www/test/0.0.4/test/index.html @@ -107,6 +107,15 @@ + + + + + + + + +