{"version":3,"file":"uppsala.toggleswitch.min.js","names":["define","$","toggleSwitch","initButtonToggle","pointableSelector","selectedOptionSelector","pointerElementSelector","switchContainerSelector","callbackOnChange","queryStrPrm","length","$toggleSwitchContainer","find","click","transformToggleSwitchPointer","this","undefined","defaultElement","URLSearchParams","window","location","search","get","elementToGoTo","addResizeListener","initCheckboxToggle","change","$clickedElement","$label","attr","$checkedElement","$pointToElement","$pointerElement","pointerElementPresentOnPage","checkedInputPos","position","left","css","outerWidth","transform","updateActiveClasses","widgetIsBasedOnCheckbox","debounceFunction","on","clearTimeout","setTimeout","$selectedOption","$activeElement","$toggleElements","i","setAttribute","classList","remove","addClass"],"sources":["components/uppsala.toggleswitch.js"],"mappings":"AAEAA,OAAO,CAAC,WAAW,SAAUC,GACzB,IACIC,EAAe,CAEfC,iBAAkB,SAAUC,EAAmBC,EAAwBC,EAAwBC,EAAyBC,EAAkBC,GACtI,GAAIL,EAAkBM,OAAS,GAAKL,EAAuBK,OAAS,GAAKJ,EAAuBI,OAAS,EAAG,CAExG,IAAIC,EAAyBV,EAAEM,GAG/BI,EAAuBC,KAAKR,GAAmBS,OAAM,WACjDX,EAAaY,6BAA6Bb,EAAEc,MAAOT,EAAwBF,EAAmBO,GAGtEK,MAApBR,GACAA,GAER,IAIA,MACMS,EADkB,IAAIC,gBAAgBC,OAAOC,SAASC,QACrBC,IAAIb,GACrCc,EAAgBZ,EAAuBC,KAAOK,EAAiB,IAAMA,EAAiBZ,GAC5FU,KAAKD,6BAA6BS,EAAejB,EAAwBF,EAAmBO,GAE5FI,KAAKS,kBAAkBnB,GAAwB,EAAOC,EAAwBF,EAAmBO,EACrG,CACJ,EAEAc,mBAAoB,SAAUrB,EAAmBE,EAAwBC,GAErE,GAAIH,EAAkBM,OAAS,GAAKJ,EAAuBI,OAAS,EAAG,CAEnE,IAAIC,EAAyBV,EAAEM,GAE/BI,EAAuBC,KAAK,iDAAiDc,QAAO,WAChF,IAAIC,EAAkB1B,EAAEc,MACpBa,EAASjB,EAAuBC,KAAK,cAAgBe,EAAgBE,KAAK,MAAQ,MACtF3B,EAAaY,6BAA6Bc,EAAQtB,EAAwBF,EAAmBO,EACjG,IAEAI,KAAKS,kBAAkB,IAAI,EAAMlB,EAAwBF,EAAmBO,GAG5E,IAAImB,EAAkBnB,EAAuBC,KAAK,yDAC9CgB,EAASjB,EAAuBC,KAAK,cAAgBkB,EAAgBD,KAAK,MAAQ,MACtFd,KAAKD,6BAA6Bc,EAAQtB,EAAwBF,EAAmBO,EACzF,CACJ,EAEAG,6BAA8B,SAAUiB,EAAiBzB,EAAwBF,EAAmBO,GAEhG,IAAIqB,EAAkBrB,EAAuBC,KAAKN,GAG9C2B,EAA8BD,EAAgBtB,OAAS,EAG3D,GAFkCqB,EAAgBrB,OAAS,GAExBuB,EAA6B,CAE5D,IAAIC,EAAkBH,EAAgBI,WAAWC,KAAO,EACxDJ,EAAgBK,IAAI,CAChB,YAAaN,EAAgBO,aAAe,KAC5CC,UAAa,cAAgBL,EAAkB,QAGnDhC,EAAasC,oBAAoBT,EAAiB3B,EAAmBO,EACzE,CACJ,EAEAa,kBAAmB,SAAUnB,EAAwBoC,EAAyBnC,EAAwBF,EAAmBO,GAIrH,IAAI+B,EACJzC,EAAEkB,QAAQwB,GAAG,UAAU,WACnBC,aAAaF,GACbA,EAAmBG,YAAW,WAC1B,IAAIC,EAAkBnC,EAAuBC,KAAKP,GAGlD,GAAIoC,EAAyB,CACzB,IAAIX,EAAkBnB,EAAuBC,KAAK,yDAC9CgB,EAASjB,EAAuBC,KAAK,cAAgBkB,EAAgBD,KAAK,MAAQ,MACtF3B,EAAaY,6BAA6Bc,EAAQtB,EAAwBF,EAAmBO,EACjG,MACSmC,EAAgBpC,OAAS,GAC9BR,EAAaY,6BAA6BgC,EAAiBxC,EAAwBF,EAAmBO,EAE9G,GAAG,IACP,GAEJ,EACA6B,oBAAqB,SAAUO,EAAgB3C,EAAmBO,GAG9D,IADA,IAAIqC,EAAkBrC,EAAuBC,KAAKR,GACzC6C,EAAI,EAAGA,EAAID,EAAgBtC,OAAQuC,IACxCD,EAAgBC,GAAGC,aAAa,gBAAiB,SACjDF,EAAgBC,GAAGE,UAAUC,OAAO,UAExCL,EAAelB,KAAK,gBAAiB,QACrCkB,EAAeM,SAAS,SAC5B,GAGJ,OAAOnD,CACX","ignoreList":[],"sourcesContent":["// togglebutton created with initButtonToggle are querystring aware, meaning it will default to the state that the querystring. Requires the pointableSelector elements to have ID's.\n\ndefine(['jquery'], function ($) {\n var isInitialTransform = true;\n var toggleSwitch = {\n //use when widget is based on button html element (see example on localplanlistpage)\n initButtonToggle: function (pointableSelector, selectedOptionSelector, pointerElementSelector, switchContainerSelector, callbackOnChange, queryStrPrm) {\n if (pointableSelector.length > 0 && selectedOptionSelector.length > 0 && pointerElementSelector.length > 0) {\n\n var $toggleSwitchContainer = $(switchContainerSelector);\n\n //click event for toggle elements\n $toggleSwitchContainer.find(pointableSelector).click(function () {\n toggleSwitch.transformToggleSwitchPointer($(this), pointerElementSelector, pointableSelector, $toggleSwitchContainer);\n //initial transform triggers change/click, \n //this prevents a callback on first page load\n if (callbackOnChange != undefined) {\n callbackOnChange();\n }\n });\n\n //initial transform\n // look for what element to set as active. fallback to configured\n const urlSearchParams = new URLSearchParams(window.location.search);\n const defaultElement = urlSearchParams.get(queryStrPrm);\n const elementToGoTo = $toggleSwitchContainer.find( (defaultElement ? '#' + defaultElement : selectedOptionSelector));\n this.transformToggleSwitchPointer(elementToGoTo, pointerElementSelector, pointableSelector, $toggleSwitchContainer);\n\n this.addResizeListener(selectedOptionSelector, false, pointerElementSelector, pointableSelector, $toggleSwitchContainer);\n }\n },\n //use when widget is based on checkbox html element (see example on insidenewslistpage)\n initCheckboxToggle: function (pointableSelector, pointerElementSelector, switchContainerSelector) {\n\n if (pointableSelector.length > 0 && pointerElementSelector.length > 0) {\n\n var $toggleSwitchContainer = $(switchContainerSelector);\n\n $toggleSwitchContainer.find('input[type=radio][name=newstype-toggleswitch]').change(function () {\n var $clickedElement = $(this);\n var $label = $toggleSwitchContainer.find(\"label[for='\" + $clickedElement.attr('id') + \"']\");\n toggleSwitch.transformToggleSwitchPointer($label, pointerElementSelector, pointableSelector, $toggleSwitchContainer);\n });\n\n this.addResizeListener(\"\", true, pointerElementSelector, pointableSelector, $toggleSwitchContainer);\n\n //initial check and transform for which toggle switch element is checked\n var $checkedElement = $toggleSwitchContainer.find('input[type=radio][name=newstype-toggleswitch]:checked');\n var $label = $toggleSwitchContainer.find(\"label[for='\" + $checkedElement.attr('id') + \"']\");\n this.transformToggleSwitchPointer($label, pointerElementSelector, pointableSelector, $toggleSwitchContainer);\n }\n },\n //position the element that marks the currently chosen option for the toggle switch\n transformToggleSwitchPointer: function ($pointToElement, pointerElementSelector, pointableSelector, $toggleSwitchContainer) {\n //transform and position pointer element\n var $pointerElement = $toggleSwitchContainer.find(pointerElementSelector);\n\n //check that elements for toggle-switch is present on page\n var pointerElementPresentOnPage = $pointerElement.length > 0;\n var pointToElementPresentOnPage = $pointToElement.length > 0;\n\n if (pointToElementPresentOnPage && pointerElementPresentOnPage) {\n\n var checkedInputPos = $pointToElement.position().left - 4;\n $pointerElement.css({\n \"min-width\": $pointToElement.outerWidth() + \"px\",\n \"transform\": \"translateX(\" + checkedInputPos + \"px)\"\n });\n\n toggleSwitch.updateActiveClasses($pointToElement, pointableSelector, $toggleSwitchContainer);\n }\n },\n //update toggle-switch when window is resized\n addResizeListener: function (selectedOptionSelector, widgetIsBasedOnCheckbox, pointerElementSelector, pointableSelector, $toggleSwitchContainer) {\n\n // Register event listener to trigger js positioning of toggle switch pointer\n // setTimeout to limit number of times it runs\n var debounceFunction;\n $(window).on('resize', function () {\n clearTimeout(debounceFunction);\n debounceFunction = setTimeout(function () {\n var $selectedOption = $toggleSwitchContainer.find(selectedOptionSelector);\n\n //for cases when a checkbox element is used\n if (widgetIsBasedOnCheckbox) {\n var $checkedElement = $toggleSwitchContainer.find('input[type=radio][name=newstype-toggleswitch]:checked');\n var $label = $toggleSwitchContainer.find(\"label[for='\" + $checkedElement.attr('id') + \"']\");\n toggleSwitch.transformToggleSwitchPointer($label, pointerElementSelector, pointableSelector, $toggleSwitchContainer);\n }\n else if ($selectedOption.length > 0) {\n toggleSwitch.transformToggleSwitchPointer($selectedOption, pointerElementSelector, pointableSelector, $toggleSwitchContainer);\n }\n }, 100);\n });\n\n },\n updateActiveClasses: function ($activeElement, pointableSelector, $toggleSwitchContainer) {\n\n var $toggleElements = $toggleSwitchContainer.find(pointableSelector);\n for (var i = 0; i < $toggleElements.length; i++) {\n $toggleElements[i].setAttribute('aria-selected', 'false');\n $toggleElements[i].classList.remove(\"active\");\n }\n $activeElement.attr('aria-selected', 'true'); //set aria-selected=true for clicked element\n $activeElement.addClass('active');\n }\n }\n\n return toggleSwitch;\n});"]}