{"version":3,"sources":["../../../../dev/j/v3/components/cmp-sticky-bars.js"],"names":["changeTabindex","value","buttons","forEach","button","setAttribute","makeSticky","bool","stickyBars","bar","classList","add","remove","positionCheck","visibleTableHeader","tables","length","table","tableTop","querySelector","waypoints","messageBar","waypoint","avm","require","document","querySelectorAll","window","addEventListener","error","sdl","console","push","system","type","name","message","event"],"mappings":"CAAA,WACC,YAWC,SAASA,GAAeC,GACvBC,EAAQC,QAAQ,SAASC,GACxBA,EAAOC,aAAa,WAAYJ,KAKlC,QAASK,GAAWC,GACnBC,EAAWL,QAAQ,SAASM,GACvBF,GACHE,EAAIC,UAAUC,IAAI,aAClBX,EAAe,KAEfS,EAAIC,UAAUE,OAAO,aACrBZ,GAAgB,MAMnB,QAASa,KACR,GAAIC,IAAqB,CAGrBC,IAAUA,EAAOC,OAAS,GAC7BD,EAAOZ,QAAQ,SAASc,GACvB,GAAIC,GAAWD,EAAME,cAAc,sBAGnCL,GAAsBA,GAAsBM,EAAUF,EAFlC,GAE2D,MAAM,IAASE,EAAUH,KAMtGH,EAGCO,EACHA,EAAWX,UAAUC,IAAI,UAEzBL,GAAW,GAGFe,GAEVf,GAAW,GAGNQ,GACJO,EAAWX,UAAUE,OAAO,WAI7BN,EAFUc,EAAUE,EAAU,KAAM,MAAM,IAE/B,GAGA,GAnEd,IACC,GACCF,GAAYG,IAAIC,QAAQ,uBACxBhB,EAAaiB,SAASC,iBAAiB,eACvCxB,EAAUuB,SAASC,iBAAiB,iBACpCL,EAAaI,SAASN,cAAc,+BACpCJ,EAASU,SAASC,iBAAiB,iBACnCJ,EAAW,kBAiEZtB,IAAgB,IAIZyB,SAASN,cAAcG,IAAaD,KACvCM,OAAOC,iBAAiB,SAAU,WACjCf,MAGDc,OAAOC,iBAAiB,SAAU,WACjCf,OAKD,MAAOgB,GAEW,mBAARC,OACVC,QAAQF,MAAMA,GACdC,IAAIE,MACHC,QACCJ,OACCK,KAAML,EAAMM,KACZC,QAASP,EAAMO,UAGjBC,MAAO","file":"cmp-sticky-bars.js","sourcesContent":["(function() {\n\t'use strict';\n\ttry {\n\t\tvar\n\t\t\twaypoints = avm.require('avast.web.waypoints'),\n\t\t\tstickyBars = document.querySelectorAll('.sticky-bar'),\n\t\t\tbuttons = document.querySelectorAll('.sticky-bar a'),\n\t\t\tmessageBar = document.querySelector('.message-bar.sticky-message'),\n\t\t\ttables = document.querySelectorAll('.table.sticky'),\n\t\t\twaypoint = '.sticky-waypoint';\n\n\t\t// (un)set all sticky bar buttons to be tabable\n\t\tfunction changeTabindex(value) {\n\t\t\tbuttons.forEach(function(button){\n\t\t\t\tbutton.setAttribute('tabindex', value);\n\t\t\t});\n\t\t}\n\n\t\t// (un)set class to sticky bar\n\t\tfunction makeSticky(bool) {\n\t\t\tstickyBars.forEach(function(bar){\n\t\t\t\tif (bool) {\n\t\t\t\t\tbar.classList.add('is-sticky');\n\t\t\t\t\tchangeTabindex(0);\n\t\t\t\t} else {\n\t\t\t\t\tbar.classList.remove('is-sticky');\n\t\t\t\t\tchangeTabindex(-1);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// stickiness logic\n\t\tfunction positionCheck() {\n\t\t\tvar visibleTableHeader = false;\n\n\t\t\t// check if there is more than one table with sticky header and if in any of them is currently visible thus possibly colliding with other sticky elements\n\t\t\tif (tables && tables.length > 0) {\n\t\t\t\ttables.forEach(function(table){\n\t\t\t\t\tvar tableTop = table.querySelector('.tr.table-header-tr');\n\t\t\t\t\tvar offsetFromTop = 64; // height of the sticky bar\n\t\t\t\t\t\n\t\t\t\t\tvisibleTableHeader = !visibleTableHeader ? (waypoints(tableTop, offsetFromTop, null, true) && waypoints(table)) : visibleTableHeader;\n\t\t\t\t});\n\t\t\t}\n\n\n\t\t\t//if sticky table header is present\n\t\t\tif (visibleTableHeader) {\n\n\t\t\t\t// hide both sticky bar and sticky message bar\n\t\t\t\tif (messageBar) {\n\t\t\t\t\tmessageBar.classList.add('hidden');\n\t\t\t\t} else {\n\t\t\t\t\tmakeSticky(false);\n\t\t\t\t}\n\n\t\t\t} else if (messageBar) {\n\t\t\t\t// if there is sticky message then disable sticky bar\n\t\t\t\tmakeSticky(false);\n\n\t\t\t\t// make sure the sticky message bar is displayed once the sticky table is not in view anymore\n\t\t\t\tif (!visibleTableHeader) {\n\t\t\t\t\tmessageBar.classList.remove('hidden');\n\t\t\t\t}\n\t\t\t} else if (waypoints(waypoint, null, null, true)) {\n\t\t\t\t// else make sticky bar sticky under given waypoint\n\t\t\t\tmakeSticky(true);\n\t\t\t} else {\n\t\t\t\t// else hide sticky bar\n\t\t\t\tmakeSticky(false);\n\t\t\t}\n\t\t}\n\n\t\t// initially disable all sticky bar buttons from tabbing scope\n\t\tchangeTabindex(-1);\n\n\n\t\t// event listeners assignment only if waypoint class exists\n\t\tif (document.querySelector(waypoint) || messageBar) {\n\t\t\twindow.addEventListener('scroll', function () {\n\t\t\t\tpositionCheck();\n\t\t\t});\n\n\t\t\twindow.addEventListener('resize', function () {\n\t\t\t\tpositionCheck();\n\t\t\t});\n\t\t}\n\n\n\t} catch (error) {\n\t\t// singe data layer error tracking\n\t\tif (typeof sdl !== 'undefined') {\n\t\t\tconsole.error(error);\n\t\t\tsdl.push({\n\t\t\t\tsystem: {\n\t\t\t\t\terror: {\n\t\t\t\t\t\ttype: error.name,\n\t\t\t\t\t\tmessage: error.message,\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tevent: 'system.error'\n\t\t\t});\n\t\t}\n\t}\n})();\n"]}