{"version":3,"file":"newsList.0762b8fcdb5d6ea68677.chunk.js","mappings":"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","sources":["webpack://AlfaLaval/./node_modules/classnames/index.js","webpack://AlfaLaval/./components/Accordion/Accordion.tsx","webpack://AlfaLaval/./components/Accordion/index.ts","webpack://AlfaLaval/./components/LoadingSpinner/LoadingSpinner.tsx","webpack://AlfaLaval/./components/RadioButton/RadioButton.tsx","webpack://AlfaLaval/./components/Select/components/CategoryList.tsx","webpack://AlfaLaval/./components/Select/components/SubCategoriesList.tsx","webpack://AlfaLaval/./components/Select/Select.tsx","webpack://AlfaLaval/./components/Select/Select.hooks.ts","webpack://AlfaLaval/./helpers/stringHelpers.ts","webpack://AlfaLaval/./hooks/useOutsideClick.tsx","webpack://AlfaLaval/./pages/NewsList/components/NewsFilter/NewsFilter.helpers.ts","webpack://AlfaLaval/./pages/NewsList/components/NewsFilter/NewsFilter.tsx","webpack://AlfaLaval/./pages/NewsList/components/NewsListContainer/NewsListItemHorizontal.tsx","webpack://AlfaLaval/./pages/NewsList/components/NewsListContainer/NewsListItemVertical.tsx","webpack://AlfaLaval/./pages/NewsList/components/NewsListContainer/NewsListContainer.tsx","webpack://AlfaLaval/./pages/NewsList/NewsList.service.ts","webpack://AlfaLaval/./pages/NewsList/NewsList.tsx","webpack://AlfaLaval/./pages/NewsList/index.ts","webpack://AlfaLaval/./pages/NewsList/NewsList.hooks.ts","webpack://AlfaLaval/./services/endpoints.ts"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { useWinSize } from '@contexts/WinSizeContext';\r\nimport classNames from 'classnames';\r\nimport React, { useState, useEffect } from 'react';\r\nimport './Accordion.scss';\r\n\r\ninterface ContainerProps {\r\n className?: string;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Container = ({ className, children }: ContainerProps) => {\r\n return
{children}
;\r\n};\r\n\r\ninterface Tab {\r\n id: string | number;\r\n name: string | React.ReactNode;\r\n}\r\n\r\ninterface SectionProps {\r\n isOpen?: boolean;\r\n index?: number;\r\n // used to open first accordion of a specific block on mobile\r\n accordionBlockSelector?: string;\r\n onClick?: (tab: Tab) => void;\r\n children: React.ReactNode;\r\n tab: Tab;\r\n className?: string;\r\n url?: string | null;\r\n iconUrl?: string;\r\n hasIcon?: boolean;\r\n isLight?: boolean;\r\n}\r\n\r\nconst Section = ({\r\n isOpen,\r\n index,\r\n onClick,\r\n accordionBlockSelector = '#RelatedTabs',\r\n children,\r\n tab,\r\n className,\r\n url,\r\n iconUrl,\r\n isLight,\r\n hasIcon,\r\n}: SectionProps) => {\r\n const tabHead = '.c-accordion-tabs-head';\r\n const tabBody = '.c-accordion-tabs-body';\r\n const firstAccordionStyle = 'c-accordion-tabs-is-open';\r\n\r\n const [isOpened, setIsOpened] = useState(!!isOpen);\r\n const { isDesktop } = useWinSize();\r\n const isMobile = !isDesktop;\r\n\r\n useEffect(() => {\r\n openFirstAccordion();\r\n\r\n if (isDesktop) {\r\n window.addEventListener('resize', openFirstAccordion);\r\n return () => {\r\n window.removeEventListener('resize', openFirstAccordion);\r\n };\r\n }\r\n }, []);\r\n\r\n const handleClick = (tab: Tab) => {\r\n const firstAccordionIsOpen =\r\n index == 0 &&\r\n document\r\n .querySelector(`${accordionBlockSelector} ${tabHead}`)\r\n .classList.contains(firstAccordionStyle);\r\n\r\n if (firstAccordionIsOpen) {\r\n closeFirstAccordion();\r\n } else {\r\n setIsOpened(!isOpened);\r\n }\r\n\r\n if (onClick) onClick(tab);\r\n };\r\n\r\n // To open 1st accordion(related tabs) by default for screens < 800 px\r\n const openFirstAccordion = () => {\r\n const accordionHead = document.querySelector(`${accordionBlockSelector} ${tabHead}`);\r\n const accordionBody = document.querySelector(`${accordionBlockSelector} ${tabBody}`);\r\n if (window.innerWidth < 800 && accordionHead && accordionBody) {\r\n accordionHead.classList.add(firstAccordionStyle);\r\n accordionBody.classList.add(firstAccordionStyle);\r\n }\r\n };\r\n\r\n // To close 1st accordion(related tabs) conditionally for screens < 800 px as state is common for all accordions\r\n const closeFirstAccordion = () => {\r\n const accordionHead = document.querySelector(`${accordionBlockSelector} ${tabHead}`);\r\n const accordionBody = document.querySelector(`${accordionBlockSelector} ${tabBody}`);\r\n if (window.innerWidth < 800 && accordionHead && accordionBody) {\r\n accordionHead.classList.remove(firstAccordionStyle);\r\n accordionBody.classList.remove(firstAccordionStyle);\r\n setIsOpened(false);\r\n }\r\n };\r\n\r\n const itemheading = !(className || isMobile) ? 'c-accordion-tabs-is-open' : '';\r\n\r\n return (\r\n
\r\n handleClick(tab)}\r\n className={classNames(\r\n `c-accordion-tabs-head ${className}`,\r\n `c-tabs-${tab.id}`,\r\n itemheading || '',\r\n isOpened ? 'c-accordion-tabs-is-open' : '',\r\n isLight ? 'c-accordion-tabs-head-light' : ''\r\n )}\r\n >\r\n
\r\n {hasIcon && (\r\n \r\n )}\r\n

\r\n {url !== null ? (\r\n \r\n event.stopPropagation()}>{tab.name}\r\n \r\n ) : (\r\n tab.name\r\n )}\r\n

\r\n {(!!className || isMobile) && (\r\n \r\n )}\r\n
\r\n
\r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport { Container, Section };\r\n","import {Section, Container} from \"./Accordion\";\r\n\r\nexport const Accordion = {Section, Container};\r\n","import React from \"react\";\r\nimport \"./LoadingSpinner.scss\";\r\n\r\nexport const LoadingSpinner = () => {\r\n return (\r\n
\r\n \"Loading\"\r\n
\r\n );\r\n};\r\n","import React, { forwardRef } from 'react';\r\nimport classNames from 'classnames';\r\n\r\ninterface RadioButtonProps {\r\n title?: string;\r\n id: string;\r\n name: string;\r\n onChange?: (event: React.ChangeEvent) => void;\r\n checked?: boolean;\r\n value?: string;\r\n}\r\n\r\nexport const RadioButton = forwardRef(\r\n ({ title, id, name, onChange, checked = false, value, ...props }, ref) => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n);\r\n","import React from 'react';\r\nimport { SelectItem } from '../Select.types';\r\n\r\ninterface CategoryListProps {\r\n name: string;\r\n sub: string;\r\n selectableTitle: boolean;\r\n onClickSelectableTitle?: () => void;\r\n onSelect: (item: SelectItem[]) => void;\r\n defaultTitle: string;\r\n list: SelectItem[];\r\n}\r\n\r\nexport const CategoryList = ({\r\n name,\r\n sub,\r\n selectableTitle,\r\n onClickSelectableTitle,\r\n onSelect,\r\n defaultTitle,\r\n list,\r\n}: CategoryListProps) => {\r\n return (\r\n
\r\n
  • \r\n {defaultTitle}\r\n
  • \r\n {...list.map((item, index) => (\r\n
  • onSelect(item[sub])}>\r\n {item[name]}\r\n \r\n
  • \r\n ))}\r\n
    \r\n );\r\n};\r\n","import React from 'react';\r\nimport { SelectItem } from '../Select.types'\r\n\r\ninterface SubCategoriesListProps {\r\n name: string;\r\n backLabel?: string;\r\n onClickBack?: () => void;\r\n list: SelectItem[];\r\n onSelect: (item: SelectItem) => void;\r\n}\r\n\r\nexport const SubCategoriesList = ({\r\n name,\r\n backLabel,\r\n onClickBack,\r\n list,\r\n onSelect,\r\n}: SubCategoriesListProps) => {\r\n return (\r\n
    \r\n
  • \r\n \r\n \r\n {backLabel || 'Back'}\r\n \r\n
  • \r\n {...list.map((item, index) => (\r\n
  • onSelect(item)}>\r\n {item[name]}\r\n
  • \r\n ))}\r\n
    \r\n );\r\n};\r\n","import React, { useState, useRef, useEffect } from 'react';\r\nimport { useOutsideClick } from '@hooks/useOutsideClick';\r\nimport { CategoryList } from './components/CategoryList';\r\nimport { SubCategoriesList } from './components/SubCategoriesList';\r\nimport { useReset } from './Select.hooks';\r\nimport { getComputerName } from '@helpers/stringHelpers';\r\nimport { SelectItem } from './Select.types';\r\nimport './Select.scss';\r\n\r\ninterface List {\r\n [key: string]: Array | string;\r\n Id: string;\r\n Name: string;\r\n}\r\n\r\ninterface SelectProps {\r\n name: string;\r\n sub: string;\r\n resetTime?: number | null;\r\n selectFunction: (item: SelectItem) => void;\r\n defaultTitle: string;\r\n selectableTitle?: boolean;\r\n title: string;\r\n list: List[];\r\n label?: string;\r\n backLabel?: string;\r\n required?: boolean;\r\n}\r\n\r\nexport const Select = ({\r\n name,\r\n sub,\r\n resetTime,\r\n selectFunction,\r\n defaultTitle,\r\n selectableTitle,\r\n required = false,\r\n title,\r\n list,\r\n label = '',\r\n backLabel,\r\n}: SelectProps) => {\r\n const [isShowing, setIsShowing] = useState(false);\r\n const [selectedCategory, setSelectedCategory] = useState(null);\r\n const [selectedCategoryItem, setSelectedCategoryItem] = useState(null);\r\n\r\n const doReset = () => {\r\n setIsShowing(false);\r\n setSelectedCategory(null);\r\n setSelectedCategoryItem(null);\r\n };\r\n\r\n useReset(resetTime, doReset);\r\n\r\n useEffect(() => {\r\n doReset();\r\n }, [list]);\r\n\r\n const selectRef = useRef(null);\r\n const handleClickOutside = () => {\r\n setIsShowing(false);\r\n };\r\n useOutsideClick(selectRef, handleClickOutside);\r\n\r\n const handleClick = () => {\r\n setIsShowing(!isShowing);\r\n };\r\n\r\n const selectCategory = (category: SelectItem[]) => {\r\n setSelectedCategory(category);\r\n };\r\n\r\n const selectCategoryItem = (item: SelectItem) => {\r\n selectFunction(item);\r\n setSelectedCategoryItem(item);\r\n setIsShowing(false);\r\n setSelectedCategory(null);\r\n };\r\n\r\n const onClickSelectableTitle = () => {\r\n if (selectableTitle) {\r\n selectFunction(null);\r\n doReset();\r\n }\r\n };\r\n\r\n const back = () => {\r\n setSelectedCategory(null);\r\n };\r\n\r\n return (\r\n
    \r\n {label && (\r\n \r\n )}\r\n\r\n
    \r\n
    \r\n {selectedCategoryItem ? selectedCategoryItem[name] : title}\r\n \r\n
    \r\n {isShowing && (\r\n
    \r\n
      \r\n {!selectedCategory ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n","import { useState, useEffect } from 'react';\r\n\r\nexport const useReset = (resetTime: number | null, doReset: () => void) => {\r\n const [reset, setReset] = useState(resetTime);\r\n\r\n useEffect(() => {\r\n if (resetTime && resetTime !== reset) {\r\n doReset();\r\n setReset(resetTime);\r\n }\r\n }, [resetTime]);\r\n};\r\n","// replaces all spaces with -\r\nexport const getComputerName = (str: string): string => {\r\n if (!str) return '';\r\n const computerName = str.replace(/\\s+/g, '-').toLowerCase();\r\n return computerName;\r\n};\r\n\r\nexport const truncateString = (str: string, limit: number): string => {\r\n if (!str) return '';\r\n let truncated = str.substring(0, limit);\r\n truncated += '...';\r\n return truncated;\r\n};\r\n\r\nexport const normalizeInput = (value: string): string => {\r\n return value.toLowerCase().trim();\r\n};\r\n\r\nexport const interpolateString = (str: string, ...args: string[]): string => {\r\n let interpolatedString = str;\r\n args.forEach((arg, index) => {\r\n interpolatedString = interpolatedString.replace(`{${index}}`, arg);\r\n });\r\n return interpolatedString;\r\n};\r\n","import { useEffect } from \"react\";\r\n\r\nexport const useOutsideClick = (\r\n ref: React.RefObject,\r\n handler: Function\r\n) => {\r\n return useEffect(() => {\r\n const handleClick = (e: any) => {\r\n if (ref.current && !ref.current.contains(e.target)) {\r\n handler(e);\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousedown\", handleClick);\r\n document.addEventListener(\"touchstart\", handleClick);\r\n\r\n return () => {\r\n document.removeEventListener(\"mousedown\", handleClick);\r\n document.removeEventListener(\"touchstart\", handleClick);\r\n };\r\n }, [ref, handler]);\r\n};\r\n","import { NewsListFilter } from \"@pages/NewsList/NewsList.types\";\r\nimport { CountryItem, IndustryItem } from \"@type/common\";\r\n\r\nexport const setURLfromFilters = (f: Omit) => {\r\n const url = new URL(window.location.href);\r\n url.searchParams.set('page', '0');\r\n url.searchParams.set('country', f.country || '');\r\n url.searchParams.set('industries', f.industries || '');\r\n url.searchParams.set('category', f.category || '');\r\n url.searchParams.set('startDate', f.startDate);\r\n url.searchParams.set('endDate', f.endDate);\r\n window.history.pushState({}, null, url);\r\n};\r\n\r\nexport const getNameFromSubList = (id: string, list: (CountryItem | IndustryItem)[], subListName: string): string => {\r\n let returnName = '';\r\n list.forEach((item) => {\r\n item[subListName].forEach((subListItem) => {\r\n if (parseInt(subListItem.Id) === parseInt(id))\r\n returnName = subListItem.Name;\r\n });\r\n });\r\n return returnName;\r\n};\r\n\r\nexport const getFiltersFromURL = (): Omit => {\r\n const url = new URL(window.location.href);\r\n\r\n return {\r\n country: url.searchParams.get('country') || '',\r\n industries: url.searchParams.get('industries') || '',\r\n category: url.searchParams.get('category') || '',\r\n startDate: url.searchParams.get('startDate') || '',\r\n endDate: url.searchParams.get('endDate') || '',\r\n };\r\n};\r\n","import React, { useState, MouseEvent } from 'react';\r\nimport { Select } from '@components/Select';\r\nimport { RadioButton } from '@components/RadioButton';\r\nimport { setURLfromFilters, getNameFromSubList, getFiltersFromURL } from './NewsFilter.helpers';\r\nimport './NewsFilter.scss';\r\nimport { NewsListFilter } from '@pages/NewsList/NewsList.types';\r\nimport { CountryItem, IndustryItem } from '@type/common';\r\n\r\ntype NewsFilterItems = Omit;\r\ninterface NewsFilterProps {\r\n i18n: Record;\r\n onSaveFilter: (filters: NewsFilterItems) => void;\r\n categories: Record;\r\n industriesList: IndustryItem[];\r\n countriesList: CountryItem[];\r\n isLoadingNews: boolean;\r\n}\r\n\r\nconst defaultFilters: NewsFilterItems = {\r\n industries: '',\r\n country: '',\r\n category: '',\r\n startDate: '',\r\n endDate: '',\r\n};\r\n\r\nexport const NewsFilter = ({\r\n i18n,\r\n onSaveFilter,\r\n categories,\r\n industriesList,\r\n countriesList,\r\n isLoadingNews,\r\n}: NewsFilterProps) => {\r\n const [filters, setFilters] = useState>(getFiltersFromURL());\r\n const dateError = Date.parse(filters.endDate) < Date.parse(filters.startDate);\r\n\r\n const doResetFilters = () => {\r\n setFilters(defaultFilters);\r\n setURLfromFilters(defaultFilters);\r\n };\r\n\r\n const setFilter = (key: string, val: string | number) => {\r\n const newFilters = { ...filters };\r\n\r\n newFilters[key] = val;\r\n\r\n setURLfromFilters(newFilters);\r\n setFilters(newFilters);\r\n };\r\n\r\n const handleUpdateClick = (e: MouseEvent) => {\r\n e.preventDefault();\r\n onSaveFilter(filters);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {categories && (\r\n
    \r\n
    \r\n {i18n.CategoryTitle}\r\n setFilter('category', '')}\r\n id='all_radio'\r\n name='category'\r\n checked={filters.category === ''}\r\n />\r\n {Object.keys(categories).map((category) => (\r\n {\r\n setFilter('category', categories[category]);\r\n }}\r\n name='category'\r\n checked={parseInt(filters.category) === categories[category]}\r\n />\r\n ))}\r\n
    \r\n
    \r\n )}\r\n\r\n {countriesList && (\r\n
    \r\n
    \r\n \r\n setFilter('country', value?.Id ? value.Id : '')}\r\n backLabel={i18n.Back}\r\n />\r\n
    \r\n
    \r\n )}\r\n\r\n
    \r\n
    \r\n {i18n.IndustryTitle}\r\n setFilter('industries', value?.Id ? value.Id : '')}\r\n backLabel={i18n.Back}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {i18n.StartDateTitle}\r\n setFilter('startDate', e.currentTarget.value)}\r\n className={dateError ? 'c-input-date c-news-filter-error-border' : 'c-input-date'}\r\n name='startDate'\r\n type='date'\r\n id='startDate'\r\n value={filters.startDate}\r\n />\r\n
    \r\n
    \r\n {i18n.EndDateTitle}\r\n setFilter('endDate', e.currentTarget.value)}\r\n className={dateError ? 'c-input-date c-news-filter-error-border' : 'c-input-date'}\r\n name='endDate'\r\n type='date'\r\n id='endDate'\r\n value={filters.endDate}\r\n />\r\n
    \r\n\r\n {dateError &&
    {i18n.DateValidation}
    }\r\n
    \r\n
    \r\n
    \r\n \r\n {i18n.UpdateButtonText}\r\n \r\n \r\n {i18n.ResetFilterButtonText}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n","import React, { useEffect, memo } from 'react';\r\nimport { truncateString } from '@helpers/stringHelpers';\r\nimport { NewsItem } from '@pages/NewsList/NewsList.types';\r\n\r\ninterface NewsListItemHorizontalProps {\r\n model: NewsItem;\r\n}\r\n\r\nexport const NewsListItemHorizontal = memo(({ model }: NewsListItemHorizontalProps) => {\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {model.Date}\r\n

    {model.Title}

    \r\n {model.Introduction && (\r\n

    {truncateString(model.Introduction, 130)}

    \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n});\r\n","import React, { memo, useEffect } from 'react';\r\nimport { truncateString } from '@helpers/stringHelpers';\r\nimport { NewsItem } from '@pages/NewsList/NewsList.types';\r\n\r\ninterface NewsListItemVerticalProps {\r\n model: NewsItem;\r\n}\r\n\r\nexport const NewsListItemVertical = memo(({ model }: NewsListItemVerticalProps) => {\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {model.Date}\r\n

    {model.Title}

    \r\n

    {truncateString(model.Introduction, 100)}

    \r\n
    \r\n
    \r\n
    \r\n );\r\n});\r\n","import React from 'react';\r\nimport { LoadingSpinner } from '@components/LoadingSpinner';\r\nimport { NewsListItemHorizontal } from './NewsListItemHorizontal';\r\nimport { NewsListItemVertical } from './NewsListItemVertical';\r\nimport { NewsList } from '@pages/NewsList/NewsList.types';\r\n\r\ninterface NewsListContainerProps {\r\n newsList: NewsList;\r\n isLoading: boolean;\r\n notFoundText: string;\r\n}\r\n\r\nexport const NewsListContainer = ({\r\n newsList,\r\n isLoading,\r\n notFoundText,\r\n}: NewsListContainerProps) => {\r\n const newsListItems = newsList && newsList.NewsListItems ? newsList.NewsListItems : [];\r\n\r\n return (\r\n <>\r\n {newsList && newsList.NewsListItems && newsList.NewsListItems.length == 0 && (\r\n
    \r\n

    {notFoundText}

    \r\n
    \r\n )}\r\n\r\n
    \r\n {newsListItems.slice(0, 2).map((newsPage, index) => (\r\n
    \r\n \r\n
    \r\n ))}\r\n
    \r\n\r\n
    \r\n {newsListItems.slice(2, 5).map((newsPage, index) => (\r\n
    \r\n \r\n
    \r\n ))}\r\n
    \r\n\r\n
    \r\n
    \r\n
      \r\n {newsListItems.slice(5).map((newsPage, index) => (\r\n
    • \r\n \r\n
    • \r\n ))}\r\n
    \r\n\r\n {isLoading && }\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n","import { apiSlice } from '@services/apiSlice';\r\nimport { News as endpoints } from '@services/endpoints';\r\nimport { NewsList, NewsPage } from './NewsList.types';\r\n\r\ninterface NewsQueryParams {\r\n page: number;\r\n category: string;\r\n country: string;\r\n industries: string\r\n startDate: string;\r\n endDate: string;\r\n}\r\n\r\nconst newsApi = apiSlice\r\n .enhanceEndpoints({\r\n addTagTypes: ['News'],\r\n })\r\n .injectEndpoints({\r\n endpoints: (build) => ({\r\n fetchNewsPageData: build.query({\r\n query: () => ({\r\n url: endpoints.fetchNews,\r\n params: { lang: window.lang, pageId: window.pageId },\r\n }),\r\n }),\r\n fetchNews: build.query({\r\n query: (params) => ({\r\n url: endpoints.fetchNews,\r\n params: { lang: window.lang, pageId: window.pageId, ...params },\r\n }),\r\n }),\r\n }),\r\n overrideExisting: false,\r\n })\r\n\r\nexport const { useLazyFetchNewsQuery, useFetchNewsPageDataQuery } = newsApi;","import React, { useEffect, useState } from 'react';\r\nimport { NewsFilter } from './components/NewsFilter';\r\nimport { NewsListContainer } from './components/NewsListContainer/NewsListContainer';\r\nimport { getFiltersFromURL } from './components/NewsFilter/NewsFilter.helpers';\r\nimport { Accordion } from '@components/Accordion';\r\nimport './NewsList.scss';\r\nimport { useFetchNewsPageDataQuery, useLazyFetchNewsQuery } from './NewsList.service';\r\nimport { NewsList, NewsListFilter } from './NewsList.types';\r\nimport { LoadingSpinner } from '@components/LoadingSpinner';\r\nimport { useLoadMoreNews } from './NewsList.hooks';\r\nimport { useScrollPosition } from '@contexts/ScrollContext';\r\n\r\nexport const NewsListPage = () => {\r\n const [newsList, setNewsList] = useState({\r\n NewsListItems: [],\r\n HasNextPage: true,\r\n });\r\n const [page, setPage] = useState(0);\r\n const { scrollHeight } = useScrollPosition();\r\n const [fetchNews, { isFetching: isLoadingNews, isUninitialized }] = useLazyFetchNewsQuery();\r\n const { data: newsPage, isLoading: isLoadingPage } = useFetchNewsPageDataQuery();\r\n\r\n useLoadMoreNews({\r\n scrollHeight,\r\n onLoadMore: () => setPage((page) => page + 1),\r\n isLoadingNews,\r\n hasNextPage: newsList?.HasNextPage,\r\n });\r\n\r\n const onSaveFilters = (filters: Omit) => {\r\n setPage(0);\r\n fetchNews({ ...filters, page: 0 }).then(({ data }) => setNewsList(data));\r\n };\r\n\r\n useEffect(() => {\r\n const filters = getFiltersFromURL();\r\n\r\n if (!isUninitialized && page === 0) return;\r\n // appending new items to the list\r\n fetchNews({ ...filters, page }).then(({ data }) => {\r\n setNewsList((prevNewsList) => ({\r\n ...data,\r\n NewsListItems: [...prevNewsList.NewsListItems, ...data?.NewsListItems],\r\n }));\r\n });\r\n }, [page]);\r\n\r\n return (\r\n <>\r\n {isLoadingPage && }\r\n {!isLoadingPage && (\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n\r\n {newsPage.ContentArea && (\r\n \r\n )}\r\n
    \r\n
    \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default NewsListPage;\r\n","import NewsList from \"./NewsList\";\r\nexport default NewsList;\r\n","import { useEffect, useRef } from \"react\";\r\n\r\ninterface UseLoadMoreNewsProps {\r\n hasNextPage: boolean;\r\n scrollHeight: number;\r\n onLoadMore: () => void;\r\n isLoadingNews: boolean;\r\n}\r\n\r\nexport const useLoadMoreNews = ({\r\n hasNextPage,\r\n scrollHeight,\r\n isLoadingNews,\r\n onLoadMore,\r\n}: UseLoadMoreNewsProps) => {\r\n const newsListDivRef = useRef(null);\r\n\r\n useEffect(() => {\r\n newsListDivRef.current = document.querySelector('#news-list');\r\n }, []);\r\n\r\n useEffect(() => {\r\n const handleScroll = () => {\r\n const newsListHeight = newsListDivRef.current?.scrollHeight;\r\n if (\r\n newsListHeight &&\r\n !isLoadingNews &&\r\n hasNextPage &&\r\n scrollHeight >= newsListHeight\r\n ) {\r\n onLoadMore();\r\n }\r\n };\r\n window.addEventListener('scroll', handleScroll);\r\n\r\n return () => {\r\n window.removeEventListener('scroll', handleScroll);\r\n };\r\n }, [scrollHeight]);\r\n};\r\n","export const Breadcrumb = {\r\n fetchBreadcrumb: '/webapi/Breadcrumb/Get',\r\n};\r\n\r\nexport const Footer = {\r\n fetchFooter: '/api/footer',\r\n};\r\n\r\nexport const CountrySelector = {\r\n fetchCountrySelectList: '/webapi/CountrySelector/Get',\r\n};\r\n\r\nexport const RelatedTabs = {\r\n fetchRelatedTabs: '/webapi/RelatedTabs/Get',\r\n relatedTabs: '/webapi/RelatedTabs/GetTabs', // NOT IN USE\r\n};\r\n\r\nexport const Search = {\r\n doSearch: '/webapi/SearchApi/SearchFor',\r\n doSearchAutocomplete: '/webapi/SearchApi/GetAutocomplete',\r\n};\r\n\r\nexport const NewsAndStories = {\r\n fetchNewsAndStoriesData: '/webapi/NewsListingApi/GetNewsListItems',\r\n fetchNews: '/webapi/NewsListingApi/GetNewsList',\r\n fetchStories: '/webapi/StoriesList/Get',\r\n};\r\n\r\nexport const Webinars = {\r\n fetchWebinarBanner: '/webapi/WebinarLandingPage/Get',\r\n fetchWebinarList: '/webapi/WebinarPage/Get',\r\n};\r\n\r\nexport const Header = {\r\n fetchHeader: '/webapi/Header/Get', //NOT IN USE\r\n fetchSubNavigation: '/webapi/SubNavigation/Get',\r\n fetchMegaMenuNavigation: '/api/mainmenu',\r\n fetchGeolocation: '/api/Geolocation',\r\n fetchTopMenu: '/api/TopNavigation/',\r\n fetchMegaMenuColumn: '/webapi/menuitems/columns',\r\n};\r\n\r\nexport const Stories = {\r\n fetchStories: '/webapi/StoriesList/Get',\r\n};\r\n\r\nexport const News = {\r\n fetchNews: '/webapi/NewsListPage/Get',\r\n};\r\n\r\nexport const Vacancies = {\r\n fetchVacancies: '/webapi/Vacancy/Get', // NOT IN USE\r\n};\r\n\r\nexport const Webshop = {\r\n fetchWebshop: '/webapi/WebShop/Get', // NOT IN USE\r\n};\r\n\r\nexport const ContactUs = {\r\n fetchContactUsForm: '/webapi/ContactUsForm/GetForm',\r\n fetchFindOfficeData: '/webapi/CountriesCategories/Get',\r\n fetchEnquiryForm: '/webapi/contactus/getenquiryform',\r\n fetchEnquirySerialLinkData: '/webapi/contactus/GetModalPopUp',\r\n submitEnquiryForm: '/Quote/ProcessForm',\r\n fetchEnquiryApplicationList: '/webapi/contactus/GetIndustryApplication',\r\n};\r\n\r\nexport const InvestorRelations = {\r\n fetchPressReleaseFilterData: '/api/v1/ir/pressrelease',\r\n fetchInvestorRelationsNews: '/api/v1/ir/news',\r\n fetchInvestorRelationsPage: '/api/v1/ir/page2',\r\n fetchInvestorRelationsMenu: '/api/v1/ir/menu2',\r\n makeSubscription: '//publish.ne.cision.com/Subscription/SubscribeWithCaptcha',\r\n};\r\n\r\nexport const CoolCalc = {\r\n getCoolCalc: '/webapi/CoolCalc/Get', // NOT IN USE\r\n shareCoolCalc: '/webapi/CoolCalc/Save',\r\n};\r\n\r\nexport const Hexpert = {\r\n fetchHexpertPage: '/api/v1/hex/page',\r\n getAntiForgeryToken: '/api/v1/hex/GetAntiForgery',\r\n submitHexpertForm: '/EPiServer.Forms/DataSubmit/Submit',\r\n createHexpertPdf: '/api/v1/hex/CreatePdf',\r\n getIsMatchingProducts: '/api/v1/hex/IsMatchingProduct',\r\n getHexpertResult: '/api/v1/hex/GetResult',\r\n mailResult: '/api/v1/hex/SendMail',\r\n};\r\n\r\nexport const SafetyDatasheet = {\r\n fetchSafetyDatasheet: '/webapi/SafetyDataSheet/GetSafetyDataSheetResult',\r\n};\r\n"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","includes","key","call","join","module","exports","default","define","window","Accordion","Section","isOpen","index","onClick","accordionBlockSelector","children","tab","className","url","iconUrl","isLight","hasIcon","tabHead","tabBody","firstAccordionStyle","isOpened","setIsOpened","useState","isDesktop","isMobile","useEffect","openFirstAccordion","addEventListener","removeEventListener","accordionHead","document","querySelector","accordionBody","innerWidth","classList","add","closeFirstAccordion","remove","itemheading","contains","handleClick","id","style","background","href","event","stopPropagation","name","Container","LoadingSpinner","src","alt","RadioButton","forwardRef","title","onChange","checked","value","props","ref","type","defaultChecked","CategoryList","sub","selectableTitle","onClickSelectableTitle","onSelect","defaultTitle","list","map","item","SubCategoriesList","backLabel","onClickBack","Select","resetTime","selectFunction","required","label","isShowing","setIsShowing","selectedCategory","setSelectedCategory","selectedCategoryItem","setSelectedCategoryItem","doReset","reset","setReset","useReset","selectRef","useRef","useOutsideClick","htmlFor","category","getComputerName","str","replace","toLowerCase","truncateString","limit","truncated","substring","interpolateString","args","interpolatedString","forEach","handler","e","current","target","setURLfromFilters","f","URL","location","searchParams","set","country","industries","startDate","endDate","history","pushState","getNameFromSubList","subListName","returnName","subListItem","parseInt","Id","Name","getFiltersFromURL","get","defaultFilters","NewsFilter","i18n","onSaveFilter","categories","industriesList","countriesList","isLoadingNews","filters","setFilters","dateError","Date","parse","setFilter","val","newFilters","CategoryTitle","AllCategory","keys","CountryTitle","ShowAllRegions","Back","IndustryTitle","AllIndustry","StartDateTitle","currentTarget","EndDateTitle","DateValidation","disabled","preventDefault","UpdateButtonText","ResetFilterButtonText","NewsListItemHorizontal","memo","model","ContentLink","loading","Image","ImageAlt","height","width","Title","Introduction","NewsListItemVertical","NewsListContainer","newsList","isLoading","notFoundText","newsListItems","NewsListItems","slice","newsPage","newsApi","apiSlice","addTagTypes","injectEndpoints","endpoints","build","fetchNewsPageData","query","params","lang","pageId","fetchNews","overrideExisting","useLazyFetchNewsQuery","useFetchNewsPageDataQuery","setNewsList","HasNextPage","page","setPage","scrollHeight","isFetching","isUninitialized","data","isLoadingPage","hasNextPage","onLoadMore","newsListDivRef","handleScroll","newsListHeight","useLoadMoreNews","then","prevNewsList","I18n","ResultNotFound","NewsFilterTitle","CountriesList","IndustriesList","ContentArea","dangerouslySetInnerHTML","__html","Breadcrumb","fetchBreadcrumb","Footer","fetchFooter","CountrySelector","fetchCountrySelectList","RelatedTabs","fetchRelatedTabs","relatedTabs","Search","doSearch","doSearchAutocomplete","NewsAndStories","fetchNewsAndStoriesData","fetchStories","Webinars","fetchWebinarBanner","fetchWebinarList","Header","fetchHeader","fetchSubNavigation","fetchMegaMenuNavigation","fetchGeolocation","fetchTopMenu","fetchMegaMenuColumn","Stories","News","ContactUs","fetchContactUsForm","fetchFindOfficeData","fetchEnquiryForm","fetchEnquirySerialLinkData","submitEnquiryForm","fetchEnquiryApplicationList","InvestorRelations","fetchPressReleaseFilterData","fetchInvestorRelationsNews","fetchInvestorRelationsPage","fetchInvestorRelationsMenu","makeSubscription","CoolCalc","getCoolCalc","shareCoolCalc","Hexpert","fetchHexpertPage","getAntiForgeryToken","submitHexpertForm","createHexpertPdf","getIsMatchingProducts","getHexpertResult","mailResult","SafetyDatasheet","fetchSafetyDatasheet"],"sourceRoot":""}