diff --git a/dist/kutty.js b/dist/kutty.js index c8b00310..35ce3150 100644 --- a/dist/kutty.js +++ b/dist/kutty.js @@ -158,6 +158,15 @@ var kutty = kutty || (function () { sheet.insertRule(rule, sheet.cssRules.length); } + function mergeObjects(obj1, obj2) { + for (var key in obj2) { + if (obj2.hasOwnProperty(key)) { + obj1[key] = obj2[key]; + } + } + return obj1; + } + //========================================================================================== // public API //========================================================================================== @@ -167,9 +176,10 @@ var kutty = kutty || (function () { } function onLoadHelper(callback) { - kutty.on("load.kutty", function(evt) { + var value = kutty.on("load.kutty", function(evt) { callback(evt.detail.elt); }); + return value; } function logAll(){ @@ -182,17 +192,17 @@ var kutty = kutty || (function () { function find(eltOrSelector, selector) { if (selector) { - eltOrSelector.querySelector(eltOrSelector); + return eltOrSelector.querySelector(selector); } else { - getDocument().body.querySelector(eltOrSelector); + return getDocument().body.querySelector(eltOrSelector); } } function findAll(eltOrSelector, selector) { if (selector) { - eltOrSelector.querySelectorAll(eltOrSelector); + return eltOrSelector.querySelectorAll(selector); } else { - getDocument().body.querySelectorAll(eltOrSelector); + return getDocument().body.querySelectorAll(eltOrSelector); } } @@ -212,7 +222,7 @@ var kutty = kutty || (function () { } } - function removeClassFromElement(elt, clazz) { + function removeClassFromElement(elt, clazz, delay) { if (delay) { setTimeout(function(){removeClassFromElement(elt, clazz);}, delay) } else { @@ -225,7 +235,7 @@ var kutty = kutty || (function () { } function takeClassForElement(elt, clazz) { - forEach(elt.parent.children, function(child){ + forEach(elt.parentElement.children, function(child){ removeClassFromElement(child, clazz); }) addClassToElement(elt, clazz); @@ -254,23 +264,22 @@ var kutty = kutty || (function () { } function addKuttyEventListener(arg1, arg2, arg3) { - var eventArgs = processEventArgs(arg1, arg2, arg3); ready(function(){ + var eventArgs = processEventArgs(arg1, arg2, arg3); eventArgs.target.addEventListener(eventArgs.event, eventArgs.listener); }) - return eventArgs.listener; + var b = isFunction(arg2); + return b ? arg2 : arg3; } function removeKuttyEventListener(arg1, arg2, arg3) { - var eventArgs = processEventArgs(arg1, arg2, arg3); ready(function(){ - eventArgs.target.addEventListener(eventArgs.event, eventArgs.listener); + var eventArgs = processEventArgs(arg1, arg2, arg3); + eventArgs.target.removeEventListener(eventArgs.event, eventArgs.listener); }) - return eventArgs.listener; + return isFunction(arg2) ? arg2 : arg3; } - - //==================================================================== // Node processing //==================================================================== @@ -281,6 +290,8 @@ var kutty = kutty || (function () { var targetStr = getRawAttribute(explicitTarget, "kt-target"); if (targetStr === "this") { return explicitTarget; + } else if (targetStr.indexOf("closest ") === 0) { + return closest(elt, targetStr.substr(8)); } else { return getDocument().querySelector(targetStr); } @@ -545,7 +556,7 @@ var kutty = kutty || (function () { function isLocalLink(elt) { return location.hostname === elt.hostname && getRawAttribute(elt,'href') && - !getRawAttribute(elt,'href').startsWith("#") + getRawAttribute(elt,'href').indexOf("#") !== 0; } function boostElement(elt, nodeData, triggerSpec) { @@ -760,7 +771,7 @@ var kutty = kutty || (function () { } function triggerErrorEvent(elt, eventName, detail) { - triggerEvent(elt, eventName, Object.assign({isError:true}, details)); + triggerEvent(elt, eventName, mergeObjects({isError:true}, detail)); } function triggerEvent(elt, eventName, detail) { @@ -947,7 +958,7 @@ var kutty = kutty || (function () { } } - function getInputValues(elt) { + function getInputValues(elt, verb) { var processed = []; var values = {}; // include the element itself @@ -962,8 +973,10 @@ var kutty = kutty || (function () { }); } - // include the closest form - processInputValue(processed, values, closest(elt, 'form')); + // for a non-GET include the closest form + if (verb !== 'get') { + processInputValue(processed, values, closest(elt, 'form')); + } return values; } @@ -1042,12 +1055,7 @@ var kutty = kutty || (function () { return newValues; } } else { - // By default GETs do not include parameters - if (verb === 'get') { - return {}; - } else { - return inputValues; - } + return inputValues; } } @@ -1203,7 +1211,7 @@ var kutty = kutty || (function () { }; if (swapSpec.swapDelay > 0) { - setTimeout(doSwap, parseInterval(swapSpec.swapDelay)) + setTimeout(doSwap, swapSpec.swapDelay) } else { doSwap(); } @@ -1252,7 +1260,7 @@ var kutty = kutty || (function () { var element = getDocument().querySelector('meta[name="kutty-config"]'); if (element) { var source = JSON.parse(element.content); - kutty.config = Object.assign(kutty.config , source) + kutty.config = mergeObjects(kutty.config , source) } } diff --git a/dist/kutty.min.js b/dist/kutty.min.js index c79d3e7b..7d05ceec 100644 --- a/dist/kutty.min.js +++ b/dist/kutty.min.js @@ -1 +1 @@ -var kutty=kutty||function(){"use strict";var e=["get","post","put","delete","patch"];function k(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 b(e,t){return e.getAttribute&&e.getAttribute(t)}function u(e,t){return b(e,t)||b(e,"data-"+t)}function n(e){return e.parentElement}function a(){return document}function o(e,t){if(t(e)){return e}else if(n(e)){return o(n(e),t)}else{return null}}function S(e,t){var r=null;o(e,function(e){return r=b(e,t)});return r}function l(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 i(e,t){var r=new DOMParser;var n=r.parseFromString(e,"text/html");var i=n.body;while(t>0){t--;i=i.firstChild}return i}function s(e){var t=r(e);switch(t){case"thead":case"tbody":case"tfoot":case"colgroup":case"caption":return i("