@configuratorware/configurator-admingui 1.48.7 → 1.48.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/App/Data.js +51 -10
- package/Components/FormFragments/InputArray.js +24 -9
- package/Components/FormFragments/SimpleTable.js +2 -1
- package/Screens/Item/Reducers/ItemReducer.js +18 -1
- package/Screens/Item/Translations.js +12 -6
- package/Screens/Option/Reducers/Reducer.js +18 -1
- package/package.json +3 -3
package/App/Data.js
CHANGED
|
@@ -32,6 +32,12 @@ _validate.validate.validators.emptyOrPositive = function (value, options) {
|
|
|
32
32
|
}
|
|
33
33
|
return (0, _i18n.t)('customValidators.numericality');
|
|
34
34
|
};
|
|
35
|
+
_validate.validate.validators.positiveNumber = function (value, options) {
|
|
36
|
+
if (options && !isNaN(+value) && +value > 0) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
return (0, _i18n.t)((options === null || options === void 0 ? void 0 : options.message) || 'customValidators.numericality');
|
|
40
|
+
};
|
|
35
41
|
_validate.validate.validators.numericOrEmpty = function (value, options) {
|
|
36
42
|
if (value === '' || value === null) {
|
|
37
43
|
return null;
|
|
@@ -229,7 +235,8 @@ var Data = exports["default"] = /*#__PURE__*/function () {
|
|
|
229
235
|
}, {
|
|
230
236
|
key: "validate",
|
|
231
237
|
value: function validate() {
|
|
232
|
-
var
|
|
238
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
239
|
+
var isValid = this._validator.validate(options);
|
|
233
240
|
this._trigger(Data.EventTypes.validate, {
|
|
234
241
|
isValid: isValid
|
|
235
242
|
});
|
|
@@ -304,6 +311,7 @@ var DataValidator = exports.DataValidator = /*#__PURE__*/function () {
|
|
|
304
311
|
}, {
|
|
305
312
|
key: "validate",
|
|
306
313
|
value: function validate() {
|
|
314
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
307
315
|
var isValid = true;
|
|
308
316
|
for (var prop in this._data) {
|
|
309
317
|
var dataSchema = _lodash["default"].get(this._data[prop], 'schema');
|
|
@@ -311,7 +319,10 @@ var DataValidator = exports.DataValidator = /*#__PURE__*/function () {
|
|
|
311
319
|
isValid = dataSchema.validate() && isValid;
|
|
312
320
|
}
|
|
313
321
|
}
|
|
314
|
-
|
|
322
|
+
var valueObject = options.valueObject,
|
|
323
|
+
idx = options.idx,
|
|
324
|
+
dataArr = options.dataArr;
|
|
325
|
+
isValid = validateDataObject(this._data, valueObject, idx, dataArr) && isValid;
|
|
315
326
|
this._validation.isDone = true;
|
|
316
327
|
return isValid;
|
|
317
328
|
}
|
|
@@ -334,13 +345,38 @@ var DataValidator = exports.DataValidator = /*#__PURE__*/function () {
|
|
|
334
345
|
}]);
|
|
335
346
|
return DataValidator;
|
|
336
347
|
}();
|
|
337
|
-
var
|
|
348
|
+
var prepareConstraints = function prepareConstraints() {
|
|
349
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
350
|
+
if (!options.prop.constraints) {
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
var constraints = _objectSpread({}, options.prop.constraints);
|
|
354
|
+
Object.keys(constraints).forEach(function (key) {
|
|
355
|
+
if (constraints[key].applyIf && !constraints[key].applyIf(options)) {
|
|
356
|
+
delete constraints[key];
|
|
357
|
+
}
|
|
358
|
+
});
|
|
359
|
+
return constraints;
|
|
360
|
+
};
|
|
361
|
+
var validateField = function validateField(prop, valueToValidate, idx, dataArr, dataObject) {
|
|
338
362
|
var valid = true;
|
|
339
363
|
if (prop.constraints) {
|
|
340
|
-
var
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
364
|
+
var constraints = prepareConstraints({
|
|
365
|
+
prop: prop,
|
|
366
|
+
valueToValidate: valueToValidate,
|
|
367
|
+
idx: idx,
|
|
368
|
+
dataArr: dataArr,
|
|
369
|
+
dataObject: dataObject
|
|
370
|
+
});
|
|
371
|
+
if (!constraints) {
|
|
372
|
+
return valid;
|
|
373
|
+
}
|
|
374
|
+
var result = _validate.validate.single(valueToValidate, constraints);
|
|
375
|
+
if (Number.isInteger(idx) && idx >= 0) {
|
|
376
|
+
if (result) {
|
|
377
|
+
prop.error = prop.error || [];
|
|
378
|
+
prop.error[idx] = result ? result.join(', ') : undefined;
|
|
379
|
+
}
|
|
344
380
|
} else {
|
|
345
381
|
if (result) {
|
|
346
382
|
prop.error = result.join(', ');
|
|
@@ -352,17 +388,22 @@ var validateField = function validateField(prop, valueToValidate, idx) {
|
|
|
352
388
|
}
|
|
353
389
|
return valid;
|
|
354
390
|
};
|
|
355
|
-
var validateDataObject = exports.validateDataObject = function validateDataObject(dataObject, valueObject, idx) {
|
|
391
|
+
var validateDataObject = exports.validateDataObject = function validateDataObject(dataObject, valueObject, idx, dataArr) {
|
|
356
392
|
var valid = true;
|
|
357
393
|
var _loop2 = function _loop2() {
|
|
358
394
|
var prop = dataObject[p];
|
|
395
|
+
prop.beforeValidate && prop.beforeValidate({
|
|
396
|
+
prop: prop,
|
|
397
|
+
idx: idx,
|
|
398
|
+
dataArr: dataArr
|
|
399
|
+
});
|
|
359
400
|
var valueToValidate = valueObject ? valueObject[p] : prop.value;
|
|
360
|
-
valid = validateField(prop, valueToValidate, idx) && valid;
|
|
401
|
+
valid = validateField(prop, valueToValidate, idx, dataArr || prop.value, dataObject) && valid;
|
|
361
402
|
if (prop.schema) {
|
|
362
403
|
if (_lodash["default"].isArray(prop.value)) {
|
|
363
404
|
// validate all values against the schema rules
|
|
364
405
|
prop.value.forEach(function (value, idx) {
|
|
365
|
-
valid = validateDataObject(prop.schema, value, idx) && valid;
|
|
406
|
+
valid = validateDataObject(prop.schema, value, idx, prop.value) && valid;
|
|
366
407
|
});
|
|
367
408
|
} else if (prop.value === null) {
|
|
368
409
|
// skip validation, if the value is null
|
|
@@ -72,7 +72,11 @@ var InputArray = /*#__PURE__*/function (_Component) {
|
|
|
72
72
|
updateOnly = _options$updateOnly === void 0 ? false : _options$updateOnly;
|
|
73
73
|
var selectedRow = _this.state.selectedRow;
|
|
74
74
|
var schema = _this.props.schema;
|
|
75
|
-
|
|
75
|
+
var dataArr = _this.props.value instanceof Array ? _this.props.value : undefined;
|
|
76
|
+
if (schema.validate({
|
|
77
|
+
dataArr: dataArr,
|
|
78
|
+
idx: selectedRow
|
|
79
|
+
})) {
|
|
76
80
|
var value = _lodash["default"].isArray(_this.props.value) ? _this.props.value : [];
|
|
77
81
|
var data = schema.getData();
|
|
78
82
|
var updateOnPropertyMatch = _lodash["default"].get(_this.props, 'array.updateOnPropertyMatch');
|
|
@@ -99,13 +103,18 @@ var InputArray = /*#__PURE__*/function (_Component) {
|
|
|
99
103
|
schema.reset();
|
|
100
104
|
_this.setState({
|
|
101
105
|
selectedRow: false,
|
|
102
|
-
showEditor: false
|
|
106
|
+
showEditor: false,
|
|
107
|
+
validationErrors: false
|
|
103
108
|
});
|
|
104
109
|
}
|
|
105
110
|
return true;
|
|
106
111
|
} else {
|
|
112
|
+
var validationErrors = schema.getErrors();
|
|
107
113
|
// eslint-disable-next-line no-console
|
|
108
|
-
console.error('Validation error!',
|
|
114
|
+
console.error('Validation error!', validationErrors);
|
|
115
|
+
_this.setState({
|
|
116
|
+
validationErrors: validationErrors
|
|
117
|
+
});
|
|
109
118
|
}
|
|
110
119
|
return false;
|
|
111
120
|
});
|
|
@@ -115,7 +124,8 @@ var InputArray = /*#__PURE__*/function (_Component) {
|
|
|
115
124
|
_this.setState({
|
|
116
125
|
selectedRow: false,
|
|
117
126
|
showEditor: false,
|
|
118
|
-
newItem: false
|
|
127
|
+
newItem: false,
|
|
128
|
+
validationErrors: false
|
|
119
129
|
});
|
|
120
130
|
});
|
|
121
131
|
_defineProperty(_assertThisInitialized(_this), "onDelete", function (row) {
|
|
@@ -128,7 +138,8 @@ var InputArray = /*#__PURE__*/function (_Component) {
|
|
|
128
138
|
schema.reset();
|
|
129
139
|
_this.setState({
|
|
130
140
|
selectedRow: false,
|
|
131
|
-
showEditor: false
|
|
141
|
+
showEditor: false,
|
|
142
|
+
validationErrors: false
|
|
132
143
|
});
|
|
133
144
|
});
|
|
134
145
|
_defineProperty(_assertThisInitialized(_this), "addNewItem", function () {
|
|
@@ -171,7 +182,8 @@ var InputArray = /*#__PURE__*/function (_Component) {
|
|
|
171
182
|
_this.state = {
|
|
172
183
|
showEditor: false,
|
|
173
184
|
selectedRow: false,
|
|
174
|
-
newItem: false
|
|
185
|
+
newItem: false,
|
|
186
|
+
validationErrors: false
|
|
175
187
|
};
|
|
176
188
|
return _this;
|
|
177
189
|
}
|
|
@@ -184,7 +196,8 @@ var InputArray = /*#__PURE__*/function (_Component) {
|
|
|
184
196
|
var event = _ref.event;
|
|
185
197
|
return event.active !== _this2 && _this2.setState({
|
|
186
198
|
selectedRow: false,
|
|
187
|
-
showEditor: false
|
|
199
|
+
showEditor: false,
|
|
200
|
+
validationErrors: false
|
|
188
201
|
});
|
|
189
202
|
});
|
|
190
203
|
this.props.setChangeListener(function () {
|
|
@@ -223,7 +236,6 @@ var InputArray = /*#__PURE__*/function (_Component) {
|
|
|
223
236
|
label = _this$props3.label,
|
|
224
237
|
array = _this$props3.array,
|
|
225
238
|
value = _this$props3.value,
|
|
226
|
-
errors = _this$props3.errors,
|
|
227
239
|
_this$props3$buttonsP = _this$props3.buttonsPosition,
|
|
228
240
|
buttonsPosition = _this$props3$buttonsP === void 0 ? '' : _this$props3$buttonsP,
|
|
229
241
|
_this$props3$showPopu = _this$props3.showPopup,
|
|
@@ -231,9 +243,12 @@ var InputArray = /*#__PURE__*/function (_Component) {
|
|
|
231
243
|
var fields = array.fields,
|
|
232
244
|
disableDelete = array.disableDelete,
|
|
233
245
|
disableEdit = array.disableEdit;
|
|
234
|
-
var
|
|
246
|
+
var _this$state = this.state,
|
|
247
|
+
newItem = _this$state.newItem,
|
|
248
|
+
validationErrors = _this$state.validationErrors;
|
|
235
249
|
var columns = array.columns || fields;
|
|
236
250
|
var selectedRows = this.state.selectedRow === false ? [] : [this.state.selectedRow];
|
|
251
|
+
var errors = validationErrors !== null && validationErrors !== void 0 && validationErrors.length ? validationErrors : this.props.errors;
|
|
237
252
|
return /*#__PURE__*/_react["default"].createElement("div", null, label && /*#__PURE__*/_react["default"].createElement("div", {
|
|
238
253
|
className: "label"
|
|
239
254
|
}, label), buttonsPosition === 'top' && /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -205,7 +205,8 @@ var SimpleTable = /*#__PURE__*/function (_Component) {
|
|
|
205
205
|
displayRowCheckbox: false,
|
|
206
206
|
ref: "tableBody"
|
|
207
207
|
}, data.map(function (row, index) {
|
|
208
|
-
var
|
|
208
|
+
var _this2$state$selected;
|
|
209
|
+
var style = _lodash["default"].isArray(errors) && errors.length && (_this2$state$selected = _this2.state.selectedRows) !== null && _this2$state$selected !== void 0 && _this2$state$selected.includes(index) ? {
|
|
209
210
|
background: 'red'
|
|
210
211
|
} : {};
|
|
211
212
|
return /*#__PURE__*/_react["default"].createElement(_Table.TableRow, {
|
|
@@ -55,7 +55,24 @@ var initialState = _objectSpread({}, (0, _Reducer.getDefaultEntityState)(_object
|
|
|
55
55
|
value: null
|
|
56
56
|
},
|
|
57
57
|
amountfrom: {
|
|
58
|
-
value: 0
|
|
58
|
+
value: 0,
|
|
59
|
+
beforeValidate: function beforeValidate(_ref) {
|
|
60
|
+
var prop = _ref.prop,
|
|
61
|
+
dataArr = _ref.dataArr;
|
|
62
|
+
if ((dataArr === null || dataArr === void 0 ? void 0 : dataArr.length) === 0 && !prop.value) {
|
|
63
|
+
prop.value = 1;
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
constraints: {
|
|
67
|
+
positiveNumber: {
|
|
68
|
+
message: 'item.prices.validation.amountFromRequired',
|
|
69
|
+
applyIf: function applyIf(_ref2) {
|
|
70
|
+
var dataArr = _ref2.dataArr,
|
|
71
|
+
dataObject = _ref2.dataObject;
|
|
72
|
+
return (dataArr === null || dataArr === void 0 ? void 0 : dataArr.length) && (dataObject.price.value || dataObject.priceNet.value);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
59
76
|
}
|
|
60
77
|
}
|
|
61
78
|
},
|
|
@@ -19,8 +19,8 @@ require("../../App/i18n").use({
|
|
|
19
19
|
editDialogHint: 'Use the checkboxes to select one or more entries in the list</br>and then click this icon to set the item status for them.',
|
|
20
20
|
ItemClassifications: 'Product categories',
|
|
21
21
|
visualizationData: {
|
|
22
|
-
'2d':
|
|
23
|
-
'3d':
|
|
22
|
+
'2d': '2D',
|
|
23
|
+
'3d': '3D',
|
|
24
24
|
'2doverlay': '2D image in the foreground',
|
|
25
25
|
visualizationComponent: 'Visualization component'
|
|
26
26
|
},
|
|
@@ -32,7 +32,10 @@ require("../../App/i18n").use({
|
|
|
32
32
|
item: {
|
|
33
33
|
addButtonLabel: 'Add item',
|
|
34
34
|
prices: {
|
|
35
|
-
addButtonLabel: 'Add price'
|
|
35
|
+
addButtonLabel: 'Add price',
|
|
36
|
+
validation: {
|
|
37
|
+
amountFromRequired: 'Please add an amount from value'
|
|
38
|
+
}
|
|
36
39
|
},
|
|
37
40
|
attributes: {
|
|
38
41
|
addButtonLabel: 'Add attribute',
|
|
@@ -108,8 +111,8 @@ require("../../App/i18n").use({
|
|
|
108
111
|
editDialogHint: 'Nutze die Checkboxen in der Liste und klicke dann dieses Icon,</br>um den Status für einen oder mehrere Einträge zu setzen.',
|
|
109
112
|
ItemClassifications: 'Produktkategorien',
|
|
110
113
|
visualizationData: {
|
|
111
|
-
'2d':
|
|
112
|
-
'3d':
|
|
114
|
+
'2d': '2D',
|
|
115
|
+
'3d': '3D',
|
|
113
116
|
'2doverlay': '2D, Bild im Vordergrund',
|
|
114
117
|
visualizationComponent: 'Visualisierungskomponente'
|
|
115
118
|
},
|
|
@@ -121,7 +124,10 @@ require("../../App/i18n").use({
|
|
|
121
124
|
item: {
|
|
122
125
|
addButtonLabel: 'Produkt hinzufügen',
|
|
123
126
|
prices: {
|
|
124
|
-
addButtonLabel: 'Preis hinzufügen'
|
|
127
|
+
addButtonLabel: 'Preis hinzufügen',
|
|
128
|
+
validation: {
|
|
129
|
+
amountFromRequired: 'Bitte geben Sie den Wert "Menge ab" ein'
|
|
130
|
+
}
|
|
125
131
|
},
|
|
126
132
|
attributes: {
|
|
127
133
|
addButtonLabel: 'Attribut hinzufügen',
|
|
@@ -56,7 +56,24 @@ var initialState = _objectSpread({}, (0, _Reducer.getDefaultEntityState)(_object
|
|
|
56
56
|
value: null
|
|
57
57
|
},
|
|
58
58
|
amountfrom: {
|
|
59
|
-
value: 0
|
|
59
|
+
value: 0,
|
|
60
|
+
beforeValidate: function beforeValidate(_ref) {
|
|
61
|
+
var prop = _ref.prop,
|
|
62
|
+
dataArr = _ref.dataArr;
|
|
63
|
+
if ((dataArr === null || dataArr === void 0 ? void 0 : dataArr.length) === 0 && !prop.value) {
|
|
64
|
+
prop.value = 1;
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
constraints: {
|
|
68
|
+
positiveNumber: {
|
|
69
|
+
message: 'item.prices.validation.amountFromRequired',
|
|
70
|
+
applyIf: function applyIf(_ref2) {
|
|
71
|
+
var dataArr = _ref2.dataArr,
|
|
72
|
+
dataObject = _ref2.dataObject;
|
|
73
|
+
return (dataArr === null || dataArr === void 0 ? void 0 : dataArr.length) && (dataObject.price.value || dataObject.priceNet.value);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
60
77
|
}
|
|
61
78
|
}
|
|
62
79
|
},
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@configuratorware/configurator-admingui",
|
|
3
|
-
"version": "1.48.
|
|
3
|
+
"version": "1.48.8",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"private": false,
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@babel/polyfill": "^7.12.1",
|
|
8
|
-
"@configuratorware/scripts": "1.48.
|
|
8
|
+
"@configuratorware/scripts": "1.48.8",
|
|
9
9
|
"@material-ui/core": "^3.9.4",
|
|
10
10
|
"@material-ui/icons": "^3.0.2",
|
|
11
11
|
"@tweenjs/tween.js": "^17.6.0",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"react-redux-i18n": "^1.9.3",
|
|
29
29
|
"react-router": "^3.2.6",
|
|
30
30
|
"react-sortable-hoc": "^1.11.0",
|
|
31
|
-
"redhotmagma-visualization": "1.48.
|
|
31
|
+
"redhotmagma-visualization": "1.48.8",
|
|
32
32
|
"redux": "^4.1.0",
|
|
33
33
|
"redux-logger": "^3.0.6",
|
|
34
34
|
"redux-persist": "^5.10.0",
|