@configuratorware/configurator-frontendgui 1.35.8 → 1.36.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.
@@ -309,6 +309,10 @@ var Option = function Option(_ref) {
309
309
  }));
310
310
  };
311
311
 
312
+ var onAbstractClicked = function onAbstractClicked(event) {
313
+ event.stopPropagation();
314
+ };
315
+
312
316
  var onDetailsClicked = function onDetailsClicked(event) {
313
317
  event.stopPropagation();
314
318
  event.preventDefault();
@@ -450,7 +454,8 @@ var Option = function Option(_ref) {
450
454
  }, option.title), hasTextinput && renderTextInput(), !hidePrices && /*#__PURE__*/_react["default"].createElement("div", {
451
455
  className: classes.price
452
456
  }, option.priceFormatted), smallerScreen && renderControls('horizontal'), option["abstract"] && /*#__PURE__*/_react["default"].createElement(_Markdown["default"], {
453
- className: classes.description
457
+ className: classes.description,
458
+ onClick: onAbstractClicked
454
459
  }, option["abstract"]), renderActions()));
455
460
  };
456
461
 
@@ -508,6 +513,7 @@ var Option = function Option(_ref) {
508
513
  onOptionSelected: onOptionSelected,
509
514
  onOptionClicked: onOptionClicked,
510
515
  onAmountChanged: onAmountChanged,
516
+ onAbstractClicked: onAbstractClicked,
511
517
  onDetailsClicked: onDetailsClicked,
512
518
  onIncompatibilityClicked: onIncompatibilityClicked,
513
519
  onOptionGroupClicked: onOptionGroupClicked,
@@ -41,6 +41,8 @@ var _i18n = require("../../../../../Framework/i18n");
41
41
 
42
42
  var _Transformers = require("../../Utils/Transformers");
43
43
 
44
+ var _reactRedux = require("react-redux");
45
+
44
46
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
45
47
 
46
48
  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); }
@@ -206,6 +208,9 @@ var DesignerSelectionToolbox = function DesignerSelectionToolbox(props) {
206
208
  showCustomFontOverlay = _useState2[0],
207
209
  toggleCustomFontOverlay = _useState2[1];
208
210
 
211
+ var disableLinebreaks = (0, _reactRedux.useSelector)(function (state) {
212
+ return (0, _Selectors.isOneLineText)(state);
213
+ });
209
214
  return /*#__PURE__*/_react["default"].createElement("div", {
210
215
  className: classes.root
211
216
  }, /*#__PURE__*/_react["default"].createElement(_SelectionToolbox["default"], null, function (_ref) {
@@ -331,6 +336,7 @@ var DesignerSelectionToolbox = function DesignerSelectionToolbox(props) {
331
336
  }
332
337
 
333
338
  return renderTextEditor(_objectSpread(_objectSpread({}, textToolsRenderObj), {}, {
339
+ disableLinebreaks: disableLinebreaks,
334
340
  autoFocusWhenMounted: autoFocusEditor || !((0, _Selectors.isPlaceholderContent)(selectedObject.content) || (0, _isMobileDevice["default"])()),
335
341
  textEditorElementProps: textEditorElementProps,
336
342
  onChangeHTML: function onChangeHTML() {
@@ -62,6 +62,7 @@ var _exportNames = {
62
62
  parseColorData: true,
63
63
  getCameraViewListForDesignAreaList: true,
64
64
  getDesignViewListForDesignAreas: true,
65
+ getDesignAreaFromSelectedDesignView: true,
65
66
  getDefaultDesignAreaIdentifierFromProductionMethod: true,
66
67
  getDefaultColorsFromDesignProductionMethod: true,
67
68
  getDefaultTextColor: true,
@@ -76,7 +77,8 @@ var _exportNames = {
76
77
  getDesignAreaPreSelection: true,
77
78
  getDesignAreaColorAmount: true,
78
79
  getVectorizeForDesignProductionMethods: true,
79
- getImagesByDesignArea: true
80
+ getImagesByDesignArea: true,
81
+ isOneLineText: true
80
82
  };
81
83
  exports.getDesignProductionMethods = getDesignProductionMethods;
82
84
  exports.getDesignDataByDesignAreaIdentifier = getDesignDataByDesignAreaIdentifier;
@@ -122,13 +124,14 @@ exports.getColorsWithPalette = getColorsWithPalette;
122
124
  exports.getColorsFromCanvasData = getColorsFromCanvasData;
123
125
  exports.getColorsFromCanvasDataWithPalette = getColorsFromCanvasDataWithPalette;
124
126
  exports.findSmallestFontSizeInCanvasData = findSmallestFontSizeInCanvasData;
125
- exports.getImagesByDesignArea = exports.getVectorizeForDesignProductionMethods = exports.getDesignAreaColorAmount = exports.getDesignAreaPreSelection = exports.hasLastEditedDesignArea = exports.areAllDesignAreasEmpty = exports.getVectorizedImageColor = exports.areHashesCompatible = exports.getCurrentCompatibilityInfoHash = exports.getDesignAreaImageCompatibilityInfo = exports.contentHasText = exports.isPlaceholderContent = exports.getDefaultTextColor = exports.getDefaultColorsFromDesignProductionMethod = exports.getDefaultDesignAreaIdentifierFromProductionMethod = exports.getDesignViewListForDesignAreas = exports.getCameraViewListForDesignAreaList = exports.parseColorData = exports.createColorData = exports.rgbObjToHex = exports.rgbString2hex = exports.rgbToHex = exports.calculateColorDistance = exports.hexToRgbNumbers = exports.hexToRgb = exports.isValidHex = exports.getColorPalettes = exports.hasPlaceHolderImagesForActiveDesignArea = exports.getDesignAreaIdentifierToOpen = void 0;
127
+ exports.isOneLineText = isOneLineText;
128
+ exports.getImagesByDesignArea = exports.getVectorizeForDesignProductionMethods = exports.getDesignAreaColorAmount = exports.getDesignAreaPreSelection = exports.hasLastEditedDesignArea = exports.areAllDesignAreasEmpty = exports.getVectorizedImageColor = exports.areHashesCompatible = exports.getCurrentCompatibilityInfoHash = exports.getDesignAreaImageCompatibilityInfo = exports.contentHasText = exports.isPlaceholderContent = exports.getDefaultTextColor = exports.getDefaultColorsFromDesignProductionMethod = exports.getDefaultDesignAreaIdentifierFromProductionMethod = exports.getDesignAreaFromSelectedDesignView = exports.getDesignViewListForDesignAreas = exports.getCameraViewListForDesignAreaList = exports.parseColorData = exports.createColorData = exports.rgbObjToHex = exports.rgbString2hex = exports.rgbToHex = exports.calculateColorDistance = exports.hexToRgbNumbers = exports.hexToRgb = exports.isValidHex = exports.getColorPalettes = exports.hasPlaceHolderImagesForActiveDesignArea = exports.getDesignAreaIdentifierToOpen = void 0;
126
129
 
127
130
  var _get = _interopRequireDefault(require("lodash/get"));
128
131
 
129
132
  var _first = _interopRequireDefault(require("lodash/first"));
130
133
 
131
- var _find = _interopRequireDefault(require("lodash/find"));
134
+ var _find2 = _interopRequireDefault(require("lodash/find"));
132
135
 
133
136
  var _findKey = _interopRequireDefault(require("lodash/findKey"));
134
137
 
@@ -348,8 +351,9 @@ var getDesignAreaIdentifierToOpen = function getDesignAreaIdentifierToOpen(state
348
351
  var identifier = state.designArea.selectedDesignArea.identifier;
349
352
  var previousEditedDesignAreaIdentifier = getPreviousEditedDesignAreaIdentifier(state);
350
353
  var firstEditedDesignAreafromDesignData = getFirstEditedDesignAreafromDesignData(state);
354
+ var designAreaFromSelectedDesignView = getDesignAreaFromSelectedDesignView(state);
351
355
  var defaultDesignAreaFromProductionMethod = getDefaultDesignAreaIdentifierFromProductionMethod(state);
352
- return identifier || previousEditedDesignAreaIdentifier || firstEditedDesignAreafromDesignData || defaultDesignAreaFromProductionMethod || null;
356
+ return identifier || previousEditedDesignAreaIdentifier || firstEditedDesignAreafromDesignData || designAreaFromSelectedDesignView || defaultDesignAreaFromProductionMethod || null;
353
357
  };
354
358
 
355
359
  exports.getDesignAreaIdentifierToOpen = getDesignAreaIdentifierToOpen;
@@ -386,7 +390,7 @@ function getSelectedDesignProductionMethod(state) {
386
390
  var designProductionMethods = getDesignProductionMethods(state);
387
391
  var designAreaData = getDesignDataForSelectedDesignArea(state);
388
392
  var designProductionMethodIdentifier = designAreaData.designProductionMethodIdentifier;
389
- return (0, _find["default"])(designProductionMethods, {
393
+ return (0, _find2["default"])(designProductionMethods, {
390
394
  identifier: designProductionMethodIdentifier
391
395
  }) || (0, _first["default"])(designProductionMethods);
392
396
  }
@@ -487,14 +491,14 @@ function getSelectedDesignProductionMethodForDesignArea(state, designArea) {
487
491
  var _ref8 = designAreaData || {},
488
492
  designProductionMethodIdentifier = _ref8.designProductionMethodIdentifier;
489
493
 
490
- return (0, _find["default"])(designProductionMethods, {
494
+ return (0, _find2["default"])(designProductionMethods, {
491
495
  identifier: designProductionMethodIdentifier
492
496
  }) || (0, _first["default"])(designProductionMethods);
493
497
  }
494
498
 
495
499
  function getDesignProductionMethodByIdentifier(state, identifier) {
496
500
  var designProductionMethods = getDesignProductionMethods(state);
497
- return (0, _find["default"])(designProductionMethods, {
501
+ return (0, _find2["default"])(designProductionMethods, {
498
502
  identifier: identifier
499
503
  });
500
504
  }
@@ -678,7 +682,7 @@ function getEngravingBackgroundColor(state, designProductionMethod) {
678
682
  var _designProductionMethod = designProductionMethod || getSelectedDesignProductionMethod(state) || {};
679
683
 
680
684
  var engravingBackgroundColors = _designProductionMethod.engravingBackgroundColors;
681
- return (0, _get["default"])((0, _find["default"])(engravingBackgroundColors, {
685
+ return (0, _get["default"])((0, _find2["default"])(engravingBackgroundColors, {
682
686
  itemIdentifier: variantIdentifier || (0, _Selectors.getSelectedVariantIdentifier)((0, _Selectors.getConfigurator)(state))
683
687
  }), 'colorHex', 'rgba(0, 0, 0, 0.5)');
684
688
  }
@@ -1027,6 +1031,16 @@ var getDesignViewListForDesignAreas = function getDesignViewListForDesignAreas(s
1027
1031
 
1028
1032
  exports.getDesignViewListForDesignAreas = getDesignViewListForDesignAreas;
1029
1033
 
1034
+ var getDesignAreaFromSelectedDesignView = function getDesignAreaFromSelectedDesignView(state) {
1035
+ var _find;
1036
+
1037
+ var filteredDesignAreas = state.designArea.filteredDesignAreas,
1038
+ selectedDesignView = state.designView.selectedDesignView;
1039
+ return (_find = (0, _find2["default"])(filteredDesignAreas, ['designView.identifier', selectedDesignView.identifier])) === null || _find === void 0 ? void 0 : _find.identifier;
1040
+ };
1041
+
1042
+ exports.getDesignAreaFromSelectedDesignView = getDesignAreaFromSelectedDesignView;
1043
+
1030
1044
  var getDefaultDesignAreaIdentifierFromProductionMethod = function getDefaultDesignAreaIdentifierFromProductionMethod(state) {
1031
1045
  //return the first designArea with isDefault: true due to api call accepts multiple productionmethods to be default
1032
1046
  var filteredDesignAreas = state.designArea.filteredDesignAreas;
@@ -1083,12 +1097,12 @@ var getDefaultTextColor = function getDefaultTextColor(state) {
1083
1097
  var variantIdentifier = (0, _Selectors.getSelectedVariantIdentifier)((0, _Selectors.getConfigurator)(state));
1084
1098
 
1085
1099
  if (defaultColors && defaultColors[variantIdentifier]) {
1086
- var colorPalette = (0, _find["default"])(colorPalettes, {
1100
+ var colorPalette = (0, _find2["default"])(colorPalettes, {
1087
1101
  identifier: Object.keys(defaultColors[variantIdentifier])[0]
1088
1102
  });
1089
1103
 
1090
1104
  if (colorPalette) {
1091
- var color = (0, _find["default"])(colorPalette.colors, {
1105
+ var color = (0, _find2["default"])(colorPalette.colors, {
1092
1106
  identifier: defaultColors[variantIdentifier][colorPalette.identifier]
1093
1107
  });
1094
1108
 
@@ -1104,7 +1118,7 @@ var getDefaultTextColor = function getDefaultTextColor(state) {
1104
1118
  }
1105
1119
 
1106
1120
  var paletteDefaultColorIdentifier = (0, _get["default"])(colorPalettes[0], 'defaultColor.identifier', '');
1107
- var paletteDefaultColor = (0, _find["default"])(colorPalettes[0].colors, {
1121
+ var paletteDefaultColor = (0, _find2["default"])(colorPalettes[0].colors, {
1108
1122
  identifier: paletteDefaultColorIdentifier
1109
1123
  });
1110
1124
 
@@ -1254,7 +1268,7 @@ var getDesignAreaPreSelection = function getDesignAreaPreSelection(identifier) {
1254
1268
  return {};
1255
1269
  }
1256
1270
 
1257
- var preSelection = (0, _find["default"])(designerPreSelection.designAreas, {
1271
+ var preSelection = (0, _find2["default"])(designerPreSelection.designAreas, {
1258
1272
  identifier: identifier
1259
1273
  });
1260
1274
  return preSelection ? preSelection : {};
@@ -1301,4 +1315,8 @@ var getImagesByDesignArea = function getImagesByDesignArea(state, designAreaIden
1301
1315
  });
1302
1316
  };
1303
1317
 
1304
- exports.getImagesByDesignArea = getImagesByDesignArea;
1318
+ exports.getImagesByDesignArea = getImagesByDesignArea;
1319
+
1320
+ function isOneLineText(state) {
1321
+ return (0, _get["default"])(getSelectedDesignProductionMethod(state), 'oneLineText', false);
1322
+ }
@@ -83,6 +83,7 @@ var SendEmail = function SendEmail(props) {
83
83
  },
84
84
  id: "alert-dialog-description"
85
85
  }, (0, _i18n.t)('sendEmailDialog.info'))), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, /*#__PURE__*/_react["default"].createElement(_MainButton["default"], {
86
+ target: "_blank",
86
87
  href: emailUrl,
87
88
  onClick: onClose,
88
89
  variant: "contained",
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@configuratorware/configurator-frontendgui",
3
- "version": "1.35.8",
3
+ "version": "1.36.0",
4
4
  "license": "UNLICENSED",
5
5
  "private": false,
6
6
  "main": "./index.js",
7
7
  "dependencies": {
8
8
  "@babel/polyfill": "^7.12.1",
9
- "@configuratorware/scripts": "1.35.8",
9
+ "@configuratorware/scripts": "1.36.0",
10
10
  "@hot-loader/react-dom": "^17.0.1",
11
11
  "@material-ui/core": "^4.12.2",
12
12
  "@material-ui/icons": "^4.11.2",
@@ -39,8 +39,8 @@
39
39
  "react-router-dom": "^5.2.0",
40
40
  "react-swipeable": "^5.5.1",
41
41
  "react-zoom-pan-pinch": "^2.1.3",
42
- "redhotmagma-graphics-editor": "1.35.8",
43
- "redhotmagma-visualization": "1.35.8",
42
+ "redhotmagma-graphics-editor": "1.36.0",
43
+ "redhotmagma-visualization": "1.36.0",
44
44
  "redux": "^4.1.0",
45
45
  "redux-logger": "^3.0.6",
46
46
  "redux-persist": "^5.10.0",
@@ -253,6 +253,10 @@ const Option = ({ children, render, ...props }) => {
253
253
  });
254
254
  };
255
255
 
256
+ const onAbstractClicked = event => {
257
+ event.stopPropagation();
258
+ };
259
+
256
260
  const onDetailsClicked = event => {
257
261
  event.stopPropagation();
258
262
  event.preventDefault();
@@ -409,7 +413,9 @@ const Option = ({ children, render, ...props }) => {
409
413
  {!hidePrices && <div className={classes.price}>{option.priceFormatted}</div>}
410
414
  {smallerScreen && renderControls('horizontal')}
411
415
  {option.abstract && (
412
- <Markdown className={classes.description}>{option.abstract}</Markdown>
416
+ <Markdown className={classes.description} onClick={onAbstractClicked}>
417
+ {option.abstract}
418
+ </Markdown>
413
419
  )}
414
420
 
415
421
  {renderActions()}
@@ -481,6 +487,7 @@ const Option = ({ children, render, ...props }) => {
481
487
  onOptionSelected,
482
488
  onOptionClicked,
483
489
  onAmountChanged,
490
+ onAbstractClicked,
484
491
  onDetailsClicked,
485
492
  onIncompatibilityClicked,
486
493
  onOptionGroupClicked,
@@ -10,11 +10,12 @@ import TextControlbox from '../TextControlbox';
10
10
  import ImageControlbox from '../ImageControlbox';
11
11
  import { CustomFontOverlay } from './CustomFontOverlay';
12
12
  import { createFontItemProps, findCurrentFontItem } from './fontItemUtils';
13
- import { isPlaceholderContent } from 'App/Reducers/DesignArea/Selectors';
13
+ import { isPlaceholderContent, isOneLineText } from 'App/Reducers/DesignArea/Selectors';
14
14
  import isMobileDevice from 'Framework/Helpers/isMobileDevice';
15
15
  import { hasBackgroundColor } from 'App/Reducers/DesignData/Selectors';
16
16
  import { t } from 'Framework/i18n';
17
17
  import { isOriginalVector } from '../../Utils/Transformers';
18
+ import { useSelector } from 'react-redux';
18
19
 
19
20
  const styles = theme => ({
20
21
  root: {
@@ -138,6 +139,7 @@ const DesignerSelectionToolbox = props => {
138
139
  const rteRef = useRef(null);
139
140
  const editorRef = useRef(null);
140
141
  const [showCustomFontOverlay, toggleCustomFontOverlay] = useState(false);
142
+ const disableLinebreaks = useSelector(state => isOneLineText(state));
141
143
 
142
144
  return (
143
145
  <div className={classes.root}>
@@ -292,6 +294,7 @@ const DesignerSelectionToolbox = props => {
292
294
 
293
295
  return renderTextEditor({
294
296
  ...textToolsRenderObj,
297
+ disableLinebreaks,
295
298
  autoFocusWhenMounted:
296
299
  autoFocusEditor ||
297
300
  !(
@@ -125,11 +125,14 @@ export const getDesignAreaIdentifierToOpen = state => {
125
125
  } = state;
126
126
  const previousEditedDesignAreaIdentifier = getPreviousEditedDesignAreaIdentifier(state);
127
127
  const firstEditedDesignAreafromDesignData = getFirstEditedDesignAreafromDesignData(state);
128
+ const designAreaFromSelectedDesignView = getDesignAreaFromSelectedDesignView(state);
128
129
  const defaultDesignAreaFromProductionMethod = getDefaultDesignAreaIdentifierFromProductionMethod(state);
130
+
129
131
  return (
130
132
  identifier ||
131
133
  previousEditedDesignAreaIdentifier ||
132
134
  firstEditedDesignAreafromDesignData ||
135
+ designAreaFromSelectedDesignView ||
133
136
  defaultDesignAreaFromProductionMethod ||
134
137
  null
135
138
  );
@@ -672,6 +675,14 @@ export const getDesignViewListForDesignAreas = (state, designAreas) => {
672
675
  return designViewList;
673
676
  };
674
677
 
678
+ export const getDesignAreaFromSelectedDesignView = state => {
679
+ const {
680
+ designArea: { filteredDesignAreas },
681
+ designView: { selectedDesignView },
682
+ } = state;
683
+ return find(filteredDesignAreas, ['designView.identifier', selectedDesignView.identifier])?.identifier;
684
+ };
685
+
675
686
  export const getDefaultDesignAreaIdentifierFromProductionMethod = state => {
676
687
  //return the first designArea with isDefault: true due to api call accepts multiple productionmethods to be default
677
688
  const {
@@ -905,3 +916,7 @@ export const getImagesByDesignArea = (state, designAreaIdentifier) => {
905
916
  const designData = getDesignDataByDesignAreaIdentifier(state, designAreaIdentifier);
906
917
  return get(designData, 'canvasData.objects', []).filter(({ type }) => type === 'Image');
907
918
  };
919
+
920
+ export function isOneLineText(state) {
921
+ return get(getSelectedDesignProductionMethod(state), 'oneLineText', false);
922
+ }
@@ -262,6 +262,11 @@ describe('Reducers/DesignArea/Selectors', () => {
262
262
  selectedDesignArea: { identifier: 'a_2' },
263
263
  previousEditedDesignArea: {},
264
264
  },
265
+ designView: {
266
+ selectedDesignView: {
267
+ identifier: '01_side',
268
+ },
269
+ },
265
270
  configurator: {
266
271
  configuration: {
267
272
  designdata: {
@@ -600,6 +600,9 @@ describe('Services/DesignDataService', () => {
600
600
  selectedDesignArea: {},
601
601
  previousEditedDesignArea: {},
602
602
  },
603
+ designView: {
604
+ selectedDesignView: {},
605
+ },
603
606
  };
604
607
  dispatch = jest.fn();
605
608
  })();
@@ -624,6 +627,75 @@ describe('Services/DesignDataService', () => {
624
627
  expect(srv.selectFirstDesignArea).toHaveBeenCalled();
625
628
  }
626
629
  );
630
+ test(
631
+ '[INTEGRATION] openDesignAreaEditor calls the ui.show action to show the designer, and calls the ' +
632
+ 'designArea from designView because a designView is selected',
633
+ () => {
634
+ const mockStoreSrv = new (class StoreService {
635
+ static serviceName = 'StoreService';
636
+ state = {
637
+ configurator: {
638
+ configuration: {
639
+ designData: {},
640
+ },
641
+ },
642
+ designArea: {
643
+ selectedDesignArea: {},
644
+ previousEditedDesignArea: {},
645
+ filteredDesignAreas: [
646
+ {
647
+ identifier: 'back',
648
+ designView: {
649
+ identifier: '03_back',
650
+ },
651
+ designProductionMethods: [],
652
+ },
653
+ {
654
+ identifier: 'front',
655
+ designView: {
656
+ identifier: '02_front',
657
+ },
658
+ designProductionMethods: [],
659
+ },
660
+ {
661
+ identifier: 'side',
662
+ designView: {
663
+ identifier: '01_side',
664
+ },
665
+ designProductionMethods: [],
666
+ },
667
+ ],
668
+ },
669
+ designView: {
670
+ selectedDesignView: {
671
+ identifier: '01_side',
672
+ },
673
+ },
674
+ };
675
+ dispatch = jest.fn();
676
+ })();
677
+ ServiceLocator.provide(mockStoreSrv);
678
+ const mockUISrv = new (class UIService {
679
+ static serviceName = 'UIService';
680
+ show = jest.fn();
681
+ })();
682
+ ServiceLocator.provide(mockUISrv);
683
+ const mockVisualizationSrv = new (class VisualizationService {
684
+ static serviceName = 'VisualizationService';
685
+ enableUserMovement = jest.fn();
686
+ disableUserMovement = jest.fn();
687
+ freeUserMovement = jest.fn();
688
+ getActiveDesignArea = jest.fn();
689
+ })();
690
+ ServiceLocator.provide(mockVisualizationSrv);
691
+
692
+ const srv = new DesignDataService();
693
+ srv.selectDesignArea = jest.fn();
694
+ srv.openDesignAreaEditor();
695
+ expect(mockUISrv.show).toHaveBeenCalledWith('designer');
696
+ expect(srv.selectDesignArea).toHaveBeenCalledWith('side');
697
+ }
698
+ );
627
699
  test(
628
700
  '[INTEGRATION] openDesignAreaEditor calls the ui.show action to show the designer, and calls the ' +
629
701
  'designArea from designData with objects to open',
@@ -659,6 +731,9 @@ describe('Services/DesignDataService', () => {
659
731
  selectedDesignArea: {},
660
732
  previousEditedDesignArea: {},
661
733
  },
734
+ designView: {
735
+ selectedDesignView: {},
736
+ },
662
737
  };
663
738
  dispatch = jest.fn();
664
739
  })();
@@ -701,6 +776,9 @@ describe('Services/DesignDataService', () => {
701
776
  identifier: 'area-51',
702
777
  },
703
778
  },
779
+ designView: {
780
+ selectedDesignView: {},
781
+ },
704
782
  };
705
783
  dispatch = jest.fn();
706
784
  })();
@@ -739,6 +817,9 @@ describe('Services/DesignDataService', () => {
739
817
  },
740
818
  previousEditedDesignArea: {},
741
819
  },
820
+ designView: {
821
+ selectedDesignView: {},
822
+ },
742
823
  configurator: {
743
824
  configuration: {
744
825
  designdata: {
@@ -70,6 +70,7 @@ const SendEmail = props => {
70
70
  </DialogContent>
71
71
  <DialogActions>
72
72
  <MainButton
73
+ target="_blank"
73
74
  href={emailUrl}
74
75
  onClick={onClose}
75
76
  variant="contained"