Skip to content
This repository was archived by the owner on Feb 22, 2018. It is now read-only.

Commit 9daaa0f

Browse files
matskomhevery
authored andcommitted
feat(forms): expose getters for submitted, valid_submit and invalid_submit
Closes #601
1 parent 634c62b commit 9daaa0f

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

lib/directive/ng_control.dart

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ abstract class NgControl implements NgDetachAware {
1717
bool _invalid;
1818
bool _touched;
1919
bool _untouched;
20+
bool _submit_valid;
2021

2122
final Scope _scope;
2223
final NgControl _parentControl;
@@ -48,12 +49,18 @@ abstract class NgControl implements NgDetachAware {
4849

4950
_onSubmit(bool valid) {
5051
if (valid) {
52+
_submit_valid = true;
5153
element.classes..add(NG_SUBMIT_VALID_CLASS)..remove(NG_SUBMIT_INVALID_CLASS);
5254
} else {
55+
_submit_valid = false;
5356
element.classes..add(NG_SUBMIT_INVALID_CLASS)..remove(NG_SUBMIT_VALID_CLASS);
5457
}
5558
}
5659

60+
get submitted => _submit_valid != null;
61+
get valid_submit => _submit_valid == true;
62+
get invalid_submit => _submit_valid == false;
63+
5764
get name => _name;
5865
set name(value) {
5966
_name = value;
@@ -184,7 +191,8 @@ abstract class NgControl implements NgDetachAware {
184191
}
185192

186193
class NgNullControl implements NgControl {
187-
var _name, _dirty, _valid, _invalid, _pristine, _element, _touched, _untouched;
194+
var _name, _dirty, _valid, _invalid, _submit_valid, _pristine, _element;
195+
var _touched, _untouched;
188196
var _controls, _scope, _parentControl, _controlName;
189197
var errors, _controlByName;
190198
dom.Element element;
@@ -199,6 +207,10 @@ class NgNullControl implements NgControl {
199207
get name => null;
200208
set name(name) {}
201209

210+
get submitted => null;
211+
get valid_submit => null;
212+
get invalid_submit => null;
213+
202214
get pristine => null;
203215
set pristine(value) {}
204216

test/directive/ng_form_spec.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,9 @@ describe('form', () {
314314
Probe probe = _.rootScope.context['i'];
315315
var model = probe.directive(NgModel);
316316

317+
expect(form.submitted).toBe(false);
318+
expect(form.valid_submit).toBe(false);
319+
expect(form.invalid_submit).toBe(false);
317320
expect(form.element.classes.contains('ng-submit-invalid')).toBe(false);
318321
expect(form.element.classes.contains('ng-submit-valid')).toBe(false);
319322

@@ -322,12 +325,18 @@ describe('form', () {
322325
form.element.dispatchEvent(submissionEvent);
323326
_.rootScope.apply();
324327

328+
expect(form.submitted).toBe(true);
329+
expect(form.valid_submit).toBe(false);
330+
expect(form.invalid_submit).toBe(true);
325331
expect(form.element.classes.contains('ng-submit-invalid')).toBe(true);
326332
expect(form.element.classes.contains('ng-submit-valid')).toBe(false);
327333

328334
_.rootScope.apply('myModel = "man"');
329335
form.element.dispatchEvent(submissionEvent);
330336

337+
expect(form.submitted).toBe(true);
338+
expect(form.valid_submit).toBe(true);
339+
expect(form.invalid_submit).toBe(false);
331340
expect(form.element.classes.contains('ng-submit-invalid')).toBe(false);
332341
expect(form.element.classes.contains('ng-submit-valid')).toBe(true);
333342
}));

0 commit comments

Comments
 (0)