Skip to content
This repository was archived by the owner on Jan 5, 2024. It is now read-only.

Commit fed429a

Browse files
authored
fix(TPopup): 修复闪动显示的问题 (#254)
2 parents 513df57 + 526645b commit fed429a

10 files changed

Lines changed: 101 additions & 141 deletions

File tree

doc/TDesign.Docs.ServerSide/TDesign.xml

Lines changed: 18 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

doc/TDesign.Docs.Shared/Pages/TestPage.razor

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,7 @@
22
@using Test=TDesign.Docs.Shared.Pages.Components.Data.TablePage
33
@layout EmptyLayout
44

5-
<TTable TItem="Test.User" Data="DataSource<Test.User>.Parse(Test.Mock)" Pagination RowSelection>
6-
<TTableExpandColumn Header="asd" Field="@nameof(Test.User.Id)">
7-
名字: @context?.Name
8-
</TTableExpandColumn>
9-
<TTableFieldColumn Field="@nameof(Test.User.Id)" Header="编号" />
10-
<TTableFieldColumn Field="@nameof(Test.User.Name)" />
11-
<TTableFieldColumn Field="@nameof(Test.User.Age)" Header="年龄" />
12-
<TTableFieldColumn Header="性别">
13-
@if (context is not null)
14-
{
15-
if (context.Gender)
16-
{
17-
<TTag Theme="Theme.Primary"></TTag>
18-
}
19-
else
20-
{
21-
<TTag Theme="Theme.Danger">女</TTag>
22-
}
23-
}
24-
</TTableFieldColumn>
25-
</TTable>
265

27-
28-
@*<TTable TItem="Test.User" Data="DataSource<Test.User>.Parse(Test.Mock)" Pagination RowSelection>
29-
<TTableCheckboxColumn Field="@nameof(Test.User.Id)" Header="选择"/>
30-
<TTableFieldColumn Field="@nameof(Test.User.Id)" Header="编号"/>
31-
<TTableFieldColumn Field="@nameof(Test.User.Name)" Header="姓名" />
32-
<TTableFieldColumn Field="@nameof(Test.User.Age)" Header="年龄" />
33-
</TTable>*@
6+
<TPopup Content="Hello" Placement="PopupPlacement.Right">
7+
<TButton>Submit</TButton>
8+
</TPopup>

doc/TDesign.Docs.WebAssembly/wwwroot/TDesign.xml

Lines changed: 18 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/TDesign/Components/Popup/Popper.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,17 @@ namespace TDesign;
77
/// </summary>
88
public class Popper : IAsyncDisposable
99
{
10+
private readonly IJSObjectReference _tdesignJsObj;
1011
private readonly IJSObjectReference? _popper;
1112
private readonly PopperOptions? _options;
1213

1314

1415
/// <summary>
1516
/// Initializes a new instance of the <see cref="Popper"/> class.
1617
/// </summary>
17-
internal Popper(IJSObjectReference popper, PopperOptions options)
18+
internal Popper(IJSObjectReference tdesignJsObj, IJSObjectReference popper, PopperOptions options)
1819
{
20+
_tdesignJsObj = tdesignJsObj;
1921
this._popper = popper;
2022
this._options = options;
2123
}
@@ -49,9 +51,9 @@ public ValueTask ForceUpdateAsync()
4951
/// <summary>
5052
/// 销毁实例。
5153
/// </summary>
52-
public ValueTask DestroyAsync()
54+
public ValueTask HideAsync(ElementReference? popupElement)
5355
{
54-
return _popper!.InvokeVoidAsync("destroy");
56+
return _tdesignJsObj!.InvokeVoidAsync("popup.hide", _popper,popupElement, _options);
5557
}
5658

5759
/// <inheritdoc/>
@@ -60,7 +62,6 @@ public async ValueTask DisposeAsync()
6062
if ( _popper is not null )
6163
{
6264
await _popper.DisposeAsync();
63-
await DisposeAsync();
6465
}
6566
}
6667
}

src/TDesign/Components/Popup/PopperExtensions.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ public static class PopperExtensions
1515
/// <param name="options">Popup的配置。</param>
1616
public static async ValueTask<Popper> InvokePopupAsync(this IJSRuntime js, ElementReference selectorRef, ElementReference popupRef, PopperOptions options)
1717
{
18-
var jsObject = await js.ImportScriptAsync();
19-
var popperObject = await jsObject.InvokeAsync<IJSObjectReference>("popup.create", selectorRef, popupRef, options, DotNetObjectReference.Create(options));
18+
var tdesignJsObj = await js.ImportTDesignScriptAsync();
19+
var popperObject = await tdesignJsObj.InvokeAsync<IJSObjectReference>("popup.show", selectorRef, popupRef, options, DotNetObjectReference.Create(options));
2020

21-
return new (popperObject, options);
21+
return new (tdesignJsObj,popperObject, options);
2222
}
2323
}

src/TDesign/Components/Popup/PopperOptions.cs

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,17 @@ public class PopperOptions
1515
[JsonPropertyName("placement")]
1616
public PopupPlacement Placement { get; set; } = PopupPlacement.Auto;
1717

18-
///// <summary>
19-
///// 获取或设置修饰符集合。
20-
///// </summary>
21-
//[JsonPropertyName("modifiers")]
22-
//public PopperModifier[]? Modifiers { get; set; }
23-
2418
/// <summary>
2519
/// 获取或设置要使用的定位策略。
2620
/// </summary>
2721
[JsonConverter(typeof(EnumDescriptionConverter<PopperStrategy>))]
2822
[JsonPropertyName("strategy")]
2923
public PopperStrategy Strategy { get; set; } = PopperStrategy.Absolute;
24+
/// <summary>
25+
/// 获取或设置显示或隐藏弹出层的延迟时间,单位毫秒。默认 400 毫秒。
26+
/// </summary>
27+
[JsonPropertyName("timeout")]
28+
public int Timeout { get; set; } = 400;
3029

3130
[JsonIgnore]
3231
public Action<PopperState>? OnFirstUpdate { get; set; }
@@ -35,21 +34,14 @@ public class PopperOptions
3534
public void InvokeOnFirstUpdate(PopperState state) => OnFirstUpdate?.Invoke(state);
3635
}
3736

38-
/// <summary>
39-
/// Popup 修饰者。
40-
/// </summary>
41-
public class PopperModifier
42-
{
43-
public string Name { get; init; }
44-
public bool Enabled { get; set; }
45-
public object? Options { get; set; }
46-
}
47-
4837
/// <summary>
4938
/// Popup 状态。
5039
/// </summary>
5140
public class PopperState
5241
{
42+
/// <summary>
43+
/// 弹出层的位置。
44+
/// </summary>
5345
[JsonConverter(typeof(EnumDescriptionConverter<PopupPlacement>))]
5446
[JsonPropertyName("placement")]
5547
public PopupPlacement Placement { get; set; }

0 commit comments

Comments
 (0)