Replace BDropdown family with custom GDropdown components - #21961
Open
dannon wants to merge 11 commits into
Open
Replace BDropdown family with custom GDropdown components#21961dannon wants to merge 11 commits into
dannon wants to merge 11 commits into
Conversation
9 tasks
dannon
force-pushed
the
feature/g-dropdown
branch
from
March 2, 2026 15:10
db7e041 to
33fa499
Compare
dannon
force-pushed
the
feature/g-dropdown
branch
from
March 24, 2026 02:21
33fa499 to
7a47c73
Compare
itisAliRH
requested changes
Mar 24, 2026
itisAliRH
left a comment
Member
There was a problem hiding this comment.
This looks good overall, thank you @dannon!
I noticed a couple of issues:
- Items that are links don’t show a pointer cursor (like in HistoryOptions)
- When clicking on link items, the dropdown stays open. It only closes for non-link items.
- Target's Tooltip remains visible after opening the dropdown and ends up blocking other content (This might be a more general tooltip issue rather than something introduced in this PR).
21961.-.1.mov
dannon
force-pushed
the
feature/g-dropdown
branch
2 times, most recently
from
March 31, 2026 02:14
0d2ef9f to
a066dcc
Compare
Member
|
Needs a rebase too |
mvdbeek
marked this pull request as draft
April 7, 2026 12:28
dannon
force-pushed
the
feature/g-dropdown
branch
from
May 25, 2026 20:15
a066dcc to
0dc41b6
Compare
dannon
force-pushed
the
feature/g-dropdown
branch
from
June 1, 2026 21:16
0dc41b6 to
7c992a7
Compare
dannon
force-pushed
the
feature/g-dropdown
branch
2 times, most recently
from
July 31, 2026 03:07
097547c to
45c58ec
Compare
dannon
force-pushed
the
feature/g-dropdown
branch
from
August 15, 2026 01:07
45c58ec to
ef2045a
Compare
dannon
marked this pull request as ready for review
August 19, 2026 19:01
Created 7 new components (GDropdown, GDropdownItem, GDropdownDivider, GDropdownText, GDropdownGroup, GDropdownForm, GDropdownItemButton) that use Bootstrap 4 CSS classes directly with native DOM click-outside handling and provide/inject for menu auto-close. Migrated all 27 files that imported from bootstrap-vue's dropdown family.
Update HistoryOptions to use findAllComponents(GDropdownItem) with props() checks instead of CSS stub selectors. Update VisualizationExamples to import GDropdown/GDropdownItem instead of BDropdown/BDropdownItem and click button instead of anchor. Add router-link stub to MultipleView test. Update ToolTourGeneratorItem to check disabled attribute instead of aria-disabled since GDropdownItem uses native button disabled.
GDropdown menu div wasn't handling Escape key events, so send_escape() in Selenium tests had no effect. Added @keydown.esc="hide" to close on Escape, matching BDropdown behavior. VisualizationExamples test was clicking button inside GDropdownItem, but GDropdownItem now renders as <a> (like BDropdownItem). Updated selectors.
Split GDropdownItem's dynamic <component :is> into separate <router-link> and <a> elements so the click handler reliably fires for both -- the dynamic component pattern didn't propagate native click events for router-link items in Vue 2 compat mode, so hideDropdown() never ran. Also adds explicit cursor: pointer on .dropdown-item for both item types.
…dDropdown close Remove noFlip, boundary, and offset props from GDropdown since they were accepted but never implemented (no Popper.js backing). Remove the corresponding caller-side attributes. Add aria-disabled to GDropdownItem for screen reader support. Add headerClasses prop to GDropdownGroup so ToolsListSectionFilters styling works. Fix MastheadDropdown by providing g-dropdown-hide so GDropdownItem clicks properly close the BNavItemDropdown. Fix ToolTourGeneratorItem test to check aria-disabled instead of the disabled DOM attribute. Remove dead onMounted hook and unused import.
CompositeSlotRow was added on dev after the branch was cut -- swap it to the GDropdown family along with the rest of the sweep. Import order fixups in FilterMenuDropdown and Workflow Editor are linter changes.
Dev extracted the select-preference dropdown out of FormSelection.vue into its own component after this branch forked, so it landed with BDropdown still in place. Same swap as the rest of the sweep.
The click handler cancelled navigation for anything without a :to, which also killed target="_blank" -- so external-link items in GCard never opened their tab. That's what test_workflow_management.py::test_view was tripping over. Only cancel when the href is "#", explicit or defaulted, which is what BLink did underneath BDropdownItem. FilterMenuDropdown passes href="#" directly and still needs the page not to jump, hence checking the value rather than just its presence.
GDropdownForm declared no props at all, so NodeInspector's form-class="px-2" was silently dropped and the form kept the hardcoded px-4 py-3 -- much roomier than BDropdownForm rendered it (0.25rem/1.5rem base with px-2 overriding the horizontal padding). Made the padding a prop default the caller replaces instead of layering onto, since two competing bootstrap spacing utilities are resolved by stylesheet order, not by which one the caller passed -- px-4 would have beaten px-2.
dannon
force-pushed
the
feature/g-dropdown
branch
from
August 26, 2026 17:35
ef2045a to
c2432f9
Compare
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.
Part of the bootstrap-vue scoped-slot replacement effort tracked in #21956.
BDropdownuses scoped slots and crashes under@vue/compat. Replaces the full BDropdown family with 7 custom components:GDropdown,GDropdownItem,GDropdownItemButton,GDropdownDivider,GDropdownText,GDropdownGroup, andGDropdownForm. Uses Bootstrap 4 CSS classes for menu positioning and native DOM listeners for click-outside/escape-to-close behavior. Provides ag-dropdown-hideinjection so child items can close the parent menu on click.Migrates 27 files.
BNavItemDropdowninMastheadDropdownis kept as-is since it requires nav-specific markup, but the child items useGDropdownItemwith the hide injection bridged through.