Repository navigation
feat: support target and rel on studio header menu items - #687
jacobo-dominguez-wgu wants to merge 1 commit into
Conversation
|
Thanks for the pull request, @jacobo-dominguez-wgu! This repository is currently maintained by Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. DetailsWhere can I find more information?If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources: When can I expect my changes to be merged?Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #687 +/- ##
==========================================
+ Coverage 74.43% 74.48% +0.04%
==========================================
Files 61 61
Lines 528 529 +1
Branches 111 111
==========================================
+ Hits 393 394 +1
Misses 132 132
Partials 3 3 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
eed2cee to
14ecd54
Compare
Menu items in mainMenuDropdowns can now set `target` (any anchor target, e.g. `_blank`) and `rel`. The desktop dropdown (NavDropdownMenu) and the mobile menu (MobileMenu) both pass them through via a shared getItemLinkProps helper, which defaults `rel` to `noopener noreferrer` when `target` is `_blank` and no `rel` is given. Items without `target` render as before. MobileMenu is converted from propTypes to TypeScript so its items share the NavDropdownMenuItem type. Adds @testing-library/user-event as a dev dependency for the new tests. Part of openedx/frontend-app-authoring#3052
14ecd54 to
7f31a48
Compare
Summary
Studio header menu items can now set
targetandrel, so a link like Roles and Permissions can open in a new tab instead of reloading the current one. This is the first part of openedx/frontend-app-authoring#3052. A follow-up infrontend-app-authoringwill settarget: '_blank'on that item.Part of openedx/frontend-app-authoring#3052
Changes
NavDropdownMenuexports aNavDropdownMenuItemtype with optionaltarget(any anchor target, e.g._blankor a named tab) andrel.HeaderBodyuses this type formainMenuDropdownsitems, soStudioHeadercallers can set both fields.NavDropdownMenu) and the mobile menu (MobileMenu) pass these through via a sharedgetItemLinkPropshelper inutils.ts. Whentargetis_blankand norelis given, the helper setsreltonoopener noreferrer. Items withouttargetrender exactly as before.MobileMenuis converted frompropTypesto TypeScript, so its items are typed the same way as the desktop dropdown's.@testing-library/user-eventas a dev dependency for the new tests.Why
target/relare passed straight through, instead of anopenInNewTabboolean, so callers can use anytargetvalue without another API change.Testing
npm run types(tsc --noEmit) and ESLint pass._blankwith the defaultrel, a customrel, a named target, and the mobile menu applying the same rules.npm start): addtarget: '_blank'to amainMenuDropdownsitem and confirm it opens in a new tab on desktop and on mobile (window narrower than 842px).AI disclosure
Created with the assistance of claude opus