{"version":3,"sources":["webpack:///./src/themes/citta/views/components/citta-drawer.tsx?5e14","webpack:///./src/themes/citta/views/accordion-item.view.tsx?946d","webpack:///./src/themes/citta/views/navigation-menu.view.tsx?fddc"],"names":["Drawer","React","constructor","props","super","_clicFunction","event","preventDefault","this","toggleButtonUrl","window","location","assign","_toggle","bind","isManuallyToggled","state","isOpen","collapseProps","drawerGlyphClass","classnames","toggleGlyphClassName","animateGlyph","drawerOpenGlyph","openGlyph","closeGlyph","drawerCloseGlyph","render","selectedStateOptionText","_objectSpread","undefined","children","drawerClass","className","Button","Object","toggleButtonProps","onClick","block","disabled","color","tabIndex","radioButtonOption","type","role","id","toggleButtonText","toString","checked","htmlFor","_generateDrawerButtonInnerMarkup","openInNewTab","Collapse","collapseState","drawerButtonTextClass","toggleButtonClassName","glyphPlacement","toggleButtonTextClick","onMouseOver","onCategoryMouseOver","href","target","_generateGlyphMarkup","glyphClass","e","tagName","toLowerCase","setState","onToggle","interactionStyle","getAccordionItemContent","content","accordionItemTitle","titles","split","returnVal","forEach","t","toLocaleLowerCase","push","productSpec","productSpecificationData","result","contentText","some","spec","TextValue","Name","renderAccordionItemContent","map","c","renderAccordionItemSlotsContent","items","length","item","index","key","_onToggle","ExpandOneItemOnly","accordionState","isAllExpanded","radioButtonText","context","actionContext","update","createAccordionStateInput","AccordionItemView","data","config","drawer","accordionSlots","AccordionItemContainer","AccordionItemContent","accordionExpandedStateResult","accordionExpandedState","expanded","isExpandedOnInitialLoad","indexOf","drawerProps","tag","accordionItemContent","hasAccordionItemContent","hasAccordionItemSlotsContent","Module","Node","NavigationMenuView","supportedLevel","currentLevel","escapeKey","_bindDesktopCategoryClickMobile","menuItem","console","log","levelIds","subMenu","onlyMobile","menuCurrentLevel","includes","newArray","pop","hasUserInteracted","_formatLinkData","domain","request","url","absoluteUrl","path","destinationUrl","URL","requestUrl","_bindDesktopCategoryClick","desktopCategoryId","isDrawerOpen","_renderImage","_handleDesktopDropdownToggle","parentId","activeDesktopMenu","mobileViewLabelText","linkText","parentMenu","_handleDropdownToggle","activeMenu","document","body","classList","toggle","activeDesktopMeu","activeMeu","menuItemData","contains","setTimeout","_resetFocus","menuNode","current","focus","_handleClickOutside","getElementsByClassName","_escFunction","keyCode","_closeSubmenu","openFirstByDefault","openFirstMenuItem","cateGoryImageURL","viewport","_customGetViewport","_customUpdateViewport","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","payLoad","getPayloadObject","menuItems","componentDidMount","addEventListener","coustomResizeThrottledEventHandler","addThrottledEvent","componentWillUnmount","removeEventListener","componentDidUpdate","hello","isMobileView","showOverlay","_shouldRenderOverlays","_renderMobileMenu","_renderDesktopMenu","Navigation","filteredMenuData","p","_p$subMenu","_p$subMenu2","menuLevel","parent1Id","parent2Id","parent3Id","filter","a","_a$linkText","x","_x$subMenu","_t$subMenu","u","_renderDrawerMenu","find","MenuList","ref","_renderDisplay","mobileLevel","parentIndex","_renderDrawer","_renderLinkMenuItem","_setCollapse","timeout","linkURL","_renderMobileLinkMenuItem","_renderLinkText","menuSubItem","_renderDrawerLink","option","Link","optionVal","contentAction","etext","attributes","getTelemetryAttributes","onTelemetryClick","_item$subMenu","_renderSpanMenuItem","ListItem","menuItemList","_p$linkText","_p$subMenu3","_a$linkText2","i","_getFromSubMenu","_createMenuItemList","subMenus","found","_renderSubMenu","_renderButtonMenuItem","renderImageSection","isMenuOpen","error","isInnerOpen","levelClassName","menuOptions","idx","hasOptions","_renderDesktopButtonMenuItem","_renderSubMenuDrawer","_renderMenu","Span","level","currentItem","_document$querySelect","querySelector","remove","MsDyn365","isBrowser","innerWidth","gridSettings","xs","w","sm","md","lg","__decorate","computed"],"mappings":"6dAgBc,MAAOA,UAAeC,YAOhCC,YAAYC,GACRC,MAAMD,GAiIF,KAAAE,cAAiBC,IACrBA,EAAMC,iBACFC,KAAKL,MAAMM,iBACXC,OAAOC,SAASC,OAAOJ,KAAKL,MAAMM,kBAnItCD,KAAKK,QAAUL,KAAKK,QAAQC,KAAKN,MACjCA,KAAKO,mBAAoB,EACzBP,KAAKQ,MAAQ,CAAEC,OAASd,EAAMe,eAAiBf,EAAMe,cAAcD,SAAW,GAC9ET,KAAKW,iBAAmBC,IAAW,gBAAiBZ,KAAKL,MAAMkB,qBAAuBb,KAAKL,MAAMkB,qBAAuB,IACpHb,KAAKL,MAAMmB,cACXd,KAAKe,gBAAkBH,IAAWZ,KAAKW,iBAEnCX,KAAKL,MAAMqB,UACPhB,KAAKL,MAAMqB,UACXhB,KAAKL,MAAMsB,WACPjB,KAAKL,MAAMsB,WAAa,IACpCjB,KAAKkB,iBAAmBlB,KAAKe,kBAE7Bf,KAAKe,gBAAkBH,IAAWZ,KAAKW,iBAEnCX,KAAKL,MAAMqB,UACPhB,KAAKL,MAAMqB,UAAY,IAC/BhB,KAAKkB,iBAAmBN,IAAWZ,KAAKW,iBAEpCX,KAAKL,MAAMsB,WACPjB,KAAKL,MAAMsB,WAAa,KAIjCE,SACH,MAAM,wBAAEC,GAA4BpB,KAAKL,MACnCe,E,yWAAaW,CAAA,GAAQrB,KAAKL,MAAMe,oBAETY,IAAzBZ,EAAcD,QAAwBT,KAAKO,kBAC3CG,EAAcD,OAAST,KAAKQ,MAAMC,OAC1BC,EAAcD,SACtBT,KAAKQ,MAAMC,OAASC,EAAcD,QAEtCC,EAAca,SAAWvB,KAAKL,MAAM4B,SACpC,MAAMC,EAAcZ,IAAW,SAAUZ,KAAKL,MAAM8B,UAAYzB,KAAKL,MAAM8B,UAAY,IAEvF,OADAzB,KAAKO,mBAAoB,EAErBd,gBAAA,OAAKgC,UAAWD,GACZ/B,gBAACiC,SAAMC,OAAAvB,OAAA,GACCJ,KAAKL,MAAMiC,kBAAiB,CAChCC,QAAS7B,KAAKK,QAAO,gBACNK,EAAcD,OAC7BqB,OAAK,EACLC,SAAU/B,KAAKL,MAAMoC,SACrBN,UAAW,iBACXO,MAAM,YACNC,UAAW,IAEVjC,KAAKL,OAASK,KAAKL,MAAMuC,kBACtBzC,gBAAA,OAAKgC,UAAU,eACXhC,gBAAA,SACI0C,KAAK,QACLC,KAAK,aACLC,GAAIrC,KAAKL,MAAM2C,iBAAiBC,WAChCV,QAAS7B,KAAKK,QACdmC,QAASxC,KAAKL,MAAM2C,iBAAiBC,aAAenB,IAGxD3B,gBAAA,SACIgD,QAASzC,KAAKL,MAAM2C,iBAAiBC,WACrCd,UAAU,eAIlB,KACHzB,KAAK0C,iCAAiChC,EAAcD,OAAQT,KAAKL,MAAMgD,eAAgB,IAE5FlD,gBAACmD,WAAQjB,OAAAvB,OAAA,GAAKM,KAKlBgC,iCAAiCG,EAAwBF,GAC7D,MAAMG,EAAwBlC,IAAW,qBAErCZ,KAAKL,MAAMoD,sBACP/C,KAAKL,MAAMoD,sBAAwB,IAC3C,MAAkC,QAA9B/C,KAAKL,MAAMqD,eACPhD,KAAKL,MAAMsD,sBAEPxD,2BAAA,KACIA,gBAAA,KACIyD,YAAalD,KAAKL,MAAMwD,oBACxBtB,QAAS7B,KAAKH,cACduD,KAAMpD,KAAKL,MAAMM,gBACjBmC,KAAK,WACLiB,OAAQV,EAAe,cAAWrB,EAClCG,UAAWb,IAAWkC,EAAuB,YAE5C9C,KAAKL,MAAM2C,kBAEftC,KAAKsD,qBAAqB,qBAAsBT,IAKrDpD,2BAAA,KACIA,gBAAA,QAAMgC,UAAWb,IAAWkC,EAAuB,YAAa9C,KAAKL,MAAM2C,kBAC1EtC,KAAKsD,qBAAqB,qBAAsBT,IAM/B,UAA9B7C,KAAKL,MAAMqD,eACPhD,KAAKL,MAAMsD,sBAEPxD,2BAAA,KACKO,KAAKsD,qBAAqB,uBAAwBT,GACnDpD,gBAAA,KAAGyD,YAAalD,KAAKL,MAAMwD,oBAAqBf,KAAK,WAAWgB,KAAMpD,KAAKL,MAAMM,gBAAiBwB,UAAWb,IAAWkC,EAAuB,UAAW9C,KAAKL,MAAM2C,mBAKzK7C,2BAAA,KACKO,KAAKsD,qBAAqB,uBAAwBT,GACnDpD,gBAAA,QAAMgC,UAAWb,IAAWkC,EAAuB,UAAW9C,KAAKL,MAAM2C,mBAKjFtC,KAAKL,MAAMsD,sBACJxD,gBAAA,KAAGwC,SAAU,EAAGiB,YAAalD,KAAKL,MAAMwD,oBAAqBC,KAAMpD,KAAKL,MAAMM,gBAAiBmC,KAAK,WAAWX,UAAWb,IAAWkC,EAAuB,YAAa9C,KAAKL,MAAM2C,kBAEpL7C,gBAAA,QAAMgC,UAAWb,IAAWkC,EAAuB,YAAa9C,KAAKL,MAAM2C,kBAUtFgB,qBAAqBnD,EAAkB0C,GAC3C,IAAIU,EAAaV,EAAgB7C,KAAKe,gBAAkBf,KAAKkB,iBAE7D,OADAqC,EAAa,GAAGA,KAAcpD,IAE1BV,gBAAA,QAAMwC,SAAU,EAAGR,UAAW8B,IAI9BlD,QAAQmD,GAE2B,MAAnCA,EAAEH,OAAOI,QAAQC,gBACjBF,EAAEzD,iBACFC,KAAK2D,SAAS,CAAElD,QAAST,KAAKQ,MAAMC,SACpCT,KAAKO,mBAAoB,EACrBP,KAAKL,MAAMiE,UACX5D,KAAKL,MAAMiE,SAAS5D,KAAKQ,W,8HCnKvBqD,E,iDAAlB,SAAkBA,GAChBA,EAAA,0BACAA,EAAA,sCAFF,CAAkBA,MAAgB,KAmBlC,MAgFMC,EAA0BA,CAACC,EAA6BC,KAC5D,IAAIC,EAASD,EAAmBE,MAAM,KAClCC,EAAmB,GA6BvB,OA5BAF,EAAOG,QAAQC,IAEiB,sBAA1BA,EAAEC,qBACJH,EAAUI,KAAK9E,gBAAA,UAAK4E,E,MAItB,MAAMG,EAAcT,EAAQU,yBAAyBC,OACrD,IAAIC,EAAc,GAEdH,GACFA,EAAYI,KAAKC,MACXA,EAAKC,WAAaD,EAAKE,OAASV,KAClCM,EAAcE,EAAKC,WACZ,IAOTH,GAAyC,2BAA1BN,EAAEC,qBACnBH,EAAUI,KAAK9E,gBAAA,UAAK4E,E,MAGtBF,EAAUI,KAAK9E,gBAAA,SAAIkF,MAGdR,GAGHa,EAA8BjB,GAEhCtE,gBAAA,OAAKgC,UAAU,aACZsC,EAAQkB,IAAIC,GACHzF,gBAAA,YAAOyF,KAMjBC,EAAmCC,GAErC3F,2BAAA,KACG2F,GAASA,EAAMC,OACdD,EAAMH,IAAI,CAACK,EAAuBC,IAE9B9F,gBAACA,WAAc,CAAC+F,IAAKD,GAClBD,IAIL,MAKJG,EAAYA,CAAC9F,EAAqC2C,EAA0B9B,KAChF,IAAKA,EAAMC,QAAUd,EAAMkE,mBAAqBA,EAAiB6B,kBAAmB,CAClF,MAAMC,EAAiB,CAAEC,eAAe,EAAOC,gBAAiBvD,GAChE3C,EAAMmG,QAAQC,cAAcC,OAAOC,oCAA0BN,GAAiBA,KAInEO,UAnJoDvG,IACjE,MAAM,KAAEwG,EAAI,OAAEC,EAAM,OAAEC,EAAM,eAAEC,EAAc,uBAAEC,EAAsB,qBAAEC,GAAyB7G,EACzF8G,EAA+BN,GAAQA,EAAKO,wBAA0BP,EAAKO,uBAAuBhC,OAClGiC,EAAWF,QAA+EnF,IAA/CmF,EAA6Bb,cAC5EO,GAAQC,EAAOQ,wBACdH,GAAgCA,EAA6Bb,eAEzDpF,GAASf,WAA6B,CAC3CgB,QAAQ,IAGV,IAAI6B,EAAmB+D,EAAO/D,kBACyB,GAAnDA,EAAiBuE,QAAQ,wBAC3BvE,EAAmB,mBAGrB,MAAMwE,EAAc,CAClBC,IAAKV,EAAOU,IACZtF,UAAW4E,EAAO5E,UAClBa,iBAAkBA,EAClBU,eAAgBoD,EAAOpD,eACvBd,kBAAmBkE,EAAOlE,kBAC1BxB,cAAe,CAAED,OAAQkG,GACzB3F,UAAW,eACXC,WAAY,iBACZG,wBAAyBqF,aAA4B,EAA5BA,EAA8BZ,gBACvDjC,SAAUA,KACR6B,EAAU9F,EAAO2C,EAAkB9B,KAKvC,IAAIuD,EAEJ,IACEA,EAAUoC,EACV,MAAO3C,GACP,OAAO/D,gBAAA,WAAM+D,GAGf,IAAIwD,EAAuBlD,EAAwBC,EAASqC,EAAOpC,oBAC/DiD,EAA0BD,EAAqB3B,OAAS,EAC5D,MAAM6B,EAA+BZ,GAAkBA,EAAeU,sBAAwBV,EAAeU,qBAAqB3B,OAClI,OACE5F,2BAAA,KACGwH,GACCxH,gBAAC0H,SAAMxF,OAAAvB,OAAA,GAAKmG,GACV9G,gBAAA,OAAKgC,UAAU,2BACbhC,gBAACD,IAAMmC,OAAAvB,OAAA,GACD0G,EAAW,CACf7D,uBAAuB,IAEvBxD,gBAAC2H,OAAIzF,OAAAvB,OAAA,GAAKoG,GACPS,GAA4BjC,EAA2BgC,GACvDE,GAAiC/B,EAAgCmB,EAAeU,2BAOzFC,GAA2BC,GAC3BzH,gBAAC0H,SAAMxF,OAAAvB,OAAA,GAAKmG,GACV9G,gBAAA,OAAKgC,UAAU,2BACbhC,gBAACD,IAAMmC,OAAAvB,OAAA,GACD0G,EAAW,CACf7D,uBAAuB,IAEvBxD,gBAAC2H,OAAIzF,OAAAvB,OAAA,GAAKoG,GACPS,GAA4BjC,EAA2BgC,GACvDE,GAAiC/B,EAAgCmB,EAAeU,6B,mQCtD3F,MAAOK,UAA2B5H,gBAUtCC,YAAYC,GACVC,MAAMD,GAVA,KAAA2H,eAAyB,EACzB,KAAAC,aAAuB,EACvB,KAAAC,UAAoB,GAmNpB,KAAAC,gCAAmCC,GAA8BlE,IAEvE,GADAmE,QAAQC,IAAI,UACPF,EAASG,UAAYH,EAASI,SAAWJ,EAASI,QAAQzC,QAAUqC,EAASrF,KAAOrC,KAAKQ,MAAMuH,WAC9F/H,KAAKQ,MAAMwH,iBAAiBC,SAASP,EAASrF,IAChDrC,KAAK2D,SAAS,CAAEqE,iBAAkBN,EAASG,UAAY,KAEvD7H,KAAK2D,SAAS,CAAEqE,iBAAkB,CAACN,EAASrF,WAG9C,GAAIqF,EAASrF,IAAMqF,EAASG,UAAY7H,KAAKQ,MAAMwH,iBAAiBC,SAASP,EAASrF,IAAK,CACzF,MAAM6F,EAAWR,EAASG,UAAY,GACtCK,EAAS7C,QAAU6C,EAASC,MAC5BnI,KAAK2D,SAAS,CAAEqE,iBAAkBE,SAElClI,KAAK2D,SAAS,CAAEqE,iBAAkBN,EAASG,UAAY,KAGvD7H,KAAKQ,MAAM4H,mBACbpI,KAAK2D,SAAS,CAAEyE,mBAAmB,KA6M/B,KAAAC,gBAAmBjF,IACzB,MAAMkF,EAAStI,KAAKL,MAAMmG,SAAW9F,KAAKL,MAAMmG,QAAQyC,SAAWvI,KAAKL,MAAMmG,QAAQyC,QAAQC,IAC9F,IAAIC,EAAsB,GAC1B,QAAanH,IAAT8B,EACF,OAAOqF,EAET,MAAMC,EAAgBtF,EAAwBuF,gBAAmBvF,EAIjE,OAHIkF,IACFG,EAAe,IAAIG,IAAIF,EAAMJ,EAAOO,YAAazF,MAE5CqF,GAID,KAAAK,0BAA6BC,GAA+BvF,IAC9DxD,KAAKQ,MAAMuI,oBAAsBA,EACnC/I,KAAK2D,SAAS,CAAEoF,kBAAmBA,EAAmBC,cAAc,IAEpEhJ,KAAK2D,SAAS,CAAEoF,mBAAoB,EAAGC,cAAc,KAmHjD,KAAAC,aAAgB9C,GAAwB,OAKxC,KAAA+C,6BAA+B,CAAC/C,EAAqBgD,IAAuB3F,IAClFA,EAAEzD,iBAEEC,KAAKQ,MAAM4I,oBAAsBjD,EAAK9D,GACxCrC,KAAK2D,SAAS,CACZ0F,oBAAqBlD,EAAKmD,SAC1BC,WAAYJ,EACZC,uBAAmB9H,IAGrBtB,KAAK2D,SAAS,CACZ0F,oBAAqBlD,EAAKmD,SAC1BC,WAAYJ,EACZC,kBAAmBjD,EAAK9D,MAKtB,KAAAmH,sBAAwB,CAACrD,EAAqBgD,IAAuB3F,IAE3E,GADAA,EAAEzD,iBACGC,KAAKQ,MAAMuH,WA2Bd/H,KAAK2D,SAAS,CACZ8F,WAAYtD,EAAK9D,GACjBgH,oBAAqBlD,EAAKmD,SAC1BC,WAAYJ,IAGdjJ,OAAOwJ,SAASC,KAAKC,UAAUC,OAAO,aAAa,OAjCzB,CAE1B,IACIC,EADAC,EAAa/J,KAAKQ,MAAMiJ,YAAczJ,KAAKQ,MAAMiJ,aAAetD,EAAK9D,QAAOf,EAAY6E,EAAK9D,GAEvE,IAAtBrC,KAAKuH,cAAsBvH,KAAKQ,MAAMiJ,aAAetD,EAAK9D,IAExD0H,IAAc/J,KAAKL,MAAMqK,aAAa,GAAG3H,KAC3CyH,EAAmB9J,KAAKL,MAAMqK,cAAgBhK,KAAKL,MAAMqK,aAAa,IAAMhK,KAAKL,MAAMqK,aAAa,GAAGlC,SAAW9H,KAAKL,MAAMqK,aAAa,GAAGlC,QAAQ,GAAGzF,IAErJnC,OAAOwJ,SAASC,KAAKC,UAAUK,SAAS,eAC3C/J,OAAOwJ,SAASC,KAAKC,UAAUC,OAAO,aAAa,GACnDK,YAAW,WACThK,OAAOwJ,SAASC,KAAKC,UAAUC,OAAO,aAAa,KAClD,MAEL3J,OAAOwJ,SAASC,KAAKC,UAAUC,OAAO,aAAa,IAGnD3J,OAAOwJ,SAASC,KAAKC,UAAUC,OAAO,iBAAuCvI,IAA1BtB,KAAKQ,MAAMiJ,YAGhEzJ,KAAK2D,SAAS,CACZ8F,WAAYM,EACZR,WAAYJ,EACZC,kBAAmBU,IAYvB9J,KAAKmK,eAGC,KAAAA,YAAc,KAChBnK,KAAKQ,MAAMuH,YACbmC,WAAW,KACTlK,KAAKoK,UAAYpK,KAAKoK,SAASC,SAAWrK,KAAKoK,SAASC,QAAQC,SAC/D,IAKC,KAAAC,oBAAuBzK,IACzBA,EAAMuD,SAA4E,IAAlEvD,EAAMuD,OAAO5B,UAAUoF,QAAQ,+BAG1C7G,KAAKoK,SAASC,UAAYrK,KAAKoK,SAASC,QAAQJ,SAASnK,EAAMuD,UACtErD,KAAK2D,SAAS,CAAE8F,gBAAYnI,EAAW8H,uBAAmB9H,EAAW+H,oBAAqB,OAC9B,IAAxDvJ,EAAMuD,OAAO5B,UAAUoF,QAAQ,qBAA+B6C,SAASc,uBAAuB,YAAcd,SAASc,uBAAuB,WAAW,KAAOd,SAASc,uBAAuB,WAAW,GAAGP,SAASnK,EAAMuD,WAC7NnD,OAAOwJ,SAASC,KAAKC,UAAUC,OAAO,aAAa,GACnD3J,OAAOwJ,SAASC,KAAKC,UAAUC,OAAO,eAAe,MAWnD,KAAAY,aAAgB3K,IAClBA,EAAM4K,UAAY1K,KAAKwH,WACzBxH,KAAK2K,iBA5oBP3K,KAAKoK,SAAW3K,cAGhB,IAAImL,EAAqBjL,EAAMyG,OAAOyE,kBACtC7K,KAAKQ,MAAQ,CACXiJ,gBAAYnI,EACZ+H,oBAAqB,GACrBE,gBAAYjI,EACZwJ,iBAAkB,GAClB/C,WAAY/H,KAAK+H,WACjBgB,mBAAoB,EACpBC,cAAc,EACdhB,iBAAkB,GAClBoB,uBAAmB9H,EACnBsJ,mBAAoBA,EACpBxC,mBAAmB,GAErBpI,KAAK+K,SAAW/K,KAAKgL,qBACrBhL,KAAK2K,cAAgB3K,KAAK2K,cAAcrK,KAAKN,MAC7CA,KAAKyK,aAAezK,KAAKyK,aAAanK,KAAKN,MAC3CA,KAAKiL,sBAAwBjL,KAAKiL,sBAAsB3K,KAAKN,MAC7DA,KAAKkL,iBAAmBC,6BAAmBnL,KAAKL,MAAMmG,QAAQyC,QAAQ6C,kBACpEpL,KAAKL,MAAM0L,aACXrL,KAAKL,MAAM2L,WACbtL,KAAKuL,QAAUC,2BAAiB,QAASxL,KAAKkL,iBAAkB,GAAI,IAEpElL,KAAKyL,UAAY9L,EAAMqK,aAEf,iBACR,MAA0B,OAAlBhK,KAAK+K,SAERW,oBACLhC,SAASC,MAAQD,SAASiC,iBAAiB,YAAa3L,KAAKuK,qBAC7DvK,KAAK4L,mCACH1L,QAAU2L,4BAAkB3L,OAAQ,SAAUF,KAAKiL,uBACrDjL,KAAKiL,wBACLvB,SAASC,MAAQD,SAASiC,iBAAiB,UAAY3L,KAAKyK,cAA2C,GAGlGqB,uBACLpC,SAASC,MAAQD,SAASqC,oBAAoB,UAAY/L,KAAKyK,cAA2C,GAC1GvK,QAAUA,OAAO6L,oBAAoB,SAAU/L,KAAK4L,oCAAqC,GAIpFI,mBAAmBC,EAAYzL,GAE/BA,EAAMiJ,YAAezJ,KAAKQ,MAAMiJ,aAAcvJ,OAAOwJ,SAASC,KAAKC,UAAUK,SAAS,cACzF/J,OAAOwJ,SAASC,KAAKC,UAAUC,OAAO,aAAa,GAIhD1I,SACL,MAAM,aAAE+K,GAAiBlM,KAAKL,MAC9BK,KAAKuH,aAAe,EACpB,MAAM4E,EAAcnM,KAAKoM,wBACzB,OACE3M,gBAACA,WAAc,KACbA,gBAAA,OAAKgC,UAAW,qBAAoB0K,EAAc,YAAc,gBAC/DD,GAAgBlM,KAAKQ,MAAMuH,WACxB/H,KAAKqM,oBACLrM,KAAKsM,sBAMPD,oBACN,MAAM,aAAEH,EAAY,WAAEK,GAAevM,KAAKL,MAGpC6M,EAF+BxM,KAAKyL,UAENxG,IAAIwH,IAAI,IAAAC,EAAAC,EA4B1C,OA3BAF,EAAEG,UAAY,EACdH,EAAEI,WAAa,EACfJ,EAAEK,WAAa,EACfL,EAAEM,WAAa,EACfN,EAAE5E,SAAW,CAAC4E,EAAEpK,IAChBoK,EAAE3E,QAAmB,QAAZ4E,EAAGD,EAAE3E,eAAO,IAAA4E,OAAA,EAATA,EAAWM,OAAOC,IAAC,IAAAC,EAAA,MAAkC,SAApB,QAAVA,EAAAD,EAAE3D,gBAAQ,IAAA4D,OAAA,EAAVA,EAAYxJ,iBACtC,QAATiJ,EAAAF,EAAE3E,eAAO,IAAA6E,GAATA,EAAW1H,IAAIkI,IAAI,IAAAC,EACjBD,EAAEP,UAAY,EACdO,EAAEN,UAAYJ,EAAEpK,GAChB8K,EAAEL,WAAa,EACfK,EAAEJ,WAAa,EACfI,EAAEtF,SAAW,CAACsF,EAAE9K,GAAKoK,EAAEpK,IACd,QAAT+K,EAAAD,EAAErF,eAAO,IAAAsF,GAATA,EAAWnI,IAAIZ,IAAI,IAAAgJ,EACjBhJ,EAAEuI,UAAY,EACdvI,EAAEwI,UAAYM,EAAE9K,GAChBgC,EAAEyI,UAAYL,EAAEpK,GAChBgC,EAAE0I,WAAa,EACf1I,EAAEwD,SAAW,CAACsF,EAAE9K,GAAKoK,EAAEpK,GAAKgC,EAAEhC,IACrB,QAATgL,EAAAhJ,EAAEyD,eAAO,IAAAuF,GAATA,EAAWpI,IAAIqI,IACbA,EAAEV,UAAY,EACdU,EAAET,UAAYxI,EAAEhC,GAChBiL,EAAER,UAAYK,EAAE9K,GAChBiL,EAAEP,UAAYN,EAAEpK,GAChBiL,EAAEzF,SAAW,CAACsF,EAAE9K,GAAKoK,EAAEpK,GAAKgC,EAAEhC,GAAKiL,EAAEjL,UAIpCoK,IAGT,OACEhN,gBAAC0H,SAAMxF,OAAAvB,OAAA,GAAKmM,EAAU,CAAE9K,UAAWb,IAAW2L,EAAW9K,UAAWyK,GAAgBlM,KAAKQ,MAAMuH,WAAa,cAAgB,kBACzHyE,EAAiBvH,IAAI,CAACyC,EAA0BnC,IACxCvF,KAAKuN,kBAAkB7F,EAAUA,EAASkF,UAAiC,SAAtBlF,EAAS4B,SAAsB,OAAIhI,KAM/F8K,wBACN,MAAM,WAAE3C,EAAU,aAAET,GAAiBhJ,KAAKQ,OACpC,aAAEwJ,GAAiBhK,KAAKL,MAC9B,GAAIqJ,EACF,OAAO,EAET,GAAIS,EAAY,CAGd,QAFiBO,EAAawD,KAAK9F,GAAYA,EAASrF,KAAOoH,GAKjE,OAAO,EAGD6C,qBACN,MAAM,SAAEmB,EAAQ,WAAElB,GAAevM,KAAKL,MAChCwM,EAAcnM,KAAKoM,wBACzB,OACE3M,gBAAC0H,SAAMxF,OAAAvB,OAAA,GAAKmM,EAAU,CAAE9K,UAAWb,IAAW2L,EAAW9K,UAAW0K,EAAc,GAAK,wBACrF1M,gBAAC2H,OAAIzF,OAAAvB,OAAA,GAAKqN,EAAQ,CAAEC,IAAK1N,KAAKoK,SAAUnI,SAAS,OAC9CjC,KAAK2N,iBACLlO,gBAAA,OAAKgC,UAAW,aAAY0K,EAAc,YAAc,QAMzDoB,kBAAkB7F,EAA0BkG,EAAsBC,GACxE,OAAInG,GAAYA,EAASI,SAAWJ,EAASI,QAAQzC,OAAS,GAAKqC,EAAS4B,SAClEtJ,KAAK8N,cAAcpG,EAAUkG,EAAaC,GAE1C7N,KAAK+N,oBAAoBrG,GAI7BoG,cAAcpG,EAA0BkG,EAAsBC,GACpE,MAAM,mBAAEjD,EAAkB,kBAAExC,GAAsBpI,KAAKQ,MACjD8B,EAAmBoF,EAAS4B,SAClC,IAAI0E,EAAoCtG,EAASrF,IAAMrC,KAAKQ,MAAMwH,iBAAiBC,SAASP,EAASrF,MAAO,EAO5G,OAJ2B,IAAvBqF,EAASkF,YACXoB,OAAe1M,GAIf7B,gBAACD,IAAM,CACLkB,cACE,CACEuN,QAAS,EACTxN,OAASmK,IAAuBxC,GAAqC,IAAhByF,GAAsBG,GAG/ExI,IAAKkC,EAASrF,GACdZ,UAAW,+BAA+BiG,EAASkF,UACnD5L,UAAU,sBACVC,WAAW,uBACX+B,eAAe,MACfV,iBAAyC,IAAvBoF,EAASkF,WAA0C,IAAvBlF,EAASkF,WAAoBlF,EAASwG,SAAkC,IAAvBxG,EAASkF,WAA0C,IAAvBlF,EAASkF,UAAmB5M,KAAKmO,0BAA0BzG,GAAY1H,KAAKoO,gBAAgB9L,GACvNW,uBAAuB,EACvBW,SAAU5D,KAAKyH,gCAAgCC,GAC/CtG,wBAAyB,IAEzB3B,gBAAA,WACGiI,EAASI,QAAS7C,IAAI,CAACoJ,EAA4B9I,IAC3CvF,KAAKsO,kBAAkBD,EAAaT,EAAarI,MAO1D4I,0BAA0BI,EAAuBhJ,GACvD,MAAM,KAAEiJ,GAASxO,KAAKL,MAChB8O,EAAYF,EAAOjF,SACnBA,EAAWiF,EAAOjF,SAAWiF,EAAOjF,SAAW,GACrDtJ,KAAKuL,QAAQmD,cAAcC,MAAQrF,EACnC,MAAMsF,EAAaC,iCAAuB7O,KAAKkL,iBAAkBlL,KAAKuL,SACtE,OACE9L,gBAAC2H,OAAIzF,OAAAvB,OAAA,GAAKoO,EAAI,CAAEhJ,IAAKD,EAAOnC,KAAMmL,EAAOL,SAAaU,EAAU,CAAE/M,QAASiN,2BAAiB9O,KAAKkL,iBAAkBlL,KAAKuL,QAASjC,KAC9HmF,GAgCCL,gBAAgB9E,GACtB,OACE7J,gBAACA,WAAc,KACZ6J,GAKCgF,kBAAkBhJ,EAAqBsI,EAAsBC,GACG,IAAAkB,EAAtE,OAAIzJ,GAAQA,EAAKgE,UAAYhE,EAAK4I,SAAW5I,EAAK4I,QAAQ7I,OAAS,EAC7DC,GAAQA,EAAKwC,UAAuB,QAAZiH,EAAAzJ,EAAKwC,eAAO,IAAAiH,OAAA,EAAZA,EAAc1J,QAAS,GAAKC,EAAKgE,SACnDtJ,KAAK8N,cAAcxI,EAAMsI,EAAaC,GAG9C7N,KAAK+N,oBAAoBzI,GAElBA,GAAQA,EAAKgE,WAAahE,EAAK4I,QAEtClO,KAAKgP,oBAAoB1J,GAGtB,KAGDqI,iBACN,MAAM,SAAEsB,EAAQ,aAAEjF,EAAY,aAAEkC,GAAiBlM,KAAKL,OAChD,WAAE8J,GAAezJ,KAAKQ,MACtB0O,EAA8B,GAE9B1C,EAAmBxC,EAAa/E,IAAIwH,IAAI,IAAA0C,EACFC,EAAR,UAApB,QAAVD,EAAA1C,EAAEnD,gBAAQ,IAAA6F,OAAA,EAAVA,EAAYzL,iBACd+I,EAAE3E,QAAmB,QAAZsH,EAAG3C,EAAE3E,eAAO,IAAAsH,OAAA,EAATA,EAAWpC,OAAOC,IAAC,IAAAoC,EAAA,MAAkC,SAApB,QAAVA,EAAApC,EAAE3D,gBAAQ,IAAA+F,OAAA,EAAVA,EAAY3L,kBAEjD,OAAO+I,IAET,GAAIP,GAAgBlM,KAAKQ,MAAMuH,iBAA6BzG,IAAfmI,GAA4B+C,EAAiBnH,OAAS,EAAG,CACpG,IAAIqC,EAA0B,GAC9B,IAAK,IAAI4H,EAAI,EAAGA,EAAI9C,EAAiBnH,OAAQiK,IAAK,CAEhD,GAAI9C,EAAiB8C,IAAM9C,EAAiB8C,GAAGjN,KAAOoH,EAAY,CAChE/B,EAAW8E,EAAiB8C,GAG5BtP,KAAK2D,SAAS,CAAE4F,gBAAYjI,EAAW+H,oBAAqBmD,EAAiB8C,GAAGhG,WAChF,MAGF,GADA5B,EAAW1H,KAAKuP,gBAAgB/C,EAAiB8C,IAC7C5H,GAAYA,EAASrF,KAAOoH,EAC9B,MAIJ/B,GAAYwH,EAAa3K,KACvB9E,gBAAC2H,OAAIzF,OAAAvB,OAAA,CAACoF,IAAKkC,EAASrF,IAAQ4M,G,IAAYjP,KAAKwP,oBAAoB9H,EAAU,G,WAI7E8E,EAAiBpI,QAAQ,CAACkB,EAAqBC,KAC7C2J,EAAa3K,KACX9E,gBAAC2H,OAAIzF,OAAAvB,OAAA,CAACoF,IAAKD,GAAW0J,GACnBjP,KAAKwP,oBAAoBlK,EAAMC,OAKxC,OAAO2J,EAGDK,gBAAgBjK,GACtB,MAAMmK,EAAWnK,GAAQA,EAAKwC,QAC9B,GAAI2H,GAAYA,EAASpK,OAAS,EAChC,IAAK,IAAIiK,EAAI,EAAGA,GAAKG,EAASpK,OAAS,EAAGiK,IAAK,CAC7C,GAAIG,EAASH,GAAGjN,KAAOrC,KAAKQ,MAAMiJ,WAEhC,OADAzJ,KAAK2D,SAAS,CAAE4F,WAAYjE,GAAQA,EAAKjD,GAAIgH,oBAAqBoG,EAASH,GAAGhG,WACvEmG,EAASH,GAElB,MAAMI,EAAQ1P,KAAKuP,gBAAgBE,EAASH,IAC5C,GAAII,EACF,OAAOA,EAIb,OAAO,KAGDF,oBAAoBxF,EAA6B6D,GAEvD,OAAI7D,GAAgBA,EAAalC,SAAWkC,EAAalC,QAAQzC,OAAS,EACpErF,KAAKL,MAAMuM,cAAgBlM,KAAKQ,MAAMuH,iBAAwCzG,IAA1BtB,KAAKQ,MAAMiJ,WACzDzJ,KAAK2P,eAAe3F,EAAalC,QAASkC,EAAa3H,IAAI,OAAOf,EAAWuM,GAGnFpO,gBAACA,WAAc,KACZO,KAAK4P,sBAAsB5F,GAC3BhK,KAAK2P,eAAe3F,EAAalC,QAASkC,EAAa3H,IAAI,OAAMf,EAAWuM,IAI1E7D,GAAgBA,EAAaV,UAAYU,EAAakE,SAAWlE,EAAakE,QAAQ7I,OAAS,EAChGrF,KAAK+N,oBAAoB/D,GACxBA,GAAgBA,EAAaV,WAAaU,EAAakE,QACxDlO,KAAKgP,oBAAoBhF,GAG5B,KAGD2F,eAAeF,EAA4BhG,EAAqBoG,EAA8BC,EAAsBjC,GAC1H,MAAM,aAAE3B,EAAY,SAAE+C,GAAajP,KAAKL,OAClC,mBAAEiL,GAAuB5K,KAAKQ,MACpC,GAAIiJ,GAAczJ,KAAKQ,MAAMiJ,aAAeA,EAE1C,OADAzJ,KAAKL,MAAMmG,QAAQwF,UAAUyE,MAAM,gEAC5B,KAGT,IAAKN,GAAgC,IAApBA,EAASpK,OAExB,OADArF,KAAKL,MAAMmG,QAAQwF,UAAUyE,MAAM,4DAC5B,KAGT,IAAIC,GAAc,EAEdC,EAAyB,GAC7B,MAAMC,EAAcT,GAAYA,EAASxK,IAAI,CAACsJ,EAAuB4B,KACnE,IAAI1P,EAAS8N,EAAOlM,KAAOrC,KAAKQ,MAAM4I,mBAAqB0G,EAC3D,MAAMM,EAAc7B,EAAOzG,SAAWyG,EAAOzG,QAAQzC,OAAS,EAC9D,IAAIqC,EAeAI,EAgBJ,OA7BEJ,EADE0I,GAAclE,GAAgBlM,KAAKQ,MAAMuH,WAChC/H,KAAK4P,sBAAsBrB,EAAQ9E,EAAY0G,GAC3B,IAAtBnQ,KAAKuH,cAAuB6I,EAU1B,KATP7B,EAAOzG,SAAWyG,EAAOzG,QAAQzC,OACxBrF,KAAKqQ,6BAA6B9B,EAAQvO,KAAKQ,MAAM4I,kBAAmB+G,GAEvE5B,EAAOL,QACflO,KAAK+N,oBAAoBQ,EAAQ4B,GACjCnQ,KAAKgP,oBAAoBT,GAQ7B6B,IACEpQ,KAAKuH,cAAgB,GACvB0I,EAAiB,UACjBnI,EAAU9H,KAAKsQ,qBAAqBL,EAAgB1B,EAAQrC,GAAgBlM,KAAKQ,MAAMuH,WAAawG,EAAOlM,QAAKf,GAAW,EAAOsJ,GAA8B,IAARuF,IAC/InQ,KAAKuH,cAAgBvH,KAAKsH,eAAiB,IACpDtH,KAAKuH,eACL0I,EAAiB,SAASjQ,KAAKuH,aAAahF,WAC5CuF,EAAU9H,KAAK2P,eAAepB,EAAOzG,QAASoE,GAAgBlM,KAAKQ,MAAMuH,WAAawG,EAAOlM,QAAKf,GAAW,EAAOb,EAAQoN,KAI5HpN,IACFuP,EAAcvP,GAGdhB,gBAAC2H,OAAIzF,OAAAvB,OAAA,GAAK6O,EAAQ,CAAEzJ,IAAK+I,EAAOlM,GAAIZ,UAAW,wBAAuBhB,EAAS,gBAAkB,cAC9FiH,EACAI,KAUP,OALA9H,KAAKuH,eACL0I,EAAiB,SAASjQ,KAAKuH,aAAahF,WACrB,YAAnB0N,IACFA,GAAkB,SAEZjQ,KAAKuQ,YAAYN,EAAgBC,EAAazG,EAAYoG,EAAoBG,GAEhFM,qBAAqBL,EAAwBvI,EAAyB+B,EAAqBoG,EAA8BpP,GAC/H,OACEhB,gBAACD,IAAM,CACLkB,cACE,CACEuN,QAAS,EACTxN,OAAQA,GAAWT,KAAKQ,MAAMwI,cAAgBhJ,KAAKQ,MAAMuI,oBAAsBrB,EAASrF,IAG5FmD,IAAKkC,EAASrF,GACdZ,UAAWb,IAAW,yBAA0BqP,GAChDjP,UAAU,sBACVC,WAAW,uBACX+B,eAAe,MACfV,iBAAkBoF,EAAS4B,UAAY,GACvC1F,SAAU5D,KAAK8I,0BAA0BpB,EAASrF,IAClDY,uBAAuB,EACvB7B,wBAAyB,GACzBnB,gBAAiBD,KAAKqI,gBAAgBX,GAAYA,EAASwG,SAAW,KAGtEzO,gBAAA,WACGiI,EAASI,QAAS7C,IAAI,CAACoJ,EAA4B9I,IAC3CvF,KAAKsO,kBAAkBD,EAAa9I,MA6B7CqK,sBAAsBrB,EAAuB9E,EAAqBlE,GACxE,MAAM,OAAE7D,GAAW1B,KAAKL,MAExB,OACEF,gBAAC2H,OAAIzF,OAAAvB,OAAA,CACHoF,IAAKD,GACD7D,EAAM,CACVD,UAAW,GAAGC,EAAOD,aAAa8M,EAAOlM,KAAOrC,KAAKQ,MAAMiJ,WAAa,SAAW,KACnF5H,QAAS7B,KAAKwJ,sBAAsB+E,EAAQ9E,GAAW,iBACxC,EAAI,mBACJzJ,KAAKQ,MAAMiJ,YAAczJ,KAAKQ,MAAMiJ,aAAe8E,EAAOlM,IAAiB,cAC7EoH,IAEZ8E,EAAOjF,UAKN+G,6BAA6B9B,EAAuBnF,EAA4B7D,EAAgB9E,GACtG,MAAM,OAAEiB,GAAW1B,KAAKL,MACxB,OACEF,gBAAC2H,OAAIzF,OAAAvB,OAAA,CACHoF,IAAKD,GACD7D,EAAM,CACVD,UAAcC,EAAOD,UAAV,qBACXI,QAAS7B,KAAKkJ,6BAA6BqF,EAAQnF,GAAkB,iBACtD,EAAI,mBACJpJ,KAAKQ,MAAM4I,mBAAqBpJ,KAAKQ,MAAM4I,oBAAsBmF,EAAOlM,IAAiB,cAC3F+G,IAEZmF,EAAOjF,UAMNyE,oBAAoBQ,EAAuBhJ,GACjD,MAAM,KAAEiJ,GAASxO,KAAKL,MAChB8O,EAAYF,EAAOjF,SACnBA,EAAWiF,EAAOjF,SAAWiF,EAAOjF,SAAW,GACrDtJ,KAAKuL,QAAQmD,cAAcC,MAAQrF,EACnC,MAAMsF,EAAaC,iCAAuB7O,KAAKkL,iBAAkBlL,KAAKuL,SACtE,OACE9L,gBAAC2H,OAAIzF,OAAAvB,OAAA,GAAKoO,EAAI,CAAEhJ,IAAKD,EAAOnC,KAAMmL,EAAOL,SAAaU,EAAU,CAAE1L,YAAalD,KAAKiJ,aAAasF,GAAS1M,QAASiN,2BAAiB9O,KAAKkL,iBAAkBlL,KAAKuL,QAASjC,KACtKmF,GAICO,oBAAoBT,EAAuBhJ,GACjD,MAAM,KAAEiL,GAASxQ,KAAKL,MACtB,OACEF,gBAAC2H,OAAIzF,OAAAvB,OAAA,CAACoF,IAAKD,GAAWiL,GAAOjC,EAAOjF,UAIhCiH,YAAYE,EAAeP,EAA4BQ,EAAsBb,EAA8BG,GACjH,MAAM,SAAEvC,GAAazN,KAAKL,MAO1B,OANAK,KAAKuH,aAAe,EACN,iBAAVkJ,GACFvG,WAAW,KAAK,IAAAyG,EACiB,QAA/BA,EAAAjH,SAASkH,cAAc,gBAAQ,IAAAD,GAA/BA,EAAiC/G,UAAUiH,OAAO,SACjD,GAGHpR,gBAAC2H,OAAIzF,OAAAvB,OAAA,GAAKqN,EAAQ,CAAEhM,UAAWb,IAAW6M,EAAShM,UAAWgP,KAC5DhR,gBAAA,OAAKgC,UAAU,uBACZoO,EACCpQ,gBAAA,UACEgC,UAAU,qBAAoB,aACnB,QACXI,QAAS7B,KAAK2K,eAAa,MAG3B,KACJlL,gBAAA,OAAKgC,UAAW,4BACbyO,KAyHHvF,gBACD3K,KAAKQ,MAAMuH,aACd/H,KAAK2D,SAAS,CAAE8F,gBAAYnI,EAAW+H,oBAAqB,KAC5DnJ,OAAOwJ,SAASC,KAAKC,UAAUC,OAAO,aAAa,IAQ/CoB,wBACNjL,KAAK+K,SAAW/K,KAAKgL,qBACrBhL,KAAK2D,SAAS,CAAEoE,WAAY/H,KAAK+H,aAE3BiD,qBACN,MAAM,QAAElF,GAAY9F,KAAKL,MACzB,GAAImR,IAASC,gBACWzP,WAAXpB,QAAwBA,OAAO8Q,WAAY,CACpD,MAAMC,EAAenL,EAAQyC,QAAQ0I,aACrC,GAAIA,EACF,OAAIA,EAAaC,IAAMhR,OAAO8Q,YAAcC,EAAaC,GAAGC,EACnD,KACEF,EAAaG,IAAMlR,OAAO8Q,YAAcC,EAAaG,GAAGD,EAC1D,KACEF,EAAaI,IAAMnR,OAAO8Q,YAAcC,EAAaI,GAAGF,EAC1D,KACEF,EAAaK,IAAMpR,OAAO8Q,YAAcC,EAAaK,GAAGH,EAC1D,KAEA,KAMf,MAAO,MA5oBCI,YAAA,CAATC,K,+BA8pBYnK","file":"static/js/40.51f9d6ff0fc7c096cc06.chunk.js","sourcesContent":["import { Button, Collapse } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { ICollapseProps } from '../components/citta-drawer.props';\r\nimport { IDrawerProps } from './citta-drawer.props';\r\n\r\nexport interface IDrawerState {\r\n isOpen: boolean;\r\n}\r\n\r\nexport type GlyphPlacement = 'start' | 'end';\r\n\r\n/**\r\n * Drawer - This is a full width uncontrolled collapse where the button glyph changes\r\n * when the drawer is open and closed\r\n */\r\nexport default class Drawer extends React.Component {\r\n public state: IDrawerState;\r\n private drawerOpenGlyph: string;\r\n private drawerCloseGlyph: string;\r\n private drawerGlyphClass: string;\r\n private isManuallyToggled: boolean;\r\n\r\n constructor(props: IDrawerProps) {\r\n super(props);\r\n this._toggle = this._toggle.bind(this);\r\n this.isManuallyToggled = false;\r\n this.state = { isOpen: (props.collapseProps && props.collapseProps.isOpen) || false };\r\n this.drawerGlyphClass = classnames('drawer__glyph', this.props.toggleGlyphClassName ? this.props.toggleGlyphClassName : '');\r\n if (this.props.animateGlyph) {\r\n this.drawerOpenGlyph = classnames(this.drawerGlyphClass,\r\n // tslint:disable-next-line:align\r\n this.props.openGlyph ?\r\n this.props.openGlyph :\r\n this.props.closeGlyph ?\r\n this.props.closeGlyph : '');\r\n this.drawerCloseGlyph = this.drawerOpenGlyph;\r\n } else {\r\n this.drawerOpenGlyph = classnames(this.drawerGlyphClass,\r\n // tslint:disable-next-line:align\r\n this.props.openGlyph ?\r\n this.props.openGlyph : '');\r\n this.drawerCloseGlyph = classnames(this.drawerGlyphClass,\r\n // tslint:disable-next-line:align\r\n this.props.closeGlyph ?\r\n this.props.closeGlyph : '');\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { selectedStateOptionText } = this.props;\r\n const collapseProps = { ...this.props.collapseProps } as ICollapseProps;\r\n // If the drawer is manually toggled by pressing the button, then we use the internal state\r\n if (collapseProps.isOpen === undefined || this.isManuallyToggled) {\r\n collapseProps.isOpen = this.state.isOpen;\r\n } else if (!collapseProps.isOpen) {\r\n this.state.isOpen = collapseProps.isOpen;\r\n }\r\n collapseProps.children = this.props.children;\r\n const drawerClass = classnames('drawer', this.props.className ? this.props.className : '');\r\n this.isManuallyToggled = false;\r\n return (\r\n
\r\n \r\n {this.props && this.props.radioButtonOption ? (\r\n
\r\n \r\n {/* tslint:disable-next-line: jsx-self-close */}\r\n \r\n
\r\n ) : null}\r\n {this._generateDrawerButtonInnerMarkup(collapseProps.isOpen, this.props.openInNewTab || false)}\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n private _generateDrawerButtonInnerMarkup(collapseState: boolean, openInNewTab: boolean): JSX.Element {\r\n const drawerButtonTextClass = classnames('drawer__buttontext',\r\n // tslint:disable-next-line:align\r\n this.props.toggleButtonClassName ?\r\n this.props.toggleButtonClassName : '');\r\n if (this.props.glyphPlacement === 'end') {\r\n if (this.props.toggleButtonTextClick) {\r\n return (\r\n <>\r\n \r\n {this.props.toggleButtonText}\r\n \r\n {this._generateGlyphMarkup('drawer__glyph__end', collapseState)}\r\n \r\n );\r\n } else {\r\n return (\r\n <>\r\n {this.props.toggleButtonText}\r\n {this._generateGlyphMarkup('drawer__glyph__end', collapseState)}\r\n \r\n );\r\n }\r\n }\r\n\r\n if (this.props.glyphPlacement === 'start') {\r\n if (this.props.toggleButtonTextClick) {\r\n return (\r\n <>\r\n {this._generateGlyphMarkup('drawer__glyph__start', collapseState)}\r\n {this.props.toggleButtonText}\r\n \r\n );\r\n } else {\r\n return (\r\n <>\r\n {this._generateGlyphMarkup('drawer__glyph__start', collapseState)}\r\n {this.props.toggleButtonText}\r\n \r\n );\r\n }\r\n } else {\r\n if (this.props.toggleButtonTextClick) {\r\n return {this.props.toggleButtonText};\r\n } else {\r\n return {this.props.toggleButtonText};\r\n }\r\n }\r\n }\r\n private _clicFunction = (event: React.MouseEvent): void => {\r\n event.preventDefault();\r\n if (this.props.toggleButtonUrl) {\r\n window.location.assign(this.props.toggleButtonUrl);\r\n }\r\n }\r\n private _generateGlyphMarkup(location: string, collapseState: boolean): JSX.Element {\r\n let glyphClass = collapseState ? this.drawerOpenGlyph : this.drawerCloseGlyph;\r\n glyphClass = `${glyphClass} ${location}`;\r\n return (\r\n \r\n );\r\n }\r\n\r\n private _toggle(e: React.MouseEvent | React.KeyboardEvent): void {\r\n // @ts-ignore\r\n if (e.target.tagName.toLowerCase() !== 'a') {\r\n e.preventDefault();\r\n this.setState({ isOpen: !this.state.isOpen });\r\n this.isManuallyToggled = true;\r\n if (this.props.onToggle) {\r\n this.props.onToggle(this.state);\r\n }\r\n }\r\n\r\n }\r\n}\r\n\r\nexport { Drawer };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IModuleProps, INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { createAccordionStateInput } from '../../../data-actions/accordion/accordion-state-data-action';\r\nimport { IAccordionItemProps } from '../definition-extensions/accordion-item.ext.props.autogenerated';\r\nimport { IAccordionItemData } from './accordion-item.data';\r\nimport Drawer, { IDrawerState } from './components/citta-drawer';\r\n\r\nexport const enum interactionStyle {\r\n Independent = 'Independent',\r\n ExpandOneItemOnly = 'ExpandOneItemOnly'\r\n}\r\n\r\nexport interface IControlledDrawerState {\r\n isOpen: boolean;\r\n accordionText?: string;\r\n}\r\n\r\nexport interface ICittaAccordionItemViewProps extends IAccordionItemProps {\r\n AccordionItemContainer: IModuleProps;\r\n drawer: INodeProps;\r\n accordionSlots: INodeProps;\r\n AccordionItemContent: INodeProps;\r\n className: string;\r\n interactionStyle: interactionStyle;\r\n}\r\n\r\nconst AccordionItemView: React.FC = (props) => {\r\n const { data, config, drawer, accordionSlots, AccordionItemContainer, AccordionItemContent } = props;\r\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\r\n const expanded = accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded === undefined ?\r\n data && config.isExpandedOnInitialLoad :\r\n (accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded);\r\n\r\n const [state] = React.useState({\r\n isOpen: false\r\n });\r\n\r\n let toggleButtonText = drawer.toggleButtonText;\r\n if (toggleButtonText.indexOf('Product dimensions') != -1) {\r\n toggleButtonText = 'Product Details';\r\n } \r\n\r\n const drawerProps = {\r\n tag: drawer.tag,\r\n className: drawer.className,\r\n toggleButtonText: toggleButtonText,\r\n glyphPlacement: config.glyphPlacement,\r\n radioButtonOption: config.radioButtonOption,\r\n collapseProps: { isOpen: expanded },\r\n openGlyph: 'expand-glyph',\r\n closeGlyph: 'collapse-glyph',\r\n selectedStateOptionText: accordionExpandedStateResult?.radioButtonText,\r\n onToggle: () => {\r\n _onToggle(props, toggleButtonText, state);\r\n }\r\n };\r\n\r\n // PRODUCT DATA LOADING\r\n let content: IAccordionItemData;\r\n\r\n try {\r\n content = data;\r\n } catch (e) {\r\n return
{e}
;\r\n }\r\n\r\n let accordionItemContent = getAccordionItemContent(content, config.accordionItemTitle);\r\n let hasAccordionItemContent = accordionItemContent.length > 0;\r\n const hasAccordionItemSlotsContent = accordionSlots && accordionSlots.accordionItemContent && accordionSlots.accordionItemContent.length;\r\n return (\r\n <>\r\n {hasAccordionItemContent && (\r\n \r\n
\r\n \r\n \r\n {hasAccordionItemContent && (renderAccordionItemContent(accordionItemContent))}\r\n {hasAccordionItemSlotsContent && (renderAccordionItemSlotsContent(accordionSlots.accordionItemContent))}\r\n \r\n \r\n
\r\n
\r\n )}\r\n\r\n {!hasAccordionItemContent && hasAccordionItemSlotsContent && (\r\n \r\n
\r\n \r\n \r\n {hasAccordionItemContent && (renderAccordionItemContent(accordionItemContent))}\r\n {hasAccordionItemSlotsContent && (renderAccordionItemSlotsContent(accordionSlots.accordionItemContent))}\r\n \r\n \r\n
\r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nconst getAccordionItemContent = (content: IAccordionItemData, accordionItemTitle: string): any[] => {\r\n let titles = accordionItemTitle.split('|');\r\n let returnVal: any[] = [];\r\n titles.forEach(t => {\r\n\r\n if (t.toLocaleLowerCase() === 'care instructions') {\r\n returnVal.push(
{t}:
);\r\n }\r\n\r\n\r\n const productSpec = content.productSpecificationData.result;\r\n let contentText = '';\r\n\r\n if (productSpec) {\r\n productSpec.some(spec => {\r\n if (spec.TextValue && spec.Name === t) {\r\n contentText = spec.TextValue;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n \r\n if (contentText && t.toLocaleLowerCase() === 'additional information') {\r\n returnVal.push(
{t}:
);\r\n }\r\n \r\n returnVal.push(

{contentText}

);\r\n\r\n })\r\n return returnVal;\r\n};\r\n\r\nconst renderAccordionItemContent = (content: any[]): JSX.Element | null => {\r\n return (\r\n
\r\n {content.map(c => {\r\n return ({c})\r\n })}\r\n
\r\n );\r\n};\r\n\r\nconst renderAccordionItemSlotsContent = (items: React.ReactNode[]): JSX.Element | null => {\r\n return (\r\n <>\r\n {items && items.length ? (\r\n items.map((item: React.ReactNode, index: number) => {\r\n return (\r\n \r\n {item}\r\n \r\n );\r\n })\r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nconst _onToggle = (props: ICittaAccordionItemViewProps, toggleButtonText: string, state: IDrawerState): void => {\r\n if (!state.isOpen && props.interactionStyle === interactionStyle.ExpandOneItemOnly) {\r\n const accordionState = { isAllExpanded: false, radioButtonText: toggleButtonText };\r\n props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\r\n }\r\n};\r\n\r\nexport default AccordionItemView;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\r\n// import { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { addThrottledEvent, getPayloadObject, getTelemetryAttributes, getTelemetryObject, IPayLoad, ITelemetryContent, Module, Node, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport MsDyn365, { ILinkData as MsdynILinkData } from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport { computed } from 'mobx';\r\nimport * as React from 'react';\r\nimport { Drawer } from './components/citta-drawer';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n activeDesktopMenu?: number;\r\n mobileViewLabelText?: string;\r\n cateGoryImageURL: string;\r\n onlyMobile: boolean;\r\n desktopCategoryId: number;\r\n isDrawerOpen: boolean;\r\n menuCurrentLevel: number[];\r\n openFirstByDefault: boolean;\r\n hasUserInteracted: boolean;\r\n}\r\nexport interface IMenuItemsData {\r\n id?: number;\r\n linkText?: string;\r\n linkURL?: string;\r\n imageSource?: string;\r\n imageDestinationURL?: string;\r\n subMenu?: IMenuItemsData[];\r\n menuLevel?: number;\r\n parent1Id?: number;\r\n parent2Id?: number;\r\n parent3Id?: number;\r\n levelIds?: number[];\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n/**\r\n *\r\n * NavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n private supportedLevel: number = 4;\r\n private currentLevel: number = 0;\r\n private escapeKey: number = 27;\r\n private menuNode: React.RefObject;\r\n private viewport: GridSize;\r\n private telemetryContent: ITelemetryContent;\r\n private payLoad: IPayLoad;\r\n private coustomResizeThrottledEventHandler?: (event: Event) => void;\r\n private menuItems: IMenuItemData[];\r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n\r\n // @ts-ignore\r\n let openFirstByDefault = props.config.openFirstMenuItem;\r\n this.state = {\r\n activeMenu: undefined,\r\n mobileViewLabelText: '',\r\n parentMenu: undefined,\r\n cateGoryImageURL: '',\r\n onlyMobile: this.onlyMobile,\r\n desktopCategoryId: -1,\r\n isDrawerOpen: false,\r\n menuCurrentLevel: [],\r\n activeDesktopMenu: undefined,\r\n openFirstByDefault: openFirstByDefault,\r\n hasUserInteracted: false\r\n };\r\n this.viewport = this._customGetViewport();\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this._escFunction = this._escFunction.bind(this);\r\n this._customUpdateViewport = this._customUpdateViewport.bind(this);\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n\r\n this.menuItems = props.menuItemData\r\n }\r\n @computed get onlyMobile(): boolean {\r\n return (this.viewport === 'xs');\r\n }\r\n public componentDidMount(): void {\r\n document.body && document.addEventListener('mousedown', this._handleClickOutside);\r\n this.coustomResizeThrottledEventHandler =\r\n window && addThrottledEvent(window, 'resize', this._customUpdateViewport as EventListener);\r\n this._customUpdateViewport();\r\n document.body && document.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n document.body && document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\r\n window && window.removeEventListener('resize', this.coustomResizeThrottledEventHandler!, false);\r\n // document.body && document.removeEventListener('mousedown', this._handleClickOutside, false);\r\n }\r\n\r\n public componentDidUpdate(hello: any, state: any): void {\r\n\r\n if (!state.activeMenu && !this.state.activeMenu && window.document.body.classList.contains('menu-open')) {\r\n window.document.body.classList.toggle('menu-open', false);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView } = this.props;\r\n this.currentLevel = 1;\r\n const showOverlay = this._shouldRenderOverlays();\r\n return (\r\n \r\n
\r\n {isMobileView && this.state.onlyMobile\r\n ? this._renderMobileMenu()\r\n : this._renderDesktopMenu()\r\n }\r\n \r\n );\r\n }\r\n\r\n private _renderMobileMenu(): JSX.Element {\r\n const { isMobileView, Navigation } = this.props;\r\n const _menuItems: IMenuItemsData[] = this.menuItems;\r\n\r\n const filteredMenuData = _menuItems.map(p => {\r\n p.menuLevel = 1;\r\n p.parent1Id = -1;\r\n p.parent2Id = -1;\r\n p.parent3Id = -1;\r\n p.levelIds = [p.id!];\r\n p.subMenu = p.subMenu?.filter(a => a.linkText?.toLowerCase() !== 'all');\r\n p.subMenu?.map(x => {\r\n x.menuLevel = 2;\r\n x.parent1Id = p.id;\r\n x.parent2Id = -1;\r\n x.parent3Id = -1;\r\n x.levelIds = [x.id!, p.id!];\r\n x.subMenu?.map(t => {\r\n t.menuLevel = 3;\r\n t.parent1Id = x.id;\r\n t.parent2Id = p.id;\r\n t.parent3Id = -1;\r\n t.levelIds = [x.id!, p.id!, t.id!];\r\n t.subMenu?.map(u => {\r\n u.menuLevel = 4;\r\n u.parent1Id = t.id;\r\n u.parent2Id = x.id;\r\n u.parent3Id = p.id;\r\n u.levelIds = [x.id!, p.id!, t.id!, u.id!];\r\n })\r\n });\r\n });\r\n return p;\r\n }\r\n );\r\n return (\r\n \r\n {filteredMenuData.map((menuItem: IMenuItemsData, index: number) => {\r\n return this._renderDrawerMenu(menuItem, menuItem.menuLevel, menuItem.linkText === 'Shop' ? 0 : undefined);\r\n })}\r\n \r\n );\r\n }\r\n\r\n private _shouldRenderOverlays(): boolean {\r\n const { activeMenu, isDrawerOpen } = this.state;\r\n const { menuItemData } = this.props;\r\n if (isDrawerOpen) {\r\n return true;\r\n }\r\n if (activeMenu) {\r\n const menuItem = menuItemData.find(menuItem => menuItem.id === activeMenu)\r\n\r\n return menuItem ? true : false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private _renderDesktopMenu(): JSX.Element {\r\n const { MenuList, Navigation } = this.props;\r\n const showOverlay = this._shouldRenderOverlays();\r\n return (\r\n \r\n \r\n {this._renderDisplay()}\r\n {
}\r\n
\r\n
\r\n );\r\n }\r\n\r\n private _renderDrawerMenu(menuItem: IMenuItemsData, mobileLevel?: number, parentIndex?: number): JSX.Element | null {\r\n if (menuItem && menuItem.subMenu && menuItem.subMenu.length > 0 && menuItem.linkText) {\r\n return (this._renderDrawer(menuItem, mobileLevel, parentIndex));\r\n } else {\r\n return (this._renderLinkMenuItem(menuItem));\r\n }\r\n }\r\n\r\n private _renderDrawer(menuItem: IMenuItemsData, mobileLevel?: number, parentIndex?: number): JSX.Element | null {\r\n const { openFirstByDefault, hasUserInteracted } = this.state;\r\n const toggleButtonText = menuItem.linkText;\r\n let _setCollapse: boolean | undefined = menuItem.id && this.state.menuCurrentLevel.includes(menuItem.id) || false;\r\n\r\n // On level one, we don't have to collapse one menu on clicking other menu\r\n if (menuItem.menuLevel === 1) {\r\n _setCollapse = undefined;\r\n }\r\n\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, index: number) => {\r\n return this._renderDrawerLink(menuSubItem, mobileLevel, index);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n\r\n private _renderMobileLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element {\r\n const { Link } = this.props;\r\n const optionVal = option.linkText;\r\n const linkText = option.linkText ? option.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n {optionVal}\r\n \r\n );\r\n }\r\n\r\n // tslint:disable-next-line: no-any\r\n // private _bindDesktopCategoryClickMobile = (menuItem: IMenuItemsData) => (e: any): void => {\r\n // this.setState({ menuCurrentLevel: menuItem.levelIds || [] });\r\n // }\r\n\r\n private _bindDesktopCategoryClickMobile = (menuItem: IMenuItemsData) => (e: any): void => {\r\n console.log('click')\r\n if (!menuItem.levelIds && menuItem.subMenu && menuItem.subMenu.length && menuItem.id && !this.state.onlyMobile) {\r\n if (this.state.menuCurrentLevel.includes(menuItem.id)) {\r\n this.setState({ menuCurrentLevel: menuItem.levelIds || [] });\r\n } else {\r\n this.setState({ menuCurrentLevel: [menuItem.id] });\r\n }\r\n } else {\r\n if (menuItem.id && menuItem.levelIds && this.state.menuCurrentLevel.includes(menuItem.id)) { \r\n const newArray = menuItem.levelIds || [];\r\n newArray.length && newArray.pop()\r\n this.setState({ menuCurrentLevel: newArray });\r\n } else {\r\n this.setState({ menuCurrentLevel: menuItem.levelIds || [] });\r\n }\r\n }\r\n if(!this.state.hasUserInteracted) {\r\n this.setState({ hasUserInteracted: true });\r\n }\r\n }\r\n\r\n private _renderLinkText(linkText: string | undefined): JSX.Element {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderDrawerLink(item: IMenuItemData, mobileLevel?: number, parentIndex?: number): JSX.Element | null {\r\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\r\n if (item && item.subMenu && item.subMenu?.length > 0 && item.linkText) {\r\n return (this._renderDrawer(item, mobileLevel, parentIndex));\r\n }\r\n return (\r\n this._renderLinkMenuItem(item)\r\n );\r\n } else if (item && item.linkText && !item.linkURL) {\r\n return (\r\n this._renderSpanMenuItem(item)\r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n const filteredMenuData = menuItemData.map(p => {\r\n if (p.linkText?.toLowerCase() === 'shop') {\r\n p.subMenu = p.subMenu?.filter(a => a.linkText?.toLowerCase() !== 'all');\r\n }\r\n return p;\r\n });\r\n if (isMobileView && this.state.onlyMobile && activeMenu !== undefined && filteredMenuData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (let i = 0; i < filteredMenuData.length; i++) {\r\n\r\n if (filteredMenuData[i] && filteredMenuData[i].id === activeMenu) {\r\n menuItem = filteredMenuData[i];\r\n\r\n\r\n this.setState({ parentMenu: undefined, mobileViewLabelText: filteredMenuData[i].linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(filteredMenuData[i]) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem && menuItemList.push(\r\n {this._createMenuItemList(menuItem, 0)} \r\n );\r\n } else {\r\n\r\n filteredMenuData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item, index)}\r\n \r\n );\r\n });\r\n }\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData, parentIndex: number): JSX.Element | null {\r\n\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.onlyMobile && this.state.activeMenu !== undefined) {\r\n return (this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false, undefined, parentIndex));\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, true, undefined, parentIndex)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return (this._renderLinkMenuItem(menuItemData));\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return (this._renderSpanMenuItem(menuItemData));\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, renderImageSection?: boolean, isMenuOpen?: boolean, parentIndex?: number): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n const { openFirstByDefault } = this.state;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let isInnerOpen = false;\r\n\r\n let levelClassName: string = '';\r\n const menuOptions = subMenus && subMenus.map((option: IMenuItemData, idx: number) => {\r\n let isOpen = option.id === this.state.activeDesktopMenu || isMenuOpen;\r\n const hasOptions = (option.subMenu && option.subMenu.length > 0);\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView && this.state.onlyMobile) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else if (this.currentLevel === 1 || !hasOptions) {\r\n if (option.subMenu && option.subMenu.length) {\r\n menuItem = this._renderDesktopButtonMenuItem(option, this.state.activeDesktopMenu, idx);\r\n } else {\r\n menuItem = (option.linkURL\r\n ? this._renderLinkMenuItem(option, idx)\r\n : this._renderSpanMenuItem(option)\r\n );\r\n }\r\n } else {\r\n menuItem = null;\r\n }\r\n let subMenu;\r\n\r\n if (hasOptions) {\r\n if (this.currentLevel >= 2) {\r\n levelClassName = 'level-3';\r\n subMenu = this._renderSubMenuDrawer(levelClassName, option, isMobileView && this.state.onlyMobile ? option.id : undefined, false, openFirstByDefault && idx === 0);\r\n } else if (this.currentLevel <= this.supportedLevel - 1) {\r\n this.currentLevel++;\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView && this.state.onlyMobile ? option.id : undefined, false, isOpen, parentIndex);\r\n }\r\n }\r\n\r\n if (isOpen) {\r\n isInnerOpen = isOpen;\r\n }\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n {/* {isOpen ? subMenu : null } */}\r\n \r\n );\r\n });\r\n this.currentLevel++;\r\n levelClassName = `level-${this.currentLevel.toString()}`;\r\n if (levelClassName === 'level-2') {\r\n levelClassName += ' open';\r\n }\r\n return (this._renderMenu(levelClassName, menuOptions, activeMenu, renderImageSection, isInnerOpen));\r\n }\r\n private _renderSubMenuDrawer(levelClassName: string, menuItem: IMenuItemData, activeMenu?: number, renderImageSection?: boolean, isOpen?: boolean): JSX.Element | null {\r\n return (\r\n \r\n
\r\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, index: number) => {\r\n return this._renderDrawerLink(menuSubItem, index);\r\n })}\r\n
\r\n \r\n );\r\n }\r\n private _formatLinkData = (href: MsdynILinkData | string | undefined): string => {\r\n const domain = this.props.context && this.props.context.request && this.props.context.request.url;\r\n let absoluteUrl: string = '';\r\n if (href === undefined) {\r\n return absoluteUrl;\r\n }\r\n const path: string = (href as MsdynILinkData).destinationUrl || (href as string);\r\n if (domain) {\r\n absoluteUrl = (new URL(path, domain.requestUrl)).href;\r\n }\r\n return absoluteUrl;\r\n }\r\n\r\n // tslint:disable-next-line: no-any\r\n private _bindDesktopCategoryClick = (desktopCategoryId: number) => (e: any): void => {\r\n if (this.state.desktopCategoryId !== desktopCategoryId) {\r\n this.setState({ desktopCategoryId: desktopCategoryId, isDrawerOpen: true });\r\n } else {\r\n this.setState({ desktopCategoryId: -1, isDrawerOpen: false });\r\n }\r\n\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderDesktopButtonMenuItem(option: IMenuItemData, activeDesktopMenu?: number, index?: number, isOpen?: boolean): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Link } = this.props;\r\n const optionVal = option.linkText;\r\n const linkText = option.linkText ? option.linkText : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n return (\r\n \r\n {optionVal}\r\n \r\n );\r\n }\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n {option.linkText}\r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, renderImageSection?: boolean, isInnerOpen?: boolean): JSX.Element | null {\r\n const { MenuList } = this.props;\r\n this.currentLevel = 1;\r\n if (level === 'level-2 open') {\r\n setTimeout(() => {\r\n document.querySelector('.open')?.classList.remove('open');\r\n }, 0);\r\n }\r\n return (\r\n \r\n
\r\n {renderImageSection ?\r\n X\r\n \r\n : null}\r\n
\r\n {menuOptions}\r\n
\r\n {/*
\r\n {renderImageSection ?\r\n \r\n : null}\r\n
*/}\r\n
\r\n\r\n
\r\n );\r\n }\r\n\r\n // private _bindChangeImage = (data: IMenuItemData) => (e: React.MouseEvent): MouseEvent => {\r\n // // console.log('_bindChangeImage', _bindChangeImage)\r\n // // const imageUrl = generateImageUrl(data.imageSource, (this.props.context.request).apiSettings) || 'undefined';\r\n // // this.setState({ cateGoryImageURL: imageUrl });\r\n // return e.nativeEvent;\r\n // }\r\n\r\n private _renderImage = (data: IMenuItemData) => (): void => {\r\n // const imageUrl = generateImageUrl(data.imageSource, (this.props.context.request).apiSettings) || 'undefined';\r\n // this.setState({ cateGoryImageURL: imageUrl });\r\n }\r\n\r\n private _handleDesktopDropdownToggle = (data: IMenuItemData, parentId?: number) => (e: React.MouseEvent | React.KeyboardEvent) => {\r\n e.preventDefault()\r\n\r\n if (this.state.activeDesktopMenu === data.id) {\r\n this.setState({\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId,\r\n activeDesktopMenu: undefined\r\n });\r\n } else {\r\n this.setState({\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId,\r\n activeDesktopMenu: data.id\r\n });\r\n }\r\n };\r\n\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => (e: React.MouseEvent | React.KeyboardEvent) => {\r\n e.preventDefault();\r\n if (!this.state.onlyMobile) {\r\n // const headerElem = document.querySelector('.ms-header');\r\n let activeMeu = (this.state.activeMenu && this.state.activeMenu === data.id!) ? undefined : data.id!;\r\n let activeDesktopMeu;\r\n if (this.currentLevel === 1 && this.state.activeMenu !== data.id!) {\r\n //headerElem && headerElem.classList.toggle('lock-opaque', true);\r\n if (activeMeu === this.props.menuItemData[1].id) {\r\n activeDesktopMeu = this.props.menuItemData && this.props.menuItemData[1] && this.props.menuItemData[1].subMenu && this.props.menuItemData[1].subMenu[0].id;\r\n }\r\n if (!window.document.body.classList.contains('menu-open')) {\r\n window.document.body.classList.toggle('fade-open', true);\r\n setTimeout(function () {\r\n window.document.body.classList.toggle('fade-open', false);\r\n }, 1000);\r\n }\r\n window.document.body.classList.toggle('menu-open', true);\r\n\r\n } else {\r\n window.document.body.classList.toggle('menu-open', this.state.activeMenu === undefined ? true : false);\r\n }\r\n\r\n this.setState({\r\n activeMenu: activeMeu,\r\n parentMenu: parentId,\r\n activeDesktopMenu: activeDesktopMeu\r\n });\r\n } else {\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n\r\n window.document.body.classList.toggle('menu-open', false);\r\n }\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.state.onlyMobile) {\r\n setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n }\r\n\r\n // tslint:disable-next-line:no-any\r\n private _handleClickOutside = (event: any) => {\r\n if (event.target && event.target.className.indexOf('ms-nav__list__item__button') !== -1) {\r\n //do nothing if the menu item is selected\r\n }\r\n else if (this.menuNode.current && !this.menuNode.current.contains(event.target)) {\r\n this.setState({ activeMenu: undefined, activeDesktopMenu: undefined, mobileViewLabelText: '' });\r\n if (event.target.className.indexOf('nav-menu-overlay') !== -1 || (document.getElementsByClassName('level-2') && document.getElementsByClassName('level-2')[0] && !document.getElementsByClassName('level-2')[0].contains(event.target))) {\r\n window.document.body.classList.toggle('menu-open', false);\r\n window.document.body.classList.toggle('search-open', false);\r\n }\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.state.onlyMobile) {\r\n this.setState({ activeMenu: undefined, mobileViewLabelText: '' });\r\n window.document.body.classList.toggle('menu-open', false);\r\n }\r\n }\r\n private _escFunction = (event: React.KeyboardEvent) => {\r\n if (event.keyCode === this.escapeKey) {\r\n this._closeSubmenu();\r\n }\r\n }\r\n private _customUpdateViewport(): void {\r\n this.viewport = this._customGetViewport();\r\n this.setState({ onlyMobile: this.onlyMobile });\r\n }\r\n private _customGetViewport(): GridSize {\r\n const { context } = this.props;\r\n if (MsDyn365.isBrowser) {\r\n if (typeof window !== undefined && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n }\r\n\r\n return 'xs';\r\n }\r\n // private _getCategoryImageSettings(): IImageSettings {\r\n // // tslint:disable-next-line: no-unnecessary-local-variable\r\n // const imageSettings: IImageSettings = {\r\n // viewports: {\r\n // xs: { q: 'w=200&h=300&q=80&m=6&f=jpg', w: 200, h: 300 },\r\n // sm: { q: 'w=200&h=300&q=80&m=6&f=jpg', w: 200, h: 300 },\r\n // md: { q: 'w=350&h=500&q=80&m=6&f=jpg', w: 350, h: 500 },\r\n // lg: { q: 'w=400&h=600&q=80&m=6&f=jpg', w: 400, h: 600 },\r\n // xl: { q: 'w=500&h=700&q=80&m=6&f=jpg', w: 500, h: 700 }\r\n // }\r\n // };\r\n\r\n // return imageSettings;\r\n // }\r\n}\r\n\r\nexport default NavigationMenuView;"],"sourceRoot":""}