{"version":3,"file":"faqSpecificationAccordion.5ad5509567544c1fc2bf.js","mappings":"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","sources":["webpack://jcb.com/./src/app/components/faq/faq-accordion.vue","webpack://jcb.com/./src/app/components/shared/base-accordion.vue","webpack://jcb.com/./src/app/views/faq-specification-accordion/faq-specification-accordion.vue","webpack://jcb.com/./src/app/composables/useInterpolatedContent.js","webpack://jcb.com/./src/app/services/api-client.js","webpack://jcb.com/./src/app/services/faq.js","webpack://jcb.com/./src/app/stores/faqStore.js","webpack://jcb.com/./src/app/views/faq-specification-accordion/faq-specification-accordion.js","webpack://jcb.com/./src/app/components/faq/faq-accordion.vue?9cab","webpack://jcb.com/./src/app/components/shared/base-accordion.vue?8e9a","webpack://jcb.com/./src/app/views/faq-specification-accordion/faq-specification-accordion.vue?f9e4"],"sourcesContent":["\r\n\r\n","\r\n\r\n","\r\n\r\n","export function useInterpolatedContent(content, cmsMessageProps) {\r\n return content.replace(/\\${(.*?)}/g, (tag, prop) => cmsMessageProps[prop]);\r\n}\r\n","// api-clients.js\r\nimport axios from 'axios';\r\n// import * as store from '../stores/index';\r\n\r\nconst apiClient = axios.create({\r\n baseURL: '/api',\r\n withCredentials: false,\r\n headers: {\r\n Accept: 'application/json',\r\n 'Cache-Control': 'no-cache',\r\n 'Content-Type': 'application/json',\r\n },\r\n});\r\n\r\n// apiClient.interceptors.request.use(\r\n// (config) => {\r\n// store.default.dispatch('loader/setLoadingAction', true);\r\n// return config;\r\n// },\r\n// (error) => {\r\n// store.default.dispatch('loader/setLoadingAction', false);\r\n// return Promise.reject(error);\r\n// },\r\n// );\r\n\r\n// apiClient.interceptors.response.use(\r\n// (response) => {\r\n// store.default.dispatch('loader/setLoadingAction', false);\r\n// return response;\r\n// },\r\n// (error) => {\r\n// store.default.dispatch('loader/setLoadingAction', false);\r\n// return Promise.reject(error);\r\n// },\r\n// );\r\n\r\nexport default apiClient;\r\n","import apiClient from './api-client';\r\n\r\nexport default {\r\n faqSearchPredictions(payload, langCode) {\r\n return apiClient.post(`/faq/${langCode}/search?term=${payload.term}`, { id: payload.id });\r\n },\r\n searchResults(payload, langCode) {\r\n return apiClient.post(`/faq/${langCode}/search/results`, payload);\r\n },\r\n};\r\n","import { defineStore } from 'pinia';\r\nimport services from '../services/faq';\r\nimport { pushToDataLayer } from '@/js/analytics/analytics.methods.js';\r\nimport { useHead } from '@unhead/vue';\r\n\r\nexport const useFaqStore = defineStore('faqStore', {\r\n state: () => {\r\n return {\r\n accordionList: [],\r\n categories: [],\r\n categoriesExpanded: false,\r\n controller: null,\r\n currentSearchTerm: null,\r\n faqAccordionHeadingRef: null,\r\n langAttribute: 'en-gb',\r\n pageId: null,\r\n resultPage: false,\r\n selectedCategoryId: null,\r\n selectedCategoryTitle: null,\r\n searchTerm: null,\r\n showAccordionList: false,\r\n searchPredictions: [],\r\n pageTitle: null,\r\n };\r\n },\r\n getters: {\r\n accordionListLength: (state) => state.accordionList.length,\r\n },\r\n actions: {\r\n fetchSearchSuggestions(term) {\r\n this.useRequestController();\r\n let payload = {\r\n id: this.pageId,\r\n term: term,\r\n };\r\n return services\r\n .faqSearchPredictions(payload, this.langAttribute)\r\n .then((response) => {\r\n this.controller = null;\r\n if (response.data.searchPredictions?.length) {\r\n this.searchPredictions = response.data.searchPredictions;\r\n } else {\r\n this.searchPredictions = [];\r\n }\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n });\r\n },\r\n fetchSearchResults(payload, isSearch) {\r\n this.useRequestController();\r\n return services\r\n .searchResults({ ...payload, id: this.pageId }, this.langAttribute)\r\n .then((response) => {\r\n this.controller = null;\r\n this.accordionList = response.data.searchResults;\r\n this.showAccordionList = true;\r\n if (isSearch) {\r\n this.resultPage = true;\r\n this.currentSearchTerm = this.searchTerm;\r\n this.selectedCategoryId = null;\r\n this.selectedCategoryTitle = null;\r\n this.searchTerm = '';\r\n this.searchPredictions = [];\r\n } else {\r\n this.resultPage = false;\r\n }\r\n this.checkParamsId();\r\n })\r\n .then(() => {\r\n this.faqAccordionHeadingRef.focus();\r\n this.faqAccordionHeadingRef.scrollIntoView(true, { behavior: 'smooth' });\r\n })\r\n .catch((error) => {\r\n console.log(error);\r\n })\r\n .finally(() => {\r\n pushToDataLayer({\r\n event: 'faq_load_list',\r\n number_returned_results: this.accordionList.length,\r\n });\r\n\r\n if (this.resultPage && this.accordionList.length === 0) {\r\n pushToDataLayer({\r\n event: 'faq_no_search_result',\r\n faq_search_term: this.currentSearchTerm,\r\n });\r\n }\r\n });\r\n },\r\n useRequestController() {\r\n if (this.controller) {\r\n this.controller.abort();\r\n }\r\n this.controller = new AbortController();\r\n },\r\n checkAllCategoriesOnPageLoad() {\r\n const params = this.checkParams();\r\n const termParam = params.get('allCat');\r\n\r\n if (termParam === 'true') {\r\n this.categoriesExpanded = true;\r\n } else {\r\n this.categoriesExpanded = false;\r\n }\r\n },\r\n checkParamsOnPageLoad() {\r\n const params = this.checkParams();\r\n const termParam = params.get('term');\r\n\r\n if (termParam) {\r\n this.checkParamsTerm(params);\r\n } else {\r\n this.checkParamsCat(params);\r\n }\r\n },\r\n checkParamsTerm(params) {\r\n const termParam = params.get('term');\r\n this.fetchSearchResults({ term: termParam }, true);\r\n this.searchTerm = termParam;\r\n },\r\n checkParamsCat(params) {\r\n const catParam = params.get('cat');\r\n if (catParam) {\r\n const matchingCategory = this.categories.find((cat) => cat.id === catParam);\r\n if (matchingCategory) {\r\n !matchingCategory.featured && (this.categoriesExpanded = true);\r\n this.selectedCategoryId = matchingCategory.id;\r\n this.selectedCategoryTitle = matchingCategory.title;\r\n useHead({\r\n title: `${this.pageTitle} | ${matchingCategory.title}`,\r\n link: {\r\n rel: 'canonical',\r\n href: window.location.href,\r\n },\r\n });\r\n this.fetchSearchResults({ cat: matchingCategory.id });\r\n }\r\n }\r\n },\r\n checkParamsId() {\r\n const params = this.checkParams();\r\n const idParam = params.get('id');\r\n if (idParam) {\r\n const matchingFaqIndex = this.accordionList.findIndex((el) => el.id === idParam);\r\n if (matchingFaqIndex + 1) {\r\n this.accordionList[matchingFaqIndex].focusAndScroll = true;\r\n }\r\n }\r\n },\r\n checkParams() {\r\n return new URL(document.location).searchParams;\r\n },\r\n resetLanding() {\r\n this.resultPage = false;\r\n this.searchTerm = null;\r\n this.currentSearchTerm = null;\r\n this.showAccordionList = false;\r\n this.accordionList = [];\r\n window.history.replaceState(null, null, window.location.pathname);\r\n },\r\n },\r\n});\r\n","import { createApp } from 'vue';\r\nimport { createPinia } from 'pinia';\r\nimport faqSpecificationAccordionApp from '@/app/views/faq-specification-accordion/faq-specification-accordion.vue';\r\nimport { pushToDataLayer } from '@/js/analytics/analytics.methods';\r\n\r\nexport default class faqSpecificationAccordion {\r\n constructor(el) {\r\n this.el = el;\r\n this.init();\r\n }\r\n init() {\r\n const app = createApp(faqSpecificationAccordionApp);\r\n const pinia = createPinia();\r\n\r\n app.provide('config', JCB);\r\n app.provide('gaPush', pushToDataLayer);\r\n app.use(pinia);\r\n app.mount(this.el);\r\n }\r\n}\r\n","import script from \"./faq-accordion.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./faq-accordion.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./base-accordion.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./base-accordion.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__","import script from \"./faq-specification-accordion.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./faq-specification-accordion.vue?vue&type=script&setup=true&lang=js\"\n\nconst __exports__ = script;\n\nexport default __exports__"],"names":["config","inject","gaPush","faqStore","useFaqStore","faqAccordionHeadingRef","ref","showAllAccordions","accordions","computed","productPage","value","slice","accordionList","showViewMoreAccordions","length","viewMoreAccordionsLabel","viewLessFaqsLabel","viewMoreFaqsLabel","cmsMessageProps","searchTerm","selectedCategoryTitle","currentSearchTerm","resultsNumber","accordionListLength","accordionLabel","resultPage","accordionResultsTitle","useInterpolatedContent","faqsLabel","accordionDescription","description","accordionResultsDescription","accordionResultsNoFaqsDescription","resultPageClass","handleShowAll","event","link_text","handleScrollToTop","accordionMobileScrollLabel","handleReturnToLanding","resetLanding","searchResultsReturnLabel","onMounted","el","faq_title","question","readMoreLink","isOpened","props","isOpen","buttonRef","handleClick","emit","focusAndScroll","nextTick","focus","scrollIntoView","behavior","onBeforeMount","checkParamsOnPageLoad","content","replace","tag","prop","axios","create","baseURL","withCredentials","headers","Accept","faqSearchPredictions","payload","langCode","apiClient","post","term","id","searchResults","defineStore","state","categories","categoriesExpanded","controller","langAttribute","pageId","selectedCategoryId","showAccordionList","searchPredictions","pageTitle","getters","actions","fetchSearchSuggestions","this","useRequestController","services","then","response","data","error","console","log","fetchSearchResults","isSearch","checkParamsId","pushToDataLayer","number_returned_results","faq_search_term","abort","AbortController","checkAllCategoriesOnPageLoad","termParam","checkParams","get","params","checkParamsTerm","checkParamsCat","catParam","matchingCategory","find","cat","featured","title","useHead","link","rel","href","window","location","idParam","matchingFaqIndex","findIndex","URL","document","searchParams","history","replaceState","pathname","faqSpecificationAccordion","init","app","createApp","faqSpecificationAccordionApp","pinia","createPinia","provide","JCB","use","mount"],"sourceRoot":""}