{"version":3,"file":"uppsala.togglehandler.min.js","names":["define","$","storageService","toggleStateKeeper","instance","triggerSelectors","initToggler","togglerObj","preventDefault","toggleClass","targetContainerSelector","targetSelectors","ariaExpandedElementSelectors","ariaExpandedSelectors","storedObjId","i","length","triggerSelector","$trigger","$ariaExpandedElement","$ariaExpandedTarget","ariaDecoration","on","e","type","key","togglerClick","this","storedObj","getStoredItem","opened","j","elementId","id","trigger","startsWith","each","$showMorePanel","find","prop","$showMoreButton","addClass","isExpanded","$targetContainer","closest","$ariaTargetElement","toggleBooleanAttribute","data","attr","$target","storeOpenedAreas","hasClass","ariaExpanded","ariaHidden","$selector","attributeName","value","show"],"sources":["uppsala.togglehandler.js"],"mappings":"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","ignoreList":[],"sourcesContent":["define([\"jquery\", \"storageservice\", \"togglestatekeeper\"], function ($, storageService, toggleStateKeeper) {\n var instance = {\n triggerSelectors: '',\n initToggler: function (togglerObj, preventDefault) {\n //Sätt default-värde på detta sätt så fungerar det även i IE..\n if (preventDefault == null) {\n preventDefault = true;\n }\n\n //Klassen som ska läggas på vid öppnad yta\n var toggleClass = togglerObj.toggleClass;\n //Selectorerna som triggar öppning av yta\n triggerSelectors = togglerObj.triggerSelectors;\n //Container som måste innehålla target-selectorerna\n var targetContainerSelector = togglerObj.targetContainerSelector;\n //Selectorerna för ytor som ska öppnas\n var targetSelectors = togglerObj.targetSelectors;\n //Selectorerna för element som ska få aria-expanded. Behövs om man klickar på ett element (t ex en div) som inte får ha aria-expanded.\n var ariaExpandedElementSelectors = togglerObj.ariaExpandedSelectors;\n //Id till objektet i localStorage som kommer ihåg öppnade ytor\n var storedObjId = togglerObj.storedObjId;\n\n //Bind upp click samt toggle-state för alla triggers\n for (var i = 0; i < triggerSelectors.length; i++) {\n var triggerSelector = triggerSelectors[i];\n var $trigger = $(triggerSelector);\n\n \n\n //Lägg på aria-attribut\n var $ariaExpandedElement = $trigger;\n\n if (typeof (ariaExpandedElementSelectors) !== 'undefined' && ariaExpandedElementSelectors.length >= i + 1) {\n var $ariaExpandedTarget = $(togglerObj.ariaExpandedSelectors[i]);\n\n if ($ariaExpandedTarget.length > 0) {\n $ariaExpandedElement = $ariaExpandedTarget;\n }\n }\n\n instance.ariaDecoration($ariaExpandedElement, targetContainerSelector, targetSelectors, toggleClass);\n\n //Bind click-event and keyup-event (keyup only detected for element with click-catcher class)\n $trigger.on(\"click keyup\", function (e) {\n if (preventDefault) {\n e.preventDefault();\n }\n if (e.type === \"keyup\" && (e.key !== \"Enter\" || triggerSelector !== \".click-catcher\")) {\n return;\n }\n\n instance.togglerClick($(this), targetContainerSelector, targetSelectors, toggleClass, storedObjId, ariaExpandedElementSelectors);\n });\n }\n\n //Läs in eventulla öppnade ytor\n var storedObj = storageService.getStoredItem(togglerObj.storedObjId, true);\n if (storedObj != null && storedObj.opened != null) {\n for (var j = 0; j < storedObj.opened.length; j++) {\n var elementId = storedObj.opened[j].id;\n //Trigga klicket för att öppna ytan\n $(\"#\" + elementId).trigger(\"click\");\n }\n }\n\n\n //Dölj \"visa mer\" knapp om det saknas innehåll i visa mer ytan)\n if (targetContainerSelector.startsWith('.js-showmore-container'))\n {\n //Läs in ytor\n $(targetContainerSelector).each(function () {\n var $showMorePanel = $(this).find('.showmore.showmore-3x-lineheight24');\n if ($showMorePanel)\n {\n //Visa hela innehållsytan och dölj knappen om innehållsyta är mindre än 100px hög (maxheight = 84px + margin/padding)\n var scrollHeight = $showMorePanel.prop('scrollHeight');\n if (scrollHeight <= 100) {\n var $showMoreButton = $(this).find('.popupbutton');\n if ($showMoreButton) {\n //Trigga klicket för att öppna ytan\n $showMoreButton.trigger(\"click\");\n //Dölj knappen\n $showMoreButton.addClass('hidden');\n }\n }\n }\n });\n }\n },\n togglerClick: function ($trigger, targetContainerSelector, targetSelectors, toggleClass, storedObjId, ariaExpandedElementSelectors) {\n var isExpanded;\n $trigger.toggleClass(toggleClass);\n\n var $targetContainer = $trigger.closest(targetContainerSelector);\n\n //Leta upp varje aria-target i dess \"scope\" (targetContainer)\n if (ariaExpandedElementSelectors != null) {\n for (var j = 0; j < ariaExpandedElementSelectors.length; j++) {\n var $ariaTargetElement = $targetContainer.find(ariaExpandedElementSelectors[j]);\n isExpanded = instance.toggleBooleanAttribute($ariaTargetElement, \"aria-expanded\");\n\n if (isExpanded && $ariaTargetElement.data(\"label-expanded\")) {\n $ariaTargetElement.attr(\"aria-label\", $trigger.data(\"label-expanded\"));\n }\n else if (!isExpanded && $ariaTargetElement.data(\"label-collapsed\")) {\n $ariaTargetElement.attr(\"aria-label\", $trigger.data(\"label-collapsed\"));\n }\n }\n }\n\n //Leta upp varje target i dess \"scope\" (targetContainer)\n for (var i = 0; i < targetSelectors.length; i++) {\n var $target = $targetContainer.find(targetSelectors[i]);\n $target.toggleClass(toggleClass);\n instance.toggleBooleanAttribute($target, \"aria-hidden\");\n $target.toggleClass(\"rs_skip\");\n }\n\n //För att kunna komma ihåg en öppnad yta måste triggern ha ett id\n //...och det måste finnas ett storedObjId angivet\n var elementId = $trigger.attr(\"id\");\n if (typeof storedObjId !== \"undefined\" && elementId != null) {\n toggleStateKeeper.storeOpenedAreas(storedObjId, elementId, $trigger.hasClass(toggleClass));\n }\n },\n ariaDecoration: function ($trigger, targetContainerSelector, targetSelectors) {\n var $targetContainer = $trigger.closest(targetContainerSelector);\n\n var ariaExpanded = $trigger.attr(\"aria-expanded\") === 'true';\n var ariaHidden = !ariaExpanded;\n $trigger.attr(\"aria-expanded\", ariaExpanded);\n\n //Leta upp varje target i dess \"scope\" (targetContainer)\n for (var i = 0; i < targetSelectors.length; i++) {\n var $target = $targetContainer.find(targetSelectors[i]);\n $target.attr(\"aria-hidden\", ariaHidden);\n $target.toggleClass(\"rs_skip\", ariaHidden);\n }\n },\n toggleBooleanAttribute: function ($selector, attributeName) {\n var value = $selector.attr(attributeName);\n if (value === 'true') {\n value = 'false';\n } else {\n value = 'true';\n }\n\n $selector.attr(attributeName, value);\n\n return value === 'true';\n },\n show: function () {\n\n for (var i = 0; i < triggerSelectors.length; i++) {\n var triggerSelector = triggerSelectors[i];\n $(triggerSelector).trigger(\"click\");\n }\n },\n };\n\n return instance;\n});"]}