Skip to content

Commit 3691142

Browse files
committed
fix(form) Text array fields controlled by a directive are not expected to have {x:value} objects.
1 parent d9053be commit 3691142

File tree

4 files changed

+5954
-25
lines changed

4 files changed

+5954
-25
lines changed

dist/forms-angular.js

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,20 @@ var fng;
159159
var locals = {}, addThis;
160160
controllerName += 'Ctrl';
161161
locals.$scope = $data.modelControllers[level] = $scope.$new();
162+
var addMenuOptions = function (array) {
163+
angular.forEach(array, function (value) {
164+
if (value.divider) {
165+
needDivider = true;
166+
}
167+
else if (value[addThis]) {
168+
if (needDivider) {
169+
needDivider = false;
170+
$scope.items.push({ divider: true });
171+
}
172+
$scope.items.push(value);
173+
}
174+
});
175+
};
162176
try {
163177
$controller(controllerName, locals);
164178
if ($scope.routing.newRecord) {
@@ -171,18 +185,10 @@ var fng;
171185
addThis = 'listing';
172186
}
173187
if (angular.isObject(locals.$scope.contextMenu)) {
174-
angular.forEach(locals.$scope.contextMenu, function (value) {
175-
if (value.divider) {
176-
needDivider = true;
177-
}
178-
else if (value[addThis]) {
179-
if (needDivider) {
180-
needDivider = false;
181-
$scope.items.push({ divider: true });
182-
}
183-
$scope.items.push(value);
184-
}
185-
});
188+
addMenuOptions(locals.$scope.contextMenu);
189+
if (locals.$scope.contextMenuPromise) {
190+
locals.$scope.contextMenuPromise.then(function (array) { return addMenuOptions(array); });
191+
}
186192
}
187193
}
188194
catch (error) {
@@ -2720,7 +2726,7 @@ var fng;
27202726
if (listSchema === void 0) { listSchema = null; }
27212727
var nests = fieldName.split('.');
27222728
for (var i = 0; i < nests.length; i++) {
2723-
if (record !== undefined && record !== null) {
2729+
if (record !== undefined && record !== null && nests && nests[i]) {
27242730
record = record[nests[i]];
27252731
}
27262732
}
@@ -2775,11 +2781,13 @@ var fng;
27752781
}
27762782
var simpleArrayNeedsX = function (aSchema) {
27772783
var result = false;
2778-
if (aSchema.type === 'text') {
2779-
result = true;
2780-
}
2781-
else if (aSchema.needsX || ((aSchema.type === 'select') && !aSchema.ids && !aSchema.directive)) {
2782-
result = true;
2784+
if (!aSchema.directive) {
2785+
if (aSchema.type === 'text') {
2786+
result = true;
2787+
}
2788+
else if (aSchema.needsX || ((aSchema.type === 'select') && !aSchema.ids)) {
2789+
result = true;
2790+
}
27832791
}
27842792
return result;
27852793
};

dist/forms-angular.min.js

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

js/services/record-handler.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ module fng.services {
119119
var getListData = function getListData(record, fieldName, listSchema=null) {
120120
var nests = fieldName.split('.');
121121
for (var i = 0; i < nests.length; i++) {
122-
if (record !== undefined && record !== null) {
122+
if (record !== undefined && record !== null && nests && nests[i]) {
123123
record = record[nests[i]];
124124
}
125125
}
@@ -178,10 +178,12 @@ module fng.services {
178178

179179
var simpleArrayNeedsX = function (aSchema) {
180180
var result = false;
181-
if (aSchema.type === 'text') {
182-
result = true;
183-
} else if (aSchema.needsX || ((aSchema.type === 'select') && !aSchema.ids && !aSchema.directive)) {
184-
result = true;
181+
if (!aSchema.directive) {
182+
if (aSchema.type === 'text') {
183+
result = true;
184+
} else if (aSchema.needsX || ((aSchema.type === 'select') && !aSchema.ids)) {
185+
result = true;
186+
}
185187
}
186188
return result;
187189
};

0 commit comments

Comments
 (0)