Only display not used locales

Signed-off-by: soupette <cyril.lpz@gmail.com>
This commit is contained in:
soupette 2021-03-31 13:14:06 +02:00
parent a7f4bcbcfe
commit ef5052c64e
2 changed files with 26 additions and 7 deletions

View File

@ -52,7 +52,11 @@ const LocaleList = ({ canUpdateLocale, canDeleteLocale, onToggleCreateModal, isC
)}
/>
<ModalCreate isOpened={isCreating} onClose={onToggleCreateModal} />
<ModalCreate
isOpened={isCreating}
onClose={onToggleCreateModal}
alreadyUsedLocales={locales}
/>
<ModalDelete localeToDelete={localeToDelete} onClose={closeModalToDelete} />
<ModalEdit localeToEdit={localeToEdit} onClose={closeModalToEdit} locales={locales} />
</>

View File

@ -12,7 +12,7 @@ import useAddLocale from '../../hooks/useAddLocale';
import BaseForm from './BaseForm';
import AdvancedForm from './AdvancedForm';
const ModalCreate = ({ onClose, isOpened }) => {
const ModalCreate = ({ alreadyUsedLocales, onClose, isOpened }) => {
const { defaultLocales, isLoading } = useDefaultLocales();
const { isAdding, addLocale } = useAddLocale();
const { formatMessage } = useIntl();
@ -38,10 +38,16 @@ const ModalCreate = ({ onClose, isOpened }) => {
shouldUpdatePermissions.current = true;
};
const options = (defaultLocales || []).map(locale => ({
label: locale.code,
value: locale.name,
}));
const options = (defaultLocales || [])
.map(locale => ({
label: locale.code,
value: locale.name,
}))
.filter(({ label }) => {
const foundLocale = alreadyUsedLocales.find(({ code }) => code === label);
return !foundLocale;
});
const defaultOption = options[0];
@ -84,7 +90,11 @@ const ModalCreate = ({ onClose, isOpened }) => {
tabsId="i18n-settings-tabs-create"
>
<TabPanel>
<BaseForm options={options} defaultOption={defaultOption} />
<BaseForm
options={options}
defaultOption={defaultOption}
alreadyUsedLocales={alreadyUsedLocales}
/>
</TabPanel>
<TabPanel>
<AdvancedForm />
@ -113,7 +123,12 @@ const ModalCreate = ({ onClose, isOpened }) => {
);
};
ModalCreate.defaultProps = {
alreadyUsedLocales: [],
};
ModalCreate.propTypes = {
alreadyUsedLocales: PropTypes.array,
onClose: PropTypes.func.isRequired,
isOpened: PropTypes.bool.isRequired,
};