-
Notifications
You must be signed in to change notification settings - Fork 13
Update to Bootstrap 5.3 #82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
9b5ecf6 to
09a43d1
Compare
366bd61 to
c9a7cfb
Compare
| // General JavaScript requirements | ||
| 'js' => [ 'scripts' => [ 'bootstrap.bundle.js' ] ], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I could not get MediaWiki ResourceLoader to work with the individual Bootstrap JS files. The BS4 JS dependencies were simpler and more standalone, whereas it's more complicated now and seems incompatible with MW RL.
AI also thinks it might not be worth it
Why Individual JS Files Don't Work in Bootstrap 5
Bootstrap 4 had relatively standalone JS files. Each component like modal.js had simple dependencies (maybe util.js and popper.js).
Bootstrap 5 restructured everything with a complex dependency graph. Look at modal.js:
require('./base-component.js'), require('./dom/event-handler.js'),
require('./dom/selector-engine.js'), require('./util/backdrop.js'),
require('./util/component-functions.js'), require('./util/focustrap.js'),
require('./util/index.js'), require('./util/scrollbar.js')MediaWiki's ResourceLoader doesn't resolve these CommonJS require() paths automatically.
Your Options
Option 1: Keep Using the Bundle (Recommended) ✅
Your current approach with bootstrap.bundle.js is actually the correct solution for Bootstrap 5:
- ✅ All dependencies pre-resolved
- ✅ Includes Popper.js built-in
- ✅ Officially recommended by Bootstrap
- ✅ ~80KB minified, cached after first load
- ✅ No complex dependency management
Option 2: Use MediaWiki packageFiles with ES Modules
MediaWiki 1.43+ supports packageFiles which can handle ES module imports. Bootstrap 5 has ES module source files in js/src/. However, you'd need to configure the entire dependency tree.
Would you like me to explore setting this up? It would involve:
- Creating a
packageFilesconfiguration inSetupAfterCache.php - Mapping each component to its ES module dependencies
- Using
type: es6modules
But honestly, for most use cases, the bundle approach is superior - it's what Bootstrap recommends, and the file size difference between loading the bundle vs. individual components is minimal after gzip compression.
Summary
Your V5ModuleDefinition structure is correct. The switch to bootstrap.bundle.js is the right approach for Bootstrap 5. The module definition still allows users to:
- Load only CSS for components they need (granular control)
- Include JS when needed via the
'js'module (loads the full bundle)
This is a reasonable trade-off - granular SCSS, bundled JS.
When AI tried to implement individual JS loading, it ended up pulling in a bundler like Rollup to build the JS. This becomes way overcomplicated, and for practical purposes most users would've loaded all resources all the time anyway via addAllBootstrapModules() in Chameleon, or as per the Extension:Bootstrap docs.
At this point getting BS5 to work is more important than optimising the JS files. We can always add the separate JS files later if anyone has a need for it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This also means there is some redundancy in the definitions, since all these JS interdependencies end up referring to the same bundled file. But I'll leave that as-is "just in case".
|
Warning Rate limit exceeded@malberts has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 16 minutes and 30 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ⛔ Files ignored due to path filters (15)
📒 Files selected for processing (107)
Note
|
| Cohort / File(s) | Summary |
|---|---|
CI/Dependency Version Updates .github/workflows/ci.yml, composer.json, package.json, extension.json, README.md, docs/release-notes.md |
Updated CI matrix to test MediaWiki 1.43–1.45 and PHP 8.1–8.5; bumped Bootstrap to 5.3.8 and Popper to 2.11.8; updated minimum requirements (PHP 8.1+, MediaWiki 1.43+); version bumped to 6.0.0-dev across manifests. |
Removed Bootstrap 4 JavaScript Components resources/bootstrap/js/alert.js, button.js, carousel.js, collapse.js, dropdown.js, index.js, modal.js, popover.js, popper.js, scrollspy.js, tab.js, toast.js, tooltip.js, util.js |
Deleted entire Bootstrap 4 component implementations (14 files), removing jQuery plugins, public APIs, and data-API wiring for alerts, buttons, carousels, modals, dropdowns, tooltips, and popovers. |
SCSS Variable/Mixin Refactoring resources/bootstrap/scss/_alert.scss, _badge.scss, _breadcrumb.scss, _button-group.scss, _buttons.scss, _card.scss, _carousel.scss, _close.scss, _dropdown.scss, _list-group.scss, _modal.scss, _nav.scss, _navbar.scss, _pagination.scss, _popover.scss, _progress.scss, _spinners.scss, _tables.scss, _toasts.scss, _tooltip.scss |
Migrated component styling from Sass variables to CSS custom properties (--prefix-...), introduced new color/state variables, and updated mixins to emit CSS variables instead of direct property values. |
Form Components Modularization resources/bootstrap/scss/_forms.scss, resources/bootstrap/scss/forms/_floating-labels.scss, _form-check.scss, _form-control.scss, _form-range.scss, _form-select.scss, _form-text.scss, _labels.scss, _input-group.scss, _validation.scss |
Restructured form styling from monolithic _forms.scss into modular partials (labels, text, control, select, check, range, input-group, validation), enabling fine-grained component imports. |
New Components and Utilities resources/bootstrap/scss/_accordion.scss, _offcanvas.scss, _placeholders.scss, resources/bootstrap/scss/helpers/_color-bg.scss, _colored-links.scss, _focus-ring.scss, _icon-link.scss, _position.scss, _ratio.scss, _stacks.scss, _stretched-link.scss, _text-truncation.scss, _visually-hidden.scss, _vr.scss |
Added new Bootstrap 5 components (accordion, offcanvas, placeholders) and helpers (color-bg, colored-links, focus-ring, icon-link, position, ratio, stacks); introduced modular helper structure. |
Removed/Deprecated Components resources/bootstrap/scss/_code.scss, _custom-forms.scss, _jumbotron.scss, _media.scss, _input-group.scss, _print.scss |
Deleted styling partials for code elements, custom form controls, jumbotron, media objects, input groups (moved to forms), and print styles; simplified component surface. |
Core Framework Refactoring resources/bootstrap/scss/_variables-dark.scss, _maps.scss, _functions.scss, _root.scss, _grid.scss, _transitions.scss, _reboot.scss, _type.scss, _utilities.scss |
Introduced dark theme variables, added color/utility maps with CSS var generation, refactored color-contrast functions, updated root variable scope (added [data-bs-theme="light"]), reworked grid to CSS Grid approach, and consolidated utilities into data-driven map. |
Mixin Library Updates resources/bootstrap/scss/mixins/_alert.scss, _badge.scss, _banner.scss, _border-radius.scss, _box-shadow.scss, _breakpoints.scss, _buttons.scss, _caret.scss, _clearfix.scss, _color-mode.scss, _color-scheme.scss, _container.scss, _float.scss, _forms.scss, _gradients.scss, _grid-framework.scss, _grid.scss, _hover.scss, _image.scss |
Introduced new mixins (banner, color-mode, color-scheme, container, backdrop); removed deprecated mixins (hover, plain-hover-focus, hover-focus-active, float-left/right, badge-variant, background-variant); updated signatures (buttons, caret, border-radius, gradients) to support CSS variables and refactored logic. |
Main Bootstrap Import Files resources/bootstrap/scss/bootstrap.scss, bootstrap-grid.scss, bootstrap-reboot.scss, bootstrap-utilities.scss |
Reorganized imports to include new modules (accordion, offcanvas, placeholders, helpers), removed deprecated ones (code, custom-forms, jumbotron, media, print), and added dark-theme variables; introduced bootstrap-utilities.scss entry point. |
Documentation and Configuration resources/bootstrap/scss/_helpers.scss |
Added aggregator module consolidating helper partials (clearfix, color-bg, colored-links, focus-ring, icon-link, ratio, position, stacks, visually-hidden, stretched-link, text-truncation, vr). |
Estimated code review effort
🎯 5 (Critical) | ⏱️ ~120 minutes
Specific areas requiring extra attention:
- Bootstrap 4→5 JavaScript removal: Verify all removed JS components (alert, button, carousel, collapse, dropdown, modal, popover, scrollspy, tab, toast, tooltip) have no remaining runtime dependencies; confirm Popper.js bundle is correctly integrated.
- CSS variable migration: Review all SCSS variable-to-CSS-custom-property refactorings in color, spacing, and component styling to ensure fallback behavior and theming consistency across light/dark modes.
- Grid system refactoring: Examine changes from negative-margin-based row/column layout to CSS Grid approach; verify breakpoint-specific grid classes and responsive behavior remain intact.
- Form component modularization: Validate that split form files (labels, control, check, range, select) maintain expected selector specificity and state behavior; check floating labels and validation state transitions.
- Dark mode implementation: Verify conditional
@if $enable-dark-modeblocks,color-mode()mixin invocations, and[data-bs-theme="light"]selector logic work correctly across all themed components. - Mixin signature changes: Review button-variant, border-radius, caret, gradient, and form-validation-state signature updates to ensure all call sites pass correct parameters.
- Entry point changes: Confirm bootstrap.scss, bootstrap-grid.scss, and new bootstrap-utilities.scss imports include all necessary partials and maintain expected CSS output order.
Possibly related PRs
- Update CI #81: Updates CI workflow matrix for MediaWiki and PHP versions, directly related to this PR's CI configuration changes.
Pre-merge checks and finishing touches
✅ Passed checks (3 passed)
| Check name | Status | Explanation |
|---|---|---|
| Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. |
| Title check | ✅ Passed | The pull request title 'Update to Bootstrap 5.3' clearly summarizes the main change—a major version upgrade of Bootstrap from 4.x to 5.3—which is the most significant modification evident across the changeset (dependency updates, SCSS modernization, JavaScript component removals, and version bumps). |
| Docstring Coverage | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. |
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands and usage tips.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
composer.json (1)
4-4: Description references Bootstrap 4 but should reference Bootstrap 5.The description still says "Bootstrap 4 web front-end framework" but this PR upgrades to Bootstrap 5.3. This should be updated for accuracy.
🔎 Suggested fix
- "description": "Provides the Bootstrap 4 web front-end framework to MediaWiki skins and extensions", + "description": "Provides the Bootstrap 5 web front-end framework to MediaWiki skins and extensions",
🧹 Nitpick comments (10)
resources/bootstrap/scss/mixins/_image.scss (1)
1-3: Consider updating the comment to reflect removed functionality.The comment on line 3 still references "Retina image," but the retina image mixin has been removed in this update. Consider removing this line from the header comment for consistency.
🔎 Suggested fix
// Image Mixins // - Responsive image -// - Retina imageresources/bootstrap/scss/mixins/_box-shadow.scss (1)
7-22: Edge case: Mixed special values and shadow definitions.The current logic allows passing both special keywords (
none,inherit, etc.) and actual shadow values. If this occurs, the special keyword silently takes precedence (lines 18-19). This is likely intentional, but consider whether a warning would be helpful for debugging.Additionally, if multiple special keywords are passed, only the last one is retained.
🔎 Optional: Add warning for mixed usage
@if $has-single-value { + @if length($result) > 0 { + @warn "box-shadow mixin received both special value `#{$single-value}` and shadow values; using special value only."; + } box-shadow: $single-value; } @else if (length($result) > 0) { box-shadow: $result; }resources/bootstrap/scss/_functions.scss (1)
41-49: Minor: Missing@elsebefore second@ifon line 44.The condition on line 44 should use
@else ifinstead of@iffor proper conditional chaining. While functionally similar in this case (due to the returns), using@else ifis more explicit and conventional.Suggested fix
@function rgba-css-var($identifier, $target) { @if $identifier == "body" and $target == "bg" { @return rgba(var(--#{$prefix}#{$identifier}-bg-rgb), var(--#{$prefix}#{$target}-opacity)); - } @if $identifier == "body" and $target == "text" { + } @else if $identifier == "body" and $target == "text" { @return rgba(var(--#{$prefix}#{$identifier}-color-rgb), var(--#{$prefix}#{$target}-opacity)); } @else { @return rgba(var(--#{$prefix}#{$identifier}-rgb), var(--#{$prefix}#{$target}-opacity)); } }resources/bootstrap/scss/forms/_form-range.scss (1)
43-52: Clean up unclear inline comments.Lines 46 and 75 contain questioning comments (
// Why?and// Firefox specific?) that appear to be leftover notes rather than meaningful documentation. These should either be removed or replaced with proper explanations.The
color: transparenton track elements is intentional to prevent text selection highlighting from appearing on the track.🔎 Suggested documentation fixes
&::-webkit-slider-runnable-track { width: $form-range-track-width; height: $form-range-track-height; - color: transparent; // Why? + color: transparent; // Prevents text selection highlighting cursor: $form-range-track-cursor; background-color: $form-range-track-bg; border-color: transparent;&::-moz-range-track { width: $form-range-track-width; height: $form-range-track-height; color: transparent; cursor: $form-range-track-cursor; background-color: $form-range-track-bg; - border-color: transparent; // Firefox specific? + border-color: transparent; @include border-radius($form-range-track-border-radius);resources/bootstrap/scss/forms/_form-check.scss (1)
168-181: Consider usingclip-pathinstead of deprecatedclip.The
clipproperty is deprecated in favor ofclip-path. Whileclip: rect(0, 0, 0, 0)still works for accessibility hiding, modern implementations preferclip-path: inset(50%).🔎 Suggested update
.btn-check { position: absolute; - clip: rect(0, 0, 0, 0); + clip-path: inset(50%); pointer-events: none;Note: This is a minor update as Bootstrap 5.3 upstream may still use
clipfor broader browser support. Verify upstream Bootstrap source if consistency is desired.resources/bootstrap/scss/_toasts.scss (1)
40-52: Duplicate--toast-zindexdeclaration.The
--#{$prefix}toast-zindexvariable is already defined in.toast(line 3). While not breaking (CSS variables are scoped), this redundancy could be intentional for container-specific overrides. Consider whether.toast-containershould inherit from.toastor if this duplication is desired for independent theming.resources/bootstrap/scss/_accordion.scss (1)
127-144: Minor inconsistency in pseudo-class usage.The flush variant uses
:first-child/:last-child(lines 133-134) while the main.accordion-itemrules use:first-of-type/:last-of-type(lines 90, 98, 103). This could cause subtle differences if non-.accordion-itemelements are mixed in. Consider aligning to use:first-of-type/:last-of-typefor consistency.🔎 Suggested alignment
- &:first-child { border-top: 0; } - &:last-child { border-bottom: 0; } + &:first-of-type { border-top: 0; } + &:last-of-type { border-bottom: 0; }resources/bootstrap/scss/_dropdown.scss (1)
71-81: Minor: Extra blank line inside conditional block.There's an extra blank line before the closing brace on line 81.
Suggested fix
> .dropdown-item:last-child, > li:last-child .dropdown-item { @include border-bottom-radius(var(--#{$prefix}dropdown-inner-border-radius)); } - }resources/bootstrap/scss/_carousel.scss (1)
205-226: Dark mode implementation follows Bootstrap 5.3 pattern.The
carousel-dark()mixin and conditionalcolor-mode(dark, true)application correctly implement the Bootstrap 5.3 theming system.One consideration: the
:root, [data-bs-theme="light"]block (lines 215-220) is declared after.carousel-dark. While this works due to CSS specificity (:roothas lower specificity than a class), placing root/light defaults before the dark variant would improve readability and match the pattern used in other Bootstrap components.resources/bootstrap/scss/_variables-dark.scss (1)
82-96: Consider moving carousel/close-button vars inside the scss-docs block.The
scss-docs-end sass-dark-mode-varsmarker is at line 87, but carousel and close-button dark mode variables follow at lines 94-102. For documentation consistency, consider either extending the docs block or adding separate markers for these sections.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (15)
package-lock.jsonis excluded by!**/package-lock.jsonresources/bootstrap/js/alert.js.mapis excluded by!**/*.mapresources/bootstrap/js/bootstrap.bundle.js.mapis excluded by!**/*.mapresources/bootstrap/js/button.js.mapis excluded by!**/*.mapresources/bootstrap/js/carousel.js.mapis excluded by!**/*.mapresources/bootstrap/js/collapse.js.mapis excluded by!**/*.mapresources/bootstrap/js/dropdown.js.mapis excluded by!**/*.mapresources/bootstrap/js/modal.js.mapis excluded by!**/*.mapresources/bootstrap/js/popover.js.mapis excluded by!**/*.mapresources/bootstrap/js/popper.js.mapis excluded by!**/*.mapresources/bootstrap/js/scrollspy.js.mapis excluded by!**/*.mapresources/bootstrap/js/tab.js.mapis excluded by!**/*.mapresources/bootstrap/js/toast.js.mapis excluded by!**/*.mapresources/bootstrap/js/tooltip.js.mapis excluded by!**/*.mapresources/bootstrap/js/util.js.mapis excluded by!**/*.map
📒 Files selected for processing (107)
.github/workflows/ci.yml(1 hunks)README.md(2 hunks)composer.json(2 hunks)docs/release-notes.md(1 hunks)extension.json(1 hunks)package.json(1 hunks)resources/bootstrap/js/alert.js(0 hunks)resources/bootstrap/js/button.js(0 hunks)resources/bootstrap/js/carousel.js(0 hunks)resources/bootstrap/js/collapse.js(0 hunks)resources/bootstrap/js/dropdown.js(0 hunks)resources/bootstrap/js/index.js(0 hunks)resources/bootstrap/js/modal.js(0 hunks)resources/bootstrap/js/popover.js(0 hunks)resources/bootstrap/js/popper.js(0 hunks)resources/bootstrap/js/scrollspy.js(0 hunks)resources/bootstrap/js/tab.js(0 hunks)resources/bootstrap/js/toast.js(0 hunks)resources/bootstrap/js/tooltip.js(0 hunks)resources/bootstrap/js/util.js(0 hunks)resources/bootstrap/scss/_accordion.scss(1 hunks)resources/bootstrap/scss/_alert.scss(3 hunks)resources/bootstrap/scss/_badge.scss(1 hunks)resources/bootstrap/scss/_breadcrumb.scss(1 hunks)resources/bootstrap/scss/_button-group.scss(5 hunks)resources/bootstrap/scss/_buttons.scss(4 hunks)resources/bootstrap/scss/_card.scss(9 hunks)resources/bootstrap/scss/_carousel.scss(7 hunks)resources/bootstrap/scss/_close.scss(1 hunks)resources/bootstrap/scss/_code.scss(0 hunks)resources/bootstrap/scss/_containers.scss(1 hunks)resources/bootstrap/scss/_custom-forms.scss(0 hunks)resources/bootstrap/scss/_dropdown.scss(4 hunks)resources/bootstrap/scss/_forms.scss(1 hunks)resources/bootstrap/scss/_functions.scss(2 hunks)resources/bootstrap/scss/_grid.scss(1 hunks)resources/bootstrap/scss/_helpers.scss(1 hunks)resources/bootstrap/scss/_input-group.scss(0 hunks)resources/bootstrap/scss/_jumbotron.scss(0 hunks)resources/bootstrap/scss/_list-group.scss(5 hunks)resources/bootstrap/scss/_maps.scss(1 hunks)resources/bootstrap/scss/_media.scss(0 hunks)resources/bootstrap/scss/_mixins.scss(1 hunks)resources/bootstrap/scss/_modal.scss(6 hunks)resources/bootstrap/scss/_nav.scss(5 hunks)resources/bootstrap/scss/_navbar.scss(8 hunks)resources/bootstrap/scss/_offcanvas.scss(1 hunks)resources/bootstrap/scss/_pagination.scss(2 hunks)resources/bootstrap/scss/_placeholders.scss(1 hunks)resources/bootstrap/scss/_popover.scss(3 hunks)resources/bootstrap/scss/_print.scss(0 hunks)resources/bootstrap/scss/_progress.scss(1 hunks)resources/bootstrap/scss/_reboot.scss(7 hunks)resources/bootstrap/scss/_root.scss(1 hunks)resources/bootstrap/scss/_spinners.scss(2 hunks)resources/bootstrap/scss/_tables.scss(1 hunks)resources/bootstrap/scss/_toasts.scss(1 hunks)resources/bootstrap/scss/_tooltip.scss(2 hunks)resources/bootstrap/scss/_transitions.scss(1 hunks)resources/bootstrap/scss/_type.scss(2 hunks)resources/bootstrap/scss/_utilities.scss(1 hunks)resources/bootstrap/scss/_variables-dark.scss(1 hunks)resources/bootstrap/scss/bootstrap-grid.scss(1 hunks)resources/bootstrap/scss/bootstrap-reboot.scss(1 hunks)resources/bootstrap/scss/bootstrap-utilities.scss(1 hunks)resources/bootstrap/scss/bootstrap.scss(2 hunks)resources/bootstrap/scss/forms/_floating-labels.scss(1 hunks)resources/bootstrap/scss/forms/_form-check.scss(1 hunks)resources/bootstrap/scss/forms/_form-control.scss(1 hunks)resources/bootstrap/scss/forms/_form-range.scss(1 hunks)resources/bootstrap/scss/forms/_form-select.scss(1 hunks)resources/bootstrap/scss/forms/_form-text.scss(1 hunks)resources/bootstrap/scss/forms/_input-group.scss(1 hunks)resources/bootstrap/scss/forms/_labels.scss(1 hunks)resources/bootstrap/scss/forms/_validation.scss(1 hunks)resources/bootstrap/scss/helpers/_color-bg.scss(1 hunks)resources/bootstrap/scss/helpers/_colored-links.scss(1 hunks)resources/bootstrap/scss/helpers/_focus-ring.scss(1 hunks)resources/bootstrap/scss/helpers/_icon-link.scss(1 hunks)resources/bootstrap/scss/helpers/_position.scss(1 hunks)resources/bootstrap/scss/helpers/_ratio.scss(1 hunks)resources/bootstrap/scss/helpers/_stacks.scss(1 hunks)resources/bootstrap/scss/helpers/_stretched-link.scss(1 hunks)resources/bootstrap/scss/helpers/_text-truncation.scss(1 hunks)resources/bootstrap/scss/helpers/_visually-hidden.scss(1 hunks)resources/bootstrap/scss/helpers/_vr.scss(1 hunks)resources/bootstrap/scss/mixins/_alert.scss(1 hunks)resources/bootstrap/scss/mixins/_backdrop.scss(1 hunks)resources/bootstrap/scss/mixins/_background-variant.scss(0 hunks)resources/bootstrap/scss/mixins/_badge.scss(0 hunks)resources/bootstrap/scss/mixins/_banner.scss(1 hunks)resources/bootstrap/scss/mixins/_border-radius.scss(2 hunks)resources/bootstrap/scss/mixins/_box-shadow.scss(1 hunks)resources/bootstrap/scss/mixins/_breakpoints.scss(3 hunks)resources/bootstrap/scss/mixins/_buttons.scss(1 hunks)resources/bootstrap/scss/mixins/_caret.scss(2 hunks)resources/bootstrap/scss/mixins/_clearfix.scss(1 hunks)resources/bootstrap/scss/mixins/_color-mode.scss(1 hunks)resources/bootstrap/scss/mixins/_color-scheme.scss(1 hunks)resources/bootstrap/scss/mixins/_container.scss(1 hunks)resources/bootstrap/scss/mixins/_float.scss(0 hunks)resources/bootstrap/scss/mixins/_forms.scss(4 hunks)resources/bootstrap/scss/mixins/_gradients.scss(1 hunks)resources/bootstrap/scss/mixins/_grid-framework.scss(0 hunks)resources/bootstrap/scss/mixins/_grid.scss(2 hunks)resources/bootstrap/scss/mixins/_hover.scss(0 hunks)resources/bootstrap/scss/mixins/_image.scss(1 hunks)
⛔ Files not processed due to max files limit (36)
- resources/bootstrap/scss/mixins/_list-group.scss
- resources/bootstrap/scss/mixins/_lists.scss
- resources/bootstrap/scss/mixins/_nav-divider.scss
- resources/bootstrap/scss/mixins/_pagination.scss
- resources/bootstrap/scss/mixins/_reset-text.scss
- resources/bootstrap/scss/mixins/_screen-reader.scss
- resources/bootstrap/scss/mixins/_size.scss
- resources/bootstrap/scss/mixins/_table-row.scss
- resources/bootstrap/scss/mixins/_table-variants.scss
- resources/bootstrap/scss/mixins/_text-emphasis.scss
- resources/bootstrap/scss/mixins/_text-hide.scss
- resources/bootstrap/scss/mixins/_transition.scss
- resources/bootstrap/scss/mixins/_utilities.scss
- resources/bootstrap/scss/mixins/_visibility.scss
- resources/bootstrap/scss/mixins/_visually-hidden.scss
- resources/bootstrap/scss/utilities/_align.scss
- resources/bootstrap/scss/utilities/_api.scss
- resources/bootstrap/scss/utilities/_background.scss
- resources/bootstrap/scss/utilities/_borders.scss
- resources/bootstrap/scss/utilities/_display.scss
- resources/bootstrap/scss/utilities/_embed.scss
- resources/bootstrap/scss/utilities/_flex.scss
- resources/bootstrap/scss/utilities/_float.scss
- resources/bootstrap/scss/utilities/_interactions.scss
- resources/bootstrap/scss/utilities/_overflow.scss
- resources/bootstrap/scss/utilities/_position.scss
- resources/bootstrap/scss/utilities/_screenreaders.scss
- resources/bootstrap/scss/utilities/_shadows.scss
- resources/bootstrap/scss/utilities/_sizing.scss
- resources/bootstrap/scss/utilities/_spacing.scss
- resources/bootstrap/scss/utilities/_stretched-link.scss
- resources/bootstrap/scss/utilities/_text.scss
- resources/bootstrap/scss/utilities/_visibility.scss
- resources/bootstrap/scss/vendor/_rfs.scss
- src/BootstrapManager.php
- src/Definition/V5ModuleDefinition.php
💤 Files with no reviewable changes (25)
- resources/bootstrap/scss/_media.scss
- resources/bootstrap/scss/mixins/_background-variant.scss
- resources/bootstrap/scss/mixins/_grid-framework.scss
- resources/bootstrap/js/util.js
- resources/bootstrap/scss/_code.scss
- resources/bootstrap/js/button.js
- resources/bootstrap/js/alert.js
- resources/bootstrap/scss/_custom-forms.scss
- resources/bootstrap/scss/mixins/_badge.scss
- resources/bootstrap/js/popper.js
- resources/bootstrap/scss/mixins/_float.scss
- resources/bootstrap/js/scrollspy.js
- resources/bootstrap/js/tooltip.js
- resources/bootstrap/scss/_print.scss
- resources/bootstrap/js/popover.js
- resources/bootstrap/js/dropdown.js
- resources/bootstrap/js/carousel.js
- resources/bootstrap/scss/mixins/_hover.scss
- resources/bootstrap/scss/_input-group.scss
- resources/bootstrap/js/index.js
- resources/bootstrap/js/tab.js
- resources/bootstrap/scss/_jumbotron.scss
- resources/bootstrap/js/collapse.js
- resources/bootstrap/js/modal.js
- resources/bootstrap/js/toast.js
Initial implementation for #67
Bootstrap Examples using https://github.com/malberts/BootstrapExamples, with standalone Bootstrap in LocalSettings (not using Chameleon):
There might be some visual anomalies caused by either MediaWiki CSS or the example HTML itself. However, this generally looks fine and JS is loaded (e.g. dropdowns, close button, accordion, offcanvas).
Summary by CodeRabbit
New Features
Chores
✏️ Tip: You can customize this high-level summary in your review settings.