feat: expose footer as a layout-replaceable slot#257
Merged
arbrandes merged 1 commit intoopenedx:mainfrom May 3, 2026
Merged
Conversation
Move the inline footer composition (the <footer> element, the column layout, and PoweredBy) out of Footer.tsx into a new DesktopFooterLayout widget registered as the default for a new top-level slot, org.openedx.frontend.slot.footer.desktop.v1. Footer.tsx collapses to a single <Slot>, mirroring Header.tsx. Replacing the entire footer is now symmetric with replacing the entire header: a WidgetOperationTypes.REPLACE against the layout widget id, or a LayoutOperationTypes.REPLACE against the slot id. All existing inner slot ids and default widget ids are preserved, so plugins targeting them keep working unchanged. Adds ADR 0016 documenting the pattern and three tests covering the default render plus both replacement seams. Refs openedx#256 Co-Authored-By: Claude <noreply@anthropic.com>
7a0b5cf to
a517f39
Compare
|
🎉 This PR is included in version 1.0.0-alpha.44 🎉 The release is available on: Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
The footer in
frontend-basedid not have a full-replacement seam analogous to what the header already exposes, which is what issue #256 documents. This change moves the inline footer composition (the<footer>element, the column layout, and<PoweredBy>) out ofFooter.tsxinto a newDesktopFooterLayoutwidget, registered as the default widget for a new top-level slot,org.openedx.frontend.slot.footer.desktop.v1.Footer.tsxcollapses to a single<Slot>, mirroringHeader.tsx.After this change, replacing the whole footer is symmetric with replacing the whole header: a
WidgetOperationTypes.REPLACEagainstorg.openedx.frontend.widget.footer.desktopLayout.v1, or aLayoutOperationTypes.REPLACEagainstorg.openedx.frontend.slot.footer.desktop.v1. The change is purely additive: every existing inner slot id and default widget id is preserved verbatim, so plugins targetingdesktopCenterLinks.v1, the column sub-slots,desktopTop.v1, and the rest keep working without modification. The DOM tree for default deployments is identical aside from one extra<Slot>rendering pass.ADR 0016 documents the pattern (top-level shell regions are bare
<Slot>shells; default composition lives in a layout widget) and references ADRs 0009 and 0011 as adjacent contracts. Three tests cover the default render and both replacement seams.Closes #256
LLM usage notice
Built with assistance from Claude.