@configuratorware/configurator-admingui 1.40.6 → 1.41.0

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.
Files changed (39) hide show
  1. package/Components/FormFragments/Checkbox.js +6 -2
  2. package/Screens/Channel/Containers/Edit.js +8 -0
  3. package/Screens/Channel/Reducers/Reducer.js +3 -0
  4. package/Screens/Channel/Translations.js +2 -1
  5. package/Screens/Client/Components/ColorTextField.js +35 -7
  6. package/Screens/Client/Components/PdfMarkdownField.js +0 -2
  7. package/Screens/Client/Translations.js +2 -0
  8. package/Screens/Creator/Components/OptionclassificationEditor.js +89 -12
  9. package/Screens/Creator/Containers/Edit.js +9 -5
  10. package/Screens/Creator/Reducers/ConfigurationActions.js +82 -3
  11. package/Screens/Creator/Reducers/ConfigurationReducer.js +53 -1
  12. package/Screens/Creator/Translations.js +6 -2
  13. package/Screens/CurrentClient/Containers/Edit.js +3 -1
  14. package/Screens/DefaultClient/Containers/Edit.js +3 -1
  15. package/Screens/DesignProductionMethods/Containers/Edit.js +5 -1
  16. package/Screens/DesignProductionMethods/Reducers/DesignProductionMethodsReducer.js +3 -0
  17. package/Screens/DesignProductionMethods/Translations.js +4 -2
  18. package/Screens/Item/Components/Styles.scss +11 -10
  19. package/package.json +2 -2
  20. package/src/Components/Form.js +1 -1
  21. package/src/Components/FormFragments/Checkbox.js +16 -12
  22. package/src/Components/FormFragments/index.js +1 -1
  23. package/src/Screens/Channel/Containers/Edit.js +11 -0
  24. package/src/Screens/Channel/Reducers/Reducer.js +1 -0
  25. package/src/Screens/Channel/Translations.js +1 -0
  26. package/src/Screens/Client/Components/ColorTextField.js +72 -47
  27. package/src/Screens/Client/Components/PdfMarkdownField.js +1 -2
  28. package/src/Screens/Client/Translations.js +4 -0
  29. package/src/Screens/Creator/Components/OptionclassificationEditor.js +93 -17
  30. package/src/Screens/Creator/Containers/Edit.js +7 -3
  31. package/src/Screens/Creator/Reducers/ConfigurationActions.js +40 -0
  32. package/src/Screens/Creator/Reducers/ConfigurationReducer.js +57 -0
  33. package/src/Screens/Creator/Translations.js +4 -0
  34. package/src/Screens/CurrentClient/Containers/Edit.js +2 -1
  35. package/src/Screens/DefaultClient/Containers/Edit.js +2 -1
  36. package/src/Screens/DesignProductionMethods/Containers/Edit.js +17 -8
  37. package/src/Screens/DesignProductionMethods/Reducers/DesignProductionMethodsReducer.js +1 -0
  38. package/src/Screens/DesignProductionMethods/Translations.js +4 -2
  39. package/src/Screens/Item/Components/Styles.scss +11 -10
@@ -13,10 +13,12 @@ var _FormControlLabel = _interopRequireDefault(require("../../UIComponents/FormC
13
13
 
14
14
  var _ErrorWrapper = _interopRequireDefault(require("./ErrorWrapper"));
15
15
 
16
+ var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
17
+
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
19
 
18
20
  var checkbox = function checkbox(props) {
19
- return /*#__PURE__*/_react["default"].createElement(_ErrorWrapper["default"], {
21
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_ErrorWrapper["default"], {
20
22
  error: props.error
21
23
  }, /*#__PURE__*/_react["default"].createElement(_FormControlLabel["default"], {
22
24
  control: /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
@@ -27,7 +29,9 @@ var checkbox = function checkbox(props) {
27
29
  name: props.name
28
30
  }),
29
31
  label: props.label
30
- }));
32
+ })), props.helperText && /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
33
+ variant: 'caption'
34
+ }, props.helperText));
31
35
  };
32
36
 
33
37
  var _default = checkbox;
@@ -47,6 +47,14 @@ var formFields = [{
47
47
  label: 'Hide prices',
48
48
  type: 'checkbox'
49
49
  }]
50
+ }, {
51
+ name: 'settings',
52
+ type: _SimpleNestedData["default"],
53
+ fields: [{
54
+ name: 'vatrate',
55
+ label: 'VAT rate',
56
+ type: 'number'
57
+ }]
50
58
  }, {
51
59
  name: 'globalDiscountPercentage',
52
60
  label: 'discountPercentage',
@@ -39,6 +39,9 @@ var initialState = _objectSpread({}, (0, _Reducer.getDefaultEntityState)({
39
39
  schema: {
40
40
  hidePrices: {
41
41
  value: false
42
+ },
43
+ vatrate: {
44
+ value: null
42
45
  }
43
46
  }
44
47
  }
@@ -13,6 +13,7 @@ require("../../App/i18n").use({
13
13
  },
14
14
  Identifier: 'Identifier',
15
15
  Currency: 'Währung',
16
- discountPercentage: 'Prozentualer Rabatt'
16
+ discountPercentage: 'Prozentualer Rabatt',
17
+ 'VAT rate': 'Mehrwertsteuersatz'
17
18
  }
18
19
  }, true);
@@ -13,6 +13,10 @@ var _react = _interopRequireWildcard(require("react"));
13
13
 
14
14
  var _i18n = require("../../../App/i18n");
15
15
 
16
+ var _propTypes = _interopRequireDefault(require("prop-types"));
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
+
16
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
21
 
18
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -30,7 +34,8 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
30
34
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
31
35
 
32
36
  var ColorTextField = function ColorTextField(_ref) {
33
- var name = _ref.name,
37
+ var label = _ref.label,
38
+ name = _ref.name,
34
39
  value = _ref.value,
35
40
  _onChange = _ref.onChange,
36
41
  error = _ref.error;
@@ -40,9 +45,17 @@ var ColorTextField = function ColorTextField(_ref) {
40
45
  customError = _useState2[0],
41
46
  setCustomError = _useState2[1];
42
47
 
48
+ var _useState3 = (0, _react.useState)(null),
49
+ _useState4 = _slicedToArray(_useState3, 2),
50
+ customHelperText = _useState4[0],
51
+ setCustomHelperText = _useState4[1];
52
+
53
+ (0, _react.useEffect)(function () {
54
+ checkIfColorIsEqualToBackgroundColor(value);
55
+ }, [value]);
43
56
  (0, _react.useEffect)(function () {
44
57
  if (error) {
45
- if (value === "" || value === undefined) {
58
+ if (value === '' || value === undefined) {
46
59
  setCustomError(error);
47
60
  } else {
48
61
  validateColor(value);
@@ -63,13 +76,21 @@ var ColorTextField = function ColorTextField(_ref) {
63
76
 
64
77
  setCustomError(null);
65
78
  } else {
66
- setCustomError((0, _i18n.T)('themeColorError'));
79
+ setCustomError((0, _i18n.t)('themeColorError'));
67
80
  }
68
81
  }
69
82
  };
70
83
 
84
+ var checkIfColorIsEqualToBackgroundColor = function checkIfColorIsEqualToBackgroundColor(color) {
85
+ if (color.toUpperCase() === '#FFF' || color.toUpperCase() === '#FFFFFF') {
86
+ setCustomHelperText((0, _i18n.t)('highlightColorInfo'));
87
+ } else {
88
+ setCustomHelperText(null);
89
+ }
90
+ };
91
+
71
92
  return /*#__PURE__*/_react["default"].createElement(_core.TextField, {
72
- label: (0, _i18n.t)("Theme - Highlight color"),
93
+ label: label || (0, _i18n.t)('Theme - Highlight color'),
73
94
  onChange: function onChange(evt) {
74
95
  _onChange(name, evt.target.value);
75
96
  },
@@ -80,11 +101,18 @@ var ColorTextField = function ColorTextField(_ref) {
80
101
  width: '100%'
81
102
  },
82
103
  error: customError,
83
- helperText: customError,
84
- value: value || "",
85
- type: "text"
104
+ helperText: customError || customHelperText,
105
+ value: value || '',
106
+ type: 'text'
86
107
  });
87
108
  };
88
109
 
110
+ ColorTextField.propTypes = {
111
+ value: _propTypes["default"].string,
112
+ error: _propTypes["default"].node,
113
+ onChange: _propTypes["default"].func.isRequired,
114
+ label: _propTypes["default"].node,
115
+ name: _propTypes["default"].string
116
+ };
89
117
  var _default = ColorTextField;
90
118
  exports["default"] = _default;
@@ -21,8 +21,6 @@ var _FormControlLabel = _interopRequireDefault(require("../../../UIComponents/Fo
21
21
 
22
22
  var _styles = require("@material-ui/core/styles");
23
23
 
24
- var _debounce = _interopRequireDefault(require("lodash/debounce"));
25
-
26
24
  var _i18n = require("../../../App/i18n");
27
25
 
28
26
  var _ErrorWrapper = _interopRequireDefault(require("../../../Components/FormFragments/ErrorWrapper"));
@@ -17,6 +17,7 @@ require("../../App/i18n").use({
17
17
  headerInfo: 'Please check your changes in a generated pdf to make sure it looks as expected',
18
18
  footerInfo: 'Please check your changes in a generated pdf to make sure it looks as expected',
19
19
  emailHint: 'separate multiple addresses with a semicolon',
20
+ highlightColorInfo: 'Highlight color is used for highlighting elements in the frontend. Make sure you use a color value that is visible, depending on the background color in your frontend.',
20
21
  clientFontMessage: 'For the font to be rendered correctly in the configuratorware frontend, make sure the filename does not contain any spaces and matches the fonts internal name.'
21
22
  },
22
23
  de: {
@@ -49,6 +50,7 @@ require("../../App/i18n").use({
49
50
  headerInfo: 'Bitte überprüfe Deine Änderungen in einem generierten PDF',
50
51
  footerInfo: 'Bitte überprüfe Deine Änderungen in einem generierten PDF',
51
52
  emailHint: 'trenne mehrere Adressen mit einem Semikolon',
53
+ highlightColorInfo: 'Die Highlight Farbe wird genutzt um Elemente im Frontend zu unterstreichen. Benutze einen Farbwert, der auf der Hintgrundfarbe des Frontends sichtbar ist.',
52
54
  clientFontMessage: 'Für eine korrekte Darstellung der Schrift im configuratorware Fronted darf der Dateiname keine Leerzeichen enthalten und muss dem internen Namen der Schriftart entsprechen.'
53
55
  }
54
56
  }, true);
@@ -49,7 +49,11 @@ var _OptionPriceEditor = _interopRequireDefault(require("./OptionPriceEditor"));
49
49
 
50
50
  require("../../Item/Components/Styles.scss");
51
51
 
52
- var _excluded = ["value", "priceEditEnabled"];
52
+ var _Toggle = _interopRequireDefault(require("../../../Components/FormFragments/Toggle"));
53
+
54
+ var _reactSortableHoc = require("react-sortable-hoc");
55
+
56
+ var _excluded = ["value", "priceEditEnabled", "overrideOptionOrder", "setOverrideOptionOrder", "showOverrideOptionOrderSaveHint"];
53
57
 
54
58
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
55
59
 
@@ -155,6 +159,37 @@ var OptionclassificationEditorOptionTile = /*#__PURE__*/function (_React$Compone
155
159
  return OptionclassificationEditorOptionTile;
156
160
  }(_react["default"].Component);
157
161
 
162
+ var SortableList = (0, _reactSortableHoc.SortableContainer)(function (props) {
163
+ return /*#__PURE__*/_react["default"].createElement("ul", null, props.children);
164
+ });
165
+ var SortableOptionTile = (0, _reactSortableHoc.SortableElement)(function (props) {
166
+ return /*#__PURE__*/_react["default"].createElement(OptionTile, {
167
+ option: props.value,
168
+ onRemoveOption: props.onRemoveOption,
169
+ onEditOption: props.onEditOption,
170
+ onEditPrice: props.onEditPrice,
171
+ priceEditEnabled: props.priceEditEnabled
172
+ });
173
+ });
174
+
175
+ var OptionTile = function OptionTile(_ref2) {
176
+ var option = _ref2.option,
177
+ priceEditEnabled = _ref2.priceEditEnabled,
178
+ onRemoveOption = _ref2.onRemoveOption,
179
+ onEditOption = _ref2.onEditOption,
180
+ onEditPrice = _ref2.onEditPrice;
181
+ return /*#__PURE__*/_react["default"].createElement("li", {
182
+ key: option.identifier,
183
+ className: "draggable-option-item"
184
+ }, /*#__PURE__*/_react["default"].createElement(OptionclassificationEditorOptionTile, {
185
+ option: option,
186
+ onRemoveOption: onRemoveOption,
187
+ onEditOption: onEditOption,
188
+ onEditPrice: onEditPrice,
189
+ priceEditEnabled: priceEditEnabled
190
+ }));
191
+ };
192
+
158
193
  var OptionclassificationEditorItem = /*#__PURE__*/function (_React$Component2) {
159
194
  _inherits(OptionclassificationEditorItem, _React$Component2);
160
195
 
@@ -205,6 +240,19 @@ var OptionclassificationEditorItem = /*#__PURE__*/function (_React$Component2) {
205
240
  _this2.props.onEditOptionPrice(_this2.props.optionclassification, option);
206
241
  });
207
242
 
243
+ _defineProperty(_assertThisInitialized(_this2), "onSortEnd", function (_ref3) {
244
+ var oldIndex = _ref3.oldIndex,
245
+ newIndex = _ref3.newIndex;
246
+ var component = _this2.props.optionclassification;
247
+ var items = (0, _reactSortableHoc.arrayMove)(component.selectableOptions, oldIndex, newIndex);
248
+ component.selectableOptions = items.map(function (item, index) {
249
+ item.sequenceNumber = index + 1;
250
+ return item;
251
+ });
252
+
253
+ _this2.props.onChange(component);
254
+ });
255
+
208
256
  _this2.state = {
209
257
  open: false
210
258
  };
@@ -219,6 +267,7 @@ var OptionclassificationEditorItem = /*#__PURE__*/function (_React$Component2) {
219
267
  var _this$props2 = this.props,
220
268
  optionclassification = _this$props2.optionclassification,
221
269
  number = _this$props2.number,
270
+ sortable = _this$props2.sortable,
222
271
  priceEditEnabled = _this$props2.priceEditEnabled;
223
272
  var selectableOptions = optionclassification.selectableOptions;
224
273
  var open = this.state.open;
@@ -247,19 +296,34 @@ var OptionclassificationEditorItem = /*#__PURE__*/function (_React$Component2) {
247
296
  className: "optionclassificationEditor-addOption",
248
297
  color: "secondary",
249
298
  icon: /*#__PURE__*/_react["default"].createElement(_AddIcon["default"], null)
250
- }), selectableOptions && /*#__PURE__*/_react["default"].createElement("div", {
299
+ }), selectableOptions && (sortable ? /*#__PURE__*/_react["default"].createElement("div", {
300
+ className: "options-wrapper"
301
+ }, /*#__PURE__*/_react["default"].createElement(SortableList, {
302
+ onSortEnd: this.onSortEnd,
303
+ axis: "x",
304
+ lockAxis: "x",
305
+ pressDelay: "150"
306
+ }, selectableOptions.map(function (option, index) {
307
+ return /*#__PURE__*/_react["default"].createElement(SortableOptionTile, {
308
+ key: option.id,
309
+ index: index,
310
+ value: option,
311
+ onRemoveOption: _this3.removeOption,
312
+ onEditOption: _this3.editOption,
313
+ onEditPrice: _this3.editOptionPrice,
314
+ priceEditEnabled: priceEditEnabled
315
+ });
316
+ }))) : /*#__PURE__*/_react["default"].createElement("div", {
251
317
  className: "options-wrapper"
252
318
  }, /*#__PURE__*/_react["default"].createElement("ul", null, selectableOptions.map(function (option) {
253
- return /*#__PURE__*/_react["default"].createElement("li", {
254
- key: option.identifier
255
- }, /*#__PURE__*/_react["default"].createElement(OptionclassificationEditorOptionTile, {
319
+ return /*#__PURE__*/_react["default"].createElement(OptionTile, {
256
320
  option: option,
257
321
  onRemoveOption: _this3.removeOption,
258
322
  onEditOption: _this3.editOption,
259
323
  onEditPrice: _this3.editOptionPrice,
260
324
  priceEditEnabled: priceEditEnabled
261
- }));
262
- })))));
325
+ });
326
+ }))))));
263
327
  }
264
328
  }]);
265
329
 
@@ -320,13 +384,24 @@ var OptionclassificationEditor = /*#__PURE__*/function (_React$Component3) {
320
384
  var _this$props3 = this.props,
321
385
  value = _this$props3.value,
322
386
  priceEditEnabled = _this$props3.priceEditEnabled,
387
+ overrideOptionOrder = _this$props3.overrideOptionOrder,
388
+ setOverrideOptionOrder = _this$props3.setOverrideOptionOrder,
389
+ showOverrideOptionOrderSaveHint = _this$props3.showOverrideOptionOrderSaveHint,
323
390
  otherProps = _objectWithoutProperties(_this$props3, _excluded);
324
391
 
325
392
  return /*#__PURE__*/_react["default"].createElement("div", {
326
393
  className: "optionclassificationEditor-wrapper"
327
394
  }, /*#__PURE__*/_react["default"].createElement("div", {
328
395
  className: "optionclassificationEditor-info"
329
- }, (0, _i18n.T)(value.length > 0 ? 'constructionPatterns.components.infoText' : 'constructionPatterns.components.noComponentsSelected')), value.map(function (oc, idx) {
396
+ }, (0, _i18n.T)(value.length > 0 ? 'constructionPatterns.option.sourceHeadline' : 'constructionPatterns.components.noComponentsSelected')), /*#__PURE__*/_react["default"].createElement(_Toggle["default"], {
397
+ label: (0, _i18n.T)('constructionPatterns.overrideOptionOrder'),
398
+ value: overrideOptionOrder,
399
+ onChange: function onChange(name, checked) {
400
+ return setOverrideOptionOrder(checked);
401
+ },
402
+ fullWidth: false,
403
+ error: showOverrideOptionOrderSaveHint ? (0, _i18n.T)('constructionPatterns.overrideOptionOrderHint') : null
404
+ }), value.map(function (oc, idx) {
330
405
  return /*#__PURE__*/_react["default"].createElement(OptionclassificationEditorItem, {
331
406
  key: oc.identifier,
332
407
  number: idx + 1,
@@ -335,7 +410,8 @@ var OptionclassificationEditor = /*#__PURE__*/function (_React$Component3) {
335
410
  onAddOption: _this5.addOption,
336
411
  onEditOption: _this5.editOption,
337
412
  onEditOptionPrice: _this5.editOptionPrice,
338
- priceEditEnabled: priceEditEnabled
413
+ priceEditEnabled: priceEditEnabled,
414
+ sortable: overrideOptionOrder
339
415
  });
340
416
  }), /*#__PURE__*/_react["default"].createElement(OptionSelection, otherProps), /*#__PURE__*/_react["default"].createElement(OptionEditor, otherProps), /*#__PURE__*/_react["default"].createElement(_OptionPriceEditor["default"], otherProps));
341
417
  }
@@ -523,9 +599,9 @@ var OptionEditor = /*#__PURE__*/function (_React$Component5) {
523
599
  return OptionEditor;
524
600
  }(_react["default"].Component);
525
601
 
526
- function mapStateToProps(_ref2) {
527
- var baseConfigurationData = _ref2.baseConfigurationData,
528
- creatorData = _ref2.creatorData;
602
+ function mapStateToProps(_ref4) {
603
+ var baseConfigurationData = _ref4.baseConfigurationData,
604
+ creatorData = _ref4.creatorData;
529
605
  return {
530
606
  showOptionSelectionDialog: baseConfigurationData.showOptionSelectionDialog,
531
607
  selectedComponent: baseConfigurationData.selectedComponent,
@@ -534,6 +610,7 @@ function mapStateToProps(_ref2) {
534
610
  selectedOption: baseConfigurationData.selectedOption,
535
611
  options: baseConfigurationData.selectableOptions,
536
612
  product: creatorData.source,
613
+ showOverrideOptionOrderSaveHint: baseConfigurationData.showOverrideOptionOrderSaveHint,
537
614
  priceEditEnabled: _lodash["default"].get(baseConfigurationData, 'dataSources.settings.calculationMethod') === 'deltaprices'
538
615
  };
539
616
  }
@@ -413,7 +413,8 @@ var ConfigurationDataFormBase = /*#__PURE__*/function (_Component2) {
413
413
 
414
414
  var _this$props2 = this.props,
415
415
  entityState = _this$props2.entityState,
416
- setOverwriteComponentOrder = _this$props2.setOverwriteComponentOrder;
416
+ setOverwriteComponentOrder = _this$props2.setOverwriteComponentOrder,
417
+ setOverrideOptionOrder = _this$props2.setOverrideOptionOrder;
417
418
 
418
419
  var source = _lodash["default"].get(entityState, 'dataSources.selectableComponents.data');
419
420
 
@@ -470,7 +471,9 @@ var ConfigurationDataFormBase = /*#__PURE__*/function (_Component2) {
470
471
  return /*#__PURE__*/_react["default"].createElement("div", null, headLine, /*#__PURE__*/_react["default"].createElement(_OptionclassificationEditor["default"], {
471
472
  name: "selectableComponents",
472
473
  value: value,
473
- onChange: this.onChange
474
+ onChange: this.onChange,
475
+ overrideOptionOrder: Boolean(_lodash["default"].get(entityState, 'data.item.value.overrideOptionOrder')),
476
+ setOverrideOptionOrder: setOverrideOptionOrder
474
477
  }));
475
478
  }
476
479
 
@@ -514,12 +517,13 @@ var ConfigurationDataFormBase = /*#__PURE__*/function (_Component2) {
514
517
  return ConfigurationDataFormBase;
515
518
  }(_react.Component);
516
519
 
517
- function withOverwriteComponentOrder(Component) {
520
+ function withOverwriteOrder(Component) {
518
521
  return (0, _reactRedux.connect)(function () {
519
522
  return {};
520
523
  }, {
521
- setOverwriteComponentOrder: _ConfigurationActions.setOverwriteComponentOrder
524
+ setOverwriteComponentOrder: _ConfigurationActions.setOverwriteComponentOrder,
525
+ setOverrideOptionOrder: _ConfigurationActions.setOverrideOptionOrder
522
526
  })(Component);
523
527
  }
524
528
 
525
- var ConfigurationDataForm = (0, _DefaultConnectedForm.connectDefault)(withOverwriteComponentOrder(ConfigurationDataFormBase), _ConfigurationActions.CONFIGURATION_REDUCER_NAME, _ConfigurationActions["default"].setFieldData, _ConfigurationActions["default"].postData);
529
+ var ConfigurationDataForm = (0, _DefaultConnectedForm.connectDefault)(withOverwriteOrder(ConfigurationDataFormBase), _ConfigurationActions.CONFIGURATION_REDUCER_NAME, _ConfigurationActions["default"].setFieldData, _ConfigurationActions["default"].postData);
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.setOverwriteComponentOrder = exports.getAdminModeHash = exports.showConfiguratorAdminMode = exports.hideOpenCreatorPreviewError = exports.hideOpenDesignerPreviewError = exports.showOpenCreatorPreviewError = exports.showOpenDesignerPreviewError = exports.saveConfigurationSuccess = exports.saveConstructionPattern = exports.commitOptionData = exports.setOptionData = exports.showConfigurator = exports.fetchBaseConfiguration = exports.showOptionPriceEditor = exports.showOptionEditor = exports.commitOptions = exports.setOptions = exports.fetchOptions = exports.invalidateOptions = exports.showOptionSelection = exports.CONFIGURATION_SET_OVERWRITE_COMPONENT_ORDER = exports.CONFIGURATION_SHOW_CONFIGURATOR_ADMIN_MODE = exports.CONFIGURATION_HIDE_CREATOR_PREVIEW_ERROR = exports.CONFIGURATION_HIDE_DESIGNER_PREVIEW_ERROR = exports.CONFIGURATION_SHOW_CREATOR_PREVIEW_ERROR = exports.CONFIGURATION_SHOW_DESIGNER_PREVIEW_ERROR = exports.CONFIGURATION_GET_ADMIN_MODE_HASH = exports.CONFIGURATION_ADMIN_MODE_HASH_URL = exports.CONFIGURATION_ADMIN_MODE_HASH_KEY = exports.CONFIGURATION_SAVE_CONFIGURATION_SUCCESS = exports.CONFIGURATION_SAVE_ITEM = exports.CONFIGURATION_SAVE_CONFIGURATION = exports.CONFIGURATION_LOAD_BASE_CONFIGURATION = exports.CONFIGURATION_INVALIDATE_OPTIONS = exports.CONFIGURATION_SHOW_CONFIGURATOR = exports.CONFIGURATION_SHOW_OPTION_PRICE_EDITOR = exports.CONFIGURATION_SHOW_OPTION_EDITOR = exports.CONFIGURATION_SHOW_OPTION_SELECTION = exports["default"] = exports.CONFIGURATION_COMMIT_OPTION_DATA = exports.CONFIGURATION_SET_OPTION_DATA = exports.CONFIGURATION_BASE_CONFIGURATION_KEY = exports.CONFIGURATION_COMMIT_OPTIONS = exports.CONFIGURATION_SET_OPTIONS = exports.CONFIGURATION_OPTIONS_KEY = exports.CONFIGURATION_POST_URL = exports.CONFIGURATION_REDUCER_NAME = exports.CONFIGURATION_DATA_KEY = exports.CONFIGURATION_LIST_KEY = void 0;
6
+ exports.setOverrideOptionOrder = exports.setOverwriteComponentOrder = exports.getAdminModeHash = exports.showConfiguratorAdminMode = exports.hideOpenCreatorPreviewError = exports.hideOpenDesignerPreviewError = exports.showOpenCreatorPreviewError = exports.showOpenDesignerPreviewError = exports.saveConfigurationSuccess = exports.saveConstructionPattern = exports.commitOptionData = exports.setOptionData = exports.showConfigurator = exports.fetchBaseConfiguration = exports.showOptionPriceEditor = exports.showOptionEditor = exports.commitOptions = exports.setOptions = exports.fetchOptions = exports.invalidateOptions = exports.showOptionSelection = exports.CONFIGURATION_SET_OVERRIDE_OPTION_ORDER = exports.CONFIGURATION_SET_OVERWRITE_COMPONENT_ORDER = exports.CONFIGURATION_SHOW_CONFIGURATOR_ADMIN_MODE = exports.CONFIGURATION_HIDE_CREATOR_PREVIEW_ERROR = exports.CONFIGURATION_HIDE_DESIGNER_PREVIEW_ERROR = exports.CONFIGURATION_SHOW_CREATOR_PREVIEW_ERROR = exports.CONFIGURATION_SHOW_DESIGNER_PREVIEW_ERROR = exports.CONFIGURATION_GET_ADMIN_MODE_HASH = exports.CONFIGURATION_ADMIN_MODE_HASH_URL = exports.CONFIGURATION_ADMIN_MODE_HASH_KEY = exports.CONFIGURATION_SAVE_CONFIGURATION_SUCCESS = exports.CONFIGURATION_SAVE_ITEM = exports.CONFIGURATION_SAVE_CONFIGURATION = exports.CONFIGURATION_LOAD_BASE_CONFIGURATION = exports.CONFIGURATION_INVALIDATE_OPTIONS = exports.CONFIGURATION_SHOW_CONFIGURATOR = exports.CONFIGURATION_SHOW_OPTION_PRICE_EDITOR = exports.CONFIGURATION_SHOW_OPTION_EDITOR = exports.CONFIGURATION_SHOW_OPTION_SELECTION = exports["default"] = exports.CONFIGURATION_COMMIT_OPTION_DATA = exports.CONFIGURATION_SET_OPTION_DATA = exports.CONFIGURATION_BASE_CONFIGURATION_KEY = exports.CONFIGURATION_COMMIT_OPTIONS = exports.CONFIGURATION_SET_OPTIONS = exports.CONFIGURATION_OPTIONS_KEY = exports.CONFIGURATION_POST_URL = exports.CONFIGURATION_REDUCER_NAME = exports.CONFIGURATION_DATA_KEY = exports.CONFIGURATION_LIST_KEY = void 0;
7
7
 
8
8
  var _get = _interopRequireDefault(require("lodash/get"));
9
9
 
@@ -17,7 +17,8 @@ var _Actions3 = require("../../../App/Reducers/Frame/Actions");
17
17
 
18
18
  var _i18n = require("../../../App/i18n");
19
19
 
20
- var _excluded = ["stock"];
20
+ var _excluded = ["stock"],
21
+ _excluded2 = ["stock"];
21
22
 
22
23
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
24
 
@@ -96,6 +97,8 @@ var CONFIGURATION_SHOW_CONFIGURATOR_ADMIN_MODE = 'CONFIGURATION_SHOW_CONFIGURATO
96
97
  exports.CONFIGURATION_SHOW_CONFIGURATOR_ADMIN_MODE = CONFIGURATION_SHOW_CONFIGURATOR_ADMIN_MODE;
97
98
  var CONFIGURATION_SET_OVERWRITE_COMPONENT_ORDER = 'CONFIGURATION_SET_OVERWRITE_COMPONENT_ORDER';
98
99
  exports.CONFIGURATION_SET_OVERWRITE_COMPONENT_ORDER = CONFIGURATION_SET_OVERWRITE_COMPONENT_ORDER;
100
+ var CONFIGURATION_SET_OVERRIDE_OPTION_ORDER = 'CONFIGURATION_SET_OVERRIDE_OPTION_ORDER';
101
+ exports.CONFIGURATION_SET_OVERRIDE_OPTION_ORDER = CONFIGURATION_SET_OVERRIDE_OPTION_ORDER;
99
102
 
100
103
  var showOptionSelection = function showOptionSelection() {
101
104
  var show = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
@@ -440,4 +443,80 @@ var setOverwriteComponentOrder = function setOverwriteComponentOrder(value) {
440
443
  }();
441
444
  };
442
445
 
443
- exports.setOverwriteComponentOrder = setOverwriteComponentOrder;
446
+ exports.setOverwriteComponentOrder = setOverwriteComponentOrder;
447
+
448
+ var setOverrideOptionOrder = function setOverrideOptionOrder(value) {
449
+ return /*#__PURE__*/function () {
450
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(dispatch, getState) {
451
+ var entityState, item, stock, itemData, data, url;
452
+ return regeneratorRuntime.wrap(function _callee3$(_context3) {
453
+ while (1) {
454
+ switch (_context3.prev = _context3.next) {
455
+ case 0:
456
+ entityState = getState()[CONFIGURATION_REDUCER_NAME];
457
+ _context3.next = 3;
458
+ return dispatch({
459
+ type: CONFIGURATION_SET_OVERRIDE_OPTION_ORDER,
460
+ value: value
461
+ });
462
+
463
+ case 3:
464
+ item = (0, _get["default"])(entityState, 'data.item.value');
465
+
466
+ if (!item) {
467
+ _context3.next = 9;
468
+ break;
469
+ }
470
+
471
+ stock = item.stock, itemData = _objectWithoutProperties(item, _excluded2);
472
+ data = _objectSpread(_objectSpread({}, itemData), {}, {
473
+ overrideOptionOrder: value
474
+ });
475
+ url = "items";
476
+ return _context3.abrupt("return", dispatch((0, _Actions2.postData)({
477
+ url: url
478
+ }, data, CONFIGURATION_SAVE_ITEM)).then(function (apiAction) {
479
+ switch (apiAction.type) {
480
+ case _Helpers.RECEIVE_DATA:
481
+ {
482
+ dispatch((0, _Actions3.showInfoMessage)((0, _i18n.t)('entity.saveOk')));
483
+ dispatch(saveConfigurationSuccess(apiAction.data));
484
+ return true;
485
+ }
486
+
487
+ case _Helpers.NETWORK_ERROR:
488
+ {
489
+ var state = getState();
490
+ var source = state.dataBySource[apiAction.key];
491
+
492
+ if (source.isPosted) {
493
+ // data is saved
494
+ dispatch((0, _Actions3.showErrorMessage)((0, _i18n.t)('entity.saveError'), apiAction.error));
495
+ } else {
496
+ dispatch((0, _Actions3.showErrorMessage)((0, _i18n.t)('entity.loadError'), apiAction.error));
497
+ }
498
+
499
+ dispatch({
500
+ type: CONFIGURATION_SET_OVERRIDE_OPTION_ORDER,
501
+ value: !value
502
+ });
503
+ return false;
504
+ }
505
+ }
506
+ }));
507
+
508
+ case 9:
509
+ case "end":
510
+ return _context3.stop();
511
+ }
512
+ }
513
+ }, _callee3);
514
+ }));
515
+
516
+ return function (_x4, _x5) {
517
+ return _ref3.apply(this, arguments);
518
+ };
519
+ }();
520
+ };
521
+
522
+ exports.setOverrideOptionOrder = setOverrideOptionOrder;
@@ -78,7 +78,8 @@ var initialState = _objectSpread(_objectSpread({}, (0, _Reducer.getDefaultEntity
78
78
  baseConfigurationState: null,
79
79
  showConfigurator: false,
80
80
  showOpenDesignerPreviewError: false,
81
- showOpenCreatorPreviewError: false
81
+ showOpenCreatorPreviewError: false,
82
+ showOverrideOptionOrderSaveHint: false
82
83
  });
83
84
 
84
85
  var baseConfigurationData = (0, _FeatureReducers.createFeatureReducer)(_ConfigurationActions.CONFIGURATION_REDUCER_NAME, function () {
@@ -127,6 +128,12 @@ var baseConfigurationData = (0, _FeatureReducers.createFeatureReducer)(_Configur
127
128
  });
128
129
  }
129
130
 
131
+ if (action.key === _ConfigurationActions.CONFIGURATION_DATA_KEY) {
132
+ return _objectSpread(_objectSpread({}, state), {}, {
133
+ showOverrideOptionOrderSaveHint: false
134
+ });
135
+ }
136
+
130
137
  return state;
131
138
  }
132
139
 
@@ -314,6 +321,51 @@ var baseConfigurationData = (0, _FeatureReducers.createFeatureReducer)(_Configur
314
321
  });
315
322
  }
316
323
 
324
+ case _ConfigurationActions.CONFIGURATION_SET_OVERRIDE_OPTION_ORDER:
325
+ {
326
+ var overrideOptionOrder = action.value;
327
+ var _nextState2 = state;
328
+ var showOverrideOptionOrderSaveHint = false;
329
+
330
+ if (!overrideOptionOrder) {
331
+ showOverrideOptionOrderSaveHint = true; // reset options seuqence number -> global sequence number will be used when loading in FE
332
+
333
+ var _state3 = state,
334
+ _data5 = _state3.data;
335
+ var _selectableComponents = _data5.selectableComponents;
336
+ var _currentOptionclassifications = _selectableComponents.value;
337
+
338
+ _currentOptionclassifications.forEach(function (optionClassification) {
339
+ return optionClassification.selectableOptions.forEach(function (option) {
340
+ return option.sequenceNumber = null;
341
+ });
342
+ });
343
+
344
+ _nextState2 = _objectSpread(_objectSpread({}, state), {}, {
345
+ data: _objectSpread(_objectSpread({}, _data5), {}, {
346
+ selectableComponents: _objectSpread(_objectSpread({}, _selectableComponents), {}, {
347
+ value: _currentOptionclassifications
348
+ })
349
+ })
350
+ });
351
+ }
352
+
353
+ var _nextState3 = _nextState2,
354
+ _data4 = _nextState3.data;
355
+ var _item = _data4.item;
356
+ var _value = _item.value;
357
+ return _objectSpread(_objectSpread({}, _nextState2), {}, {
358
+ showOverrideOptionOrderSaveHint: showOverrideOptionOrderSaveHint,
359
+ data: _objectSpread(_objectSpread({}, _data4), {}, {
360
+ item: _objectSpread(_objectSpread({}, _item), {}, {
361
+ value: _objectSpread(_objectSpread({}, _value), {}, {
362
+ overrideOptionOrder: overrideOptionOrder
363
+ })
364
+ })
365
+ })
366
+ });
367
+ }
368
+
317
369
  default:
318
370
  state = (0, _Reducer.defaultEntityReducer)(state, action, initialState);
319
371
 
@@ -59,7 +59,9 @@ require("../../App/i18n").use({
59
59
  title: 'Delta prices',
60
60
  description: 'Option "%{option}" in Component "%{component}" by Product "%{product}"',
61
61
  addButtonLabel: 'Add price'
62
- }
62
+ },
63
+ overrideOptionOrder: 'Edit option order for item</br>(when deactivated, the global option order is used)',
64
+ overrideOptionOrderHint: '</br></br>In order to see the options globally, you have to save your current changes.'
63
65
  },
64
66
  openPreviewError: {
65
67
  title: 'Missing data',
@@ -125,7 +127,9 @@ require("../../App/i18n").use({
125
127
  title: 'Aufpreise',
126
128
  description: 'Option "%{option}" in Komponente "%{component}" an Produkt "%{product}"',
127
129
  addButtonLabel: 'Preis hinzufügen'
128
- }
130
+ },
131
+ overrideOptionOrder: 'Optionsreihenfolge auf Produktebene pflegen </br>(Wenn deaktiviert, greift die globale Optionsreihenfolge)',
132
+ overrideOptionOrderHint: '</br></br>Um die globale Sortierung der Optionen anzuwenden, speichere bitte deine aktuellen Änderungen.'
129
133
  },
130
134
  openPreviewError: {
131
135
  title: 'Fehlende Daten',
@@ -21,6 +21,8 @@ var _CallToActionField = require("../../../Components/CallToActionField");
21
21
 
22
22
  var _PdfMarkdownField = _interopRequireDefault(require("../../Client/Components/PdfMarkdownField"));
23
23
 
24
+ var _ColorTextField = _interopRequireDefault(require("../../Client/Components/ColorTextField"));
25
+
24
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
25
27
 
26
28
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -33,7 +35,7 @@ var formFields = [{
33
35
  fields: [{
34
36
  name: 'highlightColor',
35
37
  label: 'Theme - Highlight color',
36
- type: 'text'
38
+ type: _ColorTextField["default"]
37
39
  }, {
38
40
  name: 'font',
39
41
  label: 'Theme - Font',
@@ -19,6 +19,8 @@ var _i18n = require("../../../App/i18n");
19
19
 
20
20
  var _PdfMarkdownField = _interopRequireDefault(require("../../Client/Components/PdfMarkdownField"));
21
21
 
22
+ var _ColorTextField = _interopRequireDefault(require("../../Client/Components/ColorTextField"));
23
+
22
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
25
 
24
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -31,7 +33,7 @@ var formFields = [{
31
33
  fields: [{
32
34
  name: 'highlightColor',
33
35
  label: 'Theme - Highlight color',
34
- type: 'text'
36
+ type: _ColorTextField["default"]
35
37
  }, {
36
38
  name: 'font',
37
39
  label: 'Theme - Font',
@@ -62,7 +62,11 @@ var formFields = [{
62
62
  type: _SimpleNestedData["default"],
63
63
  fields: [{
64
64
  name: 'vectorsRequired',
65
- label: 'Vectors Required',
65
+ label: 'vectorsRequired',
66
+ type: 'checkbox'
67
+ }, {
68
+ name: 'vectorizedLogoMandatory',
69
+ label: 'vectorizedLogoMandatory',
66
70
  type: 'checkbox'
67
71
  }, {
68
72
  name: 'visualizationEffect',