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

Commit 4edb676

Browse files
committed
缺少部分类
1 parent 2901e2f commit 4edb676

2 files changed

Lines changed: 162 additions & 0 deletions

File tree

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
using Microsoft.JSInterop;
2+
3+
namespace TDesign;
4+
partial class TUpload
5+
{
6+
void BuildFile(RenderTreeBuilder builder)
7+
{
8+
if ( !new[] { UploadTheme.File, UploadTheme.FileInput }.Contains(Theme) )
9+
{
10+
return;
11+
}
12+
13+
builder.Div("t-upload__single")
14+
.Class($"t-upload__{Theme.GetCssClass()}")
15+
.Content(content =>
16+
{
17+
if ( Theme == UploadTheme.FileInput )
18+
{
19+
20+
}
21+
22+
BuildTrigger(content);
23+
BuildDisplayText(content);
24+
})
25+
.Close();
26+
27+
}
28+
29+
void BuildTrigger(RenderTreeBuilder builder)
30+
{
31+
builder.Div("t-upload__trigger")
32+
.Content(button =>
33+
{
34+
button.Component<TButton>()
35+
.Attribute(m => m.Theme, ButtonTheme)
36+
.Attribute(m => m.Icon, ButtonIcon)
37+
.Attribute(m => m.Disabled, Disabled)
38+
.Attribute(m => m.OnClick, HtmlHelper.Instance.Callback().Create<MouseEventArgs>(this, async e =>
39+
{
40+
await _uploadJSModule.Module.InvokeVoidAsync("upload.showDialog", RefInputFile, JSInvokeMethodFactory.Create<IReadOnlyList<UploadFileInfo>, Task>(SelectFiles));
41+
}))
42+
.Content(Text)
43+
.Close();
44+
})
45+
.Close();
46+
}
47+
48+
/// <summary>
49+
/// 构建显示的文本。
50+
/// </summary>
51+
/// <param name="builder"></param>
52+
void BuildDisplayText(RenderTreeBuilder builder)
53+
{
54+
if ( !_fileList.Any() )
55+
{
56+
builder.Element("small", "t-upload__tips t-size-s", condition: Tip.IsNotNullOrEmpty()).Content(Tip).Close();
57+
}
58+
59+
builder.Content(FileListContent?.Invoke(_fileList));
60+
}
61+
62+
/// <summary>
63+
/// 默认的文件列表。
64+
/// </summary>
65+
/// <param name="builder"></param>
66+
/// <param name="files"></param>
67+
void DefaultFileListContent(RenderTreeBuilder builder, IReadOnlyList<UploadFileInfo> files)
68+
{
69+
foreach ( var item in files )
70+
{
71+
builder.Div("t-upload__single-display-text t-upload__display-text--margin")
72+
.Content(content =>
73+
{
74+
if ( item.Status == UploadStatus.InProgress )//上传中
75+
{
76+
BuildUploadingDisplayContent(content, item);
77+
}
78+
else
79+
{
80+
BuildUploadedDisplayContent(content, item);
81+
}
82+
})
83+
.Close();
84+
}
85+
}
86+
87+
/// <summary>
88+
/// 上传中的显示
89+
/// </summary>
90+
/// <param name="builder"></param>
91+
/// <param name="fileInfo">文件信息。</param>
92+
void BuildUploadingDisplayContent(RenderTreeBuilder builder, UploadFileInfo fileInfo)
93+
{
94+
builder.Span("t-upload__single-name").Content(fileInfo.Name).Close();
95+
builder.Div("t-upload__single-progress")
96+
.Content(loader =>
97+
{
98+
loader.Component<TLoading>().Attribute(m => m.Center, true).Close();
99+
loader.Span("t-upload__single-percent").Content($"{fileInfo.Percent}%").Close();
100+
})
101+
.Close();
102+
}
103+
104+
/// <summary>
105+
/// 上传后的显示
106+
/// </summary>
107+
/// <param name="builder"></param>
108+
/// <param name="fileInfo">文件信息。</param>
109+
void BuildUploadedDisplayContent(RenderTreeBuilder builder, UploadFileInfo fileInfo)
110+
{
111+
builder.Component<TLink>()
112+
.Attribute(m => m.Size, TDesign.Size.Small)
113+
.Attribute(m => m.Hover, LinkHover.Color)
114+
.Attribute(m => m.AdditionalClass, "t-upload__single-name")
115+
.Content(fileInfo.Name)
116+
.Close();
117+
118+
//状态图标
119+
builder.Div("t-upload__flow-status").Content(status =>
120+
{
121+
builder.Component<TIcon>(fileInfo.IsSucceed)
122+
.Attribute(m => m.Name, IconName.CheckCircleFilled)
123+
.Attribute(m => m.AdditionalClass, ICON_SUCCESS)
124+
.Close();
125+
126+
builder.Component<TIcon>(!fileInfo.IsSucceed)
127+
.Attribute(m => m.Name, IconName.InfoCircleFilled)
128+
.Attribute(m => m.AdditionalClass, ICON_FAILED)
129+
.Close();
130+
}).Close();
131+
132+
builder.Component<TIcon>(!Disabled)
133+
.Attribute(m => m.Name, IconName.Close)
134+
.Attribute(m => m.AdditionalClass, "t-upload__icon-delete")
135+
.Callback("onclick", this, () => RemoveFile(fileInfo.Id))
136+
.Close();
137+
}
138+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
namespace TDesign;
2+
partial class TUpload
3+
{
4+
/// <summary>
5+
/// 上传成功图标的颜色。
6+
/// </summary>
7+
const string ICON_SUCCESS = "t-icon-check-circle-filled";
8+
/// <summary>
9+
/// 上传失败图标的颜色。
10+
/// </summary>
11+
const string ICON_FAILED = "t-icon-error-circle-filled";
12+
/// <summary>
13+
/// 上传中的图标颜色。
14+
/// </summary>
15+
const string ICON_LOADING = "t-icon-loading";
16+
/// <summary>
17+
/// 等待上传的图标颜色。
18+
/// </summary>
19+
const string ICON_WAITING = "t-icon-time-filled";
20+
/// <summary>
21+
/// 添加图标的颜色。
22+
/// </summary>
23+
const string ICON_ADD = "t-icon-add";
24+
}

0 commit comments

Comments
 (0)