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

Commit c01a4de

Browse files
committed
v8.3.0
2 parents 56ecbf5 + f2d7bc9 commit c01a4de

File tree

6 files changed

+71
-15
lines changed

6 files changed

+71
-15
lines changed

dist/formly.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*!
2-
* angular-formly JavaScript Library v8.2.1
2+
* angular-formly JavaScript Library v8.3.0
33
*
44
* @license MIT (http://license.angular-formly.com)
55
*
@@ -157,7 +157,7 @@ return /******/ (function(modules) { // webpackBootstrap
157157

158158
ngModule.constant('formlyApiCheck', _providersFormlyApiCheck2['default']);
159159
ngModule.constant('formlyErrorAndWarningsUrlPrefix', _otherDocsBaseUrl2['default']);
160-
ngModule.constant('formlyVersion', ("8.2.1")); // <-- webpack variable
160+
ngModule.constant('formlyVersion', ("8.3.0")); // <-- webpack variable
161161

162162
ngModule.provider('formlyUsability', _providersFormlyUsability2['default']);
163163
ngModule.provider('formlyConfig', _providersFormlyConfig2['default']);
@@ -435,7 +435,7 @@ return /******/ (function(modules) { // webpackBootstrap
435435
Object.defineProperty(exports, "__esModule", {
436436
value: true
437437
});
438-
exports["default"] = "https://github.com/formly-js/angular-formly/blob/" + ("8.2.1") + "/other/ERRORS_AND_WARNINGS.md#";
438+
exports["default"] = "https://github.com/formly-js/angular-formly/blob/" + ("8.3.0") + "/other/ERRORS_AND_WARNINGS.md#";
439439
module.exports = exports["default"];
440440

441441
/***/ },
@@ -1273,18 +1273,24 @@ return /******/ (function(modules) { // webpackBootstrap
12731273

12741274
// function definitions
12751275
function runExpressions() {
1276+
var deferred = $q.defer();
12761277
// must run on next tick to make sure that the current value is correct.
1277-
return $timeout(function runExpressionsOnNextTick() {
1278+
$timeout(function runExpressionsOnNextTick() {
1279+
var promises = [];
12781280
var field = $scope.options;
12791281
var currentValue = valueGetterSetter();
12801282
_angularFix2['default'].forEach(field.expressionProperties, function runExpression(expression, prop) {
12811283
var setter = $parse(prop).assign;
1282-
var promise = $q.when(formlyUtil.formlyEval($scope, expression, currentValue, currentValue));
1283-
promise.then(function setFieldValue(value) {
1284+
var promise = $q.when(formlyUtil.formlyEval($scope, expression, currentValue, currentValue)).then(function setFieldValue(value) {
12841285
setter(field, value);
12851286
});
1287+
promises.push(promise);
1288+
});
1289+
$q.all(promises).then(function () {
1290+
deferred.resolve();
12861291
});
12871292
}, 0, false);
1293+
return deferred.promise;
12881294
}
12891295

12901296
function watchExpressions() {

dist/formly.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/formly.min.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "angular-formly",
3-
"version": "8.2.1",
3+
"version": "8.3.0",
44
"author": "Astrism <[email protected]>",
55
"contributors": [
66
"Astrism <[email protected]>",

src/directives/formly-field.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,25 @@ function formlyField($http, $q, $compile, $templateCache, $interpolate, formlyCo
5959

6060
// function definitions
6161
function runExpressions() {
62+
const deferred = $q.defer()
6263
// must run on next tick to make sure that the current value is correct.
63-
return $timeout(function runExpressionsOnNextTick() {
64+
$timeout(function runExpressionsOnNextTick() {
65+
const promises = []
6466
const field = $scope.options
6567
const currentValue = valueGetterSetter()
6668
angular.forEach(field.expressionProperties, function runExpression(expression, prop) {
6769
const setter = $parse(prop).assign
6870
const promise = $q.when(formlyUtil.formlyEval($scope, expression, currentValue, currentValue))
69-
promise.then(function setFieldValue(value) {
70-
setter(field, value)
71-
})
71+
.then(function setFieldValue(value) {
72+
setter(field, value)
73+
})
74+
promises.push(promise)
75+
})
76+
$q.all(promises).then(function() {
77+
deferred.resolve()
7278
})
7379
}, 0, false)
80+
return deferred.promise
7481
}
7582

7683
function watchExpressions() {

src/directives/formly-form.test.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1314,4 +1314,47 @@ describe('formly-form', () => {
13141314
})
13151315
})
13161316
})
1317+
describe('extras', () => {
1318+
describe('validateOnModelChange', () => {
1319+
it('should run validators after expressions are set', () => {
1320+
let inputs, invalidInputs, el
1321+
1322+
scope.model = {
1323+
foo: null,
1324+
bar: 123,
1325+
}
1326+
1327+
scope.fields = [
1328+
{template: input, key: 'foo', extras: {validateOnModelChange: true}},
1329+
{template: input, key: 'bar', templateOptions: {type: 'number'}},
1330+
]
1331+
// First Field isn't valid when second field is 1
1332+
scope.fields[0].expressionProperties = {
1333+
'templateOptions.isValid': 'model.bar !== 1',
1334+
}
1335+
// validator to use isValid attribute
1336+
scope.fields[0].validators = {isValid: {expression: (viewValue, modelValue, fieldScope) => {
1337+
return fieldScope.to.isValid
1338+
}}}
1339+
1340+
el = compileAndDigest()
1341+
1342+
// Input state before
1343+
inputs = el[0].querySelectorAll('input')
1344+
invalidInputs = el[0].querySelectorAll('input.ng-invalid')
1345+
expect(inputs.length).to.equal(2)
1346+
expect(invalidInputs.length).to.equal(0)
1347+
1348+
// Enter '1' into second field
1349+
angular.element(inputs[1]).val(1).triggerHandler('change')
1350+
$timeout.flush()
1351+
1352+
// Input state after
1353+
inputs = el[0].querySelectorAll('input')
1354+
invalidInputs = el[0].querySelectorAll('input.ng-invalid')
1355+
expect(inputs.length).to.equal(2)
1356+
expect(invalidInputs.length).to.equal(1)
1357+
})
1358+
})
1359+
})
13171360
})

0 commit comments

Comments
 (0)