forked from experiandataquality/GlobalIntuitive
-
Notifications
You must be signed in to change notification settings - Fork 0
/
contact-data-services.min.js
3 lines (3 loc) · 14.8 KB
/
contact-data-services.min.js
1
2
3
/*! contact-data-services.js | https://github.com/experiandataquality/GlobalIntuitive | 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...",applyFocus:!0},formattedAddressContainer:{showHeading:!1,headingType:"h3",validatedHeadingText:"Validated address",manualHeadingText:"Manual address entered"},searchAgain:{visible:!0,text:"Search again"},useAddressEnteredText:"<em>Enter address manually</em>",useSpinner:!1,language:"en",addressLineLabels:["addressLine1","addressLine2","addressLine3","locality","province","postalCode","country"]},d.mergeDefaultOptions=function(a){var b=a||{};return b.enabled=!0,b.language=b.language||d.defaults.language,b.useSpinner=b.useSpinner||d.defaults.useSpinner,b.lastSearchTerm="",b.currentSearchTerm="",b.lastCountryCode="",b.currentCountryCode="",b.currentSearchUrl="",b.currentFormatUrl="",b.applyFocus="undefined"!=typeof b.applyFocus?b.applyFocus:d.defaults.input.applyFocus,b.placeholderText=b.placeholderText||d.defaults.input.placeholderText,b.searchAgain=b.searchAgain||{},b.searchAgain.visible="undefined"!=typeof b.searchAgain.visible?b.searchAgain.visible:d.defaults.searchAgain.visible,b.searchAgain.text=b.searchAgain.text||d.defaults.searchAgain.text,b.formattedAddressContainer=b.formattedAddressContainer||d.defaults.formattedAddressContainer,b.formattedAddressContainer.showHeading="undefined"!=typeof b.formattedAddressContainer.showHeading?b.formattedAddressContainer.showHeading:d.defaults.formattedAddressContainer.showHeading,b.formattedAddressContainer.headingType=b.formattedAddressContainer.headingType||d.defaults.formattedAddressContainer.headingType,b.formattedAddressContainer.validatedHeadingText=b.formattedAddressContainer.validatedHeadingText||d.defaults.formattedAddressContainer.validatedHeadingText,b.formattedAddressContainer.manualHeadingText=b.formattedAddressContainer.manualHeadingText||d.defaults.formattedAddressContainer.manualHeadingText,b.elements=b.elements||{},b},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<a.collection[b].length;d++){for(var e=[c],f=2;f<arguments.length;f++)e.push(arguments[f]);a.collection[b][d].apply(a.collection,e)}},a},d.translations={en:{gbr:{locality:"Town/City",province:"County",postalCode:"Post code"},usa:{locality:"City",province:"State",postalCode:"Zip code"}}},d.ua={banner:{show:function(a){var c=b.querySelector(".ua-banner");if(!c){var d=b.querySelector("body").firstChild;c=b.createElement("div"),c.classList.add("ua-banner"),d.parentNode.insertBefore(c,d.nextSibling)}c.innerHTML=a},hide:function(){var a=b.querySelector(".ua-banner");a&&a.parentNode.removeChild(a)}}},d.urls={endpoint:"https://api.edq.com/capture/address/v2/search",construct:{address:{search:function(a){var b=d.urls.endpoint;return b+="?query="+encodeURIComponent(a.currentSearchTerm),b+="&country="+a.currentCountryCode,b+="&take="+(a.maxSize||a.picklist.maxSize),b+="&auth-token="+a.token},format:function(a,b){return a+"&auth-token="+b.token}}},getToken:function(a){a.token||(a.token=d.urls.getParameter("token"))},getParameter:function(a){a=a.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var b=new RegExp("[\\?&]"+a+"=([^&#]*)"),c=b.exec(location.search);return null===c?"":decodeURIComponent(c[1].replace(/\+/g," "))}},d.address=function(e){var f=d.mergeDefaultOptions(e);return f.events=new d.eventFactory,f.init=function(){return d.urls.getToken(f),f.token?(f.setCountryList(),void(f.elements.input&&(f.input=f.elements.input,f.input.addEventListener("keyup",f.search),f.input.addEventListener("keydown",f.checkTab),f.input.setAttribute("placeholder",f.placeholderText),f.input.parentNode.setAttribute("autocomplete","off"),f.input.parentNode.addEventListener("submit",function(a){a.preventDefault()}),f.applyFocus&&f.input.focus()))):(f.enabled=!1,void d.ua.banner.show("<a href='https://github.com/experiandataquality/GlobalIntuitive#tokens'>Please provide a token for GlobalIntuitive.</a>"))},f.search=function(b){var c=b||a.event;if(c=c.which||c.keyCode,38===c||40===c||13===c)return void f.picklist.keyup(c);if(f.currentSearchTerm=f.input.value,f.currentCountryCode=f.countryList.value,f.canSearch()){f.request.currentRequest&&f.request.currentRequest.abort(),f.events.trigger("pre-search",f.currentSearchTerm);var e=d.urls.construct.address.search(f);f.lastSearchTerm=f.currentSearchTerm,f.result.hide(),f.searchSpinner.hide(),f.searchSpinner.show(),f.request.get(e,f.picklist.show)}else f.lastSearchTerm!==f.currentSearchTerm&&f.picklist.hide()},f.setCountryList=function(){f.countryList=f.elements.countryList,f.countryList||f.createCountryDropdown()},f.canSearch=function(){return f.enabled&&""!==f.currentSearchTerm&&f.lastSearchTerm!==f.currentSearchTerm&&f.countryList.value!==c&&""!==f.countryList.value},f.checkTab=function(b){var c=b||a.event;if(c=c.which||c.keyCode,9===c)return f.picklist.keyup(c),void b.preventDefault()},f.createCountryDropdown=function(){f.countryList={}},f.format=function(a){f.events.trigger("pre-formatting-search",a),f.searchSpinner.hide(),f.currentFormatUrl=d.urls.construct.address.format(a,f),f.request.get(f.currentFormatUrl,f.result.show)},f.picklist={size:0,maxSize:25,show:function(a){f.picklist.items=a.results,f.picklist.currentItem=null,f.picklist.size=f.picklist.items.length,f.picklist.list=f.picklist.list||f.picklist.createList(),f.picklist.list.innerHTML="",f.picklist.resetTabCount(),f.searchSpinner.hide(),f.picklist.useAddressEntered.element=f.picklist.useAddressEntered.element||f.picklist.useAddressEntered.create(),f.picklist.size>0&&(f.events.trigger("pre-picklist-create",f.picklist.items),f.picklist.items.forEach(function(a){var b=f.picklist.createListItem(a);f.picklist.list.appendChild(b),f.picklist.listen(b)}),f.events.trigger("post-picklist-create"))},hide:function(){f.picklist.currentItem=null,f.picklist.useAddressEntered.destroy(),f.picklist.list&&(f.input.parentNode.removeChild(f.picklist.container),f.picklist.list=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.list.parentNode.insertBefore(b,f.picklist.list.nextSibling),b.addEventListener("click",f.picklist.useAddressEntered.click),b},destroy:function(){f.picklist.useAddressEntered.element&&(f.picklist.list.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;c<b.length;c++)a.address.push(f.picklist.useAddressEntered.formatManualAddressLine(b,c));var d=7,e=d-b.length;if(e>0)for(var g=d-e,h=g;h<d;h++)a.address.push(f.picklist.useAddressEntered.formatManualAddressLine([],h))}f.result.show(a),f.result.updateHeading(f.formattedAddressContainer.manualHeadingText)},formatManualAddressLine:function(a,b){var c=d.defaults.addressLineLabels[b],e={};return e[c]=a[b]||"",e}},createList:function(){var a=b.createElement("div");a.classList.add("address-picklist-container"),f.input.parentNode.insertBefore(a,f.input.nextSibling),f.picklist.container=a;var c=b.createElement("div");return c.classList.add("address-picklist"),a.appendChild(c),c.addEventListener("keydown",f.picklist.enter),c},createListItem:function(a){var c=b.createElement("div");return c.innerHTML=f.picklist.addMatchingEmphasis(a),c.setAttribute("format",a.format),c},tabCount:-1,resetTabCount:function(){f.picklist.tabCount=-1},keyup:function(a){if(f.picklist.list){if(13===a||9===a)return void f.picklist.checkEnter();var b,c,d=f.picklist.list.querySelectorAll("div");if(0!==d.length){38===a?f.picklist.tabCount--:f.picklist.tabCount++,f.picklist.tabCount<0&&(f.picklist.tabCount=d.length-1,c=!0),f.picklist.tabCount>d.length-1&&(f.picklist.tabCount=0,b=!0);var e=d[f.picklist.tabCount],g=f.picklist.list.querySelector(".selected");g&&g.classList.remove("selected"),e.classList.add("selected"),f.picklist.currentItem=e;var h={top:f.picklist.list.offsetTop,bottom:f.picklist.list.offsetTop+f.picklist.list.offsetHeight,scrollTop:f.picklist.list.scrollTop,selectedTop:e.offsetTop,selectedBottom:e.offsetTop+e.offsetHeight,scrollAmount:e.offsetHeight};b?f.picklist.list.scrollTop=0:c?f.picklist.list.scrollTop=999:h.selectedBottom+h.scrollAmount>h.bottom?f.picklist.list.scrollTop=h.scrollTop+h.scrollAmount:h.selectedTop-h.scrollAmount-h.top<h.scrollTop&&(f.picklist.list.scrollTop=h.scrollTop-h.scrollAmount)}}},addMatchingEmphasis:function(a){for(var b=a.matched||[],c=a.suggestion,d=0;d<b.length;d++){var e="<b>"+c.substring(b[d][0],b[d][1])+"</b>";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(){var a;1===f.picklist.size?a=f.picklist.list.querySelectorAll("div")[0]:f.picklist.currentItem&&(a=f.picklist.currentItem),a&&f.picklist.pick(a)},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="",f.events.trigger("post-formatting-search",a),a.address&&a.address.length>0){f.result.calculateIfAddressLineGenerationRequired(),f.result.formattedAddressContainer=f.elements.formattedAddressContainer,!f.result.formattedAddressContainer&&f.result.generateAddressLineRequired&&f.result.createFormattedAddressContainer();for(var b=0;b<a.address.length;b++){var c=a.address[b];for(var d in c)c.hasOwnProperty(d)&&f.result.updateAddressLine(d,c)}f.result.hideSearchInputs(),f.result.createSearchAgainLink()}},hide:function(){f.result.formattedAddressContainer&&(f.input.parentNode.removeChild(f.result.formattedAddressContainer),f.result.formattedAddressContainer=c),f.searchAgain.link&&(f.searchAgain.link.parentNode.removeChild(f.searchAgain.link),f.searchAgain.link=c);for(var a in f.elements)if(f.elements.hasOwnProperty(a))for(var b=0;b<d.defaults.addressLineLabels.length;b++){var e=d.defaults.addressLineLabels[b];if(e===a){f.elements[a].value="";break}}},createFormattedAddressContainer:function(){var a=b.createElement("div");a.classList.add("formatted-address"),f.input.parentNode.insertBefore(a,f.input.nextSibling),f.result.formattedAddressContainer=a},createHeading:function(){if(f.formattedAddressContainer.showHeading){var a=b.createElement(f.formattedAddressContainer.headingType);a.innerHTML=f.formattedAddressContainer.validatedHeadingText,f.result.formattedAddressContainer.appendChild(a)}},updateHeading:function(a){if(f.formattedAddressContainer.showHeading){var b=f.result.formattedAddressContainer.querySelector(f.formattedAddressContainer.headingType);b.innerHTML=a}},calculateIfAddressLineGenerationRequired:function(){f.result.generateAddressLineRequired=!0;for(var a=0;a<d.defaults.addressLineLabels.length;a++){var b=d.defaults.addressLineLabels[a];if(f.elements[b]){f.result.generateAddressLineRequired=!1;break}}},updateAddressLine:function(a,b){if(f.elements[a]){var c=f.elements[a],d=b[a];c.value&&d&&(d=", "+d),c.value+=d,f.result.lastAddressField=c}else if(f.result.generateAddressLineRequired){var e=f.result.createAddressLine.label(a),g=f.result.createAddressLine.input(e,b[a]);f.result.formattedAddressContainer.appendChild(g)}},createAddressLine:{input:function(a,c){var d=b.createElement("div");d.classList.add("address-line-input");var e=b.createElement("label");e.innerHTML=a.replace(/([A-Z])/g," $1").replace(/([0-9])/g," $1").replace(/^./,function(a){return a.toUpperCase()}),d.appendChild(e);var f=b.createElement("input");return f.setAttribute("type","text"),f.setAttribute("name",a),f.setAttribute("value",c),d.appendChild(f),d},label:function(a){var b=a,c=f.language,e=f.currentCountryCode,g=d.translations;if(g)try{var h=g[c][e][a];h&&(b=h)}catch(i){}return b}},createSearchAgainLink:function(){if(f.searchAgain.visible){var a=b.createElement("a");a.setAttribute("href","#"),a.classList.add("search-again-link"),a.innerHTML=f.searchAgain.text,a.addEventListener("click",f.reset),f.searchAgain.link=a,f.result.formattedAddressContainer?f.result.formattedAddressContainer.appendChild(a):f.result.lastAddressField.parentNode.insertBefore(a,f.result.lastAddressField.nextSibling)}},renderInputList:function(a){if(a.length>0)for(var b=0;b<a.length;b++)f.result.formattedAddressContainer.appendChild(a[b])},hideSearchInputs:function(){f.toggleVisibility(f.input.parentNode)}},f.toggleVisibility=function(a){a=a||b;for(var c=a.querySelectorAll(".toggle"),d=0;d<c.length;d++)c[d].classList.contains("hidden")?c[d].classList.remove("hidden"):c[d].classList.add("hidden")},f.searchSpinner={show:function(){if(f.useSpinner){var a=b.createElement("div");a.classList.add("loader"),a.classList.add("loader-inline");var c=b.createElement("div");c.classList.add("spinner"),a.appendChild(c),f.input.parentNode.insertBefore(a,f.input.nextSibling)}},hide:function(){if(f.useSpinner){var a=f.input.parentNode.querySelector(".loader-inline");a&&f.input.parentNode.removeChild(a)}}},f.reset=function(a){a&&a.preventDefault(),f.enabled=!0,f.result.hide(),f.toggleVisibility(f.input.parentNode),f.input.focus(),f.events.trigger("post-reset")},f.handleError={badRequest:function(a){f.enabled=!1,f.handleError.showSubmitButton(),f.events.trigger("request-error-400",a)},unauthorized:function(a){f.enabled=!1,f.handleError.showSubmitButton(),f.events.trigger("request-error-401",a)},forbidden:function(a){f.enabled=!1,f.handleError.showSubmitButton(),f.events.trigger("request-error-403",a)},notFound:function(a){f.enabled=!1,f.handleError.showSubmitButton(),f.events.trigger("request-error-404",a)},showSubmitButton:function(){var a=b.createElement("button");a.innerText="Submit",f.input.parentNode.insertBefore(a,f.input.nextSibling),a.addEventListener("click",function(){f.picklist.useAddressEntered.click(),f.input.parentNode.removeChild(a)})}},f.request={currentRequest:null,get:function(a,b){f.request.currentRequest=new XMLHttpRequest,f.request.currentRequest.open("GET",a,!0),f.request.currentRequest.timeout=5e3,f.request.currentRequest.onload=function(a){if(f.request.currentRequest.status>=200&&f.request.currentRequest.status<400){var c=JSON.parse(f.request.currentRequest.responseText);b(c)}else f.searchSpinner.hide(),f.events.trigger("request-error",a),400===f.request.currentRequest.status?f.handleError.badRequest(a):401===f.request.currentRequest.status?f.handleError.unauthorized(a):403===f.request.currentRequest.status?f.handleError.forbidden(a):404===f.request.currentRequest.status&&f.handleError.notFound(a)},f.request.currentRequest.onerror=function(a){f.searchSpinner.hide(),f.events.trigger("request-error",a)},f.request.currentRequest.ontimeout=function(a){f.searchSpinner.hide(),f.events.trigger("request-timeout",a)},f.request.currentRequest.send()}},f.init(),f}}(window,window.document);