@configuratorware/configurator-admingui 1.55.6 → 1.56.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.
@@ -27,6 +27,9 @@ var _default = exports["default"] = {
27
27
  }, {
28
28
  name: 'item_classifications',
29
29
  label: 'itemclassifications.menuLabel'
30
+ }, {
31
+ name: 'item_country_exclusions',
32
+ label: 'item_country_exclusion'
30
33
  }]
31
34
  }, {
32
35
  name: 'configuration_variants'
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _lodash = require("lodash");
10
+ var _i18n = require("../../App/i18n");
11
+ var _Table = require("../../UIComponents/Table");
12
+ var _Checkbox = _interopRequireDefault(require("../../UIComponents/Checkbox"));
13
+ var _Tooltip = _interopRequireDefault(require("../../UIComponents/Tooltip"));
14
+ var _CircularProgress = _interopRequireDefault(require("../../UIComponents/CircularProgress"));
15
+ var _TextField = _interopRequireDefault(require("../../UIComponents/TextField"));
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
17
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
18
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
21
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
22
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
23
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
24
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
25
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
26
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
27
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
28
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
29
+ require("../../App/i18n").use({
30
+ de: {
31
+ countryExclusionMatrixFilter: 'Filtern...',
32
+ countryExclusionMatrixNoData: 'Keine Einträge vorhanden'
33
+ },
34
+ en: {
35
+ countryExclusionMatrixFilter: 'Filter...',
36
+ countryExclusionMatrixNoData: 'There are no records'
37
+ }
38
+ }, true);
39
+ var stickyHeaderCellStyle = {
40
+ position: 'sticky',
41
+ top: 0,
42
+ backgroundColor: '#fff',
43
+ zIndex: 1
44
+ };
45
+ var CountryExclusionMatrix = function CountryExclusionMatrix(_ref) {
46
+ var rows = _ref.rows,
47
+ countries = _ref.countries,
48
+ exclusionSet = _ref.exclusionSet,
49
+ onToggle = _ref.onToggle,
50
+ loading = _ref.loading,
51
+ rowLabel = _ref.rowLabel;
52
+ var _useState = (0, _react.useState)(''),
53
+ _useState2 = _slicedToArray(_useState, 2),
54
+ filterValue = _useState2[0],
55
+ setFilterValue = _useState2[1];
56
+ var filteredRows = filterValue ? rows.filter(function (row) {
57
+ var identifier = (0, _lodash.get)(row, 'identifier', '');
58
+ var title = (0, _lodash.get)(row, 'title', '') || (0, _lodash.get)(row, 'translated_title', '');
59
+ var search = filterValue.toLowerCase();
60
+ return identifier.toLowerCase().includes(search) || title.toLowerCase().includes(search);
61
+ }) : rows;
62
+ if (loading && (!rows || rows.length === 0)) {
63
+ return /*#__PURE__*/_react["default"].createElement("div", {
64
+ style: {
65
+ display: 'flex',
66
+ alignItems: 'center',
67
+ gap: 16,
68
+ marginTop: 16
69
+ }
70
+ }, /*#__PURE__*/_react["default"].createElement(_CircularProgress["default"], {
71
+ size: 24
72
+ }), /*#__PURE__*/_react["default"].createElement("span", null, (0, _i18n.T)('Loading data'), "..."));
73
+ }
74
+ if (!loading && (!rows || rows.length === 0)) {
75
+ return /*#__PURE__*/_react["default"].createElement("div", {
76
+ style: {
77
+ marginTop: 16
78
+ }
79
+ }, (0, _i18n.T)('countryExclusionMatrixNoData'));
80
+ }
81
+ return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
82
+ style: {
83
+ marginBottom: 16
84
+ }
85
+ }, /*#__PURE__*/_react["default"].createElement(_TextField["default"], {
86
+ value: filterValue,
87
+ onChange: function onChange(e) {
88
+ return setFilterValue(e.target.value);
89
+ },
90
+ placeholder: (0, _i18n.t)('countryExclusionMatrixFilter'),
91
+ style: {
92
+ width: 300
93
+ }
94
+ })), /*#__PURE__*/_react["default"].createElement("div", {
95
+ style: {
96
+ overflowX: 'auto',
97
+ overflowY: 'auto',
98
+ maxHeight: '70vh'
99
+ }
100
+ }, /*#__PURE__*/_react["default"].createElement(_Table.Table, null, /*#__PURE__*/_react["default"].createElement(_Table.TableHead, null, /*#__PURE__*/_react["default"].createElement(_Table.TableRow, null, /*#__PURE__*/_react["default"].createElement(_Table.TableHeadColumn, {
101
+ style: _objectSpread(_objectSpread({}, stickyHeaderCellStyle), {}, {
102
+ minWidth: 220
103
+ })
104
+ }, rowLabel), countries.map(function (country) {
105
+ var alpha2 = (0, _lodash.get)(country, 'alpha2');
106
+ var name = (0, _lodash.get)(country, 'name') || alpha2;
107
+ return /*#__PURE__*/_react["default"].createElement(_Table.TableHeadColumn, {
108
+ key: alpha2,
109
+ style: _objectSpread(_objectSpread({}, stickyHeaderCellStyle), {}, {
110
+ minWidth: 60,
111
+ textAlign: 'center'
112
+ })
113
+ }, /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
114
+ title: name
115
+ }, /*#__PURE__*/_react["default"].createElement("span", null, alpha2)));
116
+ }))), /*#__PURE__*/_react["default"].createElement(_Table.TableBody, null, filteredRows.map(function (row) {
117
+ var rowId = (0, _lodash.get)(row, 'id');
118
+ var identifier = (0, _lodash.get)(row, 'identifier', '');
119
+ var title = (0, _lodash.get)(row, 'translated_title') || (0, _lodash.get)(row, 'title') || '';
120
+ var rowLabel_display = title ? "".concat(title, " (").concat(identifier, ")") : identifier;
121
+ return /*#__PURE__*/_react["default"].createElement(_Table.TableRow, {
122
+ key: rowId
123
+ }, /*#__PURE__*/_react["default"].createElement(_Table.TableRowColumn, {
124
+ style: {
125
+ minWidth: 220
126
+ }
127
+ }, /*#__PURE__*/_react["default"].createElement("span", null, rowLabel_display)), countries.map(function (country) {
128
+ var alpha2 = (0, _lodash.get)(country, 'alpha2');
129
+ var checked = exclusionSet.has("".concat(rowId, "-").concat(alpha2));
130
+ return /*#__PURE__*/_react["default"].createElement(_Table.TableRowColumn, {
131
+ key: alpha2,
132
+ style: {
133
+ textAlign: 'center'
134
+ }
135
+ }, /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
136
+ checked: checked,
137
+ onChange: function onChange() {
138
+ return onToggle(rowId, alpha2);
139
+ }
140
+ }));
141
+ }));
142
+ })))));
143
+ };
144
+ var _default = exports["default"] = CountryExclusionMatrix;
@@ -5,12 +5,23 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports["default"] = exports.ConnectedList = void 0;
8
- var _react = _interopRequireDefault(require("react"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
9
  var _Actions = _interopRequireWildcard(require("../Reducers/Actions"));
10
+ var _reactRedux = require("react-redux");
10
11
  var _DefaultConnectedList = _interopRequireDefault(require("../../../../../Components/DefaultConnectedList"));
11
12
  var _OrderList = _interopRequireDefault(require("../../../../../Components/OrderList"));
12
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
13
+ var _i18n = require("../../../../../App/i18n");
14
+ var _RaisedButton = _interopRequireDefault(require("../../../../../UIComponents/RaisedButton"));
15
+ var _FlatButton = _interopRequireDefault(require("../../../../../UIComponents/FlatButton"));
16
+ var _Dialog = _interopRequireDefault(require("../../../../../UIComponents/Dialog"));
13
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
18
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
19
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
20
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
21
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
22
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
23
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
24
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
14
25
  var columns = [{
15
26
  name: 'identifier',
16
27
  label: 'Identifier',
@@ -27,10 +38,50 @@ var ConnectedList = exports.ConnectedList = (0, _DefaultConnectedList["default"]
27
38
  reducerName: _Actions.REDUCER_NAME
28
39
  });
29
40
  var list = function list() {
41
+ var dispatch = (0, _reactRedux.useDispatch)();
42
+ var _useState = (0, _react.useState)(false),
43
+ _useState2 = _slicedToArray(_useState, 2),
44
+ showDialog = _useState2[0],
45
+ setShowDialog = _useState2[1];
46
+ var actions = [/*#__PURE__*/_react["default"].createElement(_FlatButton["default"], {
47
+ label: (0, _i18n.T)('designview.cancel'),
48
+ key: "cancelButton",
49
+ primary: false,
50
+ onClick: function onClick() {
51
+ return setShowDialog(false);
52
+ }
53
+ }), /*#__PURE__*/_react["default"].createElement(_FlatButton["default"], {
54
+ label: (0, _i18n.T)('designview.readFilesLabel'),
55
+ key: "readButton",
56
+ primary: true,
57
+ onClick: function onClick() {
58
+ dispatch(_Actions["default"].readFiles()).then(function () {
59
+ return setShowDialog(false);
60
+ });
61
+ }
62
+ })];
30
63
  return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(ConnectedList, null, /*#__PURE__*/_react["default"].createElement(_OrderList["default"], {
31
64
  listUrl: _Actions.LIST_URL,
32
65
  entity: 'designview',
33
66
  orderSequenceNumber: 'sequence_number'
34
- })));
67
+ }), /*#__PURE__*/_react["default"].createElement(_RaisedButton["default"], {
68
+ className: "orderList-button",
69
+ label: (0, _i18n.T)('designview.readFilesLabel'),
70
+ onClick: function onClick() {
71
+ return setShowDialog(true);
72
+ }
73
+ }), /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
74
+ title: (0, _i18n.T)('designview.readFilesLabel'),
75
+ actions: actions,
76
+ modal: 'true',
77
+ open: showDialog,
78
+ bodyClassName: "readFiles-dialogBody",
79
+ scroll: "paper"
80
+ }, /*#__PURE__*/_react["default"].createElement("div", {
81
+ style: {
82
+ paddingBottom: 10,
83
+ color: 'black'
84
+ }
85
+ }, (0, _i18n.T)('designview.readFilesExplanation')))));
35
86
  };
36
87
  var _default = exports["default"] = list;
@@ -153,13 +153,24 @@ var setItem = exports.setItem = function setItem(item) {
153
153
  item: item
154
154
  };
155
155
  };
156
+ var readFiles = function readFiles() {
157
+ return function (dispatch, getState) {
158
+ var _getState3 = getState(),
159
+ designerData = _getState3.designerData;
160
+ var id = designerData.data.id.value;
161
+ var url = "/designviews/syncfromfilesystem/".concat(id);
162
+ return (0, _Helpers.dispatchPostData)(dispatch)('READ_FILES', url, {}).then(function () {
163
+ return dispatch(invalidateList());
164
+ });
165
+ };
166
+ };
156
167
  var createEntity = function createEntity() {
157
168
  return function (dispatch, getState) {
158
169
  var p = dispatch(DesignViewActions.createEntity());
159
170
  p.then(function () {
160
171
  // set the item identifier after the new entity is initialized
161
- var _getState3 = getState(),
162
- designerData = _getState3.designerData;
172
+ var _getState4 = getState(),
173
+ designerData = _getState4.designerData;
163
174
  var id = designerData.data.id.value;
164
175
  dispatch(setItem(id));
165
176
  });
@@ -176,8 +187,8 @@ var removeDesignArea = function removeDesignArea(identifier) {
176
187
  if (idx !== -1) {
177
188
  designAreas.splice(idx, 1);
178
189
  dispatch(DesignViewActions.setFieldData('designAreas', designAreas));
179
- var _getState4 = getState(),
180
- designerData = _getState4.designerData;
190
+ var _getState5 = getState(),
191
+ designerData = _getState5.designerData;
181
192
  if (isCreatorDesignerMode(designerData)) {
182
193
  dispatch(CreatorViewActions.postData(false));
183
194
  } else {
@@ -192,8 +203,8 @@ var removeDesignArea = function removeDesignArea(identifier) {
192
203
  };
193
204
  var postData = function postData() {
194
205
  return function (dispatch, getState) {
195
- var _getState5 = getState(),
196
- designerData = _getState5.designerData;
206
+ var _getState6 = getState(),
207
+ designerData = _getState6.designerData;
197
208
  if (isCreatorDesignerMode(designerData)) {
198
209
  return dispatch(CreatorViewActions.postData(true));
199
210
  } else {
@@ -206,8 +217,8 @@ var detailsAction = function detailsAction() {
206
217
  args[_key] = arguments[_key];
207
218
  }
208
219
  return function (dispatch, getState) {
209
- var _getState6 = getState(),
210
- designerData = _getState6.designerData;
220
+ var _getState7 = getState(),
221
+ designerData = _getState7.designerData;
211
222
  if (isCreatorDesignerMode(designerData)) {
212
223
  return dispatch(CreatorViewActions.detailsAction.apply(CreatorViewActions, args));
213
224
  } else {
@@ -220,8 +231,8 @@ var hideDetails = function hideDetails() {
220
231
  args[_key2] = arguments[_key2];
221
232
  }
222
233
  return function (dispatch, getState) {
223
- var _getState7 = getState(),
224
- designerData = _getState7.designerData;
234
+ var _getState8 = getState(),
235
+ designerData = _getState8.designerData;
225
236
  if (isCreatorDesignerMode(designerData)) {
226
237
  return dispatch(CreatorViewActions.hideDetails.apply(CreatorViewActions, args));
227
238
  } else {
@@ -236,6 +247,7 @@ var mergedActions = _objectSpread(_objectSpread({}, DesignViewActions), {}, {
236
247
  listAction: listAction,
237
248
  invalidateList: invalidateList,
238
249
  createEntity: createEntity,
239
- removeDesignArea: removeDesignArea
250
+ removeDesignArea: removeDesignArea,
251
+ readFiles: readFiles
240
252
  });
241
253
  var _default = exports["default"] = mergedActions;
@@ -4,21 +4,27 @@ require("../../../../App/i18n").use({
4
4
  en: {
5
5
  designviews: 'Designviews',
6
6
  designview: {
7
- addButtonLabel: 'Add Designview'
7
+ addButtonLabel: 'Add Designview',
8
+ readFilesLabel: 'Read files',
9
+ cancel: 'Cancel',
10
+ readFilesExplanation: 'Reads the views and files from the file system. May overwrite existing maintained views and visual maintenance data.'
8
11
  },
9
12
  generalSettings: 'General settings',
10
13
  designcontainer: {
11
- imageUploadLabel: "Background image of the designarea"
14
+ imageUploadLabel: 'Background image of the designarea'
12
15
  }
13
16
  },
14
17
  de: {
15
18
  designviews: 'Designansichten',
16
19
  designview: {
17
- addButtonLabel: 'Designansichten hinzufügen'
20
+ addButtonLabel: 'Designansichten hinzufügen',
21
+ readFilesLabel: 'Auslesen',
22
+ cancel: 'Abbrechen',
23
+ readFilesExplanation: 'Liest die Ansichten und Dateien aus dem Dateisystem. Vorhandene gepflegte Ansichten und die visuelle Pflege können dabei überschrieben werden.'
18
24
  },
19
25
  generalSettings: 'Allgemeine Einstellungen',
20
26
  designcontainer: {
21
- imageUploadLabel: "Hintergrundbild der Designfläche"
27
+ imageUploadLabel: 'Hintergrundbild der Designfläche'
22
28
  }
23
29
  }
24
30
  }, true);
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _reactRedux = require("react-redux");
10
+ var _withStyles = _interopRequireDefault(require("@material-ui/core/styles/withStyles"));
11
+ var _lodash = _interopRequireDefault(require("lodash"));
12
+ var _i18n = require("../../../../App/i18n");
13
+ var _Button = _interopRequireDefault(require("../../../../UIComponents/Button"));
14
+ var _Hint = _interopRequireDefault(require("../../../../Components/Hint"));
15
+ var _Actions = require("../../Reducers/Actions");
16
+ var _ItemImageUploadDialog = _interopRequireDefault(require("./ItemImageUploadDialog"));
17
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
18
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
19
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
20
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
21
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
22
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
23
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
24
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
25
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
26
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
27
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
28
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
29
+ var styles = function styles(theme) {
30
+ return {
31
+ root: {
32
+ padding: theme.spacing.unit * 3
33
+ },
34
+ buttons: {
35
+ display: 'flex',
36
+ marginBottom: theme.spacing.unit * 2,
37
+ '& > *': {
38
+ marginRight: theme.spacing.unit * 2
39
+ }
40
+ }
41
+ };
42
+ };
43
+ var ImagesTab = function ImagesTab(_ref) {
44
+ var classes = _ref.classes,
45
+ itemId = _ref.itemId,
46
+ itemIdentifier = _ref.itemIdentifier,
47
+ itemTitle = _ref.itemTitle,
48
+ variants = _ref.variants;
49
+ var _useState = (0, _react.useState)(null),
50
+ _useState2 = _slicedToArray(_useState, 2),
51
+ openDialog = _useState2[0],
52
+ setOpenDialog = _useState2[1];
53
+ var items = itemId ? [{
54
+ id: itemId,
55
+ identifier: itemIdentifier,
56
+ title: itemTitle
57
+ }].concat(_toConsumableArray((variants || []).map(function (v) {
58
+ return {
59
+ id: v.id,
60
+ identifier: v.identifier,
61
+ title: v.title || v.identifier
62
+ };
63
+ }))) : [];
64
+ return /*#__PURE__*/_react["default"].createElement("div", {
65
+ className: classes.root
66
+ }, !itemId && /*#__PURE__*/_react["default"].createElement(_Hint["default"], {
67
+ hintText: (0, _i18n.T)('itemImages.saveFirstHint')
68
+ }), /*#__PURE__*/_react["default"].createElement("div", {
69
+ className: classes.buttons
70
+ }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
71
+ variant: "raised",
72
+ color: "primary",
73
+ disabled: !itemId,
74
+ onClick: function onClick() {
75
+ return setOpenDialog('detail');
76
+ }
77
+ }, (0, _i18n.T)('itemImages.buttonDetail')), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
78
+ variant: "raised",
79
+ color: "primary",
80
+ disabled: !itemId,
81
+ onClick: function onClick() {
82
+ return setOpenDialog('thumbnail');
83
+ }
84
+ }, (0, _i18n.T)('itemImages.buttonThumbnail'))), openDialog && /*#__PURE__*/_react["default"].createElement(_ItemImageUploadDialog["default"], {
85
+ open: true,
86
+ onClose: function onClose() {
87
+ return setOpenDialog(null);
88
+ },
89
+ kind: openDialog,
90
+ itemId: itemId,
91
+ items: items
92
+ }));
93
+ };
94
+ var _default = exports["default"] = (0, _withStyles["default"])(styles)((0, _reactRedux.connect)(function (state) {
95
+ return {
96
+ itemId: _lodash["default"].get(state, [_Actions.ITEM_REDUCER_NAME, 'data', 'id', 'value']),
97
+ itemIdentifier: _lodash["default"].get(state, [_Actions.ITEM_REDUCER_NAME, 'data', 'identifier', 'value']),
98
+ itemTitle: _lodash["default"].get(state, [_Actions.ITEM_REDUCER_NAME, 'data', 'translated_title', 'value']),
99
+ variants: _lodash["default"].get(state, [_Actions.ITEM_REDUCER_NAME, 'data', 'children', 'value'], [])
100
+ };
101
+ })(ImagesTab));
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _withStyles = _interopRequireDefault(require("@material-ui/core/styles/withStyles"));
10
+ var _i18n = require("../../../../App/i18n");
11
+ var _Api = _interopRequireDefault(require("../../../../App/Api"));
12
+ var _Dialog = _interopRequireDefault(require("../../../../UIComponents/Dialog"));
13
+ var _Button = _interopRequireDefault(require("../../../../UIComponents/Button"));
14
+ var _Image = _interopRequireDefault(require("../../../Creator/Components/VisualizationAndMediaData/Components/Image"));
15
+ var _ImageEditTools = _interopRequireDefault(require("../../../Creator/Components/VisualizationAndMediaData/Components/ImageEditTools"));
16
+ require("../../../Creator/Components/VisualizationAndMediaData/Translations");
17
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
18
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
19
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
20
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
21
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
22
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
23
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
24
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
25
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
26
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
27
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
28
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
29
+ var ItemImageTile = (0, _withStyles["default"])(function (theme) {
30
+ return {
31
+ tile: {
32
+ display: 'flex',
33
+ margin: theme.spacing.unit
34
+ },
35
+ tileColumn: {
36
+ flexDirection: 'column',
37
+ alignItems: 'center',
38
+ width: 150
39
+ },
40
+ tileRow: {
41
+ flexDirection: 'row',
42
+ alignItems: 'center'
43
+ },
44
+ imageWrapper: {
45
+ position: 'relative',
46
+ width: 100,
47
+ flexShrink: 0,
48
+ '&:hover $editTools': {
49
+ transform: 'scale(1, 1)'
50
+ }
51
+ },
52
+ editTools: {
53
+ transform: 'scale(0, 0)',
54
+ transition: 'transform ease-in-out 0.3s',
55
+ position: 'absolute',
56
+ top: 0,
57
+ left: '50%',
58
+ width: 100,
59
+ marginLeft: -50
60
+ },
61
+ imageLabel: {
62
+ display: 'flex',
63
+ flexDirection: 'column',
64
+ justifyContent: 'center'
65
+ },
66
+ imageLabelColumn: {
67
+ marginTop: theme.spacing.unit,
68
+ alignItems: 'center',
69
+ height: 38
70
+ },
71
+ imageLabelRow: {
72
+ marginLeft: theme.spacing.unit * 2,
73
+ flex: 1
74
+ },
75
+ imageLabelText: {
76
+ fontWeight: 'bold',
77
+ overflow: 'hidden',
78
+ textOverflow: 'ellipsis',
79
+ whiteSpace: 'nowrap'
80
+ },
81
+ imageStatus: {
82
+ fontSize: '0.8em'
83
+ }
84
+ };
85
+ })(function (_ref) {
86
+ var classes = _ref.classes,
87
+ src = _ref.src,
88
+ label = _ref.label,
89
+ uploadUrl = _ref.uploadUrl,
90
+ removeUrl = _ref.removeUrl,
91
+ onUpdate = _ref.onUpdate,
92
+ row = _ref.row;
93
+ var _useState = (0, _react.useState)(0),
94
+ _useState2 = _slicedToArray(_useState, 2),
95
+ version = _useState2[0],
96
+ setVersion = _useState2[1];
97
+ var handleUpdate = (0, _react.useCallback)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
98
+ return _regenerator().w(function (_context) {
99
+ while (1) switch (_context.n) {
100
+ case 0:
101
+ _context.n = 1;
102
+ return onUpdate();
103
+ case 1:
104
+ setVersion(function (v) {
105
+ return v + 1;
106
+ });
107
+ case 2:
108
+ return _context.a(2);
109
+ }
110
+ }, _callee);
111
+ })), [onUpdate]);
112
+ return /*#__PURE__*/_react["default"].createElement("div", {
113
+ className: "".concat(classes.tile, " ").concat(row ? classes.tileRow : classes.tileColumn)
114
+ }, /*#__PURE__*/_react["default"].createElement("div", {
115
+ className: classes.imageWrapper
116
+ }, /*#__PURE__*/_react["default"].createElement(_Image["default"], {
117
+ src: src ? "".concat(src, "?v=").concat(version) : null
118
+ }), /*#__PURE__*/_react["default"].createElement(_ImageEditTools["default"], {
119
+ className: classes.editTools,
120
+ uploadUrl: uploadUrl,
121
+ removeUrl: removeUrl,
122
+ deleteEnabled: !!src,
123
+ onUpdate: handleUpdate
124
+ })), /*#__PURE__*/_react["default"].createElement("div", {
125
+ className: "".concat(classes.imageLabel, " ").concat(row ? classes.imageLabelRow : classes.imageLabelColumn)
126
+ }, /*#__PURE__*/_react["default"].createElement("div", {
127
+ className: classes.imageLabelText
128
+ }, label), /*#__PURE__*/_react["default"].createElement("div", {
129
+ className: classes.imageStatus
130
+ }, src ? '' : (0, _i18n.t)('visualizationAndMediaData.imageStatus.noImage'))));
131
+ });
132
+ var ItemImageUploadDialog = (0, _withStyles["default"])(function (theme) {
133
+ return {
134
+ tilesContainer: {
135
+ display: 'flex',
136
+ padding: theme.spacing.unit
137
+ },
138
+ tilesWrap: {
139
+ flexWrap: 'wrap'
140
+ },
141
+ tilesColumn: {
142
+ flexDirection: 'column'
143
+ }
144
+ };
145
+ })(function (_ref3) {
146
+ var classes = _ref3.classes,
147
+ open = _ref3.open,
148
+ onClose = _ref3.onClose,
149
+ kind = _ref3.kind,
150
+ itemId = _ref3.itemId,
151
+ items = _ref3.items;
152
+ var _useState3 = (0, _react.useState)({}),
153
+ _useState4 = _slicedToArray(_useState3, 2),
154
+ imageSources = _useState4[0],
155
+ setImageSources = _useState4[1];
156
+ var loadImages = (0, _react.useCallback)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
157
+ var response, map, _t;
158
+ return _regenerator().w(function (_context2) {
159
+ while (1) switch (_context2.p = _context2.n) {
160
+ case 0:
161
+ _context2.p = 0;
162
+ _context2.n = 1;
163
+ return _Api["default"].request({
164
+ method: 'get',
165
+ url: "items/".concat(itemId, "/images")
166
+ });
167
+ case 1:
168
+ response = _context2.v;
169
+ map = kind === 'thumbnail' ? response.data.thumbnails : response.data.detailImages;
170
+ setImageSources(map || {});
171
+ _context2.n = 3;
172
+ break;
173
+ case 2:
174
+ _context2.p = 2;
175
+ _t = _context2.v;
176
+ setImageSources({});
177
+ case 3:
178
+ return _context2.a(2);
179
+ }
180
+ }, _callee2, null, [[0, 2]]);
181
+ })), [itemId, kind]);
182
+ (0, _react.useEffect)(function () {
183
+ if (open) {
184
+ loadImages();
185
+ }
186
+ }, [open, loadImages]);
187
+ var title = kind === 'thumbnail' ? (0, _i18n.t)('itemImages.dialogTitleThumbnail') : (0, _i18n.t)('itemImages.dialogTitleDetail');
188
+ var hasVariants = items.length > 1;
189
+ return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
190
+ open: open,
191
+ onClose: onClose,
192
+ title: title,
193
+ actions: /*#__PURE__*/_react["default"].createElement(_Button["default"], {
194
+ onClick: onClose,
195
+ color: "primary"
196
+ }, (0, _i18n.T)('itemImages.close'))
197
+ }, /*#__PURE__*/_react["default"].createElement("div", {
198
+ className: "".concat(classes.tilesContainer, " ").concat(hasVariants ? classes.tilesColumn : classes.tilesWrap)
199
+ }, items.map(function (item) {
200
+ return /*#__PURE__*/_react["default"].createElement(ItemImageTile, {
201
+ key: item.id,
202
+ src: imageSources[item.identifier] || null,
203
+ label: hasVariants && item === items[0] ? (0, _i18n.t)('itemImages.parentLabel') : item.title || item.identifier,
204
+ uploadUrl: "items/".concat(item.id, "/upload/item_image/").concat(kind),
205
+ removeUrl: "items/".concat(item.id, "/item_image/").concat(kind),
206
+ onUpdate: loadImages,
207
+ row: hasVariants
208
+ });
209
+ })));
210
+ });
211
+ var _default = exports["default"] = ItemImageUploadDialog;
@@ -11,6 +11,7 @@ var _withStyles = _interopRequireDefault(require("@material-ui/core/styles/withS
11
11
  var _CircularProgress = _interopRequireDefault(require("@material-ui/core/CircularProgress"));
12
12
  var _lodash = _interopRequireDefault(require("lodash"));
13
13
  var _Actions = _interopRequireWildcard(require("../Reducers/Actions"));
14
+ var _ImagesTab = _interopRequireDefault(require("../Components/Images/ImagesTab"));
14
15
  var _VariantsEditor = _interopRequireDefault(require("../Components/Variants/VariantsEditor"));
15
16
  var _Actions2 = _interopRequireWildcard(require("../Reducers/Variant/Actions"));
16
17
  var _Editor = _interopRequireDefault(require("../DataStructures/Attributes/Editor"));
@@ -417,7 +418,7 @@ var styles = function styles(theme) {
417
418
  color: theme.palette.common.white
418
419
  },
419
420
  MuiTabRoot: {
420
- minWidth: '50%'
421
+ minWidth: '33%'
421
422
  },
422
423
  linkText: {
423
424
  '& > a:hover': {
@@ -431,7 +432,8 @@ var styles = function styles(theme) {
431
432
  };
432
433
  var itemFormTabs = {
433
434
  baseData: 'baseData',
434
- variantsEditor: 'variantsEditor'
435
+ variantsEditor: 'variantsEditor',
436
+ images: 'images'
435
437
  };
436
438
  var ItemForm = /*#__PURE__*/function (_Component) {
437
439
  function ItemForm(props) {
@@ -481,6 +483,10 @@ var ItemForm = /*#__PURE__*/function (_Component) {
481
483
  itemId: itemId
482
484
  });
483
485
  }
486
+ case itemFormTabs.images:
487
+ {
488
+ return /*#__PURE__*/_react["default"].createElement(_ImagesTab["default"], null);
489
+ }
484
490
  }
485
491
  }
486
492
  }, {
@@ -109,7 +109,17 @@ require("../../App/i18n").use({
109
109
  selectionHeadline: 'The following variants are selectable:'
110
110
  },
111
111
  generalData: 'General data',
112
- configurationSettings: 'Configuration settings'
112
+ configurationSettings: 'Configuration settings',
113
+ images: 'Images',
114
+ itemImages: {
115
+ buttonThumbnail: 'Add item thumbnail(s)',
116
+ buttonDetail: 'Add item image(s)',
117
+ dialogTitleThumbnail: 'Item thumbnails',
118
+ dialogTitleDetail: 'Item images',
119
+ saveFirstHint: 'Please save the item first before uploading images.',
120
+ parentLabel: 'Base image (fallback)',
121
+ close: 'Close'
122
+ }
113
123
  },
114
124
  de: {
115
125
  Prices: 'Preise',
@@ -231,6 +241,16 @@ require("../../App/i18n").use({
231
241
  selectionHeadline: 'Folgende Varianten sind wählbar:'
232
242
  },
233
243
  generalData: 'Allgemeine Daten',
234
- configurationSettings: 'Konfigurator Einstellungen'
244
+ configurationSettings: 'Konfigurator Einstellungen',
245
+ images: 'Bilder',
246
+ itemImages: {
247
+ buttonThumbnail: 'Produktthumbnail(s) hinzufügen',
248
+ buttonDetail: 'Produktbild(er) hinzufügen',
249
+ dialogTitleThumbnail: 'Produktthumbnails',
250
+ close: 'Schließen',
251
+ dialogTitleDetail: 'Produktbilder',
252
+ saveFirstHint: 'Bitte speichere das Produkt zuerst, bevor du Bilder hochlädst.',
253
+ parentLabel: 'Basisbild (Fallback)'
254
+ }
235
255
  }
236
256
  }, true);
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ require("./Translations");
9
+ var _reactRedux = require("react-redux");
10
+ var _lodash = require("lodash");
11
+ var _i18n = require("../../App/i18n");
12
+ var _GeneralFragments = require("../../Components/GeneralFragments");
13
+ var _Hint = _interopRequireDefault(require("../../Components/Hint"));
14
+ var _CountryExclusionMatrix = _interopRequireDefault(require("../../Components/CountryExclusionMatrix"));
15
+ var _Actions = require("../../App/Reducers/Api/Actions");
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
17
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
18
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
19
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
20
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
21
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
22
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
23
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
24
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
25
+ var ITEMS_KEY = 'item_country_exclusions_items';
26
+ var COUNTRIES_KEY = 'item_country_exclusions_countries';
27
+ var EXCLUSIONS_KEY = 'item_country_exclusions_exclusions';
28
+ var EXCLUSIONS_LIST_KEY = 'item_country_exclusions_list';
29
+ function getList(dataSource) {
30
+ if (!dataSource || !dataSource.data) return [];
31
+ var data = dataSource.data;
32
+ return Array.isArray(data) ? data : data && data.data || [];
33
+ }
34
+ function getCountriesList(dataSource) {
35
+ if (!dataSource || !dataSource.data) return [];
36
+ var data = dataSource.data;
37
+ if (data && _typeof(data) === 'object' && !Array.isArray(data)) {
38
+ return Object.entries(data).map(function (_ref) {
39
+ var _ref2 = _slicedToArray(_ref, 2),
40
+ alpha2 = _ref2[0],
41
+ name = _ref2[1];
42
+ return {
43
+ alpha2: alpha2,
44
+ name: name || alpha2
45
+ };
46
+ });
47
+ }
48
+ return Array.isArray(data) ? data : data && data.data || [];
49
+ }
50
+ var ItemCountryExclusionsScreen = function ItemCountryExclusionsScreen(_ref3) {
51
+ var itemsSource = _ref3.itemsSource,
52
+ countriesSource = _ref3.countriesSource,
53
+ exclusionsSource = _ref3.exclusionsSource,
54
+ dispatch = _ref3.dispatch;
55
+ var _useState = (0, _react.useState)(function () {
56
+ return new Set();
57
+ }),
58
+ _useState2 = _slicedToArray(_useState, 2),
59
+ exclusionSet = _useState2[0],
60
+ setExclusionSet = _useState2[1];
61
+ var items = (0, _react.useMemo)(function () {
62
+ return getList(itemsSource);
63
+ }, [itemsSource]);
64
+ var countries = (0, _react.useMemo)(function () {
65
+ return getCountriesList(countriesSource);
66
+ }, [countriesSource]);
67
+ var exclusions = (0, _react.useMemo)(function () {
68
+ return getList(exclusionsSource);
69
+ }, [exclusionsSource]);
70
+ (0, _react.useEffect)(function () {
71
+ dispatch((0, _Actions.fetchDataIfNeeded)('items?limit=9999', ITEMS_KEY));
72
+ dispatch((0, _Actions.fetchDataIfNeeded)('itemexclusioncountries', COUNTRIES_KEY));
73
+ dispatch((0, _Actions.fetchDataIfNeeded)('itemcountryexclusions', EXCLUSIONS_LIST_KEY));
74
+ }, []);
75
+ (0, _react.useEffect)(function () {
76
+ if (exclusions) {
77
+ var set = new Set();
78
+ exclusions.forEach(function (exclusion) {
79
+ var itemId = (0, _lodash.get)(exclusion, 'item.id');
80
+ var alpha2 = (0, _lodash.get)(exclusion, 'country.alpha2');
81
+ if (itemId != null && alpha2) {
82
+ set.add("".concat(itemId, "-").concat(alpha2));
83
+ }
84
+ });
85
+ setExclusionSet(set);
86
+ }
87
+ }, [exclusions]);
88
+ var isFetching = (itemsSource === null || itemsSource === void 0 ? void 0 : itemsSource.isFetching) || (countriesSource === null || countriesSource === void 0 ? void 0 : countriesSource.isFetching) || (exclusionsSource === null || exclusionsSource === void 0 ? void 0 : exclusionsSource.isFetching);
89
+ var handleToggle = function handleToggle(itemId, countryAlpha2) {
90
+ var key = "".concat(itemId, "-").concat(countryAlpha2);
91
+ var excluded = exclusionSet.has(key);
92
+ if (excluded) {
93
+ dispatch((0, _Actions.deleteData)('itemcountryexclusions', "".concat(itemId, "/").concat(countryAlpha2), EXCLUSIONS_KEY)).then(function () {
94
+ setExclusionSet(function (prev) {
95
+ var next = new Set(prev);
96
+ next["delete"](key);
97
+ return next;
98
+ });
99
+ });
100
+ } else {
101
+ dispatch((0, _Actions.postData)("itemcountryexclusions/".concat(itemId, "/").concat(countryAlpha2), {}, EXCLUSIONS_KEY)).then(function () {
102
+ setExclusionSet(function (prev) {
103
+ return new Set(prev).add(key);
104
+ });
105
+ });
106
+ }
107
+ };
108
+ var rows = items.map(function (item) {
109
+ return {
110
+ id: (0, _lodash.get)(item, 'id'),
111
+ identifier: (0, _lodash.get)(item, 'identifier', ''),
112
+ translated_title: (0, _lodash.get)(item, 'translated_title', '')
113
+ };
114
+ });
115
+ return /*#__PURE__*/_react["default"].createElement("div", {
116
+ className: "item-country-exclusions-screen",
117
+ style: {
118
+ padding: 24
119
+ }
120
+ }, /*#__PURE__*/_react["default"].createElement(_GeneralFragments.Headline, {
121
+ text: (0, _i18n.T)('item_country_exclusion')
122
+ }), /*#__PURE__*/_react["default"].createElement(_Hint["default"], {
123
+ hintText: (0, _i18n.T)('itemCountryExclusionHint')
124
+ }), /*#__PURE__*/_react["default"].createElement("div", {
125
+ style: {
126
+ marginTop: 16
127
+ }
128
+ }, /*#__PURE__*/_react["default"].createElement(_CountryExclusionMatrix["default"], {
129
+ rows: rows,
130
+ countries: countries,
131
+ exclusionSet: exclusionSet,
132
+ onToggle: handleToggle,
133
+ loading: isFetching,
134
+ rowLabel: (0, _i18n.T)('itemCountryExclusionItemLandLabel')
135
+ })));
136
+ };
137
+ var mapStateToProps = function mapStateToProps(state) {
138
+ var dataBySource = (0, _lodash.get)(state, 'dataBySource', {});
139
+ return {
140
+ itemsSource: dataBySource[ITEMS_KEY],
141
+ countriesSource: dataBySource[COUNTRIES_KEY],
142
+ exclusionsSource: dataBySource[EXCLUSIONS_LIST_KEY]
143
+ };
144
+ };
145
+ var _default = exports["default"] = (0, _reactRedux.connect)(mapStateToProps)(ItemCountryExclusionsScreen);
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ require("../../App/i18n").use({
4
+ de: {
5
+ item_country_exclusion: 'Produkt-Land Ausschluss',
6
+ itemCountryExclusionItemLandLabel: 'Produkt / Land',
7
+ itemCountryExclusionHint: 'Markierte Produkte werden im entsprechenden Land ausgeblendet.'
8
+ },
9
+ en: {
10
+ item_country_exclusion: 'Product-Country Exclusion',
11
+ itemCountryExclusionItemLandLabel: 'Product / Country',
12
+ itemCountryExclusionHint: 'Checked products will be hidden in the corresponding country.'
13
+ }
14
+ }, true);
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _Screen = _interopRequireDefault(require("./Screen"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
9
+ var _default = exports["default"] = {
10
+ Screen: _Screen["default"],
11
+ credentials: ['item_country_exclusions']
12
+ };
@@ -11,10 +11,7 @@ var _lodash = require("lodash");
11
11
  var _i18n = require("../../App/i18n");
12
12
  var _GeneralFragments = require("../../Components/GeneralFragments");
13
13
  var _Hint = _interopRequireDefault(require("../../Components/Hint"));
14
- var _Table = require("../../UIComponents/Table");
15
- var _Checkbox = _interopRequireDefault(require("../../UIComponents/Checkbox"));
16
- var _CircularProgress = _interopRequireDefault(require("../../UIComponents/CircularProgress"));
17
- var _Tooltip = _interopRequireDefault(require("../../UIComponents/Tooltip"));
14
+ var _CountryExclusionMatrix = _interopRequireDefault(require("../../Components/CountryExclusionMatrix"));
18
15
  var _Actions = require("../../App/Reducers/Api/Actions");
19
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
20
17
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
@@ -89,15 +86,9 @@ var OptionCountryExclusionsScreen = function OptionCountryExclusionsScreen(_ref3
89
86
  }
90
87
  }, [exclusions]);
91
88
  var isFetching = (optionsSource === null || optionsSource === void 0 ? void 0 : optionsSource.isFetching) || (countriesSource === null || countriesSource === void 0 ? void 0 : countriesSource.isFetching) || (exclusionsSource === null || exclusionsSource === void 0 ? void 0 : exclusionsSource.isFetching);
92
- var hasData = options.length > 0 || countries.length > 0;
93
- var showLoader = isFetching && !hasData;
94
- var showMatrix = hasData && !isFetching;
95
- var isExcluded = function isExcluded(optionId, countryAlpha2) {
96
- return exclusionSet.has("".concat(optionId, "-").concat(countryAlpha2));
97
- };
98
89
  var handleToggle = function handleToggle(optionId, countryAlpha2) {
99
- var excluded = isExcluded(optionId, countryAlpha2);
100
90
  var key = "".concat(optionId, "-").concat(countryAlpha2);
91
+ var excluded = exclusionSet.has(key);
101
92
  if (excluded) {
102
93
  dispatch((0, _Actions.deleteData)('optioncountryexclusions', "".concat(optionId, "/").concat(countryAlpha2), EXCLUSIONS_KEY)).then(function () {
103
94
  setExclusionSet(function (prev) {
@@ -114,27 +105,13 @@ var OptionCountryExclusionsScreen = function OptionCountryExclusionsScreen(_ref3
114
105
  });
115
106
  }
116
107
  };
117
- if (showLoader) {
118
- return /*#__PURE__*/_react["default"].createElement("div", {
119
- className: "option-country-exclusions-screen",
120
- style: {
121
- padding: 24
122
- }
123
- }, /*#__PURE__*/_react["default"].createElement(_GeneralFragments.Headline, {
124
- text: (0, _i18n.T)('option_country_exclusion')
125
- }), /*#__PURE__*/_react["default"].createElement(_Hint["default"], {
126
- hintText: (0, _i18n.T)('optionCountryExclusionHint')
127
- }), /*#__PURE__*/_react["default"].createElement("div", {
128
- style: {
129
- display: 'flex',
130
- alignItems: 'center',
131
- gap: 16,
132
- marginTop: 16
133
- }
134
- }, /*#__PURE__*/_react["default"].createElement(_CircularProgress["default"], {
135
- size: 24
136
- }), /*#__PURE__*/_react["default"].createElement("span", null, (0, _i18n.T)('Loading data'), "...")));
137
- }
108
+ var rows = options.map(function (opt) {
109
+ return {
110
+ id: (0, _lodash.get)(opt, 'id'),
111
+ identifier: (0, _lodash.get)(opt, 'identifier', ''),
112
+ translated_title: (0, _lodash.get)(opt, 'translated_title', '')
113
+ };
114
+ });
138
115
  return /*#__PURE__*/_react["default"].createElement("div", {
139
116
  className: "option-country-exclusions-screen",
140
117
  style: {
@@ -144,63 +121,18 @@ var OptionCountryExclusionsScreen = function OptionCountryExclusionsScreen(_ref3
144
121
  text: (0, _i18n.T)('option_country_exclusion')
145
122
  }), /*#__PURE__*/_react["default"].createElement(_Hint["default"], {
146
123
  hintText: (0, _i18n.T)('optionCountryExclusionHint')
147
- }), showMatrix && /*#__PURE__*/_react["default"].createElement("div", {
148
- style: {
149
- overflowX: 'auto',
150
- marginTop: 16
151
- }
152
- }, /*#__PURE__*/_react["default"].createElement(_Table.Table, null, /*#__PURE__*/_react["default"].createElement(_Table.TableHead, null, /*#__PURE__*/_react["default"].createElement(_Table.TableRow, null, /*#__PURE__*/_react["default"].createElement(_Table.TableHeadColumn, {
153
- style: {
154
- minWidth: 220
155
- }
156
- }, (0, _i18n.T)('optionCountryExclusionOptionLandLabel')), countries.map(function (country) {
157
- var alpha2 = (0, _lodash.get)(country, 'alpha2');
158
- var name = (0, _lodash.get)(country, 'name') || alpha2;
159
- return /*#__PURE__*/_react["default"].createElement(_Table.TableHeadColumn, {
160
- key: alpha2,
161
- style: {
162
- minWidth: 60,
163
- textAlign: 'center'
164
- }
165
- }, /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
166
- title: name
167
- }, /*#__PURE__*/_react["default"].createElement("span", null, alpha2)));
168
- }))), /*#__PURE__*/_react["default"].createElement(_Table.TableBody, null, options.map(function (opt) {
169
- var optionId = (0, _lodash.get)(opt, 'id');
170
- var optionLabel = (0, _lodash.get)(opt, 'translated_title') || (0, _lodash.get)(opt, 'identifier');
171
- if (opt.translated_title) {
172
- optionLabel += " (".concat((0, _lodash.get)(opt, 'identifier'), ")");
173
- }
174
- return /*#__PURE__*/_react["default"].createElement(_Table.TableRow, {
175
- key: opt.id
176
- }, /*#__PURE__*/_react["default"].createElement(_Table.TableRowColumn, {
177
- style: {
178
- minWidth: 220
179
- }
180
- }, /*#__PURE__*/_react["default"].createElement("span", null, optionLabel)), countries.map(function (country) {
181
- var alpha2 = (0, _lodash.get)(country, 'alpha2');
182
- var checked = isExcluded(optionId, alpha2);
183
- return /*#__PURE__*/_react["default"].createElement(_Table.TableRowColumn, {
184
- key: alpha2,
185
- style: {
186
- textAlign: 'center'
187
- }
188
- }, /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], {
189
- checked: checked,
190
- onChange: function onChange() {
191
- return handleToggle(optionId, alpha2);
192
- }
193
- }));
194
- }));
195
- })))), !showMatrix && hasData && /*#__PURE__*/_react["default"].createElement("div", {
196
- style: {
197
- marginTop: 16
198
- }
199
- }, (0, _i18n.T)('Loading data'), "..."), !showLoader && !hasData && !isFetching && /*#__PURE__*/_react["default"].createElement("div", {
124
+ }), /*#__PURE__*/_react["default"].createElement("div", {
200
125
  style: {
201
126
  marginTop: 16
202
127
  }
203
- }, (0, _i18n.T)('There are no records')));
128
+ }, /*#__PURE__*/_react["default"].createElement(_CountryExclusionMatrix["default"], {
129
+ rows: rows,
130
+ countries: countries,
131
+ exclusionSet: exclusionSet,
132
+ onToggle: handleToggle,
133
+ loading: isFetching,
134
+ rowLabel: (0, _i18n.T)('optionCountryExclusionOptionLandLabel')
135
+ })));
204
136
  };
205
137
  var mapStateToProps = function mapStateToProps(state) {
206
138
  var dataBySource = (0, _lodash.get)(state, 'dataBySource', {});
@@ -17,6 +17,12 @@ var _OpenInNew = _interopRequireDefault(require("@material-ui/icons/OpenInNew"))
17
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
18
18
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
19
19
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
20
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
21
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
22
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
23
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
24
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
25
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
20
26
  function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
21
27
  function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
22
28
  function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
@@ -100,6 +106,13 @@ var ConfigurationDataSheet = exports["default"] = /*#__PURE__*/function (_Compon
100
106
  key: "renderConfigurationData",
101
107
  value: function renderConfigurationData(data, locale) {
102
108
  var configurationCode = (0, _lodash.get)(data, 'code.value', '');
109
+ var savedParams = (0, _lodash.get)(data, 'saveContextQueryParameters.value', {});
110
+ var params = new URLSearchParams(Object.entries(savedParams).map(function (_ref2) {
111
+ var _ref3 = _slicedToArray(_ref2, 2),
112
+ key = _ref3[0],
113
+ value = _ref3[1];
114
+ return ["_".concat(key), value];
115
+ }));
103
116
  return /*#__PURE__*/_react["default"].createElement("div", {
104
117
  className: "configuration-data"
105
118
  }, /*#__PURE__*/_react["default"].createElement(_core.Tooltip, {
@@ -121,7 +134,7 @@ var ConfigurationDataSheet = exports["default"] = /*#__PURE__*/function (_Compon
121
134
  label: "Code"
122
135
  }, /*#__PURE__*/_react["default"].createElement(_Link["default"], {
123
136
  target: "_blank",
124
- href: "".concat(_network["default"].configuratorBasePath, "code:").concat(configurationCode)
137
+ href: "".concat(_network["default"].configuratorBasePath, "code:").concat(configurationCode, "?").concat(params.toString())
125
138
  }, configurationCode, /*#__PURE__*/_react["default"].createElement(_OpenInNew["default"], {
126
139
  style: styles.icon
127
140
  }))), /*#__PURE__*/_react["default"].createElement(DataRow, {
@@ -228,7 +241,7 @@ var ConfigurationDataSheet = exports["default"] = /*#__PURE__*/function (_Compon
228
241
  style: styles.sectionTitle
229
242
  }, (0, _i18n.T)('productionDataLabel')), /*#__PURE__*/_react["default"].createElement(_RaisedButton["default"], {
230
243
  label: (0, _i18n.T)('productionDataDownloadButtonLabel'),
231
- href: "".concat(_network["default"].frontendBaseURL, "configurations/zip/production/").concat(configurationCode, "?_language=").concat(locale.replace('-', '_')),
244
+ href: "".concat(_network["default"].frontendBaseURL, "configurations/zip/production/").concat(configurationCode, "?").concat(params.toString()),
232
245
  primary: true,
233
246
  style: styles.button
234
247
  }))));
package/Screens/index.js CHANGED
@@ -138,6 +138,9 @@ function importFeature(featureName) {
138
138
  case 'option_country_exclusions':
139
139
  module = require("./OptionCountryExclusions");
140
140
  break;
141
+ case 'item_country_exclusions':
142
+ module = require("./ItemCountryExclusions");
143
+ break;
141
144
  case 'groups':
142
145
  module = require("./Group");
143
146
  break;
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@configuratorware/configurator-admingui",
3
- "version": "1.55.6",
3
+ "version": "1.56.0",
4
4
  "license": "UNLICENSED",
5
5
  "private": false,
6
6
  "dependencies": {
7
7
  "@babel/polyfill": "^7.12.1",
8
- "@configuratorware/scripts": "1.55.6",
8
+ "@configuratorware/scripts": "1.56.0",
9
9
  "@material-ui/core": "^3.9.4",
10
10
  "@material-ui/icons": "^3.0.2",
11
11
  "@tweenjs/tween.js": "^17.6.0",
@@ -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.55.6",
32
+ "redhotmagma-visualization": "1.56.0",
33
33
  "redux": "^4.1.0",
34
34
  "redux-logger": "^3.0.6",
35
35
  "redux-persist": "^5.10.0",