mirror of https://github.com/django/django.git
Fixed #31441 -- Ensured TabluarInline expands when child inputs have errors.
This commit is contained in:
parent
b4e7bf5284
commit
96c6f9c61c
|
@ -17,7 +17,7 @@
|
|||
for (var i = 0; i < fieldsets.length; i++) {
|
||||
var elem = fieldsets[i];
|
||||
// Don't hide if fields in this fieldset have errors
|
||||
if (elem.querySelectorAll('div.errors').length === 0) {
|
||||
if (elem.querySelectorAll('div.errors, ul.errorlist').length === 0) {
|
||||
elem.classList.add('collapsed');
|
||||
var h2 = elem.querySelector('h2');
|
||||
var link = document.createElement('a');
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
(function(){var e=function(b,a){return b.nodeName===a.toUpperCase()?b:"BODY"===b.parentNode.nodeName?null:b.parentNode&&e(b.parentNode,a)};window.addEventListener("load",function(){for(var b=document.querySelectorAll("fieldset.collapse"),a=0;a<b.length;a++){var c=b[a];if(0===c.querySelectorAll("div.errors").length){c.classList.add("collapsed");c=c.querySelector("h2");var d=document.createElement("a");d.id="fieldsetcollapser"+a;d.className="collapse-toggle";d.href="#";d.textContent=gettext("Show");
|
||||
(function(){var e=function(b,a){return b.nodeName===a.toUpperCase()?b:"BODY"===b.parentNode.nodeName?null:b.parentNode&&e(b.parentNode,a)};window.addEventListener("load",function(){for(var b=document.querySelectorAll("fieldset.collapse"),a=0;a<b.length;a++){var c=b[a];if(0===c.querySelectorAll("div.errors, ul.errorlist").length){c.classList.add("collapsed");c=c.querySelector("h2");var d=document.createElement("a");d.id="fieldsetcollapser"+a;d.className="collapse-toggle";d.href="#";d.textContent=gettext("Show");
|
||||
c.appendChild(document.createTextNode(" ("));c.appendChild(d);c.appendChild(document.createTextNode(")"))}}b=function(a){if(a.target.matches(".collapse-toggle")){a.preventDefault();a.stopPropagation();var b=e(a.target,"fieldset");b.classList.contains("collapsed")?(a.target.textContent=gettext("Hide"),b.classList.remove("collapsed")):(a.target.textContent=gettext("Show"),b.classList.add("collapsed"))}};c=document.querySelectorAll("fieldset.module");for(a=0;a<c.length;a++)c[a].addEventListener("click",
|
||||
b)})})();
|
||||
|
|
|
@ -1278,3 +1278,44 @@ class SeleniumTests(AdminSeleniumTestCase):
|
|||
self.selenium.find_element_by_css_selector(selector).value_of_css_property('border'),
|
||||
'1px solid rgb(186, 33, 33)', # 1px solid #ba2121
|
||||
)
|
||||
|
||||
def test_inline_formset_error(self):
|
||||
self.admin_login(username='super', password='secret')
|
||||
self.selenium.get(self.live_server_url + reverse('admin:admin_inlines_holder5_add'))
|
||||
stacked_inline_formset_selector = 'div#inner5stacked_set-group fieldset.module.collapse'
|
||||
tabular_inline_formset_selector = 'div#inner5tabular_set-group fieldset.module.collapse'
|
||||
# Inlines without errors, both inlines collapsed
|
||||
self.selenium.find_element_by_xpath('//input[@value="Save"]').click()
|
||||
self.assertEqual(
|
||||
len(self.selenium.find_elements_by_css_selector(stacked_inline_formset_selector + '.collapsed')), 1
|
||||
)
|
||||
self.assertEqual(
|
||||
len(self.selenium.find_elements_by_css_selector(tabular_inline_formset_selector + '.collapsed')), 1
|
||||
)
|
||||
show_links = self.selenium.find_elements_by_link_text('SHOW')
|
||||
self.assertEqual(len(show_links), 2)
|
||||
|
||||
# Inlines with errors, both inlines expanded
|
||||
test_fields = ['#id_inner5stacked_set-0-dummy', '#id_inner5tabular_set-0-dummy']
|
||||
for show_index, field_name in enumerate(test_fields):
|
||||
show_links[show_index].click()
|
||||
self.wait_until_visible(field_name)
|
||||
self.selenium.find_element_by_id(field_name[1:]).send_keys(1)
|
||||
hide_links = self.selenium.find_elements_by_link_text('HIDE')
|
||||
self.assertEqual(len(hide_links), 2)
|
||||
for hide_index, field_name in enumerate(test_fields):
|
||||
hide_links[hide_index].click()
|
||||
self.wait_until_invisible(field_name)
|
||||
self.selenium.find_element_by_xpath('//input[@value="Save"]').click()
|
||||
self.assertEqual(
|
||||
len(self.selenium.find_elements_by_css_selector(stacked_inline_formset_selector + '.collapsed')), 0
|
||||
)
|
||||
self.assertEqual(
|
||||
len(self.selenium.find_elements_by_css_selector(tabular_inline_formset_selector + '.collapsed')), 0
|
||||
)
|
||||
self.assertEqual(
|
||||
len(self.selenium.find_elements_by_css_selector(stacked_inline_formset_selector)), 1
|
||||
)
|
||||
self.assertEqual(
|
||||
len(self.selenium.find_elements_by_css_selector(tabular_inline_formset_selector)), 1
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue