diff --git a/packages/strapi-plugin-i18n/admin/src/components/ModalCreate/BaseForm.js b/packages/strapi-plugin-i18n/admin/src/components/ModalCreate/BaseForm.js
new file mode 100644
index 0000000000..07c8ef5b50
--- /dev/null
+++ b/packages/strapi-plugin-i18n/admin/src/components/ModalCreate/BaseForm.js
@@ -0,0 +1,77 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { Label } from '@buffetjs/core';
+import { Inputs } from '@buffetjs/custom';
+import Select from 'react-select';
+import { Col, Row } from 'reactstrap';
+import { useIntl } from 'react-intl';
+import { useFormikContext } from 'formik';
+import { getTrad } from '../../utils';
+
+const BaseForm = ({ options, defaultOption }) => {
+ const { formatMessage } = useIntl();
+ const { values, handleChange, setFieldValue } = useFormikContext();
+
+ return (
+
+
+
+
+
+
+
+ );
+};
+
+BaseForm.defaultProps = {
+ defaultOption: undefined,
+};
+
+BaseForm.propTypes = {
+ options: PropTypes.arrayOf(
+ PropTypes.exact({ value: PropTypes.string.isRequired, label: PropTypes.string.isRequired })
+ ).isRequired,
+ defaultOption: PropTypes.exact({
+ value: PropTypes.string.isRequired,
+ label: PropTypes.string.isRequired,
+ }),
+};
+
+export default BaseForm;
diff --git a/packages/strapi-plugin-i18n/admin/src/components/ModalCreate/index.js b/packages/strapi-plugin-i18n/admin/src/components/ModalCreate/index.js
index 43357c0ccf..1598444fc4 100644
--- a/packages/strapi-plugin-i18n/admin/src/components/ModalCreate/index.js
+++ b/packages/strapi-plugin-i18n/admin/src/components/ModalCreate/index.js
@@ -7,15 +7,40 @@ import { Formik } from 'formik';
import localeFormSchema from '../../schemas';
import { getTrad } from '../../utils';
import SettingsModal from '../SettingsModal';
+import useDefaultLocales from '../../hooks/useDefaultLocales';
+import useAddLocale from '../../hooks/useAddLocale';
+import BaseForm from './BaseForm';
const ModalCreate = ({ onClose, isOpened }) => {
+ const { defaultLocales, isLoading } = useDefaultLocales();
+ const { isAdding, addLocale } = useAddLocale();
const { formatMessage } = useIntl();
+ if (!isOpened) return null;
+
+ if (isLoading) {
+ return (
+
+
+ {formatMessage({ id: getTrad('Settings.locales.modal.create.defaultLocales.loading') })}
+
+
+ );
+ }
+
+ const options = (defaultLocales || []).map(locale => ({
+ label: locale.code,
+ value: locale.name,
+ }));
+
+ const defaultOption = options[0];
+
return (
null}
+ initialValues={{ code: defaultOption.label, displayName: defaultOption.value }}
+ onSubmit={values =>
+ addLocale({ code: values.code, name: values.displayName }).then(onClose)}
validationSchema={localeFormSchema}
>
{({ handleSubmit, errors }) => (
@@ -30,7 +55,9 @@ const ModalCreate = ({ onClose, isOpened }) => {
})}
tabsId="i18n-settings-tabs-create"
>
- Base form
+
+
+
advanced
@@ -42,7 +69,7 @@ const ModalCreate = ({ onClose, isOpened }) => {