JS: init live validation on blockwidget's widgets when row is added (#78227) #367

Merged
tjund merged 1 commits from wip/78227-BlockWidget-liveValidation into main 2023-06-14 16:25:13 +02:00
1 changed files with 13 additions and 4 deletions

View File

@ -753,7 +753,8 @@ $(function() {
$block.replaceWith($new_block);
const $new_blockrow = $new_block.find('.BlockSubWidget').last();
add_js_behaviours($('[data-field-id="' + block_id + '"]'));
$('form').trigger('wcs:block-row-added');
$form.trigger('wcs:block-row-added');
$form[0].dispatchEvent(new CustomEvent('wcs:block-row-added', { detail: { newBlock: $new_block[0] } } ));

Par uniformité avec le code environnant j'aurais laissé un point-virgule; mais total détail.

Par uniformité avec le code environnant j'aurais laissé un point-virgule; mais total détail.
$(document).trigger('wcs:maps-init');
if ($new_block.find('[data-live-source]')) {
$('form div[data-live-source]').parents('form').trigger('wcs:change', {modified_field: 'init'});
@ -933,12 +934,20 @@ const LiveValidation = (function(){
document.addEventListener('DOMContentLoaded', function(){
const form = document.querySelector('form[data-live-validation-url]')
if (!form) return
const formWidgets = form.querySelectorAll('.widget:not(.BlockWidget):not(.BlockSubWidget)')
const widgetSelector = '.widget:not(.BlockWidget):not(.BlockSubWidget)'
const formWidgets = form.querySelectorAll(widgetSelector)
let formDatas = {
errorTpl: document.getElementById('form_error_tpl'),
checkUrl: form.dataset.liveValidationUrl + '?field=',
}
formWidgets.forEach((widget) => {
new LiveValidation(widget, formDatas)
function initLiveValidation(widgets) {
widgets.forEach((widget) => {
new LiveValidation(widget, formDatas)
})
}
initLiveValidation(formWidgets)
form.addEventListener('wcs:block-row-added', (event) => {
const blockWidgets = event.detail.newBlock.querySelectorAll(widgetSelector)
initLiveValidation(blockWidgets)
})
})