@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.
3 lines (2 loc) • 1.32 kB
JavaScript
"use client";
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("@mui/material/Select"),l=require("react"),o=require("@mui/material/MenuItem"),r=require("./CountrySelectItem.js"),a=require("../../util/constants.js"),n=require("../../locales/index.js"),u=require("../locale.json.js");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=i(t),c=i(o);const d="NexusCountrySelect";exports.CountrySelect=t=>{const{includeNoneOption:o=!1,onChange:i,includeCountries:m,excludeCountries:p=[],...j}=t,f=n.useTranslate(u.default,"FormSelect"),x=l.useMemo((()=>a.countries.map((e=>({label:e.label,value:e.label,code:e.code}))).filter((e=>!(m&&m.length>0)||m.includes(e.code.toLowerCase()))).filter((e=>!(p&&p.length>0)||!p.includes(e.code.toLowerCase())))),[m,p]);return e.jsxs(s.default,{inputProps:{"aria-label":"Country select"},"data-testid":`${d}-root`,className:`${d}-root`,onChange:e=>{i?.(e.target.value)},...j,children:[o&&e.jsx(c.default,{"data-testid":`${d}-option-none`,className:`${d}-option`,value:"",children:e.jsx("em",{children:f("None")})},"option-none"),x.map((t=>e.jsx(c.default,{"data-testid":`${d}-option-${t.label}`,className:`${d}-option`,value:t.value,children:e.jsx(r.CountrySelectItem,{option:t})},t.value)))]})};