Loading
Draft: Convert detached, teardown-managed, and factory bootstraps to initVueApp
What does this MR do and why?
Stacked on !247299 (merged) (the boring initVueApp wave) — retarget to master when it merges. Second review round of the wave identified these ten bootstraps as going beyond the mechanical { el, component, props, events } shape; they carry their own explained patterns:
- Detached mounts (
confirm_modal,environments/init_confirm_rollback_modal,admin/users,vue_shared/plugins/global_toast): the Vue 2 detached-$mount()idiom becomes a mount on a created element;global_toastbecomes a lazily created root exposing$toastwith theGlToastplugin installed per-app. - Teardown choreography (
captcha/wait_for_captcha_to_be_solved,rapid_diffs/adapters/file_discussions,rapid_diffs/adapters/line_discussions):unmountVueApppairs the Vue 3 app teardown (which also removes rendered DOM) with the manual removals that cover Vue 2. - Options factories (
ci/pipeline_details/pipeline_tabsCE + EE):createAppOptionsreturns the component/props shape and the EEmergeoverridespropsinstead of wrapping the render function; the module-scopeGlToastinstall folds into per-apppluginshere, deliberately and reviewably. environments_dashboardcaptures the mount element dataset at init time, replacing the legacy$el.datasetread during first render.
Content is the exact CI-proven state from the pre-split !247299 (merged) (full run-all-rspec + run-rspec-vue3 matrix lineage).
MR acceptance checklist
- I have evaluated the MR acceptance checklist for this MR.