Skip to content

Conversation

@ArgoZhang
Copy link
Member

@ArgoZhang ArgoZhang commented Mar 19, 2025

Link issues

fixes #5661

Summary By Copilot

This pull request includes several changes to the MultiSelect component in the BootstrapBlazor project. The changes mainly focus on renaming and updating icon properties, as well as updating related tests.

Icon Property Updates:

Enum and Icon Mapping Updates:

  • src/BootstrapBlazor/Enums/ComponentIcons.cs: Renamed MultiSelectClearIcon to MultiSelectCloseIcon and MultiSelectClearableIcon to MultiSelectClearIcon.
  • Updated icon mappings in BootstrapIcons, FontAwesomeIcons, and MaterialDesignIcons to reflect the new icon names. [1] [2] [3]

Version Update:

Test Updates:

Regression?

  • Yes
  • No

Risk

  • High
  • Medium
  • Low

Verification

  • Manual (required)
  • Automated

Packaging changes reviewed?

  • Yes
  • No
  • N/A

☑️ Self Check before Merge

⚠️ Please check all items below before review. ⚠️

  • Doc is updated/provided or not needed
  • Demo is updated/provided or not needed
  • Merge the latest code from the main branch

Summary by Sourcery

Adds a CloseButtonIcon parameter to the MultiSelect component, allowing customization of the close button icon. Also renames ClearableIcon to ClearIcon and updates related icon mappings and tests.

Enhancements:

  • Renames ClearableIcon to ClearIcon to better reflect its purpose.
  • Updates icon mappings in BootstrapIcons, FontAwesomeIcons, and MaterialDesignIcons to reflect the new icon names.
  • Sets default values for CloseButtonIcon and ClearIcon using the IconTheme.
  • Updates tests to reflect the changes in icon properties, including renaming ClearableIcon to ClearIcon and modifying item selection logic.
  • Renames MultiSelectClearIcon to MultiSelectCloseIcon in ComponentIcons enum.
  • Removes the ClearableIcon parameter from the MultiSelect component.

@bb-auto bb-auto bot added the enhancement New feature or request label Mar 19, 2025
@sourcery-ai
Copy link
Contributor

sourcery-ai bot commented Mar 19, 2025

Reviewer's Guide by Sourcery

This pull request introduces a new CloseButtonIcon parameter to the MultiSelect component, allowing customization of the close button icon. It also renames some icon-related enum values and updates the corresponding icon mappings in BootstrapIcons, FontAwesomeIcons, and MaterialDesignIcons. The tests have been updated to reflect these changes.

Updated class diagram for the ComponentIcons enum

classDiagram
  class ComponentIcons {
    <<enumeration>>
    MultiSelectDropdownIcon
    MultiSelectCloseIcon
    MultiSelectClearIcon
  }
  note for ComponentIcons "Renamed MultiSelectClearIcon to MultiSelectCloseIcon and MultiSelectClearableIcon to MultiSelectClearIcon"
Loading

File-Level Changes

Change Details Files
Introduced a new CloseButtonIcon parameter and removed the ClearableIcon parameter in the MultiSelect component.
  • Added CloseButtonIcon parameter to allow customization of the close button icon.
  • Removed the ClearableIcon parameter.
  • Updated OnParametersSet to set default values for CloseButtonIcon.
src/BootstrapBlazor/Components/Select/MultiSelect.razor.cs
Renamed and updated icon-related enum values in ComponentIcons.cs.
  • Renamed MultiSelectClearIcon to MultiSelectCloseIcon.
  • Renamed MultiSelectClearableIcon to MultiSelectClearIcon.
src/BootstrapBlazor/Enums/ComponentIcons.cs
Updated icon mappings in BootstrapIcons, FontAwesomeIcons, and MaterialDesignIcons to reflect the new icon names.
  • Updated BootstrapIcons to use the new icon names.
  • Updated FontAwesomeIcons to use the new icon names.
  • Updated MaterialDesignIcons to use the new icon names.
src/BootstrapBlazor/Icons/BootstrapIcons.cs
src/BootstrapBlazor/Icons/FontAwesomeIcons.cs
src/BootstrapBlazor/Icons/MaterialDesignIcons.cs
Updated the MultiSelect razor file to use the new CloseButtonIcon and ClearIcon.
  • Replaced ClearIcon with CloseButtonIcon in the DynamicElement.
  • Updated the clearable icon reference to use the new ClearIcon.
src/BootstrapBlazor/Components/Select/MultiSelect.razor
Updated tests to reflect the changes in icon properties.
  • Renamed ClearableIcon to ClearIcon in tests.
  • Modified item selection logic in tests.
test/UnitTest/Components/MultiSelectTest.cs

Assessment against linked issues

Issue Objective Addressed Explanation
#5661 Add a CloseButtonIcon parameter to the MultiSelect component to allow customization of the close button icon.

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!
  • Generate a plan of action for an issue: Comment @sourcery-ai plan on
    an issue to generate a plan of action for it.

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

@bb-auto bb-auto bot added this to the v9.4.0 milestone Mar 19, 2025
@ArgoZhang ArgoZhang merged commit eee7114 into main Mar 19, 2025
4 checks passed
@ArgoZhang ArgoZhang deleted the refactor-multi branch March 19, 2025 08:10
Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @ArgoZhang - I've reviewed your changes - here's some feedback:

Overall Comments:

  • The enum ComponentIcons.cs has both MultiSelectCloseIcon and MultiSelectClearIcon, but the component only uses CloseButtonIcon and ClearIcon - should the enum be simplified?
  • Consider if ShowCloseButton should be enabled by default.
Here's what I looked at during the review
  • 🟡 General issues: 1 issue found
  • 🟢 Security: all looks good
  • 🟡 Testing: 1 issue found
  • 🟢 Complexity: all looks good
  • 🟢 Documentation: all looks good

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment on lines +59 to +63
/// <summary>
/// 获得/设置 关闭按钮图标 默认为 null
/// </summary>
[Parameter]
public string? CloseButtonIcon { get; set; }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion: Consider aligning the nullability annotations for the new CloseButtonIcon parameter.

Other icon parameters in the component use a [NotNull] annotation. Assess if CloseButtonIcon should be annotated similarly or if its nullability is intentional.

Suggested change
/// <summary>
/// 获得/设置 关闭按钮图标 默认为 null
/// </summary>
[Parameter]
public string? CloseButtonIcon { get; set; }
/// <summary>
/// 获得/设置 关闭按钮图标 默认为 string.Empty
/// </summary>
[Parameter]
[NotNull]
public string CloseButtonIcon { get; set; } = "";

cut.SetParametersAndRender(pb =>
{
pb.Add(a => a.ClearableIcon, "icon-clear-test");
pb.Add(a => a.ClearIcon, "icon-clear-test");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion (testing): Add test for CloseButtonIcon

Since this PR introduces a new CloseButtonIcon parameter, it's important to add a dedicated test case for it, similar to the existing ClearIcon_Ok test. This ensures that the new parameter functions as expected and doesn't introduce regressions.

@codecov
Copy link

codecov bot commented Mar 19, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 100.00%. Comparing base (e713719) to head (b0db74e).
Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #5662   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          654       654           
  Lines        29542     29542           
  Branches      4204      4204           
=========================================
  Hits         29542     29542           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(MultiSelect): add CloseButtonIcon parameter

2 participants