From e27f2e5a55e0e61c66782d54f74f7b5d123557a8 Mon Sep 17 00:00:00 2001 From: colemanw Date: Thu, 29 Jun 2023 13:07:19 -0400 Subject: [PATCH] crmAutocomplete - Fix endless loop (again) This regressed in 65a6ae6b9228ad945b0f2dc9b80886468098555f because the comparison needs to equivocate numbers and numeric strings. Update ang/crmUi.js Co-authored-by: Rich Lott --- ang/crmUi.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ang/crmUi.js b/ang/crmUi.js index 0f3019eb0a2..718bf22b0a7 100644 --- a/ang/crmUi.js +++ b/ang/crmUi.js @@ -759,8 +759,11 @@ ctrl.ngModel.$render = function() { // Trigger change so the Select2 renders the current value, // but only if the value has actually changed (to avoid recursion) - if (!angular.equals(ctrl.ngModel.$viewValue || '', element.val())) { - element.val(ctrl.ngModel.$viewValue || '').change(); + // We need to coerce null|false in the model to '' and numbers to strings. + // We need 0 not to be equivalent to null|false|'' + const newValue = (ctrl.ngModel.$viewValue === null || ctrl.ngModel.$viewValue === undefined || ctrl.ngModel.$viewValue === false) ? '' : ctrl.ngModel.$viewValue.toString(); + if (newValue !== element.val().toString()) { + element.val(newValue).change(); } };