{"version":3,"names":["noResultCss","NoResultStyle0","NoResult","this","boundToCommerce","unsubscribe","renderMagnifyingGlassIcon","css","h","id","xmlns","viewBox","width","class","d","handleTabChange","forceRerender","connectedCallback","host","closest","waitForAtomic","commerceBindings","initializeBindings","document","querySelector","commerceSearch","buildSearch","engine","subscribe","productStatusState","summary","state","query","searchBindings","statusController","buildSearchStatus","_d","_c","_b","_a","q","searchStatusState","error","console","remove","disconnectedCallback","renderNoResults","render","params","URLSearchParams","window","location","search","tabValue","get","isSearch","firstRequestExecuted","isLoading","hasProducts","totalNumberOfProducts","classList","firstSearchExecuted","hasResults","add"],"sources":["src/components/no-result/no-result.css?tag=no-result&encapsulation=shadow","src/components/no-result/no-result.tsx"],"sourcesContent":[".no-result-wrapper{\r\n display: flex;\r\n justify-content: center;\r\n flex-direction: column;\r\n align-items: center;\r\n}\r\n\r\n","import { Bindings, CommerceBindings, initializeBindings } from \"@coveo/atomic\";\r\nimport { Component, Element, h, Listen, State } from \"@stencil/core\";\r\nimport {\r\n SearchStatusState,\r\n buildSearchStatus,\r\n Unsubscribe,\r\n} from \"@coveo/headless\";\r\nimport { waitForAtomic } from \"../../utils/atomic\";\r\nimport { buildSearch, SearchSummaryState } from \"@coveo/headless/commerce\";\r\n\r\n@Component({\r\n tag: \"no-result\",\r\n styleUrl: \"no-result.css\",\r\n shadow: true,\r\n})\r\nexport class NoResult {\r\n private searchBindings?: Bindings;\r\n private commerceBindings?: CommerceBindings;\r\n private query?: string;\r\n private boundToCommerce: boolean = false;\r\n\r\n private unsubscribe: Unsubscribe = () => {};\r\n\r\n @Element() private host!: Element;\r\n\r\n @State() private searchStatusState!: SearchStatusState;\r\n @State() private productStatusState!: SearchSummaryState;\r\n\r\n @State() forceRerender = false;\r\n\r\n @Listen('tabManagerChange', { target: 'document' })\r\n handleTabChange() {\r\n this.forceRerender = !this.forceRerender; // Toggling State to force re-render\r\n // Now that we optimized search calls to not trigger on every tab change, when there are no results and we switch tabs we need\r\n // to force a re-render to show the no results message in a case where a new search is not triggered)\r\n }\r\n\r\n public async connectedCallback() {\r\n this.boundToCommerce = this.host.closest('atomic-commerce-interface') != null;\r\n try {\r\n await waitForAtomic();\r\n\r\n if(this.boundToCommerce){\r\n this.commerceBindings = await initializeBindings(\r\n document.querySelector(\"atomic-commerce-interface\") as Element\r\n );\r\n const commerceSearch = buildSearch(this.commerceBindings.engine);\r\n this.unsubscribe = commerceSearch.subscribe(() => {\r\n this.productStatusState = commerceSearch.summary().state;\r\n this.query = this.productStatusState.query;\r\n })\r\n }\r\n else{\r\n this.searchBindings = await initializeBindings(\r\n document.querySelector(\"atomic-search-interface\") as Element\r\n );\r\n const statusController = buildSearchStatus(this.searchBindings.engine);\r\n this.unsubscribe = statusController.subscribe(() => {\r\n this.query = this.searchBindings?.engine?.state?.query?.q;\r\n this.searchStatusState = statusController.state;\r\n });\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n this.host.remove();\r\n }\r\n }\r\n\r\n public disconnectedCallback() {\r\n this.unsubscribe();\r\n }\r\n\r\n private renderMagnifyingGlassIcon = () => {\r\n const css = `\r\n .cls-1 {\r\n fill: #00aeef;\r\n }\r\n\r\n .cls-1, .cls-2, .cls-3 {\r\n stroke-width: 0px;\r\n }\r\n\r\n .cls-2 {\r\n fill: #005993;\r\n }\r\n\r\n .cls-3 {\r\n fill: #ef592d;\r\n }`;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n private renderNoResults() {\r\n return (\r\n

\r\n {this.renderMagnifyingGlassIcon()}\r\n

No Results Found for “{this.query}”

\r\n \r\n \r\n

\r\n ); \r\n }\r\n\r\n public render() {\r\n\r\n const params = new URLSearchParams(window.location.search);\r\n const tabValue = params.get(\"tab\");\r\n const isSearch = tabValue === \"content\" || tabValue === \"documents\";\r\n\r\n if ( !isSearch ) { //on the product tab (commerce)\r\n if (!this.commerceBindings || !this.productStatusState.firstRequestExecuted || this.productStatusState.isLoading || this.productStatusState.hasProducts || this.productStatusState.totalNumberOfProducts > 0) {\r\n this.host.classList.remove(\"show\");\r\n return;\r\n }\r\n }\r\n else { //on the content or document tab\r\n if (!this.searchBindings || !this.searchStatusState.firstSearchExecuted || this.searchStatusState.isLoading || this.searchStatusState.hasResults) {\r\n this.host.classList.remove(\"show\");\r\n return;\r\n }\r\n }\r\n // NOTE: The parent component has `display: none` set by default to prevent the slot content\r\n // from showing before the no-result component fully initializes. When no results are found, \r\n // we add the `show` class to make it visible.\r\n this.host.classList.add(\"show\");\r\n return this.renderNoResults();\r\n }\r\n}\r\n"],"mappings":"iYAAA,MAAMA,EAAc,mGACpB,MAAAC,EAAeD,E,MCcFE,EAAQ,M,yBAIXC,KAAAC,gBAA2B,MAE3BD,KAAAE,YAA2B,OAmD3BF,KAAAG,0BAA4B,KAClC,MAAMC,EAAM,iOAgBZ,OAAQC,EAAA,OACJC,GAAG,UAAS,YACF,UACVC,MAAM,6BACNC,QAAQ,oBACRC,MAAM,QAENJ,EAAA,YACEA,EAAA,aAAQD,IAEVC,EAAA,SACEA,EAAA,QACEK,MAAM,QACNC,EAAE,gbAEJN,EAAA,QACEK,MAAM,QACNC,EAAE,sFAGNN,EAAA,QACEK,MAAM,QACNC,EAAE,wcAEA,E,sFArFe,K,CAGzB,eAAAC,GACEZ,KAAKa,eAAiBb,KAAKa,a,CAKtB,uBAAMC,GACXd,KAAKC,gBAAkBD,KAAKe,KAAKC,QAAQ,8BAAgC,KACzE,UACQC,IAEN,GAAGjB,KAAKC,gBAAgB,CACtBD,KAAKkB,uBAAyBC,EAC5BC,SAASC,cAAc,8BAEzB,MAAMC,EAAiBC,EAAYvB,KAAKkB,iBAAiBM,QACzDxB,KAAKE,YAAcoB,EAAeG,WAAU,KAC1CzB,KAAK0B,mBAAqBJ,EAAeK,UAAUC,MACnD5B,KAAK6B,MAAQ7B,KAAK0B,mBAAmBG,KAAK,G,KAG1C,CACF7B,KAAK8B,qBAAuBX,EAC1BC,SAASC,cAAc,4BAEzB,MAAMU,EAAmBC,EAAkBhC,KAAK8B,eAAeN,QAC/DxB,KAAKE,YAAc6B,EAAiBN,WAAU,K,YAC5CzB,KAAK6B,OAAQI,GAAAC,GAAAC,GAAAC,EAAApC,KAAK8B,kBAAc,MAAAM,SAAA,SAAAA,EAAEZ,UAAM,MAAAW,SAAA,SAAAA,EAAEP,SAAK,MAAAM,SAAA,SAAAA,EAAEL,SAAK,MAAAI,SAAA,SAAAA,EAAEI,EACxDrC,KAAKsC,kBAAoBP,EAAiBH,KAAK,G,EAGnD,MAAOW,GACPC,QAAQD,MAAMA,GACdvC,KAAKe,KAAK0B,Q,EAIP,oBAAAC,GACL1C,KAAKE,a,CA+CC,eAAAyC,GACN,OACEtC,EAAA,KAAGK,MAAM,qBACNV,KAAKG,4BACNE,EAAA,mCAA2BL,KAAK6B,MAAK,KACrCxB,EAAA,qBACAA,EAAA,a,CAKC,MAAAuC,GAEL,MAAMC,EAAS,IAAIC,gBAAgBC,OAAOC,SAASC,QACnD,MAAMC,EAAWL,EAAOM,IAAI,OAC5B,MAAMC,EAAWF,IAAa,WAAaA,IAAa,YAExD,IAAME,EAAW,CACf,IAAKpD,KAAKkB,mBAAqBlB,KAAK0B,mBAAmB2B,sBAAwBrD,KAAK0B,mBAAmB4B,WAAatD,KAAK0B,mBAAmB6B,aAAevD,KAAK0B,mBAAmB8B,sBAAwB,EAAG,CAC5MxD,KAAKe,KAAK0C,UAAUhB,OAAO,QAC3B,M,MAGC,CACH,IAAKzC,KAAK8B,iBAAmB9B,KAAKsC,kBAAkBoB,qBAAuB1D,KAAKsC,kBAAkBgB,WAAatD,KAAKsC,kBAAkBqB,WAAY,CAChJ3D,KAAKe,KAAK0C,UAAUhB,OAAO,QAC3B,M,EAMJzC,KAAKe,KAAK0C,UAAUG,IAAI,QACxB,OAAO5D,KAAK2C,iB","ignoreList":[]}