diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index 9ae22be4874b25d1dad0d0a659bdc663f005ecf6..2b9f4153b784d710cb621d303b6b9ed66a3e4086 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@ - 6.11.11 + 6.11.12 diff --git a/src/BootstrapBlazor/Components/Select/MultiSelect.razor b/src/BootstrapBlazor/Components/Select/MultiSelect.razor index b96f8668cb62e701a6350e1b3b9ccf9f6c958e14..62c434b5fd9927a8c1eade706a2c52c76ee60e99 100644 --- a/src/BootstrapBlazor/Components/Select/MultiSelect.razor +++ b/src/BootstrapBlazor/Components/Select/MultiSelect.razor @@ -6,8 +6,8 @@ { } -
-
+
+
@PlaceHolder
@foreach (var item in SelectedItems) diff --git a/src/BootstrapBlazor/Components/Select/MultiSelect.razor.cs b/src/BootstrapBlazor/Components/Select/MultiSelect.razor.cs index 86a3330917540bafcb7ca9b95576fc40fba36ed7..3528ee02cc272a7ddc1cdf5c122b5decf0113545 100644 --- a/src/BootstrapBlazor/Components/Select/MultiSelect.razor.cs +++ b/src/BootstrapBlazor/Components/Select/MultiSelect.razor.cs @@ -10,10 +10,9 @@ namespace BootstrapBlazor.Components; /// /// MultiSelect 组件 /// +[JSModuleAutoLoader("multi-select")] public partial class MultiSelect { - private ElementReference SelectElement { get; set; } - [NotNull] private List? DataSource { get; set; } @@ -363,18 +362,4 @@ public partial class MultiSelect DataSource = Items.ToList(); } - - /// - /// Dispose 方法 - /// - /// - protected override async ValueTask DisposeAsync(bool disposing) - { - await base.DisposeAsync(disposing); - - if (IsPopover && disposing) - { - await JSRuntime.InvokeVoidAsync(SelectElement, "bb_multi_select", "dispose"); - } - } } diff --git a/src/BootstrapBlazor/wwwroot/modules/base/base-dropdown.js b/src/BootstrapBlazor/wwwroot/modules/base/base-dropdown.js index be2abb8a8c9d47fa8e85d90472791954d4b2c629..54512e1820d1e9eca367adffd4f75d0f24eaa222 100644 --- a/src/BootstrapBlazor/wwwroot/modules/base/base-dropdown.js +++ b/src/BootstrapBlazor/wwwroot/modules/base/base-dropdown.js @@ -98,7 +98,11 @@ export class DropdownBase extends BlazorComponent { EventHandler.on(this._element, 'inserted.bs.popover', insertedPopover) EventHandler.on(this._element, 'hide.bs.popover', hidePopover) EventHandler.on(this._element, 'click', this._config.toggleClass, active) - EventHandler.on(this._toggleMenu, 'click', '.dropdown-item', () => this.hide()) + EventHandler.on(this._toggleMenu, 'click', '.dropdown-item', e => { + if (this._popover._config.autoClose !== 'outside') { + this.hide() + } + }) if (!window.bb_dropdown) { window.bb_dropdown = true diff --git a/src/BootstrapBlazor/wwwroot/modules/dropdown.js b/src/BootstrapBlazor/wwwroot/modules/dropdown.js index 2b280617bd9fcb5180772c82f9133ffff44a6d51..736dbdc7d9221383691f6200cf6097eb9de499d4 100644 --- a/src/BootstrapBlazor/wwwroot/modules/dropdown.js +++ b/src/BootstrapBlazor/wwwroot/modules/dropdown.js @@ -3,14 +3,18 @@ import EventHandler from "./base/event-handler.js" export class Dropdown extends DropdownBase { _setListeners() { - EventHandler.on(this._toggleMenu, 'click', this._config.dismiss, () => { - this.hide() - }) + if (this._config.dismiss) { + EventHandler.on(this._toggleMenu, 'click', this._config.dismiss, () => { + this.hide() + }) + } super._setListeners() } _dispose() { - EventHandler.off(this._toggleMenu, 'click', this._config.dismiss) + if (this._config.dismiss) { + EventHandler.off(this._toggleMenu, 'click', this._config.dismiss) + } super._dispose(); } } diff --git a/src/BootstrapBlazor/wwwroot/modules/multi-select.js b/src/BootstrapBlazor/wwwroot/modules/multi-select.js new file mode 100644 index 0000000000000000000000000000000000000000..a032b2aab7176b9da0aa148220a6283b1ee3092f --- /dev/null +++ b/src/BootstrapBlazor/wwwroot/modules/multi-select.js @@ -0,0 +1,8 @@ +import { Dropdown } from "./dropdown.js" +import { isDisabled } from "./base/index.js" + +export class MultiSelect extends Dropdown { + _isDisabled() { + return isDisabled(this._toggle) + } +}