UNPKG

strapi-plugin-country-select

Version:

A strapi custom field for selecting any country based on the ISO 3166-1 country code standard.

1 lines 3.61 kB
{"version":3,"file":"index-BMUVJN7f.mjs","sources":["../../admin/src/components/CountrySelect/index.tsx"],"sourcesContent":["import React from 'react';\nimport { Field, Flex, Combobox, ComboboxOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { getTranslation } from '../../utils/getTrad';\n\nimport { type InputProps, type FieldValue } from '@strapi/strapi/admin';\n\ntype CountrySelectProps = InputProps &\n FieldValue & {\n labelAction?: React.ReactNode;\n};\n\nconst CountrySelect = React.forwardRef<HTMLButtonElement, CountrySelectProps>(({\n value,\n onChange,\n name,\n label,\n labelAction,\n required,\n hint,\n placeholder,\n disabled,\n error,\n}, forwardedRef) => {\n const { formatMessage, messages } = useIntl();\n const countries = messages[getTranslation('countries')] as string || '{}';\n \n const parsedOptions: {[key: string]: string} = JSON.parse(countries);\n const isValidValue = !value || parsedOptions.hasOwnProperty(value);\n\n return (\n <Field.Root\n name={name}\n id={name}\n error={!isValidValue ? formatMessage({ id: getTranslation('unsupported-country-code') }, { countryCode: value }) : error}\n required={required}\n hint={hint}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n\n <Combobox\n ref={forwardedRef}\n placeholder={placeholder} \n aria-label={label}\n aria-disabled={disabled}\n disabled={disabled}\n value={isValidValue ? value : null}\n onChange={(countryCode: string) => onChange(name, parsedOptions.hasOwnProperty(countryCode) ? countryCode : null)}\n onClear={() => onChange(name, null)}\n >\n {Object.entries(parsedOptions).sort(([, n1], [, n2]) => n1.localeCompare(n2)).map(([countryCode, countryName]) => (\n <ComboboxOption value={countryCode} key={countryCode}>{countryName}</ComboboxOption>\n ))}\n </Combobox>\n\n <Field.Hint />\n <Field.Error />\n </Flex>\n </Field.Root>\n )\n})\n\nexport default CountrySelect;\n"],"names":[],"mappings":";;;;;AAYM,MAAA,gBAAgB,MAAM,WAAkD,CAAC;AAAA,EAC3E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAAG,iBAAiB;AAChB,QAAM,EAAE,eAAe,SAAS,IAAI,QAAQ;AAC5C,QAAM,YAAY,SAAS,eAAe,WAAW,CAAC,KAAe;AAE/D,QAAA,gBAAyC,KAAK,MAAM,SAAS;AACnE,QAAM,eAAe,CAAC,SAAS,cAAc,eAAe,KAAK;AAG7D,SAAA;AAAA,IAAC,MAAM;AAAA,IAAN;AAAA,MACG;AAAA,MACA,IAAI;AAAA,MACJ,OAAO,CAAC,eAAe,cAAc,EAAE,IAAI,eAAe,0BAA0B,EAAK,GAAA,EAAE,aAAa,MAAA,CAAO,IAAI;AAAA,MACnH;AAAA,MACA;AAAA,MAEA,+BAAC,MAAK,EAAA,WAAU,UAAS,YAAW,WAAU,KAAK,GAC/C,UAAA;AAAA,QAAA,oBAAC,MAAM,OAAN,EAAY,QAAQ,aAAc,UAAM,OAAA;AAAA,QAEzC;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,KAAK;AAAA,YACL;AAAA,YACA,cAAY;AAAA,YACZ,iBAAe;AAAA,YACf;AAAA,YACA,OAAO,eAAe,QAAQ;AAAA,YAC9B,UAAU,CAAC,gBAAwB,SAAS,MAAM,cAAc,eAAe,WAAW,IAAI,cAAc,IAAI;AAAA,YAChH,SAAS,MAAM,SAAS,MAAM,IAAI;AAAA,YAEjC,UAAO,OAAA,QAAQ,aAAa,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAA,EAAG,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,aAAa,WAAW,MACxG,oBAAC,gBAAe,EAAA,OAAO,aAAgC,UAAA,YAAA,GAAd,WAA0B,CACtE;AAAA,UAAA;AAAA,QACL;AAAA,QAEA,oBAAC,MAAM,MAAN,EAAW;AAAA,QACZ,oBAAC,MAAM,OAAN,CAAY,CAAA;AAAA,MAAA,EACjB,CAAA;AAAA,IAAA;AAAA,EACJ;AAER,CAAC;"}