From c2444501eb94b6a222c1d0b2569d3590ca333a01 Mon Sep 17 00:00:00 2001 From: Aleksandra Bozek Date: Fri, 18 Jul 2025 15:15:09 +0200 Subject: [PATCH 1/3] IBX-9976: Fixed styles for invalid fields labels --- .../public/js/scripts/fieldType/ezbinaryfile.js | 3 +++ .../Resources/public/js/scripts/fieldType/ezboolean.js | 4 +++- .../Resources/public/js/scripts/fieldType/ezemail.js | 4 +++- .../Resources/public/js/scripts/fieldType/ezfloat.js | 4 +++- .../Resources/public/js/scripts/fieldType/ezimage.js | 9 ++++++--- .../public/js/scripts/fieldType/ezimageasset.js | 3 +++ .../Resources/public/js/scripts/fieldType/ezkeyword.js | 9 +++++---- .../Resources/public/js/scripts/fieldType/ezmedia.js | 9 ++++++++- .../public/js/scripts/fieldType/ezobjectrelationlist.js | 5 ++++- .../Resources/public/js/scripts/fieldType/ezselection.js | 5 +++-- .../Resources/public/js/scripts/fieldType/ezstring.js | 5 +++-- .../Resources/public/js/scripts/fieldType/eztext.js | 4 +++- .../Resources/public/js/scripts/fieldType/ezurl.js | 2 +- 13 files changed, 48 insertions(+), 18 deletions(-) diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezbinaryfile.js b/src/bundle/Resources/public/js/scripts/fieldType/ezbinaryfile.js index 7c9d798aa0..47fcf0ef7c 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezbinaryfile.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezbinaryfile.js @@ -35,6 +35,7 @@ eventName: 'change', callback: 'validateInput', errorNodeSelectors: ['.ibexa-form-error'], + invalidStateSelectors: ['.ibexa-field-edit__label'], }, { isValueValidator: false, @@ -42,6 +43,7 @@ eventName: 'ibexa-invalid-file-size', callback: 'showFileSizeError', errorNodeSelectors: ['.ibexa-form-error'], + invalidStateSelectors: ['.ibexa-field-edit__label'], }, { isValueValidator: false, @@ -49,6 +51,7 @@ eventName: 'ibexa-invalid-file-type', callback: 'showFileTypeError', errorNodeSelectors: ['.ibexa-form-error'], + invalidStateSelectors: ['.ibexa-field-edit__label'], }, ], }); diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezboolean.js b/src/bundle/Resources/public/js/scripts/fieldType/ezboolean.js index cfabda9083..5deb052a06 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezboolean.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezboolean.js @@ -1,6 +1,7 @@ (function (global, doc, ibexa) { const SELECTOR_FIELD = '.ibexa-field-edit--ezboolean'; const SELECTOR_ERROR_NODE = '.ibexa-form-error'; + const SELECTOR_LABEL = '.ibexa-field-edit__label'; class EzBooleanValidator extends ibexa.BaseFieldValidator { /** @@ -13,7 +14,7 @@ */ validateInput(event) { const isError = !event.target.checked && event.target.required; - const label = event.target.closest(SELECTOR_FIELD).querySelector('.ibexa-field-edit__label').innerHTML; + const label = event.target.closest(SELECTOR_FIELD).querySelector(SELECTOR_LABEL).innerText; const errorMessage = ibexa.errors.emptyField.replace('{fieldName}', label); return { @@ -32,6 +33,7 @@ eventName: 'change', callback: 'validateInput', errorNodeSelectors: [SELECTOR_ERROR_NODE], + invalidStateSelectors: [SELECTOR_LABEL], }, ], }); diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezemail.js b/src/bundle/Resources/public/js/scripts/fieldType/ezemail.js index 4d2749842d..d85188344f 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezemail.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezemail.js @@ -1,6 +1,7 @@ (function (global, doc, ibexa) { const SELECTOR_FIELD = '.ibexa-field-edit--ezemail'; const SELECTOR_ERROR_NODE = '.ibexa-form-error'; + const SELECTOR_LABEL = '.ibexa-field-edit__label'; class EzEmailValidator extends ibexa.BaseFieldValidator { /** @@ -17,7 +18,7 @@ const isEmpty = !input.value.trim(); const isValid = ibexa.errors.emailRegexp.test(input.value); const isError = (isRequired && isEmpty) || (!isEmpty && !isValid); - const label = input.closest(SELECTOR_FIELD).querySelector('.ibexa-field-edit__label').innerHTML; + const label = input.closest(SELECTOR_FIELD).querySelector(SELECTOR_LABEL).innerText; const result = { isError }; if (isRequired && isEmpty) { @@ -39,6 +40,7 @@ eventName: 'blur', callback: 'validateInput', errorNodeSelectors: [SELECTOR_ERROR_NODE], + invalidStateSelectors: [SELECTOR_LABEL], }, ], }); diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezfloat.js b/src/bundle/Resources/public/js/scripts/fieldType/ezfloat.js index 11d66b6b00..695dc1b15f 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezfloat.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezfloat.js @@ -1,6 +1,7 @@ (function (global, doc, ibexa) { const SELECTOR_FIELD = '.ibexa-field-edit--ezfloat'; const SELECTOR_ERROR_NODE = `${SELECTOR_FIELD} .ibexa-form-error`; + const SELECTOR_LABEL = '.ibexa-field-edit__label'; class EzFloatValidator extends ibexa.BaseFieldValidator { /** @@ -19,7 +20,7 @@ const isLess = value < parseFloat(event.target.getAttribute('min')); const isGreater = value > parseFloat(event.target.getAttribute('max')); const isError = (isEmpty && isRequired) || (!isEmpty && (!isFloat || isLess || isGreater)); - const label = event.target.closest(SELECTOR_FIELD).querySelector('.ibexa-field-edit__label').innerHTML; + const label = event.target.closest(SELECTOR_FIELD).querySelector(SELECTOR_LABEL).innerText; const result = { isError }; if (isEmpty) { @@ -49,6 +50,7 @@ eventName: 'blur', callback: 'validateFloat', errorNodeSelectors: [SELECTOR_ERROR_NODE], + invalidStateSelectors: [SELECTOR_LABEL], }, ], }); diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezimage.js b/src/bundle/Resources/public/js/scripts/fieldType/ezimage.js index e8a402cad4..b6ad45f904 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezimage.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezimage.js @@ -95,7 +95,7 @@ const alreadyIsError = this.fieldContainer.classList.contains(this.classInvalid); const isEmpty = !event.target.value; const isError = alreadyIsError || (isEmpty && isRequired && !isFileFieldEmpty); - const label = event.target.closest(SELECTOR_ALT_WRAPPER).querySelector('.ibexa-data-source__label').innerHTML; + const label = event.target.closest(SELECTOR_ALT_WRAPPER).querySelector('.ibexa-data-source__label').innerText; const result = { isError }; if (isEmpty) { @@ -116,12 +116,13 @@ eventName: 'change', callback: 'validateInput', errorNodeSelectors: ['.ibexa-form-error'], + invalidStateSelectors: ['.ibexa-field-edit__label'], }, { selector: SELECTOR_INPUT_ALT, eventName: 'blur', callback: 'validateAltInput', - invalidStateSelectors: ['.ibexa-data-source__field--alternativeText'], + invalidStateSelectors: ['.ibexa-data-source__field--alternativeText', '.ibexa-field-edit__label'], errorNodeSelectors: [`${SELECTOR_ALT_WRAPPER} .ibexa-form-error`], }, { @@ -130,6 +131,7 @@ eventName: 'ibexa-invalid-file-size', callback: 'showFileSizeError', errorNodeSelectors: ['.ibexa-form-error'], + invalidStateSelectors: ['.ibexa-field-edit__label'], }, { isValueValidator: false, @@ -137,13 +139,14 @@ eventName: 'ibexa-invalid-file-type', callback: 'showFileTypeError', errorNodeSelectors: ['.ibexa-form-error'], + invalidStateSelectors: ['.ibexa-field-edit__label'], }, { isValueValidator: false, selector: SELECTOR_INPUT_ALT, eventName: EVENT_CANCEL_ERROR, callback: 'cancelErrors', - invalidStateSelectors: ['.ibexa-data-source__field--alternativeText'], + invalidStateSelectors: ['.ibexa-data-source__field--alternativeText', '.ibexa-field-edit__label'], errorNodeSelectors: [`${SELECTOR_ALT_WRAPPER} .ibexa-form-error`], }, ], diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezimageasset.js b/src/bundle/Resources/public/js/scripts/fieldType/ezimageasset.js index d2afae1776..cba5dfa670 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezimageasset.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezimageasset.js @@ -254,6 +254,7 @@ eventName: 'change', callback: 'validateInput', errorNodeSelectors: ['.ibexa-form-error'], + invalidStateSelectors: ['.ibexa-field-edit__label'], }, { isValueValidator: false, @@ -261,6 +262,7 @@ eventName: 'ibexa-invalid-file-size', callback: 'showFileSizeError', errorNodeSelectors: ['.ibexa-form-error'], + invalidStateSelectors: ['.ibexa-field-edit__label'], }, { isValueValidator: false, @@ -268,6 +270,7 @@ eventName: 'ibexa-invalid-file-type', callback: 'showFileTypeError', errorNodeSelectors: ['.ibexa-form-error'], + invalidStateSelectors: ['.ibexa-field-edit__label'], }, ], }); diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezkeyword.js b/src/bundle/Resources/public/js/scripts/fieldType/ezkeyword.js index cd8123aa9e..b9f033fc10 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezkeyword.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezkeyword.js @@ -2,6 +2,7 @@ const SELECTOR_FIELD = '.ibexa-field-edit--ezkeyword'; const SELECTOR_TAGGIFY_CONTAINER = '.ibexa-data-source__taggify'; const SELECTOR_TAGGIFY = '.ibexa-data-source__taggify .ibexa-taggify'; + const SELECTOR_LABEL = '.ibexa-field-edit__label'; const SELECTOR_ERROR_NODE = '.ibexa-form-error'; class EzKeywordValidator extends ibexa.BaseFieldValidator { @@ -16,7 +17,7 @@ validateKeywords(event) { const fieldContainer = event.currentTarget.closest(SELECTOR_FIELD); const input = fieldContainer.querySelector('.ibexa-data-source__input-wrapper .ibexa-data-source__input'); - const label = fieldContainer.querySelector('.ibexa-field-edit__label').innerHTML; + const label = fieldContainer.querySelector(SELECTOR_LABEL).innerText; const isRequired = input.required; const isEmpty = !input.value.trim().length; const isError = isEmpty && isRequired; @@ -57,14 +58,14 @@ eventName: 'blur', callback: 'validateKeywords', errorNodeSelectors: [SELECTOR_ERROR_NODE], - invalidStateSelectors: [SELECTOR_TAGGIFY], + invalidStateSelectors: [SELECTOR_TAGGIFY, SELECTOR_LABEL], }, { selector: `${SELECTOR_FIELD} .ibexa-data-source__input.form-control`, eventName: 'change', callback: 'validateKeywords', errorNodeSelectors: [SELECTOR_ERROR_NODE], - invalidStateSelectors: [SELECTOR_TAGGIFY], + invalidStateSelectors: [SELECTOR_TAGGIFY, SELECTOR_LABEL], }, ], }); @@ -86,7 +87,7 @@ acceptKeys: ['Enter', ','], }); const updateKeywords = updateValue.bind(this, keywordInput); - const taggifyInput = taggifyContainer.querySelector('.taggify__input'); + const taggifyInput = taggifyContainer.querySelector('.ibexa-taggify__input'); if (keywordInput.required) { taggifyInput.setAttribute('required', true); diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezmedia.js b/src/bundle/Resources/public/js/scripts/fieldType/ezmedia.js index 79c1ed7287..ae63b1207a 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezmedia.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezmedia.js @@ -5,6 +5,7 @@ const SELECTOR_INFO_WRAPPER = '.ibexa-field-edit-preview__info'; const SELECTOR_MEDIA_WRAPPER = '.ibexa-field-edit-preview__media-wrapper'; const SELECTOR_INPUT_FILE = 'input[type="file"]'; + const SELECTOR_LABEL = '.ibexa-field-edit__label-wrapper .ibexa-field-edit__label'; const CLASS_MEDIA_WRAPPER_LOADING = 'ibexa-field-edit-preview__media-wrapper--loading'; class EzMediaValidator extends ibexa.BaseFileFieldValidator { @@ -23,7 +24,7 @@ const isEmpty = isNaN(value); const isInteger = Number.isInteger(value); const isError = (isEmpty && isRequired) || (!isEmpty && !isInteger); - const label = input.closest(SELECTOR_INFO_WRAPPER).querySelector('.ibexa-field-edit-preview__label').innerHTML; + const label = input.closest(SELECTOR_INFO_WRAPPER).querySelector('.ibexa-field-edit-preview__label').innerText; const result = { isError }; if (isEmpty) { @@ -133,6 +134,8 @@ const validator = new EzMediaValidator({ classInvalid: 'is-invalid', fieldContainer, + fieldSelector: SELECTOR_FIELD, + labelSelector: SELECTOR_LABEL, eventsMap: [ { isValueValidator: false, @@ -140,6 +143,7 @@ eventName: 'ibexa-invalid-file-size', callback: 'showFileSizeError', errorNodeSelectors: ['.ibexa-field-edit--ezmedia .ibexa-form-error'], + invalidStateSelectors: [SELECTOR_LABEL], }, { isValueValidator: false, @@ -147,18 +151,21 @@ eventName: 'ibexa-invalid-file-type', callback: 'showFileTypeError', errorNodeSelectors: ['.ibexa-field-edit--ezmedia .ibexa-form-error'], + invalidStateSelectors: [SELECTOR_LABEL], }, { selector: '.ibexa-field-edit-preview__dimensions .form-control', eventName: 'blur', callback: 'validateDimensions', errorNodeSelectors: [`${SELECTOR_INFO_WRAPPER} .ibexa-form-error`], + invalidStateSelectors: [SELECTOR_LABEL], }, { selector: SELECTOR_INPUT_FILE, eventName: 'change', callback: 'validateInput', errorNodeSelectors: ['.ibexa-field-edit--ezmedia .ibexa-form-error'], + invalidStateSelectors: [SELECTOR_LABEL], }, ], }); diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezobjectrelationlist.js b/src/bundle/Resources/public/js/scripts/fieldType/ezobjectrelationlist.js index 5bcc818ad4..f071e9e11a 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezobjectrelationlist.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezobjectrelationlist.js @@ -6,6 +6,7 @@ const SELECTOR_FIELD_MULTIPLE = '.ibexa-field-edit--ezobjectrelationlist'; const SELECTOR_FIELD_SINGLE = '.ibexa-field-edit--ezobjectrelation'; const SELECTOR_INPUT = '.ibexa-data-source__input'; + const SELECTOR_LABEL = '.ibexa-field-edit__label'; const SELECTOR_BTN_ADD = '.ibexa-relations__table-action--create'; const SELECTOR_ROW = '.ibexa-relations__item'; const EVENT_CUSTOM = 'validateInput'; @@ -24,7 +25,7 @@ const isEmpty = !currentTarget.value.length; const hasCorrectValues = currentTarget.value.split(',').every((id) => !isNaN(parseInt(id, 10))); const fieldContainer = currentTarget.closest(SELECTOR_FIELD_MULTIPLE) || currentTarget.closest(SELECTOR_FIELD_SINGLE); - const label = fieldContainer.querySelector('.ibexa-field-edit__label').innerHTML; + const label = fieldContainer.querySelector(SELECTOR_LABEL).innerText; const result = { isError: false }; if (isRequired && isEmpty) { @@ -48,6 +49,7 @@ selector: SELECTOR_INPUT, eventName: 'blur', callback: 'validateInput', + invalidStateSelectors: [SELECTOR_LABEL], errorNodeSelectors: ['.ibexa-form-error'], }, { @@ -55,6 +57,7 @@ selector: SELECTOR_INPUT, eventName: EVENT_CUSTOM, callback: 'validateInput', + invalidStateSelectors: [SELECTOR_LABEL], errorNodeSelectors: ['.ibexa-form-error'], }, ], diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezselection.js b/src/bundle/Resources/public/js/scripts/fieldType/ezselection.js index 2caf3571cd..4f1ec9ab9c 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezselection.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezselection.js @@ -3,6 +3,7 @@ const SELECTOR_SELECTED = '.ibexa-dropdown__selection-info'; const SELECTOR_ERROR_NODE = '.ibexa-form-error'; const EVENT_VALUE_CHANGED = 'change'; + const SELECTOR_LABEL = '.ibexa-field-edit__label'; class EzSelectionValidator extends ibexa.BaseFieldValidator { /** @@ -18,7 +19,7 @@ const hasSelectedOptions = !!fieldContainer.querySelector('.ibexa-data-source__input').value; const isRequired = fieldContainer.classList.contains('ibexa-field-edit--required'); const isError = isRequired && !hasSelectedOptions; - const label = fieldContainer.querySelector('.ibexa-field-edit__label').innerHTML; + const label = fieldContainer.querySelector(SELECTOR_LABEL).innerText; const errorMessage = ibexa.errors.emptyField.replace('{fieldName}', label); return { @@ -37,7 +38,7 @@ eventName: EVENT_VALUE_CHANGED, callback: 'validateInput', errorNodeSelectors: [SELECTOR_ERROR_NODE], - invalidStateSelectors: [SELECTOR_SELECTED], + invalidStateSelectors: [SELECTOR_SELECTED, SELECTOR_LABEL], }, ], }); diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezstring.js b/src/bundle/Resources/public/js/scripts/fieldType/ezstring.js index cbc3e1fe52..dedf2e1923 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezstring.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezstring.js @@ -1,6 +1,7 @@ (function (global, doc, ibexa) { const SELECTOR_FIELD = '.ibexa-field-edit--ezstring'; const SELECTOR_SOURCE_INPUT = '.ibexa-data-source__input'; + const SELECTOR_LABEL = '.ibexa-field-edit__label'; class EzStringValidator extends ibexa.BaseFieldValidator { /** @@ -17,7 +18,7 @@ const isTooShort = event.target.value.length < parseInt(event.target.dataset.min, 10); const isTooLong = event.target.value.length > parseInt(event.target.dataset.max, 10); const isError = (isEmpty && isRequired) || (!isEmpty && (isTooShort || isTooLong)); - const label = event.target.closest(SELECTOR_FIELD).querySelector('.ibexa-field-edit__label').innerHTML; + const label = event.target.closest(SELECTOR_FIELD).querySelector(SELECTOR_LABEL).innerText; const result = { isError }; if (isEmpty) { @@ -41,7 +42,7 @@ eventName: 'blur', callback: 'validateInput', errorNodeSelectors: ['.ibexa-form-error'], - invalidStateSelectors: [SELECTOR_SOURCE_INPUT], + invalidStateSelectors: [SELECTOR_SOURCE_INPUT, SELECTOR_LABEL], }, ], }); diff --git a/src/bundle/Resources/public/js/scripts/fieldType/eztext.js b/src/bundle/Resources/public/js/scripts/fieldType/eztext.js index d0c80f124d..ada64c38f3 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/eztext.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/eztext.js @@ -1,5 +1,6 @@ (function (global, doc, ibexa) { const SELECTOR_FIELD = '.ibexa-field-edit--eztext'; + const SELECTOR_LABEL = '.ibexa-field-edit__label'; class EzTextValidator extends ibexa.BaseFieldValidator { /** @@ -12,7 +13,7 @@ */ validateInput(event) { const isError = event.target.required && !event.target.value.trim(); - const label = event.target.closest(SELECTOR_FIELD).querySelector('.ibexa-field-edit__label').innerHTML; + const label = event.target.closest(SELECTOR_FIELD).querySelector(SELECTOR_LABEL).innerText; const errorMessage = ibexa.errors.emptyField.replace('{fieldName}', label); return { @@ -30,6 +31,7 @@ selector: '.ibexa-field-edit--eztext textarea', eventName: 'blur', callback: 'validateInput', + invalidStateSelectors: [SELECTOR_LABEL], errorNodeSelectors: ['.ibexa-form-error'], }, ], diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezurl.js b/src/bundle/Resources/public/js/scripts/fieldType/ezurl.js index 9ef70b12c3..0bdbdb0aeb 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezurl.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezurl.js @@ -15,7 +15,7 @@ const urlValue = input.value.trim(); const isRequired = input.required; const isEmpty = !urlValue; - const label = input.closest(SELECTOR_FIELD_LINK).querySelector(SELECTOR_LABEL).innerHTML; + const label = input.closest(SELECTOR_FIELD_LINK).querySelector(SELECTOR_LABEL).innerText; if (isRequired && isEmpty) { result.isError = true; From cae8c18eb55ac190a5e3f990e8d83f1724f48ba5 Mon Sep 17 00:00:00 2001 From: Aleksandra Bozek Date: Wed, 23 Jul 2025 15:21:28 +0200 Subject: [PATCH 2/3] Isbn field required validation --- .../public/js/scripts/fieldType/ibexa_isbn.js | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/bundle/Resources/public/js/scripts/fieldType/ibexa_isbn.js diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ibexa_isbn.js b/src/bundle/Resources/public/js/scripts/fieldType/ibexa_isbn.js new file mode 100644 index 0000000000..1b68c85a64 --- /dev/null +++ b/src/bundle/Resources/public/js/scripts/fieldType/ibexa_isbn.js @@ -0,0 +1,44 @@ +(function (global, doc, ibexa) { + const SELECTOR_FIELD = '.ibexa-field-edit--ezisbn'; + const SELECTOR_SOURCE_INPUT = '.ibexa-data-source__input'; + const SELECTOR_LABEL = '.ibexa-field-edit__label'; + + class IbexaIsbnValidator extends ibexa.BaseFieldValidator { + /** + * Validates the input + * + * @method validateInput + * @param {Event} event + * @returns {Object} + * @memberof IbexaIsbnValidator + */ + validateInput(event) { + const isError = event.target.required && !event.target.value.trim(); + const label = event.target.closest(SELECTOR_FIELD).querySelector(SELECTOR_LABEL).innerText; + const errorMessage = ibexa.errors.emptyField.replace('{fieldName}', label); + + return { + isError, + errorMessage, + }; + } + } + + const validator = new IbexaIsbnValidator({ + classInvalid: 'is-invalid', + fieldSelector: SELECTOR_FIELD, + eventsMap: [ + { + selector: `${SELECTOR_FIELD} input`, + eventName: 'blur', + callback: 'validateInput', + errorNodeSelectors: ['.ibexa-form-error'], + invalidStateSelectors: [SELECTOR_SOURCE_INPUT, SELECTOR_LABEL], + }, + ], + }); + + validator.init(); + + ibexa.addConfig('fieldTypeValidators', [validator], true); +})(window, window.document, window.ibexa); From 8d03388c7815bb315a503089ff5fa75f81b111ac Mon Sep 17 00:00:00 2001 From: Aleksandra Bozek Date: Tue, 29 Jul 2025 11:19:12 +0200 Subject: [PATCH 3/3] Changed maplocation validation message --- .../Resources/public/js/scripts/fieldType/ezgmaplocation.js | 2 +- .../Resources/translations/ibexa_fieldtypes_edit.en.xliff | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bundle/Resources/public/js/scripts/fieldType/ezgmaplocation.js b/src/bundle/Resources/public/js/scripts/fieldType/ezgmaplocation.js index e69f330dd4..af50a8f60b 100644 --- a/src/bundle/Resources/public/js/scripts/fieldType/ezgmaplocation.js +++ b/src/bundle/Resources/public/js/scripts/fieldType/ezgmaplocation.js @@ -303,7 +303,7 @@ if (validationResult.isError) { const errorMessage = Translator.trans( - /* @Desc("Area below needs correction") */ 'ezmaplocation.create.message.error', + /* @Desc("Area above needs correction") */ 'ezmaplocation.create.message.error', {}, 'ibexa_fieldtypes_edit', ); diff --git a/src/bundle/Resources/translations/ibexa_fieldtypes_edit.en.xliff b/src/bundle/Resources/translations/ibexa_fieldtypes_edit.en.xliff index 52b9b42ecd..67a6b445d3 100644 --- a/src/bundle/Resources/translations/ibexa_fieldtypes_edit.en.xliff +++ b/src/bundle/Resources/translations/ibexa_fieldtypes_edit.en.xliff @@ -32,8 +32,8 @@ key: ezimageasset.empty_data.message.error - Area below needs correction - Area below needs correction + Area above needs correction + Area above needs correction key: ezmaplocation.create.message.error