@configuratorware/configurator-admingui 1.44.10 → 1.45.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.
@@ -9,6 +9,7 @@ var _ConfigurationActions = require("./ConfigurationActions");
9
9
  var _Reducer = require("../../../App/Reducers/Entity/Reducer");
10
10
  var _Helpers = require("../../../App/Reducers/Api/Helpers");
11
11
  var _FeatureReducers = require("../../../App/FeatureReducers");
12
+ var _Actions = require("../../../App/Reducers/Entity/Actions");
12
13
  var _excluded = ["data"],
13
14
  _excluded2 = ["is_mandatory", "is_multiselect"];
14
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -228,6 +229,14 @@ var baseConfigurationData = exports.baseConfigurationData = (0, _FeatureReducers
228
229
  showConfiguratorAdminMode: action.show
229
230
  });
230
231
  }
232
+
233
+ // hiding the details should close the configuration preview (CW-383)
234
+ case _Actions.HIDE_DETAILS:
235
+ {
236
+ return _objectSpread(_objectSpread({}, state), {}, {
237
+ showConfiguratorAdminMode: false
238
+ });
239
+ }
231
240
  case _ConfigurationActions.CONFIGURATION_SET_OVERWRITE_COMPONENT_ORDER:
232
241
  {
233
242
  var overwriteComponentOrder = action.value;
@@ -44,7 +44,7 @@ var Group = _ExposedModules.THREE.Group,
44
44
  Mesh = _ExposedModules.THREE.Mesh,
45
45
  CylinderGeometry = _ExposedModules.THREE.CylinderGeometry,
46
46
  BackSide = _ExposedModules.THREE.BackSide,
47
- PlaneBufferGeometry = _ExposedModules.THREE.PlaneBufferGeometry,
47
+ PlaneGeometry = _ExposedModules.THREE.PlaneGeometry,
48
48
  TextureLoader = _ExposedModules.THREE.TextureLoader,
49
49
  DoubleSide = _ExposedModules.THREE.DoubleSide,
50
50
  LinearFilter = _ExposedModules.THREE.LinearFilter;
@@ -141,7 +141,7 @@ var createTextureRepo = /*#__PURE__*/function () {
141
141
  var controlFactory = function controlFactory(textureRepo) {
142
142
  return function (name) {
143
143
  var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
144
- var geometry = new PlaneBufferGeometry(CONTROL_SIZE, CONTROL_SIZE);
144
+ var geometry = new PlaneGeometry(CONTROL_SIZE, CONTROL_SIZE);
145
145
  var material = new MeshBasicMaterial();
146
146
  var control = new Mesh(geometry, material);
147
147
  control.name = name;
@@ -662,7 +662,7 @@ var createThree2DEditor = exports.createThree2DEditor = /*#__PURE__*/function ()
662
662
  width: Math.round(baseShapeData.width * targetObj.scale.x),
663
663
  x: obj.position.x,
664
664
  y: obj.position.y,
665
- rotation: _objectSpread(_objectSpread({}, obj.rotation.toVector3()), {}, {
665
+ rotation: _objectSpread(_objectSpread({}, new Vector3().setFromEuler(obj.rotation)), {}, {
666
666
  order: obj.rotation.order
667
667
  })
668
668
  }, getShapeSpecificData(baseShapeData));
@@ -186,5 +186,5 @@ var mapDispatchToProps = function mapDispatchToProps(dispatch) {
186
186
  };
187
187
  };
188
188
  var _default = exports["default"] = (0, _reactRedux.connect)(function () {
189
- return null;
189
+ return {};
190
190
  }, mapDispatchToProps)(CopyCreatorItemDialog);
@@ -195,7 +195,8 @@ var mergeVariants = function mergeVariants(currentVariants, newVariants) {
195
195
  };
196
196
  var NarrowTableCell = (0, _styles.withStyles)({
197
197
  root: {
198
- paddingRight: 24
198
+ paddingRight: 12,
199
+ paddingLeft: 0
199
200
  }
200
201
  })(_TableCell["default"]);
201
202
  var VariantsEditor = /*#__PURE__*/function (_Component) {
@@ -507,26 +508,26 @@ var VariantsEditor = /*#__PURE__*/function (_Component) {
507
508
  sortKey: groups[groupId].id,
508
509
  listParams: _this2.state.listParams
509
510
  }));
510
- }))), /*#__PURE__*/_react["default"].createElement(_TableBody["default"], null, variants.slice().filter(function (variant) {
511
+ }))), /*#__PURE__*/_react["default"].createElement(_TableBody["default"], null, variants.filter(function (variant) {
511
512
  var filters = _this2.state.listParams.filters;
512
- var newVariants = [];
513
- if (filters) {
514
- for (var _i = 0, _Object$keys = Object.keys(filters); _i < _Object$keys.length; _i++) {
515
- var filter = _Object$keys[_i];
516
- if (variant[filter] && variant[filter].toLowerCase().indexOf(filters[filter].toLowerCase()) > -1) {
517
- return newVariants.push(variant);
518
- } else if (!variant[filter] && variant.groupEntries[filter].translation.toLowerCase().indexOf(filters[filter].toLowerCase()) > -1) {
519
- return newVariants.push(variant);
520
- }
521
- }
522
- } else {
523
- return variants.slice();
524
- }
513
+ var filterKeys = filters && Object.keys(filters);
514
+ return !(filterKeys !== null && filterKeys !== void 0 && filterKeys.length) || !filterKeys.some(function (filter) {
515
+ return (variant[filter] || variant.groupEntries[filter].translation || '').toLowerCase().indexOf(filters[filter].toLowerCase()) === -1;
516
+ });
525
517
  }).sort(function (a, b) {
526
518
  var prop = _this2.state.listParams.sortKey;
527
519
  var orderDir = _this2.state.listParams.sort;
528
520
  var modifier = orderDir === 'desc' ? -1 : 1;
529
- if (a[prop] < b[prop]) return -modifier;else if (a[prop] > b[prop]) return modifier;else return 0;
521
+ var value1, value2;
522
+ if (typeof prop === 'number') {
523
+ var _a$groupEntries, _b$groupEntries;
524
+ value1 = (_a$groupEntries = a.groupEntries) === null || _a$groupEntries === void 0 || (_a$groupEntries = _a$groupEntries[prop]) === null || _a$groupEntries === void 0 ? void 0 : _a$groupEntries.translation;
525
+ value2 = (_b$groupEntries = b.groupEntries) === null || _b$groupEntries === void 0 || (_b$groupEntries = _b$groupEntries[prop]) === null || _b$groupEntries === void 0 ? void 0 : _b$groupEntries.translation;
526
+ } else {
527
+ value1 = a[prop];
528
+ value2 = b[prop];
529
+ }
530
+ if (value1 < value2) return -modifier;else if (value1 > value2) return modifier;else return 0;
530
531
  }).slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage).map(function (variant) {
531
532
  return /*#__PURE__*/_react["default"].createElement(_TableRow["default"], {
532
533
  key: variant.id,
@@ -17,6 +17,8 @@ var _lodash = _interopRequireDefault(require("lodash"));
17
17
  var _withStyles = _interopRequireDefault(require("@material-ui/core/styles/withStyles"));
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
19
  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); }
20
+ 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; }
21
+ 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
22
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
21
23
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
22
24
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
@@ -31,7 +33,35 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
31
33
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
32
34
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
33
35
  var styles = function styles() {
34
- return {};
36
+ return {
37
+ sortLabelIcon: {
38
+ opacity: 0.5
39
+ },
40
+ formControlRoot: {
41
+ verticalAlign: 'middle',
42
+ top: -8,
43
+ maxWidth: 'calc(100% - 56px)',
44
+ minWidth: 50
45
+ },
46
+ columnText: {
47
+ display: 'inline-block',
48
+ maxWidth: 'calc(100% - 56px)',
49
+ overflow: 'hidden',
50
+ textOverflow: 'ellipsis',
51
+ verticalAlign: 'middle',
52
+ minWidth: 50
53
+ },
54
+ inputLabelRoot: {
55
+ maxWidth: '100%',
56
+ minWidth: 50,
57
+ overflow: 'hidden',
58
+ textOverflow: 'ellipsis'
59
+ },
60
+ inputLabelShrink: {
61
+ textOverflow: 'unset',
62
+ overflow: 'visible'
63
+ }
64
+ };
35
65
  };
36
66
  var VariantsSortFilter = /*#__PURE__*/function (_React$Component) {
37
67
  _inherits(VariantsSortFilter, _React$Component);
@@ -59,20 +89,13 @@ var VariantsSortFilter = /*#__PURE__*/function (_React$Component) {
59
89
  var key = filterKey;
60
90
  if (value && value.length > 0) {
61
91
  _this.updateListParams({
62
- filters: _defineProperty({}, key, value),
92
+ filters: _objectSpread(_objectSpread({}, _this.props.listParams.filters), {}, _defineProperty({}, key, value)),
63
93
  offset: 0
64
94
  });
65
95
  } else {
66
96
  _this.removeListParams(["filters[\"".concat(key, "\"]")]);
67
97
  }
68
98
  });
69
- _defineProperty(_assertThisInitialized(_this), "onBlur", function () {
70
- return setTimeout(function () {
71
- return !_this.props.listParams.value && _this.setState({
72
- open: false
73
- });
74
- }, 500);
75
- });
76
99
  _defineProperty(_assertThisInitialized(_this), "onToggleSort", function () {
77
100
  var sort;
78
101
  if (_this.props.listParams.sort === 'desc') {
@@ -99,7 +122,7 @@ var VariantsSortFilter = /*#__PURE__*/function (_React$Component) {
99
122
  _this.props.updateList(listParams);
100
123
  });
101
124
  _defineProperty(_assertThisInitialized(_this), "removeListParams", function (params) {
102
- var listParams = _lodash["default"].omit({}, _this.props.listParams, params);
125
+ var listParams = _lodash["default"].omit(_this.props.listParams, params);
103
126
  _this.props.updateList(listParams);
104
127
  });
105
128
  _defineProperty(_assertThisInitialized(_this), "renderFilter", function () {
@@ -130,20 +153,22 @@ var VariantsSortFilter = /*#__PURE__*/function (_React$Component) {
130
153
  onChange: function onChange(evt) {
131
154
  return _this.onFilterChange(evt.target.value);
132
155
  },
133
- onBlur: _this.onBlur,
134
156
  disableUnderline: true
135
157
  }));
136
158
  });
137
159
  _defineProperty(_assertThisInitialized(_this), "renderSort", function () {
138
160
  var _this$props2 = _this.props,
139
161
  classes = _this$props2.classes,
140
- sort = _this$props2.sort;
162
+ sort = _this$props2.sort,
163
+ sortKey = _this$props2.sortKey,
164
+ listParams = _this$props2.listParams;
165
+ var active = (listParams === null || listParams === void 0 ? void 0 : listParams.sortKey) === sortKey;
141
166
  return /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
142
167
  title: "Sort",
143
168
  enterDelay: 300
144
169
  }, /*#__PURE__*/_react["default"].createElement(_TableSortLabel["default"], {
145
- active: sort !== null,
146
- direction: sort || 'asc',
170
+ active: active,
171
+ direction: active && sort || 'asc',
147
172
  onClick: _this.onToggleSort,
148
173
  classes: {
149
174
  icon: classes.sortLabelIcon
@@ -68,7 +68,11 @@ var _default = exports["default"] = [{
68
68
  placeholder: 'item.attributes.searchOrAddAttribute',
69
69
  sourceConfig: {
70
70
  value: 'id',
71
- text: 'translated_title'
71
+ text: function text(_ref2) {
72
+ var translated_title = _ref2.translated_title,
73
+ identifier = _ref2.identifier;
74
+ return translated_title ? "".concat(translated_title, " (").concat(identifier, ")") : identifier;
75
+ }
72
76
  },
73
77
  dynSource: {
74
78
  type: 'autocomplete',
@@ -16,9 +16,8 @@ var _FolderIcon = _interopRequireDefault(require("../../../UIComponents/icons/Fo
16
16
  var _Link = _interopRequireDefault(require("@material-ui/core/Link"));
17
17
  var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
18
18
  var _Text = _interopRequireDefault(require("../../../Components/FormFragments/Text"));
19
- var _DefaultConnectedForm = _interopRequireDefault(require("../../../Components/DefaultConnectedForm"));
20
19
  var _reactFileDrop = _interopRequireDefault(require("react-file-drop"));
21
- var _RaisedButton = _interopRequireDefault(require("../../../UIComponents/RaisedButton"));
20
+ var _DefaultConnectedForm = _interopRequireDefault(require("../../../Components/DefaultConnectedForm"));
22
21
  var _excluded = ["value", "langCode", "readOnly"];
23
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
24
23
  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); }
@@ -123,9 +122,11 @@ var ConnectedTextField = function ConnectedTextField(_ref2) {
123
122
  _useState4 = _slicedToArray(_useState3, 2),
124
123
  uploadStatus = _useState4[0],
125
124
  setUploadStatus = _useState4[1];
126
- var fileInput = (0, _react.useRef)();
127
- var dropInput = (0, _react.useRef)();
128
- var dropZone = /*#__PURE__*/_react["default"].createRef();
125
+ var fileInputRef = _react["default"].useRef();
126
+ var _useState5 = (0, _react.useState)(null),
127
+ _useState6 = _slicedToArray(_useState5, 2),
128
+ selectedFile = _useState6[0],
129
+ setSelectedFile = _useState6[1];
129
130
  var downloadTranslation = /*#__PURE__*/function () {
130
131
  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(evt) {
131
132
  var result, blob, href, a;
@@ -171,42 +172,49 @@ var ConnectedTextField = function ConnectedTextField(_ref2) {
171
172
  while (1) switch (_context3.prev = _context3.next) {
172
173
  case 0:
173
174
  files = new FormData();
174
- if (!(file.length <= 0)) {
175
- _context3.next = 3;
175
+ if (file.length) {
176
+ _context3.next = 4;
176
177
  break;
177
178
  }
179
+ setSelectedFile(null);
178
180
  return _context3.abrupt("return");
179
- case 3:
181
+ case 4:
182
+ setSelectedFile(file[0]);
180
183
  files.append('translation', file[0]);
181
184
  params = {
182
185
  url: "/translations/frontend/".concat(langCode),
183
186
  method: 'POST',
184
187
  data: files
185
188
  };
186
- _context3.prev = 5;
189
+ _context3.prev = 7;
187
190
  setUploadStatus('pending');
188
- _context3.next = 9;
191
+ _context3.next = 11;
189
192
  return _Api["default"].request(params);
190
- case 9:
193
+ case 11:
191
194
  result = _context3.sent;
192
195
  setUploadStatus('successful');
193
196
  return _context3.abrupt("return", result);
194
- case 14:
195
- _context3.prev = 14;
196
- _context3.t0 = _context3["catch"](5);
197
+ case 16:
198
+ _context3.prev = 16;
199
+ _context3.t0 = _context3["catch"](7);
197
200
  setUploadStatus('failed');
198
201
  throw _context3.t0;
199
- case 18:
202
+ case 20:
203
+ _context3.prev = 20;
204
+ // reset file input field to allow upload the same file again (e.g. after changes)
205
+ fileInputRef.current.value = '';
206
+ return _context3.finish(20);
207
+ case 23:
200
208
  case "end":
201
209
  return _context3.stop();
202
210
  }
203
- }, _callee3, null, [[5, 14]]);
211
+ }, _callee3, null, [[7, 16, 20, 23]]);
204
212
  }));
205
213
  return function uploadTranslation(_x4, _x5) {
206
214
  return _ref4.apply(this, arguments);
207
215
  };
208
216
  }();
209
- var filename = fileInput.current && fileInput.current.files && fileInput.current.files.length > 0 && fileInput.current.files[0].name || dropInput.current && dropInput.current.files && dropInput.current.files.length > 0 && dropInput.current.files[0].name;
217
+ var filename = selectedFile === null || selectedFile === void 0 ? void 0 : selectedFile.name;
210
218
  return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_Text["default"], _extends({}, props, {
211
219
  readOnly: true,
212
220
  value: langCode
@@ -222,12 +230,9 @@ var ConnectedTextField = function ConnectedTextField(_ref2) {
222
230
  onDrop: function onDrop(file) {
223
231
  uploadTranslation(langCode, file);
224
232
  },
225
- ref: dropInput,
226
233
  draggingOverTargetClassName: 'draggingOverDropZone',
227
234
  accept: '.json',
228
235
  multiple: true
229
- }, /*#__PURE__*/_react["default"].createElement("div", {
230
- ref: dropZone
231
236
  }, /*#__PURE__*/_react["default"].createElement("div", {
232
237
  style: styles.uploader
233
238
  }, /*#__PURE__*/_react["default"].createElement("span", null, (0, _i18n.T)('dragDropFile'), '.json'), /*#__PURE__*/_react["default"].createElement(_Button["default"], {
@@ -235,14 +240,14 @@ var ConnectedTextField = function ConnectedTextField(_ref2) {
235
240
  }, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_FolderIcon["default"], {
236
241
  style: styles.folderIcon
237
242
  }), (0, _i18n.T)('Upload file')), /*#__PURE__*/_react["default"].createElement("input", {
238
- ref: fileInput,
239
243
  type: "file",
240
244
  style: styles.fileInput,
241
245
  accept: '.json',
242
246
  onChange: function onChange(evt) {
243
247
  return uploadTranslation(langCode, evt.target.files);
244
- }
245
- }))))), filename && /*#__PURE__*/_react["default"].createElement("div", {
248
+ },
249
+ ref: fileInputRef
250
+ })))), filename && /*#__PURE__*/_react["default"].createElement("div", {
246
251
  style: styles.fileInputName
247
252
  }, /*#__PURE__*/_react["default"].createElement("div", null, filename), uploadStatus === 'successful' && /*#__PURE__*/_react["default"].createElement("div", {
248
253
  style: styles.success
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@configuratorware/configurator-admingui",
3
- "version": "1.44.10",
3
+ "version": "1.45.1",
4
4
  "license": "UNLICENSED",
5
5
  "private": false,
6
6
  "dependencies": {
7
7
  "@babel/polyfill": "^7.12.1",
8
- "@configuratorware/scripts": "1.44.10",
8
+ "@configuratorware/scripts": "1.45.1",
9
9
  "@material-ui/core": "^3.9.4",
10
10
  "@material-ui/icons": "^3.0.2",
11
11
  "@tweenjs/tween.js": "^17.6.0",
@@ -28,7 +28,7 @@
28
28
  "react-redux-i18n": "^1.9.3",
29
29
  "react-router": "^3.2.6",
30
30
  "react-sortable-hoc": "^1.11.0",
31
- "redhotmagma-visualization": "1.44.10",
31
+ "redhotmagma-visualization": "1.45.1",
32
32
  "redux": "^4.1.0",
33
33
  "redux-logger": "^3.0.6",
34
34
  "redux-persist": "^5.10.0",