{"version":3,"file":"TechnicalDownloadSearch-Chunk-bc83f70d91be0fc0e03e.js","mappings":"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","sources":["webpack://react-app/./components/Shared/src/components/atoms/Modal/Portal.tsx","webpack://react-app/./components/Shared/src/components/atoms/Search/HighlightedResult.tsx","webpack://react-app/./components/Shared/src/components/atoms/Search/Search.tsx","webpack://react-app/./components/Shared/src/utility/config/animations.ts","webpack://react-app/./components/Shared/src/utility/helpers/bodyScrollLock.ts","webpack://react-app/./components/Shared/src/utility/helpers/throttle.ts","webpack://react-app/./components/Shared/src/utility/hooks/useListingComponentData.ts","webpack://react-app/./components/Shared/src/utility/hooks/useModal.ts","webpack://react-app/./components/Shared/src/components/atoms/Checkbox/Checkbox.tsx","webpack://react-app/./components/Shared/src/components/atoms/IconButton/IconButton.tsx","webpack://react-app/./components/Shared/src/components/atoms/Modal/FullScreenModal.tsx","webpack://react-app/./components/Shared/src/components/atoms/Rows/Rows.tsx","webpack://react-app/./components/Shared/src/components/molecules/ExpandableBanner/ExpandableBanner.tsx","webpack://react-app/./components/Shared/src/utility/helpers/ensureArray.ts","webpack://react-app/./components/Shared/src/utility/helpers/extractDocumentsFromProductsArray.ts","webpack://react-app/./components/Shared/src/utility/helpers/removeObjectKeys.ts","webpack://react-app/./components/Shared/src/components/organisms/TechnicalDownloadSearch/components/DownloadItemRow.tsx","webpack://react-app/./components/Shared/src/components/organisms/TechnicalDownloadSearch/components/FilterSection.tsx","webpack://react-app/./components/Shared/src/components/organisms/TechnicalDownloadSearch/TechnicalDownloadSearch.tsx","webpack://react-app/./components/organisms/TechnicalDownloadSearch/TechnicalDownloadSearchWrapper.tsx"],"sourcesContent":["import { PropsWithChildren, useEffect, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\n\ninterface Props {\n readonly mountId: string;\n}\n\nconst Portal = ({ mountId, children }: PropsWithChildren) => {\n const containerElement = useMemo(() => document.createElement('div'), []);\n\n useEffect(() => {\n document.getElementById(mountId)?.appendChild(containerElement);\n\n return () => {\n document.getElementById(mountId)?.removeChild(containerElement);\n };\n }, [mountId, containerElement]);\n\n return createPortal(children, containerElement);\n};\n\nexport default Portal;\n","interface IHighlightedResult {\n readonly result: string;\n readonly match: string;\n}\n\nconst HighlightedResult = ({ result, match }: IHighlightedResult) => {\n const matchIndex = result.toLowerCase().indexOf(match.toLowerCase());\n\n const startString = result.substring(0, matchIndex);\n const matchString = result.substring(matchIndex, matchIndex + match.length);\n const endString = result.substring(matchIndex + match.length, result.length);\n\n return (\n <>\n {startString && {startString}}\n {matchString}\n {endString && {endString}}\n \n );\n};\n\nexport default HighlightedResult;\n","import Icon from '@atoms/Icon/Icon';\nimport LoadingSpinner from '@atoms/LoadingSpinner/LoadingSpinner';\nimport Text from '@atoms/Text/Text';\nimport { ErrorMessage } from '@hookform/error-message';\nimport { ISearch } from '@models/ISearch';\nimport SizeEnum from '@models/enums/SizeEnum';\nimport classNames from 'classnames';\nimport { useCombobox } from 'downshift';\nimport { debounce } from 'lodash';\nimport { useEffect, useRef, useState } from 'react';\nimport { useAsyncList } from 'react-stately';\nimport HighlightedResult from './HighlightedResult';\n\nconst Search = ({\n autoCompleteEndpoint,\n autoFocus = false,\n backgroundColor = 'tw-bg-white dark:tw-bg-grey-10',\n dataTestId,\n errors,\n initialValue,\n label,\n large = false,\n list,\n name = '',\n predictiveCharacterLength = 3,\n register,\n requiredErrorMessage,\n searchClasses,\n setValue,\n darkMode = false,\n onAutoCompleteSelect,\n clearSearch,\n ...rest\n}: ISearch) => {\n const [inputValue, setInputValue] = useState('');\n\n const suggestions = useAsyncList({\n async load({ signal, filterText }) {\n if (list) {\n return {\n items: list,\n };\n } else if (filterText && filterText.length >= predictiveCharacterLength) {\n const res = await fetch(`${autoCompleteEndpoint}=${filterText}`, {\n signal,\n });\n\n const json = await res.json();\n\n return {\n items: json,\n };\n }\n\n return {\n items: [],\n };\n },\n });\n\n const { items, isLoading } = suggestions;\n\n const debouncedValueChange = useRef(\n debounce(async ({ inputValue }) => {\n suggestions.setFilterText(inputValue ?? '');\n setValue?.(name ?? '', inputValue ?? '', { shouldValidate: true });\n setInputValue(inputValue ?? '');\n }, 500)\n ).current;\n\n const {\n isOpen,\n getLabelProps,\n getMenuProps,\n getToggleButtonProps,\n getInputProps,\n highlightedIndex,\n getItemProps,\n selectedItem,\n reset,\n } = useCombobox({\n onInputValueChange: debouncedValueChange,\n initialInputValue: initialValue ?? '',\n items,\n });\n\n useEffect(() => {\n selectedItem && onAutoCompleteSelect?.(selectedItem);\n }, [selectedItem]);\n\n const showDropdown =\n isOpen && inputValue.length >= predictiveCharacterLength && !!items.length;\n\n const hasErrors = errors && name in errors;\n\n useEffect(() => {\n if (clearSearch && clearSearch > 0) reset();\n }, [clearSearch]);\n\n return (\n
\n \n \n
\n {\n // Workaround to allow form submission when nothing in dropdown is selected\n if (\n e.key !== 'Enter' ||\n highlightedIndex > -1 ||\n !onAutoCompleteSelect\n ) {\n getInputProps()?.onKeyDown?.(e);\n }\n }}\n data-testid={dataTestId}\n />\n {/* tw-hidden input - the input above cannot accept both register() and getInputProps(),\n so we have another input registered and we set its value on line 48 when the shown one changes\n this ensures correct form integration with react-hook-form */}\n \n \n \n \n
\n
\n \n {isLoading ? (\n
\n \n
\n ) : (\n showDropdown &&\n items.map((item, index) => {\n return (\n \n \n \n );\n })\n )}\n \n {requiredErrorMessage && errors && (\n (\n \n {message}\n \n )}\n />\n )}\n \n );\n};\n\nexport default Search;\n","export const slideTransition = {\n duration: 0.8,\n ease: [0.74, 0, 0.19, 1.02],\n};\n\nexport const fadeTransition = {\n delay: 0.15,\n duration: 0.3,\n ease: 'easeIn',\n};\n\nexport const fadeInUp = {\n hidden: {\n opacity: 0,\n y: 50,\n transition: {\n duration: 1,\n ease: [0.22, 1, 0.36, 1],\n },\n },\n visible: {\n opacity: 1,\n y: 0,\n transition: {\n duration: 1,\n ease: [0.22, 1, 0.36, 1],\n type: 'spring',\n stiffness: 50,\n damping: 14,\n },\n },\n};\n\nexport const fadeInUpSlow = {\n hidden: {\n opacity: 0,\n y: 50,\n transition: {\n duration: 1,\n ease: [0.4, 0, 0.2, 1],\n },\n },\n visible: {\n opacity: 1,\n y: 0,\n transition: {\n duration: 1,\n ease: [0.4, 0, 0.2, 1],\n type: 'spring',\n stiffness: 50,\n damping: 14,\n },\n },\n};\n\nexport const fadeIn = {\n hidden: {\n opacity: 0,\n transition: {\n duration: 0.5,\n ease: 'easeInOut',\n },\n },\n visible: {\n opacity: 1,\n transition: {\n duration: 0.5,\n ease: 'easeInOut',\n },\n },\n};\n","import throttle from './throttle';\n\nconst bodyScrollLock = (isScrollLocked: boolean) => {\n const documentElementScroll =\n document.documentElement.style.getPropertyValue('--scroll-y');\n const cacheLocator = documentElementScroll || `${window.scrollY}px`;\n\n const throttledSetScrollY = throttle(\n () =>\n document.documentElement.style.setProperty(\n '--scroll-y',\n `${window.scrollY}px`\n ),\n 200\n );\n\n if (!documentElementScroll) {\n window.addEventListener('scroll', throttledSetScrollY);\n }\n\n const { body } = document;\n\n if (isScrollLocked) {\n const scrollY = cacheLocator;\n body.style.scrollbarGutter = 'stable';\n body.style.overflowY = 'hidden';\n body.style.position = 'fixed';\n body.style.top = `-${scrollY}`;\n body.style.left = '0px';\n body.style.right = '0px';\n } else {\n body.style.position = '';\n body.style.overflowY = 'auto';\n const scrollY = body.style.top || cacheLocator;\n body.style.top = '';\n window.scrollTo(0, Math.abs(parseInt(scrollY || '0', 10)));\n }\n};\n\nexport default bodyScrollLock;\n","function throttle any>(\n func: T,\n limit: number\n): (...args: Parameters) => void {\n let lastFunc: NodeJS.Timeout | undefined;\n let lastRan: number | undefined;\n\n return function (this: ThisParameterType, ...args: Parameters) {\n const context = this;\n\n if (!lastRan) {\n func.apply(context, args);\n lastRan = Date.now();\n } else {\n if (lastFunc) clearTimeout(lastFunc);\n\n lastFunc = setTimeout(function () {\n if (Date.now() - (lastRan ?? 0) >= limit) {\n func.apply(context, args);\n lastRan = Date.now();\n }\n }, limit - (Date.now() - (lastRan ?? 0)));\n }\n };\n}\n\nexport default throttle;\n","import queryString from 'query-string';\nimport { useState } from 'react';\n\ninterface IListingComponentState {\n readonly data: TData;\n readonly loading: boolean;\n readonly error: string;\n readonly isInitialData: boolean;\n readonly pushToUrl?: boolean;\n}\n\n// Extend the hook definition with TData for the data structure\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst useListingComponentData = , TData>(\n apiEndpoint: string,\n initialData: TData,\n skipEmptyString = true,\n pushToUrl = true\n) => {\n const [state, setState] = useState>({\n data: initialData,\n loading: false,\n error: '',\n isInitialData: true,\n });\n\n const fetchData = async (formData: TFormData) => {\n try {\n setState({ ...state, loading: true, error: '' });\n const requestQueryString = `?${queryString.stringify(formData, {\n skipEmptyString: skipEmptyString,\n arrayFormat: 'comma',\n })}`;\n\n const response = await fetch(`${apiEndpoint}${requestQueryString}`);\n\n if (!response.ok) {\n throw new Error(`Request failed with status ${response.status}`);\n }\n\n const data = await response.json();\n\n if (pushToUrl) {\n const currentUrl = new URL(window.location.href);\n const searchParams = currentUrl.searchParams;\n\n (Object.keys(formData) as Array).forEach((key) => {\n const value = formData[key];\n searchParams.set(key?.toString(), value?.toString());\n });\n\n window.history.pushState({}, '', currentUrl.href);\n }\n\n setState({ ...state, data, loading: false, isInitialData: false });\n } catch (error) {\n setState({ ...state, loading: false, error: 'Error fetching data' });\n }\n };\n\n return { fetchData, state };\n};\n\nexport default useListingComponentData;\n","import { RefObject, useEffect } from 'react';\nimport { usePreventScroll } from 'react-aria';\n\n// A useful hook to lock the scroll position of the rest of a page when a modal is open and provide a focus trap\nconst useModal = (\n isOpen: boolean,\n setIsOpen: (isOpen: boolean) => void,\n targetRef: RefObject\n) => {\n usePreventScroll({ isDisabled: !isOpen });\n\n useEffect(() => {\n if (typeof window === 'undefined' || !targetRef.current) {\n return;\n }\n\n // Retain which element activated the modal\n const activeElement = (document.activeElement ||\n document.body) as HTMLElement;\n const modalElement = targetRef.current;\n\n if (isOpen && modalElement) {\n const focusableElements = modalElement.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n const firstElement = focusableElements[0] as HTMLElement;\n const lastElement = focusableElements[\n focusableElements.length - 1\n ] as HTMLElement;\n\n const handleTabKeyPress = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n if (event.shiftKey && document.activeElement === firstElement) {\n event.preventDefault();\n lastElement?.focus();\n } else if (\n !event.shiftKey &&\n document.activeElement === lastElement\n ) {\n event.preventDefault();\n firstElement?.focus();\n }\n }\n };\n\n const handleEscapeKeyPress = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setIsOpen(false);\n // Set focus back to the element which activated the modal\n activeElement?.focus();\n }\n };\n\n modalElement.addEventListener('keydown', handleTabKeyPress);\n modalElement.addEventListener('keydown', handleEscapeKeyPress);\n\n modalElement.focus();\n\n return () => {\n modalElement.removeEventListener('keydown', handleTabKeyPress);\n modalElement.removeEventListener('keydown', handleEscapeKeyPress);\n };\n }\n }, [isOpen, setIsOpen, targetRef]);\n};\n\nexport default useModal;\n","import Text from '@atoms/Text/Text';\nimport { ICheckbox } from '@models/ICheckbox';\nimport classNames from 'classnames';\n\nconst Checkbox = ({\n checked,\n dataTestId,\n hideLabelOnMobile,\n indeterminate = false,\n label,\n labelClasses,\n onChange,\n register,\n richTextLabel = false,\n ...props\n}: ICheckbox) => (\n \n onChange?.(e),\n })}\n />\n \n \n \n {richTextLabel ? (\n \n ) : (\n \n {label}\n

\n )}\n \n);\n\nexport default Checkbox;\n","import Icon from '@atoms/Icon/Icon';\nimport Text from '@atoms/Text/Text';\nimport { IIconButton } from '@models/IIconButton';\nimport classNames from 'classnames';\n\nconst IconButton = ({\n className,\n dataTestId,\n href,\n label,\n icon,\n onClick,\n}: IIconButton) => {\n const Component = href ? 'a' : 'button';\n\n return (\n onClick()}\n className={classNames(className, 'tw-flex tw-items-center tw-gap-3')}\n >\n \n {label}\n \n );\n};\n\nexport default IconButton;\n","import Icon from '@atoms/Icon/Icon';\nimport Text from '@atoms/Text/Text';\nimport SiteEnum from '@models/enums/SiteEnum';\nimport { slideTransition } from '@utility/config/animations';\nimport useModal from '@utility/hooks/useModal';\nimport classNames from 'classnames';\nimport { AnimatePresence, motion } from 'motion/react';\nimport { PropsWithChildren, useRef } from 'react';\nimport Portal from './Portal';\n\nexport interface IFullScreenModal {\n readonly closeLabel?: string;\n readonly isOpen: boolean;\n readonly setIsOpen: (state: boolean) => void;\n readonly site?: SiteEnum;\n readonly title: string;\n}\n\nconst FullScreenModal = ({\n children,\n closeLabel = 'close',\n isOpen,\n setIsOpen,\n site = SiteEnum.B2B,\n title,\n}: PropsWithChildren) => {\n const targetRef = useRef(null);\n\n useModal(isOpen, setIsOpen, targetRef);\n\n return (\n \n {isOpen && (\n \n \n
\n \n {/* {title} */}\n {title}\n setIsOpen(false)}\n >\n \n \n
\n {children}\n \n \n
\n )}\n
\n );\n};\n\nexport default FullScreenModal;\n","import classNames from 'classnames';\nimport { PropsWithChildren } from 'react';\n\ninterface IRows {\n borderTop?: boolean;\n borderBottom?: boolean;\n className?: string;\n}\n\nconst Rows = ({\n children,\n borderTop,\n borderBottom = true,\n className = '',\n}: PropsWithChildren) => {\n const containerClasses = classNames(\n 'tw-divide-y tw-divide-grey-20',\n className,\n {\n 'tw-border-t tw-border-grey-20': borderTop,\n 'tw-border-b tw-border-grey-20': borderBottom,\n }\n );\n\n return
{children}
;\n};\n\nexport default Rows;\n","import Icon from '@atoms/Icon/Icon';\nimport Portal from '@atoms/Modal/Portal';\nimport { IExpandableBanner } from '@models/IExpandableBanner';\nimport { slideTransition } from '@utility/config/animations';\nimport bodyScrollLock from '@utility/helpers/bodyScrollLock';\nimport FocusTrap from 'focus-trap-react';\nimport { AnimatePresence, motion } from 'motion/react';\nimport { PropsWithChildren, useEffect, useRef, useState } from 'react';\nconst ExpandableBanner = ({\n dataTestId,\n children,\n text,\n}: PropsWithChildren) => {\n const [isOpen, setOpen] = useState(false);\n\n const targetRef = useRef(null);\n\n useEffect(() => {\n if (isOpen && targetRef.current) {\n bodyScrollLock(true);\n }\n\n return () => {\n bodyScrollLock(false);\n };\n }, [isOpen]);\n\n return (\n \n \n
\n \n {\n setOpen(!isOpen);\n }}\n className=\"tw-w-full tw-cursor-pointer tw-bg-grey-30 tw-py-xs tw-text-sm tw-outline-none focus-visible:tw-ring-2 focus-visible:tw-ring-black\"\n aria-expanded={isOpen}\n aria-controls=\"expandable-banner\"\n data-testid={`${dataTestId}-Expandable-Banner-Button`}\n >\n
\n {text}\n \n \n \n
\n \n
\n \n {isOpen && (\n \n \n {children}\n \n \n )}\n \n
\n \n
\n \n
\n );\n};\n\nexport default ExpandableBanner;\n","const ensureArray = (value: string | string[]): string[] => {\n if (typeof value === 'string') {\n return [value];\n }\n return value;\n};\n\nexport default ensureArray;\n","import IProductDatasheets, {\n IProductDatasheet,\n} from '@models/IProductDatasheets';\n\n// The JSON structure for datasheets contains quite a complex structure, hence the need for this function\n// see: productDatasheets.mocks.ts\nconst extractDocumentsFromProductsArray = (products: IProductDatasheets[]) => {\n const extractedDatasheetsArray: IProductDatasheet[] = [];\n\n const extractDatasheetsFromValueArray = (filesArray: IProductDatasheet[]) => {\n filesArray.forEach((item) => {\n extractedDatasheetsArray.push(item);\n });\n };\n\n products.forEach((product) => {\n product.value.forEach((datasheetsTypeSet) => {\n extractDatasheetsFromValueArray(datasheetsTypeSet.value);\n\n if (datasheetsTypeSet.children && datasheetsTypeSet.children.length > 0) {\n datasheetsTypeSet.children.forEach((datasheetChildset) => {\n extractDatasheetsFromValueArray(datasheetChildset.value);\n });\n }\n });\n });\n\n return extractedDatasheetsArray;\n};\n\nexport default extractDocumentsFromProductsArray;\n","const removeObjectKeys = (\n object: Record,\n excludedKeys: string[]\n) => {\n const objectWithKeysRemoved = { ...object }; // Create a copy of the original object\n\n excludedKeys.forEach((key) => {\n if (objectWithKeysRemoved.hasOwnProperty(key)) {\n delete objectWithKeysRemoved[key]; // Delete the property if it exists\n }\n });\n\n return objectWithKeysRemoved;\n};\n\nexport default removeObjectKeys;\n","import Checkbox from '@atoms/Checkbox/Checkbox';\nimport Icon from '@atoms/Icon/Icon';\nimport Text from '@atoms/Text/Text';\nimport IFormComponent from '@models/IFormComponent';\nimport { ChangeEvent } from 'react';\n\ninterface IDownloadItemRow extends IFormComponent {\n readonly dataTestId: string;\n readonly selectedDocumentIds: string[];\n readonly setSelectedDocumentIds: (newSelectedIds: string[]) => void;\n readonly removeDocument: (id: string) => void;\n readonly value: string;\n readonly label: string;\n readonly fileName: string;\n readonly name: string;\n readonly downloadLabel: string;\n readonly addLabel: string;\n readonly fileUrl: string;\n readonly cultureCode: string;\n readonly category: string;\n readonly customerInfo: {\n readonly industryNameForPageLoadTracking: string;\n readonly subIndustryNameForPageLoadTracking: string;\n readonly targetAudienceForPageLoadTracking: string;\n readonly regionForPageLoadTracking: string;\n };\n}\n\nconst DownloadItemRow = ({\n dataTestId,\n selectedDocumentIds,\n setSelectedDocumentIds,\n removeDocument,\n value,\n name,\n addLabel,\n fileName,\n fileUrl,\n cultureCode,\n downloadLabel,\n category,\n register,\n customerInfo,\n}: IDownloadItemRow) => {\n const onCheckboxChange = (e: ChangeEvent) => {\n const isChecked = e.target?.checked;\n const documentId = e.target.defaultValue;\n const prevDocumentIds = [...selectedDocumentIds];\n if (isChecked) {\n setSelectedDocumentIds([...prevDocumentIds, documentId]);\n } else {\n removeDocument(documentId);\n }\n };\n\n return (\n
\n \n {name}\n \n
\n {\n window.dataLayer.push({\n event: 'trackingEvent_file_download',\n event_name_variable: 'file_download',\n trackingEvent_file_download: {\n document_name: fileName,\n language_for_document: cultureCode,\n document_type: category,\n },\n customer_info: {\n user_industry: customerInfo.industryNameForPageLoadTracking,\n user_sub_industry:\n customerInfo.subIndustryNameForPageLoadTracking,\n user_region: customerInfo.regionForPageLoadTracking,\n target_audience: customerInfo.targetAudienceForPageLoadTracking,\n },\n });\n }}\n data-testid={`${dataTestId}-Download-Item-Button`}\n >\n \n \n {downloadLabel}\n \n \n onCheckboxChange(e)}\n name=\"documents\"\n value={value}\n label={addLabel}\n register={register}\n hideLabelOnMobile\n />\n
\n
\n );\n};\n\nexport default DownloadItemRow;\n","import Checkbox from '@atoms/Checkbox/Checkbox';\nimport Select from '@atoms/Select/Select';\nimport Text from '@atoms/Text/Text';\nimport VariantTypeEnum from '@models/enums/VariantTypeEnum';\nimport { IFilter, IFilterGroup } from '@models/IFilterGroup';\nimport IFormComponent from '@models/IFormComponent';\nimport { ChangeEvent } from 'react';\n\ninterface IFilterSection extends IFormComponent {\n readonly countries: (IFilter & { readonly languages?: IFilter[] })[];\n readonly countryPlaceholder: string;\n readonly dataTestId: string;\n readonly disableLanguageSelection: boolean;\n readonly filters: IFilterGroup;\n readonly onCountryChange: (countryItem: IFilter, reset: boolean) => void;\n readonly languagePlaceholder: string;\n readonly languages: IFilter[];\n readonly selectedLanguage: IFilter | null;\n readonly setSelectedLanguage: (newSelectedItem: IFilter | null) => void;\n readonly selectedCountry: IFilter | null;\n readonly setSelectedCountry: (newSelectedItem: IFilter | null) => void;\n readonly selectedFileTypes: string[];\n readonly setSelectedFileTypes: (newSelectedItem: string[]) => void;\n}\n\nconst FilterSection = ({\n countries,\n countryPlaceholder,\n dataTestId,\n disableLanguageSelection,\n filters,\n onCountryChange,\n languagePlaceholder,\n languages,\n register,\n selectedLanguage,\n setSelectedLanguage,\n selectedCountry,\n setSelectedCountry,\n selectedFileTypes,\n setSelectedFileTypes,\n setValue,\n}: IFilterSection) => {\n const onCheckboxChange = (\n e: ChangeEvent,\n filterId: string\n ) => {\n const isChecked = e.target?.checked;\n const prevFileTypes = [...selectedFileTypes];\n const parsedFilterId = String(filters.id);\n if (isChecked) {\n setSelectedFileTypes([...prevFileTypes, filterId]);\n setValue?.(parsedFilterId, [...selectedFileTypes, filterId]);\n } else {\n setSelectedFileTypes(prevFileTypes?.filter((id) => id !== filterId));\n setValue?.(\n parsedFilterId,\n selectedFileTypes.filter((id) => id !== filterId)\n );\n }\n };\n\n return (\n
\n {\n setValue?.('language', '');\n if (item) {\n setSelectedCountry(item);\n onCountryChange(item, true);\n }\n }}\n options={countries}\n placeholder={countryPlaceholder}\n register={register}\n selectedItem={selectedCountry}\n setValue={setValue}\n variant={VariantTypeEnum.Primary}\n />\n \n
\n \n {filters.label}\n \n
\n {filters.options.map((filter, index) => {\n const filterId = String(filter.id);\n return (\n onCheckboxChange(e, filterId)}\n key={filter.id}\n label={filter.label}\n name={filterId}\n register={register}\n value={filter.id}\n />\n );\n })}\n
\n
\n
\n );\n};\n\nexport default FilterSection;\n","import AccordionItem from '@atoms/AccordionItem/AccordionItem';\nimport Button from '@atoms/Button/Button';\nimport Checkbox from '@atoms/Checkbox/Checkbox';\nimport Icon from '@atoms/Icon/Icon';\nimport IconButton from '@atoms/IconButton/IconButton';\nimport LoadingSpinner from '@atoms/LoadingSpinner/LoadingSpinner';\nimport FullScreenModal from '@atoms/Modal/FullScreenModal';\nimport Rows from '@atoms/Rows/Rows';\nimport Search from '@atoms/Search/Search';\nimport Text from '@atoms/Text/Text';\nimport { IFilter } from '@models/IFilterGroup';\nimport IFormValues from '@models/IFormValues';\nimport IProductDatasheets, {\n IDatasheetTypeSetChildren,\n IProductDatasheet,\n} from '@models/IProductDatasheets';\nimport {\n IProductDatasheetsResponse,\n ITechnicalDownloadSearch,\n ITechnicalDownloadSearchFormData,\n} from '@models/ITechnicalDownloadSearch';\nimport BreakpointEnum from '@models/enums/BreakpointEnum';\nimport SizeEnum from '@models/enums/SizeEnum';\nimport Accordion from '@molecules/Accordion/Accordion';\nimport ExpandableBanner from '@molecules/ExpandableBanner/ExpandableBanner';\nimport ListingPlaceholder from '@molecules/ListingPlaceholder/ListingPlaceholder';\nimport { breakpointsAbove } from '@utility/config/breakpoints';\nimport ensureArray from '@utility/helpers/ensureArray';\nimport extractDocumentsFromProductsArray from '@utility/helpers/extractDocumentsFromProductsArray';\nimport removeObjectKeys from '@utility/helpers/removeObjectKeys';\nimport replaceValuesInLabel from '@utility/helpers/replaceValuesInLabel';\nimport useBreakpoint from '@utility/hooks/useBreakpoint';\nimport useListingComponentData from '@utility/hooks/useListingComponentData';\nimport classNames from 'classnames';\nimport queryString from 'query-string';\nimport { useEffect, useState } from 'react';\nimport { SubmitHandler, useForm } from 'react-hook-form';\nimport DownloadItemRow from './components/DownloadItemRow';\nimport FilterSection from './components/FilterSection';\n\nconst TechnicalDownloadSearchPage = ({\n addAllLabel,\n addLabel,\n apiEndpoint,\n applyLabel,\n closeLabel,\n collapseLabel,\n countries,\n countryPlaceholder,\n currentCulture,\n defaultCountryCode,\n documentsAddedLabel,\n documentsLabel,\n documentsShownLabel,\n downloadAsMultipleLabel,\n downloadAsSingleLabel,\n downloadLabel,\n expandLabel,\n filterLabel,\n filters,\n header,\n industryNameForPageLoadTracking,\n languagePlaceholder,\n loadingLabel,\n noResultsHeader,\n noResultsLabel,\n noResultsText,\n noSearchTermHeader,\n noSearchTermText,\n openLabel,\n regionForPageLoadTracking,\n removeAllLabel,\n removeLabel,\n requiredErrorMessage,\n searchLabel,\n site,\n subIndustryNameForPageLoadTracking,\n subText,\n targetAudienceForPageLoadTracking,\n}: ITechnicalDownloadSearch) => {\n const [expandAll, setExpandAll] = useState(false);\n const [submittedText, setSubmittedText] = useState('');\n const [isMobileFiltersOpen, setIsMobileFiltersOpen] = useState(false);\n const [selectedLanguage, setSelectedLanguage] = useState(\n null\n );\n const [selectedCountry, setSelectedCountry] = useState({\n label: countryPlaceholder,\n id: '',\n });\n const [selectedFileTypes, setSelectedFileTypes] = useState([]);\n const [selectedDocumentIds, setSelectedDocumentIds] = useState([]);\n const [languageOptions, setLanguageOptions] = useState([]);\n const [languagesLoading, setLanguagesLoading] = useState(false);\n\n const breakpoint = useBreakpoint();\n\n const searchEndpoint = `${apiEndpoint}/search`;\n\n const downloadEndpoint = `${apiEndpoint}/download/`;\n\n const dataTestIdPrefix = 'C26-TDS';\n\n // Get params from the current address in the client, but whitelisted by filters to ensure any other values are not converted\n const parsedUrlParams =\n typeof window !== 'undefined' &&\n queryString.parse(\n queryString.pick(window?.location?.search, [\n 'freetext',\n 'location',\n 'language',\n filters.id as string,\n ]),\n { arrayFormat: 'comma' }\n );\n\n const initialSearchText = parsedUrlParams ? parsedUrlParams?.freetext : '';\n\n // Initialise listing component data\n const { fetchData, state } = useListingComponentData<\n ITechnicalDownloadSearchFormData,\n IProductDatasheetsResponse\n >(searchEndpoint, { products: [] });\n\n // Initialise react-hook-form\n const {\n register,\n handleSubmit,\n formState: { errors, isSubmitSuccessful },\n watch,\n setValue,\n getValues,\n } = useForm({\n defaultValues: {\n documents: [] as string[],\n ...parsedUrlParams,\n } as IFormValues,\n });\n\n // is add all checkbox checked\n const addAllChecked = watch('addAll');\n\n // country\n const country = watch('location') as string;\n\n // create an array of only documents from products data - they come from the api in a complex nested structure\n const allDocuments = extractDocumentsFromProductsArray(state.data.products);\n\n // create an array of all unique document ids - the same documents can be listed in the 'children' for multiple top-level documents\n const allUniqueDocumentIds = Array.from(\n new Set(allDocuments.map((document) => `${document.id}`))\n );\n\n // select all documents\n const selectAllDocuments = () => setSelectedDocumentIds(allUniqueDocumentIds);\n\n // remove a document\n const removeDocument = (documentId: string) =>\n setSelectedDocumentIds(\n selectedDocumentIds?.filter((id) => id !== documentId)\n );\n\n // remove all documents\n const removeAllDocuments = () => setSelectedDocumentIds([]);\n\n // create an array of document objects so they can be used in the expandable banner\n const selectedDocuments = selectedDocumentIds.map((id) =>\n allDocuments.find((document) => `${document.id}` === id)\n ) as IProductDatasheet[];\n\n // Submit handler\n const onSubmit: SubmitHandler = async (data, e) => {\n e?.preventDefault();\n\n await fetchData(\n removeObjectKeys(data, [\n 'addAll',\n ...filters.options.map((filter) => filter.id as string),\n ])\n );\n setSubmittedText(`${data.freetext ?? ''}`);\n setValue('addAll', null);\n };\n\n // A shared function which will get languages and populate the language dropdown accordingly\n const setLanguages = async (countryItem: IFilter, reset: boolean = true) => {\n setSelectedLanguage(null);\n setLanguagesLoading(true);\n const response = await fetch(\n `${apiEndpoint}/country/languages/?countryCode=${countryItem.id}&siteCulture=${currentCulture}`\n );\n const data = (await response.json()) as IFilter[];\n\n setLanguageOptions(data?.length ? data : []);\n setLanguagesLoading(false);\n // This if statement is used for when this function is called in useEffect() to get languages first time around\n if (\n parsedUrlParams &&\n parsedUrlParams.language &&\n parsedUrlParams.location &&\n !reset\n ) {\n const language = data.find(\n (language) => language.id === parsedUrlParams.language\n );\n if (language) {\n setSelectedLanguage(language);\n setValue('language', language.id as string);\n }\n }\n };\n\n // user's default country takes precedence, but if that is not being passed then it will use whatever is in the query param\n useEffect(() => {\n const initialCountryCode =\n (parsedUrlParams && parsedUrlParams.location) || defaultCountryCode;\n\n const initialCountry = countries.find(\n (country) => country.id === initialCountryCode\n );\n\n if (initialCountry) {\n setSelectedCountry(initialCountry);\n setValue('location', initialCountry.id as string);\n setLanguages(initialCountry, false);\n }\n\n // Initial state for file categories\n const initialFileTypes =\n (parsedUrlParams as ITechnicalDownloadSearchFormData)[\n filters.id as string\n ] ?? filters.options.map((option) => option.id as string);\n\n setValue(filters.id as string, ensureArray(initialFileTypes));\n setSelectedFileTypes(ensureArray(initialFileTypes));\n\n // Only do an initial fetch if there is parameters in the query string\n if (\n parsedUrlParams &&\n (parsedUrlParams.freetext || (parsedUrlParams.freetext && initialCountry))\n ) {\n fetchData({\n ...parsedUrlParams,\n location: initialCountry?.id as string,\n });\n }\n }, []);\n\n useEffect(() => {\n document.documentElement.style.overflowY = 'auto';\n }, []);\n\n useEffect(() => {\n if (state.data.products.length) {\n window.dataLayer.push({\n event: 'trackingEvent_search_results',\n event_name_variable: 'search_results',\n trackingEvent_search_results: {\n search_type: 'datasheet',\n search_count: state.data.products.length,\n search_term: getValues('freetext'),\n document_type: selectedFileTypes\n .map((value) => value.toLocaleUpperCase())\n .sort(),\n document_language: selectedLanguage?.label ?? languagePlaceholder,\n document_country: selectedCountry?.label ?? countryPlaceholder,\n },\n });\n }\n }, [state.data.products]);\n\n const filterSectionProps = {\n countries: [{ label: countryPlaceholder, id: '' }, ...countries],\n countryPlaceholder,\n filters,\n onCountryChange: setLanguages,\n languagePlaceholder,\n languages: languageOptions,\n register,\n selectedLanguage,\n setSelectedLanguage,\n selectedCountry,\n setSelectedCountry,\n selectedFileTypes,\n setSelectedFileTypes,\n setValue,\n disableLanguageSelection: !country || languagesLoading,\n };\n\n return (\n
\n \n
\n {header}\n \n {subText}\n \n
\n
\n \n {/*\n ---------------------------------------\n FILTERS MODAL / ACCORDION - MOBILE ONLY\n ---------------------------------------\n */}\n setIsMobileFiltersOpen(true)}\n type=\"button\"\n className=\"tw-flex tw-w-full tw-items-center tw-justify-between tw-rounded-[4px] tw-bg-grey-10 tw-p-xs tw-outline-none xl:tw-hidden\"\n data-testid={`${dataTestIdPrefix}-Mobile-Filter-Button`}\n >\n {filterLabel}\n \n \n \n
\n \n
\n
\n {\n e.preventDefault();\n const submitHandler = handleSubmit(onSubmit);\n submitHandler(e);\n setIsMobileFiltersOpen(false);\n }}\n label={applyLabel}\n dataTestId={`${dataTestIdPrefix}-Mobile-Apply-Filter-Button`}\n />\n
\n \n \n {allDocuments.length === 0\n ? noResultsLabel\n : replaceValuesInLabel(documentsShownLabel, [\n allDocuments.length,\n ])}\n \n
\n {/*\n -------------------------------------\n DESKTOP FILTERS / PRODUCT COUNT LABEL\n -------------------------------------\n */}\n {breakpoint &&\n breakpointsAbove(BreakpointEnum.Large).includes(breakpoint) && (\n
\n \n {allDocuments.length === 0\n ? noResultsLabel\n : replaceValuesInLabel(documentsShownLabel, [\n allUniqueDocumentIds.length,\n ])}\n \n
\n \n
\n {\n e.preventDefault();\n const submitHandler = handleSubmit(onSubmit);\n submitHandler(e);\n }}\n variant=\"yellow\"\n label={applyLabel}\n dataTestId={`${dataTestIdPrefix}-Desktop-Apply-Filter-Button`}\n />\n
\n )}\n {/*\n -----------------------------------------------------\n MAIN TABLE AREA - INCLUDING SECTIONS FOR ERROR STATES\n -----------------------------------------------------\n */}\n
\n {state.loading && (\n
\n \n
\n )}\n {/* USER HAS NOT ENTERED A SEARCH TERM */}\n {!state.loading &&\n !state.data.products.length &&\n !isSubmitSuccessful && (\n \n )}\n {/* NO PRODUCT FOUND FOR APPLIED FILTERS / TEXT */}\n {!state.loading &&\n isSubmitSuccessful &&\n state.data.products.length === 0 && (\n \n )}\n {/*\n --------------------------------\n MAIN DOCUMENTS TABLE / ACCORDION\n --------------------------------\n */}\n {!state.loading && !!state.data.products.length && (\n <>\n
\n setExpandAll(!expandAll)}\n label={expandAll ? collapseLabel : expandLabel}\n dataTestId={`${dataTestIdPrefix}-${\n expandAll ? 'Collapse-All-Button' : 'Expand-All-Button'\n }`}\n />\n \n addAllChecked ? removeAllDocuments() : selectAllDocuments()\n }\n label={addAllChecked ? removeAllLabel : addAllLabel}\n register={register}\n dataTestId={`${dataTestIdPrefix}-Add-All-Button`}\n />\n
\n \n {state.data.products.map(\n (product: IProductDatasheets, index: number) => (\n \n {product.value.map((datasheetsSet, setIndex: number) => (\n 0\n ? 'tw-ml-xs lg:tw-ml-sm'\n : 'tw-pl-xs lg:tw-pl-sm'\n )}\n >\n \n \n {datasheetsSet.name}\n \n {datasheetsSet.value.map((datasheet) => (\n \n ))}\n \n {!!datasheetsSet.children.length && (\n \n {datasheetsSet.children.map(\n (\n childSet: IDatasheetTypeSetChildren,\n index\n ) => (\n \n \n {childSet.value.map((childDatasheet) => (\n \n ))}\n \n \n )\n )}\n \n )}\n
\n ))}\n \n )\n )}\n \n \n )}\n \n \n {/*\n -----------------\n EXPANDABLE BANNER\n -----------------\n */}\n {selectedDocuments.length > 0 && (\n \n \n
\n
\n \n \n
\n
\n
\n \n
\n {documentsLabel}\n removeAllDocuments()}\n data-testid={`${dataTestIdPrefix}-Expandable-Banner-Remove-All-Button`}\n >\n \n {removeAllLabel}\n \n \n
\n {selectedDocuments.map((document, index) => (\n \n \n {`${document.name} (${document.location} - ${document.language})`}\n \n removeDocument(`${document.id}`)}\n data-testid={`${dataTestIdPrefix}-Expandable-Banner-Document-Remove-Button-${index}`}\n >\n \n {removeLabel}\n \n \n
\n ))}\n \n \n \n \n )}\n
\n );\n};\n\nexport default TechnicalDownloadSearchPage;\n","import { ITechnicalDownloadSearch } from '@models/ITechnicalDownloadSearch';\nimport SiteEnum from '@models/enums/SiteEnum';\nimport SharedTechnicalDownloadSearch from '@organisms/TechnicalDownloadSearch/TechnicalDownloadSearch';\n\nconst TechnicalDownloadSearch = (props: ITechnicalDownloadSearch) => (\n \n);\n\nexport default TechnicalDownloadSearch;\n"],"names":["_ref","mountId","children","containerElement","useMemo","document","createElement","useEffect","getElementById","appendChild","removeChild","createPortal","result","match","matchIndex","toLowerCase","indexOf","startString","substring","matchString","length","endString","React","Fragment","className","autoCompleteEndpoint","autoFocus","backgroundColor","dataTestId","errors","initialValue","label","large","list","name","predictiveCharacterLength","register","requiredErrorMessage","searchClasses","setValue","darkMode","onAutoCompleteSelect","clearSearch","rest","inputValue","setInputValue","useState","suggestions","useAsyncList","load","_ref2","signal","filterText","items","res","fetch","json","isLoading","debouncedValueChange","useRef","debounce","async","_ref3","setFilterText","shouldValidate","current","isOpen","getLabelProps","getMenuProps","getToggleButtonProps","getInputProps","highlightedIndex","getItemProps","selectedItem","reset","useCombobox","onInputValueChange","initialInputValue","showDropdown","hasErrors","classNames","_extends","htmlFor","value","type","onKeyDown","e","key","required","undefined","Icon","size","LoadingSpinner","loadingLabel","SizeEnum","Medium","map","item","index","HighlightedResult","ErrorMessage","render","_ref4","message","Text","variant","slideTransition","duration","ease","fadeTransition","delay","fadeInUp","hidden","opacity","y","transition","visible","stiffness","damping","isScrollLocked","documentElementScroll","documentElement","style","getPropertyValue","cacheLocator","window","scrollY","throttledSetScrollY","throttle","setProperty","addEventListener","body","scrollbarGutter","overflowY","position","top","left","right","scrollTo","Math","abs","parseInt","func","limit","lastFunc","lastRan","_len","arguments","args","Array","_key","context","this","clearTimeout","setTimeout","Date","now","apply","apiEndpoint","initialData","skipEmptyString","pushToUrl","state","setState","data","loading","error","isInitialData","fetchData","requestQueryString","queryString","stringify","formData","arrayFormat","response","ok","Error","status","currentUrl","URL","location","href","searchParams","Object","keys","forEach","set","toString","history","pushState","useModal","setIsOpen","targetRef","usePreventScroll","isDisabled","activeElement","modalElement","focusableElements","querySelectorAll","firstElement","lastElement","handleTabKeyPress","event","shiftKey","preventDefault","focus","handleEscapeKeyPress","removeEventListener","checked","hideLabelOnMobile","indeterminate","labelClasses","onChange","richTextLabel","props","viewBox","points","dangerouslySetInnerHTML","__html","icon","onClick","Component","closeLabel","site","SiteEnum","B2B","title","AnimatePresence","Portal","motion","div","initial","animate","exit","role","ref","tabIndex","id","borderTop","borderBottom","containerClasses","text","setOpen","bodyScrollLock","height","rotate","mode","FocusTrap","focusTrapOptions","preventScroll","allowOutsideClick","products","extractedDatasheetsArray","extractDatasheetsFromValueArray","filesArray","push","product","datasheetsTypeSet","datasheetChildset","removeObjectKeys","object","excludedKeys","objectWithKeysRemoved","hasOwnProperty","selectedDocumentIds","setSelectedDocumentIds","removeDocument","addLabel","fileName","fileUrl","cultureCode","downloadLabel","category","customerInfo","target","rel","dataLayer","event_name_variable","trackingEvent_file_download","document_name","language_for_document","document_type","customer_info","user_industry","industryNameForPageLoadTracking","user_sub_industry","subIndustryNameForPageLoadTracking","user_region","regionForPageLoadTracking","target_audience","targetAudienceForPageLoadTracking","Checkbox","includes","isChecked","documentId","defaultValue","prevDocumentIds","onCheckboxChange","countries","countryPlaceholder","disableLanguageSelection","filters","onCountryChange","languagePlaceholder","languages","selectedLanguage","setSelectedLanguage","selectedCountry","setSelectedCountry","selectedFileTypes","setSelectedFileTypes","Select","displayLabel","onSelectedItemChange","options","placeholder","VariantTypeEnum","Primary","disabled","filter","filterId","String","prevFileTypes","parsedFilterId","addAllLabel","applyLabel","collapseLabel","currentCulture","defaultCountryCode","documentsAddedLabel","documentsLabel","documentsShownLabel","downloadAsMultipleLabel","downloadAsSingleLabel","expandLabel","filterLabel","header","noResultsHeader","noResultsLabel","noResultsText","noSearchTermHeader","noSearchTermText","openLabel","removeAllLabel","removeLabel","searchLabel","subText","expandAll","setExpandAll","submittedText","setSubmittedText","isMobileFiltersOpen","setIsMobileFiltersOpen","languageOptions","setLanguageOptions","languagesLoading","setLanguagesLoading","breakpoint","useBreakpoint","searchEndpoint","downloadEndpoint","dataTestIdPrefix","parsedUrlParams","parse","pick","search","initialSearchText","freetext","useListingComponentData","handleSubmit","formState","isSubmitSuccessful","watch","getValues","useForm","defaultValues","documents","addAllChecked","country","allDocuments","extractDocumentsFromProductsArray","allUniqueDocumentIds","from","Set","removeAllDocuments","selectedDocuments","find","onSubmit","setLanguages","countryItem","language","initialCountryCode","initialCountry","initialFileTypes","option","ensureArray","trackingEvent_search_results","search_type","search_count","search_term","toLocaleUpperCase","sort","document_language","document_country","filterSectionProps","Search","isArray","FullScreenModal","FilterSection","Button","buttonClasses","submitHandler","replaceValuesInLabel","breakpointsAbove","BreakpointEnum","Large","ListingPlaceholder","iconName","IconButton","Accordion","AccordionItem","datasheetsSet","setIndex","Rows","datasheet","DownloadItemRow","childSet","childDatasheet","ExpandableBanner","as","download","modifier","SharedTechnicalDownloadSearch"],"sourceRoot":""}