diff --git a/src/locales/en.js b/src/locales/en.js
index cc8cb6f1b..4ac3e19c4 100644
--- a/src/locales/en.js
+++ b/src/locales/en.js
@@ -231,7 +231,7 @@ export default {
'app.maxLength': 'Maximum length',
'app.regexp': 'Regular expression',
'app.enumeratorStaticItems': 'Elements',
- 'app.enumeratorStaticItems.help': 'Insert a configuration like \'lable1,lable2,lable3\'',
+ 'app.enumeratorStaticItems.help': 'Insert a configuration like \'label1,label2,label3\'',
'app.enumeratorStaticItemsMap.help': 'Insert a configuration like \'key1=value1,key2=value2,key3=value3\'',
'app.enumeratorStaticItemsSeparator': 'Separator',
'app.enumeratorExtractorBean': 'Extractor bean name',
@@ -973,6 +973,7 @@ export default {
'app.pages.friendlyCodeHelp': 'URL slug for the page. You can insert a max of 100 characters, lowercase letters, including numbers or \'_\' special character.',
'validateForm.friendlyCode': 'Friendly Code must be lowercase letters, including numbers or \'_\' special character.',
'validateForm.friendlyCodeUnique': 'Friendly Code must be unique for all languages.',
+ 'validateForm.specialCharacter': 'Please choose a single special character from this list: !@#%&_=,:;`',
'app.startTutorial': 'Start Welcome Wizard',
'emailConfig.smtpServer': 'SMTP Server',
'emailConfig.senderMgmt': 'Sender Management',
diff --git a/src/locales/it.js b/src/locales/it.js
index 008fec2dd..466e17a8c 100644
--- a/src/locales/it.js
+++ b/src/locales/it.js
@@ -1600,5 +1600,6 @@ export default {
'user.authority.addNew': 'Aggiungi nuova Autorizzazione',
'componentRepository.refreshBundleVersions': 'Aggiorna le versioni disponibili del bundle',
'componentRepository.bundle.installVersionsRefreshed': 'Aggiornato',
+ 'validateForm.specialCharacter': 'Si prega di scegliere un singolo carattere speciale da questo elenco: !@#%&_=,:;`',
},
};
diff --git a/src/locales/pt.js b/src/locales/pt.js
index 01b1f3f69..f99b5186f 100644
--- a/src/locales/pt.js
+++ b/src/locales/pt.js
@@ -1022,5 +1022,6 @@ export default {
'user.authority.addNew': 'Adicionar nova Autorização',
'componentRepository.refreshBundleVersions': 'Atualizar as versões disponíveis do pacote',
'componentRepository.bundle.installVersionsRefreshed': 'Atualizado',
+ 'validateForm.specialCharacter': 'Escolha um único caractere especial desta lista: !@#%&_=,:;`',
},
};
diff --git a/src/ui/common/attributes/AttributeEnumSettings.js b/src/ui/common/attributes/AttributeEnumSettings.js
index 4ce74896e..83cdd5498 100644
--- a/src/ui/common/attributes/AttributeEnumSettings.js
+++ b/src/ui/common/attributes/AttributeEnumSettings.js
@@ -13,6 +13,32 @@ export const element = value =>
(value && !/^[a-zA-Z0-9_]+(,[a-zA-Z0-9_]+)*$/i.test(value)
? : undefined);
+const specialCharRegex = /^[!@#%&_=,:;`]$/;
+
+
+const specialSymbolValidator = (value) => {
+ if (value && !value.match(specialCharRegex)) {
+ return ;
+ }
+ return undefined;
+};
+
+
+export const separatorValidator = (value, allValues) => {
+ if (allValues.enumeratorStaticItemsSeparator && value &&
+ allValues.enumeratorStaticItemsSeparator.match(specialCharRegex)) {
+ const regexp =
+ new
+ RegExp(`^([^${allValues.enumeratorStaticItemsSeparator}]+)(${allValues.enumeratorStaticItemsSeparator}([^${allValues.enumeratorStaticItemsSeparator}])+)*$`);
+ if (!regexp.test(value)) {
+ return ;
+ }
+ return undefined;
+ }
+ return undefined;
+};
+
+
const msgs = defineMessages({
help: {
id: 'app.enumeratorStaticItems.help',
@@ -41,7 +67,7 @@ const AttributeEnumSettings = ({ intl, enumeratorExtractorBeans, mode }) => {
}
placeholder={intl.formatMessage(msgs.help)}
- validate={[required, element]}
+ validate={[required, separatorValidator]}
/>
{
label={
}
+ validate={[specialSymbolValidator]}
/>
{
mode === MODE_ADD ?
diff --git a/test/ui/common/attributes/AttributeEnumSettings.test.js b/test/ui/common/attributes/AttributeEnumSettings.test.js
index 98616492c..a26f5c826 100644
--- a/test/ui/common/attributes/AttributeEnumSettings.test.js
+++ b/test/ui/common/attributes/AttributeEnumSettings.test.js
@@ -2,7 +2,7 @@ import React from 'react';
import 'test/enzyme-init';
import { mount } from 'enzyme';
-import AttributeEnumSettings, { element as elementValidation } from 'ui/common/attributes/AttributeEnumSettings';
+import AttributeEnumSettings, { separatorValidator } from 'ui/common/attributes/AttributeEnumSettings';
import RenderTextInput from 'ui/common/form/RenderTextInput';
import RenderSelectInput from 'ui/common/form/RenderSelectInput';
import { required } from '@entando/utils';
@@ -30,7 +30,7 @@ describe('AttributeEnumSettings', () => {
expect(element.exists()).toBe(true);
const props = element.props();
expect(props).toHaveProperty('component', RenderTextInput);
- expect(props).toHaveProperty('validate', [required, elementValidation]);
+ expect(props).toHaveProperty('validate', [required, separatorValidator]);
});
it('has a enumeratorExtractorBean select field', () => {