misc: remove fixed fields from top errors summary (#82633) #1431
|
@ -118,7 +118,7 @@ class FormDefForm(Form):
|
|||
if hasattr(widget, 'field') and widget.has_error() and not getattr(widget, 'is_hidden', False):
|
||||
widget_with_errors.append(widget)
|
||||
if widget_with_errors:
|
||||
t += htmltext('<p>')
|
||||
t += htmltext('<p id="field-error-links">')
|
||||
t += str(
|
||||
ngettext(
|
||||
'The following field has an error:',
|
||||
|
@ -128,9 +128,13 @@ class FormDefForm(Form):
|
|||
)
|
||||
t += ' '
|
||||
for i, widget in enumerate(widget_with_errors):
|
||||
t += htmltext('<a href="#form_label_%s">%s</a>') % (widget.get_name_for_id(), widget.title)
|
||||
t += htmltext('<a data-field-name="%s" href="#form_label_%s">%s</a>') % (
|
||||
widget.get_name_for_id(),
|
||||
widget.get_name_for_id(),
|
||||
widget.title,
|
||||
)
|
||||
if i < len(widget_with_errors) - 1:
|
||||
t += str(_(', '))
|
||||
t += htmltext('<span class="list-comma">%s</span>') % _(', ')
|
||||
t += htmltext('</p>')
|
||||
return t.getvalue()
|
||||
|
||||
|
|
|
@ -1048,6 +1048,21 @@ const LiveValidation = (function(){
|
|||
field.setAttribute("aria-describedby", this.errorEl.id)
|
||||
this.widget.classList.remove(this.errorClass)
|
||||
this.hasError = false
|
||||
var base_field_widget_id = null
|
||||
var current_widget = this.widget
|
||||
// for fields in blocks, a single error is displayed on top, using the block name,
|
||||
// look for it and remove it as soon as the user is correcting the form
|
||||
// (even if there are still some errors in other subfields)
|
||||
|
||||
while (current_widget.nodeName != 'FORM') {
|
||||
if (current_widget.dataset.widgetNameForId) base_field_widget_id = current_widget.dataset.widgetNameForId
|
||||
current_widget = current_widget.parentNode
|
||||
}
|
||||
var comma = document.querySelector(`#field-error-links [data-field-name="${base_field_widget_id}"] + span.list-comma`)
|
||||
if (comma) comma.remove()
|
||||
document.querySelector(`#field-error-links [data-field-name="${base_field_widget_id}"]`).remove()
|
||||
if (! document.querySelector('#field-error-links a')) {
|
||||
document.querySelector('#field-error-links').remove()
|
||||
}
|
||||
}
|
||||
|
||||
init() {
|
||||
|
|
Loading…
Reference in New Issue
Ça peut se discuter, donc mon option ici est pour les blocs de champs de retirer la mention dès qu'on corrige un de ses champs, ça pourrait être de ne pas la retirer tant qu'il y a des champs marqués en erreur dans le bloc (c'est davantage de js et je n'étais pas à l'aise.