{"version":3,"file":"2126.bundle_074.js","mappings":"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","sources":["webpack://LoBSiteTemplates/./src/components/search/search.ts","webpack://LoBSiteTemplates/./src/components/search/searchBase.ts","webpack://LoBSiteTemplates/./src/components/search/searchGtmItem.ts","webpack://LoBSiteTemplates/./src/components/search/searchInitialiser.ts","webpack://LoBSiteTemplates/./src/components/search/searchItemBase.ts","webpack://LoBSiteTemplates/./src/components/search/searchPage.ts","webpack://LoBSiteTemplates/./src/components/search/searchPages.ts","webpack://LoBSiteTemplates/./src/components/search/searchProduct.ts","webpack://LoBSiteTemplates/./src/components/search/searchProducts.ts"],"sourcesContent":["import { AjaxGetAndReplaceHtml } from \"../../shared/ajaxGetAndReplaceHtml\";\r\nimport { IInstanceComponentBase, InstanceComponentBase } from \"../../shared/instanceComponentBase\";\r\nimport { AttributeEnums } from \"../../shared/utilities/enums/attributeEnums\";\r\nimport { UrlEnums } from \"../../shared/utilities/enums/urlEnums\";\r\nimport { HelperUtils } from \"../../shared/utilities/helperUtils\";\r\nimport { ISearchBase, SearchBase } from \"./searchBase\";\r\nimport { ISearchPages, SearchPages } from \"./searchPages\";\r\nimport { ISearchProducts, SearchProducts } from \"./searchProducts\";\r\n\r\nconst urlPaths = require('../../config/urlPaths.json');\r\n\r\nexport interface ISearch extends ISearchBase {\r\n\r\n}\r\n\r\nexport class Search extends SearchBase implements ISearch {\r\n private searchPages: ISearchPages;\r\n private searchProducts: ISearchProducts;\r\n private readonly _handleSearchKeyPress;\r\n private readonly _handleClearButtonClicked;\r\n\r\n constructor(htmlElement: Element) {\r\n super(htmlElement);\r\n //----- Event Listener Bindings Start -----//\r\n this._handleSearchKeyPress = this.handleSearchKeyPress.bind(this);\r\n this._handleClearButtonClicked = this.handleClearButtonClicked.bind(this);\r\n //----- Event Listener Bindings End -----//\r\n\r\n this.searchPagesAndProductsFactory();\r\n\r\n //----- Initialise Event Listeners Start -----//\r\n\r\n this.attachValueOnKeyUpEventToSearchInput();\r\n this.attachClearButtonClickEventToSearchInput();\r\n //----- Initialise Event Listeners End -----//\r\n this.checkClearSearchShowHide();\r\n }\r\n disposeOfPagesAndProducts(): void {\r\n if (this.searchPages) {\r\n this.searchPages.dispose();\r\n this.searchPages = null;\r\n }\r\n if (this.searchProducts) {\r\n this.searchProducts.dispose();\r\n this.searchProducts = null;\r\n }\r\n }\r\n reinitialisePagesAndProducts(): void {\r\n this.disposeOfPagesAndProducts();\r\n this.searchPagesAndProductsFactory();\r\n }\r\n searchPagesAndProductsFactory(): void {\r\n try {\r\n let searchPagesElemet: HTMLElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.SearchPages.SearchPages));\r\n if (searchPagesElemet) {\r\n this.searchPages = new SearchPages(searchPagesElemet);\r\n }\r\n let searchProductsElemet: HTMLElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.SearchProducts.SearchProducts));\r\n if (searchProductsElemet) {\r\n this.searchProducts = new SearchProducts(searchProductsElemet);\r\n }\r\n } catch (error) {\r\n console.log('Search: searchPagesAndProductsFactory ERROR', error);\r\n }\r\n }\r\n\r\n //------ Event Listeners Start -----//\r\n async attachValueOnKeyUpEventToSearchInput() {\r\n let inputElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.Search.Input));\r\n inputElement.addEventListener('keyup', this._handleSearchKeyPress);\r\n }\r\n\r\n async removeValueOnKeyUpEventFromSearchInput() {\r\n let inputElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.Search.Input));\r\n inputElement.removeEventListener('keyup', this._handleSearchKeyPress);\r\n }\r\n\r\n async attachClearButtonClickEventToSearchInput() {\r\n let clearButtonElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.Search.ClearButton));\r\n clearButtonElement.addEventListener('click', this._handleClearButtonClicked);\r\n }\r\n\r\n async removeClearButtonClickFromSearchInput() {\r\n let clearButtonElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.Search.ClearButton));\r\n clearButtonElement.removeEventListener('click', this._handleClearButtonClicked);\r\n }\r\n //------ Event Listeners End -----//\r\n //------ Event Listener Methods Start -----//\r\n async handleSearchKeyPress(event: Event): Promise<void> {\r\n console.log('Search: setValueWithEvent - Beginning');\r\n\r\n const element = event.target as HTMLInputElement;\r\n\r\n if (element.hasAttribute(AttributeEnums.Search.Input)) {\r\n let searchTerm: string = element.value.toLowerCase();\r\n if (searchTerm.length > 0) {\r\n await this.getSearch(searchTerm);\r\n this.showClearButton();\r\n } else {\r\n await this.getTrendingSearches();\r\n this.hideClearButton();\r\n }\r\n this.reinitialisePagesAndProducts();\r\n }\r\n }\r\n\r\n checkClearSearchShowHide() {\r\n try {\r\n let inputElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.Search.Input)) as HTMLInputElement;\r\n if (inputElement.value.length === 0) {\r\n this.hideClearButton();\r\n } else {\r\n this.showClearButton();\r\n }\r\n } catch (error) {\r\n console.log(\"Search: initialiseClearSearchShowHide Error handling clear button initialise\", error);\r\n }\r\n }\r\n async handleClearButtonClicked(event: Event): Promise<void> {\r\n console.log(\"Search: handleClearButtonClicked\");\r\n try {\r\n let inputElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.Search.Input)) as HTMLInputElement;\r\n inputElement.value = '';\r\n await this.getTrendingSearches();\r\n this.hideClearButton();\r\n this.setFocusToInput();\r\n this.disposeOfPagesAndProducts();\r\n } catch (error) {\r\n console.log(\"Search: handleClearButtonClicked Error handling clear button click\", error);\r\n }\r\n }\r\n //------ Event Listener Methods End -----//\r\n showClearButton() {\r\n try {\r\n console.log(\"Search: showClearButton\");\r\n let clearButtonElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.Search.ClearButton));\r\n clearButtonElement.classList.remove('lb_searchBox_clear-hidden');\r\n } catch (error) {\r\n console.log(\"Search: showClearButton Error\", error);\r\n }\r\n }\r\n\r\n hideClearButton() {\r\n try {\r\n console.log(\"Search: hideClearButton\");\r\n let clearButtonElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.Search.ClearButton));\r\n clearButtonElement.classList.add('lb_searchBox_clear-hidden');\r\n } catch (error) {\r\n console.log(\"Search: hideClearButton Error\", error);\r\n }\r\n }\r\n setFocusToInput() {\r\n console.log(\"Search: setFocusToInput\");\r\n try {\r\n let inputElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.Search.Input)) as HTMLInputElement;\r\n inputElement.focus();\r\n } catch (error) {\r\n console.log(\"Search: setFocusToInput Error \", error);\r\n }\r\n }\r\n\r\n dispose(): void {\r\n console.log('Search: dispose');\r\n this.removeValueOnKeyUpEventFromSearchInput();\r\n this.removeClearButtonClickFromSearchInput();\r\n }\r\n\r\n}","import { AjaxGetAndReplaceHtml } from \"../../shared/ajaxGetAndReplaceHtml\";\r\nimport { IInstanceComponentBase, InstanceComponentBase } from \"../../shared/instanceComponentBase\";\r\nimport { AttributeEnums } from \"../../shared/utilities/enums/attributeEnums\";\r\nimport { UrlEnums } from \"../../shared/utilities/enums/urlEnums\";\r\nimport { HelperUtils } from \"../../shared/utilities/helperUtils\";\r\n\r\nconst urlPaths = require('../../config/urlPaths.json');\r\n\r\nexport interface ISearchBase extends IInstanceComponentBase {\r\n\r\n}\r\n\r\nexport abstract class SearchBase extends InstanceComponentBase implements ISearchBase {\r\n\r\n\r\n\r\n constructor(htmlElement: Element) {\r\n super(htmlElement);\r\n //----- Event Listener Bindings Start -----//\r\n\r\n //----- Event Listener Bindings End -----//\r\n\r\n //----- Initialise Event Listeners Start -----//\r\n\r\n //----- Initialise Event Listeners End -----//\r\n this.initialise();\r\n }\r\n\r\n //------ Add Event Listeners Start -----//\r\n\r\n //------ Add Event Listeners End -----//\r\n\r\n //------ Remove Event Listeners Start -----//\r\n\r\n //------ Remove Event Listeners End -----//\r\n //------ Event Listener Methods Start -----//\r\n \r\n \r\n async initialise() {\r\n try{\r\n console.log(\"Search: initialise\");\r\n let searchInputElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.Search.Input)) as HTMLInputElement;\r\n let value: string = searchInputElement.value;\r\n if(value.length > 0) {\r\n await this.getSearch(value);\r\n }\r\n } catch(error){\r\n console.log(\"Search: initialise Error:\", error);\r\n }\r\n }\r\n\r\n\r\n async getSearch(searchTerm: string): Promise<void> {\r\n console.log(\"SearchBase: getSearch start\");\r\n let searchResultsElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.SearchBase.Results));\r\n const uriSummary = urlPaths.websiteUrl + UrlEnums.PartialUrls.Search + searchTerm;\r\n await AjaxGetAndReplaceHtml(searchResultsElement, uriSummary);\r\n console.log(\"SearchBase: Search end\");\r\n }\r\n\r\n async getTrendingSearches(): Promise<void> {\r\n console.log(\"SearchBase: getTrendingSearches start\");\r\n let searchResultsElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.SearchBase.Results));\r\n const uriSummary = urlPaths.websiteUrl + \"/\" + UrlEnums.PartialUrls.TrendingSearches;\r\n await AjaxGetAndReplaceHtml(searchResultsElement, uriSummary);\r\n console.log(\"SearchBase: getTrendingSearches end\");\r\n }\r\n\r\n\r\n //------ Event Listener Methods End -----//\r\n\r\n dispose(): void {\r\n console.log('Search: dispose');\r\n \r\n }\r\n\r\n}","import { ISearchProductAndPageClickGtmDataObject } from \"../../shared/googleTagManager/gtmDataObject\";\r\nimport { GoogleTagManager } from \"../../shared/googleTagManager/gtmService\";\r\nimport { IInstanceComponentBase, InstanceComponentBase } from \"../../shared/instanceComponentBase\";\r\nimport { AttributeEnums } from \"../../shared/utilities/enums/attributeEnums\";\r\nimport { GoogleTagManagerEnums } from \"../../shared/utilities/enums/googleTagManagerEnums\";\r\nimport { HelperUtils } from \"../../shared/utilities/helperUtils\";\r\n\r\nexport interface ISearchGtmItem extends IInstanceComponentBase {\r\n url: string;\r\n name: string;\r\n sendSearchProductAndPageClickGtmDataObjectAndNavigate: (listValue: GoogleTagManagerEnums.SearchClickListValues) => void;\r\n}\r\n\r\nexport class SearchGtmItem extends InstanceComponentBase implements ISearchGtmItem {\r\n public url: string;\r\n public name: string;\r\n\r\n constructor(public htmlElement: HTMLElement) {\r\n super(htmlElement);\r\n\r\n this.setUrlAndName();\r\n }\r\n\r\n sendSearchProductAndPageClickGtmDataObjectAndNavigate(listValue: GoogleTagManagerEnums.SearchClickListValues): void {\r\n try {\r\n let dataObject: ISearchProductAndPageClickGtmDataObject = {\r\n url: this.url,\r\n name: this.name,\r\n list: listValue,\r\n term: this.getSearchInputValue()\r\n };\r\n\r\n let eventType: GoogleTagManagerEnums.EventTypes;\r\n\r\n if (listValue === GoogleTagManagerEnums.SearchClickListValues.Product) {\r\n eventType = GoogleTagManagerEnums.EventTypes.SearchProductClick;\r\n }\r\n else {\r\n eventType = GoogleTagManagerEnums.EventTypes.SearchPageClick;\r\n }\r\n\r\n GoogleTagManager.sendSearchProductAndPageClickGtmDataObjectAndNavigate(dataObject, eventType, this.url);\r\n } catch (error) {\r\n console.log('SearchGtmItem: sendSearchProductAndPageClickGtmDataObjectAndNavigate Error', Error);\r\n }\r\n }\r\n\r\n getSearchInputValue(): string {\r\n try {\r\n let searchElement = this.htmlElement.closest(HelperUtils.addDataAttributeTags(AttributeEnums.SearchBase.Search));\r\n let searchInputElement: HTMLInputElement = searchElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.Search.Input));\r\n let inputValue = searchInputElement.value;\r\n return inputValue;\r\n } catch (error) {\r\n console.log('SearchGtmItem: getSearchInputValue Error', Error);\r\n throw new Error('SearchGtmItem: getSearchInputValue failed to get Input value');\r\n }\r\n }\r\n\r\n setUrlAndName(): void {\r\n try {\r\n this.url = this.htmlElement.getAttribute(AttributeEnums.SearchGtm.GtmSearchItemUrl);\r\n this.name = this.htmlElement.getAttribute(AttributeEnums.SearchGtm.GtmSearchItemName);\r\n } catch (error) {\r\n console.log('SearchGtmItem: setUrlAndName ERROR', error);\r\n }\r\n }\r\n\r\n\r\n dispose(): void {\r\n\r\n }\r\n\r\n}","import { initialiseInstanceComponents } from \"../../shared/instanceComponentInitialiser\";\r\nimport { AttributeEnums } from \"../../shared/utilities/enums/attributeEnums\";\r\nimport { HelperUtils } from \"../../shared/utilities/helperUtils\";\r\nimport { Search } from \"./search\";\r\n\r\nexport function initialiseSearch() {\r\n initialiseInstanceComponents<Search>(Search, HelperUtils.addDataAttributeTags(AttributeEnums.SearchBase.Search), searchFactory);\r\n}\r\n\r\nfunction searchFactory(currentElement: Element): void {\r\n let search = new Search(currentElement);\r\n (<any>window).search = search;\r\n}\r\n\r\n","import { IInstanceComponentBase, InstanceComponentBase } from \"../../shared/instanceComponentBase\";\r\nimport { AttributeEnums } from \"../../shared/utilities/enums/attributeEnums\";\r\nimport { GoogleTagManagerEnums } from \"../../shared/utilities/enums/googleTagManagerEnums\";\r\nimport { HelperUtils } from \"../../shared/utilities/helperUtils\";\r\nimport { ISearchGtmItem, SearchGtmItem } from \"./searchGtmItem\";\r\n\r\n\r\nexport interface ISearchItemBase extends IInstanceComponentBase {\r\n searchGtmItem: ISearchGtmItem;\r\n}\r\n\r\nexport abstract class SearchItemBase extends InstanceComponentBase implements ISearchItemBase {\r\n private readonly _handleClick;\r\n public searchGtmItem: ISearchGtmItem;\r\n\r\n constructor(public htmlElement: HTMLElement) {\r\n super(htmlElement);\r\n this._handleClick = this.handleClick.bind(this);\r\n\r\n this.createSearchGtmItemFactory();\r\n\r\n this.attachClickEventListener();\r\n }\r\n\r\n attachClickEventListener(): void {\r\n this.htmlElement.querySelector('a').addEventListener('click', this._handleClick);\r\n }\r\n removeClickEventListener(): void {\r\n this.htmlElement.querySelector('a').removeEventListener('click', this._handleClick);\r\n }\r\n handleClick(event: Event, listValue: GoogleTagManagerEnums.SearchClickListValues): void {\r\n try {\r\n this.searchGtmItem.sendSearchProductAndPageClickGtmDataObjectAndNavigate(listValue);\r\n } catch (error) {\r\n document.location = this.htmlElement.querySelector('a').getAttribute('href');\r\n }\r\n }\r\n\r\n createSearchGtmItemFactory() {\r\n try {\r\n let searchGtmItemElement = this.htmlElement.querySelector(HelperUtils.addDataAttributeTags(AttributeEnums.SearchGtm.GtmSearchItem)) as HTMLElement;\r\n this.searchGtmItem = new SearchGtmItem(searchGtmItemElement);\r\n\r\n } catch (error) {\r\n console.log(\"SearchItemBase: createSearchGtmItemFactory ERROR: \", error);\r\n }\r\n }\r\n\r\n dispose(): void {\r\n this.removeClickEventListener();\r\n }\r\n}","import { GoogleTagManagerEnums } from \"../../shared/utilities/enums/googleTagManagerEnums\";\r\nimport { ISearchItemBase, SearchItemBase } from \"./searchItemBase\";\r\n\r\n\r\nexport interface ISearchPage extends ISearchItemBase {\r\n}\r\n\r\nexport class SearchPage extends SearchItemBase implements ISearchPage {\r\n constructor(public htmlElement: HTMLElement) {\r\n super(htmlElement);\r\n }\r\n\r\n handleClick(event: Event): void {\r\n super.handleClick(event, GoogleTagManagerEnums.SearchClickListValues.Page);\r\n }\r\n\r\n dispose(): void {\r\n super.dispose();\r\n }\r\n}","import { IInstanceComponentBase, InstanceComponentBase } from \"../../shared/instanceComponentBase\";\r\nimport { AttributeEnums } from \"../../shared/utilities/enums/attributeEnums\";\r\nimport { HelperUtils } from \"../../shared/utilities/helperUtils\";\r\nimport { ISearchPage, SearchPage } from \"./searchPage\";\r\n\r\n\r\nexport interface ISearchPages extends IInstanceComponentBase {\r\n\r\n}\r\n\r\nexport class SearchPages extends InstanceComponentBase implements ISearchPages {\r\n public searchPageList: ISearchPage[];\r\n\r\n constructor(public htmlElement: HTMLElement) {\r\n super(htmlElement);\r\n\r\n this.searchPageListFactory();\r\n }\r\n\r\n searchPageListFactory(): void {\r\n try {\r\n this.searchPageList = new Array<ISearchPage>();\r\n\r\n let searchPageElements: NodeListOf<HTMLElement> = this.htmlElement.querySelectorAll(HelperUtils.addDataAttributeTags(AttributeEnums.SearchPage.SearchPage));\r\n for (let i = 0; i < searchPageElements.length; i += 1) {\r\n let searchPage: ISearchPage = new SearchPage(searchPageElements[i]);\r\n this.searchPageList.push(searchPage);\r\n }\r\n } catch (error) {\r\n console.log('SearchPages: searchPageListFactory ERROR', error);\r\n }\r\n }\r\n\r\n dispose(): void {\r\n\r\n }\r\n}","import { GoogleTagManagerEnums } from \"../../shared/utilities/enums/googleTagManagerEnums\";\r\nimport { ISearchGtmItem, SearchGtmItem } from \"./searchGtmItem\";\r\nimport { ISearchItemBase, SearchItemBase } from \"./searchItemBase\";\r\n\r\n\r\nexport interface ISearchProduct extends ISearchItemBase {\r\n}\r\n\r\nexport class SearchProduct extends SearchItemBase implements ISearchProduct {\r\n constructor(public htmlElement: HTMLElement) {\r\n super(htmlElement);\r\n }\r\n\r\n handleClick(event: Event): void {\r\n super.handleClick(event, GoogleTagManagerEnums.SearchClickListValues.Product);\r\n }\r\n\r\n dispose(): void {\r\n super.dispose();\r\n }\r\n}","import { IInstanceComponentBase, InstanceComponentBase } from \"../../shared/instanceComponentBase\";\r\nimport { AttributeEnums } from \"../../shared/utilities/enums/attributeEnums\";\r\nimport { HelperUtils } from \"../../shared/utilities/helperUtils\";\r\nimport { ISearchProduct, SearchProduct } from \"./searchProduct\";\r\n\r\n\r\nexport interface ISearchProducts extends IInstanceComponentBase {\r\n\r\n}\r\n\r\nexport class SearchProducts extends InstanceComponentBase implements ISearchProducts {\r\n public searchProductList: ISearchProduct[];\r\n\r\n constructor(public htmlElement: HTMLElement) {\r\n super(htmlElement);\r\n\r\n this.searchProductListFactory();\r\n }\r\n\r\n searchProductListFactory(): void {\r\n try {\r\n this.searchProductList = new Array<ISearchProduct>();\r\n\r\n let searchProductElements: NodeListOf<HTMLElement> = this.htmlElement.querySelectorAll(HelperUtils.addDataAttributeTags(AttributeEnums.SearchProduct.SearchProduct));\r\n for (let i = 0; i < searchProductElements.length; i += 1) {\r\n let searchProduct: ISearchProduct = new SearchProduct(searchProductElements[i]);\r\n this.searchProductList.push(searchProduct);\r\n }\r\n } catch (error) {\r\n console.log('SearchProducts: searchProductListFactory ERROR', error);\r\n }\r\n }\r\n\r\n\r\n dispose(): void {\r\n\r\n }\r\n}"],"names":["Search","SearchBase","constructor","htmlElement","super","this","_handleSearchKeyPress","handleSearchKeyPress","bind","_handleClearButtonClicked","handleClearButtonClicked","searchPagesAndProductsFactory","attachValueOnKeyUpEventToSearchInput","attachClearButtonClickEventToSearchInput","checkClearSearchShowHide","disposeOfPagesAndProducts","searchPages","dispose","searchProducts","reinitialisePagesAndProducts","searchPagesElemet","querySelector","HelperUtils","addDataAttributeTags","AttributeEnums","SearchPages","searchProductsElemet","SearchProducts","error","Input","addEventListener","removeValueOnKeyUpEventFromSearchInput","removeEventListener","ClearButton","removeClearButtonClickFromSearchInput","event","element","target","hasAttribute","searchTerm","value","toLowerCase","length","getSearch","showClearButton","getTrendingSearches","hideClearButton","setFocusToInput","classList","remove","add","focus","urlPaths","InstanceComponentBase","initialise","searchResultsElement","Results","uriSummary","websiteUrl","UrlEnums","PartialUrls","AjaxGetAndReplaceHtml","TrendingSearches","SearchGtmItem","setUrlAndName","sendSearchProductAndPageClickGtmDataObjectAndNavigate","listValue","eventType","dataObject","url","name","list","term","getSearchInputValue","GoogleTagManagerEnums","SearchClickListValues","Product","EventTypes","SearchProductClick","SearchPageClick","GoogleTagManager","closest","Error","getAttribute","SearchGtm","GtmSearchItemUrl","GtmSearchItemName","initialiseSearch","initialiseInstanceComponents","searchFactory","currentElement","search","window","SearchItemBase","_handleClick","handleClick","createSearchGtmItemFactory","attachClickEventListener","removeClickEventListener","searchGtmItem","document","location","searchGtmItemElement","GtmSearchItem","SearchPage","Page","searchPageListFactory","searchPageList","Array","searchPageElements","querySelectorAll","i","searchPage","push","SearchProduct","searchProductListFactory","searchProductList","searchProductElements","searchProduct"],"sourceRoot":""}