{"version":3,"sources":["webpack:///./src/js/components/react/Dropdown.js","webpack:///./src/js/modules/partnerCardListingNew/components/PartnerFacetList.js","webpack:///./src/js/modules/partnerCardListingNew/components/PartnerCard.js","webpack:///./src/js/modules/partnerCardListingNew/hooks/useFetch.js","webpack:///./src/js/modules/partnerCardListingNew/index.js"],"names":["Dropdown","label","placeholder","selectedOption","options","onChange","disabled","compareAttr","style","useState","open","toggle","cursor","setCursor","guid","useRef","uuidv4","listboxGuid","nativeEl","dropdownEl","triggerEl","listingEl","useEffect","handleClickOutside","e","container","current","target","contains","document","addEventListener","removeEventListener","focus","index","findIndex","option","getDisplayLabel","className","htmlFor","isDevice","ref","id","find","value","Value","tabIndex","aria-label","map","i","key","role","type","aria-haspopup","aria-expanded","aria-controls","onClick","aria-activedescendant","onKeyDown","keyCode","preventDefault","length","aria-selected","handleOptionClick","propTypes","PropTypes","string","shape","oneOfType","number","bool","arrayOf","object","func","isRequired","PartnerFacetList","initialFacets","selectedFacets","onFiltersChange","onResetFilters","regionLabel","partnerTypeLabel","resetBtnLabel","regionDropdownDefaultLabel","typeDropdownDefaultLabel","getSelectedOption","facet","keyword","name","Object","keys","array","PartnerCard","imageUrlWebp","partner","imageUrl","imageAlt","title","url","indexOf","CommonInnerMarkup","srcSet","src","alt","parse","viewBox","href","useFetch","endpoint","language","filters","results","setResults","facets","setFacets","loading","setLoading","params","forEach","Axios","method","data","resultListing","updatedFacets","console","log","fetchData","PartnerCardListingNew","noResultsLabel","setSelectedFacets","React","memo"],"mappings":"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","file":"37.db8e4582abb43e6eba0a.js","sourcesContent":["import React, { useState, useEffect, useRef, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { isDevice } from '../../helpers';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nconst Dropdown = ({\r\n  label,\r\n  placeholder,\r\n  selectedOption,\r\n  options = [],\r\n  onChange,\r\n  disabled = false,\r\n  compareAttr = 'value',\r\n  style\r\n}) => {\r\n  const [open, toggle] = useState(false);\r\n  const [cursor, setCursor] = useState(null);\r\n  const guid = useRef(uuidv4());\r\n  const listboxGuid = useRef(uuidv4());\r\n  const nativeEl = useRef(null);\r\n  const dropdownEl = useRef(null);\r\n  const triggerEl = useRef(null);\r\n  const listingEl = useRef(null);\r\n\r\n  useEffect(() => {\r\n    const handleClickOutside = e => {\r\n      const container = dropdownEl.current;\r\n\r\n      if (container) {\r\n        if (container !== e.target && !container.contains(e.target)) {\r\n          toggle(false);\r\n        }\r\n      }\r\n    };\r\n\r\n    document.addEventListener('click', handleClickOutside);\r\n\r\n    return () => {\r\n      document.removeEventListener('click', handleClickOutside);\r\n    };\r\n  }, []);\r\n\r\n  useEffect(() => {\r\n    if (open) {\r\n      listingEl.current.focus();\r\n    }\r\n  }, [open]);\r\n\r\n  useEffect(() => {\r\n    if (selectedOption) {\r\n      const index = options.findIndex(\r\n        option => option[compareAttr] === selectedOption[compareAttr]\r\n      );\r\n      setCursor(index);\r\n    } else {\r\n      setCursor(null);\r\n    }\r\n  }, [compareAttr, options, selectedOption]);\r\n\r\n  const handleTriggerClick = e => {\r\n    if (isDevice()) {\r\n      return;\r\n    }\r\n\r\n    toggle(!open);\r\n  };\r\n\r\n  const handleOptionClick = option => {\r\n    onChange(option);\r\n    toggle(false);\r\n  };\r\n\r\n  const handleOptionChange = e => {\r\n    const option = options.find(option => option.value === e.target.value);\r\n    onChange(option);\r\n    toggle(false);\r\n  };\r\n\r\n  const handleKeyDown = e => {\r\n    /* eslint-disable indent */\r\n    switch (e.keyCode) {\r\n      case 38: // up\r\n        e.preventDefault();\r\n        if (cursor) {\r\n          setCursor(cursor - 1);\r\n        } else {\r\n          setCursor(options.length - 1);\r\n        }\r\n        break;\r\n      case 40: // down\r\n        e.preventDefault();\r\n        if (cursor !== null && cursor < options.length - 1) {\r\n          setCursor(cursor + 1);\r\n        } else {\r\n          setCursor(0);\r\n        }\r\n        break;\r\n      case 27: // esc\r\n        e.preventDefault();\r\n        toggle(false);\r\n        triggerEl.current.focus();\r\n        break;\r\n      case 13: // enter\r\n        e.preventDefault();\r\n        if (cursor !== null) {\r\n          onChange(options[cursor]);\r\n        }\r\n        toggle(false);\r\n        triggerEl.current.focus();\r\n        break;\r\n      case 9: // tab\r\n        toggle(false);\r\n        break;\r\n    }\r\n    /* eslint-enable indent */\r\n  };\r\n\r\n  const getDisplayLabel = () => {\r\n    if (selectedOption) {\r\n      return `${selectedOption.label}`;\r\n    }\r\n    return placeholder || null;\r\n  };\r\n\r\n  return (\r\n    <div className={`form-group form-group--dropdown${disabled ? ' is-disabled' : ''}`}>\r\n      <label htmlFor={guid.current} className=\"form-label\">\r\n        {label}\r\n      </label>\r\n      <div\r\n        className={`dropdown${isDevice() ? ' dropdown--native' : ''}${\r\n          style ? ` dropdown--${style}` : ''\r\n        }`}\r\n        ref={dropdownEl}\r\n      >\r\n        <select\r\n          id={guid.current}\r\n          onChange={handleOptionChange}\r\n          value={selectedOption ? selectedOption.Value : ''}\r\n          tabIndex=\"-1\"\r\n          aria-label={`${label || ''} ${getDisplayLabel()}`}\r\n          ref={nativeEl}\r\n        >\r\n          {options.map((option, i) => {\r\n            return (\r\n              <option key={i} value={option.value}>\r\n                {typeof option === 'object' ? option.label : option}\r\n              </option>\r\n            );\r\n          })}\r\n        </select>\r\n        <button\r\n          className={`dropdown__trigger${selectedOption ? ' is-filled' : ''}`}\r\n          role=\"combobox\"\r\n          type=\"button\"\r\n          aria-label={`${label || ''} ${getDisplayLabel()}`}\r\n          aria-haspopup=\"listbox\"\r\n          aria-expanded={open}\r\n          aria-controls={listboxGuid.current}\r\n          onClick={handleTriggerClick}\r\n          disabled={disabled}\r\n          ref={triggerEl}\r\n        >\r\n          {getDisplayLabel()}\r\n        </button>\r\n        <ul\r\n          role=\"listbox\"\r\n          id={listboxGuid.current}\r\n          aria-activedescendant={\r\n            cursor !== null ? `${guid.current}-${cursor}` : null\r\n          }\r\n          tabIndex=\"-1\"\r\n          className=\"dropdown__list\"\r\n          ref={listingEl}\r\n          onKeyDown={handleKeyDown}\r\n        >\r\n          {options.map((option, i) => (\r\n            <li\r\n              role=\"option\"\r\n              key={i}\r\n              id={`${guid.current}-${i}`}\r\n              className=\"dropdown__item\"\r\n              aria-selected={cursor === i}\r\n              onClick={() => handleOptionClick(option)}\r\n            >\r\n              {typeof option === 'object' ? option.label : option}\r\n            </li>\r\n          ))}\r\n        </ul>\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nDropdown.propTypes = {\r\n  label: PropTypes.string,\r\n  placeholder: PropTypes.string,\r\n  selectedOption: PropTypes.shape({\r\n    value: PropTypes.PropTypes.oneOfType([\r\n      PropTypes.string,\r\n      PropTypes.number,\r\n      PropTypes.bool\r\n    ]),\r\n    label: PropTypes.string\r\n  }),\r\n  options: PropTypes.arrayOf(PropTypes.object),\r\n  onChange: PropTypes.func.isRequired,\r\n  disabled: PropTypes.bool,\r\n  compareAttr: PropTypes.string,\r\n  style: PropTypes.string\r\n};\r\n\r\nexport default Dropdown;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport Dropdown from '../../../../js/components/react/Dropdown';\r\n\r\nconst PartnerFacetList = ({\r\n  initialFacets,\r\n  selectedFacets,\r\n  onFiltersChange,\r\n  onResetFilters,\r\n  regionLabel,\r\n  partnerTypeLabel,\r\n  resetBtnLabel,\r\n  regionDropdownDefaultLabel,\r\n  typeDropdownDefaultLabel\r\n}) => {\r\n  const getSelectedOption = facet => {\r\n    if (selectedFacets[facet.keyword]) {\r\n      const option = facet.options.find(\r\n        option => option.value === selectedFacets[facet.keyword]\r\n      );\r\n\r\n      if (option) {\r\n        return {\r\n          ...option,\r\n          label: option.name\r\n        };\r\n      }\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div className=\"partner-facet-list\">\r\n      {initialFacets.map(facet => (\r\n        <Dropdown\r\n          key={facet.keyword}\r\n          options={facet.options.map(option => ({\r\n            value: option.value,\r\n            label: option.name\r\n          }))}\r\n          placeholder={facet.keyword === 'regions' ? regionDropdownDefaultLabel : typeDropdownDefaultLabel }\r\n          selectedOption={getSelectedOption(facet)}\r\n          label={facet.keyword === 'regions' ? regionLabel : partnerTypeLabel}\r\n          onChange={e => {\r\n            onFiltersChange(facet.keyword, e.value);\r\n          }}\r\n          disabled={!facet.options.length}\r\n        />\r\n      ))}\r\n\r\n      {!!Object.keys(selectedFacets).length && (\r\n        <div className=\"partner-facet-list__reset\">\r\n          <button className=\"btn-v2 btn--primary btn--small\" onClick={onResetFilters}>\r\n            <div className=\"btn-content\">{resetBtnLabel}</div>\r\n          </button>\r\n        </div>\r\n      )}\r\n    </div>\r\n  );\r\n};\r\n\r\nPartnerFacetList.propTypes = {\r\n  initialFacets: PropTypes.array,\r\n  resetBtnLabel: PropTypes.string\r\n};\r\n\r\nexport default PartnerFacetList;\r\n","import React, { Fragment } from 'react';\r\nimport parse from 'html-react-parser';\r\n\r\nconst PartnerCard = ({ partner }) => {\r\n  const {\r\n    imageUrl,\r\n    imageAlt,\r\n    title,\r\n    url,\r\n    target\r\n  } = partner;\r\n\r\n  let imageUrlWebp;\r\n\r\n  if (imageUrl) {\r\n    if (imageUrl.indexOf('?') !== -1) {\r\n      imageUrlWebp = `${imageUrl}&format=webp`;\r\n    } else {\r\n      imageUrlWebp = `${imageUrl}?format=webp`;\r\n    }\r\n  }\r\n  const CommonInnerMarkup = (\r\n    <Fragment>\r\n      {imageUrl && (\r\n        <picture className=\"partner-card-new__image\">\r\n          <source srcSet={imageUrlWebp} type=\"image/webp\" />\r\n          <img src={imageUrl} alt={imageAlt} />\r\n        </picture>\r\n      )}\r\n      <div className=\"partner-card-new__info\">\r\n        <div className=\"partner-card-new__name\">{parse(title)}</div>\r\n        <span className=\"partner-card-new__link\">\r\n          <svg viewBox=\"0 0 18 18\">\r\n            <use href=\"#link-arrow-right-icon\" />\r\n          </svg>\r\n        </span>\r\n      </div>\r\n    </Fragment>\r\n  );\r\n\r\n  return (\r\n    <a className=\"partner-card-new\" href={url} target={target}>\r\n      {CommonInnerMarkup}\r\n    </a>\r\n  );\r\n};\r\n\r\nexport default PartnerCard;\r\n","import { useState, useEffect } from 'react';\r\nimport Axios from 'axios';\r\n\r\nconst useFetch = (endpoint, language, filters) => {\r\n  const [results, setResults] = useState([]);\r\n  const [facets, setFacets] = useState([]);\r\n  const [loading, setLoading] = useState([]);\r\n\r\n  useEffect(() => {\r\n    const fetchData = async () => {\r\n      const params = {};\r\n      if (language) {\r\n        params.language = language;\r\n      }\r\n\r\n      if (filters) {\r\n        Object.keys(filters).forEach(key => {\r\n          if (filters[key] === '') {\r\n            params[key] = [];\r\n          } else {\r\n            params[key] = filters[key];\r\n          }\r\n        });\r\n      }\r\n\r\n      try {\r\n        setLoading(true);\r\n        const {\r\n          data: {\r\n            resultListing,\r\n            facets: updatedFacets\r\n          }\r\n        } = await Axios({\r\n          method: 'POST',\r\n          url: endpoint,\r\n          data: params\r\n        });\r\n\r\n        setResults(resultListing);\r\n        setFacets(updatedFacets);\r\n      } catch (error) {\r\n        console.log(error);\r\n      } finally {\r\n        setLoading(false);\r\n      }\r\n    };\r\n\r\n    fetchData();\r\n  }, [endpoint, filters, language]);\r\n\r\n  return { results, facets, loading };\r\n};\r\n\r\nexport default useFetch;\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport PartnerFacetList from './components/PartnerFacetList';\r\nimport PartnerCard from './components/PartnerCard';\r\n\r\nimport { useFetch } from './hooks';\r\n\r\nconst PartnerCardListingNew = ({\r\n  endpoint,\r\n  language,\r\n  noResultsLabel,\r\n  regionLabel,\r\n  partnerTypeLabel,\r\n  resetBtnLabel,\r\n  regionDropdownDefaultLabel,\r\n  typeDropdownDefaultLabel,\r\n  title\r\n}) => {\r\n  const [selectedFacets, setSelectedFacets] = useState({});\r\n  const { results, facets, loading } = useFetch(\r\n    endpoint,\r\n    language,\r\n    selectedFacets\r\n  );\r\n\r\n  const handleReset = () => {\r\n    setSelectedFacets({});\r\n  };\r\n\r\n  const handleFilters = (keyword, value) => {\r\n    const updatedFacets = {\r\n      ...selectedFacets,\r\n      [keyword]: value\r\n    };\r\n\r\n    //clear types on region change\r\n    /*\r\n    if (keyword === 'regions') {\r\n      delete updatedFacets['type'];\r\n    }\r\n    */\r\n\r\n    setSelectedFacets(updatedFacets);\r\n  };\r\n\r\n  return (\r\n    <>\r\n      {title ? (<h2 className=\"partner-card-listing-new__title\">{title}</h2>) : ('') }\r\n      <div className=\"partner-card-listing-new__filters\">\r\n        <PartnerFacetList\r\n          initialFacets={facets}\r\n          selectedFacets={selectedFacets}\r\n          onFiltersChange={handleFilters}\r\n          onResetFilters={handleReset}\r\n          regionLabel={regionLabel}\r\n          partnerTypeLabel={partnerTypeLabel}\r\n          resetBtnLabel={resetBtnLabel}\r\n          regionDropdownDefaultLabel={regionDropdownDefaultLabel}\r\n          typeDropdownDefaultLabel={typeDropdownDefaultLabel}\r\n        />\r\n      </div>\r\n      <div>\r\n        {!loading && !results?.length ? (\r\n          <p>{noResultsLabel}</p>\r\n        ) : (\r\n          <div className=\"partner-card-listing-new__results\">\r\n            {results?.map((partner, i) => (\r\n              <PartnerCard key={i} partner={partner} />\r\n            ))}\r\n          </div>\r\n        )}\r\n      </div>\r\n    </>\r\n  );\r\n};\r\n\r\nPartnerCardListingNew.propTypes = {\r\n  endpoint: PropTypes.string.isRequired,\r\n  language: PropTypes.string.isRequired,\r\n  noResultsLabel: PropTypes.string.isRequired,\r\n  regionLabel: PropTypes.string.isRequired,\r\n  partnerTypeLabel: PropTypes.string.isRequired,\r\n  resetBtnLabel: PropTypes.string.isRequired,\r\n  regionDropdownDefaultLabel: PropTypes.string.isRequired,\r\n  typeDropdownDefaultLabel: PropTypes.string.isRequired,\r\n  title: PropTypes.string\r\n};\r\n\r\nexport default React.memo(PartnerCardListingNew);\r\n"],"sourceRoot":""}