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} /> <ModalDelete localeToDelete={localeToDelete} onClose={closeModalToDelete} />
<ModalEdit localeToEdit={localeToEdit} onClose={closeModalToEdit} locales={locales} /> <ModalEdit localeToEdit={localeToEdit} onClose={closeModalToEdit} locales={locales} />
</> </>

View File

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