@configuratorware/configurator-admingui 1.39.2 → 1.40.1
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/Components/FormFragments/InputWithSource.js +14 -2
- package/Components/FormFragments/Select.js +5 -3
- package/Components/ModalContainer.js +16 -1
- package/Screens/Attribute/Containers/Edit.js +7 -0
- package/Screens/Attribute/Reducers/Reducer.js +4 -1
- package/Screens/Attribute/Translations.js +6 -2
- package/Screens/Client/Containers/Edit.js +4 -0
- package/Screens/Client/Reducers/Actions.js +8 -10
- package/Screens/Client/Reducers/Reducer.js +3 -0
- package/Screens/Client/Translations.js +1 -0
- package/Screens/CurrentClient/Containers/Edit.js +4 -0
- package/Screens/CurrentClient/Reducers/Reducer.js +3 -0
- package/Screens/DefaultClient/Containers/Edit.js +4 -0
- package/Screens/DefaultClient/Reducers/Reducer.js +3 -0
- package/Screens/Designer/SubScreens/Visualization/Containers/Edit/Edit.js +20 -10
- package/Screens/PriceTypes/Containers/Edit.js +36 -10
- package/Screens/PriceTypes/Reducers/Reducer.js +2 -2
- package/Screens/PriceTypes/Translations.js +14 -0
- package/UIComponents/Dialog.js +2 -1
- package/package.json +2 -2
- package/src/Components/FormFragments/InputWithSource.js +3 -0
- package/src/Components/FormFragments/Select.js +10 -4
- package/src/Components/ModalContainer.js +14 -2
- package/src/Screens/Attribute/Containers/Edit.js +7 -0
- package/src/Screens/Attribute/Reducers/Reducer.js +1 -0
- package/src/Screens/Attribute/Translations.js +4 -0
- package/src/Screens/Client/Containers/Edit.js +7 -2
- package/src/Screens/Client/Reducers/Actions.js +9 -10
- package/src/Screens/Client/Reducers/Reducer.js +1 -0
- package/src/Screens/Client/Translations.js +5 -2
- package/src/Screens/CurrentClient/Containers/Edit.js +9 -4
- package/src/Screens/CurrentClient/Reducers/Reducer.js +1 -0
- package/src/Screens/DefaultClient/Containers/Edit.js +6 -1
- package/src/Screens/DefaultClient/Reducers/Reducer.js +1 -0
- package/src/Screens/Designer/SubScreens/Visualization/Containers/Edit/Edit.js +14 -3
- package/src/Screens/PriceTypes/Containers/Edit.js +32 -9
- package/src/Screens/PriceTypes/Reducers/Reducer.js +1 -1
- package/src/Screens/PriceTypes/Translations.js +14 -0
- package/src/UIComponents/Dialog.js +1 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.sourceConfigPropType = exports.getInputItemKeyByConfig = exports.getInputItemParamsByConfig = exports.getInputValueByConfig = void 0;
|
|
6
|
+
exports.nullToValue = exports.valueToNull = exports.sourceConfigPropType = exports.getInputItemKeyByConfig = exports.getInputItemParamsByConfig = exports.getInputValueByConfig = void 0;
|
|
7
7
|
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
|
|
@@ -65,4 +65,16 @@ var sourceConfigPropType = _propTypes["default"].shape({
|
|
|
65
65
|
value: _propTypes["default"].string.isRequired
|
|
66
66
|
});
|
|
67
67
|
|
|
68
|
-
exports.sourceConfigPropType = sourceConfigPropType;
|
|
68
|
+
exports.sourceConfigPropType = sourceConfigPropType;
|
|
69
|
+
|
|
70
|
+
var valueToNull = function valueToNull(value) {
|
|
71
|
+
return value === 'null' ? null : value;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
exports.valueToNull = valueToNull;
|
|
75
|
+
|
|
76
|
+
var nullToValue = function nullToValue(value) {
|
|
77
|
+
return value === null ? 'null' : value;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
exports.nullToValue = nullToValue;
|
|
@@ -22,7 +22,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
22
22
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
23
23
|
|
|
24
24
|
var select = function select(props) {
|
|
25
|
-
var value = (0, _InputWithSource.getInputValueByConfig)(props);
|
|
25
|
+
var value = (0, _InputWithSource.nullToValue)((0, _InputWithSource.getInputValueByConfig)(props));
|
|
26
26
|
return /*#__PURE__*/_react["default"].createElement(_SelectField["default"], {
|
|
27
27
|
style: {
|
|
28
28
|
width: '100%'
|
|
@@ -35,7 +35,7 @@ var select = function select(props) {
|
|
|
35
35
|
var selectedObj = (0, _find2["default"])(props.source, _defineProperty({}, key, event.target.value));
|
|
36
36
|
props.onChange(props.name, selectedObj);
|
|
37
37
|
} else {
|
|
38
|
-
props.onChange(props.name, event.target.value);
|
|
38
|
+
props.onChange(props.name, (0, _InputWithSource.valueToNull)(event.target.value));
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
onFocus: function onFocus() {
|
|
@@ -52,8 +52,10 @@ var select = function select(props) {
|
|
|
52
52
|
value = _getInputItemParamsBy.value,
|
|
53
53
|
text = _getInputItemParamsBy.text;
|
|
54
54
|
|
|
55
|
+
var _value = (0, _InputWithSource.nullToValue)(value);
|
|
56
|
+
|
|
55
57
|
return /*#__PURE__*/_react["default"].createElement(_MenuItem["default"], {
|
|
56
|
-
value:
|
|
58
|
+
value: _value,
|
|
57
59
|
key: idx
|
|
58
60
|
}, text);
|
|
59
61
|
}));
|
|
@@ -15,6 +15,8 @@ var _GeneralFragments = require("./GeneralFragments");
|
|
|
15
15
|
|
|
16
16
|
var _debounce = _interopRequireDefault(require("lodash/debounce"));
|
|
17
17
|
|
|
18
|
+
var _withStyles = _interopRequireDefault(require("@material-ui/core/styles/withStyles"));
|
|
19
|
+
|
|
18
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
19
21
|
|
|
20
22
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
@@ -39,6 +41,17 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
|
|
|
39
41
|
|
|
40
42
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
41
43
|
|
|
44
|
+
var styles = function styles() {
|
|
45
|
+
return {
|
|
46
|
+
dialogContentContainer: {
|
|
47
|
+
display: 'flex',
|
|
48
|
+
flexDirection: 'column',
|
|
49
|
+
flex: 1,
|
|
50
|
+
width: '100%'
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
|
|
42
55
|
var ModalContainer = /*#__PURE__*/function (_React$Component) {
|
|
43
56
|
_inherits(ModalContainer, _React$Component);
|
|
44
57
|
|
|
@@ -116,6 +129,7 @@ var ModalContainer = /*#__PURE__*/function (_React$Component) {
|
|
|
116
129
|
maxWidth: "lg",
|
|
117
130
|
classes: classes
|
|
118
131
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
132
|
+
className: classes.dialogContentContainer,
|
|
119
133
|
ref: this.setContainerRef
|
|
120
134
|
}, detailsComponent)), children);
|
|
121
135
|
}
|
|
@@ -124,5 +138,6 @@ var ModalContainer = /*#__PURE__*/function (_React$Component) {
|
|
|
124
138
|
return ModalContainer;
|
|
125
139
|
}(_react["default"].Component);
|
|
126
140
|
|
|
127
|
-
var _default = ModalContainer;
|
|
141
|
+
var _default = (0, _withStyles["default"])(styles)(ModalContainer);
|
|
142
|
+
|
|
128
143
|
exports["default"] = _default;
|
|
@@ -7,6 +7,8 @@ exports["default"] = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _Actions = require("../Reducers/Actions");
|
|
9
9
|
|
|
10
|
+
var _i18n = require("../../../App/i18n");
|
|
11
|
+
|
|
10
12
|
var _DefaultConnectedForm = _interopRequireDefault(require("../../../Components/DefaultConnectedForm"));
|
|
11
13
|
|
|
12
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
@@ -39,6 +41,11 @@ var formFields = [{
|
|
|
39
41
|
label: 'Attribute data type',
|
|
40
42
|
type: 'select',
|
|
41
43
|
source: ['string', 'integer', 'number', 'boolean', 'text']
|
|
44
|
+
}, {
|
|
45
|
+
name: 'writeProtected',
|
|
46
|
+
label: (0, _i18n.t)('attribute.writeProtected'),
|
|
47
|
+
type: 'checkbox',
|
|
48
|
+
helperText: (0, _i18n.t)('attribute.writeProtectedInfo')
|
|
42
49
|
}];
|
|
43
50
|
|
|
44
51
|
var _default = (0, _DefaultConnectedForm["default"])(formFields, _Actions.ATTRIBUTE_REDUCER_NAME, _Actions.setFieldData, _Actions.postData);
|
|
@@ -31,7 +31,10 @@ var initialState = _objectSpread({}, (0, _Reducer.getDefaultEntityState)({
|
|
|
31
31
|
presence: true
|
|
32
32
|
}
|
|
33
33
|
},
|
|
34
|
-
texts: []
|
|
34
|
+
texts: [],
|
|
35
|
+
writeProtected: {
|
|
36
|
+
value: ''
|
|
37
|
+
}
|
|
35
38
|
}, null, _Actions.ATTRIBUTE_DATA_KEY));
|
|
36
39
|
|
|
37
40
|
var attributeData = (0, _FeatureReducers.createFeatureReducer)(_Actions.ATTRIBUTE_REDUCER_NAME, function () {
|
|
@@ -7,7 +7,9 @@ require("../../App/i18n").use({
|
|
|
7
7
|
'Attribute data type': 'Attribute data type',
|
|
8
8
|
Variants: 'Variants',
|
|
9
9
|
attribute: {
|
|
10
|
-
addButtonLabel: 'Add Attribute'
|
|
10
|
+
addButtonLabel: 'Add Attribute',
|
|
11
|
+
writeProtected: 'Write protected',
|
|
12
|
+
writeProtectedInfo: 'Attribute won’t be deleted by the importer'
|
|
11
13
|
}
|
|
12
14
|
},
|
|
13
15
|
de: {
|
|
@@ -16,7 +18,9 @@ require("../../App/i18n").use({
|
|
|
16
18
|
'Attribute data type': 'Attributdatentyp',
|
|
17
19
|
Variants: 'Varianten',
|
|
18
20
|
attribute: {
|
|
19
|
-
addButtonLabel: 'Attribute hinzufügen'
|
|
21
|
+
addButtonLabel: 'Attribute hinzufügen',
|
|
22
|
+
writeProtected: 'Schreibgeschützt',
|
|
23
|
+
writeProtectedInfo: 'Das Attribut wird beim Import nicht gelöscht'
|
|
20
24
|
}
|
|
21
25
|
}
|
|
22
26
|
}, true);
|
|
@@ -137,6 +137,10 @@ var formFields = [{
|
|
|
137
137
|
label: 'BCC E-Mail(s) receiver for request offer',
|
|
138
138
|
type: 'text',
|
|
139
139
|
helperText: (0, _i18n.t)('emailHint')
|
|
140
|
+
}, {
|
|
141
|
+
name: 'sendOfferRequestMailToCustomer',
|
|
142
|
+
label: 'Send offer request email to customer',
|
|
143
|
+
type: 'checkbox'
|
|
140
144
|
}, {
|
|
141
145
|
type: _CallToActionField.CallToActionField,
|
|
142
146
|
fields: [{
|
|
@@ -61,17 +61,15 @@ var createClientActions = function createClientActions(listKey, dataKey, reducer
|
|
|
61
61
|
|
|
62
62
|
var beforeApiStateHandler = function beforeApiStateHandler(apiAction) {
|
|
63
63
|
return function (dispatch, getState) {
|
|
64
|
-
|
|
65
|
-
var state = (0, _cloneDeep["default"])(getState()[reducerName]);
|
|
64
|
+
var state = (0, _cloneDeep["default"])(getState()[reducerName]);
|
|
66
65
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
66
|
+
if (apiAction.type === _Helpers.RECEIVE_DATA) {
|
|
67
|
+
return Promise.all([state.logoFile && uploadFile(apiAction.data.id, state.logoFile, 'logo', dispatch), state.fontFile && uploadFile(apiAction.data.id, state.fontFile, 'font', dispatch)]).then(function () {
|
|
68
|
+
return apiAction;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
72
71
|
|
|
73
|
-
|
|
74
|
-
});
|
|
72
|
+
return apiAction;
|
|
75
73
|
};
|
|
76
74
|
};
|
|
77
75
|
|
|
@@ -84,7 +82,7 @@ var createClientActions = function createClientActions(listKey, dataKey, reducer
|
|
|
84
82
|
var fileToUpload = new FormData();
|
|
85
83
|
fileToUpload.append(field, file, file.name);
|
|
86
84
|
var url = CLIENT_UPLOAD.replace('{field}', field).replace('{itemId}', clientId);
|
|
87
|
-
(0, _Helpers.dispatchPostData)(dispatch)(UPLOAD_KEY, url, fileToUpload);
|
|
85
|
+
return (0, _Helpers.dispatchPostData)(dispatch)(UPLOAD_KEY, url, fileToUpload);
|
|
88
86
|
};
|
|
89
87
|
|
|
90
88
|
actions.setFieldData = function (field, value) {
|
|
@@ -36,6 +36,7 @@ require("../../App/i18n").use({
|
|
|
36
36
|
'E-Mail sender for request offer': 'Absender E-Mail für die Angebotsanfrage',
|
|
37
37
|
'CC E-Mail(s) receiver for request offer': 'CC E-Mail(s) für die Angebotsanfrage',
|
|
38
38
|
'BCC E-Mail(s) receiver for request offer': 'BCC E-Mail(s) für die Angebotsanfrage',
|
|
39
|
+
'Send offer request email to customer': 'Angebotsanfrage per E-Mail an den Kunden senden',
|
|
39
40
|
'Client logo': 'Kunden Logo',
|
|
40
41
|
Texts: 'Texte',
|
|
41
42
|
themeColorError: 'Bitte gib einen hexadezimalen Farbwert ein (z.B. #0000ff)',
|
|
@@ -100,6 +100,10 @@ var formFields = [{
|
|
|
100
100
|
label: 'BCC E-Mail(s) receiver for request offer',
|
|
101
101
|
type: 'text',
|
|
102
102
|
helperText: (0, _i18n.t)('emailHint')
|
|
103
|
+
}, {
|
|
104
|
+
name: 'sendOfferRequestMailToCustomer',
|
|
105
|
+
label: 'Send offer request email to customer',
|
|
106
|
+
type: 'checkbox'
|
|
103
107
|
}, {
|
|
104
108
|
type: _CallToActionField.CallToActionField,
|
|
105
109
|
fields: [{
|
|
@@ -98,6 +98,10 @@ var formFields = [{
|
|
|
98
98
|
label: 'BCC E-Mail(s) receiver for request offer',
|
|
99
99
|
type: 'text',
|
|
100
100
|
helperText: (0, _i18n.t)('emailHint')
|
|
101
|
+
}, {
|
|
102
|
+
name: 'sendOfferRequestMailToCustomer',
|
|
103
|
+
label: 'Send offer request email to customer',
|
|
104
|
+
type: 'checkbox'
|
|
101
105
|
}, {
|
|
102
106
|
name: 'callToAction',
|
|
103
107
|
label: 'callToAction.callToAction',
|
|
@@ -129,6 +129,7 @@ var styles = function styles(theme) {
|
|
|
129
129
|
editorRoot: _defineProperty({
|
|
130
130
|
display: 'flex',
|
|
131
131
|
flexDirection: 'row',
|
|
132
|
+
overflow: 'hidden',
|
|
132
133
|
'&.fullHeight': {
|
|
133
134
|
height: 'calc(100vh - 180px)'
|
|
134
135
|
},
|
|
@@ -147,11 +148,10 @@ var styles = function styles(theme) {
|
|
|
147
148
|
}),
|
|
148
149
|
leftSide: {
|
|
149
150
|
marginRight: 2 * theme.spacing.unit,
|
|
150
|
-
flex: 1
|
|
151
|
-
|
|
152
|
-
header: {
|
|
153
|
-
flex: 1
|
|
151
|
+
flex: 1,
|
|
152
|
+
overflow: 'auto'
|
|
154
153
|
},
|
|
154
|
+
header: {},
|
|
155
155
|
header3D: {
|
|
156
156
|
flex: 1
|
|
157
157
|
},
|
|
@@ -161,6 +161,9 @@ var styles = function styles(theme) {
|
|
|
161
161
|
},
|
|
162
162
|
rightSide: {
|
|
163
163
|
flex: 1,
|
|
164
|
+
display: 'flex',
|
|
165
|
+
flexDirection: 'column',
|
|
166
|
+
overflow: 'auto',
|
|
164
167
|
'& > $header': _defineProperty({}, breakPoint.max, {
|
|
165
168
|
display: 'none'
|
|
166
169
|
})
|
|
@@ -207,18 +210,25 @@ var styles = function styles(theme) {
|
|
|
207
210
|
loadingText: {
|
|
208
211
|
marginTop: 2 * theme.spacing.unit
|
|
209
212
|
},
|
|
210
|
-
advancedEditor: {
|
|
211
|
-
maxWidth: 600
|
|
212
|
-
|
|
213
|
+
advancedEditor: _defineProperty({
|
|
214
|
+
maxWidth: 600,
|
|
215
|
+
overflow: 'auto'
|
|
216
|
+
}, breakPoint.max, {
|
|
217
|
+
maxWidth: '100%'
|
|
218
|
+
}),
|
|
213
219
|
visualizationRoot: (_visualizationRoot = {
|
|
214
220
|
display: 'flex',
|
|
215
|
-
flexDirection: 'row'
|
|
221
|
+
flexDirection: 'row',
|
|
222
|
+
overflow: 'hidden'
|
|
216
223
|
}, _defineProperty(_visualizationRoot, breakPoint.max, {
|
|
217
224
|
flexDirection: 'column'
|
|
218
225
|
}), _defineProperty(_visualizationRoot, '& > $leftSide', _defineProperty({
|
|
219
|
-
width: '70%'
|
|
226
|
+
width: '70%',
|
|
227
|
+
overflow: 'hidden',
|
|
228
|
+
flex: 'initial'
|
|
220
229
|
}, breakPoint.max, {
|
|
221
|
-
width: '100%'
|
|
230
|
+
width: '100%',
|
|
231
|
+
flex: 1
|
|
222
232
|
})), _visualizationRoot),
|
|
223
233
|
visualizationContainer: {
|
|
224
234
|
width: '100%',
|
|
@@ -7,7 +7,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports["default"] = void 0;
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _i18n = require("../../../App/i18n");
|
|
11
13
|
|
|
12
14
|
var _DefaultConnectedForm = _interopRequireDefault(require("../../../Components/DefaultConnectedForm"));
|
|
13
15
|
|
|
@@ -15,14 +17,14 @@ var _LocalizedPriceTextField = require("../../../Components/LocalizedPriceTextFi
|
|
|
15
17
|
|
|
16
18
|
var _LocalizedPriceValue = _interopRequireDefault(require("../../../Components/LocalizedPriceValue"));
|
|
17
19
|
|
|
18
|
-
var
|
|
19
|
-
|
|
20
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
20
|
+
var _Actions = _interopRequireWildcard(require("../Reducers/Actions"));
|
|
21
21
|
|
|
22
22
|
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); }
|
|
23
23
|
|
|
24
24
|
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; }
|
|
25
25
|
|
|
26
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
27
|
+
|
|
26
28
|
var setFieldData = _Actions["default"].setFieldData,
|
|
27
29
|
postData = _Actions["default"].postData;
|
|
28
30
|
var formFields = [{
|
|
@@ -42,9 +44,33 @@ var formFields = [{
|
|
|
42
44
|
label: 'selectable By User',
|
|
43
45
|
type: 'toggle'
|
|
44
46
|
}, {
|
|
45
|
-
name: '
|
|
46
|
-
label: '
|
|
47
|
-
type: '
|
|
47
|
+
name: 'imageDependent',
|
|
48
|
+
label: 'imageDependent.label',
|
|
49
|
+
type: 'select',
|
|
50
|
+
sourceConfig: {
|
|
51
|
+
text: function text(_ref) {
|
|
52
|
+
var label = _ref.label;
|
|
53
|
+
return (0, _i18n.T)(label);
|
|
54
|
+
},
|
|
55
|
+
value: 'value'
|
|
56
|
+
},
|
|
57
|
+
source: [{
|
|
58
|
+
value: null,
|
|
59
|
+
label: 'imageDependent.no',
|
|
60
|
+
id: 'print'
|
|
61
|
+
}, {
|
|
62
|
+
value: 'image_data_dependent',
|
|
63
|
+
label: 'imageDependent.imageDataDependent',
|
|
64
|
+
id: 'image_data_dependent'
|
|
65
|
+
}, {
|
|
66
|
+
value: 'user_image_dependent',
|
|
67
|
+
label: 'imageDependent.userImageDependent',
|
|
68
|
+
id: 'user_image_dependent'
|
|
69
|
+
}, {
|
|
70
|
+
value: 'gallery_image_dependent',
|
|
71
|
+
label: 'imageDependent.galleryImageDependent',
|
|
72
|
+
id: 'gallery_image_dependent'
|
|
73
|
+
}]
|
|
48
74
|
}, {
|
|
49
75
|
name: 'texts',
|
|
50
76
|
label: 'Title',
|
|
@@ -71,9 +97,9 @@ var formFields = [{
|
|
|
71
97
|
},
|
|
72
98
|
type: 'dynSource',
|
|
73
99
|
sourceConfig: {
|
|
74
|
-
text: function text(
|
|
75
|
-
var identifier =
|
|
76
|
-
currency =
|
|
100
|
+
text: function text(_ref2) {
|
|
101
|
+
var identifier = _ref2.identifier,
|
|
102
|
+
currency = _ref2.currency;
|
|
77
103
|
return "".concat(identifier, " / ").concat(currency.symbol, " (").concat(currency.iso, ")");
|
|
78
104
|
}
|
|
79
105
|
},
|
|
@@ -15,6 +15,13 @@ require("../../App/i18n").use({
|
|
|
15
15
|
prices: {
|
|
16
16
|
addButtonLabel: 'Add Price'
|
|
17
17
|
}
|
|
18
|
+
},
|
|
19
|
+
imageDependent: {
|
|
20
|
+
label: 'Depending on the image data',
|
|
21
|
+
no: 'No',
|
|
22
|
+
imageDataDependent: 'Image data dependent (uploaded + images from image gallery)',
|
|
23
|
+
userImageDependent: 'Uploaded Image Data Dependent',
|
|
24
|
+
galleryImageDependent: 'Image gallery Data Dependent'
|
|
18
25
|
}
|
|
19
26
|
},
|
|
20
27
|
de: {
|
|
@@ -31,6 +38,13 @@ require("../../App/i18n").use({
|
|
|
31
38
|
prices: {
|
|
32
39
|
addButtonLabel: 'Preis hinzufügen'
|
|
33
40
|
}
|
|
41
|
+
},
|
|
42
|
+
imageDependent: {
|
|
43
|
+
label: 'Abhängig von den Bilddaten',
|
|
44
|
+
no: 'Nein',
|
|
45
|
+
imageDataDependent: 'Abhängig von Bilddaten (hochgeladene + Bildern aus der Bildergalerie)',
|
|
46
|
+
userImageDependent: 'Abhängig von hochgeladenen Bildern',
|
|
47
|
+
galleryImageDependent: 'Abhängig von Bildern aus der Bildergalerie'
|
|
34
48
|
}
|
|
35
49
|
}
|
|
36
50
|
}, true);
|
package/UIComponents/Dialog.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@configuratorware/configurator-admingui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.40.1",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"private": false,
|
|
6
6
|
"dependencies": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"react-redux-i18n": "^1.9.3",
|
|
30
30
|
"react-router": "^3.2.6",
|
|
31
31
|
"react-sortable-hoc": "^1.11.0",
|
|
32
|
-
"redhotmagma-visualization": "1.
|
|
32
|
+
"redhotmagma-visualization": "1.40.1",
|
|
33
33
|
"redux": "^4.1.0",
|
|
34
34
|
"redux-logger": "^3.0.6",
|
|
35
35
|
"redux-persist": "^5.10.0",
|
|
@@ -44,3 +44,6 @@ export const sourceConfigPropType = PropTypes.shape({
|
|
|
44
44
|
text: PropTypes.oneOfType([PropTypes.string, PropTypes.func]).isRequired,
|
|
45
45
|
value: PropTypes.string.isRequired,
|
|
46
46
|
});
|
|
47
|
+
|
|
48
|
+
export const valueToNull = value => (value === 'null' ? null : value);
|
|
49
|
+
export const nullToValue = value => (value === null ? 'null' : value);
|
|
@@ -4,10 +4,15 @@ import find from 'lodash/find';
|
|
|
4
4
|
import SelectField from '../../UIComponents/SelectField';
|
|
5
5
|
import MenuItem from '../../UIComponents/MenuItem';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
getInputValueByConfig,
|
|
9
|
+
getInputItemParamsByConfig,
|
|
10
|
+
valueToNull,
|
|
11
|
+
nullToValue,
|
|
12
|
+
} from './InputWithSource';
|
|
8
13
|
|
|
9
14
|
const select = props => {
|
|
10
|
-
const value = getInputValueByConfig(props);
|
|
15
|
+
const value = nullToValue(getInputValueByConfig(props));
|
|
11
16
|
return (
|
|
12
17
|
<SelectField
|
|
13
18
|
style={{ width: '100%' }}
|
|
@@ -19,7 +24,7 @@ const select = props => {
|
|
|
19
24
|
const selectedObj = find(props.source, { [key]: event.target.value });
|
|
20
25
|
props.onChange(props.name, selectedObj);
|
|
21
26
|
} else {
|
|
22
|
-
props.onChange(props.name, event.target.value);
|
|
27
|
+
props.onChange(props.name, valueToNull(event.target.value));
|
|
23
28
|
}
|
|
24
29
|
}}
|
|
25
30
|
onFocus={() => props.source.length === 0 && this.props.loadSource && this.props.loadSource()}
|
|
@@ -32,8 +37,9 @@ const select = props => {
|
|
|
32
37
|
>
|
|
33
38
|
{props.source.map((item, idx) => {
|
|
34
39
|
const { value, text } = getInputItemParamsByConfig(item, props.sourceConfig);
|
|
40
|
+
const _value = nullToValue(value);
|
|
35
41
|
return (
|
|
36
|
-
<MenuItem value={
|
|
42
|
+
<MenuItem value={_value} key={idx}>
|
|
37
43
|
{text}
|
|
38
44
|
</MenuItem>
|
|
39
45
|
);
|
|
@@ -2,6 +2,16 @@ import React from 'react';
|
|
|
2
2
|
import Dialog from '../UIComponents/Dialog';
|
|
3
3
|
import { Headline } from './GeneralFragments';
|
|
4
4
|
import debounce from 'lodash/debounce';
|
|
5
|
+
import withStyles from '@material-ui/core/styles/withStyles';
|
|
6
|
+
|
|
7
|
+
const styles = () => ({
|
|
8
|
+
dialogContentContainer: {
|
|
9
|
+
display: 'flex',
|
|
10
|
+
flexDirection: 'column',
|
|
11
|
+
flex: 1,
|
|
12
|
+
width: '100%',
|
|
13
|
+
},
|
|
14
|
+
});
|
|
5
15
|
|
|
6
16
|
class ModalContainer extends React.Component {
|
|
7
17
|
componentDidMount() {
|
|
@@ -55,7 +65,9 @@ class ModalContainer extends React.Component {
|
|
|
55
65
|
maxWidth="lg"
|
|
56
66
|
classes={classes}
|
|
57
67
|
>
|
|
58
|
-
<div ref={this.setContainerRef}>
|
|
68
|
+
<div className={classes.dialogContentContainer} ref={this.setContainerRef}>
|
|
69
|
+
{detailsComponent}
|
|
70
|
+
</div>
|
|
59
71
|
</Dialog>
|
|
60
72
|
|
|
61
73
|
{children}
|
|
@@ -64,4 +76,4 @@ class ModalContainer extends React.Component {
|
|
|
64
76
|
}
|
|
65
77
|
}
|
|
66
78
|
|
|
67
|
-
export default ModalContainer;
|
|
79
|
+
export default withStyles(styles)(ModalContainer);
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
ATTRIBUTE_LIST_KEY,
|
|
7
7
|
ATTRIBUTE_LIST_URL,
|
|
8
8
|
} from '../Reducers/Actions';
|
|
9
|
+
import { t } from '../../../App/i18n';
|
|
9
10
|
|
|
10
11
|
const formFields = [
|
|
11
12
|
{
|
|
@@ -39,6 +40,12 @@ const formFields = [
|
|
|
39
40
|
type: 'select',
|
|
40
41
|
source: ['string', 'integer', 'number', 'boolean', 'text'],
|
|
41
42
|
},
|
|
43
|
+
{
|
|
44
|
+
name: 'writeProtected',
|
|
45
|
+
label: t('attribute.writeProtected'),
|
|
46
|
+
type: 'checkbox',
|
|
47
|
+
helperText: t('attribute.writeProtectedInfo'),
|
|
48
|
+
},
|
|
42
49
|
];
|
|
43
50
|
|
|
44
51
|
import generateConnectedEdit from '../../../Components/DefaultConnectedForm';
|
|
@@ -7,6 +7,8 @@ require('../../App/i18n').use(
|
|
|
7
7
|
Variants: 'Variants',
|
|
8
8
|
attribute: {
|
|
9
9
|
addButtonLabel: 'Add Attribute',
|
|
10
|
+
writeProtected: 'Write protected',
|
|
11
|
+
writeProtectedInfo: 'Attribute won’t be deleted by the importer',
|
|
10
12
|
},
|
|
11
13
|
},
|
|
12
14
|
de: {
|
|
@@ -16,6 +18,8 @@ require('../../App/i18n').use(
|
|
|
16
18
|
Variants: 'Varianten',
|
|
17
19
|
attribute: {
|
|
18
20
|
addButtonLabel: 'Attribute hinzufügen',
|
|
21
|
+
writeProtected: 'Schreibgeschützt',
|
|
22
|
+
writeProtectedInfo: 'Das Attribut wird beim Import nicht gelöscht',
|
|
19
23
|
},
|
|
20
24
|
},
|
|
21
25
|
},
|
|
@@ -54,7 +54,7 @@ const formFields = [
|
|
|
54
54
|
accept: '.ttf',
|
|
55
55
|
showFileName: true,
|
|
56
56
|
deleteEnabled: true,
|
|
57
|
-
warningMessage: T('clientFontMessage')
|
|
57
|
+
warningMessage: T('clientFontMessage'),
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
name: 'logo',
|
|
@@ -127,6 +127,11 @@ const formFields = [
|
|
|
127
127
|
type: 'text',
|
|
128
128
|
helperText: t('emailHint'),
|
|
129
129
|
},
|
|
130
|
+
{
|
|
131
|
+
name: 'sendOfferRequestMailToCustomer',
|
|
132
|
+
label: 'Send offer request email to customer',
|
|
133
|
+
type: 'checkbox',
|
|
134
|
+
},
|
|
130
135
|
{
|
|
131
136
|
type: CallToActionField,
|
|
132
137
|
fields: [
|
|
@@ -136,7 +141,7 @@ const formFields = [
|
|
|
136
141
|
type: 'select',
|
|
137
142
|
},
|
|
138
143
|
],
|
|
139
|
-
dynamicDefaultLabel: false
|
|
144
|
+
dynamicDefaultLabel: false,
|
|
140
145
|
},
|
|
141
146
|
{
|
|
142
147
|
name: 'texts',
|
|
@@ -25,15 +25,14 @@ export const setFontFile = font => ({
|
|
|
25
25
|
|
|
26
26
|
export const createClientActions = (listKey, dataKey, reducerName, url, ctx = {}) => {
|
|
27
27
|
const beforeApiStateHandler = apiAction => (dispatch, getState) => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
state.logoFile && uploadFile(apiAction.data.id, state.logoFile, 'logo', dispatch)
|
|
32
|
-
state.fontFile && uploadFile(apiAction.data.id, state.fontFile, 'font', dispatch)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
});
|
|
28
|
+
const state = cloneDeep(getState()[reducerName]);
|
|
29
|
+
if (apiAction.type === RECEIVE_DATA) {
|
|
30
|
+
return Promise.all([
|
|
31
|
+
state.logoFile && uploadFile(apiAction.data.id, state.logoFile, 'logo', dispatch),
|
|
32
|
+
state.fontFile && uploadFile(apiAction.data.id, state.fontFile, 'font', dispatch),
|
|
33
|
+
]).then(() => apiAction);
|
|
34
|
+
}
|
|
35
|
+
return apiAction;
|
|
37
36
|
};
|
|
38
37
|
|
|
39
38
|
const actions = generateDefaultActions(listKey, dataKey, reducerName, url, {
|
|
@@ -46,7 +45,7 @@ export const createClientActions = (listKey, dataKey, reducerName, url, ctx = {}
|
|
|
46
45
|
const fileToUpload = new FormData();
|
|
47
46
|
fileToUpload.append(field, file, file.name);
|
|
48
47
|
const url = CLIENT_UPLOAD.replace('{field}', field).replace('{itemId}', clientId);
|
|
49
|
-
dispatchPostData(dispatch)(UPLOAD_KEY, url, fileToUpload);
|
|
48
|
+
return dispatchPostData(dispatch)(UPLOAD_KEY, url, fileToUpload);
|
|
50
49
|
};
|
|
51
50
|
|
|
52
51
|
actions.setFieldData = (field, value) => dispatch => {
|
|
@@ -16,7 +16,8 @@ require('../../App/i18n').use(
|
|
|
16
16
|
headerInfo: 'Please check your changes in a generated pdf to make sure it looks as expected',
|
|
17
17
|
footerInfo: 'Please check your changes in a generated pdf to make sure it looks as expected',
|
|
18
18
|
emailHint: 'separate multiple addresses with a semicolon',
|
|
19
|
-
clientFontMessage:
|
|
19
|
+
clientFontMessage:
|
|
20
|
+
'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.',
|
|
20
21
|
},
|
|
21
22
|
de: {
|
|
22
23
|
clients: 'Klienten',
|
|
@@ -35,6 +36,7 @@ require('../../App/i18n').use(
|
|
|
35
36
|
'E-Mail sender for request offer': 'Absender E-Mail für die Angebotsanfrage',
|
|
36
37
|
'CC E-Mail(s) receiver for request offer': 'CC E-Mail(s) für die Angebotsanfrage',
|
|
37
38
|
'BCC E-Mail(s) receiver for request offer': 'BCC E-Mail(s) für die Angebotsanfrage',
|
|
39
|
+
'Send offer request email to customer': 'Angebotsanfrage per E-Mail an den Kunden senden',
|
|
38
40
|
'Client logo': 'Kunden Logo',
|
|
39
41
|
Texts: 'Texte',
|
|
40
42
|
themeColorError: 'Bitte gib einen hexadezimalen Farbwert ein (z.B. #0000ff)',
|
|
@@ -47,7 +49,8 @@ require('../../App/i18n').use(
|
|
|
47
49
|
headerInfo: 'Bitte überprüfe Deine Änderungen in einem generierten PDF',
|
|
48
50
|
footerInfo: 'Bitte überprüfe Deine Änderungen in einem generierten PDF',
|
|
49
51
|
emailHint: 'trenne mehrere Adressen mit einem Semikolon',
|
|
50
|
-
clientFontMessage:
|
|
52
|
+
clientFontMessage:
|
|
53
|
+
'Für eine korrekte Darstellung der Schrift im configuratorware Fronted darf der Dateiname keine Leerzeichen enthalten und muss dem internen Namen der Schriftart entsprechen.',
|
|
51
54
|
},
|
|
52
55
|
},
|
|
53
56
|
true
|
|
@@ -2,7 +2,7 @@ import Actions, { REDUCER_NAME } from '../Reducers/Actions';
|
|
|
2
2
|
import SimpleNestedData from '../../../Components/FormFragments/SimpleNestedData';
|
|
3
3
|
import generateConnectedEdit from '../../../Components/DefaultConnectedForm';
|
|
4
4
|
import { withLoadAction } from '../../../Components/withLoadAction';
|
|
5
|
-
import {T, t } from '../../../App/i18n';
|
|
5
|
+
import { T, t } from '../../../App/i18n';
|
|
6
6
|
import { CallToActionField } from '../../../Components/CallToActionField';
|
|
7
7
|
import PdfMarkDownField from '../../Client/Components/PdfMarkdownField';
|
|
8
8
|
|
|
@@ -23,7 +23,7 @@ const formFields = [
|
|
|
23
23
|
accept: '.ttf',
|
|
24
24
|
showFileName: true,
|
|
25
25
|
deleteEnabled: true,
|
|
26
|
-
warningMessage: T('clientFontMessage')
|
|
26
|
+
warningMessage: T('clientFontMessage'),
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
name: 'logo',
|
|
@@ -96,6 +96,11 @@ const formFields = [
|
|
|
96
96
|
type: 'text',
|
|
97
97
|
helperText: t('emailHint'),
|
|
98
98
|
},
|
|
99
|
+
{
|
|
100
|
+
name: 'sendOfferRequestMailToCustomer',
|
|
101
|
+
label: 'Send offer request email to customer',
|
|
102
|
+
type: 'checkbox',
|
|
103
|
+
},
|
|
99
104
|
{
|
|
100
105
|
type: CallToActionField,
|
|
101
106
|
fields: [
|
|
@@ -103,9 +108,9 @@ const formFields = [
|
|
|
103
108
|
name: 'callToAction',
|
|
104
109
|
label: 'callToAction.callToAction',
|
|
105
110
|
type: 'select',
|
|
106
|
-
}
|
|
111
|
+
},
|
|
107
112
|
],
|
|
108
|
-
dynamicDefaultLabel: false
|
|
113
|
+
dynamicDefaultLabel: false,
|
|
109
114
|
},
|
|
110
115
|
{
|
|
111
116
|
name: 'texts',
|
|
@@ -22,7 +22,7 @@ const formFields = [
|
|
|
22
22
|
accept: '.ttf',
|
|
23
23
|
showFileName: true,
|
|
24
24
|
deleteEnabled: true,
|
|
25
|
-
warningMessage: T('clientFontMessage')
|
|
25
|
+
warningMessage: T('clientFontMessage'),
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
name: 'logo',
|
|
@@ -95,6 +95,11 @@ const formFields = [
|
|
|
95
95
|
type: 'text',
|
|
96
96
|
helperText: t('emailHint'),
|
|
97
97
|
},
|
|
98
|
+
{
|
|
99
|
+
name: 'sendOfferRequestMailToCustomer',
|
|
100
|
+
label: 'Send offer request email to customer',
|
|
101
|
+
type: 'checkbox',
|
|
102
|
+
},
|
|
98
103
|
{
|
|
99
104
|
name: 'callToAction',
|
|
100
105
|
label: 'callToAction.callToAction',
|
|
@@ -31,6 +31,7 @@ const initialState = {
|
|
|
31
31
|
fromEmailAddress: { value: '', constraints: { presence: true } },
|
|
32
32
|
ccEmailAddresses: { value: '', constraints: { presence: true } },
|
|
33
33
|
bccEmailAddresses: { value: '', constraints: { presence: true } },
|
|
34
|
+
sendOfferRequestMailToCustomer: { value: '' },
|
|
34
35
|
callToAction: 'addToCart',
|
|
35
36
|
customCss: '',
|
|
36
37
|
},
|
|
@@ -58,6 +58,7 @@ const styles = theme => {
|
|
|
58
58
|
editorRoot: {
|
|
59
59
|
display: 'flex',
|
|
60
60
|
flexDirection: 'row',
|
|
61
|
+
overflow: 'hidden',
|
|
61
62
|
'&.fullHeight': {
|
|
62
63
|
height: 'calc(100vh - 180px)',
|
|
63
64
|
},
|
|
@@ -80,10 +81,9 @@ const styles = theme => {
|
|
|
80
81
|
leftSide: {
|
|
81
82
|
marginRight: 2 * theme.spacing.unit,
|
|
82
83
|
flex: 1,
|
|
84
|
+
overflow: 'auto',
|
|
83
85
|
},
|
|
84
|
-
header: {
|
|
85
|
-
flex: 1,
|
|
86
|
-
},
|
|
86
|
+
header: {},
|
|
87
87
|
header3D: {
|
|
88
88
|
flex: 1,
|
|
89
89
|
},
|
|
@@ -93,6 +93,9 @@ const styles = theme => {
|
|
|
93
93
|
},
|
|
94
94
|
rightSide: {
|
|
95
95
|
flex: 1,
|
|
96
|
+
display: 'flex',
|
|
97
|
+
flexDirection: 'column',
|
|
98
|
+
overflow: 'auto',
|
|
96
99
|
'& > $header': {
|
|
97
100
|
[breakPoint.max]: {
|
|
98
101
|
display: 'none',
|
|
@@ -146,17 +149,25 @@ const styles = theme => {
|
|
|
146
149
|
},
|
|
147
150
|
advancedEditor: {
|
|
148
151
|
maxWidth: 600,
|
|
152
|
+
overflow: 'auto',
|
|
153
|
+
[breakPoint.max]: {
|
|
154
|
+
maxWidth: '100%',
|
|
155
|
+
},
|
|
149
156
|
},
|
|
150
157
|
visualizationRoot: {
|
|
151
158
|
display: 'flex',
|
|
152
159
|
flexDirection: 'row',
|
|
160
|
+
overflow: 'hidden',
|
|
153
161
|
[breakPoint.max]: {
|
|
154
162
|
flexDirection: 'column',
|
|
155
163
|
},
|
|
156
164
|
'& > $leftSide': {
|
|
157
165
|
width: '70%',
|
|
166
|
+
overflow: 'hidden',
|
|
167
|
+
flex: 'initial',
|
|
158
168
|
[breakPoint.max]: {
|
|
159
169
|
width: '100%',
|
|
170
|
+
flex: 1,
|
|
160
171
|
},
|
|
161
172
|
},
|
|
162
173
|
},
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { T } from '../../../App/i18n';
|
|
3
|
+
import generateConnectedEdit from '../../../Components/DefaultConnectedForm';
|
|
4
|
+
import { LocalizedPriceTextField } from '../../../Components/LocalizedPriceTextField';
|
|
5
|
+
import LocalizedPriceValue from '../../../Components/LocalizedPriceValue';
|
|
1
6
|
import Actions, { REDUCER_NAME } from '../Reducers/Actions';
|
|
2
7
|
const { setFieldData, postData } = Actions;
|
|
3
8
|
|
|
@@ -23,9 +28,31 @@ const formFields = [
|
|
|
23
28
|
type: 'toggle',
|
|
24
29
|
},
|
|
25
30
|
{
|
|
26
|
-
name: '
|
|
27
|
-
label: '
|
|
28
|
-
type: '
|
|
31
|
+
name: 'imageDependent',
|
|
32
|
+
label: 'imageDependent.label',
|
|
33
|
+
type: 'select',
|
|
34
|
+
sourceConfig: {
|
|
35
|
+
text: ({ label }) => T(label),
|
|
36
|
+
value: 'value',
|
|
37
|
+
},
|
|
38
|
+
source: [
|
|
39
|
+
{ value: null, label: 'imageDependent.no', id: 'print' },
|
|
40
|
+
{
|
|
41
|
+
value: 'image_data_dependent',
|
|
42
|
+
label: 'imageDependent.imageDataDependent',
|
|
43
|
+
id: 'image_data_dependent',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
value: 'user_image_dependent',
|
|
47
|
+
label: 'imageDependent.userImageDependent',
|
|
48
|
+
id: 'user_image_dependent',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
value: 'gallery_image_dependent',
|
|
52
|
+
label: 'imageDependent.galleryImageDependent',
|
|
53
|
+
id: 'gallery_image_dependent',
|
|
54
|
+
},
|
|
55
|
+
],
|
|
29
56
|
},
|
|
30
57
|
{
|
|
31
58
|
name: 'texts',
|
|
@@ -75,13 +102,13 @@ const formFields = [
|
|
|
75
102
|
name: 'price',
|
|
76
103
|
label: 'price',
|
|
77
104
|
type: LocalizedPriceTextField,
|
|
78
|
-
renderValue: value => <LocalizedPriceValue data={value}/>,
|
|
105
|
+
renderValue: value => <LocalizedPriceValue data={value} />,
|
|
79
106
|
},
|
|
80
107
|
{
|
|
81
108
|
name: 'priceNet',
|
|
82
109
|
label: 'price Net',
|
|
83
110
|
type: LocalizedPriceTextField,
|
|
84
|
-
renderValue: value => <LocalizedPriceValue data={value}/>,
|
|
111
|
+
renderValue: value => <LocalizedPriceValue data={value} />,
|
|
85
112
|
},
|
|
86
113
|
],
|
|
87
114
|
},
|
|
@@ -89,8 +116,4 @@ const formFields = [
|
|
|
89
116
|
},
|
|
90
117
|
];
|
|
91
118
|
|
|
92
|
-
import generateConnectedEdit from '../../../Components/DefaultConnectedForm';
|
|
93
|
-
import {LocalizedPriceTextField} from "../../../Components/LocalizedPriceTextField";
|
|
94
|
-
import LocalizedPriceValue from "../../../Components/LocalizedPriceValue";
|
|
95
|
-
import React from "react";
|
|
96
119
|
export default generateConnectedEdit(formFields, REDUCER_NAME, setFieldData, postData);
|
|
@@ -15,6 +15,13 @@ require('../../App/i18n').use(
|
|
|
15
15
|
addButtonLabel: 'Add Price',
|
|
16
16
|
},
|
|
17
17
|
},
|
|
18
|
+
imageDependent: {
|
|
19
|
+
label: 'Depending on the image data',
|
|
20
|
+
no: 'No',
|
|
21
|
+
imageDataDependent: 'Image data dependent (uploaded + images from image gallery)',
|
|
22
|
+
userImageDependent: 'Uploaded Image Data Dependent',
|
|
23
|
+
galleryImageDependent: 'Image gallery Data Dependent',
|
|
24
|
+
},
|
|
18
25
|
},
|
|
19
26
|
de: {
|
|
20
27
|
designer_global_calculation_types: 'Globale Kalkulationsposten',
|
|
@@ -31,6 +38,13 @@ require('../../App/i18n').use(
|
|
|
31
38
|
addButtonLabel: 'Preis hinzufügen',
|
|
32
39
|
},
|
|
33
40
|
},
|
|
41
|
+
imageDependent: {
|
|
42
|
+
label: 'Abhängig von den Bilddaten',
|
|
43
|
+
no: 'Nein',
|
|
44
|
+
imageDataDependent: 'Abhängig von Bilddaten (hochgeladene + Bildern aus der Bildergalerie)',
|
|
45
|
+
userImageDependent: 'Abhängig von hochgeladenen Bildern',
|
|
46
|
+
galleryImageDependent: 'Abhängig von Bildern aus der Bildergalerie',
|
|
47
|
+
},
|
|
34
48
|
},
|
|
35
49
|
},
|
|
36
50
|
true
|