wagtail 7.2.1__py3-none-any.whl → 7.3rc1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. wagtail/__init__.py +1 -1
  2. wagtail/actions/copy_for_translation.py +4 -2
  3. wagtail/admin/action_menu.py +4 -1
  4. wagtail/admin/api/actions/convert_alias.py +2 -2
  5. wagtail/admin/api/actions/copy.py +2 -2
  6. wagtail/admin/api/actions/copy_for_translation.py +2 -2
  7. wagtail/admin/api/actions/create_alias.py +2 -2
  8. wagtail/admin/api/actions/delete.py +1 -1
  9. wagtail/admin/api/actions/move.py +1 -1
  10. wagtail/admin/api/actions/publish.py +2 -2
  11. wagtail/admin/api/actions/revert_to_page_revision.py +2 -2
  12. wagtail/admin/api/actions/unpublish.py +1 -1
  13. wagtail/admin/api/filters.py +2 -2
  14. wagtail/admin/compare.py +22 -0
  15. wagtail/admin/forms/account.py +52 -1
  16. wagtail/admin/forms/comments.py +53 -0
  17. wagtail/admin/forms/models.py +36 -0
  18. wagtail/admin/forms/pages.py +7 -0
  19. wagtail/admin/forms/workflows.py +5 -2
  20. wagtail/admin/icons.py +4 -3
  21. wagtail/admin/locale/ar/LC_MESSAGES/django.mo +0 -0
  22. wagtail/admin/locale/ar/LC_MESSAGES/django.po +35 -0
  23. wagtail/admin/locale/en/LC_MESSAGES/django.po +262 -234
  24. wagtail/admin/locale/en/LC_MESSAGES/djangojs.po +72 -43
  25. wagtail/admin/locale/it/LC_MESSAGES/django.mo +0 -0
  26. wagtail/admin/locale/it/LC_MESSAGES/django.po +566 -6
  27. wagtail/admin/locale/it/LC_MESSAGES/djangojs.mo +0 -0
  28. wagtail/admin/locale/it/LC_MESSAGES/djangojs.po +40 -2
  29. wagtail/admin/locale/nl/LC_MESSAGES/django.mo +0 -0
  30. wagtail/admin/locale/nl/LC_MESSAGES/django.po +2 -2
  31. wagtail/admin/locale/sv/LC_MESSAGES/django.mo +0 -0
  32. wagtail/admin/locale/sv/LC_MESSAGES/django.po +330 -15
  33. wagtail/admin/locale/sv/LC_MESSAGES/djangojs.mo +0 -0
  34. wagtail/admin/locale/sv/LC_MESSAGES/djangojs.po +3 -2
  35. wagtail/admin/panels/comment_panel.py +1 -51
  36. wagtail/admin/panels/title_field_panel.py +3 -1
  37. wagtail/admin/static/wagtailadmin/css/core.css +1 -1
  38. wagtail/admin/static/wagtailadmin/js/bulk-actions.js +1 -1
  39. wagtail/admin/static/wagtailadmin/js/comments.js +1 -1
  40. wagtail/admin/static/wagtailadmin/js/core.js +1 -1
  41. wagtail/admin/static/wagtailadmin/js/core.js.LICENSE.txt +1 -1
  42. wagtail/admin/static/wagtailadmin/js/draftail.js +1 -1
  43. wagtail/admin/static/wagtailadmin/js/privacy-switch.js +1 -1
  44. wagtail/admin/static/wagtailadmin/js/sidebar.js +1 -1
  45. wagtail/admin/static/wagtailadmin/js/telepath/blocks.js +1 -1
  46. wagtail/admin/static/wagtailadmin/js/userbar.js +1 -1
  47. wagtail/admin/static/wagtailadmin/js/userbar.js.LICENSE.txt +1 -1
  48. wagtail/admin/static/wagtailadmin/js/vendor.js +1 -1
  49. wagtail/admin/static/wagtailadmin/js/wagtailadmin.js +1 -1
  50. wagtail/admin/templates/wagtailadmin/base.html +1 -1
  51. wagtail/admin/templates/wagtailadmin/generic/edit_partials.html +100 -0
  52. wagtail/admin/templates/wagtailadmin/generic/form.html +26 -5
  53. wagtail/admin/templates/wagtailadmin/generic/includes/_loaded_revision_inputs.html +3 -0
  54. wagtail/admin/templates/wagtailadmin/generic/listing_results.html +1 -17
  55. wagtail/admin/templates/wagtailadmin/pages/create.html +14 -4
  56. wagtail/admin/templates/wagtailadmin/pages/edit.html +16 -3
  57. wagtail/admin/templates/wagtailadmin/pages/edit_partials.html +31 -0
  58. wagtail/admin/templates/wagtailadmin/pages/index_results.html +1 -9
  59. wagtail/admin/templates/wagtailadmin/shared/autosave/indicator.html +36 -0
  60. wagtail/admin/templates/wagtailadmin/shared/breadcrumbs.html +1 -1
  61. wagtail/admin/templates/wagtailadmin/shared/editing_sessions/list.html +2 -2
  62. wagtail/admin/templates/wagtailadmin/shared/editing_sessions/module.html +19 -3
  63. wagtail/admin/templates/wagtailadmin/shared/headers/_actions.html +5 -0
  64. wagtail/admin/templates/wagtailadmin/shared/headers/_history_icon_link.html +2 -2
  65. wagtail/admin/templates/wagtailadmin/shared/headers/slim_header.html +8 -9
  66. wagtail/admin/templates/wagtailadmin/shared/listing/filter_partials.html +19 -0
  67. wagtail/admin/templates/wagtailadmin/shared/side_panel_toggle.html +3 -3
  68. wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/side_panel.html +3 -0
  69. wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/status/privacy.html +18 -6
  70. wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/status/usage.html +11 -4
  71. wagtail/admin/templates/wagtailadmin/shared/side_panels/includes/status/workflow.html +22 -1
  72. wagtail/admin/templates/wagtailadmin/shared/side_panels/preview.html +1 -0
  73. wagtail/admin/templates/wagtailadmin/shared/side_panels.html +1 -2
  74. wagtail/admin/templates/wagtailadmin/shared/unsaved_changes_warning.html +20 -20
  75. wagtail/admin/templates/wagtailadmin/userbar/base.html +2 -0
  76. wagtail/admin/templates/wagtailadmin/userbar/item_accessibility.html +1 -1
  77. wagtail/admin/templatetags/wagtailadmin_tags.py +6 -14
  78. wagtail/admin/tests/pages/test_create_page.py +298 -1
  79. wagtail/admin/tests/pages/test_custom_listing.py +48 -2
  80. wagtail/admin/tests/pages/test_edit_page.py +721 -7
  81. wagtail/admin/tests/pages/test_explorer_view.py +9 -5
  82. wagtail/admin/tests/pages/test_page_search.py +15 -0
  83. wagtail/admin/tests/pages/test_revisions.py +4 -0
  84. wagtail/admin/tests/test_account_management.py +88 -2
  85. wagtail/admin/tests/test_collections_views.py +15 -15
  86. wagtail/admin/tests/test_compare.py +34 -0
  87. wagtail/admin/tests/test_editing_sessions.py +230 -8
  88. wagtail/admin/tests/test_forms.py +192 -1
  89. wagtail/admin/tests/test_icon_sprite.py +22 -2
  90. wagtail/admin/tests/test_page_chooser.py +13 -13
  91. wagtail/admin/tests/test_reports_views.py +4 -1
  92. wagtail/admin/tests/test_userbar.py +69 -5
  93. wagtail/admin/tests/test_views_generic.py +5 -5
  94. wagtail/admin/tests/test_workflows.py +14 -12
  95. wagtail/admin/tests/viewsets/test_model_viewset.py +13 -0
  96. wagtail/admin/ui/autosave.py +5 -0
  97. wagtail/admin/ui/editing_sessions.py +3 -0
  98. wagtail/admin/ui/side_panels.py +19 -20
  99. wagtail/admin/userbar.py +48 -27
  100. wagtail/admin/views/bulk_action/dispatcher.py +2 -2
  101. wagtail/admin/views/chooser.py +6 -6
  102. wagtail/admin/views/editing_sessions.py +20 -7
  103. wagtail/admin/views/generic/__init__.py +1 -0
  104. wagtail/admin/views/generic/chooser.py +5 -5
  105. wagtail/admin/views/generic/mixins.py +143 -26
  106. wagtail/admin/views/generic/models.py +157 -27
  107. wagtail/admin/views/generic/ordering.py +1 -1
  108. wagtail/admin/views/generic/preview.py +4 -4
  109. wagtail/admin/views/home.py +3 -1
  110. wagtail/admin/views/pages/create.py +77 -29
  111. wagtail/admin/views/pages/edit.py +160 -34
  112. wagtail/admin/views/pages/preview.py +4 -4
  113. wagtail/admin/views/pages/revisions.py +3 -0
  114. wagtail/admin/views/pages/search.py +4 -4
  115. wagtail/admin/views/pages/usage.py +2 -2
  116. wagtail/admin/views/tags.py +2 -2
  117. wagtail/admin/views/workflows.py +73 -54
  118. wagtail/admin/viewsets/model.py +34 -8
  119. wagtail/admin/widgets/button.py +11 -4
  120. wagtail/admin/widgets/chooser.py +6 -4
  121. wagtail/admin/widgets/slug.py +1 -1
  122. wagtail/api/v2/filters.py +27 -21
  123. wagtail/api/v2/pagination.py +4 -4
  124. wagtail/api/v2/views.py +7 -7
  125. wagtail/blocks/list_block.py +0 -8
  126. wagtail/blocks/migrations/migrate_operation.py +8 -1
  127. wagtail/blocks/stream_block.py +2 -10
  128. wagtail/blocks/struct_block.py +192 -12
  129. wagtail/compat.py +2 -2
  130. wagtail/contrib/forms/locale/en/LC_MESSAGES/django.po +1 -1
  131. wagtail/contrib/forms/locale/it/LC_MESSAGES/django.mo +0 -0
  132. wagtail/contrib/forms/locale/it/LC_MESSAGES/django.po +40 -2
  133. wagtail/contrib/frontend_cache/backends/azure.py +6 -6
  134. wagtail/contrib/frontend_cache/backends/cloudfront.py +2 -2
  135. wagtail/contrib/frontend_cache/utils.py +1 -1
  136. wagtail/contrib/redirects/forms.py +1 -1
  137. wagtail/contrib/redirects/locale/en/LC_MESSAGES/django.po +14 -14
  138. wagtail/contrib/redirects/locale/it/LC_MESSAGES/django.mo +0 -0
  139. wagtail/contrib/redirects/locale/it/LC_MESSAGES/django.po +15 -2
  140. wagtail/contrib/redirects/locale/sv/LC_MESSAGES/django.mo +0 -0
  141. wagtail/contrib/redirects/locale/sv/LC_MESSAGES/django.po +16 -3
  142. wagtail/contrib/redirects/middleware.py +11 -7
  143. wagtail/contrib/redirects/models.py +17 -1
  144. wagtail/contrib/redirects/tests/test_import_admin_views.py +3 -3
  145. wagtail/contrib/redirects/tests/test_redirects.py +56 -8
  146. wagtail/contrib/search_promotions/locale/en/LC_MESSAGES/django.po +6 -6
  147. wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.mo +0 -0
  148. wagtail/contrib/search_promotions/locale/it/LC_MESSAGES/django.po +43 -2
  149. wagtail/contrib/search_promotions/tests.py +1 -1
  150. wagtail/contrib/search_promotions/views/settings.py +24 -25
  151. wagtail/contrib/settings/jinja2tags.py +2 -2
  152. wagtail/contrib/settings/locale/en/LC_MESSAGES/django.po +2 -2
  153. wagtail/contrib/settings/locale/it/LC_MESSAGES/django.mo +0 -0
  154. wagtail/contrib/settings/locale/it/LC_MESSAGES/django.po +6 -2
  155. wagtail/contrib/settings/locale/sv/LC_MESSAGES/django.mo +0 -0
  156. wagtail/contrib/settings/locale/sv/LC_MESSAGES/django.po +3 -2
  157. wagtail/contrib/settings/tests/generic/test_admin.py +118 -2
  158. wagtail/contrib/settings/tests/site_specific/test_admin.py +78 -15
  159. wagtail/contrib/settings/tests/site_specific/test_model.py +2 -2
  160. wagtail/contrib/settings/views.py +7 -0
  161. wagtail/contrib/simple_translation/locale/en/LC_MESSAGES/django.po +1 -1
  162. wagtail/contrib/simple_translation/locale/it/LC_MESSAGES/django.mo +0 -0
  163. wagtail/contrib/simple_translation/locale/it/LC_MESSAGES/django.po +5 -2
  164. wagtail/contrib/styleguide/locale/en/LC_MESSAGES/django.po +7 -7
  165. wagtail/contrib/styleguide/tests.py +2 -0
  166. wagtail/contrib/styleguide/views.py +4 -5
  167. wagtail/contrib/table_block/locale/ar/LC_MESSAGES/django.mo +0 -0
  168. wagtail/contrib/table_block/locale/ar/LC_MESSAGES/django.po +5 -1
  169. wagtail/contrib/table_block/locale/en/LC_MESSAGES/django.po +1 -1
  170. wagtail/contrib/table_block/locale/it/LC_MESSAGES/django.mo +0 -0
  171. wagtail/contrib/table_block/locale/it/LC_MESSAGES/django.po +5 -2
  172. wagtail/contrib/typed_table_block/blocks.py +37 -0
  173. wagtail/contrib/typed_table_block/locale/en/LC_MESSAGES/django.po +10 -10
  174. wagtail/contrib/typed_table_block/locale/sv/LC_MESSAGES/django.mo +0 -0
  175. wagtail/contrib/typed_table_block/locale/sv/LC_MESSAGES/django.po +4 -3
  176. wagtail/contrib/typed_table_block/tests.py +108 -0
  177. wagtail/coreutils.py +4 -4
  178. wagtail/documents/__init__.py +4 -4
  179. wagtail/documents/locale/en/LC_MESSAGES/django.po +15 -15
  180. wagtail/documents/locale/it/LC_MESSAGES/django.mo +0 -0
  181. wagtail/documents/locale/it/LC_MESSAGES/django.po +32 -2
  182. wagtail/documents/locale/sv/LC_MESSAGES/django.mo +0 -0
  183. wagtail/documents/locale/sv/LC_MESSAGES/django.po +32 -4
  184. wagtail/documents/models.py +1 -1
  185. wagtail/documents/tests/test_admin_views.py +19 -4
  186. wagtail/documents/tests/test_search.py +0 -2
  187. wagtail/documents/tests/test_views.py +6 -4
  188. wagtail/documents/views/bulk_actions/add_tags.py +1 -1
  189. wagtail/embeds/finders/facebook.py +3 -3
  190. wagtail/embeds/finders/instagram.py +3 -3
  191. wagtail/embeds/finders/oembed.py +7 -2
  192. wagtail/embeds/locale/en/LC_MESSAGES/django.po +1 -1
  193. wagtail/embeds/oembed_providers.py +8 -0
  194. wagtail/embeds/tests/test_embeds.py +35 -0
  195. wagtail/images/__init__.py +4 -4
  196. wagtail/images/admin_urls.py +3 -3
  197. wagtail/images/blocks.py +1 -1
  198. wagtail/images/formats.py +2 -2
  199. wagtail/images/image_operations.py +2 -2
  200. wagtail/images/locale/en/LC_MESSAGES/django.po +44 -40
  201. wagtail/images/locale/it/LC_MESSAGES/django.mo +0 -0
  202. wagtail/images/locale/it/LC_MESSAGES/django.po +50 -4
  203. wagtail/images/locale/nl/LC_MESSAGES/django.mo +0 -0
  204. wagtail/images/locale/nl/LC_MESSAGES/django.po +3 -3
  205. wagtail/images/locale/sv/LC_MESSAGES/django.mo +0 -0
  206. wagtail/images/locale/sv/LC_MESSAGES/django.po +49 -6
  207. wagtail/images/models.py +11 -10
  208. wagtail/images/templates/wagtailimages/images/index_results.html +1 -1
  209. wagtail/images/templates/wagtailimages/images/url_generator.html +17 -38
  210. wagtail/images/templates/wagtailimages/images/url_generator_output.html +28 -0
  211. wagtail/images/templatetags/wagtailimages_tags.py +4 -4
  212. wagtail/images/tests/test_admin_views.py +432 -59
  213. wagtail/images/tests/test_image_operations.py +2 -2
  214. wagtail/images/tests/test_models.py +0 -2
  215. wagtail/images/views/bulk_actions/add_tags.py +1 -1
  216. wagtail/images/views/images.py +72 -39
  217. wagtail/locale/en/LC_MESSAGES/django.po +103 -105
  218. wagtail/locale/it/LC_MESSAGES/django.mo +0 -0
  219. wagtail/locale/it/LC_MESSAGES/django.po +105 -2
  220. wagtail/locale/sv/LC_MESSAGES/django.mo +0 -0
  221. wagtail/locale/sv/LC_MESSAGES/django.po +95 -12
  222. wagtail/locales/locale/en/LC_MESSAGES/django.po +1 -1
  223. wagtail/locales/locale/it/LC_MESSAGES/django.mo +0 -0
  224. wagtail/locales/locale/it/LC_MESSAGES/django.po +13 -2
  225. wagtail/locales/locale/sv/LC_MESSAGES/django.mo +0 -0
  226. wagtail/locales/locale/sv/LC_MESSAGES/django.po +4 -3
  227. wagtail/locales/tests.py +5 -5
  228. wagtail/models/i18n.py +4 -6
  229. wagtail/models/media.py +18 -0
  230. wagtail/models/pages.py +65 -11
  231. wagtail/models/reference_index.py +15 -0
  232. wagtail/models/revisions.py +40 -12
  233. wagtail/models/workflows.py +0 -3
  234. wagtail/permission_policies/base.py +2 -2
  235. wagtail/permission_policies/collections.py +2 -2
  236. wagtail/project_template/requirements.txt +2 -2
  237. wagtail/search/locale/en/LC_MESSAGES/django.po +1 -1
  238. wagtail/signal_handlers.py +1 -0
  239. wagtail/sites/locale/en/LC_MESSAGES/django.po +1 -1
  240. wagtail/sites/locale/sv/LC_MESSAGES/django.mo +0 -0
  241. wagtail/sites/locale/sv/LC_MESSAGES/django.po +3 -2
  242. wagtail/sites/tests.py +7 -7
  243. wagtail/snippets/action_menu.py +2 -1
  244. wagtail/snippets/locale/en/LC_MESSAGES/django.po +23 -13
  245. wagtail/snippets/locale/sv/LC_MESSAGES/django.mo +0 -0
  246. wagtail/snippets/locale/sv/LC_MESSAGES/django.po +12 -1
  247. wagtail/snippets/tests/test_chooser_block.py +197 -0
  248. wagtail/snippets/tests/test_chooser_panel.py +149 -0
  249. wagtail/snippets/tests/test_chooser_views.py +375 -0
  250. wagtail/snippets/tests/test_chooser_widget.py +22 -0
  251. wagtail/snippets/tests/test_compare_revisions_view.py +167 -0
  252. wagtail/snippets/tests/test_copy_view.py +38 -0
  253. wagtail/snippets/tests/test_create_view.py +1159 -0
  254. wagtail/snippets/tests/test_delete_view.py +225 -0
  255. wagtail/snippets/tests/test_edit_view.py +2882 -0
  256. wagtail/snippets/tests/test_history_view.py +182 -0
  257. wagtail/snippets/tests/test_index_view.py +105 -0
  258. wagtail/snippets/tests/test_list_view.py +786 -0
  259. wagtail/snippets/tests/test_locking.py +28 -0
  260. wagtail/snippets/tests/test_permissions.py +167 -0
  261. wagtail/snippets/tests/test_preview.py +3 -3
  262. wagtail/snippets/tests/test_revert_view.py +343 -0
  263. wagtail/snippets/tests/test_snippet_models.py +112 -0
  264. wagtail/snippets/tests/test_unpublish_view.py +228 -0
  265. wagtail/snippets/tests/test_unschedule_view.py +151 -0
  266. wagtail/snippets/tests/test_viewset.py +38 -5
  267. wagtail/snippets/views/snippets.py +78 -30
  268. wagtail/snippets/widgets.py +2 -2
  269. wagtail/templatetags/wagtailcore_tags.py +2 -2
  270. wagtail/test/dummy_external_storage.py +1 -1
  271. wagtail/test/testapp/fixtures/test.json +22 -0
  272. wagtail/test/testapp/fixtures/test_empty.json +2 -0
  273. wagtail/test/testapp/fixtures/test_explorable_pages.json +10 -0
  274. wagtail/test/testapp/fixtures/test_specific.json +9 -0
  275. wagtail/test/testapp/migrations/0059_nopromotepage.py +25 -0
  276. wagtail/test/testapp/models.py +7 -0
  277. wagtail/test/testapp/views.py +5 -0
  278. wagtail/test/utils/page_tests.py +7 -7
  279. wagtail/test/utils/wagtail_factories/builder.py +2 -2
  280. wagtail/tests/streamfield_migrations/test_migrations.py +35 -0
  281. wagtail/tests/test_blocks.py +321 -61
  282. wagtail/tests/test_collection_model.py +12 -0
  283. wagtail/tests/test_page_model.py +190 -1
  284. wagtail/tests/test_page_privacy.py +5 -0
  285. wagtail/tests/test_reference_index.py +42 -0
  286. wagtail/tests/test_revision_model.py +118 -1
  287. wagtail/tests/test_utils.py +2 -2
  288. wagtail/users/locale/en/LC_MESSAGES/django.po +14 -14
  289. wagtail/users/locale/id_ID/LC_MESSAGES/django.mo +0 -0
  290. wagtail/users/locale/id_ID/LC_MESSAGES/django.po +6 -2
  291. wagtail/users/locale/it/LC_MESSAGES/django.mo +0 -0
  292. wagtail/users/locale/it/LC_MESSAGES/django.po +14 -2
  293. wagtail/users/locale/sv/LC_MESSAGES/django.mo +0 -0
  294. wagtail/users/locale/sv/LC_MESSAGES/django.po +48 -17
  295. wagtail/users/tests/test_admin_views.py +39 -25
  296. wagtail/users/utils.py +4 -1
  297. wagtail/users/views/groups.py +19 -5
  298. wagtail/users/wagtail_hooks.py +1 -1
  299. wagtail/utils/loading.py +2 -2
  300. wagtail-7.3rc1.data/data/AGENTS.md +21 -0
  301. wagtail-7.3rc1.data/data/CHANGELOG.txt +4941 -0
  302. wagtail-7.3rc1.data/data/CODE_OF_CONDUCT.md +71 -0
  303. wagtail-7.3rc1.data/data/CONTRIBUTORS.md +999 -0
  304. wagtail-7.3rc1.data/data/SPONSORS.md +55 -0
  305. {wagtail-7.2.1.dist-info → wagtail-7.3rc1.dist-info}/METADATA +6 -6
  306. {wagtail-7.2.1.dist-info → wagtail-7.3rc1.dist-info}/RECORD +310 -280
  307. {wagtail-7.2.1.dist-info → wagtail-7.3rc1.dist-info}/WHEEL +1 -1
  308. wagtail/images/static/wagtailimages/js/image-url-generator.js +0 -1
  309. wagtail/snippets/tests/test_snippets.py +0 -6377
  310. {wagtail-7.2.1.dist-info → wagtail-7.3rc1.dist-info}/entry_points.txt +0 -0
  311. {wagtail-7.2.1.dist-info → wagtail-7.3rc1.dist-info}/licenses/LICENSE +0 -0
  312. {wagtail-7.2.1.dist-info → wagtail-7.3rc1.dist-info}/top_level.txt +0 -0
@@ -1 +1 @@
1
- (()=>{"use strict";var e,t={412:(e,t,n)=>{var a=n(2833);var r=n(4072);const l=(e,t=!("true"===e.getAttribute("aria-expanded")))=>{const n=document.querySelector(`#${e.getAttribute("aria-controls")}`);n&&(e.setAttribute("aria-expanded",`${t}`),t?n.removeAttribute("hidden"):"onbeforematch"in document.body?n.setAttribute("hidden","until-found"):n.setAttribute("hidden",""),e.dispatchEvent(new CustomEvent("commentAnchorVisibilityChange",{bubbles:!0})),e.dispatchEvent(new CustomEvent("wagtail:panel-toggle",{bubbles:!0,cancelable:!1,detail:{expanded:t}})))};function i(e){const t=e.closest("[data-panel]"),n=document.querySelector(`#${e.getAttribute("aria-controls")}`);if(!n||!t||t.collapsibleInitialised)return;t.collapsibleInitialised=!0;const a=l.bind(null,e),r=t.classList.contains("collapsed"),i=n.querySelector('[aria-invalid="true"], .error, .w-field--error'),o=r&&!i;o&&a(!1),e.addEventListener("click",a.bind(null,void 0));const s=t.querySelector("[data-panel-heading]");s&&s.addEventListener("click",a.bind(null,void 0)),n.addEventListener("beforematch",a.bind(null,!0)),e.dispatchEvent(new CustomEvent("wagtail:panel-init",{bubbles:!0,cancelable:!1,detail:{expanded:!o}}))}var o=n(2427),s=n.n(o),d=n(6931),c=n.n(d),u=n(8667),m=n(1238);const p=({expanded:e,floating:t,insideMinimap:n,onClick:r})=>s().createElement("button",{type:"button","aria-expanded":e,onClick:r,className:`button button-small button-secondary w-minimap__collapse-all ${t?"w-minimap__collapse-all--floating":""} ${n?"w-minimap__collapse-all--inside":""}`},s().createElement(m.A,{name:e?"collapse-up":"collapse-down"}),e?(0,a.AP)("Collapse all"):(0,a.AP)("Expand all")),g=s().createElement("span",{className:"w-required-mark"},"*"),h=({item:e,intersects:t,expanded:n,onClick:r})=>{const{href:l,label:i,icon:o,required:d,errorCount:c,level:u}=e,p=c>0,h=(0,a.WI)("%(num)s error","%(num)s errors",c).replace("%(num)s",`${c}`),f=i.length>22?`${i.substring(0,22)}…`:i;return s().createElement("a",{href:l,className:`w-minimap-item w-minimap-item--${u} ${t?"w-minimap-item--active":""} ${p?"w-minimap-item--error":""}`,onClick:r.bind(null,e),"aria-current":t,tabIndex:n?void 0:-1,"aria-describedby":n?void 0:"w-minimap-toggle"},p?s().createElement("div",{className:"w-minimap-item__errors","aria-label":h},c):null,s().createElement(m.A,{name:"minus",className:"w-minimap-item__placeholder"}),"h1"!==u&&"h2"!==u?s().createElement(m.A,{name:o,className:"w-minimap-item__icon"}):null,s().createElement("span",{className:"w-minimap-item__label"},s().createElement("span",{className:"w-minimap-item__text"},f),d?g:null))},f={root:null,rootMargin:"-50px 0px -70px 0px",threshold:.1},b=(e,{target:t,isIntersecting:n})=>{const a=t.closest("[data-panel]")?.id;return a?(e[`#${a}`]=n,e):e},v=({container:e,anchorsContainer:t,links:n,onUpdate:r,toggleAllPanels:i})=>{const d=(0,o.useMemo)(()=>(()=>{let e="false";try{e=localStorage.getItem("wagtail:minimap-expanded")||e}catch{}return"true"===e})(),[]),[c,g]=(0,o.useState)(d),v=(0,o.useCallback)((e=!c)=>{g(e),document.body.classList.toggle("minimap-open",e);try{localStorage.setItem("wagtail:minimap-expanded",e?"true":"false")}catch{}},[c,g]),[w,y]=(0,o.useState)(!0),[E,S]=(0,o.useState)({}),x=(0,o.useRef)(null),A=(0,o.useRef)({}),q=(0,o.useRef)(null),L=(0,o.useRef)(null),C=(e,t)=>{c||t.preventDefault(),l(e.toggle,!0),v(!0)};return(0,o.useEffect)(()=>{v(d)},[]),(0,o.useEffect)(()=>{x.current||(x.current=new IntersectionObserver(t=>{A.current=t.reduce(b,{...A.current}),q.current||(q.current=(0,u.s)(e=>{S(e),(e=>{const t=e.querySelectorAll('a[aria-current="true"]');if(0===t.length||e.scrollHeight===e.clientHeight)return;const n=t[0],a=t[t.length-1];let r=e.scrollTop;n&&n.offsetTop<e.scrollTop&&(r=n.offsetTop),a&&a.offsetTop>e.scrollTop+e.offsetHeight&&(r=a.offsetTop-e.offsetHeight+a.offsetHeight),e.scrollTop=r})(L.current)},100)),q.current(A.current),t.forEach(({target:t})=>{t.closest(".deleted")&&r(e)})},f));const t=x.current;return t.disconnect(),n.forEach(({panel:e,toggle:n})=>{const a=e.matches(".w-panel--nested")&&null===e.closest("[data-field]");t.observe(a?n:e)}),()=>{t.disconnect()}},[n,e]),(0,o.useEffect)(()=>{y(!0)},[t,y]),s().createElement("div",null,s().createElement(p,{expanded:w,onClick:()=>{y(!w),i(!w)},floating:!0,insideMinimap:c}),s().createElement("div",{className:"w-minimap "+(c?"w-minimap--expanded":"")},s().createElement("div",{className:"w-minimap__header"},s().createElement("button",{id:"w-minimap-toggle",type:"button","aria-expanded":c,onClick:()=>v(!c),className:"w-minimap__toggle","aria-label":(0,a.AP)("Toggle side panel"),"data-controller":"w-kbd","data-w-kbd-key-value":"]"},s().createElement(m.A,{name:"expand-right"}))),s().createElement("ol",{className:"w-minimap__list",ref:L},n.map(e=>s().createElement("li",{key:e.href},s().createElement(h,{item:e,intersects:E[e.href],expanded:c,onClick:C})))),s().createElement("div",{className:"w-minimap__footer"})))},w=e=>{const t=e.closest("[data-panel]"),n=t?.getAttribute("aria-labelledby"),a=t?.querySelector(`#${n}`),r=t?.querySelector("[data-panel-toggle]"),l=e.closest("[data-inline-panel-child].deleted");if(!t||!a||!r||l)return null;const i=a.querySelector("[data-panel-heading-text]"),o=i?.textContent||a.textContent?.replace(/\s+\*\s+$/g,"").trim(),s=null!==t.querySelector("[data-panel-required]"),d=r.querySelector("use"),c=d?.getAttribute("href")?.replace("#icon-","")||"",u=`h${a.getAttribute("aria-level")||a.tagName[1]||2}`,m=[].slice.call(t.querySelectorAll(":not([hidden]):is(.error-message)")).filter(e=>e.closest("[data-panel]")===t).length;return{anchor:e,toggle:r,panel:t,icon:c,label:o||"",href:e.getAttribute("href")||"",required:s,errorCount:m,level:u}},y=e=>{let t=document.body;const n=document.querySelector('[data-controller~="w-tabs"]:not([data-panel] [data-controller~="w-tabs"]):has([data-panel-anchor])');if(n){const e=n.querySelector('[role="tab"][aria-selected="true"]'),a=e?.getAttribute("aria-controls");t=n.querySelector(`#${a}`)||t}const a=t.querySelectorAll("[data-panel-anchor]"),r=[].slice.call(a).map(w).filter(Boolean);c().render(s().createElement(v,{container:e,anchorsContainer:t,links:r,onUpdate:y,toggleAllPanels:e=>{r.forEach((t,n)=>{0===n&&t.href.includes("title")||l(t.toggle,e)})}}),e)};document.addEventListener("DOMContentLoaded",()=>{(function(){const e=document.querySelector("[data-form-side]");if(!e)return;const t="formSideExplorer"in e.dataset,n=document.querySelector("[data-form-side-resize-grip]"),r=document.querySelector("[data-form-side-width-input]"),l=()=>{const t=getComputedStyle(e),n=parseFloat(t.minWidth),a=parseFloat(t.maxWidth),r=parseFloat(t.width),l=a-n;return{minWidth:n,maxWidth:a,width:r,range:l,percentage:(r-n)/l*100}},i=e=>"rtl"===document.documentElement.dir?e:100-e;let o;const s=n=>{clearTimeout(o);const a=document.querySelector("body"),s=document.querySelector(`[data-side-panel="${n}"]`);if((!n||s)&&(""===n?(e.classList.remove("form-side--open"),e.removeAttribute("aria-labelledby")):(e.classList.add("form-side--open"),e.setAttribute("aria-labelledby",`side-panel-${n}-title`)),document.querySelectorAll("[data-side-panel]").forEach(t=>{const r=t.dataset.sidePanel;if(r===n)t.hidden&&(t.hidden=!1,e.classList.add(`form-side--${r}`),a.classList.add("side-panel-open"));else if(!t.hidden){const l=()=>{t.hidden=!0,t.dispatchEvent(new CustomEvent("hide")),e.classList.remove(`form-side--${r}`)};""===n?(a.classList.remove("side-panel-open"),o=setTimeout(l,500)):l()}}),document.querySelectorAll("[data-side-panel-toggle]").forEach(e=>{e.setAttribute("aria-expanded",e.dataset.sidePanelToggle===n?"true":"false")}),s&&s.dispatchEvent(new CustomEvent("show")),!t)){try{localStorage.setItem("wagtail:side-panel-open",n)}catch(e){}setTimeout(()=>{const{percentage:e}=l();r.value=i(e)},500)}};document.querySelectorAll("[data-side-panel]").forEach(e=>{e.addEventListener("open",()=>{s(e.dataset.sidePanel)})}),document.querySelectorAll("[data-side-panel-toggle]").forEach(e=>{e.addEventListener("click",()=>{(e=>{const t=!document.querySelector(`[data-side-panel="${e}"]`).hasAttribute("hidden");s(t?"":e)})(e.dataset.sidePanelToggle)})});const d=document.querySelector("[data-form-side-close-button]");d instanceof HTMLButtonElement&&d.addEventListener("click",()=>{s("")});const c=e=>{const{minWidth:n,maxWidth:o,range:s,width:d}=l(),c=parseInt(Math.max(n,Math.min(e,o)),10)||d,u=(0,a.WI)("%(num)s pixel","%(num)s pixels",c).replace("%(num)s",c);document.documentElement.style.setProperty("--side-panel-width",`${c}px`);const m=(c-n)/s*100;if(r.value=i(m),r.setAttribute("aria-valuetext",u),!t)try{localStorage.setItem("wagtail:side-panel-width",c)}catch(e){}};let u,m;const p=e=>{if(!e.screenX||!u||!m)return;const t="rtl"===document.documentElement.dir?-1:1,n=u-e.screenX;c(m+n*t)},g=e=>{n.releasePointerCapture(e.pointerId),n.removeEventListener("pointermove",p),document.removeEventListener("pointerup",g),document.body.classList.remove("side-panel-resizing")};n.addEventListener("pointerdown",e=>{0===e.button&&(u=e.screenX,m=l().width,document.body.classList.add("side-panel-resizing"),n.setPointerCapture(e.pointerId),n.addEventListener("pointermove",p),document.addEventListener("pointerup",g))}),r.addEventListener("change",e=>{const{minWidth:t,range:n}=l(),a=parseInt(e.target.value,10),r=i(a);c(t+n*r/100)}),setTimeout(()=>{try{const e=localStorage.getItem("wagtail:side-panel-open");!t&&e&&s(e),c(localStorage.getItem("wagtail:side-panel-width"))}catch(e){}setTimeout(()=>{e.classList.remove("form-side--initial")})})})(),function(e=document.querySelectorAll("[data-panel-toggle]")){e.forEach(i)}();const e=document.getElementById("w-edit-handler-data");if(e){const t=JSON.parse(e.textContent);window.wagtail.editHandler=window.telepath.unpack(t)}}),window.addEventListener("load",()=>{!function(e=(window.location.hash?document.getElementById(window.location.hash.slice(1)):null)){const t=e?.matches("[data-panel]")?e:(0,r.KX)();t&&setTimeout(()=>{t.scrollIntoView({behavior:"smooth"})},100)}(),((e=document.querySelector("[data-minimap-container]"))=>{if(!e)return;if(!document.body.querySelectorAll("[data-panel-anchor]").length)return;const t=(0,u.s)(y.bind(null,e),100);document.addEventListener("w-tabs:changed",t),document.addEventListener("w-tabs:ready",t),document.addEventListener("wagtail:panel-init",t);const n=()=>e.style.setProperty("--offset-top",`${e.offsetTop}px`),a=(0,u.s)(n,100);window.addEventListener("resize",a),n(),t(e)})()})}},n={};function a(e){var r=n[e];if(void 0!==r)return r.exports;var l=n[e]={exports:{}};return t[e](l,l.exports,a),l.exports}a.m=t,e=[],a.O=(t,n,r,l)=>{if(!n){var i=1/0;for(c=0;c<e.length;c++){for(var[n,r,l]=e[c],o=!0,s=0;s<n.length;s++)(!1&l||i>=l)&&Object.keys(a.O).every(e=>a.O[e](n[s]))?n.splice(s--,1):(o=!1,l<i&&(i=l));if(o){e.splice(c--,1);var d=r();void 0!==d&&(t=d)}}return t}l=l||0;for(var c=e.length;c>0&&e[c-1][2]>l;c--)e[c]=e[c-1];e[c]=[n,r,l]},a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.j=445,(()=>{var e={445:0};a.O.j=t=>0===e[t];var t=(t,n)=>{var r,l,[i,o,s]=n,d=0;if(i.some(t=>0!==e[t])){for(r in o)a.o(o,r)&&(a.m[r]=o[r]);if(s)var c=s(a)}for(t&&t(n);d<i.length;d++)l=i[d],a.o(e,l)&&e[l]&&e[l][0](),e[l]=0;return a.O(c)},n=globalThis.webpackChunkwagtail=globalThis.webpackChunkwagtail||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();var r=a.O(void 0,[321],()=>a(412));r=a.O(r)})();
1
+ (()=>{"use strict";var e,t={412:(e,t,n)=>{var a=n(2833);var r=n(4072);const l=(e,t=!("true"===e.getAttribute("aria-expanded")))=>{const n=document.querySelector(`#${e.getAttribute("aria-controls")}`);n&&(e.setAttribute("aria-expanded",`${t}`),t?n.removeAttribute("hidden"):"onbeforematch"in document.body?n.setAttribute("hidden","until-found"):n.setAttribute("hidden",""),e.dispatchEvent(new CustomEvent("commentAnchorVisibilityChange",{bubbles:!0})),e.dispatchEvent(new CustomEvent("wagtail:panel-toggle",{bubbles:!0,cancelable:!1,detail:{expanded:t}})))};function i(e){const t=e.closest("[data-panel]"),n=document.querySelector(`#${e.getAttribute("aria-controls")}`);if(!n||!t||t.collapsibleInitialised)return;t.collapsibleInitialised=!0;const a=l.bind(null,e),r=t.classList.contains("collapsed"),i=n.querySelector('[aria-invalid="true"], .error, .w-field--error'),o=r&&!i;o&&a(!1),e.addEventListener("click",a.bind(null,void 0));const s=t.querySelector("[data-panel-heading]");s&&s.addEventListener("click",a.bind(null,void 0)),n.addEventListener("beforematch",a.bind(null,!0)),e.dispatchEvent(new CustomEvent("wagtail:panel-init",{bubbles:!0,cancelable:!1,detail:{expanded:!o}}))}var o=n(2427),s=n.n(o),d=n(6931),c=n.n(d),u=n(8667),m=n(1238);const p=({expanded:e,floating:t,insideMinimap:n,onClick:r})=>s().createElement("button",{type:"button","aria-expanded":e,onClick:r,className:`button button-small button-secondary w-minimap__collapse-all ${t?"w-minimap__collapse-all--floating":""} ${n?"w-minimap__collapse-all--inside":""}`},s().createElement(m.A,{name:e?"collapse-up":"collapse-down"}),e?(0,a.AP)("Collapse all"):(0,a.AP)("Expand all")),g=s().createElement("span",{className:"w-required-mark"},"*"),h=({item:e,intersects:t,expanded:n,onClick:r})=>{const{href:l,label:i,icon:o,required:d,errorCount:c,level:u}=e,p=c>0,h=(0,a.WI)("%(num)s error","%(num)s errors",c).replace("%(num)s",`${c}`),f=i.length>22?`${i.substring(0,22)}…`:i;return s().createElement("a",{href:l,className:`w-minimap-item w-minimap-item--${u} ${t?"w-minimap-item--active":""} ${p?"w-minimap-item--error":""}`,onClick:r.bind(null,e),"aria-current":t,tabIndex:n?void 0:-1,"aria-describedby":n?void 0:"w-minimap-toggle"},p?s().createElement("div",{className:"w-minimap-item__errors","aria-label":h},c):null,s().createElement(m.A,{name:"minus",className:"w-minimap-item__placeholder"}),"h1"!==u&&"h2"!==u?s().createElement(m.A,{name:o,className:"w-minimap-item__icon"}):null,s().createElement("span",{className:"w-minimap-item__label"},s().createElement("span",{className:"w-minimap-item__text"},f),d?g:null))},f={root:null,rootMargin:"-50px 0px -70px 0px",threshold:.1},b=(e,{target:t,isIntersecting:n})=>{const a=t.closest("[data-panel]")?.id;return a?(e[`#${a}`]=n,e):e},v=({container:e,anchorsContainer:t,links:n,onUpdate:r,toggleAllPanels:i})=>{const d=(0,o.useMemo)(()=>(()=>{let e="false";try{e=localStorage.getItem("wagtail:minimap-expanded")||e}catch{}return"true"===e})(),[]),[c,g]=(0,o.useState)(d),v=(0,o.useCallback)((e=!c)=>{g(e),document.body.classList.toggle("minimap-open",e);try{localStorage.setItem("wagtail:minimap-expanded",e?"true":"false")}catch{}},[c,g]),[w,y]=(0,o.useState)(!0),[E,S]=(0,o.useState)({}),x=(0,o.useRef)(null),A=(0,o.useRef)({}),q=(0,o.useRef)(null),L=(0,o.useRef)(null),C=(e,t)=>{c||t.preventDefault(),l(e.toggle,!0),v(!0)};return(0,o.useEffect)(()=>{v(d)},[]),(0,o.useEffect)(()=>{x.current||(x.current=new IntersectionObserver(t=>{A.current=t.reduce(b,{...A.current}),q.current||(q.current=(0,u.s)(e=>{S(e),(e=>{const t=e.querySelectorAll('a[aria-current="true"]');if(0===t.length||e.scrollHeight===e.clientHeight)return;const n=t[0],a=t[t.length-1];let r=e.scrollTop;n&&n.offsetTop<e.scrollTop&&(r=n.offsetTop),a&&a.offsetTop>e.scrollTop+e.offsetHeight&&(r=a.offsetTop-e.offsetHeight+a.offsetHeight),e.scrollTop=r})(L.current)},100)),q.current(A.current),t.forEach(({target:t})=>{t.closest(".deleted")&&r(e)})},f));const t=x.current;return t.disconnect(),n.forEach(({panel:e,toggle:n})=>{const a=e.matches(".w-panel--nested")&&null===e.closest("[data-field]");t.observe(a?n:e)}),()=>{t.disconnect()}},[n,e]),(0,o.useEffect)(()=>{y(!0)},[t,y]),s().createElement("div",null,s().createElement(p,{expanded:w,onClick:()=>{y(!w),i(!w)},floating:!0,insideMinimap:c}),s().createElement("div",{className:"w-minimap "+(c?"w-minimap--expanded":"")},s().createElement("div",{className:"w-minimap__header"},s().createElement("button",{id:"w-minimap-toggle",type:"button","aria-expanded":c,onClick:()=>v(!c),className:"w-minimap__toggle","aria-label":(0,a.AP)("Toggle side panel"),"data-controller":"w-kbd","data-w-kbd-key-value":"]"},s().createElement(m.A,{name:"expand-right"}))),s().createElement("ol",{className:"w-minimap__list",ref:L},n.map(e=>s().createElement("li",{key:e.href},s().createElement(h,{item:e,intersects:E[e.href],expanded:c,onClick:C})))),s().createElement("div",{className:"w-minimap__footer"})))},w=e=>{const t=e.closest("[data-panel]"),n=t?.getAttribute("aria-labelledby"),a=t?.querySelector(`#${n}`),r=t?.querySelector("[data-panel-toggle]"),l=e.closest("[data-inline-panel-child].deleted");if(!t||!a||!r||l)return null;const i=a.querySelector("[data-panel-heading-text]"),o=i?.textContent||a.textContent?.replace(/\s+\*\s+$/g,"").trim(),s=null!==t.querySelector("[data-panel-required]"),d=r.querySelector("use"),c=d?.getAttribute("href")?.replace("#icon-","")||"",u=`h${a.getAttribute("aria-level")||a.tagName[1]||2}`,m=[].slice.call(t.querySelectorAll(":not([hidden]):is(.error-message)")).filter(e=>e.closest("[data-panel]")===t).length;return{anchor:e,toggle:r,panel:t,icon:c,label:o||"",href:e.getAttribute("href")||"",required:s,errorCount:m,level:u}},y=e=>{let t=document.body;const n=document.querySelector('[data-controller~="w-tabs"]:not([data-panel] [data-controller~="w-tabs"]):has([data-panel-anchor])');if(n){const e=n.querySelector('[role="tab"][aria-selected="true"]'),a=e?.getAttribute("aria-controls");t=n.querySelector(`#${a}`)||t}const a=t.querySelectorAll("[data-panel-anchor]"),r=[].slice.call(a).map(w).filter(Boolean),i=t.querySelectorAll('[data-streamfield-action="SETTINGS"]');c().render(s().createElement(v,{container:e,anchorsContainer:t,links:r,onUpdate:y,toggleAllPanels:e=>{r.forEach((t,n)=>{0===n&&t.href.includes("title")||l(t.toggle,e)}),i.forEach(t=>{"true"===t.getAttribute("aria-expanded")!==e&&t.click()})}}),e)};document.addEventListener("DOMContentLoaded",()=>{(function(){const e=document.querySelector("[data-form-side]");if(!e)return;const t="formSideExplorer"in e.dataset,n=document.querySelector("[data-form-side-resize-grip]"),r=document.querySelector("[data-form-side-width-input]"),l=()=>{const t=getComputedStyle(e),n=parseFloat(t.minWidth),a=parseFloat(t.maxWidth),r=parseFloat(t.width),l=a-n;return{minWidth:n,maxWidth:a,width:r,range:l,percentage:(r-n)/l*100}},i=e=>"rtl"===document.documentElement.dir?e:100-e;let o;const s=n=>{clearTimeout(o);const a=document.querySelector("body"),s=document.querySelector(`[data-side-panel="${n}"]`);if((!n||s)&&(""===n?(e.classList.remove("form-side--open"),e.removeAttribute("aria-labelledby")):(e.classList.add("form-side--open"),e.setAttribute("aria-labelledby",`side-panel-${n}-title`)),document.querySelectorAll("[data-side-panel]").forEach(t=>{const r=t.dataset.sidePanel;if(r===n)t.hidden&&(t.hidden=!1,e.classList.add(`form-side--${r}`),a.classList.add("side-panel-open"));else if(!t.hidden){const l=()=>{t.hidden=!0,t.dispatchEvent(new CustomEvent("hide")),e.classList.remove(`form-side--${r}`)};""===n?(a.classList.remove("side-panel-open"),o=setTimeout(l,500)):l()}}),document.querySelectorAll("[data-side-panel-toggle]").forEach(e=>{e.setAttribute("aria-expanded",e.dataset.sidePanelToggle===n?"true":"false")}),s&&s.dispatchEvent(new CustomEvent("show")),!t)){try{localStorage.setItem("wagtail:side-panel-open",n)}catch(e){}setTimeout(()=>{const{percentage:e}=l();r.value=i(e)},500)}};document.querySelectorAll("[data-side-panel]").forEach(e=>{e.addEventListener("open",()=>{s(e.dataset.sidePanel)})}),document.querySelectorAll("[data-side-panel-toggle]").forEach(e=>{e.addEventListener("click",()=>{(e=>{const t=!document.querySelector(`[data-side-panel="${e}"]`).hasAttribute("hidden");s(t?"":e)})(e.dataset.sidePanelToggle)})});const d=document.querySelector("[data-form-side-close-button]");d instanceof HTMLButtonElement&&d.addEventListener("click",()=>{s("")});const c=e=>{const{minWidth:n,maxWidth:o,range:s,width:d}=l(),c=parseInt(Math.max(n,Math.min(e,o)),10)||d,u=(0,a.WI)("%(num)s pixel","%(num)s pixels",c).replace("%(num)s",c);document.documentElement.style.setProperty("--side-panel-width",`${c}px`);const m=(c-n)/s*100;if(r.value=i(m),r.setAttribute("aria-valuetext",u),!t)try{localStorage.setItem("wagtail:side-panel-width",c)}catch(e){}};let u,m;const p=e=>{if(!e.screenX||!u||!m)return;const t="rtl"===document.documentElement.dir?-1:1,n=u-e.screenX;c(m+n*t)},g=e=>{n.releasePointerCapture(e.pointerId),n.removeEventListener("pointermove",p),document.removeEventListener("pointerup",g),document.body.classList.remove("side-panel-resizing")};n.addEventListener("pointerdown",e=>{0===e.button&&(u=e.screenX,m=l().width,document.body.classList.add("side-panel-resizing"),n.setPointerCapture(e.pointerId),n.addEventListener("pointermove",p),document.addEventListener("pointerup",g))}),r.addEventListener("change",e=>{const{minWidth:t,range:n}=l(),a=parseInt(e.target.value,10),r=i(a);c(t+n*r/100)}),setTimeout(()=>{try{const e=localStorage.getItem("wagtail:side-panel-open");!t&&e&&s(e),c(localStorage.getItem("wagtail:side-panel-width"))}catch(e){}setTimeout(()=>{e.classList.remove("form-side--initial")})})})(),function(e=document.querySelectorAll("[data-panel-toggle]")){e.forEach(i)}();const e=document.getElementById("w-edit-handler-data");if(e){const t=JSON.parse(e.textContent);window.wagtail.editHandler=window.telepath.unpack(t)}}),window.addEventListener("load",()=>{!function(e=(window.location.hash?document.getElementById(window.location.hash.slice(1)):null)){const t=e?.matches("[data-panel]")?e:(0,r.KX)();t&&setTimeout(()=>{t.scrollIntoView({behavior:"smooth"})},100)}(),((e=document.querySelector("[data-minimap-container]"))=>{if(!e)return;if(!document.body.querySelectorAll("[data-panel-anchor]").length)return;const t=(0,u.s)(y.bind(null,e),100);document.addEventListener("w-tabs:changed",t),document.addEventListener("w-tabs:ready",t),document.addEventListener("wagtail:panel-init",t);const n=()=>e.style.setProperty("--offset-top",`${e.offsetTop}px`),a=(0,u.s)(n,100);window.addEventListener("resize",a),n(),t(e)})()})}},n={};function a(e){var r=n[e];if(void 0!==r)return r.exports;var l=n[e]={exports:{}};return t[e](l,l.exports,a),l.exports}a.m=t,e=[],a.O=(t,n,r,l)=>{if(!n){var i=1/0;for(c=0;c<e.length;c++){for(var[n,r,l]=e[c],o=!0,s=0;s<n.length;s++)(!1&l||i>=l)&&Object.keys(a.O).every(e=>a.O[e](n[s]))?n.splice(s--,1):(o=!1,l<i&&(i=l));if(o){e.splice(c--,1);var d=r();void 0!==d&&(t=d)}}return t}l=l||0;for(var c=e.length;c>0&&e[c-1][2]>l;c--)e[c]=e[c-1];e[c]=[n,r,l]},a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.j=445,(()=>{var e={445:0};a.O.j=t=>0===e[t];var t=(t,n)=>{var r,l,[i,o,s]=n,d=0;if(i.some(t=>0!==e[t])){for(r in o)a.o(o,r)&&(a.m[r]=o[r]);if(s)var c=s(a)}for(t&&t(n);d<i.length;d++)l=i[d],a.o(e,l)&&e[l]&&e[l][0](),e[l]=0;return a.O(c)},n=globalThis.webpackChunkwagtail=globalThis.webpackChunkwagtail||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();var r=a.O(void 0,[321],()=>a(412));r=a.O(r)})();
@@ -9,7 +9,7 @@
9
9
  <main class="content-wrapper w-overflow-x-hidden" id="main">
10
10
  <div class="content">
11
11
  {# Always show messages div so it can be appended to by JS #}
12
- <div class="messages" role="status" data-controller="w-messages" data-action="w-messages:add@document->w-messages#add" data-w-messages-added-class="new" data-w-messages-show-class="appear" data-w-messages-show-delay-value="100">
12
+ <div class="messages" role="status" data-controller="w-messages" data-action="w-messages:add@document->w-messages#add w-messages:clear@document->w-messages#clear" data-w-messages-added-class="new" data-w-messages-show-class="appear" data-w-messages-show-delay-value="100">
13
13
  <ul data-w-messages-target="container">
14
14
  {% if messages %}
15
15
  {% for message in messages %}
@@ -0,0 +1,100 @@
1
+ {% load wagtailadmin_tags %}
2
+
3
+ {% block title %}
4
+ <template
5
+ data-controller="w-teleport"
6
+ data-w-teleport-target-value="head title"
7
+ data-w-teleport-mode-value="textContent"
8
+ >
9
+ {{ header_title }}
10
+ </template>
11
+ {% endblock %}
12
+
13
+ {% block side_panels %}
14
+ {% for panel in side_panels %}
15
+ <template
16
+ data-controller="w-teleport"
17
+ data-w-teleport-target-value="[data-side-panel='{{ panel.name }}']"
18
+ data-w-teleport-mode-value="innerHTML"
19
+ >
20
+ {% include "wagtailadmin/shared/side_panels/includes/side_panel.html" with panel=panel %}
21
+ </template>
22
+ {% endfor %}
23
+ {% endblock side_panels %}
24
+
25
+ {% block breadcrumbs %}
26
+ <template
27
+ data-controller="w-teleport"
28
+ data-w-teleport-target-value="header [data-w-breadcrumbs]"
29
+ data-w-teleport-mode-value="outerHTML"
30
+ >
31
+ {% block breadcrumbs_content %}
32
+ {% breadcrumbs breadcrumbs_items icon_name=icon_name %}
33
+ {% endblock %}
34
+
35
+ {% block header_buttons %}
36
+ {% if hydrate_create_view %}
37
+ {% fragment as actions %}
38
+ {% for button in header_buttons %}
39
+ {% component button %}
40
+ {% endfor %}
41
+ {% endfragment %}
42
+
43
+ {% include "wagtailadmin/shared/headers/_actions.html" with actions=actions %}
44
+ {% endif %}
45
+ {% endblock %}
46
+ </template>
47
+ {% endblock %}
48
+
49
+ {% block history_link %}
50
+ {% if hydrate_create_view and history_url %}
51
+ <template
52
+ data-controller="w-teleport"
53
+ data-w-teleport-target-value="[data-side-panel-toggle]:last-of-type"
54
+ data-w-teleport-mode-value="afterend"
55
+ >
56
+ {% include "wagtailadmin/shared/headers/_history_icon_link.html" with history_url=history_url only %}
57
+ </template>
58
+ {% endif %}
59
+ {% endblock %}
60
+
61
+ {% block form_title_heading %}
62
+ <template
63
+ data-controller="w-teleport"
64
+ data-w-teleport-target-value="#header-title span"
65
+ data-w-teleport-mode-value="textContent"
66
+ >
67
+ {{ page_subtitle|default:page_title }}
68
+ </template>
69
+ {% endblock %}
70
+
71
+ {% block form %}
72
+ {% if hydrate_create_view and revision_enabled and object.latest_revision_id %}
73
+ <template
74
+ data-controller="w-teleport"
75
+ data-w-teleport-target-value="form[data-edit-form]"
76
+ data-w-teleport-mode-value="afterbegin"
77
+ >
78
+ {% include "wagtailadmin/generic/includes/_loaded_revision_inputs.html" with loaded_revision_id=object.latest_revision_id loaded_revision_created_at=loaded_revision_created_at only %}
79
+ </template>
80
+ {% endif %}
81
+ {% endblock %}
82
+
83
+ {% block editing_sessions %}
84
+ {% comment %}
85
+ The create view is not initially loaded with the editing sessions module,
86
+ as it requires the instance to exist. Once the instance is created, we
87
+ load the module into place adjacent to the autosave indicator.
88
+ {% endcomment %}
89
+ {% if hydrate_create_view and editing_sessions %}
90
+ <template
91
+ data-controller="w-teleport"
92
+ data-w-teleport-target-value="#w-autosave-indicator"
93
+ data-w-teleport-mode-value="afterend"
94
+ >
95
+ {% component editing_sessions %}
96
+ </template>
97
+ {% endif %}
98
+ {% endblock %}
99
+
100
+ {% block extra %}{% endblock %}
@@ -1,5 +1,5 @@
1
1
  {% extends "wagtailadmin/generic/base.html" %}
2
- {% load i18n wagtailadmin_tags %}
2
+ {% load i18n l10n wagtailadmin_tags %}
3
3
  {% block bodyclass %}editor-view{% endblock %}
4
4
 
5
5
  {% block main_header %}
@@ -9,7 +9,7 @@
9
9
  {% if header_icon %}
10
10
  {% icon classname="w-absolute w-top-1 -w-left-11 w-max-w-[1em] w-max-h-[1em]" name=header_icon %}
11
11
  {% endif %}
12
- {{ page_subtitle|default:page_title }}
12
+ <span>{{ page_subtitle|default:page_title }}</span>
13
13
  </h2>
14
14
  </div>
15
15
  {% else %}
@@ -26,13 +26,23 @@
26
26
  novalidate
27
27
  {% if form_is_multipart or form.is_multipart %} enctype="multipart/form-data"{% endif %}
28
28
  data-edit-form
29
- data-controller="w-unsaved"
30
- data-action="w-unsaved#submit beforeunload@window->w-unsaved#confirm change->w-unsaved#check keyup->w-unsaved#check"
29
+ data-controller="w-unsaved {% if autosave_enabled %}w-autosave{% endif %}"
30
+ data-action="
31
+ w-unsaved#submit
32
+ beforeunload@window->w-unsaved#confirm
33
+ {% if autosave_enabled %}
34
+ w-unsaved:add->w-autosave#save:prevent
35
+ w-autosave:success->w-unsaved#clear
36
+ {% endif %}
37
+ "
38
+ {% if autosave_enabled %}data-w-autosave-interval-value="{{ autosave_interval|unlocalize }}"{% endif %}
31
39
  data-w-unsaved-confirmation-value="true"
32
40
  data-w-unsaved-force-value="{{ has_unsaved_changes|yesno:'true,false' }}"
33
- data-w-unsaved-watch-value="edits"
34
41
  >
35
42
  {% csrf_token %}
43
+ {% if revision_enabled and object.latest_revision_id %}
44
+ {% include "wagtailadmin/generic/includes/_loaded_revision_inputs.html" with loaded_revision_id=object.latest_revision_id loaded_revision_created_at=loaded_revision_created_at only %}
45
+ {% endif %}
36
46
 
37
47
  {% block form_content %}
38
48
  {% if panel %}
@@ -84,6 +94,17 @@
84
94
  {% endblock%}
85
95
  </footer>
86
96
  {% endblock %}
97
+
98
+ {% block partials %}
99
+ {% if autosave_enabled %}
100
+ <div data-w-autosave-target="partials" hidden>
101
+ {% comment %}
102
+ Any UI updates in the autosave response will be added here
103
+ as template elements, to be put into place via w-teleport.
104
+ {% endcomment %}
105
+ </div>
106
+ {% endif %}
107
+ {% endblock %}
87
108
  </form>
88
109
  {% endblock %}
89
110
 
@@ -0,0 +1,3 @@
1
+ {% load l10n %}
2
+ <input type="hidden" name="loaded_revision_id" value="{{ loaded_revision_id|unlocalize }}">
3
+ <input type="hidden" name="loaded_revision_created_at" value="{{ loaded_revision_created_at }}">
@@ -1,23 +1,7 @@
1
1
  {% load wagtailadmin_tags i18n %}
2
2
 
3
3
  {% block before_results %}
4
- {% if view.active_filters %}
5
- {% include "wagtailadmin/shared/active_filters.html" with active_filters=view.active_filters %}
6
- {% endif %}
7
-
8
- {% if render_filters_fragment %}
9
- <template data-controller="w-teleport" data-w-teleport-target-value="#filters-drilldown" data-w-teleport-reset-value="true">
10
- {% include "wagtailadmin/shared/headers/_filters.html" with filters=filters %}
11
- </template>
12
- {% endif %}
13
-
14
- {% if render_buttons_fragment %}
15
- <template data-controller="w-teleport" data-w-teleport-target-value="#w-slim-header-buttons" data-w-teleport-reset-value="true">
16
- {% for button in header_buttons %}
17
- {% component button %}
18
- {% endfor %}
19
- </template>
20
- {% endif %}
4
+ {% include "wagtailadmin/shared/listing/filter_partials.html" %}
21
5
 
22
6
  {% block other_searches %}{% endblock %}
23
7
 
@@ -1,6 +1,6 @@
1
1
  {% extends "wagtailadmin/generic/form.html" %}
2
2
  {% load wagtailadmin_tags %}
3
- {% load i18n %}
3
+ {% load i18n l10n %}
4
4
 
5
5
  {% block content %}
6
6
  {% get_comments_enabled as comments_enabled %}
@@ -14,12 +14,19 @@
14
14
  novalidate
15
15
  {% if form.is_multipart %}enctype="multipart/form-data"{% endif %}
16
16
  data-edit-form
17
- data-controller="w-init w-unsaved"
18
- data-action="w-unsaved#submit beforeunload@window->w-unsaved#confirm change->w-unsaved#check keyup->w-unsaved#check"
17
+ data-controller="w-init w-unsaved {% if autosave_enabled %}w-autosave{% endif %}"
18
+ data-action="
19
+ w-unsaved#submit
20
+ beforeunload@window->w-unsaved#confirm
21
+ {% if autosave_enabled %}
22
+ w-unsaved:add->w-autosave#save:prevent
23
+ w-autosave:success->w-unsaved#clear
24
+ {% endif %}
25
+ "
26
+ {% if autosave_enabled %}data-w-autosave-interval-value="{{ autosave_interval|unlocalize }}"{% endif %}
19
27
  data-w-init-event-value="{% if comments_enabled %}w-comments:init{% endif %}"
20
28
  data-w-unsaved-confirmation-value="true"
21
29
  data-w-unsaved-force-value="{% if has_unsaved_changes %}true{% else %}false{% endif %}"
22
- data-w-unsaved-watch-value="edits{% if comments_enabled %} comments{% endif %}"
23
30
  >
24
31
  {% csrf_token %}
25
32
 
@@ -37,6 +44,9 @@
37
44
  {{ block.super }}
38
45
  {# Reuse the footer container, but redefine the actions content down below to use component classes #}
39
46
  {% endblock %}
47
+ {% block partials %}
48
+ {{ block.super }}
49
+ {% endblock %}
40
50
  </form>
41
51
 
42
52
  {% endblock %}
@@ -19,22 +19,35 @@
19
19
  novalidate
20
20
  {% if form.is_multipart %}enctype="multipart/form-data"{% endif %}
21
21
  data-edit-form
22
- data-controller="w-init w-unsaved"
23
- data-action="w-unsaved#submit beforeunload@window->w-unsaved#confirm change->w-unsaved#check keyup->w-unsaved#check"
22
+ data-controller="w-init w-unsaved {% if autosave_enabled %}w-autosave{% endif %}"
23
+ data-action="
24
+ w-unsaved#submit
25
+ beforeunload@window->w-unsaved#confirm
26
+ {% if autosave_enabled %}
27
+ w-unsaved:add->w-autosave#save:prevent
28
+ w-autosave:success->w-unsaved#clear
29
+ {% endif %}
30
+ "
31
+ {% if autosave_enabled %}data-w-autosave-interval-value="{{ autosave_interval|unlocalize }}"{% endif %}
24
32
  data-w-init-event-value="{% if comments_enabled %}w-comments:init{% endif %}"
25
33
  data-w-unsaved-confirmation-value="true"
26
34
  data-w-unsaved-force-value="{% if has_unsaved_changes %}true{% else %}false{% endif %}"
27
- data-w-unsaved-watch-value="edits{% if comments_enabled %} comments{% endif %}"
28
35
  >
29
36
  {% csrf_token %}
30
37
 
31
38
  <input type="hidden" name="next" value="{{ next }}">
39
+ {% if page.latest_revision_id %}
40
+ {% include "wagtailadmin/generic/includes/_loaded_revision_inputs.html" with loaded_revision_id=page.latest_revision_id loaded_revision_created_at=loaded_revision_created_at only %}
41
+ {% endif %}
32
42
  {{ edit_handler.render_form_content }}
33
43
 
34
44
  {% block footer %}
35
45
  {{ block.super }}
36
46
  {# Reuse the footer container, but redefine the actions content down below to use component classes #}
37
47
  {% endblock %}
48
+ {% block partials %}
49
+ {{ block.super }}
50
+ {% endblock %}
38
51
  </form>
39
52
  {% endblock %}
40
53
  {% endblock %}
@@ -0,0 +1,31 @@
1
+ {% extends "wagtailadmin/generic/edit_partials.html" %}
2
+ {% load wagtailadmin_tags %}
3
+
4
+ {% block breadcrumbs_content %}
5
+ {% page_breadcrumbs page 'wagtailadmin_explore' url_root_name='wagtailadmin_explore_root' %}
6
+ {% endblock %}
7
+
8
+ {% block header_buttons %}
9
+ {% if hydrate_create_view %}
10
+ {% fragment as actions %}
11
+ {% page_header_buttons page user=request.user view_name="edit" %}
12
+ {% endfragment %}
13
+
14
+ {% include "wagtailadmin/shared/headers/_actions.html" with actions=actions %}
15
+ {% endif %}
16
+ {% endblock %}
17
+
18
+ {# For pages, the title "heading" is the editable title field. #}
19
+ {% block form_title_heading %}{% endblock %}
20
+
21
+ {% block form %}
22
+ {% if hydrate_create_view %}
23
+ <template
24
+ data-controller="w-teleport"
25
+ data-w-teleport-target-value="form[data-edit-form]"
26
+ data-w-teleport-mode-value="afterbegin"
27
+ >
28
+ {% include "wagtailadmin/generic/includes/_loaded_revision_inputs.html" with loaded_revision_id=page.latest_revision_id loaded_revision_created_at=loaded_revision_created_at only %}
29
+ </template>
30
+ {% endif %}
31
+ {% endblock %}
@@ -1,14 +1,6 @@
1
1
  {% load wagtailadmin_tags %}
2
2
 
3
- {% if view.active_filters %}
4
- {% include "wagtailadmin/shared/active_filters.html" with active_filters=view.active_filters %}
5
- {% endif %}
6
-
7
- {% if render_filters_fragment %}
8
- <template data-controller="w-teleport" data-w-teleport-target-value="#filters-drilldown" data-w-teleport-reset-value="true">
9
- {% include "wagtailadmin/shared/headers/_filters.html" with filters=filters %}
10
- </template>
11
- {% endif %}
3
+ {% include "wagtailadmin/shared/listing/filter_partials.html" %}
12
4
 
13
5
  <form id="page-reorder-form">
14
6
  {% csrf_token %}
@@ -0,0 +1,36 @@
1
+ {% load wagtailadmin_tags i18n %}
2
+
3
+ {% comment %}
4
+ This indicator component reuses AutosaveController to listen to the events
5
+ that are dispatched by w-autosave on the editor form to update the
6
+ indicator's state accordingly.
7
+ {% endcomment %}
8
+ <div
9
+ id="w-autosave-indicator"
10
+ class="w-autosave-indicator"
11
+ data-controller="w-tooltip w-autosave"
12
+ data-w-tooltip-content-value=""
13
+ data-action="
14
+ w-autosave:save@document->w-autosave#updateIndicator
15
+ w-autosave:success@document->w-autosave#updateIndicator
16
+ w-autosave:error@document->w-autosave#updateIndicator
17
+ ">
18
+ <div class="w-autosave-indicator__state w-autosave-indicator__state--saving">
19
+ {% icon name="rotate" %}
20
+ <span class="w-autosave-indicator__text">
21
+ {% translate 'Saving…' %}
22
+ </span>
23
+ </div>
24
+ <div class="w-autosave-indicator__state w-autosave-indicator__state--saved">
25
+ {% icon name="check" %}
26
+ <span class="w-autosave-indicator__text">
27
+ {% translate 'Saved' %}
28
+ </span>
29
+ </div>
30
+ <div class="w-autosave-indicator__state w-autosave-indicator__state--paused">
31
+ {% icon name="warning" %}
32
+ <span class="w-autosave-indicator__text">
33
+ {% translate 'Autosave is paused' %}
34
+ </span>
35
+ </div>
36
+ </div>
@@ -10,7 +10,7 @@
10
10
  {% endcomment %}
11
11
  {% with breadcrumb_link_classes='w-flex w-items-center w-text-text-label w-pr-0.5 w-text-14 w-no-underline w-outline-offset-inside w-border-b w-border-b-2 w-border-transparent w-box-content hover:w-border-current hover:w-text-text-label' breadcrumb_item_classes='w-h-full w-flex w-items-center w-overflow-hidden w-transition w-duration-300 w-whitespace-nowrap w-flex-shrink-0' icon_classes='w-w-4 w-h-4 w-ml-3' %}
12
12
  {# Breadcrumbs are visible on mobile by default but hidden on desktop #}
13
- <div class="w-breadcrumbs w-flex w-flex-row w-items-center w-overflow-x-auto w-overflow-y-hidden w-scrollbar-thin {{ classname }} {% if is_expanded %} w-pl-3{% endif %}"
13
+ <div data-w-breadcrumbs class="w-breadcrumbs w-flex w-flex-row w-items-center w-overflow-x-auto w-overflow-y-hidden w-scrollbar-thin {{ classname }} {% if is_expanded %} w-pl-3{% endif %}"
14
14
  {% if not items %}hidden{% endif %}
15
15
  {% if not is_expanded %}
16
16
  data-controller="w-breadcrumbs"
@@ -104,7 +104,7 @@
104
104
  </ol>
105
105
 
106
106
  {% if sessions.0.revision_id %}
107
- <template data-controller="w-teleport" data-w-teleport-target-value="#title-text-w-overwrite-changes-dialog" data-w-teleport-reset-value="true">
107
+ <template data-controller="w-teleport" data-w-teleport-target-value="#title-text-w-overwrite-changes-dialog" data-w-teleport-mode-value="textContent">
108
108
  {% if current_session.user == sessions.0.user %}
109
109
  {% blocktranslate trimmed asvar someone_has_saved_message %}
110
110
  You saved a new version in another window
@@ -117,7 +117,7 @@
117
117
  {{ someone_has_saved_message }}
118
118
  </template>
119
119
 
120
- <template data-controller="w-teleport" data-w-teleport-target-value="#subtitle-w-overwrite-changes-dialog" data-w-teleport-reset-value="true">
120
+ <template data-controller="w-teleport" data-w-teleport-target-value="#subtitle-w-overwrite-changes-dialog" data-w-teleport-mode-value="textContent">
121
121
  {% if current_session.user == sessions.0.user %}
122
122
  {% blocktranslate trimmed asvar overwrite_message %}
123
123
  Proceeding will overwrite the changes you made in that window. Refreshing the page will show you the new changes, but you will lose any of your unsaved changes in the current window.
@@ -31,12 +31,28 @@
31
31
  data-w-action-url-value="{{ release_url }}"
32
32
  data-w-session-interval-value="{{ ping_interval|unlocalize }}"
33
33
  data-w-session-w-dialog-outlet="[data-edit-form] [data-controller='w-dialog']#w-overwrite-changes-dialog"
34
- data-action="w-session:ping->w-swap#submit visibilitychange@document->w-session#dispatchVisibilityState w-session:visible->w-session#ping w-session:visible->w-session#addInterval w-session:hidden->w-session#clearInterval w-session:hidden->w-action#sendBeacon w-unsaved:add@document->w-session#setUnsavedChanges w-unsaved:clear@document->w-session#setUnsavedChanges w-swap:json->w-session#updateSessionData"
34
+ data-action="
35
+ w-session:ping->w-swap#submit
36
+ visibilitychange@document->w-session#dispatchVisibilityState
37
+ w-session:visible->w-session#ping
38
+ w-session:visible->w-session#addInterval
39
+ w-session:hidden->w-session#clearInterval
40
+ w-session:hidden->w-action#sendBeacon
41
+ w-unsaved:add@document->w-session#setUnsavedChanges
42
+ w-unsaved:clear@document->w-session#setUnsavedChanges
43
+ w-swap:json->w-session#updateSessionData
44
+ w-autosave:success@document->w-session#updateSessionData
45
+ w-autosave:deactivated@document->w-session#ping
46
+ "
35
47
  >
36
48
  <input type="checkbox" name="is_editing" value="1" data-w-session-target="unsavedChanges" hidden />
37
49
  {% if revision_id %}
38
- {# The ID of the latest revision that was known when this module was initially loaded #}
39
- <input type="hidden" name="revision_id" value="{{ revision_id|unlocalize }}" />
50
+ {# The ID of the revision that is being edited #}
51
+ <input type="hidden" name="revision_id" value="{{ revision_id|unlocalize }}" data-w-session-target="revisionId" />
52
+ {% endif %}
53
+ {% if revision_created_at %}
54
+ {# The created_at of the revision that is being edited #}
55
+ <input type="hidden" name="revision_created_at" value="{{ revision_created_at }}" data-w-session-target="revisionCreatedAt" />
40
56
  {% endif %}
41
57
  <div id="w-editing-sessions">
42
58
  {% component sessions_list %}
@@ -0,0 +1,5 @@
1
+ {# Actions divider #}
2
+ <div class="w-w-px w-h-[30px] w-ml-auto sm:w-ml-0 w-bg-border-furniture"></div>
3
+ <div id="w-slim-header-buttons" class="w-flex w-items-center w-ml-2.5 w-gap-1">
4
+ {{ actions }}
5
+ </div>
@@ -1,11 +1,11 @@
1
1
  {% load wagtailadmin_tags i18n %}
2
2
 
3
3
  <a href="{{ history_url }}"
4
- class="{{ nav_icon_button_classes }}"
4
+ class="w-side-panel-toggle"
5
5
  aria-label="{% trans 'History' %}"
6
6
  data-controller="w-tooltip"
7
7
  data-w-tooltip-content-value="{% trans 'History' %}"
8
8
  data-w-tooltip-offset-value="[0, 0]"
9
9
  >
10
- {% icon name="history" classname=nav_icon_classes %}
10
+ {% icon name="history" classname="w-side-panel-toggle__icon" %}
11
11
  </a>
@@ -18,9 +18,6 @@
18
18
  template to work.
19
19
 
20
20
  {% endcomment %}
21
- {% fragment as nav_icon_classes %}w-w-4 w-h-4 group-hover:w-transform group-hover:w-scale-110{% endfragment %}
22
- {% fragment as nav_icon_button_classes %}w-w-slim-header w-h-slim-header w-bg-transparent w-border-transparent w-box-border w-py-3 w-px-3 w-flex w-justify-center w-items-center w-outline-offset-inside w-text-text-meta w-transition w-group hover:w-text-text-label focus:w-text-text-label expanded:w-text-text-label expanded:w-border-y-2 expanded:w-border-b-current w-shrink-0 more-contrast:w-border more-contrast:w-border-border-interactive-more-contrast hover:more-contrast:w-border-border-interactive-more-contrast-hover{% endfragment %}
23
- {% fragment as nav_icon_counter_classes %}-w-mr-3 w-py-0.5 w-px-[0.325rem] w-translate-y-[-8px] rtl:w-translate-x-[4px] w-translate-x-[-4px] w-text-[0.5625rem] w-font-bold w-text-text-button w-border w-border-surface-page w-rounded-[1rem]{% endfragment %}
24
21
  {# Z index 99 to ensure header is always above #}
25
22
  <div class="w-sticky w-top-0 w-z-header">
26
23
  <header class="w-slim-header w-bg-surface-header w-border-b w-border-border-furniture w-px-0 w-py-0 w-mb-0 w-relative w-top-0 w-z-header sm:w-sticky w-min-h-slim-header">
@@ -54,11 +51,7 @@
54
51
  {% endblock %}
55
52
  {% endfragment %}
56
53
  {% if actions %}
57
- {# Actions divider #}
58
- <div class="w-w-px w-h-[30px] w-ml-auto sm:w-ml-0 w-bg-border-furniture"></div>
59
- <div id="w-slim-header-buttons" class="w-flex w-items-center w-ml-2.5 w-gap-1">
60
- {{ actions }}
61
- </div>
54
+ {% include "wagtailadmin/shared/headers/_actions.html" with actions=actions %}
62
55
  {% endif %}
63
56
  {% endblock %}
64
57
  </div>
@@ -115,6 +108,12 @@
115
108
  {% endblock %}
116
109
 
117
110
  <div class="w-w-full w-overflow-auto sm:w-w-min w-flex sm:w-flex-nowrap sm:w-flex-row w-items-center w-p-0 sm:w-py-0 w-px-2 sm:w-pr-4 sm:w-justify-end">
111
+ {% block autosave_indicator %}
112
+ {% if autosave_indicator %}
113
+ {% component autosave_indicator %}
114
+ {% endif %}
115
+ {% endblock %}
116
+
118
117
  {% block editing_sessions %}
119
118
  {% if editing_sessions %}
120
119
  {% component editing_sessions %}
@@ -126,7 +125,7 @@
126
125
  {% include "wagtailadmin/shared/side_panel_toggles.html" %}
127
126
  {% endif %}
128
127
  {% if history_url %}
129
- {% include "wagtailadmin/shared/headers/_history_icon_link.html" with history_url=history_url nav_icon_button_classes=nav_icon_button_classes nav_icon_classes=nav_icon_classes only %}
128
+ {% include "wagtailadmin/shared/headers/_history_icon_link.html" with history_url=history_url only %}
130
129
  {% endif %}
131
130
  {% endblock %}
132
131
  </div>
@@ -0,0 +1,19 @@
1
+ {% load wagtailadmin_tags %}
2
+
3
+ {% if view.active_filters %}
4
+ {% include "wagtailadmin/shared/active_filters.html" with active_filters=view.active_filters %}
5
+ {% endif %}
6
+
7
+ {% if render_filters_fragment %}
8
+ <template data-controller="w-teleport" data-w-teleport-target-value="#filters-drilldown" data-w-teleport-mode-value="innerHTML">
9
+ {% include "wagtailadmin/shared/headers/_filters.html" with filters=filters %}
10
+ </template>
11
+ {% endif %}
12
+
13
+ {% if render_buttons_fragment %}
14
+ <template data-controller="w-teleport" data-w-teleport-target-value="#w-slim-header-buttons" data-w-teleport-mode-value="innerHTML">
15
+ {% for button in header_buttons %}
16
+ {% component button %}
17
+ {% endfor %}
18
+ </template>
19
+ {% endif %}
@@ -1,7 +1,7 @@
1
1
  {% load wagtailadmin_tags %}
2
2
 
3
3
  <button type="button"
4
- class="{{ nav_icon_button_classes }}"
4
+ class="w-side-panel-toggle"
5
5
  aria-label="{{ toggle.aria_label }}"
6
6
  aria-expanded="false"
7
7
  data-controller="w-tooltip{% if toggle.keyboard_shortcut %} w-kbd{% endif %}"
@@ -10,9 +10,9 @@
10
10
  data-w-tooltip-content-value="{{ panel.title }}"
11
11
  data-w-tooltip-offset-value="[0, 0]"
12
12
  >
13
- {% icon name=toggle.icon_name classname=nav_icon_classes %}
13
+ {% icon name=toggle.icon_name classname="w-side-panel-toggle__icon" %}
14
14
  {% if toggle.has_counter %}
15
- <div data-side-panel-toggle-counter class="{{ nav_icon_counter_classes }} {{ toggle.counter_classname|default:'w-bg-surface-button-default'}}" {% if not count %}hidden{% endif %}>
15
+ <div data-side-panel-toggle-counter class="w-side-panel-toggle__counter {{ toggle.counter_classname|default:'w-bg-surface-button-default'}}" {% if not count %}hidden{% endif %}>
16
16
  {{ count|intcomma }}
17
17
  </div>
18
18
  {% endif %}
@@ -0,0 +1,3 @@
1
+ {% load wagtailadmin_tags %}
2
+ <h2 id="side-panel-{{ panel.name }}-title" class="w-sr-only">{{ panel.title }}</h2>
3
+ {% component panel %}