import React from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { useIntl } from '@edx/frontend-platform/i18n'; import { Form } from '@openedx/paragon'; import messages from './Country.messages'; import FormControls from './elements/FormControls'; import EditableItemHeader from './elements/EditableItemHeader'; import EmptyContent from './elements/EmptyContent'; import SwitchContent from './elements/SwitchContent'; import { countrySelector } from '../data/selectors'; import { useCloseOpenHandler, useHandleChange, useHandleSubmit, useIsVisibilityEnabled, } from '../data/hooks'; const Country = ({ formId, country, visibilityCountry, editMode, saveState, error, translatedCountries, countriesCodesList, countryMessages, changeHandler, submitHandler, closeHandler, openHandler, }) => { const isVisibilityEnabled = useIsVisibilityEnabled(); const intl = useIntl(); const handleChange = useHandleChange(changeHandler); const handleSubmit = useHandleSubmit(submitHandler, formId); const handleOpen = useCloseOpenHandler(openHandler, formId); const handleClose = useCloseOpenHandler(closeHandler, formId); const isDisabledCountry = (countryCode) => countriesCodesList.length > 0 && !countriesCodesList.find(code => code === countryCode); return (

{intl.formatMessage(messages['profile.country.label'])}

{error !== null && ( {error} )}
), editable: ( <>

{intl.formatMessage(messages['profile.country.label'])}

), empty: ( <>

{intl.formatMessage(messages['profile.country.label'])}

{intl.formatMessage(messages['profile.country.empty'])} ), static: ( <>

{intl.formatMessage(messages['profile.country.label'])}

), }} /> ); }; Country.propTypes = { formId: PropTypes.string.isRequired, country: PropTypes.string, visibilityCountry: PropTypes.oneOf(['private', 'all_users']), editMode: PropTypes.oneOf(['editing', 'editable', 'empty', 'static']), saveState: PropTypes.string, error: PropTypes.string, translatedCountries: PropTypes.arrayOf(PropTypes.shape({ code: PropTypes.string.isRequired, name: PropTypes.string.isRequired, })).isRequired, countriesCodesList: PropTypes.arrayOf(PropTypes.string).isRequired, countryMessages: PropTypes.objectOf(PropTypes.string).isRequired, changeHandler: PropTypes.func.isRequired, submitHandler: PropTypes.func.isRequired, closeHandler: PropTypes.func.isRequired, openHandler: PropTypes.func.isRequired, }; Country.defaultProps = { editMode: 'static', saveState: null, country: null, visibilityCountry: 'private', error: null, }; export default connect( countrySelector, {}, )(Country);