Skip to content

Commit 6eba547

Browse files
committed
improve rendering
1 parent ec83307 commit 6eba547

2 files changed

Lines changed: 82 additions & 41 deletions

File tree

Source/Blazorise/Components/Validation/Validation.razor.cs

Lines changed: 58 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,16 @@ public partial class Validation : ComponentBase, IValidation, IDisposable
8181
/// </summary>
8282
private BaseValidationResult validationMessageComponent;
8383

84+
/// <summary>
85+
/// Holds the current warning validation message component.
86+
/// </summary>
87+
private BaseValidationResult validationWarningMessageComponent;
88+
89+
/// <summary>
90+
/// Holds the current error validation message component.
91+
/// </summary>
92+
private BaseValidationResult validationErrorMessageComponent;
93+
8494
/// <summary>
8595
/// Define the cancellation token.
8696
/// </summary>
@@ -431,10 +441,28 @@ internal void NotifyValidationMessageInitialized( BaseValidationResult validatio
431441
if ( validationMessage is null )
432442
return;
433443

434-
if ( ReferenceEquals( validationMessageComponent, validationMessage ) )
435-
return;
444+
if ( validationMessage is ValidationWarning )
445+
{
446+
if ( ReferenceEquals( validationWarningMessageComponent, validationMessage ) )
447+
return;
448+
449+
validationWarningMessageComponent = validationMessage;
450+
}
451+
else if ( validationMessage is ValidationError )
452+
{
453+
if ( ReferenceEquals( validationErrorMessageComponent, validationMessage ) )
454+
return;
455+
456+
validationErrorMessageComponent = validationMessage;
457+
}
458+
else
459+
{
460+
if ( ReferenceEquals( validationMessageComponent, validationMessage ) )
461+
return;
462+
463+
validationMessageComponent = validationMessage;
464+
}
436465

437-
validationMessageComponent = validationMessage;
438466
ValidationMessageChanged?.Invoke();
439467
}
440468

@@ -444,11 +472,28 @@ internal void NotifyValidationMessageInitialized( BaseValidationResult validatio
444472
/// <param name="validationMessage">Validation message component.</param>
445473
internal void NotifyValidationMessageRemoved( BaseValidationResult validationMessage )
446474
{
447-
if ( !ReferenceEquals( validationMessageComponent, validationMessage ) )
448-
return;
475+
var changed = false;
449476

450-
validationMessageComponent = null;
451-
ValidationMessageChanged?.Invoke();
477+
if ( ReferenceEquals( validationWarningMessageComponent, validationMessage ) )
478+
{
479+
validationWarningMessageComponent = null;
480+
changed = true;
481+
}
482+
483+
if ( ReferenceEquals( validationErrorMessageComponent, validationMessage ) )
484+
{
485+
validationErrorMessageComponent = null;
486+
changed = true;
487+
}
488+
489+
if ( ReferenceEquals( validationMessageComponent, validationMessage ) )
490+
{
491+
validationMessageComponent = null;
492+
changed = true;
493+
}
494+
495+
if ( changed )
496+
ValidationMessageChanged?.Invoke();
452497
}
453498

454499
#endregion
@@ -471,7 +516,12 @@ internal void NotifyValidationMessageRemoved( BaseValidationResult validationMes
471516
/// <summary>
472517
/// Gets the element id of the validation message container.
473518
/// </summary>
474-
internal string ValidationMessageElementId => validationMessageComponent?.ElementId;
519+
internal string ValidationMessageElementId => Status switch
520+
{
521+
ValidationStatus.Warning => validationWarningMessageComponent?.ElementId ?? validationMessageComponent?.ElementId,
522+
ValidationStatus.Error => validationErrorMessageComponent?.ElementId ?? validationMessageComponent?.ElementId,
523+
_ => validationMessageComponent?.ElementId,
524+
};
475525

476526
/// <inheritdoc/>
477527
public FieldIdentifier FieldIdentifier => fieldIdentifier;
Lines changed: 24 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,34 @@
11
@namespace Blazorise
22
@inherits BaseValidationResult
3-
@if ( ParentValidation?.Status == ValidationStatus.Success )
3+
@if ( None is not null )
44
{
5-
@if ( Success is not null )
6-
{
7-
<ValidationSuccess Tooltip="@Tooltip">
8-
@Success
9-
</ValidationSuccess>
10-
}
5+
<ValidationNone>
6+
@None
7+
</ValidationNone>
118
}
12-
else if ( ParentValidation?.Status == ValidationStatus.Warning )
9+
@if ( Success is not null )
1310
{
14-
@if ( Warning is not null )
15-
{
16-
<ValidationWarning Multiline="@Multiline" Tooltip="@Tooltip">
17-
@Warning
18-
</ValidationWarning>
19-
}
20-
else
21-
{
22-
<ValidationWarning Multiline="@Multiline" Tooltip="@Tooltip" />
23-
}
11+
<ValidationSuccess Tooltip="@Tooltip">
12+
@Success
13+
</ValidationSuccess>
2414
}
25-
else if ( ParentValidation?.Status == ValidationStatus.Error )
15+
@if ( Warning is not null )
2616
{
27-
@if ( Error is not null )
28-
{
29-
<ValidationError Multiline="@Multiline" Tooltip="@Tooltip">
30-
@Error
31-
</ValidationError>
32-
}
33-
else
34-
{
35-
<ValidationError Multiline="@Multiline" Tooltip="@Tooltip" />
36-
}
17+
<ValidationWarning Multiline="@Multiline" Tooltip="@Tooltip">
18+
@Warning
19+
</ValidationWarning>
3720
}
38-
else if ( None is not null )
21+
else
3922
{
40-
<ValidationNone>
41-
@None
42-
</ValidationNone>
23+
<ValidationWarning Multiline="@Multiline" Tooltip="@Tooltip" />
24+
}
25+
@if ( Error is not null )
26+
{
27+
<ValidationError Multiline="@Multiline" Tooltip="@Tooltip">
28+
@Error
29+
</ValidationError>
30+
}
31+
else
32+
{
33+
<ValidationError Multiline="@Multiline" Tooltip="@Tooltip" />
4334
}

0 commit comments

Comments
 (0)