{"version":3,"file":"js/9557.chunk.js?v=1742528680091","mappings":"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","sources":["webpack://fed-boilerplate/./src/3-components/tiles/SearchProductTile.jsx","webpack://fed-boilerplate/./src/3-components/tiles/SearchProductTileList.jsx","webpack://fed-boilerplate/./src/3-components/tiles/ContentTile.jsx","webpack://fed-boilerplate/./src/3-components/tiles/ContentTileList.jsx","webpack://fed-boilerplate/./src/4-sections/search-page-new/items/SearchListingItem.tsx","webpack://fed-boilerplate/./src/4-sections/tile-container/SearchTileContainer.jsx","webpack://fed-boilerplate/./src/4-sections/search-page-new/items/ItemPagination.tsx","webpack://fed-boilerplate/./src/4-sections/search-page-new/items/NotFound.tsx","webpack://fed-boilerplate/./src/4-sections/search-page-new/page-size/index.tsx","webpack://fed-boilerplate/./src/4-sections/search-page-new/sort-by/index.tsx","webpack://fed-boilerplate/./src/4-sections/search-page-new/discontinued/index.tsx","webpack://fed-boilerplate/./src/4-sections/search-page-new/items/index.tsx","webpack://fed-boilerplate/./src/4-sections/search-page-new/info-panel/SearchInfoPanel.tsx","webpack://fed-boilerplate/./src/4-sections/search-page-new/tabs/SearchTabs.tsx","webpack://fed-boilerplate/./src/4-sections/search-page-new/filter/Filters.tsx","webpack://fed-boilerplate/./src/4-sections/search-page-new/filter/SearchFilterBar.tsx","webpack://fed-boilerplate/./src/4-sections/search-page-new/filter/SearchSidePanel.tsx","webpack://fed-boilerplate/./src/4-sections/search-page-new/index.tsx","webpack://fed-boilerplate/./src/4-sections/search-page-new/utils/getLocalisedData.js","webpack://fed-boilerplate/./src/js/utils/stringHelper.js","webpack://fed-boilerplate/./node_modules/is-retry-allowed/index.js","webpack://fed-boilerplate/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://fed-boilerplate/./node_modules/prop-types/index.js","webpack://fed-boilerplate/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://fed-boilerplate/./node_modules/axios-retry/dist/esm/index.js"],"sourcesContent":["/* eslint-disable react/no-danger */\nimport React from 'react';\nimport { string, shape, bool, arrayOf, object, number } from 'prop-types';\nimport DOMPurify from 'dompurify';\n// import axios from 'axios';\nimport Loader from '../loader';\n\nexport default class SearchProductTile extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n selectedColourIndex: 0,\n selectedColourId: '',\n statusError: false,\n };\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n if (\n this.props.item.url !== nextProps.item.url ||\n this.props.item.srcUrl !== nextProps.item.srcUrl ||\n this.props.item.title !== nextProps.item.title ||\n this.props.item.images !== nextProps.item.images ||\n this.props.item.productId !== nextProps.item.productId ||\n this.props.item.statusNew !== nextProps.item.statusNew ||\n this.props.item.statusSale !== nextProps.item.statusSale ||\n this.props.item.statusStock !== nextProps.item.statusStock ||\n this.props.item.discountinued !== nextProps.item.discountinued ||\n this.props.item.isDiscontinued !== nextProps.item.isDiscontinued ||\n this.props.item.description !== nextProps.item.description ||\n this.props.item.thumbnail !== nextProps.item.thumbnail ||\n this.props.item.loadingDetail !== nextProps.item.loadingDetail ||\n this.state.selectedColourIndex !== nextState.selectedColourIndex ||\n this.state.selectedColourId !== nextState.selectedColourId ||\n this.state.statusError !== nextState.statusError\n ) {\n return true;\n }\n\n return false;\n }\n\n renderPrice = () => {\n let currentProd;\n if (Array.isArray(this.props.item.items)) {\n currentProd = this.props.item.items[this.state.selectedColourIndex];\n } else {\n currentProd = this.props.item.items;\n }\n\n if (!currentProd) {\n this.setState({ statusError: true });\n }\n\n if (this.props.productView === 'staff') {\n if (currentProd.staff !== '' && currentProd.staff !== null) {\n return (\n <div className=\"price-labels\">\n <div className=\"price-sub\">\n Retail{' '}\n <span className=\"price-val\">\n <del>{currentProd.retail ? `$${currentProd.retail}` : 'N/A'}</del>\n </span>\n </div>\n <div className=\"price-main\">\n Staff{' '}\n <span className=\"price-highlight\">\n {currentProd.staff ? `$${currentProd.staff}` : 'N/A'}\n </span>\n </div>\n </div>\n );\n }\n return (\n <div className=\"price-labels\">\n <div className=\"price-sub\">\n Retail{' '}\n <span className=\"price-val\">\n {currentProd.retail\n ? `$${currentProd.retail}`\n : 'N/A'}\n </span>\n </div>\n <div className=\"price-main\">\n Staff{' '}\n <span className=\"price-highlight\">\n {this.props.noPriceLabel}\n </span>\n </div>\n </div>\n );\n }\n\n if (this.props.productView === 'showroom') {\n if (\n currentProd.showroom === '' ||\n currentProd.showroom === null ||\n currentProd.showroom === undefined\n ) {\n return (\n <div className=\"price-labels\">\n <div className=\"price-sub\">\n Retail{' '}\n <span className=\"price-val\">\n {currentProd.retail\n ? `$${currentProd.retail}`\n : 'N/A'}\n </span>\n </div>\n <div className=\"price-main\">\n Showroom{' '}\n <span className=\"price-highlight\">\n {this.props.noPriceLabel}\n </span>\n </div>\n </div>\n );\n }\n return (\n <div className=\"price-labels\">\n <div className=\"price-sub\">\n Retail{' '}\n <span className=\"price-val\">\n <del>{currentProd.retail}</del>\n </span>\n </div>\n <div className=\"price-main\">\n Showroom{' '}\n <span className=\"price-highlight\">\n {currentProd.showroom}\n </span>\n </div>\n </div>\n );\n }\n\n if (this.props.productView === 'trade') {\n return (\n <div className=\"price-labels\">\n <div className=\"price-main\">\n Retail{' '}\n <span className=\"price-val\">\n {currentProd.retail\n ? `$${currentProd.retail}`\n : 'N/A'}\n </span>\n </div>\n </div>\n );\n }\n\n if (\n currentProd.contactDistributor &&\n currentProd.contactDistributor !== 'false'\n ) {\n return (\n <div className=\"price-labels\">\n <div className=\"price-main\">\n <span className=\"contact-distributor\">\n {this.props.contactDistributor}\n </span>\n </div>\n </div>\n );\n }\n\n if (\n currentProd.comingSoon &&\n currentProd.comingSoon !== 'false'\n ) {\n return (\n <div className=\"price-labels\">\n <div className=\"price-main\" />\n </div>\n );\n }\n\n // By default return retail price\n if (currentProd.retail) {\n return (\n <div className=\"price-labels\">\n <div className=\"price-main\">\n {/* {currentProd.retail &&\n (!currentProd.contactDistributor ||\n currentProd.contactDistributor !== 'true')\n ? `From ${currentProd.retail} (RRP)`\n : this.props.contactDistributor} */}\n {currentProd.retail\n ? `From $${currentProd.retail} (RRP)`\n : 'N/A'}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"price-labels\">\n <div className=\"price-main\">N/A</div>\n </div>\n );\n };\n\n getProductImage = () => {\n if (\n this.props.item.items &&\n this.props.item.items.length &&\n Array.isArray(this.props.item.items[this.state.selectedColourIndex].images)\n ) {\n return this.props.item.items[this.state.selectedColourIndex].images[0];\n } else if (\n this.props.item.items &&\n this.props.item.items.length &&\n !Array.isArray(this.props.item.items[this.state.selectedColourIndex].images) &&\n this.props.item.items[this.state.selectedColourIndex].images\n ) {\n return this.props.item.items[this.state.selectedColourIndex].images;\n } else if (\n this.props.item && Array.isArray(this.props.item.images)\n ) {\n return this.props.item.images[0].openUrl;\n }\n\n return this.props.item.images.openUrl;\n };\n\n renderPriceDom = () => {\n const { productView, item } = this.props;\n if (productView && item.items && item.items.length) {\n return (\n <>\n {productView !== 'noprice' && this.renderPrice()}\n <div className=\"price-colours\">\n {item.items.map((color, index) => {\n if (index >= 6) {\n return null;\n }\n const classes =\n index >= 4 ? 'hidden-sm hidden-md' : '';\n return (\n <div\n key={color.id}\n className={`colour-option ${\n index === this.state.selectedColourIndex\n ? 'selected'\n : ''\n }${classes}`}\n style={{ backgroundColor: color.rgb }}\n onClick={e => {\n e.stopPropagation();\n e.preventDefault();\n return this.setState({\n selectedColourIndex: index,\n selectedColourId: color.id,\n });\n }}\n />\n );\n })}\n {item.items.length > 4 && (\n <span className=\"colour-more hidden-xs hidden-lg\">\n +{item.items.length - 4}\n </span>\n )}\n {item.items.length > 6 && (\n <span className=\"colour-more hidden-sm hidden-md\">\n +{item.items.length - 6}\n </span>\n )}\n </div>\n </>\n );\n }\n if (productView && !Array.isArray(item.items)) {\n return (\n <>\n {productView !== 'noprice' && this.renderPrice()}\n <div className=\"price-colours\">\n <div\n key={item.items.id}\n className={`colour-option selected`}\n style={{ backgroundColor: item.items.rgb }}\n />\n </div>\n </>\n );\n }\n return null;\n };\n\n sendClickData() {\n window.dataLayer.push({\n event: 'search_result_clicked',\n filter_category: 'Product',\n filter_sub_category: null,\n search_page_position: this.props.currentPage + 1,\n search_result_position: this.props.resultPosition,\n site_search_category: 'Federated Search',\n site_search_keyword: this.props.keywords,\n search_term: this.props.keywords,\n });\n }\n\n render() {\n if (!this.props.item.items || this.props.item.items.length === 0) {\n throw new Error(`Items data missing for ${this.props.item.id}`);\n }\n let discountinuedFlag = false;\n if (\n this.props.item.items &&\n this.props.item.items.length &&\n this.props.item.items[this.state.selectedColourIndex]\n ) {\n discountinuedFlag =\n this.props.item.items[this.state.selectedColourIndex]\n .isDiscontinued;\n } else if (!Array.isArray(this.props.item.items)) {\n discountinuedFlag = this.props.item.items.isDiscontinued;\n }\n\n let comingSoonFlag = false;\n if (\n this.props.item.items &&\n this.props.item.items.length &&\n this.props.item.items[this.state.selectedColourIndex]\n ) {\n comingSoonFlag =\n this.props.item.items[this.state.selectedColourIndex]\n .comingSoon;\n }\n\n // let backto = this.props.item.url.indexOf('?') >= 0 ? '&' : '?';\n\n // backto = `${backto}backto=${encodeURIComponent(\n // `/search?${window.location.href.split('?')[1]}`\n // )}`;\n\n const {\n rangeDescription,\n productName,\n shortDescription,\n overlayLabel,\n } = this.props.item;\n const useTitle =\n !rangeDescription ||\n rangeDescription === '' ||\n !productName ||\n productName === '' ||\n !shortDescription ||\n shortDescription === '';\n\n let productUrl = this.props.item.url;\n\n if (this.state.selectedColourId) {\n productUrl = this.props.item.url.split('?')[0];\n productUrl = `${productUrl}?itemno=${this.state.selectedColourId}`;\n }\n\n return (\n <a\n href={productUrl}\n onClick={() => {\n return this.sendClickData();\n }}\n className=\"c-product-tile\"\n aria-label={`${this.props.item.variants[this.state.selectedColourIndex].rangeName}, ${this.props.item.variants[this.state.selectedColourIndex].productName}, ${this.props.item.variants[this.state.selectedColourIndex].productDescription} From $${this.props.item.items[0].retail} RRP`}\n >\n <div className=\"tile-image\">\n <img\n src={this.getProductImage()}\n alt={`${this.props.item.variants[this.state.selectedColourIndex].rangeName}, ${this.props.item.variants[this.state.selectedColourIndex].productName}, ${this.props.item.variants[this.state.selectedColourIndex].productDescription}`}\n onError={e => {\n e.currentTarget.onerror = null;\n e.currentTarget.src = this.props.item.altImage;\n }}\n />\n </div>\n <div className=\"tile-content\">\n <div className=\"status-container\">\n {this.props.item.statusNew && (\n <span className=\"status new\">New</span>\n )}\n {this.props.item.statusSale && (\n <span className=\"status sale\">Sale</span>\n )}\n {overlayLabel && (\n <span className=\"status skin-only\">\n {overlayLabel}\n </span>\n )}\n {this.props.item.statusStock && (\n <span className=\"status outofstock\">\n Item out of stock\n </span>\n )}\n {/* {this.props.item.energyEfficient && <span className=\"energyEfficient\"><Icon glyph=\"pictogram-leaf\" /></span>} */}\n {discountinuedFlag && discountinuedFlag !== 'false' && (\n <p className=\"body-small\">\n <span className=\"discountinued\">\n Discontinued\n </span>\n </p>\n )}\n {comingSoonFlag && comingSoonFlag !== 'false' && (\n <p className=\"body-small\">\n <span className=\"coming-soon\">\n Coming Soon\n </span>\n </p>\n )}\n </div>\n\n <p className=\"body-small\">\n <span\n className=\"product-id\"\n dangerouslySetInnerHTML={{\n __html: DOMPurify.sanitize(\n this.props.item.productId\n ),\n }}\n />\n </p>\n\n {useTitle && (\n <div\n className=\"tile-title\"\n dangerouslySetInnerHTML={{\n __html: DOMPurify.sanitize(\n `${this.props.item.variants[this.state.selectedColourIndex].rangeName}, ${this.props.item.variants[this.state.selectedColourIndex].productName}, ${this.props.item.variants[this.state.selectedColourIndex].productDescription}`\n ),\n }}\n />\n )}\n\n {\n !useTitle && (\n <div className=\"tile-title\">\n {rangeDescription} {productName}\n </div>\n )\n }\n\n {!useTitle && (\n <p className=\"product-description small-desktop\">\n {shortDescription}\n </p>\n )}\n\n {this.props.item.description && (\n <p className=\"product-description small-desktop\">\n {this.props.item.description}\n </p>\n )}\n\n {this.renderPriceDom()}\n\n {this.props.item.loadingDetail &&\n this.props.productView !== 'noprice' && (\n <p className=\"product-description small-desktop loading-text\">\n <Loader tag=\"span\" />\n <span>Loading price...</span>\n </p>\n )}\n </div>\n </a>\n );\n }\n}\n\nSearchProductTile.propTypes = {\n item: shape({\n url: string.isRequired,\n title: string.isRequired,\n rangeDescription: string,\n productName: string,\n shortDescription: string,\n productId: string.isRequired,\n srcUrl: string.isRequired,\n price: string,\n colors: arrayOf(string),\n range: string,\n description: string,\n items: arrayOf(object),\n statusNew: bool,\n statusSale: bool,\n statusSkin: bool,\n statusStock: bool,\n discountinued: bool,\n comingSoon: bool,\n thumbnail: string,\n baseImageUrl: string,\n altImage: string,\n loadingDetail: bool,\n }).isRequired,\n resultPosition: number,\n currentPage: number,\n productView: string,\n noPriceLabel: string,\n contactDistributor: string,\n keywords: string,\n};\n\nSearchProductTile.defaultProps = {\n productView: '',\n noPriceLabel: '',\n contactDistributor: '',\n};\n","/* eslint-disable react/no-danger */\nimport React from 'react';\nimport { string, shape, bool, arrayOf, number } from 'prop-types';\nimport DOMPurify from 'dompurify';\n// import axios from 'axios';\nimport Loader from '../loader';\n\nexport default class SearchProductTileList extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n selectedColourIndex: 0,\n selectedColourId: '',\n statusError: false,\n };\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n if (\n this.props.item.url !== nextProps.item.url ||\n this.props.item.srcUrl !== nextProps.item.srcUrl ||\n this.props.item.title !== nextProps.item.title ||\n this.props.item.productId !== nextProps.item.productId ||\n this.props.item.statusNew !== nextProps.item.statusNew ||\n this.props.item.statusSale !== nextProps.item.statusSale ||\n this.props.item.statusStock !== nextProps.item.statusStock ||\n this.props.item.discountinued !== nextProps.item.discountinued ||\n this.props.item.description !== nextProps.item.description ||\n this.props.item.thumbnail !== nextProps.item.thumbnail ||\n this.props.item.loadingDetail !== nextProps.item.loadingDetail ||\n this.state.selectedColourIndex !== nextState.selectedColourIndex ||\n this.state.selectedColourId !== nextState.selectedColourId ||\n this.state.statusError !== nextState.statusError\n ) {\n return true;\n }\n\n return false;\n }\n\n renderPrice = () => {\n let currentProd;\n if (Array.isArray(this.props.item.items)) {\n currentProd = this.props.item.items[this.state.selectedColourIndex];\n } else {\n currentProd = this.props.item.items;\n }\n\n if (!currentProd) {\n this.setState({ statusError: true });\n }\n\n if (this.props.productView === 'staff') {\n if (currentProd.staff !== '' && currentProd.staff !== null) {\n return (\n <div className=\"price-labels\">\n <div className=\"price-sub\">\n Retail{' '}\n <span className=\"price-val\">\n <del>{currentProd.retail ? `$${currentProd.retail}` : 'N/A'}</del>\n </span>\n </div>\n <div className=\"price-main\">\n Staff{' '}\n <span className=\"price-highlight\">\n {currentProd.staff ? `$${currentProd.staff}` : 'N/A'}\n </span>\n </div>\n </div>\n );\n }\n return (\n <div className=\"price-labels\">\n <div className=\"price-sub\">\n Retail{' '}\n <span className=\"price-val\">\n {currentProd.retail\n ? `${currentProd.retail}`\n : 'n/a'}\n </span>\n </div>\n <div className=\"price-main\">\n Staff{' '}\n <span className=\"price-highlight\">\n {this.props.noPriceLabel}\n </span>\n </div>\n </div>\n );\n }\n\n if (this.props.productView === 'showroom') {\n if (\n currentProd.showroom === '' ||\n currentProd.showroom === null ||\n currentProd.showroom === undefined\n ) {\n return (\n <div className=\"price-labels\">\n <div className=\"price-sub\">\n Retail{' '}\n <span className=\"price-val\">\n {currentProd.retail\n ? `${currentProd.retail}`\n : 'n/a'}\n </span>\n </div>\n <div className=\"price-main\">\n Showroom{' '}\n <span className=\"price-highlight\">\n {this.props.noPriceLabel}\n </span>\n </div>\n </div>\n );\n }\n return (\n <div className=\"price-labels\">\n <div className=\"price-sub\">\n Retail{' '}\n <span className=\"price-val\">\n <del>{currentProd.retail}</del>\n </span>\n </div>\n <div className=\"price-main\">\n Showroom{' '}\n <span className=\"price-highlight\">\n {currentProd.showroom}\n </span>\n </div>\n </div>\n );\n }\n\n if (this.props.productView === 'trade') {\n return (\n <div className=\"price-labels\">\n <div className=\"price-main\">\n Retail{' '}\n <span className=\"price-val\">\n {currentProd.retail\n ? `${currentProd.retail}`\n : 'n/a'}\n </span>\n </div>\n </div>\n );\n }\n\n if (\n currentProd.contactDistributor &&\n currentProd.contactDistributor !== 'false'\n ) {\n return (\n <div className=\"price-labels\">\n <div className=\"price-main\">\n <span className=\"contact-distributor\">\n {this.props.contactDistributor}\n </span>\n </div>\n </div>\n );\n }\n\n // By default return retail price\n if (currentProd.retail) {\n return (\n <div className=\"price-labels\">\n <div className=\"price-main\">\n {/* {currentProd.retail &&\n (!currentProd.contactDistributor ||\n currentProd.contactDistributor !== 'true')\n ? `From ${currentProd.retail} (RRP)`\n : this.props.contactDistributor} */}\n {currentProd.retail\n ? `From $${currentProd.retail} (RRP)`\n : 'N/A'}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"price-labels\">\n <div className=\"price-main\">N/A</div>\n </div>\n );\n };\n\n getProductImage = () => {\n if (\n this.props.item.items &&\n this.props.item.items.length &&\n Array.isArray(this.props.item.items[this.state.selectedColourIndex].images)\n ) {\n return this.props.item.items[this.state.selectedColourIndex].images[0];\n } else if (\n this.props.item.items &&\n this.props.item.items.length &&\n !Array.isArray(this.props.item.items[this.state.selectedColourIndex].images) &&\n this.props.item.items[this.state.selectedColourIndex].images\n ) {\n return this.props.item.items[this.state.selectedColourIndex].images;\n } else if (\n this.props.item && Array.isArray(this.props.item.images)\n ) {\n return this.props.item.images[0].openUrl;\n }\n\n return this.props.item.images.openUrl;\n };\n\n getStatus = clasess => {\n if (\n this.props.item.statusNew ||\n this.props.item.statusSale ||\n this.props.item.statusStock ||\n this.props.item.energyEfficient ||\n this.props.item.overlayLabel\n ) {\n return (\n <div className={`${clasess} status-container`}>\n {/* {this.props.item.energyEfficient && <span className=\"energyEfficient\"><Icon glyph=\"pictogram-leaf\" /></span>} */}\n {this.props.item.overlayLabel && (\n <span className=\"status skin-only\">\n {this.props.item.overlayLabel}\n </span>\n )}\n {this.props.item.statusNew && (\n <span className=\"status new\">New</span>\n )}\n {this.props.item.statusSale && (\n <span className=\"status sale\">Sale</span>\n )}\n {this.props.item.statusStock && (\n <span className=\"status outodstock\">\n Item out of stock\n </span>\n )}\n </div>\n );\n }\n\n return null;\n };\n\n sendClickData() {\n window.dataLayer.push({\n event: 'search_result_clicked',\n filter_category: 'Product',\n filter_sub_category: null,\n search_page_position: this.props.currentPage + 1,\n search_result_position: this.props.resultPosition,\n site_search_category: 'Federated Search',\n site_search_keyword: this.props.keywords,\n search_term: this.props.keywords,\n });\n }\n\n render() {\n if (!this.props.item.items || this.props.item.items.length === 0) {\n this.setState({ statusError: true });\n }\n let discountinuedFlag = false;\n if (\n this.props.item.items &&\n this.props.item.items.length &&\n this.props.item.items[this.state.selectedColourIndex]\n ) {\n discountinuedFlag =\n this.props.item.items[this.state.selectedColourIndex]\n .isDiscontinued;\n } else if (!Array.isArray(this.props.item.items)) {\n discountinuedFlag = this.props.item.items.isDiscontinued;\n }\n\n let productUrl = this.props.item.url;\n\n if (this.state.selectedColourId) {\n productUrl = this.props.item.url.split('?')[0];\n productUrl = `${productUrl}?itemno=${this.state.selectedColourId}`;\n }\n\n // let backto = this.props.item.url.indexOf('?') >= 0 ? '&' : '?';\n\n // backto = `${backto}backto=${encodeURIComponent(\n // `/search?${window.location.href.split('?')[1]}`\n // )}`;\n\n const { rangeDescription, productName, shortDescription } =\n this.props.item;\n const useTitle =\n !rangeDescription ||\n rangeDescription === '' ||\n !productName ||\n productName === '' ||\n !shortDescription ||\n shortDescription === '';\n\n return (\n <a\n href={`${productUrl}`}\n onClick={() => {\n return this.sendClickData();\n }}\n className=\"c-product-tile list-view\"\n aria-label={`${this.props.item.title} From $${this.props.item.items[0].retail} RRP`}\n >\n <div className=\"tile-image\">\n <img\n src={this.getProductImage()}\n alt={this.props.item.title}\n onError={e => {\n e.currentTarget.onerror = null;\n e.currentTarget.src = this.props.item.altImage;\n }}\n />\n </div>\n <div className=\"tile-content\">\n {this.getStatus('hidden-sm hidden-md hidden-lg mobile-ver')}\n\n <p className=\"body-small\">\n <span\n className=\"product-id\"\n dangerouslySetInnerHTML={{\n __html: DOMPurify.sanitize(\n this.props.item.productId\n ),\n }}\n />\n {discountinuedFlag && discountinuedFlag !== 'false' && (\n <span className=\"discountinued\">Discontinued</span>\n )}\n </p>\n\n {useTitle && (\n <div\n className=\"tile-title\"\n dangerouslySetInnerHTML={{\n __html: DOMPurify.sanitize(\n this.props.item.title\n ),\n }}\n />\n )}\n\n {!useTitle && (\n <div className=\"tile-title\">\n {rangeDescription} {productName}\n </div>\n )}\n\n {!useTitle && (\n <p className=\"product-description small-desktop\">\n {shortDescription}\n </p>\n )}\n\n {this.props.item.description && (\n <p className=\"product-description small-desktop\">\n {this.props.item.description}\n </p>\n )}\n\n {this.props.productView &&\n this.props.productView === 'noprice' &&\n this.props.item.items &&\n this.props.item.items.length > 0 && (\n <div className=\"price-colours\">\n {this.props.item.items.map((color, index) => {\n if (index >= 7) {\n return null;\n }\n return (\n <button\n key={color.id}\n type=\"button\"\n className={`colour-option ${\n index ===\n this.state.selectedColourIndex\n ? 'selected'\n : ''\n }`}\n style={{ backgroundColor: color.rgb }}\n onClick={() => {\n return this.setState({ selectedColourIndex: index });\n }}\n />\n );\n })}\n {this.props.item.items.length > 7 && (\n <span className=\"colour-more\">\n +{this.props.item.items.length - 7}\n </span>\n )}\n </div>\n )}\n\n {this.props.productView &&\n this.props.productView !== 'noprice' &&\n this.props.item.items &&\n this.props.item.items.length > 0 && (\n <>\n {this.renderPrice()}\n <div className=\"price-colours\">\n {this.props.item.items.map(\n (color, index) => {\n if (index >= 7) {\n return null;\n }\n return (\n <button\n key={color.id}\n type=\"button\"\n className={`colour-option ${\n index ===\n this.state\n .selectedColourIndex\n ? 'selected'\n : ''\n }`}\n style={{\n backgroundColor:\n color.rgb,\n }}\n onClick={e => {\n e.preventDefault();\n return this.setState({\n selectedColourIndex: index,\n selectedColourId: color.id,\n });\n }}\n />\n );\n }\n )}\n {this.props.item.items.length > 7 && (\n <span className=\"colour-more\">\n +{this.props.item.items.length - 7}\n </span>\n )}\n </div>\n </>\n )}\n\n {this.props.productView &&\n this.props.productView !== 'noprice' &&\n this.props.item.items &&\n !Array.isArray(this.props.item.items) && (\n <>\n {this.renderPrice()}\n <div className=\"price-colours\">\n <button\n type=\"button\"\n className={`colour-option selected`}\n style={{\n backgroundColor:\n this.props.item.items.rgb,\n }}\n />\n </div>\n </>\n )}\n\n {this.props.item.loadingDetail && (\n <p className=\"product-description small-desktop loading-text\">\n <Loader />\n <span>Loading price...</span>\n </p>\n )}\n </div>\n\n {this.getStatus('hidden-xs')}\n </a>\n );\n }\n}\n\nSearchProductTileList.propTypes = {\n item: shape({\n url: string.isRequired,\n title: string.isRequired,\n rangeDescription: string,\n productName: string,\n shortDescription: string,\n productId: string.isRequired,\n colors: arrayOf(string),\n statusNew: bool,\n statusSale: bool,\n statusStock: bool,\n discountinued: bool,\n thumbnail: string,\n altImage: string,\n }).isRequired,\n resultPosition: number,\n currentPage: number,\n productView: string,\n noPriceLabel: string,\n contactDistributor: string,\n keywords: string,\n};\n\nSearchProductTileList.defaultProps = { productView: '', noPriceLabel: '' };\n","/* eslint-disable react/no-danger */\nimport { shape, string, bool, arrayOf, object, number } from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport DOMPurify from 'dompurify';\nimport Icon from '../icon/index.jsx';\nimport { clearHTMLTags } from '../../js/utils/stringHelper.js';\n\nexport default class ContentTile extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = { searchPage: false };\n }\n\n // use case for search page due to needing to use dangerouslySetInnerHTML instead of normal case\n componentDidMount() {\n if (window.location.toString().includes('search?')) {\n this.setState({ searchPage: true });\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n if (\n this.props.item.url !== nextProps.item.url ||\n this.props.item.srcUrl !== nextProps.item.srcUrl ||\n this.props.item.title !== nextProps.item.title ||\n this.props.item.contentId !== nextProps.item.contentId ||\n this.props.item.description !== nextProps.item.description ||\n this.props.item.typeName !== nextProps.item.typeName ||\n this.props.item.size !== nextProps.item.size ||\n this.props.item.file !== nextProps.item.file ||\n this.props.item.ext !== nextProps.item.ext ||\n this.props.item.image !== nextProps.item.image ||\n this.props.item.version !== nextProps.item.version ||\n this.props.item.revision !== nextProps.item.revision ||\n this.props.item.date !== nextProps.item.date ||\n this.props.item.categories !== nextProps.item.categories ||\n this.state.searchPage !== nextState.searchPage ||\n this.state.backto !== nextState.backto\n ) {\n return true;\n }\n\n return false;\n }\n\n sendClickData() {\n window.dataLayer.push({\n event: 'search_result_clicked',\n filter_category: 'Content',\n filter_sub_category: null,\n search_page_position: this.props.currentPage + 1,\n search_result_position: this.props.resultPosition,\n site_search_category: 'Federated Search',\n site_search_keyword: this.props.keywords,\n search_term: this.props.keywords,\n });\n\n if (this.props.item.ext.toLowerCase() !== 'html') {\n window.dataLayer.push({\n event: 'file_download',\n document_id: this.props.item.file.split('.')[0],\n document_name: clearHTMLTags(this.props.item.title),\n document_type: this.props.item.typeName,\n });\n }\n }\n\n createDate(date) {\n const dateString = date;\n const dateObject = new Date(dateString);\n\n const day = dateObject.getDate();\n const monthIndex = dateObject.getMonth();\n const year = dateObject.getFullYear();\n\n const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n const month = months[monthIndex];\n\n return `${day} ${month} ${year}`;\n }\n\n render() {\n // removes the .pdf or .zip from string so can use as reference id\n let reference = this.props.item.file;\n if (this.props.item.file) {\n reference = reference.slice(0, -4);\n }\n\n // need to re-add\n // let backto = this.props.item.url.indexOf('?') >= 0 ? '&' : '?';\n\n // if (this.state.searchPage) {\n // backto = `${backto}backto=${encodeURIComponent(\n // `/search?${window.location.href.split('?')[1]}`\n // )}`;\n // } else {\n // backto = this.props.item.url.indexOf('?') >= 0 ? '&' : '?';\n // backto = this.props.item.srcUrl\n // ? `${backto}backto=${this.props.item.srcUrl}`\n // : '';\n // }\n\n return (\n <a\n href={`${this.props.item.url}`}\n // href={`${this.props.item.url}${backto}`}\n className=\"c-content-tile\"\n onClick={() => {\n return this.sendClickData();\n }}\n target={this.props.item.ext.toLowerCase() !== 'html' ? '_blank' : '_self'}\n rel={this.props.item.ext.toLowerCase() !== 'html' ? 'noreferrer noopener' : ''}\n >\n {this.props.item.ext.toLowerCase() === 'html' && (\n <div className=\"content-container\">\n <div className={classNames('image-container', { 'has-image': this.props.item.image })}>\n {this.props.item.image && (\n <>\n <img\n className=\"content-website-image\"\n src={this.props.item.image}\n alt=\"\"\n />\n <div className=\"content-attributes\">\n <div className=\"content-attr\">\n <Icon\n className=\"content-file-type\"\n glyph=\"news\"\n />\n ARTICLE\n </div>\n </div>\n </>\n )}\n {!this.props.item.image && (\n <>\n <Icon\n className=\"content-placeholder\"\n glyph=\"news\"\n />\n <div className=\"content-attributes\">\n <div className=\"content-attr\">\n <Icon\n className=\"content-file-type\"\n glyph=\"news\"\n />\n ARTICLE\n </div>\n </div>\n </>\n )}\n </div>\n <div className=\"listing-info\">\n <h5\n className=\"listing-title\"\n dangerouslySetInnerHTML={{\n __html: DOMPurify.sanitize(\n this.props.item.title\n ),\n }}\n />\n <div className=\"listing-details\">\n <div\n className=\"listing-desc\"\n dangerouslySetInnerHTML={{\n __html: DOMPurify.sanitize(\n this.props.item.description\n ),\n }}\n />\n <div className=\"listing-more\">Learn more</div>\n </div>\n {this.props.item.categories && (\n <div className=\"listing-footer\">\n {this.props.item.categories.map(\n category => {\n return (\n <div\n key={category.id}\n className=\"listing-category\"\n >\n {category.tag}\n </div>\n );\n }\n )}\n </div>\n )}\n </div>\n </div>\n )}\n {this.props.item.ext.toLowerCase() !== 'html' && (\n <div className=\"content-container\">\n <div className={classNames('image-container', { 'has-image': this.props.item.image })}>\n {this.props.item.image &&\n this.props.item.ext.toLowerCase() === 'pdf' && (\n <>\n <img\n className=\"content-pdf-image\"\n src={this.props.item.image}\n alt=\"\"\n />\n <div className=\"content-attributes\">\n <div className=\"content-attr\">\n <Icon\n className=\"content-file-type\"\n glyph=\"pdf\"\n />\n {this.props.item.ext.toUpperCase()}\n </div>\n </div>\n </>\n )}\n {!this.props.item.image &&\n this.props.item.ext.toLowerCase() === 'pdf' && (\n <>\n <Icon\n className=\"content-placeholder\"\n glyph=\"pdf\"\n />\n <div className=\"content-attributes\">\n <div className=\"content-attr\">\n <Icon\n className=\"content-file-type\"\n glyph=\"pdf\"\n />\n {this.props.item.ext.toUpperCase()}\n </div>\n </div>\n </>\n )}\n {this.props.item.image &&\n this.props.item.ext.toLowerCase() !== 'pdf' && (\n // eslint-disable-next-line react/jsx-indent\n\n <>\n <img\n className=\"content-pdf-image\"\n src={this.props.item.image}\n alt={this.props.item.title}\n />\n\n <div className=\"content-attributes\">\n <div className=\"content-attr\">\n <Icon\n className=\"content-file-type\"\n glyph=\"file\"\n />\n {this.props.item.ext.toUpperCase()}\n </div>\n </div>\n </>\n )}\n {!this.props.item.image &&\n this.props.item.ext.toLowerCase() !== 'pdf' && (\n // eslint-disable-next-line react/jsx-indent\n <>\n <Icon\n className=\"content-placeholder\"\n glyph=\"download-2\"\n />\n\n <div className=\"content-attributes\">\n <div className=\"content-attr\">\n <Icon\n className=\"content-file-type\"\n glyph=\"file\"\n />\n {this.props.item.ext.toUpperCase()}\n </div>\n </div>\n </>\n )}\n </div>\n <div className=\"listing-info has-download\">\n <h5\n className=\"listing-title\"\n dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(this.props.item.title) }}\n />\n <div className=\"listing-details\">\n <div className=\"listing-reference\">\n <p>REFERENCE</p>\n <div className=\"reference-id\">\n {reference}\n </div>\n </div>\n <div className=\"listing-further-details\">\n <div className=\"listing-version\">\n <p>VERSION</p>\n <div className=\"version\">\n {this.props.item.version ? this.props.item.version : '-----'}\n </div>\n </div>\n <div className=\"listing-date\">\n <p>DATE</p>\n <div className=\"date\">\n {this.props.item.date ? this.createDate(this.props.item.date) : '-----'}\n </div>\n </div>\n <div className=\"listing-revision\">\n <p>REVISION</p>\n <div className=\"revision\">\n {this.props.item.revision ? this.props.item.revision : '-----'}\n </div>\n </div>\n </div>\n <div className=\"listing-download\">\n <Icon\n className=\"content-placeholder\"\n glyph=\"download-2\"\n />\n <span>\n DOWNLOAD{' '}\n ({this.props.item.ext.toUpperCase()}){' '}\n {this.props.item.size\n ? this.props.item.size\n : reference}\n </span>\n </div>\n </div>\n {this.props.item.categories && (\n <div className=\"listing-footer\">\n {this.props.item.categories.map(\n category => {\n return (\n <div\n key={category.id}\n className=\"listing-category\"\n >\n {category.tag}\n </div>\n );\n }\n )}\n </div>\n )}\n </div>\n </div>\n )}\n </a>\n );\n }\n}\n\nContentTile.propTypes = {\n item: shape({\n url: string,\n title: string,\n rangeDescription: string,\n productName: string,\n shortDescription: string,\n productId: string,\n srcUrl: string.isRequired,\n range: string,\n description: string,\n size: string,\n file: string,\n categories: arrayOf(object),\n items: arrayOf(object),\n statusNew: bool,\n statusSale: bool,\n statusSkin: bool,\n statusStock: bool,\n // energyEfficient: bool,\n discountinued: bool,\n // showFrom: bool,\n thumbnail: string,\n baseImageUrl: string,\n altImage: string,\n loadingDetail: bool,\n ext: string,\n // categories: arrayOf(object).isRequired,\n }).isRequired,\n resultPosition: number,\n currentPage: number,\n keywords: string,\n};\n","/* eslint-disable react/no-danger */\nimport { shape, string, bool, arrayOf, object, number } from 'prop-types';\nimport React from 'react';\nimport classNames from 'classnames';\nimport DOMPurify from 'dompurify';\nimport Icon from '../icon/index.jsx';\nimport { clearHTMLTags } from '../../js/utils/stringHelper.js';\n\nexport default class ContentTileList extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = { searchPage: false };\n }\n\n // use case for search page due to needing to use dangerouslySetInnerHTML instead of normal case\n componentDidMount() {\n if (window.location.toString().includes('search?')) {\n this.setState({ searchPage: true });\n }\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n if (\n this.props.item.url !== nextProps.item.url ||\n this.props.item.srcUrl !== nextProps.item.srcUrl ||\n this.props.item.title !== nextProps.item.title ||\n this.props.item.contentId !== nextProps.item.contentId ||\n this.props.item.description !== nextProps.item.description ||\n this.props.item.typeName !== nextProps.item.typeName ||\n this.props.item.size !== nextProps.item.size ||\n this.props.item.file !== nextProps.item.file ||\n this.props.item.ext !== nextProps.item.ext ||\n this.props.item.image !== nextProps.item.image ||\n this.props.item.version !== nextProps.item.version ||\n this.props.item.revision !== nextProps.item.revision ||\n this.props.item.date !== nextProps.item.date ||\n this.props.item.categories !== nextProps.item.categories ||\n this.state.searchPage !== nextState.searchPage ||\n this.state.backto !== nextState.backto\n ) {\n return true;\n }\n\n return false;\n }\n\n sendClickData() {\n window.dataLayer.push({\n event: 'search_result_clicked',\n filter_category: 'Content',\n filter_sub_category: null,\n search_page_position: this.props.currentPage + 1,\n search_result_position: this.props.resultPosition,\n site_search_category: 'Federated Search',\n site_search_keyword: this.props.keywords,\n search_term: this.props.keywords,\n });\n\n if (this.props.item.ext.toLowerCase() !== 'html') {\n window.dataLayer.push({\n event: 'file_download',\n document_id: this.props.item.file.split('.')[0],\n document_name: clearHTMLTags(this.props.item.title),\n document_type: this.props.item.typeName,\n });\n }\n }\n\n createDate(date) {\n const dateString = date;\n const dateObject = new Date(dateString);\n\n const day = dateObject.getDate();\n const monthIndex = dateObject.getMonth();\n const year = dateObject.getFullYear();\n\n const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n const month = months[monthIndex];\n\n return `${day} ${month} ${year}`;\n }\n\n render() {\n // removes the .pdf or .zip from string so can use as reference id\n let reference = this.props.item.file;\n if (this.props.item.file) {\n reference = reference.slice(0, -4);\n }\n\n // need to re-add\n // let backto = this.props.item.openUrl.indexOf('?') >= 0 ? '&' : '?';\n\n // if (this.state.searchPage) {\n // backto = `${backto}backto=${encodeURIComponent(\n // `/search?${window.location.href.split('?')[1]}`\n // )}`;\n // } else {\n // backto = this.props.item.url.indexOf('?') >= 0 ? '&' : '?';\n // backto = this.props.item.srcUrl\n // ? `${backto}backto=${this.props.item.srcUrl}`\n // : '';\n // }\n\n return (\n <a\n href={`${this.props.item.url}`}\n className=\"c-content-tile list-view\"\n onClick={() => {\n return this.sendClickData();\n }}\n target={this.props.item.ext.toLowerCase() !== 'html' ? '_blank' : '_self'}\n rel={this.props.item.ext.toLowerCase() !== 'html' ? 'noreferrer noopener' : ''}\n >\n {this.props.item.ext.toLowerCase() === 'html' && (\n <div className=\"content-container\">\n <div className={classNames('image-container', { 'has-image': this.props.item.image })}>\n {this.props.item.image && (\n <>\n <img\n className=\"content-website-image\"\n src={this.props.item.image}\n alt=\"\"\n />\n <div className=\"content-attributes\">\n <div className=\"content-attr\">\n <Icon\n className=\"content-file-type\"\n glyph=\"news\"\n />\n ARTICLE\n </div>\n </div>\n </>\n )}\n {!this.props.item.image && (\n <>\n <Icon\n className=\"content-placeholder\"\n glyph=\"news\"\n />\n <div className=\"content-attributes\">\n <div className=\"content-attr\">\n <Icon\n className=\"content-file-type\"\n glyph=\"news\"\n />\n ARTICLE\n </div>\n </div>\n </>\n )}\n </div>\n <div className=\"listing-info\">\n <h5\n className=\"listing-title\"\n dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(this.props.item.title) }}\n />\n <div className=\"listing-details\">\n <div\n className=\"listing-desc\"\n dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(this.props.item.description) }}\n />\n <div className=\"listing-more\">Learn more</div>\n </div>\n {this.props.item.categories && (\n <div className=\"listing-footer\">\n {this.props.item.categories.map(\n category => {\n return (\n <div\n key={category.id}\n className=\"listing-category\"\n >\n {category.tag}\n </div>\n );\n }\n )}\n </div>\n )}\n </div>\n </div>\n )}\n {this.props.item.ext.toLowerCase() !== 'html' && (\n <div className=\"content-container\">\n <div className={classNames('image-container', { 'has-image': this.props.item.image })}>\n {this.props.item.image &&\n this.props.item.ext.toLowerCase() === 'pdf' && (\n <>\n <img\n className=\"content-pdf-image\"\n src={this.props.item.image}\n alt=\"\"\n />\n <div className=\"content-attributes\">\n <div className=\"content-attr\">\n <Icon\n className=\"content-file-type\"\n glyph=\"pdf\"\n />\n {this.props.item.ext.toUpperCase()}\n </div>\n </div>\n </>\n )}\n {!this.props.item.image &&\n this.props.item.ext.toLowerCase() === 'pdf' && (\n <>\n <Icon\n className=\"content-placeholder\"\n glyph=\"pdf\"\n />\n <div className=\"content-attributes\">\n <div className=\"content-attr\">\n <Icon\n className=\"content-file-type\"\n glyph=\"pdf\"\n />\n {this.props.item.ext.toUpperCase()}\n </div>\n </div>\n </>\n )}\n {this.props.item.image &&\n this.props.item.ext.toLowerCase() !== 'pdf' && (\n // eslint-disable-next-line react/jsx-indent\n\n <>\n <img\n className=\"content-pdf-image\"\n src={this.props.item.image}\n alt={this.props.item.title}\n />\n\n <div className=\"content-attributes\">\n <div className=\"content-attr\">\n <Icon\n className=\"content-file-type\"\n glyph=\"pdf\"\n />\n {this.props.item.ext.toUpperCase()}\n </div>\n </div>\n </>\n )}\n {!this.props.item.image &&\n this.props.item.ext.toLowerCase() !== 'pdf' && (\n // eslint-disable-next-line react/jsx-indent\n <>\n <Icon\n className=\"content-placeholder\"\n glyph=\"download-2\"\n />\n\n <div className=\"content-attributes\">\n <div className=\"content-attr\">\n <Icon\n className=\"content-file-type\"\n glyph=\"file\"\n />\n {this.props.item.ext.toUpperCase()}\n </div>\n </div>\n </>\n )}\n </div>\n <div className=\"listing-info has-download\">\n <h5\n className=\"listing-title\"\n dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(this.props.item.title) }}\n />\n <div className=\"listing-details\">\n <div className=\"listing-reference\">\n <p>REFERENCE</p>\n <div className=\"reference-id\">\n {reference}\n </div>\n </div>\n <div className=\"listing-further-details\">\n <div className=\"listing-version\">\n <p>VERSION</p>\n <div className=\"version\">\n {this.props.item.version ? this.props.item.version : '-----'}\n </div>\n </div>\n <div className=\"listing-date\">\n <p>DATE</p>\n <div className=\"date\">\n {this.props.item.date ? this.createDate(this.props.item.date) : '-----'}\n </div>\n </div>\n <div className=\"listing-revision\">\n <p>REVISION</p>\n <div className=\"revision\">\n {this.props.item.revision ? this.props.item.revision : '-----'}\n </div>\n </div>\n </div>\n <div className=\"listing-download\">\n <Icon\n className=\"content-placeholder\"\n glyph=\"download-2\"\n />\n <span>DOWNLOAD</span>\n <span>\n {this.props.item.size\n ? this.props.item.size\n : reference}\n </span>\n </div>\n </div>\n {this.props.item.categories && (\n <div className=\"listing-footer\">\n {this.props.item.categories.map(\n category => {\n return (\n <div\n key={category.id}\n className=\"listing-category\"\n >\n {category.tag}\n </div>\n );\n }\n )}\n </div>\n )}\n </div>\n </div>\n )}\n </a>\n );\n }\n}\n\nContentTileList.propTypes = {\n item: shape({\n url: string,\n title: string,\n rangeDescription: string,\n productName: string,\n shortDescription: string,\n productId: string,\n srcUrl: string.isRequired,\n range: string,\n description: string,\n size: string,\n file: string,\n categories: arrayOf(object),\n items: arrayOf(object),\n statusNew: bool,\n statusSale: bool,\n statusSkin: bool,\n statusStock: bool,\n // energyEfficient: bool,\n discountinued: bool,\n // showFrom: bool,\n thumbnail: string,\n baseImageUrl: string,\n altImage: string,\n loadingDetail: bool,\n ext: string,\n // categories: arrayOf(object).isRequired,\n }).isRequired,\n resultPosition: number,\n currentPage: number,\n keywords: string,\n};\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport React from 'react';\nimport SearchProductTile from '../../../3-components/tiles/SearchProductTile';\nimport SearchProductTileList from '../../../3-components/tiles/SearchProductTileList';\nimport ContentTile from '../../../3-components/tiles/ContentTile';\nimport ContentTileList from '../../../3-components/tiles/ContentTileList';\nimport { getLocalisedData } from '../utils/getLocalisedData';\nimport { ProductTileErrorBoundary } from '../../../3-components/tiles/ProductTileErrorBoundary';\n\ninterface ProductPriceData {\n variants: {\n contactDistributor: string;\n id: string;\n image: string;\n isDiscontinued: string;\n retail: string;\n rgb: string;\n showroom: string;\n staff: string;\n trade: string;\n };\n}\n\ninterface ProductImagesData {\n openUrl: string;\n title: string;\n}\n\ninterface ProductNestedData extends ProductImagesData, ProductPriceData {\n openUrl: string;\n isDiscontinued: string;\n title: string;\n price: ProductPriceData;\n images: ProductImagesData;\n}\n\nexport interface ProductItem extends ProductNestedData {\n openUrl: string;\n en_AU: ProductNestedData;\n en_NZ: ProductNestedData;\n productId: string;\n}\n\ninterface ContentNestedData {\n openUrl: string;\n isDiscontinued: string;\n title: string;\n description: string;\n revision: string;\n lastModifiedDate: string;\n file: string;\n documentSize: string;\n extension: string;\n}\n\nexport interface ContentItem {\n openUrl: string;\n en_AU?: ContentNestedData;\n en_NZ?: ContentNestedData;\n version: string;\n type: string;\n thumbnailUrl: string;\n}\n\ninterface SearchListingItemProps {\n item: ContentItem & ProductItem;\n itemPosition: number;\n tileType: string;\n altImage?: string;\n productView?: string;\n noPriceLabel?: string;\n contactDistributor?: string;\n keywords?: string;\n currentPage: number;\n currentPageSize: number;\n}\n\nconst SearchListingItem: React.FC<SearchListingItemProps> = ({\n// const SearchListingItem = ({\n item,\n itemPosition,\n tileType,\n altImage,\n productView,\n noPriceLabel,\n contactDistributor,\n keywords,\n currentPage,\n currentPageSize,\n}) => {\n const localisedItem = getLocalisedData(item);\n // Determine which tile component gets rendered\n if (tileType === 'product-tile' || tileType === 'product-tile-list') {\n const resultPosition = ((currentPage + 1) * currentPageSize) - currentPageSize + itemPosition;\n\n if (\n tileType === 'product-tile'\n ) {\n const productItem = {\n srcUrl: localisedItem.images[0].openUrl,\n url: localisedItem.openUrl || '#', // temp fix til SVS keeps openUrl in data\n title: localisedItem.title,\n variants: localisedItem.variants,\n productId: item.productId,\n // price: (item.price && item.price.length) ? `$${Math.min(...item.price)}` : '',\n items: localisedItem.price.variants,\n images: localisedItem.images,\n statusNew: false,\n statusSale: false,\n isDiscontinued: localisedItem.isDiscontinued,\n discountinued: false,\n altImage,\n };\n\n return (\n <ProductTileErrorBoundary\n itemID={item.productId}\n >\n <SearchProductTile\n item={productItem}\n resultPosition={resultPosition}\n currentPage={currentPage}\n productView={productView}\n noPriceLabel={noPriceLabel}\n contactDistributor={contactDistributor}\n keywords={keywords}\n />\n </ProductTileErrorBoundary>\n );\n }\n\n if (\n tileType === 'product-tile-list'\n // && item.prices\n ) {\n const productItem = {\n srcUrl: localisedItem.images[0].openUrl,\n url: localisedItem.openUrl || '#', // temp fix til SVS keeps openUrl in data\n title: localisedItem.title,\n productId: item.productId,\n // price: (item.price && item.price.length) ? `$${Math.min(...item.price)}` : '',\n items: localisedItem.price.variants,\n images: localisedItem.images,\n statusNew: false,\n statusSale: false,\n isDiscontinued: localisedItem.isDiscontinued,\n discountinued: false,\n altImage,\n };\n\n return (\n <ProductTileErrorBoundary\n itemID={item.productId}\n >\n <SearchProductTileList\n item={productItem}\n resultPosition={resultPosition}\n currentPage={currentPage}\n productView={productView}\n noPriceLabel={noPriceLabel}\n contactDistributor={contactDistributor}\n keywords={keywords}\n />\n </ProductTileErrorBoundary>\n\n );\n }\n } else if (tileType === 'content-tile' || tileType === 'content-tile-list') {\n const contentItem = {\n url: localisedItem.openUrl || '#', // temp fix til SVS keeps openUrl in data\n title: localisedItem.title,\n productId: item.productId,\n description: localisedItem.description,\n typeName: item.type,\n ext: localisedItem.extension,\n file: localisedItem.file,\n size: localisedItem.documentSize,\n version: item.version,\n revision: localisedItem.revision,\n date: localisedItem.lastModifiedDate,\n image: item.thumbnailUrl,\n };\n\n const resultPosition = ((currentPage + 1) * currentPageSize) - currentPageSize + itemPosition;\n\n if (tileType === 'content-tile') {\n return (\n <ContentTile\n item={contentItem}\n resultPosition={resultPosition}\n currentPage={currentPage}\n productView={productView}\n noPriceLabel={noPriceLabel}\n keywords={keywords}\n />\n );\n }\n\n return (\n <ContentTileList\n item={contentItem}\n resultPosition={resultPosition}\n currentPage={currentPage}\n productView={productView}\n noPriceLabel={noPriceLabel}\n keywords={keywords}\n />\n );\n }\n\n return null;\n};\n\nexport default SearchListingItem;\n","import React from 'react';\nimport { string, arrayOf, object, number } from 'prop-types';\nimport SearchListingItem from '../search-page-new/items/SearchListingItem.tsx';\n\nexport default function SearchTileContainer({\n items,\n columnClass,\n tileWrap,\n tileType,\n altImage,\n currentUrl,\n productView,\n noPriceLabel,\n contactDistributor,\n currentView,\n keywords,\n currentPage,\n currentPageSize,\n}) {\n return (\n <div className={`fl-tile-container ${columnClass}`}>\n <div className={`tile-container-row row ${tileWrap}`}>\n {items.map((item, index) => {\n item.srcUrl = currentUrl;\n return (\n <React.Fragment\n key={item.id ? item.id : `placeholder-${index}`}\n >\n <SearchListingItem\n item={item}\n itemPosition={index + 1}\n altImage={altImage}\n tileType={tileType}\n tileTypeSecondary={`content-tile${\n currentView === 'grid' ? '' : '-list'\n }`}\n productView={productView}\n noPriceLabel={noPriceLabel}\n contactDistributor={contactDistributor}\n keywords={keywords}\n currentPage={currentPage}\n currentPageSize={currentPageSize}\n />\n </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n}\n\nSearchTileContainer.propTypes = {\n items: arrayOf(object).isRequired,\n columnClass: string.isRequired,\n tileType: string.isRequired,\n tileWrap: string.isRequired,\n currentUrl: string.isRequired,\n altImage: string,\n productView: string,\n noPriceLabel: string,\n contactDistributor: string,\n currentView: string,\n keywords: string,\n currentPage: number,\n currentPageSize: number,\n};\n\nSearchTileContainer.defaultProps = {\n discoverPanel: {},\n altImage: '',\n productView: '',\n noPriceLabel: '',\n contactDistributor: '',\n};\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport React, { useCallback, useEffect, useState } from 'react';\nimport ReactPaginate from '../../../3-components/pagination';\n\ninterface ItemPaginationProps {\n currentPage: number;\n changePage: (pageNum: number) => void;\n totalProductsPages: number;\n totalContentPages: number;\n totalFaqPages: number;\n tabSelected: string;\n}\n\nconst ItemPagination: React.FC<ItemPaginationProps> = ({\n currentPage,\n changePage,\n totalProductsPages,\n totalContentPages,\n totalFaqPages,\n tabSelected,\n}) => {\n const [totalPages, setTotalPages] = useState(0);\n const clickPage = useCallback((value: { selected: number }) => {\n changePage(value.selected);\n }, [changePage]);\n\n useEffect(() => {\n if (tabSelected === 'products') {\n setTotalPages(totalProductsPages);\n }\n if (tabSelected === 'content') {\n setTotalPages(totalContentPages);\n }\n if (tabSelected === 'faq') {\n setTotalPages(totalFaqPages);\n }\n }, [tabSelected, totalContentPages, totalFaqPages, totalProductsPages]);\n\n if (!totalPages) {\n return null;\n }\n\n return (\n <div className=\"pagination-wrapper\">\n <ReactPaginate\n pageNum={totalPages}\n pageRangeDisplayed={5}\n marginPagesDisplayed={1}\n clickCallback={clickPage}\n forceSelected={currentPage}\n initialSelected={0}\n previousLabel=\"Previous\"\n prevIcon=\"caret-left\"\n nextLabel=\"Next\"\n nextIcon=\"caret-right\"\n containerClassName=\"c-pagination mobile-view\"\n pageClassName=\"page\"\n mobileBreakpoint={768}\n />\n </div>\n );\n};\n\nexport default ItemPagination;\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport React from 'react';\n\ninterface NotFoundProps {\n keywords: string;\n statusError: boolean;\n tabSelected: string;\n}\n\nconst NotFound: React.FC<NotFoundProps> = ({\n keywords,\n statusError,\n tabSelected,\n}) => {\n return (\n <div className=\"search-not-found\">\n {statusError ? (\n <p>\n Sorry, an error occurred while processing your request.\n Please refresh your browser.\n </p>\n ) : (\n <>\n <p>\n {tabSelected.charAt(0).toUpperCase() + tabSelected.slice(1)} has no results for{' '}\n <b>'{keywords}'</b>\n </p>\n <br />\n </>\n )}\n </div>\n );\n};\n\nexport default NotFound;\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport React from 'react';\n\ninterface PageSizeProps {\n sizes: number[];\n currentPageSize?: number;\n updatePageSize: (pageSize: string) => void;\n tabSelected: string;\n}\n\nconst PageSize: React.FC<PageSizeProps> = ({\n sizes,\n currentPageSize,\n updatePageSize,\n tabSelected,\n}: PageSizeProps) => {\n if (!sizes?.length) {\n return null;\n }\n\n const faqStyle = tabSelected === 'faq' ? { display: 'none' } : {};\n\n return (\n <div className=\"page-size\" style={faqStyle}>\n <div className=\"select-wrapper\">\n <div className=\"input-wrapper\">\n <select\n className=\"no-custom-select\"\n id=\"listing-pagesize\"\n value={currentPageSize}\n onChange={e => {\n updatePageSize(e.target.value);\n }}\n >\n {sizes.map((pagesize: number) => {\n return (\n <option key={pagesize} value={pagesize}>\n {pagesize} per page\n </option>\n );\n })}\n </select>\n </div>\n </div>\n </div>\n );\n};\n\nexport default PageSize;\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport React, { useCallback, useState } from 'react';\n\nexport interface SortItemProps {\n availableOrders: string[];\n displayName: string;\n id: string;\n selected: boolean;\n type: string;\n}\n\ninterface SortByProps {\n items: SortItemProps[];\n updateSort: (sort: SortItemProps) => void;\n currentSort: string;\n}\n\nconst SortBy: React.FC<SortByProps> = ({\n items,\n updateSort,\n currentSort,\n}) => {\n const [openedSortFilter, setOpenedSortFilter] = useState(false);\n const selectOption = useCallback((sort: SortItemProps): void => {\n updateSort(sort);\n setOpenedSortFilter(!openedSortFilter);\n }, [openedSortFilter, updateSort]);\n\n const toggleSortFilter = useCallback(() => {\n setOpenedSortFilter(!openedSortFilter);\n }, [openedSortFilter]);\n\n return (\n <div\n className={`sort-by asc ${\n openedSortFilter ? 'open' : ''\n }`}\n >\n <div className=\"select-wrapper\">\n <div className=\"input-wrapper\">\n <button\n type=\"button\"\n tabIndex={0}\n className=\"display-text\"\n onClick={toggleSortFilter}\n onKeyDown={event => {\n return (event.keyCode === 13 ? toggleSortFilter : false);\n }}\n >\n Sort: {currentSort}\n </button>\n\n <div className=\"options-dropdown\">\n {items.map(sort => {\n return (\n <span\n role=\"button\"\n tabIndex={0}\n key={`sort-${sort.displayName}`}\n onClick={() => {\n selectOption(sort);\n }}\n onKeyDown={event => {\n return event.keyCode === 13 ? selectOption(sort) : false;\n }}\n >\n {sort.displayName}\n </span>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport default SortBy;\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport React from 'react';\n\ninterface DiscontinuedProps {\n updateDiscontinued: () => void;\n tabSelected: string;\n currentDiscontinued: string;\n}\n\nconst Discontinued: React.FC<DiscontinuedProps> = ({\n updateDiscontinued,\n tabSelected,\n currentDiscontinued,\n}) => {\n const faqStyle = tabSelected !== 'products' ? { display: 'none' } : {};\n\n return (\n <div className=\"search-page-discontinued\" style={faqStyle}>\n <div className=\"input-wrapper\">\n <div className=\"checkbox-wrapper search-page-discontinued\">\n <input\n type=\"checkbox\"\n name=\"discontinued\"\n value=\"discontinued\"\n onChange={updateDiscontinued}\n checked={currentDiscontinued === 'true'}\n id=\"discontinued\"\n />\n <label htmlFor=\"discontinued\">Show Only Discontinued</label>\n </div>\n </div>\n </div>\n );\n};\n\nexport default Discontinued;\n","/* eslint-disable react/no-danger */\n// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { When } from 'react-if';\nimport classNames from 'classnames';\nimport Icon from '../../../3-components/icon';\nimport DOMPurify from 'dompurify';\nimport Loader from '../../../3-components/loader';\nimport SearchTileContainer from '../../tile-container/SearchTileContainer';\nimport ItemPagination from './ItemPagination';\nimport NotFound from './NotFound';\nimport PageSize from '../page-size';\nimport ToggleView from '../../../3-components/toggle-view';\nimport SortBy, { type SortItemProps } from '../sort-by';\nimport Discontinued from '../discontinued';\nimport type { ContentItem, ProductItem } from './SearchListingItem';\nimport type { ActiveFilter } from '../';\nimport { getLocalisedData } from '../utils/getLocalisedData';\n// import { testData } from './testData';\n\ninterface FaqItem {\n articleId: string;\n en_AU?: {\n title: string;\n answer: string;\n lastModifyDate: string;\n };\n en_NZ?: {\n title: string;\n answer: string;\n lastModifyDate: string;\n };\n}\n\ninterface SearchResultsProps {\n productsItems: ProductItem[];\n contentItems: ContentItem[];\n faqItems: FaqItem[];\n keywords: string;\n tabSelected: string;\n selectFilterOption: (\n index: number,\n filterId: string,\n optionValue: string,\n secondaryOptionValue?: string\n ) => void;\n retrievedData: boolean;\n apiReset: boolean;\n altImage: string;\n tileContainerColumnClass: string;\n tileContainerTilesWrap: string;\n productType: string;\n contentType: string;\n productsFacets: number[];\n contentFacets: number[];\n clearAllFilters: () => void;\n productsHits: number;\n contentHits: number;\n faqHits: number;\n updateView: () => void;\n currentUrl: string;\n productView: string;\n currentView: string;\n currentPage: number;\n changePage: (pageNum: number) => void;\n productsSortOptions: SortItemProps[];\n contentSortOptions: SortItemProps[];\n updateSort: (sort: SortItemProps) => void;\n currentSort: string;\n changePageSize: (pageSize: string) => void;\n currentPageSize: number;\n updateDiscontinued: () => void;\n currentDiscontinued: string;\n totalProductsPages: number;\n totalContentPages: number;\n totalFaqPages: number;\n activeFilters: ActiveFilter[];\n isSearchPage: boolean;\n statusError: boolean;\n contactDistributor: string;\n}\n\nconst SearchResults: React.FC<SearchResultsProps> = ({\n productsItems,\n contentItems,\n faqItems,\n keywords,\n tabSelected,\n selectFilterOption,\n retrievedData,\n apiReset,\n altImage,\n tileContainerColumnClass,\n tileContainerTilesWrap,\n productType,\n contentType,\n productsFacets,\n contentFacets,\n clearAllFilters,\n productsHits,\n contentHits,\n faqHits,\n updateView,\n currentUrl,\n productView,\n currentView,\n currentPage,\n changePage,\n productsSortOptions,\n contentSortOptions,\n updateSort,\n currentSort,\n changePageSize,\n currentPageSize,\n updateDiscontinued,\n currentDiscontinued,\n totalProductsPages,\n totalContentPages,\n totalFaqPages,\n activeFilters,\n isSearchPage,\n statusError,\n contactDistributor,\n}) => {\n const pageSizeOption = [24, 48, 60, 72];\n const [openIndex, setOpenIndex] = useState(-1);\n const [isFaqTab, setIsFaqTab] = useState(false);\n const currentFaqOpen = useCallback((index: number) => {\n if (openIndex === index) {\n setOpenIndex(-1);\n } else {\n setOpenIndex(index);\n }\n }, [openIndex]);\n\n useEffect(() => {\n if (tabSelected === 'faq') {\n setIsFaqTab(true);\n } else {\n setIsFaqTab(false);\n }\n }, [tabSelected]);\n\n return (\n <div className={classNames('search-results', { 'faq-open': isFaqTab })}>\n <div className=\"search-wrapper\">\n <div className=\"search-panel-container\">\n <div className=\"search-filter-panel\">\n <div className=\"active-filters\">\n {activeFilters.map(filter => {\n return (\n <button\n key={filter.secondaryOptionValue ?\n filter.secondaryOptionValue :\n filter.optionValue}\n type=\"button\"\n className=\"active-filter-btn\"\n onClick={() => {\n selectFilterOption(\n filter.index,\n filter.filterId,\n filter.optionValue,\n filter.secondaryOptionValue\n );\n }}\n >\n <span>{filter.secondaryOptionValue ?\n filter.secondaryOptionValue.toUpperCase() :\n filter.optionValue.toUpperCase()}\n </span>\n <Icon glyph=\"cross\" />\n </button>\n );\n })}\n <button\n type=\"button\"\n className={classNames('clear-all-filters', {\n 'is-shown':\n !productsFacets.every(\n item => {\n return item === 0;\n }\n )\n ||\n !contentFacets.every(item => {\n return item === 0;\n }),\n })}\n onClick={clearAllFilters}\n >\n <Icon glyph=\"bin\" />\n <span>CLEAR FILTERS</span>\n </button>\n </div>\n </div>\n <When condition={retrievedData && !apiReset}>\n {Boolean(\n (tabSelected === 'products')\n ) && (\n <div className=\"search-toggle-panel\">\n <Discontinued\n updateDiscontinued={updateDiscontinued}\n currentDiscontinued={currentDiscontinued}\n tabSelected={tabSelected}\n />\n <SortBy\n items={productsSortOptions}\n currentSort={currentSort}\n updateSort={updateSort}\n />\n <ToggleView\n currentView={currentView}\n updateView={updateView}\n tabSelected={tabSelected}\n isSearchPage={isSearchPage}\n />\n </div>\n )}\n {Boolean(\n tabSelected === 'content' && contentHits\n ) && (\n <div className=\"search-toggle-panel\">\n {/* <SortBy\n items={contentSortOptions}\n currentSort={currentSort}\n updateSort={updateSort}\n /> */}\n <ToggleView\n currentView={currentView}\n updateView={updateView}\n tabSelected={tabSelected}\n isSearchPage={isSearchPage}\n />\n </div>\n )}\n {Boolean(\n tabSelected === 'faq'\n ) && (\n <div className=\"search-toggle-panel\" />\n )}\n </When>\n </div>\n <div className=\"search-container\">\n <When condition={retrievedData && !apiReset}>\n {Boolean(statusError) && (\n <NotFound\n keywords={keywords}\n statusError={statusError}\n tabSelected={tabSelected}\n />\n )}\n {Boolean(\n !productsHits &&\n !statusError &&\n tabSelected === 'products'\n ) && (\n\n <NotFound\n keywords={keywords}\n statusError={statusError}\n tabSelected={tabSelected}\n />\n )}\n {Boolean(\n !contentHits &&\n !statusError &&\n tabSelected === 'content'\n ) && (\n <NotFound\n keywords={keywords}\n statusError={statusError}\n tabSelected={tabSelected}\n />\n )}\n {Boolean(\n !faqHits &&\n !statusError &&\n tabSelected === 'faq'\n ) && (\n <NotFound\n keywords={keywords}\n statusError={statusError}\n tabSelected={tabSelected}\n />\n )}\n </When>\n {Boolean(\n apiReset || !retrievedData\n ) && (\n <div className=\"search-loader\">\n <Loader className=\"loader\" />\n Searching...\n </div>\n )}\n\n <When condition={retrievedData && !apiReset}>\n {Boolean(\n retrievedData &&\n productsItems &&\n tabSelected === 'products'\n ) && (\n <SearchTileContainer\n items={productsItems}\n // items={testData}\n altImage={altImage}\n columnClass={tileContainerColumnClass}\n tileWrap={tileContainerTilesWrap}\n tileType={productType}\n currentUrl={currentUrl}\n productView={productView}\n contactDistributor={contactDistributor}\n currentView={currentView}\n keywords={keywords}\n currentPage={currentPage}\n currentPageSize={currentPageSize}\n />\n )}\n {Boolean(\n retrievedData &&\n contentItems &&\n tabSelected === 'content'\n ) && (\n <SearchTileContainer\n items={contentItems}\n altImage={altImage}\n columnClass={tileContainerColumnClass}\n tileWrap={tileContainerTilesWrap}\n tileType={contentType}\n currentUrl={currentUrl}\n productView={productView}\n keywords={keywords}\n currentPage={currentPage}\n currentPageSize={currentPageSize}\n />\n )}\n {Boolean(\n retrievedData &&\n faqItems &&\n tabSelected === 'faq'\n ) && (\n <div className=\"c-accordion\">\n {faqItems.map((item, index) => {\n const localisedItem = getLocalisedData(item);\n return (\n <div\n // eslint-disable-next-line no-underscore-dangle\n key={item.articleId}\n className={classNames('accordion-item', { 'is-open': openIndex === index })}\n >\n <div\n className=\"accordion-heading\"\n onClick={() => {\n currentFaqOpen(index);\n }}\n onKeyPress={() => {\n currentFaqOpen(index);\n }}\n role=\"button\"\n tabIndex={0}\n >\n <Icon glyph=\"chevron-down\" />\n <div>\n <h4\n className=\"accordion-title\"\n dangerouslySetInnerHTML={{\n __html: DOMPurify.sanitize(\n localisedItem.title\n ),\n }}\n />\n {item.articleId && (\n <p className=\"accordion-faq-id\">\n ID:{' '}\n {\n item.articleId\n }\n </p>\n )}\n {localisedItem.lastModifyDate && (\n <p className=\"accordion-modified-date\">\n Last Modified:{' '}\n {\n localisedItem.lastModifyDate\n }\n </p>\n )}\n </div>\n </div>\n <div\n className={classNames(\n 'accordion-content',\n { 'is-open': openIndex === index }\n )}\n >\n <p\n dangerouslySetInnerHTML={{\n __html: DOMPurify.sanitize(\n localisedItem.description.replace(/Â/g, ''),\n {\n ADD_TAGS: ['iframe'],\n ADD_ATTR: [\n 'allow',\n 'allowfullscreen',\n 'frameborder',\n 'scrolling'\n ],\n }\n ),\n }}\n />\n </div>\n </div>\n );\n })}\n </div>\n )}\n </When>\n </div>\n <div\n className={classNames('search-footer', { 'faq-open': isFaqTab })}\n >\n <When condition={retrievedData && !apiReset}>\n {Boolean(\n tabSelected === 'products' &&\n retrievedData &&\n productsHits\n ) && (\n <>\n <PageSize\n sizes={pageSizeOption}\n currentPageSize={currentPageSize}\n updatePageSize={changePageSize}\n tabSelected={tabSelected}\n />\n <ItemPagination\n tabSelected={tabSelected}\n totalProductsPages={totalProductsPages}\n totalContentPages={totalContentPages}\n totalFaqPages={totalFaqPages}\n currentPage={currentPage}\n changePage={changePage}\n />\n </>\n )}\n {Boolean(\n tabSelected === 'content' &&\n retrievedData &&\n contentHits\n ) && (\n <>\n <PageSize\n sizes={pageSizeOption}\n currentPageSize={currentPageSize}\n updatePageSize={changePageSize}\n tabSelected={tabSelected}\n />\n <ItemPagination\n tabSelected={tabSelected}\n totalProductsPages={totalProductsPages}\n totalContentPages={totalContentPages}\n totalFaqPages={totalFaqPages}\n currentPage={currentPage}\n changePage={changePage}\n />\n </>\n )}\n {Boolean(\n tabSelected === 'faq' &&\n retrievedData &&\n faqHits\n ) && (\n <ItemPagination\n tabSelected={tabSelected}\n totalProductsPages={totalProductsPages}\n totalContentPages={totalContentPages}\n totalFaqPages={totalFaqPages}\n currentPage={currentPage}\n changePage={changePage}\n />\n )}\n </When>\n </div>\n </div>\n </div>\n );\n};\n\nexport default SearchResults;\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport React from 'react';\n\ninterface SearchInfoPanelProps {\n totalHits: number;\n keywords: string;\n}\n\nconst SearchInfoPanel: React.FC<SearchInfoPanelProps> = ({ totalHits, keywords }: SearchInfoPanelProps) => {\n return (\n <div className=\"search-info-panel\">\n <div className=\"search-total-results\">\n Showing {totalHits} {totalHits !== 1 ? 'results' : `result`} for\n </div>\n <h1 className=\"search-topic\">'{keywords}'</h1>\n </div>\n );\n};\n\nexport default SearchInfoPanel;\n","/* eslint-disable @typescript-eslint/consistent-type-imports */\nimport React from 'react';\nimport classNames from 'classnames';\n\ninterface SearchTabsProps {\n tabSelected: string;\n productsHits: number;\n contentHits: number;\n faqHits: number;\n toggleTabSelected: (tabSelected: string) => void;\n statusError: boolean;\n}\n\nconst SearchTabs: React.FC<SearchTabsProps> = ({\n tabSelected,\n productsHits,\n contentHits,\n faqHits,\n toggleTabSelected,\n statusError,\n}) => {\n const tabOptions = [\n { tab: 'Products' },\n { tab: 'Content' },\n { tab: 'FAQ' }\n ];\n\n return (\n <div\n className={classNames('search-tabs', { 'is-error': statusError })}\n >\n {tabOptions.map(option => {\n if (option.tab === 'Products') {\n return (\n <button\n key={`${option.tab}-key`}\n type=\"button\"\n id={`${option.tab.toLowerCase()}-tab`}\n className={classNames('tab-option', {\n 'is-selected':\n tabSelected === option.tab.toLowerCase(),\n })}\n onClick={() => {\n toggleTabSelected('products');\n }}\n >\n {option.tab} ({productsHits})\n </button>\n );\n }\n if (option.tab === 'Content') {\n return (\n <button\n key={`${option.tab}-key`}\n type=\"button\"\n id={`${option.tab.toLowerCase()}-tab`}\n className={classNames('tab-option', {\n 'is-selected':\n tabSelected === option.tab.toLowerCase(),\n })}\n onClick={() => {\n toggleTabSelected('content');\n }}\n >\n {option.tab} ({contentHits})\n </button>\n );\n }\n return (\n <button\n key={`${option.tab}-key`}\n type=\"button\"\n id={`${option.tab.toLowerCase()}-tab`}\n className={classNames('tab-option', {\n 'is-selected':\n tabSelected === option.tab.toLowerCase(),\n })}\n onClick={() => {\n toggleTabSelected('faq');\n }}\n >\n {option.tab} ({faqHits})\n </button>\n );\n })}\n </div>\n );\n};\n\nexport default SearchTabs;\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport React from 'react';\nimport classNames from 'classnames';\nimport Icon from '../../../3-components/icon';\n\nexport interface FiltersChildrenProps {\n id: string;\n displayName: string;\n selected: boolean;\n count: number;\n value: string;\n children: FiltersChildrenProps[];\n}\n\nexport interface FiltersProps {\n id: string;\n displayName: string;\n selected: boolean;\n count: number;\n value: string;\n children: FiltersChildrenProps[];\n}\n\ninterface SearchFiltersProps {\n tabOpened: number;\n openFilterTab: (filterTab: number) => void;\n tabSelected: string;\n productsFacets: number[];\n contentFacets: number[];\n selectFilterOptionParent: (e: React.MouseEvent<HTMLButtonElement>) => void;\n selectFilterOption: (\n index: number,\n filterId: string,\n optionValue: string,\n secondaryOptionValue?: string\n ) => void;\n toPrevOptions: () => void;\n productsFilters: FiltersProps[];\n contentFilters: FiltersProps[];\n parentSelected: string;\n}\n\nconst SearchFilters: React.FC<SearchFiltersProps> = ({\n tabOpened,\n openFilterTab,\n tabSelected,\n productsFacets,\n contentFacets,\n selectFilterOptionParent,\n selectFilterOption,\n toPrevOptions,\n productsFilters,\n contentFilters,\n parentSelected,\n}) => {\n return (\n <>\n {Boolean(tabSelected === 'products') && (\n <>\n {productsFilters.map((filter, index) => {\n if (filter.displayName === 'isDiscontinued') {\n return null;\n }\n return (\n <div\n key={`products-filter-${filter.displayName.toLowerCase()}`}\n className=\"products-filter\"\n id={`products-filter-${filter.displayName.toLowerCase()}`}\n >\n <button\n id={`tab-filter-${index}`}\n type=\"button\"\n className=\"products-filter-btn\"\n disabled={\n (!filter.children ||\n filter.children.length === 0\n || filter.count === 0)\n }\n onClick={() => {\n openFilterTab(index);\n }}\n aria-label={`filter group ${filter.displayName}`}\n >\n <span>{filter.displayName}</span>\n <div\n className={classNames(\n 'options-selected',\n { 'has-value': productsFacets[index] }\n )}\n >\n <Icon glyph=\"tick\" />\n </div>\n <Icon glyph=\"chevron-down\" />\n </button>\n <div\n className={classNames(\n 'options-container',\n { 'is-open': tabOpened === index },\n { 'parent-selected': parentSelected }\n )}\n >\n <div\n id={`filter-options-${filter.displayName.toLowerCase()}`}\n className={classNames(\n 'filter-options',\n { 'parent-selected': parentSelected }\n )}\n >\n <div className=\"options-category\">\n {filter.displayName} Options\n </div>\n <div className=\"options\">\n {productsFilters[index].children?.map(option => {\n if (option.count === 0) {\n return null;\n }\n return (\n <div\n key={`products-${option.displayName}`}\n >\n {option.children.length ? (\n <button\n id={\n option.displayName\n }\n type=\"button\"\n className={classNames(\n 'filter-option-parent',\n { 'parent-selected': parentSelected === option.displayName },\n {\n 'child-selected':\n option.children.filter(\n item => {\n return item.selected;\n }\n )\n .length,\n }\n )}\n onClick={e => {\n selectFilterOptionParent(e);\n }}\n aria-label={`filter options ${option.displayName}`}\n >\n {\n option.displayName\n }{' '}\n ({option.children\n .map(\n item => {\n return item.count;\n }\n )\n .reduce(\n (\n a,\n b\n ) => {\n return a + b;\n }\n )}\n )\n <span className=\"has-selection\">\n <Icon glyph=\"tick\" />\n </span>\n <Icon glyph=\"chevron-right\" />\n </button>\n ) : (\n <button\n id={\n option.displayName\n }\n type=\"button\"\n className={classNames(\n 'filter-option',\n {\n 'is-selected':\n option.selected,\n }\n )}\n onClick={() => {\n selectFilterOption(\n index,\n filter.id,\n option.value\n );\n }}\n aria-label={`filter by ${option.displayName}`}\n >\n {\n option.displayName\n }{' '}\n ({option.count}\n )\n <Icon glyph=\"tick\" />\n </button>\n )}\n <div\n id={`${option.displayName}-options`}\n className={classNames(\n filter.displayName === 'Colour'\n ? 'secondary-colour-filter-options'\n : 'secondary-filter-options',\n { show: parentSelected === option.displayName }\n )}\n >\n <button\n type=\"button\"\n className=\"to-prev-options\"\n onClick={toPrevOptions}\n aria-label={`Go back to filter options`}\n >\n <Icon glyph=\"arrow-left-2\" />\n Back\n </button>\n {option.children?.map(\n secondaryOption => {\n if (\n filter.displayName ===\n 'Colour'\n ) {\n return (\n <div\n key={`colour-${secondaryOption.displayName}`}\n role=\"button\"\n tabIndex={\n index\n }\n id={`${secondaryOption.displayName.toLowerCase()}`}\n className={classNames(\n 'filter-colour-option',\n {\n 'is-selected':\n secondaryOption.selected, // won't work anymore with new SVS data\n }\n )}\n onClick={() => {\n selectFilterOption(\n index,\n filter.id,\n option.value,\n secondaryOption.value\n );\n }}\n onKeyPress={() => {\n selectFilterOption(\n index,\n filter.id,\n option.value,\n secondaryOption.value\n );\n }}\n aria-label={`filter by ${option.displayName}`}\n >\n <div className=\"colour-details\">\n <div\n className=\"colour-circle\"\n style={{\n backgroundColor: // will be fixed once below change occurs\n (\n secondaryOption.children.length && // temp fix til BED updates null colour to have a value\n secondaryOption\n .children[0]\n .displayName),\n }}\n >\n <Icon glyph=\"tick\" />\n </div>\n <span>\n {\n secondaryOption.displayName\n }\n </span>\n <span>\n {\n secondaryOption.count\n }\n </span>\n </div>\n </div>\n );\n }\n return (\n <button\n key={`products-${secondaryOption.displayName}`}\n id={\n secondaryOption.displayName\n }\n type=\"button\"\n className={classNames(\n 'filter-option',\n {\n 'is-selected':\n secondaryOption.selected,\n }\n )}\n onClick={() => {\n selectFilterOption(\n index,\n filter.id,\n option.value,\n secondaryOption.value\n );\n }}\n aria-label={`filter by ${option.displayName}`}\n >\n {secondaryOption\n .displayName\n .length >\n 35\n ? `${secondaryOption.displayName.substring(\n 0,\n 35\n )}...`\n : secondaryOption.displayName}{' '}\n (\n {\n secondaryOption.count\n }\n )\n <Icon glyph=\"tick\" />\n </button>\n );\n }\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n );\n })}\n </>\n )}\n {Boolean(tabSelected === 'content') && (\n <>\n {contentFilters.map((filter, index) => {\n return (\n <div\n key={`content-filter-${filter.displayName.toLowerCase()}`}\n className=\"content-filter\"\n id={`content-filter-${filter.displayName.toLowerCase()}`}\n >\n <button\n id={`tab-filter-${index}`}\n type=\"button\"\n className=\"content-filter-btn\"\n disabled={\n (!filter.children ||\n filter.children.length === 0\n || filter.count === 0)\n }\n onClick={() => {\n openFilterTab(index);\n }}\n aria-label={`filter group ${filter.displayName}`}\n >\n <span>{filter.displayName}</span>\n <div\n className={classNames(\n 'options-selected',\n { 'has-value': contentFacets[index] }\n )}\n >\n <Icon glyph=\"tick\" />\n </div>\n <Icon glyph=\"chevron-down\" />\n </button>\n <div\n className={classNames('options-container',\n { 'is-open': tabOpened === index }\n )}\n\n >\n <div\n id={`filter-options-${filter.displayName.toLowerCase()}`}\n className={classNames(\n 'filter-options',\n { 'is-open': tabOpened === index }\n )}\n >\n <div className=\"options-category\">\n {filter.displayName} Options\n </div>\n {contentFilters[index].children.map(\n option => {\n if (option.count === 0) {\n return null;\n }\n return (\n <div\n key={`content-${option.displayName}`}\n >\n <button\n type=\"button\"\n className={classNames(\n 'filter-option',\n {\n 'is-selected':\n option.selected,\n }\n )}\n onClick={() => {\n selectFilterOption(\n index,\n filter.displayName,\n option.value\n );\n }}\n aria-label={`filter by ${option.displayName}`}\n >\n {option.displayName} (\n {option.count})\n <Icon glyph=\"tick\" />\n </button>\n </div>\n );\n }\n )}\n </div>\n </div>\n </div>\n );\n })}\n </>\n )}\n </>\n );\n};\n\nexport default SearchFilters;\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\nimport Icon from '../../../3-components/icon';\nimport SearchFilters, { type FiltersProps } from './Filters';\n\nexport interface SearchFilterBarProps {\n tabOpened: number;\n openFilterTab: (filterTab: number) => void;\n toggleSidePanel: () => void;\n tabSelected: string;\n productsFacets: number[];\n contentFacets: number[];\n selectFilterOptionParent: (e: React.MouseEvent<HTMLButtonElement>) => void;\n selectFilterOption: (\n index: number,\n filterId: string,\n optionValue: string,\n secondaryOptionValue?: string\n ) => void;\n toPrevOptions: () => void;\n productsFilters: FiltersProps[];\n contentFilters: FiltersProps[];\n parentSelected: string;\n initialApiCalled: boolean;\n showAllFiltersBtn: boolean;\n}\n\nconst SearchFilterBar: React.FC<SearchFilterBarProps> = ({\n tabOpened,\n openFilterTab,\n toggleSidePanel,\n tabSelected,\n productsFacets,\n contentFacets,\n selectFilterOptionParent,\n selectFilterOption,\n toPrevOptions,\n productsFilters,\n contentFilters,\n parentSelected,\n initialApiCalled,\n showAllFiltersBtn,\n}) => {\n const [isFaqTab, setIsFaqTab] = useState(false);\n\n useEffect(() => {\n if (tabSelected === 'faq') {\n setIsFaqTab(true);\n } else {\n setIsFaqTab(false);\n }\n }, [tabSelected]);\n\n const checkEmptyFilters = (filter: { children: string | unknown[]; id: string }): boolean => {\n if (filter.id !== 'isdiscontinued') {\n return (!filter.children ||\n filter.children.length === 0);\n }\n return true;\n };\n\n return (\n <div\n className={classNames('search-filter-bar', { 'faq-open': isFaqTab })}\n >\n <div\n className={classNames('filter-panel', { 'api-not-finalised': !initialApiCalled, 'show-all-filters-btn': showAllFiltersBtn })}\n id=\"filter-panel\"\n >\n <SearchFilters\n tabOpened={tabOpened}\n openFilterTab={openFilterTab}\n tabSelected={tabSelected}\n productsFacets={productsFacets}\n contentFacets={contentFacets}\n selectFilterOptionParent={selectFilterOptionParent}\n selectFilterOption={selectFilterOption}\n toPrevOptions={toPrevOptions}\n productsFilters={productsFilters}\n contentFilters={contentFilters}\n parentSelected={parentSelected}\n />\n <button\n type=\"button\"\n className={classNames('open-all-filters', { 'api-not-finalised': !initialApiCalled })}\n onClick={toggleSidePanel}\n disabled={tabSelected === 'products' && productsFilters.every(checkEmptyFilters)}\n >\n <Icon glyph=\"all-filter\" />\n <span>All filters</span>\n </button>\n </div>\n </div>\n );\n};\n\nexport default SearchFilterBar;\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport React from 'react';\nimport classNames from 'classnames';\nimport Icon from '../../../3-components/icon';\nimport SearchFilters, { type FiltersProps } from './Filters';\nimport type { ActiveFilter } from '../';\n\n\ninterface SearchSidePanelProps {\n toggleSidePanel: () => void;\n isVisible: boolean;\n clearAllFilters: () => void;\n tabOpened: number;\n openFilterTab: (filterTab: number) => void;\n tabSelected: string;\n productsFacets: number[];\n contentFacets: number[];\n productsHits: number;\n contentHits: number;\n selectFilterOptionParent: (e: React.MouseEvent<HTMLButtonElement>) => void;\n selectFilterOption: (\n index: number,\n filterId: string,\n optionValue: string,\n secondaryOptionValue?: string\n ) => void;\n toPrevOptions: () => void;\n productsFilters: FiltersProps[];\n activeFilters: ActiveFilter[];\n contentFilters: FiltersProps[];\n parentSelected: string;\n}\n\nconst SearchSidePanel: React.FC<SearchSidePanelProps> = ({\n toggleSidePanel,\n isVisible,\n clearAllFilters,\n tabOpened,\n openFilterTab,\n tabSelected,\n productsFacets,\n contentFacets,\n productsHits,\n contentHits,\n selectFilterOptionParent,\n selectFilterOption,\n toPrevOptions,\n productsFilters,\n activeFilters,\n contentFilters,\n parentSelected,\n}) => {\n return (\n <div className={classNames('search-side-panel', { visible: isVisible })}>\n <div className=\"side-panel-header\">\n <div\n role=\"button\"\n className=\"close\"\n onClick={toggleSidePanel}\n onKeyDown={toggleSidePanel}\n tabIndex={0}\n >\n <Icon glyph=\"cross\" />\n </div>\n <h2>All filters</h2>\n </div>\n <div className=\"side-panel-container\">\n <SearchFilters\n tabOpened={tabOpened}\n openFilterTab={openFilterTab}\n tabSelected={tabSelected}\n productsFacets={productsFacets}\n contentFacets={contentFacets}\n selectFilterOption={selectFilterOption}\n selectFilterOptionParent={selectFilterOptionParent}\n toPrevOptions={toPrevOptions}\n productsFilters={productsFilters}\n contentFilters={contentFilters}\n parentSelected={parentSelected}\n />\n </div>\n <div className=\"side-panel-footer\">\n <button\n type=\"button\"\n className=\"clear-all-filters\"\n onClick={clearAllFilters}\n disabled={!activeFilters.length}\n >\n <span>Clear filters</span>\n </button>\n <button\n type=\"button\"\n onClick={toggleSidePanel}\n className=\"total-filters\"\n >\n <span>Show {tabSelected === 'products' ? productsHits : contentHits}</span>\n </button>\n </div>\n </div>\n );\n};\n\nexport default SearchSidePanel;\n","// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport React, { useState, useEffect, useCallback } from 'react';\nimport axios from 'axios';\nimport axiosRetry from 'axios-retry';\nimport SearchResults from './items/index';\nimport SearchInfoPanel from './info-panel/SearchInfoPanel';\nimport SearchTabs from './tabs/SearchTabs';\nimport type { SortItemProps } from './sort-by';\nimport SearchFilterBar from './filter/SearchFilterBar';\nimport SearchSidePanel from './filter/SearchSidePanel';\nimport type { FiltersProps } from './filter/Filters';\nimport { currentDomain } from '../../js/utils/apiKeys';\n\ninterface ApiDataProps {\n searcher: string;\n term: string;\n country: string;\n language: string;\n pagination?: {\n limit: number;\n offset: number;\n };\n sort?: {\n id: string;\n order: string;\n };\n filters?: [\n {\n id: string;\n children: [{\n value: string;\n children?: [{\n value?: string;\n }];\n }];\n }\n ];\n}\n\nexport interface ActiveFilter {\n index: number;\n filterId: string;\n optionValue: string;\n secondaryOptionValue?: string;\n}\n\nexport interface SearchPageProps {\n altImage: string;\n productView: string;\n isSearchPage: boolean;\n contactDistributor: string;\n}\n\nconst SearchPage: React.FC<SearchPageProps> = ({\n altImage,\n productView,\n isSearchPage,\n contactDistributor,\n}: SearchPageProps) => {\n const urlParams = new URLSearchParams(window.location.search);\n const keywords = urlParams.get('q') || 'search';\n const [currentDiscontinued, setCurrentDiscontinued] = useState('false');\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const defaultProductsSearch: ApiDataProps = {\n searcher: `${currentDomain === 'pdl' ? 'pdl/products' : 'clipsal/products'}`,\n term: keywords,\n country: `${currentDomain === 'pdl' ? 'NZ' : 'AU'}`,\n language: 'en',\n filters: [\n {\n id: 'isdiscontinued',\n children: [{ value: currentDiscontinued }],\n }\n ],\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const defaultContentSearch: ApiDataProps = {\n searcher: `${currentDomain === 'pdl' ? 'pdl/content' : 'clipsal/content'}`,\n term: keywords,\n country: `${currentDomain === 'pdl' ? 'NZ' : 'AU'}`,\n language: 'en',\n };\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const defaultFaqSearch: ApiDataProps = {\n searcher: `${currentDomain === 'pdl' ? 'pdl/faq' : 'clipsal/faq'}`,\n term: keywords,\n country: `${currentDomain === 'pdl' ? 'NZ' : 'AU'}`,\n language: 'en',\n };\n\n // products states\n const [productsItems, setProductsItems] = useState([]);\n const [defaultProductsItems, setDefaultProductsItems] = useState([]);\n const [productsHits, setProductsHits] = useState(0);\n const [defaultProductsHits, setDefaultProductsHits] = useState(0);\n const [productsFilters, setProductsFilters] = useState<FiltersProps[]>([]);\n const [productsFacets, setProductsFacets] = useState<number[]>([]);\n const [productsSortOptions, setProductsSortOptions] = useState([]);\n\n // content states\n const [contentItems, setContentItems] = useState([]);\n const [defaultContentItems, setDefaultContentItems] = useState([]);\n const [contentHits, setContentHits] = useState(0);\n const [defaultContentHits, setDefaultContentHits] = useState(0);\n const [contentFilters, setContentFilters] = useState<FiltersProps[]>([]);\n const [contentFacets, setContentFacets] = useState<number[]>([]);\n const [contentSortOptions, setContentSortOptions] = useState([]);\n\n // faq states\n const [faqItems, setFaqItems] = useState([]);\n const [faqHits, setFaqHits] = useState(0);\n const [defaultFaqItems, setDefaultFaqItems] = useState([]);\n const [defaultFaqHits, setDefaultFaqHits] = useState(0);\n\n // other states\n const [totalHits, setTotalHits] = useState(0);\n const [defaultTotalHits, setDefaultTotalHits] = useState(0);\n const [tabSelected, setTabSelected] = useState('products');\n const [tabOpened, setTabOpened] = useState(100);\n const [showAllFiltersBtn, setShowAllFiltersBtn] = useState(window.innerWidth <= 768);\n const [parentSelected, setParentSelected] = useState('');\n const [isSideFilter, setIsSideFilter] = useState(false);\n const [currentPageSize, setCurrentPageSize] = useState(24);\n const [currentPage, setCurrentPage] = useState(0);\n const [currentView, setCurrentView] = useState('grid');\n const [currentSort, setCurrentSort] = useState('Relevance');\n const [activeFilters, setActiveFilters] = useState<ActiveFilter[]>([]);\n const [apiData, setApiData] = useState<ApiDataProps>(defaultProductsSearch);\n const [statusError, setStatusError] = useState(false);\n const [apiReset, setApiReset] = useState(false);\n const [initialApiCalled, setInitialApiCalled] = useState(false);\n const [retrievedData, setRetrievedData] = useState(false);\n\n const logStatusError = useCallback(() => {\n setStatusError(true);\n setInitialApiCalled(true);\n }, []);\n\n const updateDiscontinued = useCallback(() => {\n const discontinuedIndex = apiData!.filters!.findIndex(obj => {\n return obj.id === 'isdiscontinued';\n });\n apiData!.filters![discontinuedIndex] = {\n id: 'isdiscontinued',\n children: [{ value: currentDiscontinued === 'true' ? 'false' : 'true' }],\n };\n setRetrievedData(false);\n setApiReset(true);\n setCurrentDiscontinued(currentDiscontinued === 'true' ? 'false' : 'true');\n }, [apiData, currentDiscontinued]);\n\n // Initial call for all 3 tabs\n const apiCall = useCallback(() => {\n axiosRetry(axios, { retries: 3 });\n\n setInitialApiCalled(true);\n\n const requestProducts = axios.post('/webapi/v1/search', defaultProductsSearch, {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n });\n const requestContent = axios.post('/webapi/v1/search', defaultContentSearch, {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n });\n const requestFaqs = axios.post('/webapi/v1/search', defaultFaqSearch, {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n });\n\n const requestDiscontinuedProductsCheck = axios.post('/webapi/v1/search', {\n searcher: `${currentDomain === 'pdl' ? 'pdl/products' : 'clipsal/products'}`,\n term: keywords,\n country: `${currentDomain === 'pdl' ? 'NZ' : 'AU'}`,\n language: 'en',\n filters: [\n {\n id: 'isdiscontinued',\n children: [{ value: 'true' }],\n }\n ],\n }, {\n headers: {\n 'Content-Type': 'application/json',\n Accept: '*/*',\n },\n });\n\n axios\n .all([requestProducts, requestContent, requestFaqs, requestDiscontinuedProductsCheck])\n .then(\n axios.spread((...responses) => {\n const getProducts = responses[0];\n const getContent = responses[1];\n const getFaqs = responses[2];\n const getDiscontinuedProductsCheck = responses[3];\n\n setProductsHits(getProducts.data.stats.totalHits);\n setDefaultProductsHits(getProducts.data.stats.totalHits);\n setProductsItems(getProducts.data.documents);\n setDefaultProductsItems(getProducts.data.documents);\n setProductsFilters(getProducts.data.facetsOptions.facets);\n setProductsFacets(new Array(\n getProducts.data.facetsOptions.facets.length\n ).fill(0));\n setProductsSortOptions(getProducts.data.sortOptions);\n setContentHits(getContent.data.stats.totalHits);\n setDefaultContentHits(getContent.data.stats.totalHits);\n setContentItems(getContent.data.documents);\n setDefaultContentItems(getContent.data.documents);\n setContentFilters(getContent.data.facetsOptions.facets[0].children); // structure is different to products\n setContentFacets(new Array(\n getContent.data.facetsOptions.facets[0].children.length\n ).fill(0)); // structure is different to products\n setContentSortOptions(getContent.data.sortOptions);\n setFaqHits(getFaqs.data.stats.totalHits);\n setFaqItems(getFaqs.data.documents);\n setDefaultFaqHits(getFaqs.data.stats.totalHits);\n setDefaultFaqItems(getFaqs.data.documents);\n setTotalHits(getProducts.data.stats.totalHits\n + getContent.data.stats.totalHits\n + getFaqs.data.stats.totalHits\n );\n setDefaultTotalHits(getProducts.data.stats.totalHits\n + getContent.data.stats.totalHits\n + getFaqs.data.stats.totalHits\n );\n\n\n if (!getProducts.data.stats.totalHits) {\n // found no products\n if (!getDiscontinuedProductsCheck.data.stats.totalHits) {\n // found no discontinued products auto redirect user\n if (getContent.data.stats.totalHits) {\n setTabSelected('content');\n setRetrievedData(true);\n setApiData(defaultContentSearch);\n } else if (getFaqs.data.stats.totalHits) {\n setTabSelected('faq');\n setRetrievedData(true);\n setApiData(defaultFaqSearch);\n } else {\n setRetrievedData(true);\n }\n } else {\n setRetrievedData(true);\n updateDiscontinued();\n }\n } else {\n setRetrievedData(true);\n }\n })\n )\n .catch(error => {\n console.error(error);\n if (\n error.response.status === 500 ||\n error.response.status === 503 ||\n error.response.status === 504\n ) {\n logStatusError();\n }\n });\n }, [defaultContentSearch, defaultFaqSearch, defaultProductsSearch, keywords, logStatusError, updateDiscontinued]);\n\n const apiFilter = useCallback((data: unknown) => {\n axiosRetry(axios, { retries: 3 });\n\n axios\n .post('/webapi/v1/search', data)\n .then(response => {\n const apiResponse = response;\n setApiReset(false);\n if (tabSelected === 'products') {\n setProductsHits(apiResponse.data.stats.totalHits);\n setProductsItems(apiResponse.data.documents);\n setProductsFilters(apiResponse.data.facetsOptions.facets);\n setProductsSortOptions(apiResponse.data.sortOptions);\n setTotalHits(apiResponse.data.stats.totalHits\n + contentHits\n + faqHits\n );\n } else if (tabSelected === 'content') {\n setContentHits(apiResponse.data.stats.totalHits);\n setContentItems(apiResponse.data.documents);\n setContentFilters(apiResponse.data.facetsOptions.facets[0].children); // structure is different to products\n setContentSortOptions(apiResponse.data.sortOptions);\n setTotalHits(apiResponse.data.stats.totalHits\n + productsHits\n + faqHits\n );\n } else {\n setFaqHits(apiResponse.data.stats.totalHits);\n setFaqItems(apiResponse.data.documents);\n setTotalHits(apiResponse.data.stats.totalHits\n + productsHits\n + contentHits\n );\n }\n\n setRetrievedData(true);\n })\n .catch(error => {\n console.error(error);\n if (\n error.response.status === 500 ||\n error.response.status === 503 ||\n error.response.status === 504 ||\n error.response.status === 400 // temp to test, needs to be fixed by SVS\n ) {\n logStatusError();\n }\n setApiReset(false);\n setRetrievedData(true);\n });\n }, [contentHits, faqHits, logStatusError, productsHits, tabSelected]);\n\n const resetDropdowns = useCallback(() => {\n const productsFacetsSelected = document.getElementsByClassName(\n 'products-filter-btn tab-selected'\n );\n for (let i = 0; i < productsFacetsSelected.length;) {\n productsFacetsSelected[i].classList.remove('tab-selected');\n }\n const contentFacetsSelected = document.getElementsByClassName(\n 'content-filter-btn tab-selected'\n );\n for (let i = 0; i < contentFacetsSelected.length;) {\n contentFacetsSelected[i].classList.remove('tab-selected');\n }\n setParentSelected('');\n }, []);\n\n const resetDropdownsSelections = useCallback(() => {\n const dropdowns = document.querySelectorAll(\n '.filter-options.parent-selected'\n );\n for (const dropdown of dropdowns) {\n dropdown.classList.remove('parent-selected');\n // removes shown secondary option to prevent multiple overlapping\n const shownDropdown = dropdown.querySelectorAll('.show');\n if (shownDropdown.length > 0) {\n shownDropdown[0].classList.remove('show');\n }\n }\n\n setParentSelected('');\n }, []);\n\n const clearParentSelection = useCallback(() => {\n document\n .getElementById(parentSelected)!\n .classList.remove('parent-selected');\n document\n .getElementById(`${parentSelected}-options`)!\n .classList.remove('show');\n setParentSelected('');\n }, [parentSelected]);\n\n const clearAllFilters = useCallback(() => {\n if (tabSelected === 'products') {\n setApiData(defaultProductsSearch);\n setProductsFacets(new Array(\n productsFacets.length\n ).fill(0));\n } else if (tabSelected === 'content') {\n setApiData(defaultContentSearch);\n setContentFacets(new Array(\n contentFacets.length\n ).fill(0));\n } else {\n setApiData(defaultFaqSearch);\n }\n setActiveFilters([]);\n setApiReset(true);\n }, [tabSelected, defaultProductsSearch, productsFacets.length, defaultContentSearch, contentFacets.length, defaultFaqSearch]);\n\n const openFilterTab = useCallback((index: number) => {\n if (tabOpened === index) {\n setTabOpened(100);\n resetDropdowns();\n } else {\n setTabOpened(index); // this allows for closing option upon reclick\n resetDropdowns();\n document\n .getElementById(`tab-filter-${index}`)!\n .classList.add('tab-selected');\n if (index <= 2) {\n setTabOpened(index);\n } else if (index >= 3) {\n setTabOpened(index);\n }\n }\n resetDropdownsSelections();\n if (parentSelected !== '') {\n clearParentSelection();\n }\n }, [clearParentSelection, parentSelected, resetDropdowns, resetDropdownsSelections, tabOpened]);\n\n const toggleTabSelected = useCallback((tab: string) => {\n clearAllFilters();\n setCurrentPage(0);\n setCurrentPageSize(24);\n setCurrentSort('Relevance');\n setProductsItems(defaultProductsItems);\n setProductsHits(defaultProductsHits);\n setContentItems(defaultContentItems);\n setContentHits(defaultContentHits);\n setFaqItems(defaultFaqItems);\n setFaqHits(defaultFaqHits);\n setCurrentDiscontinued('false');\n setTotalHits(defaultTotalHits);\n setTabSelected(tab);\n if (tab === 'products') {\n setApiData(defaultProductsSearch);\n } else if (tab === 'content') {\n setApiData(defaultContentSearch);\n } else if (tab === 'faq') {\n setApiData(defaultFaqSearch);\n }\n }, [clearAllFilters, defaultContentHits, defaultContentItems, defaultContentSearch, defaultFaqHits, defaultFaqItems, defaultFaqSearch, defaultProductsHits, defaultProductsItems, defaultProductsSearch, defaultTotalHits]);\n\n const changePage = useCallback((pageNum: number) => {\n setCurrentPage(pageNum);\n setApiData({\n ...apiData!, pagination: {\n limit: currentPageSize,\n offset: currentPageSize * pageNum,\n },\n });\n setApiReset(true);\n }, [apiData, currentPageSize]);\n\n const changePageSize = useCallback((pageSize: string) => {\n setCurrentPageSize(parseInt(pageSize, 10));\n setCurrentPage(0);\n setApiData({\n ...apiData!, pagination: {\n limit: parseInt(pageSize, 10),\n offset: 0,\n },\n });\n setApiReset(true);\n }, [apiData]);\n\n const updateView = useCallback(() => {\n setCurrentView(currentView === 'grid' ? 'list' : 'grid');\n }, [currentView]);\n\n const updateSort = useCallback((sort: SortItemProps) => {\n setCurrentSort(sort.displayName);\n setApiData({ ...apiData!, sort: { id: sort.id, order: sort.availableOrders[0] } });\n setApiReset(true);\n }, [apiData]);\n\n const dropdownScrollReset = useCallback(() => {\n const optionsContainer =\n document.getElementsByClassName('options-container') as HTMLCollectionOf<HTMLElement>;\n for (const option of optionsContainer) {\n // removes scroll so goes to top for secondary options\n option.scrollTop = 0;\n }\n }, []);\n\n const toggleSidePanel = useCallback(() => {\n setIsSideFilter(prev => {\n return !prev;\n });\n }, []);\n\n const selectFilterOption = useCallback((index: number, filterId: string, optionValue: string, secondaryOptionValue: string | undefined) => {\n // add option selected to active filters object for apiFilter\n let filtersIndex = 0;\n let optionsIndex = 0;\n const newApiData = apiData;\n // check if nested filter\n if (secondaryOptionValue) {\n // check if filter id already exists\n if (newApiData!.filters!.find(obj => {\n return obj.id === filterId;\n })) {\n filtersIndex = newApiData!.filters!.findIndex(obj => {\n return obj.id === filterId;\n });\n // check if optionValue matches an existing one\n if (newApiData!.filters![filtersIndex].children.find((obj: { value: string }) => {\n return obj.value === optionValue;\n })) {\n optionsIndex = newApiData!.filters![filtersIndex].children.findIndex(obj => {\n return obj.value === optionValue;\n });\n // check if filter exists in newApiData already\n const isExistingFilter = newApiData!.filters![filtersIndex].children[optionsIndex].children!.find(existingOption => {\n return existingOption.value === secondaryOptionValue;\n });\n\n if (isExistingFilter) {\n // remove secondaryOption from existing option\n newApiData!.filters![filtersIndex].children[optionsIndex].children!.splice(newApiData!.filters![filtersIndex].children[0].children!.findIndex(({ value }) => {\n return value === secondaryOptionValue;\n }), 1);\n // check if need to remove part of structure\n if (!newApiData!.filters![filtersIndex].children[optionsIndex].children!.length) {\n newApiData!.filters![filtersIndex].children.splice(optionsIndex, 1);\n // next check if need to move whole structure\n if (!newApiData!.filters![filtersIndex].children.length) {\n newApiData!.filters!.splice(filtersIndex, 1);\n }\n }\n const newActiveFilters = activeFilters.filter(activeFilter => {\n return activeFilter.secondaryOptionValue !== secondaryOptionValue;\n });\n setActiveFilters(newActiveFilters);\n } else {\n // add secondaryOption from existing option\n newApiData!.filters![filtersIndex].children[optionsIndex].children!.push({ value: secondaryOptionValue });\n activeFilters.push({\n index,\n filterId,\n optionValue,\n secondaryOptionValue,\n });\n }\n } else {\n // add new option under existing filter\n newApiData!.filters![filtersIndex].children.push(\n {\n value: optionValue,\n children: [{ value: secondaryOptionValue }],\n }\n );\n activeFilters.push({\n index,\n filterId,\n optionValue,\n secondaryOptionValue,\n });\n }\n } else {\n // add brand new filter\n newApiData!.filters!.push({\n id: filterId,\n children: [\n {\n value: optionValue,\n children: [{ value: secondaryOptionValue }],\n }\n ],\n });\n filtersIndex = newApiData!.filters!.findIndex(obj => {\n return obj.id === filterId;\n });\n activeFilters.push({\n index,\n filterId,\n optionValue,\n secondaryOptionValue,\n });\n }\n // reset filtersIndex in case of removal\n filtersIndex = newApiData!.filters!.findIndex(obj => {\n return obj.id === filterId;\n });\n const numProductsSelected = newApiData!.filters![filtersIndex]?.children[0].children!.length || 0;\n const newTabs = productsFacets.slice();\n newTabs[index] = numProductsSelected;\n setProductsFacets(newTabs);\n } else if (!secondaryOptionValue && tabSelected === 'products') {\n // room filter logic here, check if exists\n if (newApiData!.filters!.find(obj => {\n return obj.id === filterId;\n })) {\n filtersIndex = newApiData!.filters!.findIndex(obj => {\n return obj.id === filterId;\n });\n // check if optionValue matches an existing one\n if (newApiData!.filters![filtersIndex].children.find((obj: { value: string }) => {\n return obj.value === optionValue;\n })) {\n optionsIndex = newApiData!.filters![filtersIndex].children.findIndex(obj => {\n return obj.value === optionValue;\n });\n // remove existing option\n newApiData!.filters![filtersIndex].children.splice(newApiData!.filters![filtersIndex].children.findIndex(({ value }) => {\n return value === optionValue;\n }), 1);\n // check if need to remove structure\n if (!newApiData!.filters![filtersIndex].children.length) {\n newApiData!.filters!.splice(filtersIndex, 1);\n }\n const newActiveFilters = activeFilters.filter(activeFilter => {\n return activeFilter.optionValue !== optionValue;\n });\n setActiveFilters(newActiveFilters);\n } else {\n // add new option under existing filter\n newApiData!.filters![filtersIndex].children.push(\n { value: optionValue }\n );\n activeFilters.push({\n index,\n filterId,\n optionValue,\n });\n }\n } else {\n // add brand new room filter\n newApiData!.filters!.push({\n id: filterId,\n children: [{ value: optionValue }],\n });\n activeFilters.push({\n index,\n filterId,\n optionValue,\n });\n }\n const numProductsSelected = newApiData!.filters![filtersIndex]?.children.length || 0;\n const newTabs = productsFacets.slice();\n newTabs[index] = numProductsSelected;\n setProductsFacets(newTabs);\n } else if (!secondaryOptionValue) {\n if (!newApiData.filters) {\n // add in the filter structure if not existing\n newApiData.filters = [\n {\n id: 'contentType',\n children: [\n {\n value: filterId,\n children: [{ value: optionValue }],\n }\n ],\n }\n ];\n activeFilters.push({\n index,\n filterId,\n optionValue,\n });\n } else {\n console.info('content apiData', newApiData);\n if (newApiData!.filters![0].children.find(obj => {\n return obj.value === filterId;\n })) {\n // remove filter\n const newActiveFilters = activeFilters.filter(activeFilter => {\n return activeFilter.optionValue !== optionValue;\n });\n setActiveFilters(newActiveFilters);\n newApiData!.filters[0]!.children.splice(filtersIndex, 1);\n // conduct check to see if filters is now completely empty and remove it from apiData structure\n if (!newApiData.filters[0].children.length) {\n delete newApiData.filters;\n }\n } else {\n // add filter\n newApiData!.filters![0].children.push({\n value: filterId,\n children: [{ value: optionValue }],\n });\n activeFilters.push({\n index,\n filterId,\n optionValue,\n });\n }\n }\n let numContentSelected;\n if (newApiData.filters) {\n filtersIndex = newApiData!.filters![0].children.findIndex(obj => {\n return obj.value === filterId;\n });\n numContentSelected = newApiData?.filters[0]?.children[filtersIndex]?.children?.length || 0;\n } else {\n numContentSelected = 0;\n }\n const newTabs = contentFacets.slice();\n newTabs[index] = numContentSelected;\n setContentFacets(newTabs);\n }\n setApiData(newApiData);\n setApiReset(true);\n }, [activeFilters, apiData, contentFacets, productsFacets, tabSelected]);\n\n // FUNCTIONS TO HANDLE DROPDOWNS AND TO RESET THEM\n const selectFilterOptionParent = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n setParentSelected((e.target as HTMLButtonElement).id);\n }, []);\n\n const toPrevOptions = useCallback(() => {\n setParentSelected('');\n clearParentSelection();\n }, [clearParentSelection]);\n\n // Handles user UX so when clicking out of dropdown or side panel closes them\n document.addEventListener('click', e => {\n if (!isSideFilter) {\n if (\n (e.target as HTMLElement).closest('.filter-options') ||\n (e.target as HTMLElement).closest('.filter-colour-options') ||\n (e.target as HTMLElement).closest('.products-filter-btn') ||\n (e.target as HTMLElement).closest('.content-filter-btn')\n ) {\n return;\n }\n setTabOpened(100);\n resetDropdowns();\n resetDropdownsSelections();\n } else {\n if (\n isSideFilter &&\n ((e.target as HTMLElement).closest('.search-side-panel') ||\n (e.target as HTMLElement).closest('.open-all-filters'))\n ) {\n return;\n }\n setIsSideFilter(false);\n setTabOpened(100);\n resetDropdowns();\n resetDropdownsSelections();\n }\n });\n\n // Ensures dropdowns close once scroll too far down\n document.addEventListener('scroll', () => {\n const barPosition = document\n .getElementById('filter-panel')!\n .getBoundingClientRect();\n\n if (window.innerWidth > 768) {\n const searchPanel = document.querySelector('.c-search-uplift')!;\n searchPanel.classList.remove('is-open');\n }\n\n if (barPosition.top < 0) {\n setTabOpened(100);\n }\n\n resetDropdowns();\n resetDropdownsSelections();\n });\n\n useEffect(() => {\n if (!initialApiCalled) {\n apiCall();\n }\n if (apiReset) {\n apiFilter(apiData);\n }\n if (parentSelected) {\n dropdownScrollReset();\n }\n if (!initialApiCalled || !retrievedData) {\n const filterPanelWidth = document.querySelector('.filter-panel')!.scrollWidth;\n const filterBarWidth = document.querySelector('.search-filter-bar')!.scrollWidth;\n const allFilters = document.getElementsByClassName('.products-filter') as HTMLCollectionOf<HTMLElement>;\n if (filterPanelWidth > filterBarWidth) {\n setShowAllFiltersBtn(true);\n for (const filter of allFilters) {\n filter.style.display = 'none';\n }\n }\n }\n }, [apiReset, apiCall, initialApiCalled, apiFilter, apiData, parentSelected, dropdownScrollReset, retrievedData]);\n\n return (\n <>\n {initialApiCalled && (\n <>\n <SearchInfoPanel\n totalHits={totalHits}\n keywords={keywords}\n />\n <SearchTabs\n tabSelected={tabSelected}\n productsHits={productsHits}\n contentHits={contentHits}\n faqHits={faqHits}\n toggleTabSelected={toggleTabSelected}\n statusError={statusError}\n />\n </>\n )}\n <SearchFilterBar\n tabOpened={tabOpened}\n openFilterTab={openFilterTab}\n toggleSidePanel={toggleSidePanel}\n tabSelected={tabSelected}\n productsFacets={productsFacets}\n contentFacets={contentFacets}\n selectFilterOption={selectFilterOption}\n selectFilterOptionParent={selectFilterOptionParent}\n toPrevOptions={toPrevOptions}\n productsFilters={productsFilters}\n contentFilters={contentFilters}\n parentSelected={parentSelected}\n initialApiCalled={initialApiCalled}\n showAllFiltersBtn={showAllFiltersBtn}\n />\n {initialApiCalled && (\n <div className=\"line-break\" />\n )}\n <SearchResults\n productsItems={productsItems}\n contentItems={contentItems}\n faqItems={faqItems}\n keywords={keywords}\n tabSelected={tabSelected}\n selectFilterOption={selectFilterOption}\n retrievedData={retrievedData}\n apiReset={apiReset}\n altImage={altImage}\n tileContainerColumnClass={\n currentView === 'grid'\n ? 'col-four'\n : 'col-one no-discover-panel'\n }\n tileContainerTilesWrap=\"tiles-wrap\"\n productType={`product-tile${currentView === 'grid' ? '' : '-list'\n }`}\n contentType={`content-tile${currentView === 'grid' ? '' : '-list'\n }`}\n productsFacets={productsFacets}\n contentFacets={contentFacets}\n productsSortOptions={productsSortOptions}\n contentSortOptions={contentSortOptions}\n clearAllFilters={clearAllFilters}\n productsHits={productsHits}\n contentHits={contentHits}\n faqHits={faqHits}\n currentUrl={''}\n totalProductsPages={Math.ceil(\n productsHits / currentPageSize\n )}\n totalContentPages={Math.ceil(\n contentHits / currentPageSize\n )}\n totalFaqPages={Math.ceil(\n faqHits / currentPageSize\n )}\n currentView={currentView}\n productView={productView}\n updateView={updateView}\n currentPage={Number(currentPage)}\n updateDiscontinued={updateDiscontinued}\n currentDiscontinued={currentDiscontinued}\n changePage={changePage}\n changePageSize={changePageSize}\n currentPageSize={currentPageSize}\n currentSort={currentSort}\n updateSort={updateSort}\n activeFilters={activeFilters}\n isSearchPage={isSearchPage}\n statusError={statusError}\n contactDistributor={contactDistributor}\n />\n <SearchSidePanel\n toggleSidePanel={toggleSidePanel}\n isVisible={isSideFilter}\n clearAllFilters={clearAllFilters}\n tabOpened={tabOpened}\n openFilterTab={openFilterTab}\n tabSelected={tabSelected}\n productsFacets={productsFacets}\n contentFacets={contentFacets}\n productsHits={productsHits}\n contentHits={contentHits}\n selectFilterOption={selectFilterOption}\n selectFilterOptionParent={selectFilterOptionParent}\n toPrevOptions={toPrevOptions}\n productsFilters={productsFilters}\n activeFilters={activeFilters}\n contentFilters={contentFilters}\n parentSelected={parentSelected}\n />\n </>\n );\n};\n\nexport default SearchPage;\n","import { currentDomain } from '../../../js/utils/apiKeys';\n\nexport const getLocalisedData = item => {\n if (currentDomain === 'pdl') {\n return item.en_NZ;\n }\n return item.en_AU;\n};\n","// This function makes a string title case\nexport function titleCase(str) {\n return str.replace(\n /\\w\\S*/g,\n txt => {\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\n }\n );\n}\n\nexport function capitalizeCase(str) {\n return str.replace(/(?:^|\\s)\\S/g, a => {\n return a.toUpperCase();\n });\n}\n\n// This function makes a string sentence case\nexport function sentenceCase(str) {\n const n = str.toLowerCase().split('.');\n let vfinal = '';\n for (let i = 0; i < n.length; i += 1) {\n let spaceput = '';\n const spaceCount = n[i].replace(/^(\\s*).*$/, '$1').length;\n n[i] = n[i].replace(/^\\s+/, '');\n const newstring = n[i].charAt(n[i]).toUpperCase() + n[i].slice(1);\n for (let j = 0; j < spaceCount; j += 1) {\n spaceput += ' ';\n }\n vfinal += `${spaceput}${newstring}.`;\n }\n vfinal = vfinal.substring(0, vfinal.length - 1);\n return vfinal;\n}\n\nexport const isColor = text => {\n const regexRgb = /^rgba?\\(|^#/;\n return regexRgb.test(text);\n};\n\nexport const getExt = filename => {\n const regexExt = /(?:\\.([^.]+))?$/;\n return regexExt.exec(filename)[1];\n};\n\nexport const trimFileName = (filename, maxChars) => {\n const ext = getExt(filename) || '';\n if (filename.length - ext.length - 1 > maxChars) {\n return `${filename.substring(0, maxChars)}...${ext}`;\n }\n return filename;\n};\n\nexport const clearHTMLTags = strToSanitize => {\n return strToSanitize.replace(/(<([^>]+)>)/gi, '');\n};\n","'use strict';\n\nconst denyList = new Set([\n\t'ENOTFOUND',\n\t'ENETUNREACH',\n\n\t// SSL errors from https://github.com/nodejs/node/blob/fc8e3e2cdc521978351de257030db0076d79e0ab/src/crypto/crypto_common.cc#L301-L328\n\t'UNABLE_TO_GET_ISSUER_CERT',\n\t'UNABLE_TO_GET_CRL',\n\t'UNABLE_TO_DECRYPT_CERT_SIGNATURE',\n\t'UNABLE_TO_DECRYPT_CRL_SIGNATURE',\n\t'UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY',\n\t'CERT_SIGNATURE_FAILURE',\n\t'CRL_SIGNATURE_FAILURE',\n\t'CERT_NOT_YET_VALID',\n\t'CERT_HAS_EXPIRED',\n\t'CRL_NOT_YET_VALID',\n\t'CRL_HAS_EXPIRED',\n\t'ERROR_IN_CERT_NOT_BEFORE_FIELD',\n\t'ERROR_IN_CERT_NOT_AFTER_FIELD',\n\t'ERROR_IN_CRL_LAST_UPDATE_FIELD',\n\t'ERROR_IN_CRL_NEXT_UPDATE_FIELD',\n\t'OUT_OF_MEM',\n\t'DEPTH_ZERO_SELF_SIGNED_CERT',\n\t'SELF_SIGNED_CERT_IN_CHAIN',\n\t'UNABLE_TO_GET_ISSUER_CERT_LOCALLY',\n\t'UNABLE_TO_VERIFY_LEAF_SIGNATURE',\n\t'CERT_CHAIN_TOO_LONG',\n\t'CERT_REVOKED',\n\t'INVALID_CA',\n\t'PATH_LENGTH_EXCEEDED',\n\t'INVALID_PURPOSE',\n\t'CERT_UNTRUSTED',\n\t'CERT_REJECTED',\n\t'HOSTNAME_MISMATCH'\n]);\n\n// TODO: Use `error?.code` when targeting Node.js 14\nmodule.exports = error => !denyList.has(error && error.code);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import isRetryAllowed from 'is-retry-allowed';\nexport const namespace = 'axios-retry';\nexport function isNetworkError(error) {\n const CODE_EXCLUDE_LIST = ['ERR_CANCELED', 'ECONNABORTED'];\n if (error.response) {\n return false;\n }\n if (!error.code) {\n return false;\n }\n // Prevents retrying timed out & cancelled requests\n if (CODE_EXCLUDE_LIST.includes(error.code)) {\n return false;\n }\n // Prevents retrying unsafe errors\n return isRetryAllowed(error);\n}\nconst SAFE_HTTP_METHODS = ['get', 'head', 'options'];\nconst IDEMPOTENT_HTTP_METHODS = SAFE_HTTP_METHODS.concat(['put', 'delete']);\nexport function isRetryableError(error) {\n return (error.code !== 'ECONNABORTED' &&\n (!error.response ||\n error.response.status === 429 ||\n (error.response.status >= 500 && error.response.status <= 599)));\n}\nexport function isSafeRequestError(error) {\n if (!error.config?.method) {\n // Cannot determine if the request can be retried\n return false;\n }\n return isRetryableError(error) && SAFE_HTTP_METHODS.indexOf(error.config.method) !== -1;\n}\nexport function isIdempotentRequestError(error) {\n if (!error.config?.method) {\n // Cannot determine if the request can be retried\n return false;\n }\n return isRetryableError(error) && IDEMPOTENT_HTTP_METHODS.indexOf(error.config.method) !== -1;\n}\nexport function isNetworkOrIdempotentRequestError(error) {\n return isNetworkError(error) || isIdempotentRequestError(error);\n}\nexport function retryAfter(error = undefined) {\n const retryAfterHeader = error?.response?.headers['retry-after'];\n if (!retryAfterHeader) {\n return 0;\n }\n // if the retry after header is a number, convert it to milliseconds\n let retryAfterMs = (Number(retryAfterHeader) || 0) * 1000;\n // If the retry after header is a date, get the number of milliseconds until that date\n if (retryAfterMs === 0) {\n retryAfterMs = (new Date(retryAfterHeader).valueOf() || 0) - Date.now();\n }\n return Math.max(0, retryAfterMs);\n}\nfunction noDelay(_retryNumber = 0, error = undefined) {\n return Math.max(0, retryAfter(error));\n}\nexport function exponentialDelay(retryNumber = 0, error = undefined, delayFactor = 100) {\n const calculatedDelay = 2 ** retryNumber * delayFactor;\n const delay = Math.max(calculatedDelay, retryAfter(error));\n const randomSum = delay * 0.2 * Math.random(); // 0-20% of the delay\n return delay + randomSum;\n}\n/**\n * Linear delay\n * @param {number | undefined} delayFactor - delay factor in milliseconds (default: 100)\n * @returns {function} (retryNumber: number, error: AxiosError | undefined) => number\n */\nexport function linearDelay(delayFactor = 100) {\n return (retryNumber = 0, error = undefined) => {\n const delay = retryNumber * delayFactor;\n return Math.max(delay, retryAfter(error));\n };\n}\nexport const DEFAULT_OPTIONS = {\n retries: 3,\n retryCondition: isNetworkOrIdempotentRequestError,\n retryDelay: noDelay,\n shouldResetTimeout: false,\n onRetry: () => { },\n onMaxRetryTimesExceeded: () => { },\n validateResponse: null\n};\nfunction getRequestOptions(config, defaultOptions) {\n return { ...DEFAULT_OPTIONS, ...defaultOptions, ...config[namespace] };\n}\nfunction setCurrentState(config, defaultOptions, resetLastRequestTime = false) {\n const currentState = getRequestOptions(config, defaultOptions || {});\n currentState.retryCount = currentState.retryCount || 0;\n if (!currentState.lastRequestTime || resetLastRequestTime) {\n currentState.lastRequestTime = Date.now();\n }\n config[namespace] = currentState;\n return currentState;\n}\nfunction fixConfig(axiosInstance, config) {\n // @ts-ignore\n if (axiosInstance.defaults.agent === config.agent) {\n // @ts-ignore\n delete config.agent;\n }\n if (axiosInstance.defaults.httpAgent === config.httpAgent) {\n delete config.httpAgent;\n }\n if (axiosInstance.defaults.httpsAgent === config.httpsAgent) {\n delete config.httpsAgent;\n }\n}\nasync function shouldRetry(currentState, error) {\n const { retries, retryCondition } = currentState;\n const shouldRetryOrPromise = (currentState.retryCount || 0) < retries && retryCondition(error);\n // This could be a promise\n if (typeof shouldRetryOrPromise === 'object') {\n try {\n const shouldRetryPromiseResult = await shouldRetryOrPromise;\n // keep return true unless shouldRetryPromiseResult return false for compatibility\n return shouldRetryPromiseResult !== false;\n }\n catch (_err) {\n return false;\n }\n }\n return shouldRetryOrPromise;\n}\nasync function handleRetry(axiosInstance, currentState, error, config) {\n currentState.retryCount += 1;\n const { retryDelay, shouldResetTimeout, onRetry } = currentState;\n const delay = retryDelay(currentState.retryCount, error);\n // Axios fails merging this configuration to the default configuration because it has an issue\n // with circular structures: https://github.com/mzabriskie/axios/issues/370\n fixConfig(axiosInstance, config);\n if (!shouldResetTimeout && config.timeout && currentState.lastRequestTime) {\n const lastRequestDuration = Date.now() - currentState.lastRequestTime;\n const timeout = config.timeout - lastRequestDuration - delay;\n if (timeout <= 0) {\n return Promise.reject(error);\n }\n config.timeout = timeout;\n }\n config.transformRequest = [(data) => data];\n await onRetry(currentState.retryCount, error, config);\n if (config.signal?.aborted) {\n return Promise.resolve(axiosInstance(config));\n }\n return new Promise((resolve) => {\n const abortListener = () => {\n clearTimeout(timeout);\n resolve(axiosInstance(config));\n };\n const timeout = setTimeout(() => {\n resolve(axiosInstance(config));\n if (config.signal?.removeEventListener) {\n config.signal.removeEventListener('abort', abortListener);\n }\n }, delay);\n if (config.signal?.addEventListener) {\n config.signal.addEventListener('abort', abortListener, { once: true });\n }\n });\n}\nasync function handleMaxRetryTimesExceeded(currentState, error) {\n if (currentState.retryCount >= currentState.retries)\n await currentState.onMaxRetryTimesExceeded(error, currentState.retryCount);\n}\nconst axiosRetry = (axiosInstance, defaultOptions) => {\n const requestInterceptorId = axiosInstance.interceptors.request.use((config) => {\n setCurrentState(config, defaultOptions, true);\n if (config[namespace]?.validateResponse) {\n // by setting this, all HTTP responses will be go through the error interceptor first\n config.validateStatus = () => false;\n }\n return config;\n });\n const responseInterceptorId = axiosInstance.interceptors.response.use(null, async (error) => {\n const { config } = error;\n // If we have no information to retry the request\n if (!config) {\n return Promise.reject(error);\n }\n const currentState = setCurrentState(config, defaultOptions);\n if (error.response && currentState.validateResponse?.(error.response)) {\n // no issue with response\n return error.response;\n }\n if (await shouldRetry(currentState, error)) {\n return handleRetry(axiosInstance, currentState, error, config);\n }\n await handleMaxRetryTimesExceeded(currentState, error);\n return Promise.reject(error);\n });\n return { requestInterceptorId, responseInterceptorId };\n};\n// Compatibility with CommonJS\naxiosRetry.isNetworkError = isNetworkError;\naxiosRetry.isSafeRequestError = isSafeRequestError;\naxiosRetry.isIdempotentRequestError = isIdempotentRequestError;\naxiosRetry.isNetworkOrIdempotentRequestError = isNetworkOrIdempotentRequestError;\naxiosRetry.exponentialDelay = exponentialDelay;\naxiosRetry.linearDelay = linearDelay;\naxiosRetry.isRetryableError = isRetryableError;\nexport default axiosRetry;\n"],"names":["SearchProductTile","_React$Component","props","_this","_classCallCheck","_callSuper","renderPrice","currentProd","Array","isArray","item","items","state","selectedColourIndex","setState","statusError","productView","staff","React","className","retail","concat","noPriceLabel","showroom","undefined","contactDistributor","comingSoon","getProductImage","length","images","openUrl","renderPriceDom","_this$props","map","color","index","classes","key","id","style","backgroundColor","rgb","onClick","e","stopPropagation","preventDefault","selectedColourId","_inherits","value","nextProps","nextState","this","url","srcUrl","title","productId","statusNew","statusSale","statusStock","discountinued","isDiscontinued","description","thumbnail","loadingDetail","window","dataLayer","push","event","filter_category","filter_sub_category","search_page_position","currentPage","search_result_position","resultPosition","site_search_category","site_search_keyword","keywords","search_term","_this2","Error","discountinuedFlag","comingSoonFlag","_this$props$item","rangeDescription","productName","shortDescription","overlayLabel","useTitle","productUrl","split","href","sendClickData","variants","rangeName","productDescription","src","alt","onError","currentTarget","onerror","altImage","dangerouslySetInnerHTML","__html","DOMPurify","sanitize","Loader","tag","propTypes","shape","string","isRequired","price","colors","arrayOf","range","object","bool","statusSkin","baseImageUrl","number","defaultProps","SearchProductTileList","getStatus","clasess","energyEfficient","type","ContentTile","searchPage","location","toString","includes","contentId","typeName","size","file","ext","image","version","revision","date","categories","backto","toLowerCase","document_id","document_name","clearHTMLTags","document_type","dateObject","Date","day","getDate","monthIndex","getMonth","year","getFullYear","month","reference","slice","target","rel","classNames","Icon","glyph","category","toUpperCase","createDate","ContentTileList","SearchListingItem","_ref","itemPosition","tileType","currentPageSize","localisedItem","getLocalisedData","productItem","ProductTileErrorBoundary","itemID","contentItem","extension","documentSize","lastModifiedDate","thumbnailUrl","_pt","en_AU","en_NZ","SearchTileContainer","columnClass","tileWrap","currentUrl","currentView","tileTypeSecondary","discoverPanel","ItemPagination","changePage","totalProductsPages","totalContentPages","totalFaqPages","tabSelected","_useState2","useState","totalPages","setTotalPages","clickPage","useCallback","selected","useEffect","ReactPaginate","pageNum","pageRangeDisplayed","marginPagesDisplayed","clickCallback","forceSelected","initialSelected","previousLabel","prevIcon","nextLabel","nextIcon","containerClassName","pageClassName","mobileBreakpoint","NotFound","charAt","PageSize","sizes","updatePageSize","faqStyle","display","onChange","pagesize","SortBy","updateSort","currentSort","openedSortFilter","setOpenedSortFilter","selectOption","sort","toggleSortFilter","tabIndex","onKeyDown","keyCode","role","displayName","availableOrders","Discontinued","updateDiscontinued","currentDiscontinued","name","checked","htmlFor","SearchResults","productsItems","contentItems","faqItems","selectFilterOption","retrievedData","apiReset","tileContainerColumnClass","tileContainerTilesWrap","productType","contentType","productsFacets","contentFacets","clearAllFilters","productsHits","contentHits","faqHits","updateView","productsSortOptions","contentSortOptions","changePageSize","activeFilters","isSearchPage","pageSizeOption","_slicedToArray","openIndex","setOpenIndex","_useState4","isFaqTab","setIsFaqTab","currentFaqOpen","filter","secondaryOptionValue","optionValue","filterId","every","When","condition","Boolean","ToggleView","articleId","onKeyPress","lastModifyDate","replace","ADD_TAGS","ADD_ATTR","answer","SearchInfoPanel","totalHits","SearchTabs","toggleTabSelected","tab","option","SearchFilters","tabOpened","openFilterTab","selectFilterOptionParent","toPrevOptions","productsFilters","contentFilters","parentSelected","_productsFilters$inde","disabled","children","count","_option$children","reduce","a","b","show","secondaryOption","substring","SearchFilterBar","toggleSidePanel","initialApiCalled","showAllFiltersBtn","SearchSidePanel","isVisible","visible","SearchPage","URLSearchParams","search","get","setCurrentDiscontinued","defaultProductsSearch","searcher","currentDomain","term","country","language","filters","defaultContentSearch","defaultFaqSearch","setProductsItems","_useState6","defaultProductsItems","setDefaultProductsItems","_useState8","setProductsHits","_useState10","defaultProductsHits","setDefaultProductsHits","_useState12","setProductsFilters","_useState14","setProductsFacets","_useState16","setProductsSortOptions","_useState18","setContentItems","_useState20","defaultContentItems","setDefaultContentItems","_useState22","setContentHits","_useState24","defaultContentHits","setDefaultContentHits","_useState26","setContentFilters","_useState28","setContentFacets","_useState30","setContentSortOptions","_useState32","setFaqItems","_useState34","setFaqHits","_useState36","defaultFaqItems","setDefaultFaqItems","_useState38","defaultFaqHits","setDefaultFaqHits","_useState40","setTotalHits","_useState42","defaultTotalHits","setDefaultTotalHits","_useState44","setTabSelected","_useState46","setTabOpened","_useState48","innerWidth","setShowAllFiltersBtn","_useState50","setParentSelected","_useState52","isSideFilter","setIsSideFilter","_useState54","setCurrentPageSize","_useState56","setCurrentPage","_useState58","setCurrentView","_useState60","setCurrentSort","_useState62","setActiveFilters","_useState64","apiData","setApiData","_useState66","setStatusError","_useState68","setApiReset","_useState70","setInitialApiCalled","_useState72","setRetrievedData","logStatusError","discontinuedIndex","findIndex","obj","apiCall","axiosRetry","axios","retries","requestProducts","post","headers","Accept","requestContent","requestFaqs","requestDiscontinuedProductsCheck","all","then","spread","getProducts","arguments","getContent","getFaqs","getDiscontinuedProductsCheck","data","stats","documents","facetsOptions","facets","fill","sortOptions","error","console","response","status","apiFilter","apiResponse","resetDropdowns","productsFacetsSelected","document","getElementsByClassName","classList","remove","contentFacetsSelected","resetDropdownsSelections","_step","_iterator","_createForOfIteratorHelper","querySelectorAll","s","n","done","dropdown","shownDropdown","err","f","clearParentSelection","getElementById","add","_objectSpread","pagination","limit","offset","pageSize","parseInt","order","dropdownScrollReset","_step2","_iterator2","scrollTop","prev","filtersIndex","optionsIndex","newApiData","_filtersIndex","find","existingOption","splice","_ref2","newActiveFilters","activeFilter","numProductsSelected","newTabs","info","numContentSelected","_newApiData$filters$","_newApiData$filters$$","_newApiData$filters$$2","_filtersIndex2","_ref3","addEventListener","closest","barPosition","getBoundingClientRect","querySelector","top","filterPanelWidth","scrollWidth","filterBarWidth","allFilters","_step3","_iterator3","Math","ceil","Number","capitalizeCase","str","isColor","text","test","trimFileName","filename","maxChars","exec","getExt","strToSanitize","denyList","Set","module","exports","has","code","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","array","bigint","func","symbol","any","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","exact","checkPropTypes","PropTypes","namespace","isNetworkError","SAFE_HTTP_METHODS","IDEMPOTENT_HTTP_METHODS","isRetryableError","isIdempotentRequestError","config","method","indexOf","isNetworkOrIdempotentRequestError","retryAfter","retryAfterHeader","retryAfterMs","valueOf","now","max","DEFAULT_OPTIONS","retryCondition","retryDelay","_retryNumber","shouldResetTimeout","onRetry","onMaxRetryTimesExceeded","validateResponse","setCurrentState","defaultOptions","resetLastRequestTime","currentState","getRequestOptions","retryCount","lastRequestTime","axiosInstance","requestInterceptorId","interceptors","request","use","validateStatus","responseInterceptorId","async","Promise","reject","shouldRetryOrPromise","_err","shouldRetry","delay","defaults","agent","httpAgent","httpsAgent","fixConfig","timeout","lastRequestDuration","transformRequest","signal","aborted","resolve","abortListener","clearTimeout","setTimeout","removeEventListener","once","handleRetry","handleMaxRetryTimesExceeded","isSafeRequestError","exponentialDelay","retryNumber","delayFactor","calculatedDelay","random","linearDelay"],"sourceRoot":""}