Skip to content

Commit beb4928

Browse files
authored
Stepper: Header Click Validation (#218)
* Stepper Header Click Validation * Fix Tests
1 parent 80543c7 commit beb4928

File tree

2 files changed

+31
-36
lines changed

2 files changed

+31
-36
lines changed

CodeBeam.MudBlazor.Extensions.UnitTests/Components/StepperTests.cs

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ public async Task StepperPreventStepChangeDirectionIsForwardWhenCompletingStepOn
2424
var lastStepChangeDirection = StepChangeDirection.None;
2525
var stepper = Context.RenderComponent<MudStepper>(
2626
ComponentParameterFactory.Parameter(
27-
nameof(MudStepper.PreventStepChange),
28-
new Func<StepChangeDirection, bool>((direction) =>
27+
nameof(MudStepper.PreventStepChangeAsync),
28+
new Func<StepChangeDirection, Task<bool>>((direction) =>
2929
{
3030
lastStepChangeDirection = direction;
31-
return false;
31+
return Task.FromResult(false);
3232
})
3333
)
3434
);
@@ -50,11 +50,11 @@ public async Task StepperPreventStepChangeDirectionIsForwardWhenSkippingStepOneO
5050
var lastStepChangeDirection = StepChangeDirection.None;
5151
var stepper = Context.RenderComponent<MudStepper>(
5252
ComponentParameterFactory.Parameter(
53-
nameof(MudStepper.PreventStepChange),
54-
new Func<StepChangeDirection, bool>((direction) =>
53+
nameof(MudStepper.PreventStepChangeAsync),
54+
new Func<StepChangeDirection, Task<bool>>((direction) =>
5555
{
5656
lastStepChangeDirection = direction;
57-
return false;
57+
return Task.FromResult(false);
5858
})
5959
)
6060
);
@@ -76,11 +76,11 @@ public async Task StepperPreventStepChangeDirectionIsForwardWhenChangingFromStep
7676
var lastStepChangeDirection = StepChangeDirection.None;
7777
var stepper = Context.RenderComponent<MudStepper>(
7878
ComponentParameterFactory.Parameter(
79-
nameof(MudStepper.PreventStepChange),
80-
new Func<StepChangeDirection, bool>((direction) =>
79+
nameof(MudStepper.PreventStepChangeAsync),
80+
new Func<StepChangeDirection, Task<bool>>((direction) =>
8181
{
8282
lastStepChangeDirection = direction;
83-
return false;
83+
return Task.FromResult(false);
8484
})
8585
)
8686
);
@@ -106,11 +106,11 @@ public async Task StepperPreventStepChangeDirectionIsBackwardWhenChangingFromSte
106106
var lastStepChangeDirection = StepChangeDirection.None;
107107
var stepper = Context.RenderComponent<MudStepper>(
108108
ComponentParameterFactory.Parameter(
109-
nameof(MudStepper.PreventStepChange),
110-
new Func<StepChangeDirection, bool>((direction) =>
109+
nameof(MudStepper.PreventStepChangeAsync),
110+
new Func<StepChangeDirection, Task<bool>>((direction) =>
111111
{
112112
lastStepChangeDirection = direction;
113-
return false;
113+
return Task.FromResult(false);
114114
})
115115
)
116116
);
@@ -136,11 +136,11 @@ public async Task StepperPreventStepChangeDirectionIsNoneWhenChangingToTheSameSt
136136
var lastStepChangeDirection = StepChangeDirection.None;
137137
var stepper = Context.RenderComponent<MudStepper>(
138138
ComponentParameterFactory.Parameter(
139-
nameof(MudStepper.PreventStepChange),
140-
new Func<StepChangeDirection, bool>((direction) =>
139+
nameof(MudStepper.PreventStepChangeAsync),
140+
new Func<StepChangeDirection, Task<bool>>((direction) =>
141141
{
142142
lastStepChangeDirection = direction;
143-
return false;
143+
return Task.FromResult(false);
144144
})
145145
)
146146
);
@@ -163,11 +163,11 @@ public async Task StepperPreventStepChangeIsInvokedWhenCompletingActiveStepTest(
163163
var preventStepChangeWasInvoked = false;
164164
var stepper = Context.RenderComponent<MudStepper>(
165165
ComponentParameterFactory.Parameter(
166-
nameof(MudStepper.PreventStepChange),
167-
new Func<StepChangeDirection, bool>((direction) =>
166+
nameof(MudStepper.PreventStepChangeAsync),
167+
new Func<StepChangeDirection, Task<bool>>((direction) =>
168168
{
169169
preventStepChangeWasInvoked = true;
170-
return false;
170+
return Task.FromResult(false);
171171
})
172172
)
173173
);
@@ -193,11 +193,11 @@ public async Task StepperPreventStepChangeIsInvokedWhenSkippingActiveStepTest()
193193
var preventStepChangeWasInvoked = false;
194194
var stepper = Context.RenderComponent<MudStepper>(
195195
ComponentParameterFactory.Parameter(
196-
nameof(MudStepper.PreventStepChange),
197-
new Func<StepChangeDirection, bool>((direction) =>
196+
nameof(MudStepper.PreventStepChangeAsync),
197+
new Func<StepChangeDirection, Task<bool>>((direction) =>
198198
{
199199
preventStepChangeWasInvoked = true;
200-
return false;
200+
return Task.FromResult(false);
201201
})
202202
)
203203
);
@@ -223,11 +223,11 @@ public async Task StepperPreventStepChangeIsNotInvokedWhenCompletingNonActiveSte
223223
var preventStepChangeWasInvoked = false;
224224
var stepper = Context.RenderComponent<MudStepper>(
225225
ComponentParameterFactory.Parameter(
226-
nameof(MudStepper.PreventStepChange),
227-
new Func<StepChangeDirection, bool>((direction) =>
226+
nameof(MudStepper.PreventStepChangeAsync),
227+
new Func<StepChangeDirection, Task<bool>>((direction) =>
228228
{
229229
preventStepChangeWasInvoked = true;
230-
return false;
230+
return Task.FromResult(false);
231231
})
232232
)
233233
);
@@ -237,7 +237,7 @@ public async Task StepperPreventStepChangeIsNotInvokedWhenCompletingNonActiveSte
237237
var step1 = Context.RenderComponent<MudStep>(
238238
ComponentParameterFactory.CascadingValue(stepper.Instance)
239239
);
240-
await stepper.Instance.SetActiveIndex(step0.Instance);
240+
await stepper.Instance.SetActiveIndex(step0.Instance, skipPreventProcess: true);
241241

242242
// Act
243243
await stepper.Instance.CompleteStep(stepper.Instance.Steps.IndexOf(step1.Instance));
@@ -253,11 +253,11 @@ public async Task StepperPreventStepChangeIsNotInvokedWhenSkippingNonActiveStepT
253253
var preventStepChangeWasInvoked = false;
254254
var stepper = Context.RenderComponent<MudStepper>(
255255
ComponentParameterFactory.Parameter(
256-
nameof(MudStepper.PreventStepChange),
257-
new Func<StepChangeDirection, bool>((direction) =>
256+
nameof(MudStepper.PreventStepChangeAsync),
257+
new Func<StepChangeDirection, Task<bool>>((direction) =>
258258
{
259259
preventStepChangeWasInvoked = true;
260-
return false;
260+
return Task.FromResult(false);
261261
})
262262
)
263263
);
@@ -267,7 +267,7 @@ public async Task StepperPreventStepChangeIsNotInvokedWhenSkippingNonActiveStepT
267267
var step1 = Context.RenderComponent<MudStep>(
268268
ComponentParameterFactory.CascadingValue(stepper.Instance)
269269
);
270-
await stepper.Instance.SetActiveIndex(step0.Instance);
270+
await stepper.Instance.SetActiveIndex(step0.Instance, true);
271271

272272
// Act
273273
await stepper.Instance.SkipStep(stepper.Instance.Steps.IndexOf(step1.Instance));

CodeBeam.MudBlazor.Extensions/Components/Stepper/MudStepper.razor.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -298,14 +298,9 @@ internal void RemoveStep(MudStep step)
298298
StateHasChanged();
299299
}
300300

301-
protected internal async Task SetActiveIndex(MudStep step)
301+
protected internal async Task SetActiveIndex(MudStep step, bool skipPreventProcess = false)
302302
{
303-
if (_animate != null)
304-
{
305-
await _animate.Refresh();
306-
}
307-
ActiveIndex = Steps.IndexOf(step);
308-
await ActiveStepChanged.InvokeAsync(ActiveIndex);
303+
await SetActiveStepByIndex(Steps.IndexOf(step), skipPreventProcess: skipPreventProcess);
309304
}
310305

311306
public async Task SetActiveIndex(int count, bool firstCompleted = false, bool skipPreventProcess = false)

0 commit comments

Comments
 (0)