{"version":3,"file":"FacetAccordion-DQ2x_-_t.js","sources":["../../src/scripts/modules/react-modules/Listings/Facets/FacetAccordion.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\r\nimport {\r\n  Accordion,\r\n  AccordionContent,\r\n  AccordionItem,\r\n  AccordionTrigger\r\n} from '../../../../components/react-components/Accordion';\r\nimport { Checkbox } from '../../../../components/react-components/Checkbox';\r\nimport { FacetProps } from '../types';\r\n\r\ntype FacetDataItem = {\r\n  name: string;\r\n  count: number;\r\n};\r\n\r\nexport type FacetData = {\r\n  [key: string]: {\r\n    Categories: {\r\n      IdTitle: FacetDataItem[];\r\n    };\r\n  };\r\n};\r\n\r\ntype OwnProps = {\r\n  facets: FacetProps[];\r\n  onSelectionChangeHandler: (selectedFacetID: string, value: string | null) => void;\r\n  facetsData: FacetData | null;\r\n};\r\n\r\nconst FacetAccordion = ({ facets, facetsData, onSelectionChangeHandler }: OwnProps) => {\r\n  const [value, setValue] = useState('');\r\n  const [updatedFacets, setUpdatedFacets] = useState(facets);\r\n\r\n  useEffect(() => {\r\n    if (facets.length > 0) {\r\n      setValue(facets[0].id);\r\n    }\r\n  }, [facets]);\r\n\r\n  useEffect(() => {\r\n    if (facetsData) {\r\n      const newUpdatedFacets = facets.map(facet => {\r\n        const updatedItems = facet.items.map(item => {\r\n          const matchingFacet = facetsData[facet.id]?.Categories.IdTitle;\r\n          const matchingItem = matchingFacet?.find(f => f.name.split('|')[1] === item.value);\r\n          return {\r\n            ...item,\r\n            count: matchingItem ? matchingItem.count : 0 // Set count to 0 if no match\r\n          };\r\n        });\r\n\r\n        return {\r\n          ...facet,\r\n          items: updatedItems\r\n        };\r\n      });\r\n\r\n      setUpdatedFacets(newUpdatedFacets);\r\n    }\r\n  }, [facetsData, facets]);\r\n\r\n  return (\r\n    <div className=\"listing__facet listing__facet--accordion accordion\">\r\n      <Accordion type=\"single\" value={value} onValueChange={setValue} collapsible>\r\n        {updatedFacets.map((facet, index) => {\r\n          const { id, title, items: facetItems } = facet;\r\n\r\n          if (!facetItems || facetItems.length === 0) {\r\n            return null;\r\n          }\r\n\r\n          return (\r\n            <AccordionItem key={index} value={id}>\r\n              <AccordionTrigger>{title}</AccordionTrigger>\r\n              <AccordionContent className={'listing__facet-accordion-content'}>\r\n                {facetItems &&\r\n                  facetItems.map((item, index) => {\r\n                    const isChecked =\r\n                      facet.value && (facet.value as string[]).includes(item.id) ? true : false;\r\n\r\n                    return (\r\n                      <div className={`checkbox__container`} key={index}>\r\n                        <Checkbox\r\n                          id={item.id}\r\n                          onCheckedChange={() => {\r\n                            onSelectionChangeHandler(id, item.id);\r\n                          }}\r\n                          aria-label={item.value}\r\n                          checked={isChecked}\r\n                        />\r\n                        <div className=\"checkbox__label-wrapper\">\r\n                          <label htmlFor={item.id} className=\"checkbox__label\">\r\n                            {item.value}\r\n                          </label>\r\n\r\n                          <span className=\"checkbox__label-number\">({item.count})</span>\r\n                        </div>\r\n                      </div>\r\n                    );\r\n                  })}\r\n              </AccordionContent>\r\n            </AccordionItem>\r\n          );\r\n        })}\r\n      </Accordion>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default FacetAccordion;\r\n"],"names":["FacetAccordion","facets","facetsData","onSelectionChangeHandler","value","setValue","useState","updatedFacets","setUpdatedFacets","useEffect","newUpdatedFacets","facet","updatedItems","item","matchingFacet","_a","matchingItem","f","React","Accordion","index","id","title","facetItems","AccordionItem","AccordionTrigger","AccordionContent","isChecked","Checkbox"],"mappings":"+GA6BA,MAAMA,EAAiB,CAAC,CAAE,OAAAC,EAAQ,WAAAC,EAAY,yBAAAC,KAAyC,CACrF,KAAM,CAACC,EAAOC,CAAQ,EAAIC,EAAAA,SAAS,EAAE,EAC/B,CAACC,EAAeC,CAAgB,EAAIF,EAAAA,SAASL,CAAM,EAEzDQ,OAAAA,EAAAA,UAAU,IAAM,CACVR,EAAO,OAAS,GACTI,EAAAJ,EAAO,CAAC,EAAE,EAAE,CACvB,EACC,CAACA,CAAM,CAAC,EAEXQ,EAAAA,UAAU,IAAM,CACd,GAAIP,EAAY,CACR,MAAAQ,EAAmBT,EAAO,IAAaU,GAAA,CAC3C,MAAMC,EAAeD,EAAM,MAAM,IAAYE,GAAA,OAC3C,MAAMC,GAAgBC,EAAAb,EAAWS,EAAM,EAAE,IAAnB,YAAAI,EAAsB,WAAW,QACjDC,EAAeF,GAAA,YAAAA,EAAe,KAAKG,GAAKA,EAAE,KAAK,MAAM,GAAG,EAAE,CAAC,IAAMJ,EAAK,OACrE,MAAA,CACL,GAAGA,EACH,MAAOG,EAAeA,EAAa,MAAQ,CAC7C,CAAA,CACD,EAEM,MAAA,CACL,GAAGL,EACH,MAAOC,CACT,CAAA,CACD,EAEDJ,EAAiBE,CAAgB,CAAA,CACnC,EACC,CAACR,EAAYD,CAAM,CAAC,kBAGpB,MAAI,CAAA,UAAU,oDACb,EAAAiB,EAAA,cAACC,GAAU,KAAK,SAAS,MAAAf,EAAc,cAAeC,EAAU,YAAW,IACxEE,EAAc,IAAI,CAACI,EAAOS,IAAU,CACnC,KAAM,CAAE,GAAAC,EAAI,MAAAC,EAAO,MAAOC,CAAe,EAAAZ,EAEzC,MAAI,CAACY,GAAcA,EAAW,SAAW,EAChC,qBAINC,EAAc,CAAA,IAAKJ,EAAO,MAAOC,CAAA,kBAC/BI,EAAkB,KAAAH,CAAM,EACxBJ,EAAA,cAAAQ,EAAA,CAAiB,UAAW,oCAC1BH,GACCA,EAAW,IAAI,CAACV,EAAMO,IAAU,CACxB,MAAAO,EACJ,GAAAhB,EAAM,OAAUA,EAAM,MAAmB,SAASE,EAAK,EAAE,GAE3D,OACGK,EAAA,cAAA,MAAA,CAAI,UAAW,sBAAuB,IAAKE,CAC1C,EAAAF,EAAA,cAACU,EAAA,CACC,GAAIf,EAAK,GACT,gBAAiB,IAAM,CACIV,EAAAkB,EAAIR,EAAK,EAAE,CACtC,EACA,aAAYA,EAAK,MACjB,QAASc,CAAA,CACX,EACCT,EAAA,cAAA,MAAA,CAAI,UAAU,yBAAA,kBACZ,QAAM,CAAA,QAASL,EAAK,GAAI,UAAU,iBAAA,EAChCA,EAAK,KACR,EAECK,EAAA,cAAA,OAAA,CAAK,UAAU,wBAAA,EAAyB,IAAEL,EAAK,MAAM,GAAC,CACzD,CACF,CAEH,CAAA,CACL,CACF,CAEH,CAAA,CACH,CACF,CAEJ"}