{"version":3,"sources":["shvenergy.naturallanguageform.js"],"names":["shvenergy","$","optionsApi","hideLists","removeClass","on","self","this","addClass","setTimeout","hasClass","clicked","attr","next","not","toggleClass","document","form","parents","text","index","url","data","dataTarget","parent","activeIndex","parseInt","find","ctaButton","cookies","setCookie","id","tracking","trackEvent","buttonText","button","widthOld","width","clone","append","widthNew","remove","css","populateDropDown","animSpeed","animate","white-space","getJSON","dropDowns","but","list","empty","Options","opt","each","name","value","Id","class","data-index","data-text","Title","data-url","LandingPageUrl","data-target","label","li","prependTo","resetButtonsAndLists","errorText","butText","length","i","event","target","jQuery"],"mappings":"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","file":"../modules/shvenergy.naturallanguageform.js","sourcesContent":["var shvenergy = shvenergy || {};\r\n\r\nshvenergy.naturallanguageform = (function ($) {\r\n \"use strict\";\r\n\r\n var optionsApi = \"/api/naturallanguageform/options/\";\r\n\r\n function resetButtonsAndLists(index, form) {\r\n var but;\r\n var butText;\r\n var list;\r\n var dropDowns = $(form).find(\".nlf-span\");\r\n\t\t\t\tvar ctaButton = $(form).find(\".nlf-cta\");\r\n\t\t\t\tvar errorText = $(form).find(\".natural-language-form__error\");\r\n\r\n for (var i = index; i < dropDowns.length; i++) {\r\n but = $(dropDowns[i]).find(\"button\");\r\n butText = but.find(\".sentense-part\");\r\n butText.text(but.data(\"defaulttext\"));\r\n but.addClass(\"disabled\");\r\n\r\n list = $(dropDowns[i]).find(\".nlf-list\");\r\n list.empty();\r\n }\r\n\r\n if (dropDowns.length === index) {\r\n\t\t\t\t\t\tctaButton.addClass(\"is-active\");\r\n\t\t\t\t\t\terrorText.addClass(\"hide\");\r\n } else {\r\n\t\t\t\t\t\tctaButton.removeClass(\"is-active\");\r\n\t\t\t\t\t\terrorText.removeClass(\"hide\");\r\n }\r\n }\r\n\r\n\tfunction populateDropDown(index, id, form) {\r\n var url = optionsApi + id;\r\n var dropDowns = $(form).find(\".nlf-span\");\r\n\r\n\t\t$.getJSON(url, function (data) {\r\n\t\t\tvar but = $(dropDowns[index + 1]).find(\".nlf-button\");\r\n\t\t\tvar list = $(dropDowns[index + 1]).find(\".nlf-list\");\r\n\t\t\tbut.removeClass(\"disabled\");\r\n\t\t\tlist.empty();\r\n\r\n\t\t\t$.each(data.Options, function () {\r\n\t\t\t\tvar opt = $(\"\", {\r\n\t\t\t\t\t'type': 'radio',\r\n\t\t\t\t\t'name': id,\r\n\t\t\t\t\t'value': $(this)[0].Id,\r\n\t\t\t\t\t'class': 'nlf-radio',\r\n\t\t\t\t\t'data-index': index + 1,\r\n\t\t\t\t\t'data-text': $(this)[0].Title,\r\n\t\t\t\t\t'data-url': $(this)[0].LandingPageUrl,\r\n\t\t\t\t\t'data-target': $(this)[0].OpenLinkInNewWindow\r\n\t\t\t\t\t//'text': $(this)[0].Title\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar label = $(\"\", {\r\n\t\t\t\t\t'text': $(this)[0].Title\r\n\t\t\t\t});\r\n\t\t\t\tvar li = $(\"
\");\r\n\t\t\t\topt.prependTo(label);\r\n\t\t\t\tlabel.appendTo(li);\r\n\t\t\t\tli.appendTo(list);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tfunction hideLists() {\r\n\t\t$(\".nlf-list\").removeClass(\"is-active\");\r\n\t}\r\n\r\n\tfunction init() {\r\n\r\n\t\t$(\".nlf-button\").on(\"click\", function () {\r\n\r\n\t\t\tvar self = $(this);\r\n\t\t\tself.removeClass(\"pulse\");\r\n\r\n\t\t\thideLists();\r\n\r\n\t\t\tif (self.hasClass(\"disabled\")) {\r\n\t\t\t\tself.addClass(\"shake\");\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\tself.removeClass(\"shake\");\r\n\t\t\t\t}, 1000);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst clicked = $(this);\r\n\t\t\tif (clicked.attr(\"aria-expanded\") === \"false\")\r\n\t\t\t\tclicked.attr(\"aria-expanded\", \"true\");\r\n\t\t\telse\r\n\t\t\t\tclicked.attr(\"aria-expanded\", \"false\");\r\n\r\n\t\t\tconst next = clicked.next(\"ul\");\r\n\t\t\t$(\".nlf-list\").not(next).removeClass(\"is-active\");\r\n\t\t\tclicked.next(\"ul\").toggleClass(\"is-active\");\r\n\t\t});\r\n\r\n\t\t$(document).on(\"click\", \".nlf-radio\", function () {\r\n\r\n var self = $(this);\r\n var form = self.parents(\"form\");\r\n\t\t\tvar id = self.val();\r\n\t\t\tvar text = self.data(\"text\");\r\n\t\t\tvar index = self.data(\"index\");\r\n\t\t\tvar url = self.data(\"url\");\r\n\t\t\tvar dataTarget = self.data(\"target\");\r\n\t\t\tvar parent = self.parents(\"ul\");\r\n var activeIndex = parseInt(parent.data(\"index\") + 1);\r\n\r\n form.find(\"button[data-index='\" + activeIndex + \"']\").addClass(\"pulse\");\r\n\r\n var ctaButton = $(form).find(\".nlf-cta\");\r\n\r\n\t\t\tif (shvenergy.cookies.hasCookieCategoryConsent(\"_shvenergy_nlf_option\")) {\r\n\t\t\t\tshvenergy.cookies.setCookie(\"_shvenergy_nlf_option\", id, 1);\r\n\t\t\t}\r\n\t\t\tshvenergy.tracking.trackEvent('Natural Language Form', 'option clicked', text);\r\n\r\n var button = self.parents(\".nlf-span\").find(\".nlf-button\");\r\n var buttonText = button.find(\".sentense-part\");\r\n\t\t\tconst widthOld = button.width();\r\n\r\n\t\t\t//To animate the button, we need to know the width of the button with the new text\r\n\t\t\t//So we clone the button...\r\n\t\t\tvar clone = button.clone();\r\n\t\t\t//Set the text...\r\n\t\t\tclone.text(text);\r\n\t\t\t//Add class to it so we can find it and remove it safely later...\r\n\t\t\tclone.addClass(\"clone\");\r\n\r\n\t\t\t//Then append it to the dom so we can measure the final width\r\n\t\t\tself.parents(\".nlf-span\").append(clone);\r\n\t\t\t//Get the cloned buttons width\r\n\t\t\tvar widthNew = clone.width();\r\n\t\t\t//An finally remove it from the DOM.\r\n\t\t\tclone.remove();\r\n\r\n\t\t\t//And now for the animation..\r\n\t\t\t//set the current width on the button\r\n\t\t\tbutton.css(\"width\", widthOld);\r\n\t\t\t//set the new text\r\n //button.text(text);\r\n buttonText.text(text);\r\n\r\n let animSpeed = 0;\r\n\t\t\t//Find animation speed\r\n\t\t\tif (widthNew > widthOld) {\r\n\t\t\t\tanimSpeed = widthNew / widthOld * 100;\r\n\t\t\t} else {\r\n\t\t\t\tanimSpeed = widthOld / widthNew * 100;\r\n\t\t\t}\r\n\r\n\t\t\t//Animate the button width\r\n\t\t\tbutton.css(\"white-space\", \"nowrap\").animate({ width: widthNew + \"px\" }, animSpeed, function () {\r\n\t\t\t\t//and in the callback set the button width to auto\r\n\t\t\t\tbutton.css({\r\n\t\t\t\t\t\"width\": \"auto\",\r\n\t\t\t\t\t\"white-space\": \"normal\"\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tpopulateDropDown(index, id, form);\r\n\t\t\thideLists();\r\n\t\t\tresetButtonsAndLists(parseInt(index + 1), form);\r\n\r\n\t\t\t$(\".nlf-button\").attr(\"aria-expanded\", \"false\");\r\n\r\n\r\n\t\t\tctaButton.attr(\"href\", url);\r\n\r\n\t\t\tif (dataTarget === \"true\" || dataTarget === true) {\r\n\t\t\t\tctaButton.attr(\"target\", \"_blank\");\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\t$(document).on(\"click\", function (event) {\r\n\t\t\tif ($(event.target).closest(\".nlf-span\").length === 0) {\r\n\r\n\t\t\t\thideLists();\r\n\t\t\t\t$(\".nlf-button\").attr(\"aria-expanded\", \"false\");\r\n\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tinit();\r\n\r\n})(jQuery);"]}