Code style cleanup, remove redundant comments
This commit is contained in:
25
index.js
25
index.js
@@ -1,19 +1,14 @@
|
||||
var clone = require("./lib/clone.js")
|
||||
var executeScripts = require("./lib/execute-scripts.js")
|
||||
|
||||
var forEachEls = require("./lib/foreach-els.js")
|
||||
|
||||
var switches = require("./lib/switches")
|
||||
var newUid = require("./lib/uniqueid.js")
|
||||
|
||||
var noop = require("./lib/util/noop")
|
||||
var contains = require("./lib/util/contains.js")
|
||||
|
||||
var on = require("./lib/events/on.js")
|
||||
// var off = require("./lib/events/on.js")
|
||||
var trigger = require("./lib/events/trigger.js")
|
||||
|
||||
var defaultSwitches = require("./lib/switches")
|
||||
|
||||
var contains = require("./lib/util/contains.js")
|
||||
var noop = require("./lib/util/noop")
|
||||
|
||||
var Pjax = function(options) {
|
||||
this.state = {
|
||||
@@ -22,7 +17,7 @@ var Pjax = function(options) {
|
||||
options: null
|
||||
}
|
||||
|
||||
var parseOptions = require("./lib/proto/parse-options.js");
|
||||
var parseOptions = require("./lib/proto/parse-options.js")
|
||||
parseOptions.call(this,options)
|
||||
this.log("Pjax options", this.options)
|
||||
|
||||
@@ -40,7 +35,7 @@ var Pjax = function(options) {
|
||||
opt.url = st.state.url
|
||||
opt.title = st.state.title
|
||||
opt.history = false
|
||||
opt.requestOptions = {};
|
||||
opt.requestOptions = {}
|
||||
opt.scrollPos = st.state.scrollPos
|
||||
if (st.state.uid < this.lastUid) {
|
||||
opt.backward = true
|
||||
@@ -56,7 +51,7 @@ var Pjax = function(options) {
|
||||
}.bind(this))
|
||||
}
|
||||
|
||||
Pjax.switches = defaultSwitches
|
||||
Pjax.switches = switches
|
||||
|
||||
Pjax.prototype = {
|
||||
log: require("./lib/proto/log.js"),
|
||||
@@ -143,7 +138,7 @@ Pjax.prototype = {
|
||||
// Abort any previous request
|
||||
this.abortRequest(this.request)
|
||||
|
||||
trigger(document, "pjax:send", options);
|
||||
trigger(document, "pjax:send", options)
|
||||
|
||||
// Do the request
|
||||
options.requestOptions.timeout = this.options.timeout
|
||||
@@ -217,7 +212,7 @@ Pjax.prototype = {
|
||||
// http://www.w3.org/html/wg/drafts/html/master/forms.html
|
||||
var autofocusEl = Array.prototype.slice.call(document.querySelectorAll("[autofocus]")).pop()
|
||||
if (autofocusEl && document.activeElement !== autofocusEl) {
|
||||
autofocusEl.focus();
|
||||
autofocusEl.focus()
|
||||
}
|
||||
|
||||
// execute scripts when DOM have been completely updated
|
||||
@@ -285,7 +280,7 @@ Pjax.prototype = {
|
||||
} while (target)
|
||||
}
|
||||
}
|
||||
window.scrollTo(0, curtop);
|
||||
window.scrollTo(0, curtop)
|
||||
}
|
||||
else if (state.options.scrollTo !== false) {
|
||||
// Scroll page to top on new page load
|
||||
@@ -309,7 +304,7 @@ Pjax.prototype = {
|
||||
}
|
||||
}
|
||||
|
||||
Pjax.isSupported = require("./lib/is-supported.js");
|
||||
Pjax.isSupported = require("./lib/is-supported.js")
|
||||
|
||||
// arguably could do `if( require("./lib/is-supported.js")()) {` but that might be a little to simple
|
||||
if (Pjax.isSupported()) {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
module.exports = function(el) {
|
||||
// console.log("going to execute script", el)
|
||||
|
||||
var code = (el.text || el.textContent || el.innerHTML || "")
|
||||
var src = (el.src || "");
|
||||
var src = (el.src || "")
|
||||
var parent = el.parentNode || document.querySelector("head") || document.documentElement
|
||||
var script = document.createElement("script")
|
||||
|
||||
@@ -14,8 +16,8 @@ module.exports = function(el) {
|
||||
script.type = "text/javascript"
|
||||
|
||||
if (src !== "") {
|
||||
script.src = src;
|
||||
script.async = false; // force synchronous loading of peripheral js
|
||||
script.src = src
|
||||
script.async = false // force asynchronous loading of peripheral js
|
||||
}
|
||||
|
||||
if (code !== "") {
|
||||
@@ -29,11 +31,11 @@ module.exports = function(el) {
|
||||
}
|
||||
|
||||
// execute
|
||||
parent.appendChild(script);
|
||||
parent.appendChild(script)
|
||||
// avoid pollution only in head or body tags
|
||||
if (["head", "body"].indexOf(parent.tagName.toLowerCase()) > 0) {
|
||||
parent.removeChild(script)
|
||||
}
|
||||
|
||||
return true;
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ module.exports = function(el) {
|
||||
// console.log("going to execute scripts for ", el)
|
||||
|
||||
if (el.tagName.toLowerCase() === "script") {
|
||||
evalScript(el);
|
||||
evalScript(el)
|
||||
}
|
||||
|
||||
forEachEls(el.querySelectorAll("script"), function(script) {
|
||||
@@ -14,7 +14,7 @@ module.exports = function(el) {
|
||||
if (script.parentNode) {
|
||||
script.parentNode.removeChild(script)
|
||||
}
|
||||
evalScript(script);
|
||||
evalScript(script)
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ var attrClick = "data-pjax-click-state"
|
||||
var formAction = function(el, event) {
|
||||
// Since loadUrl modifies options and we may add our own modifications below,
|
||||
// clone it so the changes don't persist
|
||||
var options = clone(this.options);
|
||||
var options = clone(this.options)
|
||||
|
||||
// Initialize requestOptions
|
||||
options.requestOptions = {
|
||||
@@ -17,18 +17,18 @@ var formAction = function(el, event) {
|
||||
}
|
||||
|
||||
// create a testable virtual link of the form action
|
||||
var virtLinkElement = document.createElement("a");
|
||||
virtLinkElement.setAttribute("href", options.requestOptions.requestUrl);
|
||||
var virtLinkElement = document.createElement("a")
|
||||
virtLinkElement.setAttribute("href", options.requestOptions.requestUrl)
|
||||
|
||||
// Ignore external links.
|
||||
if (virtLinkElement.protocol !== window.location.protocol || virtLinkElement.host !== window.location.host) {
|
||||
el.setAttribute(attrClick, "external");
|
||||
el.setAttribute(attrClick, "external")
|
||||
return
|
||||
}
|
||||
|
||||
// Ignore click if we are on an anchor on the same page
|
||||
if (virtLinkElement.pathname === window.location.pathname && virtLinkElement.hash.length > 0) {
|
||||
el.setAttribute(attrClick, "anchor-present");
|
||||
el.setAttribute(attrClick, "anchor-present")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -40,41 +40,39 @@ var formAction = function(el, event) {
|
||||
|
||||
// if declared as a full reload, just normally submit the form
|
||||
if (options.currentUrlFullReload) {
|
||||
el.setAttribute(attrClick, "reload");
|
||||
return;
|
||||
el.setAttribute(attrClick, "reload")
|
||||
return
|
||||
}
|
||||
|
||||
event.preventDefault()
|
||||
|
||||
var paramObject = [];
|
||||
var paramObject = []
|
||||
for (var elementKey in el.elements) {
|
||||
var element = el.elements[elementKey];
|
||||
var element = el.elements[elementKey]
|
||||
// jscs:disable disallowImplicitTypeConversion
|
||||
if (!!element.name && element.attributes !== undefined && element.tagName.toLowerCase() !== "button") {
|
||||
// jscs:enable disallowImplicitTypeConversion
|
||||
if ((element.attributes.type !== "checkbox" && element.attributes.type !== "radio") || element.checked) {
|
||||
paramObject.push({name: encodeURIComponent(element.name), value: encodeURIComponent(element.value)});
|
||||
paramObject.push({name: encodeURIComponent(element.name), value: encodeURIComponent(element.value)})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Creating a getString
|
||||
var paramsString = (paramObject.map(function(value) {return value.name + "=" + value.value;})).join("&");
|
||||
var paramsString = (paramObject.map(function(value) {return value.name + "=" + value.value})).join("&")
|
||||
|
||||
options.requestOptions.requestPayload = paramObject;
|
||||
options.requestOptions.requestPayloadString = paramsString;
|
||||
options.requestOptions.requestPayload = paramObject
|
||||
options.requestOptions.requestPayloadString = paramsString
|
||||
|
||||
el.setAttribute(attrClick, "submit");
|
||||
el.setAttribute(attrClick, "submit")
|
||||
|
||||
|
||||
options.triggerElement = el;
|
||||
this.loadUrl(virtLinkElement.href, options);
|
||||
};
|
||||
options.triggerElement = el
|
||||
this.loadUrl(virtLinkElement.href, options)
|
||||
}
|
||||
|
||||
var isDefaultPrevented = function(event) {
|
||||
return event.defaultPrevented || event.returnValue === false;
|
||||
};
|
||||
|
||||
return event.defaultPrevented || event.returnValue === false
|
||||
}
|
||||
|
||||
module.exports = function(el) {
|
||||
var that = this
|
||||
@@ -92,7 +90,6 @@ module.exports = function(el) {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
if (event.keyCode === 13) {
|
||||
formAction.call(that, el, event)
|
||||
}
|
||||
|
||||
@@ -9,10 +9,10 @@ var attrKey = "data-pjax-keyup-state"
|
||||
var linkAction = function(el, event) {
|
||||
// Since loadUrl modifies options and we may add our own modifications below,
|
||||
// clone it so the changes don't persist
|
||||
var options = clone(this.options);
|
||||
var options = clone(this.options)
|
||||
|
||||
// Initialize requestOptions since loadUrl expects it to be an object
|
||||
options.requestOptions = {};
|
||||
options.requestOptions = {}
|
||||
|
||||
// Don’t break browser special behavior on links (like page in new window)
|
||||
if (event.which > 1 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) {
|
||||
@@ -66,7 +66,7 @@ var linkAction = function(el, event) {
|
||||
}
|
||||
|
||||
var isDefaultPrevented = function(event) {
|
||||
return event.defaultPrevented || event.returnValue === false;
|
||||
return event.defaultPrevented || event.returnValue === false
|
||||
}
|
||||
|
||||
module.exports = function(el) {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
module.exports = function() {
|
||||
if (this.options.debug && console) {
|
||||
if (typeof console.log === "function") {
|
||||
console.log.apply(console, arguments);
|
||||
console.log.apply(console, arguments)
|
||||
}
|
||||
// ie is weird
|
||||
else if (console.log) {
|
||||
console.log(arguments);
|
||||
console.log(arguments)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ module.exports = function(options) {
|
||||
ga("send", "pageview", {page: location.pathname, title: document.title})
|
||||
}
|
||||
}
|
||||
options.scrollTo = (typeof options.scrollTo === "undefined") ? 0 : options.scrollTo;
|
||||
options.scrollTo = (typeof options.scrollTo === "undefined") ? 0 : options.scrollTo
|
||||
options.scrollRestoration = (typeof options.scrollRestoration !== "undefined") ? options.scrollRestoration : true
|
||||
options.cacheBust = (typeof options.cacheBust === "undefined") ? true : options.cacheBust
|
||||
options.debug = options.debug || false
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
module.exports = function(location, options, callback) {
|
||||
options = options || {};
|
||||
var requestMethod = options.requestMethod || "GET";
|
||||
var requestPayload = options.requestPayloadString || null;
|
||||
options = options || {}
|
||||
var requestMethod = options.requestMethod || "GET"
|
||||
var requestPayload = options.requestPayloadString || null
|
||||
var request = new XMLHttpRequest()
|
||||
|
||||
request.onreadystatechange = function() {
|
||||
@@ -37,7 +37,7 @@ module.exports = function(location, options, callback) {
|
||||
// Add the request payload if available
|
||||
if (options.requestPayloadString !== undefined && options.requestPayloadString !== "") {
|
||||
// Send the proper header information along with the request
|
||||
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
|
||||
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
|
||||
}
|
||||
|
||||
request.send(requestPayload)
|
||||
|
||||
@@ -3,7 +3,7 @@ var forEachEls = require("./foreach-els")
|
||||
var defaultSwitches = require("./switches")
|
||||
|
||||
module.exports = function(switches, switchesOptions, selectors, fromEl, toEl, options) {
|
||||
var switchesQueue = [];
|
||||
var switchesQueue = []
|
||||
|
||||
selectors.forEach(function(selector) {
|
||||
var newEls = fromEl.querySelectorAll(selector)
|
||||
@@ -12,12 +12,6 @@ module.exports = function(switches, switchesOptions, selectors, fromEl, toEl, op
|
||||
this.log("Pjax switch", selector, newEls, oldEls)
|
||||
}
|
||||
if (newEls.length !== oldEls.length) {
|
||||
// forEachEls(newEls, function(el) {
|
||||
// this.log("newEl", el, el.outerHTML)
|
||||
// }, this)
|
||||
// forEachEls(oldEls, function(el) {
|
||||
// this.log("oldEl", el, el.outerHTML)
|
||||
// }, this)
|
||||
throw "DOM doesn’t look the same on new loaded page: ’" + selector + "’ - new " + newEls.length + ", old " + oldEls.length
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
var on = require("./events/on.js")
|
||||
// var off = require("./lib/events/on.js")
|
||||
// var trigger = require("./lib/events/trigger.js")
|
||||
|
||||
|
||||
module.exports = {
|
||||
outerHTML: function(oldEl, newEl) {
|
||||
@@ -20,7 +17,7 @@ module.exports = {
|
||||
|
||||
// Copy attributes from the new element to the old one
|
||||
if (newEl.hasAttributes()) {
|
||||
var attrs = newEl.attributes;
|
||||
var attrs = newEl.attributes
|
||||
for (var i = 0; i < attrs.length; i++) {
|
||||
oldEl.attributes.setNamedItem(attrs[i].cloneNode())
|
||||
}
|
||||
@@ -34,9 +31,6 @@ module.exports = {
|
||||
var elsToRemove = []
|
||||
var elsToAdd = []
|
||||
var fragToAppend = document.createDocumentFragment()
|
||||
// height transition are shitty on safari
|
||||
// so commented for now (until I found something ?)
|
||||
// var relevantHeight = 0
|
||||
var animationEventNames = "animationend webkitAnimationEnd MSAnimationEnd oanimationend"
|
||||
var animatedElsNumber = 0
|
||||
var sexyAnimationEnd = function(e) {
|
||||
@@ -58,28 +52,16 @@ module.exports = {
|
||||
elsToAdd.forEach(function(el) {
|
||||
el.className = el.className.replace(el.getAttribute("data-pjax-classes"), "")
|
||||
el.removeAttribute("data-pjax-classes")
|
||||
// Pjax.off(el, animationEventNames, sexyAnimationEnd, true)
|
||||
})
|
||||
|
||||
elsToAdd = null // free memory
|
||||
elsToRemove = null // free memory
|
||||
|
||||
// assume the height is now useless (avoid bug since there is overflow hidden on the parent)
|
||||
// oldEl.style.height = "auto"
|
||||
|
||||
// this is to trigger some repaint (example: picturefill)
|
||||
this.onSwitch()
|
||||
// Pjax.trigger(window, "scroll")
|
||||
}
|
||||
}.bind(this)
|
||||
|
||||
// Force height to be able to trigger css animation
|
||||
// here we get the relevant height
|
||||
// oldEl.parentNode.appendChild(newEl)
|
||||
// relevantHeight = newEl.getBoundingClientRect().height
|
||||
// oldEl.parentNode.removeChild(newEl)
|
||||
// oldEl.style.height = oldEl.getBoundingClientRect().height + "px"
|
||||
|
||||
switchOptions = switchOptions || {}
|
||||
|
||||
forEach.call(oldEl.childNodes, function(el) {
|
||||
@@ -123,7 +105,5 @@ module.exports = {
|
||||
// pass all className of the parent
|
||||
oldEl.className = newEl.className
|
||||
oldEl.appendChild(fragToAppend)
|
||||
|
||||
// oldEl.style.height = relevantHeight + "px"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,8 +7,7 @@ var trigger = require("../../lib/events/trigger")
|
||||
var el = document.createElement("div")
|
||||
var el2 = document.createElement("span")
|
||||
var els = [el, el2]
|
||||
// var eventType2 = "resize"
|
||||
// var eventsType = "click resize"
|
||||
|
||||
var classCb = function() {
|
||||
this.className += "on"
|
||||
}
|
||||
@@ -92,14 +91,14 @@ tape("test events on/off/trigger for multiple elements, multiple events", functi
|
||||
})
|
||||
|
||||
tape("test events on top level elements", function(t) {
|
||||
var el = document;
|
||||
var el = document
|
||||
|
||||
el.className = ""
|
||||
on(el, "click", classCb)
|
||||
trigger(el, "click")
|
||||
t.equal(el.className, "on", "attached callback has been fired properly on document")
|
||||
|
||||
el = window;
|
||||
el = window
|
||||
|
||||
el.className = ""
|
||||
// With jsdom, the default this is global, not window, so we need to explicitly bind to window.
|
||||
|
||||
@@ -91,5 +91,5 @@ tape("test options are not modified by attachForm", function(t) {
|
||||
t.equal(1, Object.keys(options).length, "options object that is passed in should not be modified")
|
||||
t.equal("bar", options.foo, "options object that is passed in should not be modified")
|
||||
|
||||
t.end();
|
||||
t.end()
|
||||
})
|
||||
|
||||
@@ -79,7 +79,7 @@ tape("test attach link preventDefaulted events", function(t) {
|
||||
tape("test options are not modified by attachLink", function(t) {
|
||||
var a = document.createElement("a")
|
||||
var options = {foo: "bar"}
|
||||
var loadUrl = function() {};
|
||||
var loadUrl = function() {}
|
||||
|
||||
attachLink.call({options: options, loadUrl: loadUrl}, a)
|
||||
|
||||
@@ -90,5 +90,5 @@ tape("test options are not modified by attachLink", function(t) {
|
||||
t.equal(1, Object.keys(options).length, "options object that is passed in should not be modified")
|
||||
t.equal("bar", options.foo, "options object that is passed in should not be modified")
|
||||
|
||||
t.end();
|
||||
t.end()
|
||||
})
|
||||
|
||||
@@ -3,46 +3,46 @@ var tape = require("tape")
|
||||
var parseOptions = require("../../../lib/proto/parse-options.js")
|
||||
tape("test parse initalization options function", function(t) {
|
||||
t.test("- default options", function(t) {
|
||||
var pjax = {};
|
||||
parseOptions.call(pjax, {});
|
||||
var pjax = {}
|
||||
parseOptions.call(pjax, {})
|
||||
|
||||
t.equal(pjax.options.elements, "a[href], form[action]");
|
||||
t.equal(pjax.options.selectors.length, 2, "selectors length");
|
||||
t.equal(pjax.options.selectors[0], "title");
|
||||
t.equal(pjax.options.selectors[1], ".js-Pjax");
|
||||
t.equal(pjax.options.elements, "a[href], form[action]")
|
||||
t.equal(pjax.options.selectors.length, 2, "selectors length")
|
||||
t.equal(pjax.options.selectors[0], "title")
|
||||
t.equal(pjax.options.selectors[1], ".js-Pjax")
|
||||
|
||||
t.equal(typeof pjax.options.switches, "object");
|
||||
t.equal(Object.keys(pjax.options.switches).length, 2);// head and body
|
||||
t.equal(typeof pjax.options.switches, "object")
|
||||
t.equal(Object.keys(pjax.options.switches).length, 2)// head and body
|
||||
|
||||
t.equal(typeof pjax.options.switchesOptions, "object");
|
||||
t.equal(Object.keys(pjax.options.switchesOptions).length, 0);
|
||||
t.equal(typeof pjax.options.switchesOptions, "object")
|
||||
t.equal(Object.keys(pjax.options.switchesOptions).length, 0)
|
||||
|
||||
t.equal(pjax.options.history, true);
|
||||
t.equal(typeof pjax.options.analytics, "function");
|
||||
t.equal(pjax.options.scrollTo, 0);
|
||||
t.equal(pjax.options.scrollRestoration, true);
|
||||
t.equal(pjax.options.cacheBust, true);
|
||||
t.equal(pjax.options.debug, false);
|
||||
t.end();
|
||||
});
|
||||
t.equal(pjax.options.history, true)
|
||||
t.equal(typeof pjax.options.analytics, "function")
|
||||
t.equal(pjax.options.scrollTo, 0)
|
||||
t.equal(pjax.options.scrollRestoration, true)
|
||||
t.equal(pjax.options.cacheBust, true)
|
||||
t.equal(pjax.options.debug, false)
|
||||
t.end()
|
||||
})
|
||||
|
||||
// verify analytics always ends up as a function even when passed not a function
|
||||
t.test("- analytics is a function", function(t) {
|
||||
var pjax = {};
|
||||
parseOptions.call(pjax, {analytics: "some string"});
|
||||
var pjax = {}
|
||||
parseOptions.call(pjax, {analytics: "some string"})
|
||||
|
||||
t.deepEqual(typeof pjax.options.analytics, "function");
|
||||
t.end();
|
||||
});
|
||||
t.deepEqual(typeof pjax.options.analytics, "function")
|
||||
t.end()
|
||||
})
|
||||
|
||||
// verify that the value false for scrollTo is not squashed
|
||||
t.test("- scrollTo remains false", function(t) {
|
||||
var pjax = {};
|
||||
parseOptions.call(pjax, {scrollTo: false});
|
||||
var pjax = {}
|
||||
parseOptions.call(pjax, {scrollTo: false})
|
||||
|
||||
t.deepEqual(pjax.options.scrollTo, false);
|
||||
t.end();
|
||||
});
|
||||
t.deepEqual(pjax.options.scrollTo, false)
|
||||
t.end()
|
||||
})
|
||||
|
||||
t.end()
|
||||
})
|
||||
|
||||
@@ -22,7 +22,7 @@ tape("test xhr request", function(t) {
|
||||
options: {
|
||||
cacheBust: true
|
||||
}
|
||||
});
|
||||
})
|
||||
var r = requestCacheBust(url, {}, function(result) {
|
||||
t.equal(r.responseURL.indexOf("?"), url.length, "XHR URL is cache-busted when configured to be")
|
||||
try {
|
||||
@@ -40,7 +40,7 @@ tape("test xhr request", function(t) {
|
||||
options: {
|
||||
cacheBust: false
|
||||
}
|
||||
});
|
||||
})
|
||||
var r = requestNoCacheBust(url, {}, function() {
|
||||
t.equal(r.responseURL, url, "XHR URL is left untouched")
|
||||
t.end()
|
||||
|
||||
Reference in New Issue
Block a user