{"version":3,"file":"static/js/873.a8618bd2.chunk.js","mappings":"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","sources":["platformui/Matomo/matomo-track-search.js","platformui/SearchBlock/tracked-link.js","platformui/Containers/withSearch.js","platformui/RevisedAndPublished/index.js","platformui/TabMenu/index.js","platformui/SearchBlock/listitem.js","platformui/Hooks/useArrowNavigation.js","platformui/Inputs/custom-select.js","platformui/SearchBlock/searchheading.js","platformui/SearchBlock/list.js","platformui/SearchBlock/external-search-utils.js","platformui/KeywordHints/index.js","platformui/Facets/index.js","platformui/SearchBlock/index.js","platformui/Pagination/index.js"],"sourcesContent":["import { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst MatomoTrackSearch = ({\r\n Search = undefined,\r\n SearchCategory = undefined,\r\n SearchHits = 0,\r\n SearchLocation = undefined,\r\n ExternalSearchHits = undefined,\r\n}) => {\r\n useEffect(() => {\r\n if (window?._paq && Search && SearchCategory) {\r\n var searchKeyword = `${Search}`;\r\n\r\n if (ExternalSearchHits) {\r\n ExternalSearchHits?.map((tab) => {\r\n if (tab.SearchResult?.TotalHits === 0) {\r\n searchKeyword = `${Search};${SearchCategory}`;\r\n\r\n if (SearchLocation) {\r\n searchKeyword = `${Search};${SearchLocation};${SearchCategory}`;\r\n }\r\n }\r\n window?._paq.push([\r\n 'trackSiteSearch',\r\n searchKeyword,\r\n (SearchCategory = tab.SearchApiIndex),\r\n (SearchHits = tab.SearchResult?.TotalHits || 0),\r\n ]);\r\n });\r\n } else {\r\n if (SearchHits === 0 && SearchCategory !== 'Globalt sök') {\r\n searchKeyword = `${Search};${SearchCategory}`;\r\n\r\n if (SearchLocation) {\r\n searchKeyword = `${Search};${SearchLocation};${SearchCategory}`;\r\n }\r\n }\r\n\r\n window?._paq.push([\r\n 'trackSiteSearch',\r\n searchKeyword,\r\n SearchCategory,\r\n SearchHits,\r\n ]);\r\n }\r\n }\r\n }, []);\r\n\r\n return null;\r\n};\r\n\r\nMatomoTrackSearch.propTypes = {\r\n Search: PropTypes.string,\r\n SearchCategory: PropTypes.string,\r\n SearchHits: PropTypes.number,\r\n};\r\n\r\nexport default MatomoTrackSearch;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport A from '../Anchor';\r\n\r\n/**\r\n * Used for custom click tracking with EPI find.\r\n *\r\n * Params `HitId`, `query`, `Trackid` are required to get correct tracking.\r\n *\r\n * Other props will be spread to the native <a> element.\r\n *\r\n */\r\nconst ClickTrackLink = ({\r\n HitId,\r\n DisableClickTracking,\r\n TrackId,\r\n query,\r\n children,\r\n href,\r\n NewTab,\r\n className,\r\n containsLinks,\r\n ...attr\r\n}) => {\r\n function trackClick() {\r\n fetch(\r\n `/api/v2/search/trackclick?hitId=${HitId}&query=${query}&trackId=${TrackId}`\r\n );\r\n }\r\n\r\n const trackLinkClick = () =>\r\n !DisableClickTracking && TrackId ? trackClick() : undefined;\r\n\r\n return containsLinks ? (\r\n <div className={className} {...attr}>\r\n {children}\r\n </div>\r\n ) : (\r\n <A\r\n {...attr}\r\n onClick={() => {\r\n trackLinkClick();\r\n }}\r\n href={href}\r\n NewTab={NewTab}\r\n className={className}\r\n >\r\n {children}\r\n </A>\r\n );\r\n};\r\n\r\nClickTrackLink.propTypes = {\r\n /** (BE) */\r\n HitId: PropTypes.string,\r\n /** (BE) */\r\n TrackId: PropTypes.string,\r\n /** (BE) */\r\n DisableClickTracking: PropTypes.bool,\r\n query: PropTypes.string,\r\n children: PropTypes.node,\r\n href: PropTypes.string.isRequired,\r\n NewTab: PropTypes.bool,\r\n className: PropTypes.string,\r\n containsLinks: PropTypes.bool,\r\n};\r\n\r\nexport default ClickTrackLink;\r\n","import queryString from 'qs';\r\nimport React, { Component } from 'react';\r\nimport { withRouter } from 'react-router';\r\nimport { fetchByQuery, filterPages, loadMorePages } from '../Actions/search';\r\nimport { search } from '../Reducers/search';\r\n\r\nexport default (\r\n WrappedComponent,\r\n componentName,\r\n endPoint = '/api/search/search',\r\n callbacks = {\r\n afterFetchByQuery: () => {},\r\n afterLoadMorePages: () => {},\r\n }\r\n) => {\r\n class Container extends Component {\r\n query = queryString.parse(this.props.location.search, {\r\n ignoreQueryPrefix: true,\r\n indices: false,\r\n });\r\n key = this.query.p || 0;\r\n\r\n endPoint = this.props.SearchApiUrl || endPoint;\r\n\r\n //Set initial state\r\n state = search({\r\n isLoading: false,\r\n ...this.props.SearchResult,\r\n });\r\n\r\n getComponentName() {\r\n return componentName;\r\n }\r\n\r\n //TODO: Change to redux\r\n dispatch(action) {\r\n this.setState(search(this.getState(), action));\r\n }\r\n\r\n getState() {\r\n return this.state;\r\n }\r\n\r\n fetch(query) {\r\n fetchByQuery(`${this.endPoint}?${query}`)(\r\n this.dispatch.bind(this),\r\n this.getState.bind(this),\r\n callbacks.afterFetchByQuery\r\n );\r\n }\r\n\r\n updateSearchFromUrl(locationSearch) {\r\n const qs = queryString.parse(locationSearch, {\r\n ignoreQueryPrefix: true,\r\n indices: false,\r\n });\r\n\r\n qs.componentname = this.getComponentName();\r\n\r\n if (this.props.Theme) qs.theme = this.props.Theme;\r\n if (this.props.InformationType)\r\n qs.informationtype = this.props.InformationType;\r\n if (this.props.SearchOriginId) qs.so = this.props.SearchOriginId;\r\n if (this.state.BatchSize && !qs.batchsize)\r\n qs.batchsize = this.state.BatchSize;\r\n if (this.state.SortOrder) qs.sortorder = this.state.SortOrder;\r\n if (this.state.HistoryDays) qs.days = this.state.HistoryDays;\r\n if (this.state.RootLink) qs.rootLink = this.state.RootLink;\r\n if (this.state.Categories && this.state.Categories.length > 0) {\r\n qs.category = this.state.Categories;\r\n }\r\n if (this.state.IsArticleSearch) {\r\n qs.isArticleSearch = this.state.IsArticleSearch;\r\n }\r\n\r\n const query = this.props.Categories\r\n ? `${queryString.stringify(qs, {\r\n indices: false,\r\n })}&${queryString.stringify({\r\n category: this.props.Categories,\r\n indices: false,\r\n })}`\r\n : queryString.stringify(qs, { indices: false });\r\n\r\n const isExternalSearch = !!qs.site;\r\n\r\n const endpoint = isExternalSearch\r\n ? this.getExternalEndpoint({\r\n searchApiUrl: this.props.SearchApiUrl,\r\n searchApiIndex: qs.site,\r\n location: this.props.location,\r\n })\r\n : this.endPoint;\r\n\r\n if (qs.p) {\r\n loadMorePages(`${endpoint}?${query}`)(\r\n this.dispatch.bind(this),\r\n this.getState.bind(this),\r\n callbacks.afterLoadMorePages\r\n );\r\n } else {\r\n filterPages(`${endpoint}?${query}`)(\r\n this.dispatch.bind(this),\r\n this.getState.bind(this)\r\n );\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.searchOnMount) {\r\n this.updateSearchFromUrl(this.props.location.search);\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.location.search !== this.props.location.search) {\r\n this.updateSearchFromUrl(this.props.location.search);\r\n }\r\n }\r\n\r\n getExternalEndpoint({ searchApiUrl, searchApiIndex, location }) {\r\n const apiEndpoint = searchApiUrl?.endsWith('/')\r\n ? searchApiUrl\r\n : `${searchApiUrl || ''}/`;\r\n\r\n const endpointWithSiteIndex = searchApiIndex\r\n ? `${apiEndpoint}${searchApiIndex}/`\r\n : apiEndpoint;\r\n\r\n const pathnameSegments =\r\n location?.pathname?.split('/').filter(Boolean) || [];\r\n const regionalizedSearch =\r\n pathnameSegments.length > 1 ? pathnameSegments[0] : '';\r\n\r\n return regionalizedSearch\r\n ? `${endpointWithSiteIndex}${regionalizedSearch}/`\r\n : endpointWithSiteIndex;\r\n }\r\n\r\n parseForm(form) {\r\n var obj = {};\r\n var elements = form.querySelectorAll('input, select, textarea');\r\n for (var i = 0; i < elements.length; ++i) {\r\n var element = elements[i];\r\n var name = element.name;\r\n var value = element.value;\r\n\r\n if (name) {\r\n obj[name] = value;\r\n }\r\n }\r\n }\r\n\r\n onSubmit(e, query) {\r\n e.preventDefault();\r\n const pathname = this.props.location.pathname;\r\n const qs = queryString.stringify(query, { indices: false });\r\n location.href = `${pathname}?${qs}`;\r\n }\r\n\r\n render() {\r\n return (\r\n <WrappedComponent\r\n {...this.props}\r\n SearchResult={this.state}\r\n Search={(query) => this.fetch(query)}\r\n onSubmit={(e, query) => this.onSubmit(e, query)}\r\n />\r\n );\r\n }\r\n }\r\n\r\n return withRouter(Container);\r\n};\r\n","import React from 'react';\r\nimport { string, bool, shape } from 'prop-types';\r\n\r\nconst RevisedAndPublished = ({\r\n revisedAsPublished,\r\n isNew,\r\n translations,\r\n eventDate,\r\n subjectHeading,\r\n}) => {\r\n const Date = () => {\r\n return isNew || revisedAsPublished ? (\r\n <p className=\"new\">\r\n {translations.published} <span>{eventDate}</span>\r\n </p>\r\n ) : (\r\n <p className=\"revised\">\r\n {translations.revised} <span>{eventDate}</span>\r\n </p>\r\n );\r\n };\r\n\r\n return (\r\n <div className=\"revised-and-published\">\r\n {eventDate && <Date />}\r\n {subjectHeading && (\r\n <p>\r\n {translations.subject} <span>{subjectHeading}</span>\r\n </p>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nRevisedAndPublished.propTypes = {\r\n eventDate: string,\r\n revisedAsPublished: bool,\r\n isNew: bool,\r\n subjectHeading: string,\r\n translations: shape({\r\n subject: string,\r\n published: string,\r\n revised: string,\r\n }),\r\n};\r\n\r\nexport default RevisedAndPublished;\r\n","import classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { isMediumViewport } from '../Hooks/useMedia';\r\nimport useWindowLocationHref from '../Hooks/useWindowLocation';\r\nimport CustomSelect from '../Inputs/custom-select';\r\n\r\nconst TabMenu = ({\r\n tabs,\r\n handleTabChange,\r\n showCount,\r\n showResponsiveDropdown,\r\n srLabel,\r\n}) => {\r\n const handleClick = (key) => {\r\n handleTabChange(key);\r\n };\r\n\r\n const href = useWindowLocationHref();\r\n const isMedium = isMediumViewport();\r\n\r\n if (showResponsiveDropdown && isMedium) {\r\n return (\r\n <CustomSelect\r\n srLabel={srLabel}\r\n options={tabs.map((tab) => ({\r\n key: tab.key,\r\n value: tab.label + (showCount && ` (${tab.count})`),\r\n }))}\r\n selectedItem={tabs.find((tab) => tab.isActive)}\r\n onChange={(selectedOption) => {\r\n handleClick(selectedOption.key);\r\n }}\r\n id={'search'}\r\n />\r\n );\r\n }\r\n return (\r\n <nav className=\"c-tab-menu\">\r\n <ul className=\"c-tab-menu__list\">\r\n {tabs.map((tab) => (\r\n <li\r\n data-event-category=\"Syskonsajtsök 1177 Vårdperonal\"\r\n data-event-action={tab.label}\r\n data-event-name={href || 'novalue'}\r\n data-event-value={tab.count}\r\n key={tab.key}\r\n className={'c-tab-menu__item'}\r\n >\r\n <button\r\n onClick={(e) => {\r\n e.preventDefault();\r\n handleClick(tab.key);\r\n }}\r\n className={classNames({\r\n 'c-tab-menu__button': true,\r\n 'c-tab-menu__button--active': tab.isActive,\r\n })}\r\n aria-label={tab.screenReaderText}\r\n >\r\n <span aria-hidden data-event-include>\r\n {tab.label}\r\n {showCount && ` (${tab.count})`}\r\n </span>\r\n </button>\r\n </li>\r\n ))}\r\n </ul>\r\n </nav>\r\n );\r\n};\r\n\r\nTabMenu.propTypes = {\r\n tabs: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n key: PropTypes.string.isRequired,\r\n label: PropTypes.string.isRequired,\r\n totalHits: PropTypes.number,\r\n isActive: PropTypes.bool.isRequired,\r\n screenReaderText: PropTypes.string,\r\n })\r\n ).isRequired,\r\n handleTabChange: PropTypes.func.isRequired,\r\n showCount: PropTypes.bool,\r\n};\r\n\r\nexport default TabMenu;\r\n","import classNames from 'classnames';\r\nimport PropTypes, {\r\n bool,\r\n number,\r\n oneOfType,\r\n shape,\r\n string,\r\n array,\r\n} from 'prop-types';\r\nimport React from 'react';\r\nimport A from '../Anchor';\r\nimport RevisedAndPublished from '../RevisedAndPublished';\r\nimport { getRegionalizedUrl } from './external-search-utils';\r\nimport TrackedLink from './tracked-link';\r\n\r\nconst ListItem = ({\r\n className,\r\n href,\r\n image,\r\n vignette,\r\n heading,\r\n text,\r\n score,\r\n revisedAsPublished,\r\n isNew,\r\n eventDate,\r\n subjectHeading,\r\n translations,\r\n showRevised,\r\n TrackId,\r\n query,\r\n HitId,\r\n DisableClickTracking,\r\n informationtype,\r\n vardpersonal1177,\r\n selectionCode,\r\n specializedCareUrl,\r\n primaryCareUrl,\r\n isExternalSearchHit,\r\n regionalizeSearchHits,\r\n availableLanguagesHeader,\r\n availableLanguages,\r\n}) => {\r\n function trackClick() {\r\n fetch(\r\n `/api/v2/search/trackclick?hitId=${HitId}&query=${query}&trackId=${TrackId}`\r\n );\r\n }\r\n const itemContainer = classNames({\r\n 'c-related__item__container': true,\r\n 'c-related__empty-container': text?.length === 0,\r\n });\r\n\r\n const trackLinkClick = () =>\r\n !DisableClickTracking && TrackId ? trackClick() : undefined;\r\n const isVardPersonal1177 =\r\n (vardpersonal1177 && selectionCode && primaryCareUrl) || specializedCareUrl;\r\n\r\n const getHref = isVardPersonal1177\r\n ? primaryCareUrl\r\n ? primaryCareUrl\r\n : specializedCareUrl\r\n : regionalizeSearchHits\r\n ? getRegionalizedUrl(href)\r\n : href;\r\n return (\r\n <TrackedLink\r\n HitId={HitId}\r\n query={query}\r\n DisableClickTracking={DisableClickTracking}\r\n TrackId={TrackId}\r\n className={className}\r\n href={regionalizeSearchHits ? getRegionalizedUrl(href) : href}\r\n aria-label={heading}\r\n containsLinks={\r\n availableLanguages?.[0] ||\r\n (vardpersonal1177 &&\r\n selectionCode &&\r\n (primaryCareUrl || specializedCareUrl))\r\n ? true\r\n : false\r\n }\r\n >\r\n <div className={itemContainer} data-epifind-score={score}>\r\n {image && (\r\n <div\r\n className=\"c-related__item__image\"\r\n dangerouslySetInnerHTML={{\r\n __html: `<img src=\"${image}?preset=preset_300\" />`,\r\n }}\r\n />\r\n )}\r\n {vignette && (\r\n <span\r\n className=\"c-related__item__vignette\"\r\n dangerouslySetInnerHTML={{ __html: vignette }}\r\n />\r\n )}\r\n {(heading && isVardPersonal1177) || availableLanguages?.[0] ? (\r\n <A\r\n className=\"c-related__item__anchor\"\r\n href={getHref}\r\n onClick={() => {\r\n trackLinkClick();\r\n }}\r\n aria-label={heading}\r\n >\r\n <h3\r\n className=\"c-related__item__heading\"\r\n dangerouslySetInnerHTML={{ __html: heading }}\r\n />\r\n {availableLanguages?.[0] && text && text.length >= 1 && (\r\n <p\r\n className=\"c-related__item__text\"\r\n dangerouslySetInnerHTML={{ __html: text }}\r\n />\r\n )}\r\n </A>\r\n ) : (\r\n <h3\r\n className=\"c-related__item__heading\"\r\n {...(isExternalSearchHit && {\r\n 'aria-label': `${heading}. ${translations?.leadstoexternalsite}`,\r\n })}\r\n dangerouslySetInnerHTML={{ __html: heading }}\r\n />\r\n )}\r\n {informationtype && informationtype.Key !== 'article' && (\r\n <div\r\n className={\r\n informationtype.Key\r\n ? 'c-related__item__information-type c-related__item__information-type--' +\r\n informationtype.Key\r\n : 'c-related__item__information-type'\r\n }\r\n >\r\n {informationtype.Value}\r\n </div>\r\n )}\r\n {selectionCode &&\r\n selectionCode !== 'none' &&\r\n (primaryCareUrl || specializedCareUrl) && (\r\n <div className=\"c-related__item__selection-code\">\r\n {primaryCareUrl && specializedCareUrl ? (\r\n <>\r\n <A\r\n className=\"c-related__item__selection-code-url\"\r\n href={primaryCareUrl}\r\n onClick={() => {\r\n trackLinkClick();\r\n }}\r\n >\r\n Primärvård\r\n </A>\r\n <A\r\n className=\"c-related__item__selection-code-url\"\r\n href={specializedCareUrl}\r\n onClick={() => {\r\n trackLinkClick();\r\n }}\r\n >\r\n Specialiserad vård\r\n </A>\r\n </>\r\n ) : (\r\n <A href={primaryCareUrl ? primaryCareUrl : specializedCareUrl}>\r\n {primaryCareUrl ? 'Primärvård' : 'Specialiserad vård'}\r\n </A>\r\n )}\r\n </div>\r\n )}\r\n {text && text.length >= 1 && !availableLanguages?.[0] && (\r\n <p\r\n className=\"c-related__item__text\"\r\n dangerouslySetInnerHTML={{ __html: text }}\r\n />\r\n )}\r\n {availableLanguages?.[0] && (\r\n <div className=\"c-related__item__available-languages\">\r\n {availableLanguagesHeader && (\r\n <span id=\"languages-list\">{availableLanguagesHeader}</span>\r\n )}\r\n <ul\r\n className=\"c-related__item__languages\"\r\n aria-live=\"polite\"\r\n aria-labelledby=\"languages-list\"\r\n >\r\n {availableLanguages.map((language, i) => (\r\n <li key={i}>\r\n <A\r\n href={language.Url}\r\n onClick={() => trackLinkClick()}\r\n className=\"c-related__item__language-link\"\r\n lang={language.Name}\r\n data-event-category={href || 'novalue'}\r\n data-event-action=\"Språklänk vald från sökresultat\"\r\n data-event-name={\r\n language.Name + ' (' + language.NativeName + ')'\r\n }\r\n >\r\n {language.NativeName}\r\n </A>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n {showRevised && (\r\n <RevisedAndPublished\r\n revisedAsPublished={revisedAsPublished}\r\n isNew={isNew}\r\n translations={translations}\r\n eventDate={eventDate}\r\n subjectHeading={subjectHeading}\r\n />\r\n )}\r\n\r\n <span className=\"c-related__item__link\"></span>\r\n </div>\r\n </TrackedLink>\r\n );\r\n};\r\n\r\nListItem.propTypes = {\r\n className: string,\r\n href: string,\r\n searchHitHeading: string,\r\n image: string,\r\n vignette: string,\r\n heading: string,\r\n text: string,\r\n score: oneOfType([string, number]),\r\n revisedAsPublished: bool,\r\n isNew: bool,\r\n eventDate: string,\r\n subjectHeading: string,\r\n translations: shape({\r\n subject: string,\r\n published: string,\r\n revised: string,\r\n }),\r\n showRevised: bool,\r\n HitId: string,\r\n query: string,\r\n TrackId: string,\r\n DisableClickTracking: bool,\r\n informationtype: PropTypes.object,\r\n vardpersonal1177: bool,\r\n availableLanguagesHeader: string,\r\n availableLanguages: array,\r\n};\r\n\r\nexport default ListItem;\r\n","import { useState } from 'react';\r\n\r\n/**\r\n * Custom hook to manage arrow key navigation in a list.\r\n * @param {number} maxIndex - The maximum index in the list.\r\n * @param {object} options - Additional options for navigation.\r\n * @returns {object} An object containing the highlighted index and navigation functions.\r\n */\r\nconst useArrowNavigation = (maxIndex, options = {}) => {\r\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\r\n\r\n const {\r\n isOpen = true,\r\n onItemSelect = () => {},\r\n onClose = () => {},\r\n getItemByIndex = () => {},\r\n selectionKeys = ['Enter'],\r\n } = options;\r\n\r\n const incrementIndex = () => {\r\n setHighlightedIndex((prevIndex) =>\r\n prevIndex < maxIndex ? prevIndex + 1 : 0\r\n );\r\n };\r\n\r\n const decrementIndex = () => {\r\n setHighlightedIndex((prevIndex) =>\r\n prevIndex > 0 ? prevIndex - 1 : maxIndex\r\n );\r\n };\r\n\r\n const resetIndex = () => {\r\n setHighlightedIndex(-1);\r\n };\r\n\r\n const handleKeyDown = (e) => {\r\n if (!isOpen) return;\r\n\r\n if (e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n incrementIndex();\r\n } else if (e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n decrementIndex();\r\n } else if (selectionKeys.includes(e.key)) {\r\n e.preventDefault();\r\n if (highlightedIndex >= 0) {\r\n const item = getItemByIndex(highlightedIndex);\r\n onItemSelect(item);\r\n }\r\n } else if (e.key === 'Escape') {\r\n onClose();\r\n resetIndex();\r\n }\r\n };\r\n\r\n return {\r\n highlightedIndex,\r\n setHighlightedIndex,\r\n resetIndex,\r\n handleKeyDown,\r\n };\r\n};\r\n\r\nexport default useArrowNavigation;\r\n","import classNames from 'classnames';\r\nimport React, { useEffect, useRef, useState } from 'react';\r\nimport useArrowNavigation from '../Hooks/useArrowNavigation';\r\n\r\nconst CustomSelect = ({\r\n label,\r\n srLabel,\r\n options,\r\n selectedItem,\r\n onChange,\r\n id,\r\n}) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const dropdownRef = useRef(null);\r\n\r\n const maxIndex = options.length - 1;\r\n\r\n const { highlightedIndex, setHighlightedIndex, resetIndex, handleKeyDown } =\r\n useArrowNavigation(maxIndex, {\r\n isOpen,\r\n selectionKeys: ['Enter', ' '],\r\n onItemSelect: (item) => {\r\n onChange(item);\r\n setIsOpen(false);\r\n resetIndex();\r\n },\r\n onClose: () => {\r\n setIsOpen(false);\r\n resetIndex();\r\n },\r\n getItemByIndex: (index) => options[index] || 0,\r\n });\r\n\r\n const toggleDropdown = () => setIsOpen(!isOpen);\r\n\r\n useEffect(() => {\r\n isOpen && dropdownRef.current?.focus();\r\n }, [isOpen]);\r\n\r\n const defaultOption = options.find(\r\n (option) => option.key === selectedItem.key\r\n );\r\n\r\n if (!options) return null;\r\n\r\n return (\r\n <div className=\"c-custom-select\">\r\n {label && (\r\n <label className=\"c-custom-select__label\" htmlFor=\"c-custom-select\">\r\n {label}\r\n </label>\r\n )}\r\n <button\r\n className=\"c-custom-select__toggle\"\r\n aria-haspopup=\"listbox\"\r\n aria-expanded={isOpen}\r\n aria-controls=\"c-custom-select-dropdown\"\r\n id={`custom-select-${id}`}\r\n aria-label={srLabel}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n toggleDropdown();\r\n }}\r\n onKeyDown={(e) => {\r\n if (isOpen) {\r\n handleKeyDown(e);\r\n } else if (\r\n e.key === 'ArrowDown' ||\r\n e.key === 'Enter' ||\r\n e.key === ' '\r\n ) {\r\n e.preventDefault();\r\n setIsOpen(true);\r\n setHighlightedIndex(0);\r\n }\r\n }}\r\n >\r\n {selectedItem.value || defaultOption.value}\r\n\r\n <div\r\n aria-hidden\r\n className={classNames({\r\n 'c-custom-select__chevron': true,\r\n 'c-custom-select__chevron--is-expanded': isOpen,\r\n })}\r\n />\r\n </button>\r\n\r\n {isOpen && (\r\n <div className=\"c-custom-select__dropdown\">\r\n <ul\r\n className=\"c-custom-select__content\"\r\n role=\"listbox\"\r\n id={`custom-select-${id}-dropdown`}\r\n aria-labelledby={`custom-select-${id}`}\r\n tabIndex={0}\r\n aria-activedescendant={`select-${id}-option-${highlightedIndex}`}\r\n onKeyDown={handleKeyDown}\r\n ref={dropdownRef}\r\n onBlur={() => {\r\n setIsOpen(false);\r\n }}\r\n >\r\n {options.map((option, index) => (\r\n <li\r\n className={classNames('c-custom-select__item', {\r\n 'c-custom-select__item--highlighted':\r\n highlightedIndex === index,\r\n 'c-custom-select__item--selected':\r\n selectedItem.key === option.key,\r\n })}\r\n key={option.key}\r\n id={`select-${id}-option-${index}`}\r\n role=\"option\"\r\n aria-selected={selectedItem.key === option.key}\r\n onClick={() => [\r\n onChange(option),\r\n toggleDropdown(),\r\n resetIndex(),\r\n ]}\r\n >\r\n <span>{option.value}</span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default CustomSelect;\r\n","import classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\n/**\r\n * Heading for search result list\r\n * \r\n * Example output: \r\n * \r\n ```html\r\n <h2><span class=\"t-total-hits\">12</span> sökträffar på <strong>feber</strong></h2>\r\n ```\r\n *\r\n */\r\nconst SearchHeading = ({\r\n hideSearchHeading,\r\n TotalHits,\r\n ResultText,\r\n SuggestionText,\r\n ContentAfter = '',\r\n query,\r\n Modifiers,\r\n activeFilterFacet,\r\n showFilterResultText,\r\n translations,\r\n isVardpersonal1177,\r\n siteAdress,\r\n}) => {\r\n if (hideSearchHeading) return null;\r\n if (!query && TotalHits === 0) return null;\r\n\r\n SuggestionText\r\n ? (SuggestionText.Query = decodeURIComponent(SuggestionText.Query))\r\n : null;\r\n\r\n const componentClass = classNames({\r\n 'c-searchlist__heading': true,\r\n ...Modifiers,\r\n });\r\n\r\n const resultQueryText = query ? <strong>{query}</strong> : null;\r\n\r\n const filterResultText =\r\n showFilterResultText && activeFilterFacet ? (\r\n <>\r\n {isVardpersonal1177 ? translations.withfilter : translations.within}{' '}\r\n <strong>{activeFilterFacet}</strong>{' '}\r\n </>\r\n ) : null;\r\n\r\n const resultSiteText = siteAdress ? (\r\n <>\r\n {translations.on} {translations.site} <strong>{siteAdress}</strong>\r\n </>\r\n ) : null;\r\n\r\n return (\r\n <h2 className={componentClass}>\r\n <span className=\"t-total-hits\" data-cy=\"ui-searchform-totalhits\">\r\n {TotalHits}\r\n </span>{' '}\r\n {ResultText} {resultQueryText} {filterResultText} {resultSiteText}\r\n {SuggestionText && SuggestionText?.Query && (\r\n <span>\r\n . {SuggestionText.Text}{' '}\r\n <a href={SuggestionText.Url}>{SuggestionText.Query}</a>?\r\n </span>\r\n )}{' '}\r\n {ContentAfter}\r\n </h2>\r\n );\r\n};\r\n\r\nSearchHeading.propTypes = {\r\n /** If `true` component will not render */\r\n hideSearchHeading: PropTypes.bool,\r\n TotalHits: PropTypes.number,\r\n ResultText: PropTypes.string,\r\n showFilterResultText: PropTypes.bool,\r\n translations: PropTypes.objectOf(PropTypes.string),\r\n activeFilterFacet: PropTypes.string,\r\n SuggestionText: PropTypes.shape({\r\n Text: PropTypes.string,\r\n Url: PropTypes.string,\r\n Query: PropTypes.string,\r\n }),\r\n ContentAfter: PropTypes.node,\r\n query: PropTypes.string,\r\n Modifiers: PropTypes.object,\r\n isVardpersonal1177: PropTypes.bool,\r\n};\r\n\r\nexport default SearchHeading;\r\n","/**\r\n * Repo: PWT.PlattformUI\r\n * Component: <List> (default exported), <SearchListItemWrapper> (local)\r\n * @description:\r\n * A list that displays search results.\r\n * Can be used with a custom @property SearchListItem component.\r\n * or the default <ListItem> component.\r\n */\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport ListItem from './listitem';\r\n\r\nconst SearchListItemWrapper = ({ CustomSearchListItem, ...props }) => {\r\n const theme = classNames({\r\n 'c-related__item': true,\r\n 'c-related__item--is-search': true,\r\n 'c-related__item--has-image': props.Image,\r\n [`c-related__item--theme-${props.Theme}`]: true,\r\n });\r\n\r\n const lastItem = props.isLast ? (\r\n <span id=\"search-list-last\" tabIndex=\"-1\" />\r\n ) : null;\r\n\r\n //Shows the revised component if there is a isNew prop\r\n let showRevised;\r\n if (props.IsNew !== undefined && props.IsNew !== null) {\r\n if (props.EventDate) {\r\n showRevised = true;\r\n }\r\n } else {\r\n showRevised = false;\r\n }\r\n const trackingParams = {\r\n HitId: props.HitId,\r\n query: props.query,\r\n TrackId: props.TrackId,\r\n DisableClickTracking: props.DisableClickTracking,\r\n };\r\n return (\r\n <li>\r\n {CustomSearchListItem ? (\r\n <CustomSearchListItem {...trackingParams} {...props} />\r\n ) : (\r\n <ListItem\r\n className={theme}\r\n revisedAsPublished={props.revisedAsPublished}\r\n isNew={props.IsNew}\r\n showRevised={showRevised}\r\n eventDate={props.EventDate}\r\n href={props.Url}\r\n searchHitHeading={props.SearchHitHeading}\r\n image={props.Image}\r\n vignette={props.Vignette}\r\n heading={props.Heading}\r\n text={props.Text}\r\n score={props.Score}\r\n translations={props.translations}\r\n subjectHeading={props.SubjectHeading}\r\n totalHits={props.TotalHits}\r\n informationtype={props.InformationType}\r\n selectionCode={props.SelectionCode}\r\n vardpersonal1177={props.vardpersonal1177}\r\n primaryCareUrl={props.PrimaryCareUrl}\r\n specializedCareUrl={props.SpecializedCareUrl}\r\n isExternalSearchHit={props?.isExternalSearchHit}\r\n regionalizeSearchHits={props?.regionalizeSearchHits}\r\n availableLanguagesHeader={props?.availableLanguagesHeader}\r\n availableLanguages={props?.AvailableLanguages}\r\n {...trackingParams}\r\n />\r\n )}\r\n {lastItem}\r\n </li>\r\n );\r\n};\r\n\r\nconst List = ({\r\n SearchHits,\r\n TotalHits,\r\n children,\r\n TrackId,\r\n query,\r\n translations,\r\n revisedAsPublished,\r\n DisableClickTracking,\r\n CustomSearchListItem = null,\r\n vardpersonal1177,\r\n isExternalSearchHit,\r\n regionalizeSearchHits,\r\n availableLanguagesHeader,\r\n}) => {\r\n if (!SearchHits) return null;\r\n const items = SearchHits.map((item, index) => (\r\n <SearchListItemWrapper\r\n translations={translations}\r\n revisedAsPublished={revisedAsPublished}\r\n key={index}\r\n query={query}\r\n TotalHits={TotalHits}\r\n DisableClickTracking={DisableClickTracking}\r\n TrackId={TrackId}\r\n {...item}\r\n isLast={index + 1 === SearchHits.length}\r\n CustomSearchListItem={CustomSearchListItem}\r\n vardpersonal1177={vardpersonal1177}\r\n isExternalSearchHit={isExternalSearchHit}\r\n regionalizeSearchHits={regionalizeSearchHits}\r\n availableLanguagesHeader={availableLanguagesHeader}\r\n availableLanguages={item?.AvailableLanguages}\r\n />\r\n ));\r\n\r\n return (\r\n <div className=\"c-searchlist\" id=\"search\">\r\n <ul\r\n className=\"c-related\"\r\n aria-live=\"polite\"\r\n data-cy=\"ui-searchform-resultlist\"\r\n >\r\n {items}\r\n </ul>\r\n\r\n <div className=\"c-searchlist__footer\">{children}</div>\r\n </div>\r\n );\r\n};\r\n\r\nList.propTypes = {\r\n /** (BE) Search block translations */\r\n translations: PropTypes.object,\r\n /** (BE) */\r\n ResultText: PropTypes.string,\r\n /** (BE) */\r\n SearchHits: PropTypes.array,\r\n /** (BE) */\r\n TrackId: PropTypes.string,\r\n /** (BE) */\r\n TotalHits: PropTypes.number,\r\n /** (BE) */\r\n EmptySearchResultText: PropTypes.string,\r\n /** (BE) List of block images */\r\n SuggestionText: PropTypes.shape({\r\n Query: PropTypes.string,\r\n Text: PropTypes.string,\r\n Url: PropTypes.string,\r\n }),\r\n /** (BE) Available languages */\r\n availableLanguagesHeader: PropTypes.string,\r\n /** (BE) */\r\n AvailableLanguages: PropTypes.array,\r\n query: PropTypes.string,\r\n hideSearchHeading: PropTypes.bool,\r\n /** List item component */\r\n CustomSearchListItem: PropTypes.any,\r\n vardpersonal1177: PropTypes.bool,\r\n};\r\n\r\nexport default List;\r\n","import queryString from 'qs';\r\n\r\nconst siteAddressMap = {\r\n 1177: '1177.se',\r\n RHB: 'rikshandboken-bhv.se',\r\n VHB: 'vardhandboken.se',\r\n};\r\n\r\nexport const getExternalSiteAdress = (siteIndex) =>\r\n siteAddressMap[siteIndex] || 'vardpersonal.1177.se';\r\n\r\nexport const getRegionalizedUrl = (href) => {\r\n if (typeof href !== 'string') return;\r\n\r\n const qs = queryString.parse(location, { ignoreQueryPrefix: true });\r\n\r\n const splitPaths = qs.pathname?.split('/').filter(Boolean);\r\n const region = splitPaths?.length > 1 ? splitPaths[0] : null;\r\n\r\n if (!region) return href;\r\n\r\n const url = new URL(href);\r\n\r\n url.pathname = `/${region}${url.pathname}`;\r\n return url.href;\r\n};\r\n","import React from 'react';\r\n\r\nconst KeywordHints = ({ KeywordMessage }) => {\r\n if (!KeywordMessage) return null;\r\n return (\r\n <div className=\"keyword-hints\">\r\n <div className=\"c-keyword__icon-container\">\r\n <i className=\"c-keyword__icon\" />\r\n </div>\r\n <div dangerouslySetInnerHTML={{ __html: KeywordMessage }}></div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default KeywordHints;\r\n","import classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport qs from 'qs';\r\nimport React from 'react';\r\n\r\nconst FacetItem = (props) => {\r\n const query = {\r\n ...props.queryString,\r\n };\r\n\r\n //Remove page param\r\n if (query.p) delete query.p;\r\n if (query.site) delete query.site;\r\n\r\n let isSelected = false;\r\n\r\n if (typeof query[props.Name] === 'string') {\r\n isSelected = query[props.Name] === props.Id.toString();\r\n }\r\n\r\n //Selects the \"show all results\" facet\r\n if (typeof query[props.Name] === 'undefined' && query.q?.length > 0) {\r\n isSelected = 'all' === props.Id.toString();\r\n }\r\n\r\n if (typeof query[props.Name] === 'object') {\r\n isSelected =\r\n query[props.Name].filter((key) => key === props.Id.toString()).length > 0;\r\n }\r\n\r\n const classes = classNames({\r\n 'c-facets__item': true,\r\n [`c-facets__item--theme-${props.Id}`]: true,\r\n 'c-facets__item--selected': isSelected,\r\n });\r\n\r\n const makeItemArray = (key, array) => {\r\n if (!array[key]) return [];\r\n if (typeof array[key] === 'string') {\r\n return array[key].split();\r\n }\r\n return array[key];\r\n };\r\n const handleChange = (e) => {\r\n query[props.Name] = makeItemArray(props.Name, query);\r\n // We push the name to the URL for the tracking function to get.\r\n query['categoryname'] = makeItemArray('categoryname', query);\r\n\r\n if (e.currentTarget.checked) {\r\n query[props.Name].push(props.Id);\r\n if (props.Name === 'category') {\r\n query['categoryname'].push(props.Text);\r\n }\r\n } else {\r\n query[props.Name] = query[props.Name].filter((key) => key !== props.Id);\r\n if (props.Name === 'category' && query.categoryname) {\r\n query['categoryname'] = query['categoryname'].filter(\r\n (key) => key !== props.Text\r\n );\r\n }\r\n }\r\n\r\n props.history.push({\r\n search: `?${qs.stringify(query, { indices: false })}`,\r\n });\r\n };\r\n\r\n const handleRadioButtonChange = () => {\r\n props.names.forEach((name) => delete query[name]);\r\n query[props.Name] = props.Id;\r\n\r\n props.history.push({\r\n search: `?${qs.stringify(query, { indices: false })}`,\r\n });\r\n };\r\n\r\n return (\r\n <label className={classes}>\r\n <input\r\n className=\"c-facets__item__checkbox\"\r\n type=\"checkbox\"\r\n defaultChecked={isSelected}\r\n name={props.Name}\r\n value={props.Id}\r\n onChange={(e) =>\r\n props.FacetsRadioButton ? handleRadioButtonChange(e) : handleChange(e)\r\n }\r\n />\r\n <span className=\"c-facets__item__label\">{props.Text}</span>\r\n {props.showCount && (\r\n <span className=\"c-facets__item__count\">({props.count})</span>\r\n )}\r\n </label>\r\n );\r\n};\r\n\r\nconst FacetsItems = ({\r\n names,\r\n history,\r\n Facets,\r\n queryString,\r\n pathname,\r\n FacetsRadioButton,\r\n facetCounts,\r\n showCount,\r\n}) =>\r\n Facets.map((item, index) => (\r\n <FacetItem\r\n key={index}\r\n names={names}\r\n {...item}\r\n history={history}\r\n queryString={queryString}\r\n pathname={pathname}\r\n FacetsRadioButton={FacetsRadioButton}\r\n count={facetCounts?.[item?.Id] ?? 0}\r\n showCount={showCount}\r\n />\r\n ));\r\n\r\nconst Facets = ({\r\n history,\r\n Facets,\r\n queryString = [],\r\n pathname,\r\n FacetsRadioButton,\r\n}) => {\r\n if (Facets.Items.length === 0) return null;\r\n\r\n const Names = Facets.Items.reduce((acc, cur) => {\r\n cur.Facets.forEach((item) => {\r\n if (!acc.some((i) => i === item.Name)) {\r\n acc.push(item.Name);\r\n }\r\n });\r\n\r\n return acc;\r\n }, []);\r\n\r\n const items = Facets.Items.map((item, index) => {\r\n if (item.Facets.length === 0) return null;\r\n\r\n return (\r\n <div className=\"c-facets__items\" key={index}>\r\n {item.Heading && <h2 className=\"c-facets__heading\">{item.Heading}</h2>}\r\n <FacetsItems\r\n {...item}\r\n names={Names}\r\n history={history}\r\n queryString={queryString}\r\n pathname={pathname}\r\n FacetsRadioButton={FacetsRadioButton}\r\n />\r\n </div>\r\n );\r\n });\r\n\r\n return (\r\n <div className=\"c-facets\">\r\n <div className=\"c-facets__inner\">{items}</div>\r\n </div>\r\n );\r\n};\r\n\r\nFacets.propTypes = {\r\n /** React router history object **/\r\n history: PropTypes.object,\r\n /** (BE) */\r\n Facets: PropTypes.shape({\r\n Items: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n /** We also recieve a \"Checked=false\" property that is not used on Facets object. */\r\n Facets: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n Name: PropTypes.string,\r\n Id: PropTypes.string,\r\n Text: PropTypes.string,\r\n })\r\n ),\r\n Heading: PropTypes.string,\r\n })\r\n ),\r\n ErrorMessage: PropTypes.string,\r\n }),\r\n queryString: PropTypes.object,\r\n pathname: PropTypes.string /** is this used? */,\r\n /** (BE) */\r\n FacetsRadioButton: PropTypes.bool,\r\n};\r\n\r\nexport default Facets;\r\n","/**\r\n * Repo: PWT.PlattformUI\r\n * Component: <SearchBlock>\r\n *\r\n * @description\r\n * Complete search page block component\r\n * with form, field and results list.\r\n */\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport queryString from 'qs';\r\nimport React, { Fragment } from 'react';\r\nimport MatomoTrackSearch from '../../platformui/Matomo/matomo-track-search';\r\nimport Alert from '../Alert';\r\nimport CollapsiblePanel from '../CollapsiblePanel';\r\nimport withSearch from '../Containers/withSearch';\r\nimport Facets from '../Facets';\r\nimport KeywordHints from '../KeywordHints';\r\nimport Pagination from '../Pagination';\r\nimport SearchField from '../Search/searchfield';\r\nimport Spinner from '../Spinner';\r\nimport TabMenu from '../TabMenu';\r\nimport { getExternalSiteAdress } from './external-search-utils';\r\nimport List from './list';\r\nimport SearchHeading from './searchheading';\r\n\r\nconst Search = (props) => {\r\n const qs = queryString.parse(props.location.search, {\r\n ignoreQueryPrefix: true,\r\n });\r\n const classes = classNames({\r\n 'is-loading': props.SearchResult.isLoading,\r\n searchblock: true,\r\n });\r\n\r\n const searchToolsClasses = classNames({\r\n 'c-search__tools': true,\r\n 'c-search__tools--has-facets': props?.Facets,\r\n });\r\n\r\n const alertType = props.alertType ? props.alertType : 'warning';\r\n\r\n let activeFilterFacet = '';\r\n\r\n if (props.showFilterResultText) {\r\n props.Facets?.Items?.map((item) => {\r\n item.Facets.some((item) => {\r\n if (item.Id === qs.facet && item.Id !== 'all') {\r\n activeFilterFacet = item.Text;\r\n }\r\n });\r\n });\r\n }\r\n\r\n return (\r\n <div className={classes}>\r\n <form\r\n className=\"c-search\"\r\n method=\"get\"\r\n autoComplete=\"off\"\r\n data-cy=\"ui-searchform\"\r\n onSubmit={(e) => {\r\n props.onSubmit(e, {\r\n q: document.getElementById('section-search').value,\r\n t: qs.t,\r\n ...(props.useExternalSearch && { site: qs.site }),\r\n });\r\n }}\r\n >\r\n <div className=\"c-search__field\">\r\n <label\r\n className=\"c-search__field__label icon-search\"\r\n htmlFor=\"section-search\"\r\n >\r\n {props.Placeholder ? (\r\n <span className=\"show-for-sr\">{props.Placeholder}</span>\r\n ) : null}\r\n </label>\r\n\r\n <SearchField\r\n id=\"section-search\"\r\n className=\"c-search\"\r\n searchUrl=\"\"\r\n placeholder={props.Placeholder}\r\n defaultValue={qs.q}\r\n hasQuickSearch={props.hasQuickSearch}\r\n hasNoAutocomplete={props.hasNoAutocomplete}\r\n SearchApiAutoCompleteUrl={props.SearchApiAutoCompleteUrl}\r\n showSearchHitsHeadingSuffix={props.showSearchHitsHeadingSuffix}\r\n defaultQuickSearch={props.CurrentPageProps.QuickSearchSettings}\r\n site={props.CurrentPageProps.Site}\r\n />\r\n <input type=\"hidden\" name=\"t\" value={qs.t} />\r\n <button\r\n className=\"c-search__field__button\"\r\n type=\"submit\"\r\n data-cy=\"ui-searchform-submit-btn\"\r\n >\r\n {props.Translations.searchbutton}\r\n </button>\r\n </div>\r\n {props.SearchResult.KeywordMessage && (\r\n <KeywordHints KeywordMessage={props.SearchResult.KeywordMessage} />\r\n )}\r\n\r\n {props.SearchResult.IsSimpleFallbackSearch && (\r\n <Alert type={alertType} alert={props}>\r\n {props.SearchResult.ResultDisclaimer}\r\n </Alert>\r\n )}\r\n\r\n {props.searchTabs && props.ExternalSearchContent && (\r\n <TabMenu\r\n key={props.searchApiIndex}\r\n tabs={props.searchTabs?.map((tab) => ({\r\n key: tab.SearchApiIndex,\r\n label: tab.TabHeader,\r\n count: tab.SearchResult?.TotalHits || 0,\r\n isActive: tab.SearchApiIndex === props.searchApiIndex,\r\n screenReaderText: `${tab.SearchResult?.TotalHits} ${\r\n tab.SearchResult?.ResultText\r\n } ${getExternalSiteAdress(tab.SearchApiIndex)}`,\r\n }))}\r\n handleTabChange={props.handleTabChange}\r\n showCount\r\n showResponsiveDropdown\r\n srLabel={props?.Translations?.selectsearchsource}\r\n />\r\n )}\r\n\r\n {props.Facets &&\r\n props.CurrentPageProps.hasFilterBar &&\r\n !props.showFilterBarWithFacets && (\r\n <Facets\r\n {...props}\r\n queryString={qs}\r\n pathname={props.location.pathname}\r\n />\r\n )}\r\n\r\n {qs.q && (\r\n <Fragment>\r\n <div className={searchToolsClasses}>\r\n <SearchHeading\r\n {...props.SearchResult}\r\n query={qs.q}\r\n activeFilterFacet={activeFilterFacet}\r\n showFilterResultText={props.showFilterResultText}\r\n within={props.Translations.within}\r\n translations={props.Translations}\r\n isVardpersonal1177={props.vardpersonal1177}\r\n siteAdress={!!qs?.site && getExternalSiteAdress(qs?.site)}\r\n />\r\n {((props.showFilterBarWithFacets && props.Facets) ||\r\n ((props.HideCategoryFacets === false ||\r\n props.HideThemeFacets === false) &&\r\n !props.CurrentPageProps.hasFilterBar)) && (\r\n <CollapsiblePanel\r\n Id=\"facetspanel\"\r\n className=\"c-collapsible-facets\"\r\n DefaultCollapsed={\r\n qs.category || qs.theme || !props?.filterBarDefaultOpen\r\n }\r\n Heading={props.Translations.filtersearchhitsheading}\r\n >\r\n <Facets\r\n {...props}\r\n queryString={qs}\r\n pathname={props.location.pathname}\r\n />\r\n </CollapsiblePanel>\r\n )}\r\n </div>\r\n\r\n {qs.q.length > 0 &&\r\n props.SearchResult.TotalHits === 0 &&\r\n props.SearchResult.EmptySearchResultText && (\r\n <Alert type={alertType} alert={props}>\r\n <div\r\n dangerouslySetInnerHTML={{\r\n __html: props.SearchResult.EmptySearchResultText,\r\n }}\r\n ></div>\r\n </Alert>\r\n )}\r\n </Fragment>\r\n )}\r\n </form>\r\n <List\r\n {...props.SearchResult}\r\n DisableClickTracking={props.DisableClickTracking}\r\n translations={props.Translations}\r\n query={qs.q}\r\n revisedAsPublished={props.revisedAsPublished}\r\n vardpersonal1177={props.vardpersonal1177}\r\n isExternalSearchHit={props?.isExternalSearch}\r\n regionalizeSearchHits={props?.searchApiIndex === '1177'}\r\n availableLanguagesHeader={props?.AvailableLanguagesHeader}\r\n >\r\n <Pagination\r\n onClick={() => document.getElementById('search-list-last').focus()}\r\n {...props.SearchResult}\r\n Spinner={<Spinner Modifiers={{ 'c-spinner--search': true }} />}\r\n >\r\n {props.SearchResult.BatchText}\r\n </Pagination>\r\n </List>\r\n <MatomoTrackSearch\r\n Search={qs?.q}\r\n SearchCategory={props.searchApiIndex || 'Globalt sök'}\r\n SearchHits={props.SearchResult?.TotalHits}\r\n ExternalSearchHits={props.searchTabs}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nSearch.propTypes = {\r\n //**Used when any website wants the revised text to be published text */\r\n revisedAsPublished: PropTypes.bool,\r\n location: PropTypes.object,\r\n /** When we use custom click tracking - disable it with `true`. */\r\n DisableClickTracking: PropTypes.bool,\r\n /** isLoading is used by autocomplete. See search reducers */\r\n showFilterResultText: PropTypes.bool,\r\n SearchResult: PropTypes.shape({\r\n isLoading: PropTypes.bool,\r\n TotalHits: PropTypes.number,\r\n EmptySearchResultText: PropTypes.string,\r\n BatchText: PropTypes.string,\r\n }),\r\n /** From withSearch class */\r\n onSubmit: PropTypes.func.isRequired,\r\n Translations: PropTypes.shape({\r\n searchprevioussr: PropTypes.string,\r\n searchbutton: PropTypes.string,\r\n filtersearchhitsheading: PropTypes.string,\r\n }),\r\n Placeholder: PropTypes.string,\r\n HideCategoryFacets: PropTypes.bool,\r\n HideThemeFacets: PropTypes.bool,\r\n vardpersonal1177: PropTypes.bool,\r\n showFilterBarWithFacets: PropTypes.bool,\r\n useExternalSearch: PropTypes.bool,\r\n showSearchHitsHeadingSuffix: PropTypes.bool,\r\n filterBarDefaultOpen: PropTypes.bool,\r\n searchOnMount: PropTypes.bool,\r\n isExternalSearch: PropTypes.bool,\r\n availableLanguagesHeader: PropTypes.string,\r\n};\r\n\r\nexport default withSearch(Search, 'Search', null, {});\r\n\r\nexport { Search };\r\n","import React from 'react';\r\nimport { withRouter } from 'react-router';\r\nimport { useHistory } from 'react-router-dom';\r\nimport queryString from 'qs';\r\nimport classNames from 'classnames';\r\n\r\nconst PaginationButton = ({ className, children, onClick, href }) => {\r\n const history = useHistory();\r\n const clickHandler = (e) => {\r\n onClick(e);\r\n history.push(href);\r\n };\r\n return (\r\n <button role=\"button\" className={className} onClick={clickHandler}>\r\n {children}\r\n </button>\r\n );\r\n};\r\n/**\r\n * Component for loading more search content in a list.\r\n * Uses withRouter from react-router to read window location.\r\n *\r\n * Send additional query params with the prop `qsModifiers`.\r\n *\r\n * We can override react router functionality with the prop\r\n * `useReactRouterLink=false` (default = true) then we use <a> element\r\n * and not <Link> component.\r\n *\r\n *\r\n */\r\nconst Pagination = (props) => {\r\n if (!props.NextPage) return null;\r\n const options = {\r\n ignoreQueryPrefix: true,\r\n };\r\n const qs = {\r\n ...queryString.parse(props.location.search, options),\r\n p: props.NextPage,\r\n ...props.qsModifiers,\r\n };\r\n\r\n const qStringify = queryString.stringify(qs);\r\n\r\n const paginationClass = classNames({\r\n 'c-pagination': true,\r\n 'c-pagination--is-loading': props.isLoading,\r\n ...props.Modifiers,\r\n });\r\n\r\n const href = `${props.location.pathname}?${qStringify}`;\r\n\r\n if (props.useReactRouterLink) {\r\n return (\r\n <PaginationButton\r\n onClick={props.onClick}\r\n className={paginationClass}\r\n href={href}\r\n >\r\n <span className=\"c-pagination__text\">{props.children}</span>\r\n {props.Spinner}\r\n </PaginationButton>\r\n );\r\n }\r\n\r\n return (\r\n <a className={paginationClass} href={href}>\r\n <span className=\"c-pagination__text\">{props.children}</span>\r\n </a>\r\n );\r\n};\r\n\r\nPagination.defaultProps = {\r\n useReactRouterLink: true,\r\n qsModifiers: {},\r\n};\r\n\r\nconst ShowAll = (props) => {\r\n if (!props.ShowTotalText) {\r\n return null;\r\n }\r\n if (props.NextPage === null) {\r\n return null;\r\n }\r\n\r\n const qs = queryString.parse(props.location.search, {\r\n ignoreQueryPrefix: true,\r\n });\r\n const qStringify = queryString.stringify({\r\n q: qs.q,\r\n p: 1,\r\n batchsize: props.TotalHits,\r\n ...props.qsModifiers,\r\n theme: qs.theme,\r\n });\r\n return (\r\n <a\r\n className=\"c-pagination c-pagination__showall\"\r\n href={`${props.location.pathname}?${qStringify}`}\r\n >\r\n {props.ShowTotalText}\r\n </a>\r\n );\r\n};\r\n\r\nShowAll.defaultProps = {\r\n NextPage: null, // no need for \"undefined\" check if not in response.\r\n qsModifiers: {},\r\n};\r\n\r\nexport { ShowAll };\r\n\r\nexport default withRouter(Pagination);\r\n"],"names":["MatomoTrackSearch","_ref","Search","SearchCategory","SearchHits","SearchLocation","ExternalSearchHits","useEffect","_window","window","_paq","_window3","searchKeyword","map","tab","_tab$SearchResult","_window2","_tab$SearchResult2","SearchResult","TotalHits","push","SearchApiIndex","propTypes","PropTypes","HitId","DisableClickTracking","TrackId","query","children","href","NewTab","className","containsLinks","attr","trackLinkClick","fetch","undefined","_jsx","A","onClick","WrappedComponent","componentName","endPoint","arguments","length","callbacks","afterFetchByQuery","afterLoadMorePages","Container","Component","constructor","queryString","this","props","location","search","ignoreQueryPrefix","indices","key","p","SearchApiUrl","state","isLoading","getComponentName","dispatch","action","setState","getState","fetchByQuery","bind","updateSearchFromUrl","locationSearch","qs","componentname","Theme","theme","InformationType","informationtype","SearchOriginId","so","BatchSize","batchsize","SortOrder","sortorder","HistoryDays","days","RootLink","rootLink","Categories","category","IsArticleSearch","isArticleSearch","endpoint","site","getExternalEndpoint","searchApiUrl","searchApiIndex","loadMorePages","filterPages","componentDidMount","searchOnMount","componentDidUpdate","prevProps","_location$pathname","apiEndpoint","endsWith","endpointWithSiteIndex","pathnameSegments","pathname","split","filter","Boolean","regionalizedSearch","parseForm","form","obj","elements","querySelectorAll","i","element","name","value","onSubmit","e","preventDefault","render","withRouter","revisedAsPublished","isNew","translations","eventDate","subjectHeading","Date","_jsxs","published","revised","subject","tabs","handleTabChange","showCount","showResponsiveDropdown","srLabel","handleClick","useWindowLocationHref","isMedium","isMediumViewport","CustomSelect","options","label","count","selectedItem","find","isActive","onChange","selectedOption","id","classNames","screenReaderText","image","vignette","heading","text","score","showRevised","vardpersonal1177","selectionCode","specializedCareUrl","primaryCareUrl","isExternalSearchHit","regionalizeSearchHits","availableLanguagesHeader","availableLanguages","itemContainer","isVardPersonal1177","getHref","getRegionalizedUrl","TrackedLink","dangerouslySetInnerHTML","__html","leadstoexternalsite","Key","Value","_Fragment","language","Url","lang","Name","NativeName","RevisedAndPublished","maxIndex","highlightedIndex","setHighlightedIndex","useState","isOpen","onItemSelect","onClose","getItemByIndex","selectionKeys","resetIndex","handleKeyDown","prevIndex","includes","item","setIsOpen","dropdownRef","useRef","useArrowNavigation","index","toggleDropdown","_dropdownRef$current","current","focus","defaultOption","option","htmlFor","onKeyDown","role","tabIndex","ref","onBlur","hideSearchHeading","ResultText","SuggestionText","ContentAfter","Modifiers","activeFilterFacet","showFilterResultText","isVardpersonal1177","siteAdress","Query","decodeURIComponent","componentClass","resultQueryText","filterResultText","withfilter","within","resultSiteText","on","Text","SearchListItemWrapper","CustomSearchListItem","Image","lastItem","isLast","IsNew","EventDate","trackingParams","ListItem","searchHitHeading","SearchHitHeading","Vignette","Heading","Score","SubjectHeading","totalHits","SelectionCode","PrimaryCareUrl","SpecializedCareUrl","AvailableLanguages","_ref2","items","siteAddressMap","RHB","VHB","getExternalSiteAdress","siteIndex","_qs$pathname","splitPaths","region","url","URL","KeywordMessage","FacetItem","_query$q","isSelected","Id","toString","q","classes","makeItemArray","array","type","defaultChecked","FacetsRadioButton","names","forEach","history","currentTarget","checked","categoryname","handleChange","FacetsItems","Facets","facetCounts","_facetCounts$item$Id","Items","Names","reduce","acc","cur","some","withSearch","_props$searchTabs","_props$Translations","_props$SearchResult","searchblock","searchToolsClasses","alertType","_props$Facets","_props$Facets$Items","facet","method","autoComplete","document","getElementById","t","useExternalSearch","Placeholder","SearchField","searchUrl","placeholder","defaultValue","hasQuickSearch","hasNoAutocomplete","SearchApiAutoCompleteUrl","showSearchHitsHeadingSuffix","defaultQuickSearch","CurrentPageProps","QuickSearchSettings","Site","Translations","searchbutton","KeywordHints","IsSimpleFallbackSearch","Alert","alert","ResultDisclaimer","searchTabs","ExternalSearchContent","TabMenu","_tab$SearchResult3","TabHeader","selectsearchsource","hasFilterBar","showFilterBarWithFacets","Fragment","SearchHeading","HideCategoryFacets","HideThemeFacets","CollapsiblePanel","DefaultCollapsed","filterBarDefaultOpen","filtersearchhitsheading","EmptySearchResultText","List","isExternalSearch","AvailableLanguagesHeader","Pagination","Spinner","BatchText","PaginationButton","useHistory","NextPage","qsModifiers","qStringify","paginationClass","useReactRouterLink","defaultProps"],"sourceRoot":""}