Skip to content

Commit 6040f39

Browse files
committed
MC-3723: Advanced properties saving when invalid value is specified
- abstract out method to handle object data
1 parent 9161078 commit 6040f39

File tree

1 file changed

+32
-62
lines changed

1 file changed

+32
-62
lines changed

app/code/Magento/PageBuilder/view/adminhtml/web/js/form/element/validator-rules-mixin.js

Lines changed: 32 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,37 @@ define([
4444
return (/^(http|https|ftp):\/\/(([A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))(\.[A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))*)(:(\d+))?(\/[A-Z0-9~](([A-Z0-9_~-]|\.)*[A-Z0-9~]|))*\/?(.*)?$/i).test(href)//eslint-disable-line max-len);
4545
}
4646

47+
/**
48+
* Validate field with data object
49+
* @param {Function} validator
50+
* @param {String} ruleName
51+
*/
52+
function validateObjectField(validator, ruleName) {
53+
var rule = validator.getRule(ruleName);
54+
55+
validator.addRule(
56+
ruleName,
57+
function (value, params) {
58+
var allNumbers = true;
59+
60+
if (typeof value !== 'object') {
61+
return rule.handler(value, params);
62+
}
63+
64+
_.flatten(_.map(value, _.values)).forEach(function(val) {
65+
if (!rule.handler(val, params)) {
66+
return allNumbers = false;
67+
}
68+
});
69+
70+
return allNumbers;
71+
},
72+
$.mage.__(rule.message)
73+
);
74+
}
75+
4776
return function (validator) {
4877
var requiredInputRule = validator.getRule('required-entry');
49-
var validateNumberRule = validator.getRule('validate-number');
50-
var lessThanEqualsToRule = validator.getRule('less-than-equals-to');
51-
var greaterThanEqualsToRule = validator.getRule('greater-than-equals-to');
5278

5379
validator.addRule(
5480
'required-entry-location-name',
@@ -118,65 +144,9 @@ define([
118144
$.mage.__(requiredInputRule.message)
119145
);
120146

121-
validator.addRule(
122-
'validate-number',
123-
function (value) {
124-
var allNumbers = true;
125-
126-
if (typeof value !== 'object') {
127-
return validateNumberRule.handler(value);
128-
}
129-
130-
_.flatten(_.map(value, _.values)).forEach(function(val) {
131-
if (!validateNumberRule.handler(val)) {
132-
return allNumbers = false;
133-
}
134-
});
135-
136-
return allNumbers;
137-
},
138-
$.mage.__(validateNumberRule.message)
139-
);
140-
141-
validator.addRule(
142-
'less-than-equals-to',
143-
function (value, params) {
144-
var allNumbers = true;
145-
146-
if (typeof value !== 'object') {
147-
return lessThanEqualsToRule.handler(value, params);
148-
}
149-
150-
_.flatten(_.map(value, _.values)).forEach(function(val) {
151-
if (!lessThanEqualsToRule.handler(val, params)) {
152-
return allNumbers = false;
153-
}
154-
});
155-
156-
return allNumbers;
157-
},
158-
$.mage.__(lessThanEqualsToRule.message)
159-
);
160-
161-
validator.addRule(
162-
'greater-than-equals-to',
163-
function (value, params) {
164-
var allNumbers = true;
165-
166-
if (typeof value !== 'object') {
167-
return greaterThanEqualsToRule.handler(value, params);
168-
}
169-
170-
_.flatten(_.map(value, _.values)).forEach(function(val) {
171-
if (!greaterThanEqualsToRule.handler(val, params)) {
172-
return allNumbers = false;
173-
}
174-
});
175-
176-
return allNumbers;
177-
},
178-
$.mage.__(greaterThanEqualsToRule.message)
179-
);
147+
validateObjectField(validator, 'validate-number');
148+
validateObjectField(validator, 'less-than-equals-to');
149+
validateObjectField(validator, 'greater-than-equals-to');
180150

181151
return validator;
182152
};

0 commit comments

Comments
 (0)