Skip to content

Commit 68353ae

Browse files
authored
fix: django 5.1 collapsible inlines (#254)
1 parent 82cd898 commit 68353ae

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

nested_admin/templates/nesting/admin/inlines/stacked.html

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@
88
data-inline-formset="{{ inline_admin_formset.inline_formset_data }}"
99
data-inline-model="{{ inline_admin_formset.inline_model_id }}">
1010

11-
{% ifinlineclasses %}<fieldset class="djn-fieldset module {{ inline_admin_formset.classes }}">{% endifinlineclasses %}
12-
<h2>
13-
{% if inline_admin_formset.opts.title %}{{ inline_admin_formset.opts.title }}{% else %}{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}{% endif %}
11+
{% ifinlineclasses %}<fieldset class="djn-fieldset module {{ inline_admin_formset.classes }}" aria-labelledby="{{ inline_admin_formset.formset.prefix }}-heading">{% endifinlineclasses %}
12+
{% if inline_admin_formset.is_collapsible %}<details><summary>{% endif %}
13+
<h2 id="{{ inline_admin_formset.formset.prefix }}-heading" class="inline-heading">
14+
{% if inline_admin_formset.opts.title %}{{ inline_admin_formset.opts.title }}{% else %}{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}{% endif %}
1415
</h2>
16+
{% if inline_admin_formset.is_collapsible %}</summary>{% endif %}
1517

1618
{{ inline_admin_formset.formset.management_form }}
1719
{{ inline_admin_formset.formset.non_form_errors }}
@@ -49,9 +51,17 @@ <h3 class="{% if not inline_opts.sortable_options or not inline_opts.sortable_op
4951
</ul>
5052
{% endif %}
5153

54+
{% if "5.1"|django_version_gte %}
55+
{% with parent_counter=forloop.counter0 %}
56+
{% for fieldset in inline_admin_form %}
57+
{% include inline_admin_formset.opts.fieldset_template with heading_level=4 id_prefix=parent_counter id_suffix=forloop.counter0 %}
58+
{% endfor %}
59+
{% endwith %}
60+
{% else %}
5261
{% for fieldset in inline_admin_form %}
5362
{% include inline_admin_formset.opts.fieldset_template %}
5463
{% endfor %}
64+
{% endif %}
5565
{% if inline_admin_form.has_auto_field or inline_admin_form.needs_explicit_pk_field %}
5666
{{ inline_admin_form.pk_field.field }}
5767
{% endif %}
@@ -71,6 +81,7 @@ <h3 class="{% if not inline_opts.sortable_options or not inline_opts.sortable_op
7181
{% blocktrans with inline_admin_formset.opts.verbose_name|strip_parent_name:inline_opts.verbose_name|title as verbose_name %}Add another {{ verbose_name }}{% endblocktrans %}
7282
</a>
7383
</div>
84+
{% if inline_admin_formset.is_collapsible %}</details>{% endif %}
7485
{% ifinlineclasses %}</fieldset>{% endifinlineclasses %}
7586
</div>
7687
{% endwith %}{# ends with inline_admin_formset.opts as inline_opts #}

nested_admin/templates/nesting/admin/inlines/tabular.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,13 @@
1010
data-inline-formset="{{ inline_admin_formset.inline_formset_data }}"
1111
data-inline-model="{{ inline_admin_formset.inline_model_id }}">
1212
<div class="tabular inline-related {% if forloop.last and inline_admin_formset.has_add_permission %}last-related{% endif %}">
13-
<fieldset class="module djn-fieldset {{ inline_admin_formset.classes }}">
13+
<fieldset class="module djn-fieldset {{ inline_admin_formset.classes }}" aria-labelledby="{{ inline_admin_formset.formset.prefix }}-heading">
14+
{% if inline_admin_formset.is_collapsible %}<details><summary>{% endif %}
1415

15-
<h2>
16+
<h2 id="{{ inline_admin_formset.formset.prefix }}-heading" class="inline-heading"></h2>
1617
{% if inline_admin_formset.opts.title %}{{ inline_admin_formset.opts.title }}{% else %}{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}{% endif %}
1718
</h2>
19+
{% if inline_admin_formset.is_collapsible %}</summary>{% endif %}
1820

1921
{{ inline_admin_formset.formset.management_form }}
2022
{{ inline_admin_formset.formset.non_form_errors }}
@@ -128,7 +130,7 @@ <h2>
128130
{% endwith %}
129131

130132
</table>
131-
133+
{% if inline_admin_formset.is_collapsible %}</details>{% endif %}
132134
</fieldset>
133135
</div>
134136

nested_admin/tests/admin_widgets/tests.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ def test_collapsible_inlines(self):
230230
)
231231
else:
232232
collapse_handler = self.selenium.execute_script(
233-
'return $(arguments[0]).find("> fieldset > h2 > .collapse-toggle")[0]',
233+
'return $(arguments[0]).find("> fieldset > h2 > .collapse-toggle, > fieldset > details > summary")[0]',
234234
self.get_group(),
235235
)
236236

0 commit comments

Comments
 (0)