@@ -10,98 +10,109 @@ namespace BootstrapBlazor.Components;
1010
1111/// <summary>
1212/// <para lang="zh">动态元素组件</para>
13- /// <para lang="en">动态元素component </para>
13+ /// <para lang="en">Dynamic element component </para>
1414/// </summary>
1515public class DynamicElement : BootstrapComponentBase
1616{
1717 /// <summary>
1818 /// <para lang="zh">获得/设置 TagName 属性 默认为 div</para>
19- /// <para lang="en">Gets or sets TagName property Default is为 div</para>
19+ /// <para lang="en">Gets or sets the TagName property. Default is div</para>
2020 /// </summary>
2121 [ Parameter ]
2222 [ NotNull ]
2323 public string ? TagName { get ; set ; } = "div" ;
2424
2525 /// <summary>
2626 /// <para lang="zh">获得/设置 是否触发 Click 事件 默认 true</para>
27- /// <para lang="en">Gets or sets whether触发 Click 事件 Default is true</para>
27+ /// <para lang="en">Gets or sets whether to trigger Click event. Default is true</para>
2828 /// </summary>
2929 [ Parameter ]
3030 public bool TriggerClick { get ; set ; } = true ;
3131
3232 /// <summary>
3333 /// <para lang="zh">获得/设置 是否阻止默认行为 默认 false</para>
34- /// <para lang="en">Gets or sets whether阻止Default is行为 Default is false</para>
34+ /// <para lang="en">Gets or sets whether to prevent default behavior. Default is false</para>
3535 /// </summary>
3636 [ Parameter ]
3737 public bool PreventDefault { get ; set ; }
3838
3939 /// <summary>
4040 /// <para lang="zh">获得/设置 是否事件冒泡 默认为 false</para>
41- /// <para lang="en">Gets or sets whether事件冒泡 Default is为 false</para>
41+ /// <para lang="en">Gets or sets whether to stop event propagation. Default is false</para>
4242 /// </summary>
4343 [ Parameter ]
4444 public bool StopPropagation { get ; set ; }
4545
4646 /// <summary>
4747 /// <para lang="zh">获得/设置 Click 回调委托</para>
48- /// <para lang="en">Gets or sets Click 回调delegate </para>
48+ /// <para lang="en">Gets or sets the Click callback delegate </para>
4949 /// </summary>
5050 [ Parameter ]
5151 public Func < Task > ? OnClick { get ; set ; }
5252
5353 /// <summary>
5454 /// <para lang="zh">获得/设置 是否触发 DoubleClick 事件 默认 true</para>
55- /// <para lang="en">Gets or sets whether触发 DoubleClick 事件 Default is true</para>
55+ /// <para lang="en">Gets or sets whether to trigger DoubleClick event. Default is true</para>
5656 /// </summary>
5757 [ Parameter ]
5858 public bool TriggerDoubleClick { get ; set ; } = true ;
5959
6060 /// <summary>
6161 /// <para lang="zh">获得/设置 DoubleClick 回调委托</para>
62- /// <para lang="en">Gets or sets DoubleClick 回调delegate </para>
62+ /// <para lang="en">Gets or sets the DoubleClick callback delegate </para>
6363 /// </summary>
6464 [ Parameter ]
6565 public Func < Task > ? OnDoubleClick { get ; set ; }
6666
6767 /// <summary>
6868 /// <para lang="zh">获得/设置 OnContextMenu 回调委托</para>
69- /// <para lang="en">Gets or sets OnContextMenu 回调delegate </para>
69+ /// <para lang="en">Gets or sets the OnContextMenu callback delegate </para>
7070 /// </summary>
7171 [ Parameter ]
7272 public Func < MouseEventArgs , Task > ? OnContextMenu { get ; set ; }
7373
7474 /// <summary>
7575 /// <para lang="zh">获得/设置 是否触发 OnContextMenu 事件 默认 false</para>
76- /// <para lang="en">Gets or sets whether触发 OnContextMenu 事件 Default is false</para>
76+ /// <para lang="en">Gets or sets whether to trigger OnContextMenu event. Default is false</para>
7777 /// </summary>
7878 [ Parameter ]
7979 public bool TriggerContextMenu { get ; set ; }
8080
8181 /// <summary>
8282 /// <para lang="zh">获得/设置 内容组件</para>
83- /// <para lang="en">Gets or sets contentcomponent </para>
83+ /// <para lang="en">Gets or sets the child content </para>
8484 /// </summary>
8585 [ Parameter ]
8686 public RenderFragment ? ChildContent { get ; set ; }
8787
8888 /// <summary>
8989 /// <para lang="zh">获得/设置 是否生成指定 Tag 元素 默认 true 生成</para>
90- /// <para lang="en">Gets or sets whether生成指定 Tag 元素 Default is true 生成 </para>
90+ /// <para lang="en">Gets or sets whether to generate the specified Tag element. Default is true</para>
9191 /// </summary>
9292 [ Parameter ]
9393 public bool GenerateElement { get ; set ; } = true ;
9494
9595 /// <summary>
96- /// <para lang="zh">BuildRenderTree 方法</para>
97- /// <para lang="en">BuildRenderTree 方法</para>
96+ /// <para lang="zh">获得/设置 元素唯一标识 Key 默认 null</para>
97+ /// <para lang="en">Gets or sets the unique key of the element. Default null</para>
98+ /// </summary>
99+ [ Parameter ]
100+ public object ? Key { get ; set ; }
101+
102+ /// <summary>
103+ /// <inheritdoc/>
98104 /// </summary>
99105 /// <param name="builder"></param>
100106 protected override void BuildRenderTree ( RenderTreeBuilder builder )
101107 {
102108 if ( GenerateElement || IsTriggerClick ( ) || IsTriggerDoubleClick ( ) )
103109 {
104110 builder . OpenElement ( 0 , TagName ) ;
111+
112+ if ( Key != null )
113+ {
114+ builder . SetKey ( Key ) ;
115+ }
105116 if ( AdditionalAttributes != null )
106117 {
107118 builder . AddMultipleAttributes ( 1 , AdditionalAttributes ) ;
@@ -111,26 +122,24 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
111122 if ( IsTriggerClick ( ) )
112123 {
113124 builder . AddAttribute ( 2 , "onclick" , EventCallback . Factory . Create < MouseEventArgs > ( this , OnTriggerClick ) ) ;
125+ builder . AddEventPreventDefaultAttribute ( 3 , "onclick" , PreventDefault ) ;
126+ builder . AddEventStopPropagationAttribute ( 4 , "onclick" , StopPropagation ) ;
114127 }
115128
116129 if ( IsTriggerDoubleClick ( ) )
117130 {
118- builder . AddAttribute ( 3 , "ondblclick" , EventCallback . Factory . Create < MouseEventArgs > ( this , OnTriggerDoubleClick ) ) ;
119- }
120-
121- if ( IsTriggerClick ( ) || IsTriggerDoubleClick ( ) )
122- {
123- builder . AddEventPreventDefaultAttribute ( 4 , "onclick" , PreventDefault ) ;
124- builder . AddEventStopPropagationAttribute ( 5 , "onclick" , StopPropagation ) ;
131+ builder . AddAttribute ( 5 , "ondblclick" , EventCallback . Factory . Create < MouseEventArgs > ( this , OnTriggerDoubleClick ) ) ;
132+ builder . AddEventPreventDefaultAttribute ( 6 , "ondblclick" , PreventDefault ) ;
133+ builder . AddEventStopPropagationAttribute ( 7 , "ondblclick" , StopPropagation ) ;
125134 }
126135
127136 if ( IsTriggerContextMenu ( ) )
128137 {
129- builder . AddAttribute ( 6 , "oncontextmenu" , EventCallback . Factory . Create < MouseEventArgs > ( this , OnTriggerContextMenu ) ) ;
130- builder . AddEventPreventDefaultAttribute ( 7 , "oncontextmenu" , true ) ;
138+ builder . AddAttribute ( 8 , "oncontextmenu" , EventCallback . Factory . Create < MouseEventArgs > ( this , OnTriggerContextMenu ) ) ;
139+ builder . AddEventPreventDefaultAttribute ( 9 , "oncontextmenu" , true ) ;
131140 }
132141
133- builder . AddContent ( 8 , ChildContent ) ;
142+ builder . AddContent ( 10 , ChildContent ) ;
134143
135144 if ( GenerateElement || IsTriggerClick ( ) || IsTriggerDoubleClick ( ) )
136145 {
0 commit comments