djangocms-frontend icon indicating copy to clipboard operation
djangocms-frontend copied to clipboard

chore: Use split button for menu dropdown

Open mrbazzan opened this issue 8 months ago • 2 comments

  • Update gulpfile.js to use v4 style
  • Use split button for menu dropdown

Summary by Sourcery

Apply a split-button pattern to Bootstrap 5 menu items with children and update the gulp watch task to use the gulp v4 series syntax

Enhancements:

  • Replace monolithic dropdown toggle with a split-button group for menu items that have children

Build:

  • Update gulp watch task to use gulp.series for gulp v4 compatibility

mrbazzan avatar Sep 03 '25 21:09 mrbazzan

Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

The PR refactors the Bootstrap menu template to use a split button approach for dropdowns and modernizes the Gulp watch task to Gulp v4 syntax.

Class diagram for menu dropdown template changes

classDiagram
    class Child {
      +ancestor: bool
      +children: list
      +selected: bool
      +get_absolute_url()
      +get_menu_title()
    }
    class MenuItem {
      +nav-link: string
      +active: bool
      +dropdown-toggle: bool
      +btn-group: bool
    }
    Child --> MenuItem

Flow diagram for Gulp v4 watch task update

flowchart TD
    A[Start Gulp] --> B[Run 'watch' task]
    B --> C[Watch SASS files]
    C --> D[On change, run 'sass' task using gulp.series]
    D --> E[Compile SASS]

File-Level Changes

Change Details Files
Introduce split button structure for menu dropdowns
  • Changed list item class to btn-group and removed nav-item
  • Converted the dropdown anchor to a primary link only
  • Added a separate button with dropdown-toggle classes
  • Kept the dropdown-menu invocation for child items
djangocms_frontend/templates/bootstrap5/menu.html
Migrate Gulp watch task to v4 style
  • Replaced array task reference with gulp.series call
gulpfile.js

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an issue from a review comment by replying to it. You can also reply to a review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull request title to generate a title at any time. You can also comment @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in the pull request body to generate a PR summary at any time exactly where you want it. You can also comment @sourcery-ai summary on the pull request to (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the pull request to resolve all Sourcery comments. Useful if you've already addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull request to dismiss all existing Sourcery reviews. Especially useful if you want to start fresh with a new review - don't forget to comment @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

  • Contact our support team for questions or feedback.
  • Visit our documentation for detailed guides and information.
  • Keep in touch with the Sourcery team by following us on X/Twitter, LinkedIn or GitHub.

sourcery-ai[bot] avatar Sep 03 '25 21:09 sourcery-ai[bot]

Codecov Report

:white_check_mark: All modified and coverable lines are covered by tests. :white_check_mark: Project coverage is 89.13%. Comparing base (9844b4c) to head (f3bdadc).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #307   +/-   ##
=======================================
  Coverage   89.13%   89.13%           
=======================================
  Files         124      124           
  Lines        3387     3387           
  Branches      288      288           
=======================================
  Hits         3019     3019           
  Misses        252      252           
  Partials      116      116           

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

:rocket: New features to boost your workflow:
  • :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

codecov[bot] avatar Sep 03 '25 21:09 codecov[bot]