@nexusui/components
Version:
These are custom components specially-developed for NexusUI applications. They will make your life easier by giving you out-of-the-box implementations for various high-level UI elements that you can drop directly into your application.
2 lines (1 loc) • 1.26 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),o=require("@mui/material/Menu"),t=require("clsx"),n=require("./CountryItem.js");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var i=u(o),s=u(t);exports.default=o=>{const{anchorEl:t,onClose:u,onSelect:a,selectedCountry:l,allCountries:d,highPriorityCountries:c}=o,f=r.useRef({}),m=r.useRef(null),C=r.useMemo((()=>{let e=Array.from(d).sort(((e,r)=>e.name.localeCompare(r.name)));if(c&&c?.length>0){const r=e.filter((e=>c.includes(e.iso2))),o=e.filter((e=>!c.includes(e.iso2)));r.sort(((e,r)=>c.indexOf(e.iso2)-c.indexOf(r.iso2))),e=[...r,...o]}return e}),[d,c]),x=r.useCallback((e=>Boolean(l&&l.dialCode===e.dialCode)),[l]);return e.jsx(i.default,{"data-testid":"NexusPhoneNumber-country-menu",className:s.default("NexusCountryMenu-root","NexusPhoneNumber-country-menu"),ref:m,id:"country-menu",anchorEl:t,open:Boolean(t),onClose:u,children:C?.map(((r,o)=>e.jsx(n.default,{"data-testid":`NexusPhoneNumber-country-menu-item-${r.iso2}`,selected:x(r),onClick:()=>(e=>{a?.(e)})(r),"data-iso2":r.iso2,name:r.name,iso2:r.iso2,dialCode:r.dialCode,ref:e=>{e&&(f.current[`flag_no_${o}`]=e)}},`preferred_${r.iso2}_${o}`)))})};