Skip to content

Commit 77c4327

Browse files
authored
disable validate() when disabled (#78)
1 parent 55e198e commit 77c4327

File tree

4 files changed

+31
-0
lines changed

4 files changed

+31
-0
lines changed

src/fieldState.spec.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,17 @@ describe('FieldState validation', () => {
296296
expect(state.hasError).toBe(false)
297297
expect(state.error).toBeUndefined()
298298

299+
runInAction(() => options.disabled = false)
300+
301+
await delay()
302+
expect(state.validating).toBe(false)
303+
expect(state.validated).toBe(false)
304+
expect(state.hasError).toBe(false)
305+
expect(state.error).toBeUndefined()
306+
307+
runInAction(() => options.disabled = true)
308+
309+
await delay()
299310
state.onChange('123')
300311
await delay()
301312
state.onChange('')

src/formState.spec.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,18 @@ describe('FormState (mode: object) validation', () => {
559559
expect(state.ownError).toBeUndefined()
560560
expect(state.error).toBeUndefined()
561561

562+
options.updateDisabled(false)
563+
564+
await delay()
565+
expect(state.validating).toBe(false)
566+
expect(state.validated).toBe(false)
567+
expect(state.hasError).toBe(false)
568+
expect(state.error).toBeUndefined()
569+
570+
options.updateDisabled(true)
571+
572+
await delay()
573+
562574
state.$.foo.onChange('')
563575
await state.validate()
564576
expect(state.hasOwnError).toBe(false)

src/formState.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ abstract class AbstractFormState<T, V> extends ValidatableState<V> implements IS
6767
}
6868

6969
override async validate(): Promise<ValidateResult<V>> {
70+
if (this.disabled) {
71+
return this.validateResult
72+
}
73+
7074
await Promise.all([
7175
...this.childStates.map(
7276
state => state.validate()

src/state.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,10 @@ export abstract class ValidatableState<V> extends BaseState implements IState<V>
117117
}
118118

119119
async validate(): Promise<ValidateResult<V>> {
120+
if (this.disabled) {
121+
return this.validateResult
122+
}
123+
120124
const validation = this.validation
121125

122126
action('activate-when-validate', () => {

0 commit comments

Comments
 (0)