{"version":3,"file":"Menu.cjs","sources":["../../../../src/components/autosuggest/Menu.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport type { PropGetters } from \"downshift\";\nimport React, { type ReactNode } from \"react\";\n\ninterface MenuProps<T> {\n    downshiftProps: Pick<PropGetters<T>, \"getMenuProps\" | \"getItemProps\">;\n    highlightedIndex: number | undefined | null;\n    items: T[];\n    itemToString: (item: T | null) => string;\n    noHitsMessage?: ReactNode;\n    maxNumberOfHits?: number;\n    noHits?: { items: T[]; text: ReactNode };\n}\n\nfunction Menu<T>({\n    downshiftProps: { getMenuProps, getItemProps },\n    highlightedIndex,\n    items,\n    itemToString,\n    noHitsMessage,\n    maxNumberOfHits = Number.POSITIVE_INFINITY,\n    noHits,\n}: MenuProps<T>): JSX.Element | null {\n    const visibleItems =\n        items.length > maxNumberOfHits\n            ? items.slice(0, maxNumberOfHits)\n            : items;\n\n    if (visibleItems.length === 0 && !noHitsMessage && !noHits) {\n        return null;\n    }\n\n    const itemList =\n        visibleItems.length === 0 && noHits ? noHits.items : visibleItems;\n\n    return (\n        <div data-testid=\"autosuggest__menu\" className=\"jkl-autosuggest__menu\">\n            {(noHitsMessage || noHits) && visibleItems.length === 0 && (\n                <div\n                    className=\"jkl-autosuggest__no-hits-message\"\n                    aria-live=\"polite\"\n                >\n                    {noHitsMessage || noHits?.text}\n                </div>\n            )}\n\n            {itemList.length > 0 && (\n                <ul\n                    {...getMenuProps({\n                        className: \"jkl-autosuggest__item-list\",\n                    })}\n                >\n                    {itemList.map((item, index) => (\n                        <li\n                            {...getItemProps({\n                                item,\n                                className: clsx(\"jkl-autosuggest__item\", {\n                                    \"jkl-autosuggest__item--active\":\n                                        index === highlightedIndex,\n                                }),\n                            })}\n                            data-testid=\"autosuggest__item\"\n                            key={itemToString(item)}\n                        >\n                            {itemToString(item)}\n                        </li>\n                    ))}\n                </ul>\n            )}\n        </div>\n    );\n}\n\nexport default Menu;\n"],"names":["downshiftProps","getMenuProps","getItemProps","highlightedIndex","items","itemToString","noHitsMessage","maxNumberOfHits","Number","POSITIVE_INFINITY","noHits","visibleItems","length","slice","itemList","jsxs","className","children","jsx","text","map","item","index","createElement","clsx","key"],"mappings":"4HAcA,UACIA,gBAAkBC,aAAAA,EAAcC,aAAAA,GAChCC,iBAAAA,EACAC,MAAAA,EACAC,aAAAA,EACAC,cAAAA,EACAC,gBAAAA,EAAkBC,OAAOC,kBACzBC,OAAAA,IAEA,MAAMC,EACFP,EAAMQ,OAASL,EACTH,EAAMS,MAAM,EAAGN,GACfH,EAEV,GAA4B,IAAxBO,EAAaC,SAAiBN,IAAkBI,EAChD,OAAO,KAGX,MAAMI,EACsB,IAAxBH,EAAaC,QAAgBF,EAASA,EAAON,MAAQO,EAEzD,OACII,EAAAA,KAAC,MAAA,CAAI,cAAY,oBAAoBC,UAAU,wBACzCC,SAAA,EAAAX,GAAiBI,IAAmC,IAAxBC,EAAaC,QACvCM,EAAAA,IAAC,MAAA,CACGF,UAAU,mCACV,YAAU,SAETC,YAAiBP,GAAQS,OAIjCL,EAASF,OAAS,GACfM,EAAAA,IAAC,KAAA,IACOjB,EAAa,CACbe,UAAW,+BAGdC,SAAAH,EAASM,IAAI,CAACC,EAAMC,IACjBC,EAAAA,cAAC,KAAA,IACOrB,EAAa,CACbmB,KAAAA,EACAL,UAAWQ,EAAAA,KAAK,wBAAyB,CACrC,gCACIF,IAAUnB,MAGtB,cAAY,oBACZsB,IAAKpB,EAAagB,IAEjBhB,EAAagB,SAO1C"}