diff --git a/dist/js/contact-data-services.js b/dist/js/contact-data-services.js
index 9d2472b..eb87737 100644
--- a/dist/js/contact-data-services.js
+++ b/dist/js/contact-data-services.js
@@ -629,6 +629,8 @@ ContactDataServices.address = function(options){
if(event){
event.preventDefault();
}
+ // Enable searching
+ instance.enabled = true;
// Hide formatted address
instance.result.hide();
// Show search input
@@ -640,6 +642,22 @@ ContactDataServices.address = function(options){
instance.events.trigger("post-reset");
};
+ // How to handle unauthorised (invalid token?) requests
+ instance.unauthorised = function(){
+ instance.enabled = false;
+
+ // As searching is disabled, show button to render final address instead
+ var button = document.createElement("button");
+ button.innerText = "Submit";
+ instance.input.parentNode.insertBefore(button, instance.input.nextSibling);
+ button.addEventListener("click", function(){
+ // Simulate a manual "use address entered" entry
+ instance.picklist.useAddressEntered.click();
+ // Remove the button
+ instance.input.parentNode.removeChild(button);
+ });
+ };
+
// Use this to initiate and track XMLHttpRequests
instance.request = {
currentRequest: null,
@@ -658,9 +676,9 @@ ContactDataServices.address = function(options){
// We reached our target server, but it returned an error
instance.searchSpinner.hide();
- // If the request is unauthorized we should probably disable future requests
+ // If the request is unauthorized (invalid token) we should probably disable future requests
if(instance.request.currentRequest.status === 401){
- instance.enabled = false;
+ instance.unauthorised();
}
}
};
diff --git a/dist/js/contact-data-services.min.js b/dist/js/contact-data-services.min.js
index eba3215..85b12c9 100644
--- a/dist/js/contact-data-services.min.js
+++ b/dist/js/contact-data-services.min.js
@@ -1,3 +1,3 @@
/*! contact-data-services.js | https://github.com/experiandataquality/contactdataservices | Apache-2.0
* Experian Data Quality | https://github.com/experiandataquality */
-!function(a,b,c){"use strict";var d=a.ContactDataServices=a.ContactDataServices||{};d.defaults={input:{placeholderText:"Start typing an address"},formattedAddress:{headingType:"h3",headingText:"Formatted address"},editAddressText:"Edit address",searchAgainText:"Search again",useAddressEnteredText:"Use address entered"},d.eventFactory=function(){var a={};return a.collection={},a.on=function(b,c){a.collection[b]=a.collection[b]||[],a.collection[b].push(c)},a.trigger=function(b,c){if(a.collection[b])for(var d=0;d-1&&(f.currentFormatUrl=f.currentFormatUrl.replace("https://api.edq.com","http://int-test-01")),f.request.get(f.currentFormatUrl,f.result.show)},f.picklist={size:0,maxSize:25,show:function(a){f.picklist.items=a.results,f.picklist.size=f.picklist.items.length,f.picklist.container=f.picklist.container||f.picklist.createList(),f.picklist.container.innerHTML="",f.picklist.resetTabCount(),f.searchSpinner.hide(),f.picklist.useAddressEntered.element=f.picklist.useAddressEntered.element||f.picklist.useAddressEntered.create(),f.picklist.items.length>0&&(f.events.trigger("pre-picklist-create",f.picklist.items),f.picklist.items.forEach(function(a){var b=f.picklist.createListItem(a);f.picklist.container.appendChild(b),f.picklist.listen(b)}),f.events.trigger("post-picklist-create"))},hide:function(){f.picklist.currentItem=null,f.picklist.useAddressEntered.destroy(),f.picklist.container&&(f.input.parentNode.removeChild(f.picklist.container),f.picklist.container=c)},useAddressEntered:{create:function(){var a={suggestion:d.defaults.useAddressEnteredText,format:""},b=f.picklist.createListItem(a);return b.classList.add("use-address-entered"),f.picklist.container.parentNode.insertBefore(b,f.picklist.container.nextSibling),b.addEventListener("click",f.picklist.useAddressEntered.click),b},destroy:function(){f.picklist.useAddressEntered.element&&(f.picklist.container.parentNode.removeChild(f.picklist.useAddressEntered.element),f.picklist.useAddressEntered.element=c)},click:function(){var a={address:[]};if(f.currentSearchTerm){var b=f.currentSearchTerm.split(",");if(b.length>0)for(var c=0;cd.length-1&&(f.picklist.tabCount=0,b=!0);var e=d[f.picklist.tabCount],g=f.picklist.container.querySelector(".selected");g&&g.classList.remove("selected"),e.classList.add("selected"),f.picklist.currentItem=e;var h={top:f.picklist.container.offsetTop,bottom:f.picklist.container.offsetTop+f.picklist.container.offsetHeight,scrollTop:f.picklist.container.scrollTop,selectedTop:e.offsetTop,selectedBottom:e.offsetTop+e.offsetHeight,scrollAmount:e.offsetHeight};b?f.picklist.container.scrollTop=0:c?f.picklist.container.scrollTop=999:h.selectedBottom+h.scrollAmount>h.bottom?f.picklist.container.scrollTop=h.scrollTop+h.scrollAmount:h.selectedTop-h.scrollAmount-h.top";c=c.substring(0,b[d][0])+e+c.substring(b[d][1])}return c},listen:function(a){a.addEventListener("click",f.picklist.pick.bind(null,a))},checkEnter:function(){f.picklist.currentItem&&f.picklist.pick(f.picklist.currentItem)},pick:function(a){f.events.trigger("post-picklist-selection",a),f.format(a.getAttribute("format"))}},f.result={show:function(a){if(f.searchSpinner.hide(),f.picklist.hide(),f.input.value="",a.address.length>0){f.events.trigger("post-formatting-search",a),f.result.formattedAddress=f.elements.formattedAddress||f.result.createFormattedAddressContainer();for(var b=[],c=0;c0)for(var b=0;b=200&&f.request.currentRequest.status<400){var a=JSON.parse(f.request.currentRequest.responseText);b(a)}else f.searchSpinner.hide(),401===f.request.currentRequest.status&&(f.enabled=!1)},f.request.currentRequest.onerror=function(){},f.request.currentRequest.ontimeout=function(){},f.request.currentRequest.send()}},f.init(),f}}(window,window.document);
\ No newline at end of file
+!function(a,b,c){"use strict";var d=a.ContactDataServices=a.ContactDataServices||{};d.defaults={input:{placeholderText:"Start typing an address"},formattedAddress:{headingType:"h3",headingText:"Formatted address"},editAddressText:"Edit address",searchAgainText:"Search again",useAddressEnteredText:"Use address entered"},d.eventFactory=function(){var a={};return a.collection={},a.on=function(b,c){a.collection[b]=a.collection[b]||[],a.collection[b].push(c)},a.trigger=function(b,c){if(a.collection[b])for(var d=0;d-1&&(f.currentFormatUrl=f.currentFormatUrl.replace("https://api.edq.com","http://int-test-01")),f.request.get(f.currentFormatUrl,f.result.show)},f.picklist={size:0,maxSize:25,show:function(a){f.picklist.items=a.results,f.picklist.size=f.picklist.items.length,f.picklist.container=f.picklist.container||f.picklist.createList(),f.picklist.container.innerHTML="",f.picklist.resetTabCount(),f.searchSpinner.hide(),f.picklist.useAddressEntered.element=f.picklist.useAddressEntered.element||f.picklist.useAddressEntered.create(),f.picklist.items.length>0&&(f.events.trigger("pre-picklist-create",f.picklist.items),f.picklist.items.forEach(function(a){var b=f.picklist.createListItem(a);f.picklist.container.appendChild(b),f.picklist.listen(b)}),f.events.trigger("post-picklist-create"))},hide:function(){f.picklist.currentItem=null,f.picklist.useAddressEntered.destroy(),f.picklist.container&&(f.input.parentNode.removeChild(f.picklist.container),f.picklist.container=c)},useAddressEntered:{create:function(){var a={suggestion:d.defaults.useAddressEnteredText,format:""},b=f.picklist.createListItem(a);return b.classList.add("use-address-entered"),f.picklist.container.parentNode.insertBefore(b,f.picklist.container.nextSibling),b.addEventListener("click",f.picklist.useAddressEntered.click),b},destroy:function(){f.picklist.useAddressEntered.element&&(f.picklist.container.parentNode.removeChild(f.picklist.useAddressEntered.element),f.picklist.useAddressEntered.element=c)},click:function(){var a={address:[]};if(f.currentSearchTerm){var b=f.currentSearchTerm.split(",");if(b.length>0)for(var c=0;cd.length-1&&(f.picklist.tabCount=0,b=!0);var e=d[f.picklist.tabCount],g=f.picklist.container.querySelector(".selected");g&&g.classList.remove("selected"),e.classList.add("selected"),f.picklist.currentItem=e;var h={top:f.picklist.container.offsetTop,bottom:f.picklist.container.offsetTop+f.picklist.container.offsetHeight,scrollTop:f.picklist.container.scrollTop,selectedTop:e.offsetTop,selectedBottom:e.offsetTop+e.offsetHeight,scrollAmount:e.offsetHeight};b?f.picklist.container.scrollTop=0:c?f.picklist.container.scrollTop=999:h.selectedBottom+h.scrollAmount>h.bottom?f.picklist.container.scrollTop=h.scrollTop+h.scrollAmount:h.selectedTop-h.scrollAmount-h.top";c=c.substring(0,b[d][0])+e+c.substring(b[d][1])}return c},listen:function(a){a.addEventListener("click",f.picklist.pick.bind(null,a))},checkEnter:function(){f.picklist.currentItem&&f.picklist.pick(f.picklist.currentItem)},pick:function(a){f.events.trigger("post-picklist-selection",a),f.format(a.getAttribute("format"))}},f.result={show:function(a){if(f.searchSpinner.hide(),f.picklist.hide(),f.input.value="",a.address.length>0){f.events.trigger("post-formatting-search",a),f.result.formattedAddress=f.elements.formattedAddress||f.result.createFormattedAddressContainer();for(var b=[],c=0;c0)for(var b=0;b=200&&f.request.currentRequest.status<400){var a=JSON.parse(f.request.currentRequest.responseText);b(a)}else f.searchSpinner.hide(),401===f.request.currentRequest.status&&f.unauthorised()},f.request.currentRequest.onerror=function(){},f.request.currentRequest.ontimeout=function(){},f.request.currentRequest.send()}},f.init(),f}}(window,window.document);
\ No newline at end of file
diff --git a/src/js/main-address.js b/src/js/main-address.js
index 278fa49..aae8ced 100644
--- a/src/js/main-address.js
+++ b/src/js/main-address.js
@@ -542,6 +542,8 @@ ContactDataServices.address = function(options){
if(event){
event.preventDefault();
}
+ // Enable searching
+ instance.enabled = true;
// Hide formatted address
instance.result.hide();
// Show search input
@@ -553,6 +555,22 @@ ContactDataServices.address = function(options){
instance.events.trigger("post-reset");
};
+ // How to handle unauthorised (invalid token?) requests
+ instance.unauthorised = function(){
+ instance.enabled = false;
+
+ // As searching is disabled, show button to render final address instead
+ var button = document.createElement("button");
+ button.innerText = "Submit";
+ instance.input.parentNode.insertBefore(button, instance.input.nextSibling);
+ button.addEventListener("click", function(){
+ // Simulate a manual "use address entered" entry
+ instance.picklist.useAddressEntered.click();
+ // Remove the button
+ instance.input.parentNode.removeChild(button);
+ });
+ };
+
// Use this to initiate and track XMLHttpRequests
instance.request = {
currentRequest: null,
@@ -571,9 +589,9 @@ ContactDataServices.address = function(options){
// We reached our target server, but it returned an error
instance.searchSpinner.hide();
- // If the request is unauthorized we should probably disable future requests
+ // If the request is unauthorized (invalid token) we should probably disable future requests
if(instance.request.currentRequest.status === 401){
- instance.enabled = false;
+ instance.unauthorised();
}
}
};