@configuratorware/configurator-frontendgui 1.41.2 → 1.42.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) hide show
  1. package/App/Constant.js +2 -3
  2. package/App/Error/DevelopmentErrorPage/index.js +4 -19
  3. package/App/Error/ErrorBoundary.js +13 -43
  4. package/App/Error/ProductionErrorPage/index.js +2 -11
  5. package/App/Error/ProductionErrorPage/index.story.js +0 -4
  6. package/App/Frame.js +10 -43
  7. package/App/Modules/Creator/Components/ConfigurationvariantItem/index.js +15 -58
  8. package/App/Modules/Creator/Components/ConfigurationvariantSelection/index.js +20 -60
  9. package/App/Modules/Creator/Components/CustomTitleEditor/index.js +15 -64
  10. package/App/Modules/Creator/Components/ExternalVisualization/index.js +19 -47
  11. package/App/Modules/Creator/Components/FastConfiguration/SelectableRow.js +10 -37
  12. package/App/Modules/Creator/Components/FastConfiguration/index.js +37 -101
  13. package/App/Modules/Creator/Components/FastConfigurationRow/index.js +12 -38
  14. package/App/Modules/Creator/Components/FastConfigurationSelect/index.js +29 -85
  15. package/App/Modules/Creator/Components/FormattedNumber/index.js +1 -17
  16. package/App/Modules/Creator/Components/FormattedPrice/index.js +1 -19
  17. package/App/Modules/Creator/Components/FullScreenView/FullScreenView.js +17 -36
  18. package/App/Modules/Creator/Components/Incompatibility/OptionExclusionRule/index.js +24 -61
  19. package/App/Modules/Creator/Components/Incompatibility/OptionRule/index.js +24 -60
  20. package/App/Modules/Creator/Components/Incompatibility/RuleComponent.js +12 -45
  21. package/App/Modules/Creator/Components/Incompatibility/index.js +28 -89
  22. package/App/Modules/Creator/Components/InvalidConfigurationNotice/index.js +14 -53
  23. package/App/Modules/Creator/Components/LoginForm/index.js +14 -52
  24. package/App/Modules/Creator/Components/Option/index.js +53 -155
  25. package/App/Modules/Creator/Components/Option/index.story.js +6 -17
  26. package/App/Modules/Creator/Components/OptionAmount/index.js +33 -74
  27. package/App/Modules/Creator/Components/OptionGroup/index.js +10 -23
  28. package/App/Modules/Creator/Components/Optiondetail/ZoomImage/index.js +26 -68
  29. package/App/Modules/Creator/Components/Optiondetail/index.js +44 -129
  30. package/App/Modules/Creator/Components/Optiondetail/index.story.js +11 -72
  31. package/App/Modules/Creator/Components/Optiondetail/index.test.mocks.js +56 -0
  32. package/App/Modules/Creator/Components/OptionsList/index.js +31 -81
  33. package/App/Modules/Creator/Components/Price/index.js +12 -40
  34. package/App/Modules/Creator/Components/ProductPart/index.js +14 -46
  35. package/App/Modules/Creator/Components/ProductPart/index.story.js +6 -17
  36. package/App/Modules/Creator/Components/ProductPartsList/index.js +25 -68
  37. package/App/Modules/Creator/Components/ProductPartsList/index.story.js +6 -21
  38. package/App/Modules/Creator/Components/SavedConfiguration/index.js +13 -45
  39. package/App/Modules/Creator/Components/ShareConfiguration/index.js +31 -90
  40. package/App/Modules/Creator/Components/StockInformation/index.js +13 -44
  41. package/App/Modules/Creator/Components/StoreConfigurationForm/index.js +15 -52
  42. package/App/Modules/Creator/Components/Tools/index.js +11 -45
  43. package/App/Modules/Creator/Components/ValidationResult/index.js +16 -62
  44. package/App/Modules/Creator/Components/index.js +2 -29
  45. package/App/Modules/Creator/Containers/AmountPrice/index.js +3 -12
  46. package/App/Modules/Creator/Containers/ConfigurationvariantSelection/index.js +5 -19
  47. package/App/Modules/Creator/Containers/CustomTitleEditor/index.js +4 -19
  48. package/App/Modules/Creator/Containers/FastConfiguration/index.js +6 -20
  49. package/App/Modules/Creator/Containers/FormattedPrice/index.js +4 -13
  50. package/App/Modules/Creator/Containers/Incompatibility/index.js +2 -12
  51. package/App/Modules/Creator/Containers/InvalidConfigurationNotice/index.js +8 -31
  52. package/App/Modules/Creator/Containers/LoadingOverlay/index.js +2 -9
  53. package/App/Modules/Creator/Containers/Optiondetail/index.js +7 -18
  54. package/App/Modules/Creator/Containers/OptionsList/index.js +3 -15
  55. package/App/Modules/Creator/Containers/ProductPart/index.js +1 -9
  56. package/App/Modules/Creator/Containers/ProductPartsList/index.js +3 -16
  57. package/App/Modules/Creator/Containers/SavedConfigurationContainer/index.js +1 -8
  58. package/App/Modules/Creator/Containers/ShareConfiguration/index.js +2 -10
  59. package/App/Modules/Creator/Containers/StockInformation/index.js +2 -10
  60. package/App/Modules/Creator/Containers/Tools/index.js +1 -10
  61. package/App/Modules/Creator/Containers/ValidationResult/index.js +2 -10
  62. package/App/Modules/Creator/Containers/index.js +42 -64
  63. package/App/Modules/Creator/CreatorScreen.js +45 -121
  64. package/App/Modules/Creator/Layouts/DefaultLayout.js +21 -50
  65. package/App/Modules/Designer/Components/AddGalleryImage/index.js +31 -92
  66. package/App/Modules/Designer/Components/AddGalleryImage/index.story.js +9 -22
  67. package/App/Modules/Designer/Components/AddGalleryImage/index.test.js +13 -35
  68. package/App/Modules/Designer/Components/AddVisualElement/index.js +30 -86
  69. package/App/Modules/Designer/Components/AddVisualElement/index.story.js +0 -5
  70. package/App/Modules/Designer/Components/AddVisualElement/index.test.js +12 -15
  71. package/App/Modules/Designer/Components/CloseDesignEditor/index.js +18 -51
  72. package/App/Modules/Designer/Components/CloseGraphicsEditorButton/index.js +7 -17
  73. package/App/Modules/Designer/Components/ColorPalettes/ColorPalettesSearch.js +20 -57
  74. package/App/Modules/Designer/Components/ColorPalettes/index.js +62 -178
  75. package/App/Modules/Designer/Components/ColorPalettes/index.story.js +0 -8
  76. package/App/Modules/Designer/Components/ColorPalettes/index.test.js +7 -11
  77. package/App/Modules/Designer/Components/DesignAreaControlbox/index.js +35 -108
  78. package/App/Modules/Designer/Components/DesignAreaControlbox/index.story.js +0 -8
  79. package/App/Modules/Designer/Components/DesignAreaControlbox/index.test.js +15 -23
  80. package/App/Modules/Designer/Components/DesignerSelectionToolbox/CustomFontOverlay.js +18 -51
  81. package/App/Modules/Designer/Components/DesignerSelectionToolbox/DesignerSelectionToolbox.js +53 -150
  82. package/App/Modules/Designer/Components/DesignerSelectionToolbox/fontItemUtils.js +10 -20
  83. package/App/Modules/Designer/Components/Dialog/index.js +21 -63
  84. package/App/Modules/Designer/Components/EditDesignButton/index.js +20 -43
  85. package/App/Modules/Designer/Components/FeedbackNotice/index.js +17 -53
  86. package/App/Modules/Designer/Components/FeedbackNotice/index.test.js +0 -4
  87. package/App/Modules/Designer/Components/FullScreenView/FullScreenView.js +6 -14
  88. package/App/Modules/Designer/Components/ImageColorPicker/ImageColorPicker.dev.js +5 -14
  89. package/App/Modules/Designer/Components/ImageColorPicker/ImageColorPicker.js +42 -137
  90. package/App/Modules/Designer/Components/ImageColorize/index.js +54 -177
  91. package/App/Modules/Designer/Components/ImageColorize/index.story.js +2 -6
  92. package/App/Modules/Designer/Components/ImageControlbox/index.js +27 -90
  93. package/App/Modules/Designer/Components/ImageEditDialog/ImageThumbnail.js +26 -71
  94. package/App/Modules/Designer/Components/ImageEditDialog/ImageUpload.js +138 -170
  95. package/App/Modules/Designer/Components/ImageEditDialog/index.js +55 -168
  96. package/App/Modules/Designer/Components/ImageLibraryFilter/index.js +20 -61
  97. package/App/Modules/Designer/Components/ImageLibraryThumbnail/index.js +24 -66
  98. package/App/Modules/Designer/Components/ObjectTools/index.js +18 -56
  99. package/App/Modules/Designer/Components/Select/index.js +21 -65
  100. package/App/Modules/Designer/Components/TextControlbox/TextFormatIcon.js +5 -20
  101. package/App/Modules/Designer/Components/TextControlbox/index.js +58 -176
  102. package/App/Modules/Designer/Components/TextControlbox/index.story.js +0 -10
  103. package/App/Modules/Designer/Components/TextControlbox/index.test.js +34 -41
  104. package/App/Modules/Designer/Containers/AddGalleryImage.js +8 -24
  105. package/App/Modules/Designer/Containers/AddVisualElement.js +28 -87
  106. package/App/Modules/Designer/Containers/CloseDesignEditor.js +1 -10
  107. package/App/Modules/Designer/Containers/CloseGraphicsEditorButton.js +1 -10
  108. package/App/Modules/Designer/Containers/ColorPalettes.js +22 -61
  109. package/App/Modules/Designer/Containers/DesignAreaControlbox.js +5 -17
  110. package/App/Modules/Designer/Containers/Designer.js +1 -10
  111. package/App/Modules/Designer/Containers/DesignerSelectionToolbox.js +7 -30
  112. package/App/Modules/Designer/Containers/EditDesignButton.js +1 -11
  113. package/App/Modules/Designer/Containers/ImageEditDialog.js +400 -658
  114. package/App/Modules/Designer/Designer.js +28 -84
  115. package/App/Modules/Designer/DesignerScreen.js +45 -100
  116. package/App/Modules/Designer/DesignerUI.js +31 -87
  117. package/App/Modules/Designer/Layouts/DefaultLayout.js +20 -45
  118. package/App/Modules/Designer/Layouts/Mobile/TwoSideBottomBar.js +4 -16
  119. package/App/Modules/Designer/Layouts/PopupAreaProvider.js +20 -67
  120. package/App/Modules/Designer/MultilayerComponents/DesignerClickAwayListener.js +5 -23
  121. package/App/Modules/Designer/MultilayerComponents/InlineToolboxPortal.js +19 -52
  122. package/App/Modules/Designer/MultilayerComponents/StandardToolboxPortal.js +9 -25
  123. package/App/Modules/Designer/Utils/FontFaceRepository.js +8 -30
  124. package/App/Modules/Designer/Utils/ImageEditUtils.js +14 -38
  125. package/App/Modules/Designer/Utils/SvgFixers.js +8 -26
  126. package/App/Modules/Designer/Utils/Transformers.js +54 -112
  127. package/App/Modules/Designer/setupDesigner.js +50 -72
  128. package/App/Modules/Designer/withActiveCanvas.js +22 -70
  129. package/App/Modules/Visualization/AlignTargetContainer.js +8 -19
  130. package/App/Modules/Visualization/CreatorAlignTarget.js +9 -20
  131. package/App/Modules/Visualization/DefaultVisualizationProvider.js +18 -50
  132. package/App/Modules/Visualization/DesignerAlignTarget.js +7 -13
  133. package/App/Modules/Visualization/Utils/getFirstDataURLFromScreenshotsObj.js +0 -3
  134. package/App/Reducers/Actions.js +81 -145
  135. package/App/Reducers/ConfigurationMode/Actions.js +4 -9
  136. package/App/Reducers/ConfigurationMode/Reducer.js +6 -23
  137. package/App/Reducers/ConfigurationMode/Selectors.js +22 -41
  138. package/App/Reducers/Configurator/Actions.js +386 -760
  139. package/App/Reducers/Configurator/AttributeSelectors.js +5 -17
  140. package/App/Reducers/Configurator/Modifiers.js +8 -15
  141. package/App/Reducers/Configurator/Reducer.js +107 -202
  142. package/App/Reducers/Configurator/Selectors.js +46 -119
  143. package/App/Reducers/Confirm/Actions.js +28 -49
  144. package/App/Reducers/Confirm/Reducer.js +1 -9
  145. package/App/Reducers/DesignArea/Actions.js +8 -29
  146. package/App/Reducers/DesignArea/DesignElementSelectors.js +18 -41
  147. package/App/Reducers/DesignArea/MaskSelectors.js +12 -35
  148. package/App/Reducers/DesignArea/Reducer.js +8 -40
  149. package/App/Reducers/DesignArea/Selectors.js +148 -413
  150. package/App/Reducers/DesignArea/Transformers.js +22 -87
  151. package/App/Reducers/DesignData/Actions.js +31 -93
  152. package/App/Reducers/DesignData/Modifiers.js +34 -114
  153. package/App/Reducers/DesignData/Reducer.js +9 -38
  154. package/App/Reducers/DesignData/Selectors.js +17 -50
  155. package/App/Reducers/DesignData/Transformers.js +2 -6
  156. package/App/Reducers/DesignView/Actions.js +3 -7
  157. package/App/Reducers/DesignView/Reducer.js +13 -47
  158. package/App/Reducers/DesignView/Selectors.js +17 -49
  159. package/App/Reducers/DesignView/Transformers.js +0 -3
  160. package/App/Reducers/Device/Actions.js +3 -7
  161. package/App/Reducers/Device/Reducer.js +9 -16
  162. package/App/Reducers/Fonts/Actions.js +12 -45
  163. package/App/Reducers/Fonts/Reducer.js +2 -11
  164. package/App/Reducers/Fonts/Selectors.js +9 -25
  165. package/App/Reducers/GeneralActions.js +3 -7
  166. package/App/Reducers/ImageGallery/Actions.js +97 -189
  167. package/App/Reducers/ImageGallery/Modifiers.js +13 -24
  168. package/App/Reducers/ImageGallery/Reducer.js +29 -98
  169. package/App/Reducers/ImageGallery/Selectors.js +21 -79
  170. package/App/Reducers/Reducer.js +10 -26
  171. package/App/Reducers/UI/Actions.js +73 -113
  172. package/App/Reducers/UI/Reducer.js +17 -26
  173. package/App/Reducers/UI/Selectors.js +3 -12
  174. package/App/Reducers.js +7 -21
  175. package/App/Routing.js +30 -107
  176. package/App/Screens/Configurator/CalculationWidgetScreen.js +10 -39
  177. package/App/Screens/Configurator/Components/AmountSelection/index.js +25 -77
  178. package/App/Screens/Configurator/Components/AmountSelection/index.story.js +0 -8
  179. package/App/Screens/Configurator/Components/CalculationWidget/index.js +53 -154
  180. package/App/Screens/Configurator/Components/CalculationWidget/index.story.js +6 -19
  181. package/App/Screens/Configurator/Components/CalculationWidget/index.test.js +39 -38
  182. package/App/Screens/Configurator/Components/ConfigurationModeSwitch/ConfigurationModeSwitch.js +7 -30
  183. package/App/Screens/Configurator/Components/ConfigurationModeSwitch/index.js +0 -2
  184. package/App/Screens/Configurator/Components/Confirm/index.js +13 -50
  185. package/App/Screens/Configurator/Components/Error/index.js +11 -48
  186. package/App/Screens/Configurator/Components/FallbackVisualization/FallbackVisualization.js +13 -25
  187. package/App/Screens/Configurator/Components/FullScreenView/index.js +37 -116
  188. package/App/Screens/Configurator/Components/FullScreenView/index.test.js +1 -4
  189. package/App/Screens/Configurator/Components/ImageLoader/ImageLoader.js +11 -42
  190. package/App/Screens/Configurator/Components/ItemTile/ItemTile.js +89 -33
  191. package/App/Screens/Configurator/Components/LandscapeInformation/index.js +3 -19
  192. package/App/Screens/Configurator/Components/NoVisualization/NoVisualization.js +3 -11
  193. package/App/Screens/Configurator/Components/PreviewPortal/index.js +29 -81
  194. package/App/Screens/Configurator/Components/Thumbnail/index.js +36 -102
  195. package/App/Screens/Configurator/Components/Thumbnail/index.test.js +0 -4
  196. package/App/Screens/Configurator/Components/TotalPrice/TotalPrice.js +9 -24
  197. package/App/Screens/Configurator/Containers/AmountPrice.js +12 -36
  198. package/App/Screens/Configurator/Containers/CalculationWidget.js +24 -85
  199. package/App/Screens/Configurator/Containers/ConfigurationModeSwitch.js +22 -43
  200. package/App/Screens/Configurator/Containers/Confirm.js +1 -10
  201. package/App/Screens/Configurator/Containers/FallbackVisualization.js +1 -11
  202. package/App/Screens/Configurator/Containers/FullScreenView.js +1 -14
  203. package/App/Screens/Configurator/Containers/Thumbnail.js +1 -13
  204. package/App/Screens/Configurator/Containers/Visualization.js +1 -5
  205. package/App/Screens/Configurator/DynamicComponents.js +8 -22
  206. package/App/Screens/Configurator/Screen.js +31 -70
  207. package/App/Screens/Configurator/ScreenPropTypes.js +2 -6
  208. package/App/Screens/Configurator/ThemeProvider.js +8 -42
  209. package/App/Screens/DesignerProductPreview/Constants.js +4 -7
  210. package/App/Screens/DesignerProductPreview/DesignerProductPreviewManager.js +204 -289
  211. package/App/Screens/DesignerProductPreview/Screen.js +58 -139
  212. package/App/Screens/ItemOverview.js +156 -191
  213. package/App/Screens.js +12 -20
  214. package/App/ServiceLocator.js +26 -51
  215. package/App/Services/AdminareaCommunicationService.js +33 -69
  216. package/App/Services/AnalyticsService.js +13 -40
  217. package/App/Services/ConfiguratorService.js +381 -567
  218. package/App/Services/DesignDataService.js +1448 -2001
  219. package/App/Services/DesignerService.js +290 -350
  220. package/App/Services/InteractionService.js +349 -502
  221. package/App/Services/UIService.js +12 -39
  222. package/App/Services/VisualizationService.js +246 -336
  223. package/App/Shared/Components/AcceptDesign/index.js +27 -70
  224. package/App/Shared/Components/AcceptPrivacy/index.js +21 -58
  225. package/App/Shared/Components/AddToBasket/index.js +31 -81
  226. package/App/Shared/Components/AddToBasket/index.story.js +0 -9
  227. package/App/Shared/Components/AlertDialog/index.js +15 -57
  228. package/App/Shared/Components/AmountInput/index.js +34 -107
  229. package/App/Shared/Components/AmountInput/index.story.js +0 -6
  230. package/App/Shared/Components/AmountPrice/index.js +220 -382
  231. package/App/Shared/Components/AmountPrice/index.story.js +1 -10
  232. package/App/Shared/Components/AmountPrice/index.test.js +6 -12
  233. package/App/Shared/Components/Analytics/AnalyticsWrapper.js +9 -21
  234. package/App/Shared/Components/BulkNames/index.js +28 -92
  235. package/App/Shared/Components/CallToAction/index.js +18 -42
  236. package/App/Shared/Components/ConfigurationOverview/index.js +14 -47
  237. package/App/Shared/Components/Header/Header.js +18 -46
  238. package/App/Shared/Components/Header/index.js +0 -2
  239. package/App/Shared/Components/Header/index.story.js +0 -13
  240. package/App/Shared/Components/InformationTag/InformationTag.js +20 -55
  241. package/App/Shared/Components/LicenseNotice/LicenseNotice.js +20 -54
  242. package/App/Shared/Components/LicenseNotice/index.js +0 -2
  243. package/App/Shared/Components/LoadConfiguration/index.js +47 -82
  244. package/App/Shared/Components/MessageBox/index.js +2 -19
  245. package/App/Shared/Components/MessageBox/index.story.js +0 -7
  246. package/App/Shared/Components/Notification/index.js +18 -53
  247. package/App/Shared/Components/Notification/index.story.js +0 -4
  248. package/App/Shared/Components/PdfDownload/index.js +19 -59
  249. package/App/Shared/Components/PlusMinusInput/index.js +13 -37
  250. package/App/Shared/Components/PriceList/index.js +27 -78
  251. package/App/Shared/Components/PriceList/index.story.js +6 -15
  252. package/App/Shared/Components/PriceOverview/index.js +29 -74
  253. package/App/Shared/Components/PriceOverview/index.story.js +1 -18
  254. package/App/Shared/Components/ProductVariant/Image.js +13 -35
  255. package/App/Shared/Components/ProductVariant/index.js +34 -123
  256. package/App/Shared/Components/ProductVariant/index.story.js +9 -22
  257. package/App/Shared/Components/Progress/Progress.js +6 -15
  258. package/App/Shared/Components/ReceiveOfferForm/index.js +26 -80
  259. package/App/Shared/Components/ReceiveOfferForm/index.story.js +0 -6
  260. package/App/Shared/Components/ReceiveOfferForm/index.test.js +1 -6
  261. package/App/Shared/Components/SaveConfiguration/index.js +26 -83
  262. package/App/Shared/Components/SendEmail/index.js +8 -30
  263. package/App/Shared/Components/Stepper/index.js +19 -56
  264. package/App/Shared/Components/Stepper/index.story.js +0 -5
  265. package/App/Shared/Components/ToolbarList/index.js +23 -69
  266. package/App/Shared/Components/ToolbarList/index.story.js +0 -4
  267. package/App/Shared/Components/VariantChooser/index.js +25 -68
  268. package/App/Shared/Components/VariantChooser/index.story.js +0 -13
  269. package/App/Shared/Containers/AlertMessages.js +1 -11
  270. package/App/Shared/Containers/AmountPrice/AmountPriceAdminareaWrapper.js +4 -17
  271. package/App/Shared/Containers/AmountPrice/index.js +29 -74
  272. package/App/Shared/Containers/BulkNames.js +26 -117
  273. package/App/Shared/Containers/Error.js +1 -11
  274. package/App/Shared/Containers/GlobalLoader.js +1 -9
  275. package/App/Shared/Containers/Header/index.js +22 -57
  276. package/App/Shared/Containers/LicenseNotice/LicenseNotice.js +2 -9
  277. package/App/Shared/Containers/LicenseNotice/index.js +0 -2
  278. package/App/Shared/Containers/LoadConfiguration/LoadConfiguration.js +36 -79
  279. package/App/Shared/Containers/LoadConfiguration/index.js +0 -2
  280. package/App/Shared/Containers/PdfDownload/index.js +2 -11
  281. package/App/Shared/Containers/ProductVariant/ProductVariant.js +59 -144
  282. package/App/Shared/Containers/ProductVariant/index.js +0 -2
  283. package/App/Shared/Containers/SaveConfiguration.js +3 -14
  284. package/App/Shared/Containers/SendEmail/SendEmail.js +3 -15
  285. package/App/Shared/Containers/SendEmail/index.js +0 -2
  286. package/App/Shared/Providers/DefaultCanvasProvider.js +5 -25
  287. package/App/Storage.js +3 -7
  288. package/App/Store.js +17 -38
  289. package/App/Translations.js +29 -43
  290. package/App/Utils/Request/lazyFetch.js +29 -45
  291. package/App/Utils/Request/pathParams.js +2 -7
  292. package/App/Utils/createMessageInterface.js +10 -21
  293. package/App/Utils/customClassName.js +0 -2
  294. package/App/Utils/getContrastText.js +5 -7
  295. package/App/Utils/getImageUrl.js +0 -8
  296. package/App/configuration.js +74 -104
  297. package/App/index.js +7 -29
  298. package/App/initServices.js +9 -32
  299. package/App/setup.js +2 -6
  300. package/Framework/Api.js +19 -41
  301. package/Framework/ComponentContainer.js +28 -76
  302. package/Framework/Components/Carousel/index.js +40 -104
  303. package/Framework/Components/Dialog/index.js +101 -237
  304. package/Framework/Components/DialogSelect/index.js +38 -132
  305. package/Framework/Components/Input/index.js +16 -58
  306. package/Framework/Components/LoadingOverlay/index.js +1 -12
  307. package/Framework/Components/Markdown/index.js +5 -26
  308. package/Framework/Components/Mobile/index.js +5 -13
  309. package/Framework/CustomError.js +13 -29
  310. package/Framework/Helpers/TransitionDetect.js +10 -29
  311. package/Framework/Helpers/isLandscapeMobile.js +0 -3
  312. package/Framework/Helpers/isMobileDevice.js +3 -8
  313. package/Framework/Helpers/isMobileSize.js +1 -4
  314. package/Framework/Services/AbstractAdminareaCommunicationService.js +8 -15
  315. package/Framework/Services/AbstractAsyncService.js +7 -14
  316. package/Framework/Services/AbstractConfiguratorService.js +9 -15
  317. package/Framework/Services/AbstractInteractionService.js +7 -14
  318. package/Framework/Services/AbstractStoreService.js +9 -15
  319. package/Framework/Services/AbstractUIService.js +7 -14
  320. package/Framework/Services/AbstractVisualizationService.js +7 -14
  321. package/Framework/Services/AsyncService.js +11 -33
  322. package/Framework/Services/StoreService.js +43 -92
  323. package/Framework/bindDecorator.js +24 -54
  324. package/Framework/i18n.js +57 -142
  325. package/Resources/Icons/MaterialUI/Icons/AddCircle.js +1 -5
  326. package/Resources/Icons/MaterialUI/Icons/RemoveCircle.js +1 -5
  327. package/Shared/Components/CustomDialog.js +21 -36
  328. package/Shared/Components/CustomDialogSelect.js +17 -47
  329. package/Shared/Components/MainButton.js +14 -33
  330. package/Shared/ErrorTypes/DeferredError.js +13 -31
  331. package/Shared/HOCs/ResizeDetect/ResizeDetect.dev.js +9 -18
  332. package/Shared/HOCs/ResizeDetect/ResizeDetect.js +28 -87
  333. package/Shared/HOCs/getDisplayName.js +0 -1
  334. package/Shared/HOCs/withFixedChangeHandler.js +11 -25
  335. package/Shared/PropTypes/ReactComponent.js +1 -5
  336. package/Shared/Styles/absoluteCenter.js +2 -5
  337. package/Utils/Array/isIdentical.js +3 -12
  338. package/Utils/Async/AsyncManager.js +51 -75
  339. package/Utils/Async/Deferred.js +12 -40
  340. package/Utils/Async/ObjectLock.js +3 -7
  341. package/Utils/Decorators/Observable.js +17 -34
  342. package/Utils/Dev/HOCs/withFilePicker.js +13 -41
  343. package/Utils/Dev/isDev.js +0 -2
  344. package/Utils/Events/pointerEvent.js +14 -47
  345. package/Utils/Events/preventEventDoubling.js +2 -7
  346. package/Utils/Function/cached.js +1 -9
  347. package/Utils/Function/createDebounceManager.js +3 -18
  348. package/Utils/Function/createSelector.js +7 -18
  349. package/Utils/Function/memoize.js +3 -12
  350. package/Utils/Function/sendMessage.js +3 -8
  351. package/Utils/Helper/createSelectionRangeMemo.js +4 -12
  352. package/Utils/Immutable/set.js +12 -35
  353. package/Utils/Math/conversions.js +2 -5
  354. package/Utils/Math/isPositiveNumber.js +2 -5
  355. package/Utils/Redux/createActionWithGlobalState.js +8 -11
  356. package/Utils/Styles/combineMediaQueries.js +2 -6
  357. package/Utils/Styles/createCheckerBoardBackground.js +5 -6
  358. package/Utils/Test/CallOrderChecker.js +0 -3
  359. package/Utils/Test/createStoreProvider.js +1 -7
  360. package/Utils/Test/formDataToJSON.js +0 -1
  361. package/Utils/Test/mountWithState.js +3 -9
  362. package/index.js +2 -2
  363. package/package.json +36 -33
  364. package/public/translations/de_DE.json +3 -27
  365. package/public/translations/en_GB.json +2 -26
  366. package/scripts/getDefaultWebpackConfig.js +25 -14
  367. package/src/App/Error/ProductionErrorPage/index.js +1 -1
  368. package/src/App/Modules/Creator/Components/ConfigurationvariantItem/index.js +3 -4
  369. package/src/App/Modules/Creator/Components/ConfigurationvariantSelection/index.js +2 -1
  370. package/src/App/Modules/Creator/Components/FastConfiguration/SelectableRow.js +1 -1
  371. package/src/App/Modules/Creator/Components/FastConfiguration/index.js +6 -5
  372. package/src/App/Modules/Creator/Components/FastConfigurationSelect/index.js +8 -6
  373. package/src/App/Modules/Creator/Components/FullScreenView/FullScreenView.js +3 -1
  374. package/src/App/Modules/Creator/Components/Incompatibility/OptionExclusionRule/index.js +2 -2
  375. package/src/App/Modules/Creator/Components/Incompatibility/OptionRule/index.js +2 -2
  376. package/src/App/Modules/Creator/Components/Incompatibility/index.js +2 -2
  377. package/src/App/Modules/Creator/Components/InvalidConfigurationNotice/index.js +1 -1
  378. package/src/App/Modules/Creator/Components/Option/__snapshots__/index.test.js.snap +0 -13
  379. package/src/App/Modules/Creator/Components/Option/index.js +9 -6
  380. package/src/App/Modules/Creator/Components/Option/index.test.js +1 -1
  381. package/src/App/Modules/Creator/Components/OptionAmount/index.js +2 -1
  382. package/src/App/Modules/Creator/Components/OptionAmount/index.test.js +1 -1
  383. package/src/App/Modules/Creator/Components/Optiondetail/ZoomImage/index.js +1 -1
  384. package/src/App/Modules/Creator/Components/Optiondetail/index.js +9 -7
  385. package/src/App/Modules/Creator/Components/Optiondetail/index.story.js +1 -48
  386. package/src/App/Modules/Creator/Components/Optiondetail/index.test.js +1 -1
  387. package/src/App/Modules/Creator/Components/Optiondetail/index.test.mocks.js +49 -0
  388. package/src/App/Modules/Creator/Components/OptionsList/index.js +3 -2
  389. package/src/App/Modules/Creator/Components/ProductPart/index.test.js +1 -1
  390. package/src/App/Modules/Creator/Components/ProductPartsList/index.js +1 -1
  391. package/src/App/Modules/Creator/Components/SavedConfiguration/index.js +3 -3
  392. package/src/App/Modules/Creator/Components/StoreConfigurationForm/index.js +2 -2
  393. package/src/App/Modules/Creator/Containers/CustomTitleEditor/index.js +1 -1
  394. package/src/App/Modules/Creator/Containers/FastConfiguration/index.js +1 -1
  395. package/src/App/Modules/Creator/Containers/FormattedPrice/index.js +1 -1
  396. package/src/App/Modules/Creator/Containers/InvalidConfigurationNotice/index.js +1 -1
  397. package/src/App/Modules/Creator/Containers/Optiondetail/index.js +1 -1
  398. package/src/App/Modules/Designer/Components/AddGalleryImage/__snapshots__/index.test.jsx.snap +0 -8
  399. package/src/App/Modules/Designer/Components/AddGalleryImage/index.js +4 -4
  400. package/src/App/Modules/Designer/Components/AddGalleryImage/index.test.jsx +0 -27
  401. package/src/App/Modules/Designer/Components/AddVisualElement/index.js +6 -6
  402. package/src/App/Modules/Designer/Components/AddVisualElement/index.test.jsx +3 -2
  403. package/src/App/Modules/Designer/Components/CloseDesignEditor/index.js +3 -3
  404. package/src/App/Modules/Designer/Components/ColorPalettes/ColorPalettesSearch.js +6 -6
  405. package/src/App/Modules/Designer/Components/ColorPalettes/index.js +14 -14
  406. package/src/App/Modules/Designer/Components/ColorPalettes/index.test.jsx +1 -1
  407. package/src/App/Modules/Designer/Components/DesignAreaControlbox/index.js +8 -8
  408. package/src/App/Modules/Designer/Components/DesignAreaControlbox/index.test.jsx +1 -1
  409. package/src/App/Modules/Designer/Components/DesignerSelectionToolbox/CustomFontOverlay.js +5 -5
  410. package/src/App/Modules/Designer/Components/DesignerSelectionToolbox/DesignerSelectionToolbox.js +2 -2
  411. package/src/App/Modules/Designer/Components/Dialog/index.js +1 -1
  412. package/src/App/Modules/Designer/Components/EditDesignButton/index.js +3 -2
  413. package/src/App/Modules/Designer/Components/FeedbackNotice/index.js +3 -3
  414. package/src/App/Modules/Designer/Components/ImageColorize/index.js +1 -1
  415. package/src/App/Modules/Designer/Components/ImageControlbox/index.js +6 -6
  416. package/src/App/Modules/Designer/Components/ImageEditDialog/ImageUpload.js +32 -6
  417. package/src/App/Modules/Designer/Components/ImageEditDialog/index.js +16 -12
  418. package/src/App/Modules/Designer/Components/ImageLibraryFilter/index.js +6 -6
  419. package/src/App/Modules/Designer/Components/ImageLibraryThumbnail/index.js +11 -7
  420. package/src/App/Modules/Designer/Components/ObjectTools/index.js +2 -2
  421. package/src/App/Modules/Designer/Components/Select/index.js +3 -3
  422. package/src/App/Modules/Designer/Components/TextControlbox/TextFormatIcon.js +1 -1
  423. package/src/App/Modules/Designer/Components/TextControlbox/index.js +11 -11
  424. package/src/App/Modules/Designer/Components/TextControlbox/index.test.jsx +3 -2
  425. package/src/App/Modules/Designer/Containers/AddGalleryImage.js +1 -1
  426. package/src/App/Modules/Designer/Designer.js +1 -1
  427. package/src/App/Modules/Designer/DesignerUI.js +7 -2
  428. package/src/App/Modules/Designer/Layouts/Mobile/TwoSideBottomBar.js +1 -1
  429. package/src/App/Modules/Designer/Layouts/PopupAreaProvider.js +1 -1
  430. package/src/App/Modules/Designer/MultilayerComponents/DesignerClickAwayListener.js +1 -1
  431. package/src/App/Modules/Designer/MultilayerComponents/InlineToolboxPortal.js +1 -1
  432. package/src/App/Modules/Designer/MultilayerComponents/StandardToolboxPortal.js +1 -1
  433. package/src/App/Modules/Designer/setupDesigner.js +22 -19
  434. package/src/App/Modules/Visualization/AlignTargetContainer.js +1 -1
  435. package/src/App/Modules/Visualization/CreatorAlignTarget.js +1 -1
  436. package/src/App/Modules/Visualization/DefaultVisualizationProvider.js +7 -2
  437. package/src/App/Modules/Visualization/DesignerAlignTarget.js +1 -1
  438. package/src/App/Reducers/Actions.js +5 -5
  439. package/src/App/Reducers/ConfigurationMode/Selectors.js +6 -0
  440. package/src/App/Reducers/Configurator/Actions.js +8 -1
  441. package/src/App/Reducers/Configurator/Reducer.js +27 -21
  442. package/src/App/Reducers/Configurator/Selectors.js +4 -1
  443. package/src/App/Reducers/DesignArea/Selectors.js +10 -0
  444. package/src/App/Reducers/Reducer.js +4 -3
  445. package/src/App/Reducers/UI/Actions.js +15 -1
  446. package/src/App/Reducers/UI/Reducer.js +20 -0
  447. package/src/App/Routing.js +12 -29
  448. package/src/App/Screens/Configurator/CalculationWidgetScreen.js +1 -4
  449. package/src/App/Screens/Configurator/Components/AmountSelection/index.js +4 -4
  450. package/src/App/Screens/Configurator/Components/CalculationWidget/index.js +3 -3
  451. package/src/App/Screens/Configurator/Components/CalculationWidget/index.test.jsx +5 -2
  452. package/src/App/Screens/Configurator/Components/ConfigurationModeSwitch/ConfigurationModeSwitch.js +1 -1
  453. package/src/App/Screens/Configurator/Components/FallbackVisualization/FallbackVisualization.js +1 -1
  454. package/src/App/Screens/Configurator/Components/FullScreenView/index.js +4 -4
  455. package/src/App/Screens/Configurator/Components/ItemTile/ItemTile.js +55 -17
  456. package/src/App/Screens/Configurator/Components/LandscapeInformation/index.js +1 -1
  457. package/src/App/Screens/Configurator/Components/NoVisualization/NoVisualization.js +1 -1
  458. package/src/App/Screens/Configurator/Components/PreviewPortal/index.js +7 -5
  459. package/src/App/Screens/Configurator/Components/Thumbnail/index.js +5 -4
  460. package/src/App/Screens/Configurator/Components/TotalPrice/TotalPrice.js +3 -3
  461. package/src/App/Screens/Configurator/Containers/AmountPrice.js +1 -1
  462. package/src/App/Screens/Configurator/Containers/__tests__/CalculationWidget.test.js +4 -1
  463. package/src/App/Screens/Configurator/Screen.js +13 -5
  464. package/src/App/Screens/Configurator/__tests__/Screen.test.js +6 -0
  465. package/src/App/Screens/DesignerProductPreview/Screen.js +2 -3
  466. package/src/App/Screens/DesignerProductPreview/__tests__/__snapshots__/Screen.test.js.snap +11 -11
  467. package/src/App/Screens/ItemOverview.js +74 -57
  468. package/src/App/Screens.js +1 -1
  469. package/src/App/Services/AnalyticsService.js +2 -1
  470. package/src/App/Services/DesignDataService.js +53 -7
  471. package/src/App/Services/DesignerService.js +22 -13
  472. package/src/App/Services/UIService.js +1 -1
  473. package/src/App/Services/VisualizationService.js +41 -2
  474. package/src/App/Services/__tests__/DesignDataService.test.js +1 -0
  475. package/src/App/Shared/Components/AcceptDesign/index.js +7 -6
  476. package/src/App/Shared/Components/AcceptPrivacy/index.js +4 -3
  477. package/src/App/Shared/Components/AddToBasket/index.js +4 -4
  478. package/src/App/Shared/Components/AmountInput/index.js +1 -1
  479. package/src/App/Shared/Components/AmountPrice/__snapshots__/index.test.jsx.snap +0 -125
  480. package/src/App/Shared/Components/AmountPrice/index.js +40 -17
  481. package/src/App/Shared/Components/AmountPrice/index.test.jsx +1 -1
  482. package/src/App/Shared/Components/Analytics/AnalyticsWrapper.test.js +2 -1
  483. package/src/App/Shared/Components/BulkNames/index.js +3 -3
  484. package/src/App/Shared/Components/CallToAction/__snapshots__/index.test.js.snap +4 -4
  485. package/src/App/Shared/Components/CallToAction/index.js +3 -3
  486. package/src/App/Shared/Components/CallToAction/index.test.js +1 -1
  487. package/src/App/Shared/Components/ConfigurationOverview/index.js +1 -1
  488. package/src/App/Shared/Components/Header/Header.js +3 -3
  489. package/src/App/Shared/Components/InformationTag/InformationTag.js +4 -2
  490. package/src/App/Shared/Components/LicenseNotice/LicenseNotice.js +3 -1
  491. package/src/App/Shared/Components/LoadConfiguration/index.js +27 -13
  492. package/src/App/Shared/Components/Notification/index.js +3 -3
  493. package/src/App/Shared/Components/PdfDownload/index.js +3 -3
  494. package/src/App/Shared/Components/PlusMinusInput/index.js +4 -4
  495. package/src/App/Shared/Components/PriceList/index.js +9 -9
  496. package/src/App/Shared/Components/PriceList/index.test.js +2 -2
  497. package/src/App/Shared/Components/PriceOverview/index.js +4 -4
  498. package/src/App/Shared/Components/PriceOverview/index.story.js +1 -1
  499. package/src/App/Shared/Components/ProductVariant/Image.js +1 -1
  500. package/src/App/Shared/Components/ProductVariant/index.js +5 -5
  501. package/src/App/Shared/Components/Progress/Progress.js +3 -3
  502. package/src/App/Shared/Components/ReceiveOfferForm/index.js +4 -4
  503. package/src/App/Shared/Components/SaveConfiguration/index.js +3 -3
  504. package/src/App/Shared/Components/SendEmail/index.js +3 -3
  505. package/src/App/Shared/Components/Stepper/index.js +4 -4
  506. package/src/App/Shared/Components/ToolbarList/index.js +6 -6
  507. package/src/App/Shared/Components/VariantChooser/index.js +7 -7
  508. package/src/App/Shared/Containers/AmountPrice/index.js +7 -1
  509. package/src/App/Shared/Containers/SaveConfiguration.js +1 -1
  510. package/src/App/Utils/Request/lazyFetch.js +2 -3
  511. package/src/App/configuration.js +20 -15
  512. package/src/App/index.js +2 -2
  513. package/src/Framework/Api.js +3 -3
  514. package/src/Framework/Components/Carousel/index.js +2 -2
  515. package/src/Framework/Components/Dialog/index.js +13 -10
  516. package/src/Framework/Components/DialogSelect/index.js +6 -5
  517. package/src/Framework/i18n.js +15 -8
  518. package/src/Shared/Components/CustomDialog.js +2 -1
  519. package/src/Shared/Components/CustomDialogSelect.js +2 -2
  520. package/src/Shared/Components/MainButton.js +2 -2
  521. package/src/Shared/Components/__tests__/index.test.jsx +6 -1
  522. package/src/Shared/HOCs/ResizeDetect/ResizeDetect.dev.js +1 -1
  523. package/src/Utils/Decorators/Observable.js +1 -0
  524. package/src/Utils/Test/mountWithState.js +1 -1
  525. package/App/Modules/Designer/Components/ImageEditDialog/res/checkers_tile.png +0 -0
  526. package/src/App/Modules/Designer/Components/ImageEditDialog/res/checkers_tile.png +0 -0
@@ -1,11 +1,18 @@
1
- import React from 'react';
2
- import makeStyles from '@material-ui/core/styles/makeStyles';
1
+ import React, { useState } from 'react';
2
+ import { makeStyles } from '@material-ui/core/styles';
3
3
  import Typography from '@material-ui/core/Typography';
4
4
  import MainButton from '../../../../../Shared/Components/MainButton';
5
5
  import { T } from 'Framework/i18n';
6
+ import PropTypes from 'prop-types';
7
+ import { fetchConfiguration } from '../../../../Reducers/Configurator/Actions';
8
+ import { useDispatch } from 'react-redux';
9
+ import { useHistory } from 'react-router-dom';
10
+ import { withGlobalLoader } from '../../../../Reducers/UI/Actions';
11
+ import CircularProgress from '@material-ui/core/CircularProgress';
12
+ import getImageUrl from '../../../../Utils/getImageUrl';
6
13
 
7
14
  const useStyles = makeStyles(
8
- theme => ({
15
+ () => ({
9
16
  root: {
10
17
  display: 'flex',
11
18
  flexDirection: 'column',
@@ -20,7 +27,7 @@ const useStyles = makeStyles(
20
27
  },
21
28
  image: {
22
29
  margin: 'auto',
23
- width: '170px',
30
+ width: '70%',
24
31
  height: '170px',
25
32
  '& img': {
26
33
  width: '100%',
@@ -28,42 +35,73 @@ const useStyles = makeStyles(
28
35
  objectFit: 'contain',
29
36
  },
30
37
  },
38
+ progress: {
39
+ margin: 'auto',
40
+ width: '70%',
41
+ height: '170px',
42
+ },
31
43
  title: {
32
- marginBottom: 'auto',
44
+ wordWrap: 'break-word',
45
+ margin: 'auto',
46
+ height: '30%',
47
+ width: '100%',
33
48
  },
34
49
  buttonContainer: {
35
- width: '150px',
50
+ width: '70%',
36
51
  margin: 'auto',
37
52
  },
38
- button: {
39
- width: '100%',
40
- backgroundColor: theme.palette.primary.main,
41
- '&:hover': {
42
- backgroundColor: theme.palette.primary.light,
43
- },
44
- },
45
53
  }),
46
54
  { name: 'ItemTile' }
47
55
  );
48
56
 
49
57
  const ItemTile = ({ title, linkTo, image }) => {
50
58
  const classes = useStyles();
59
+ const dispatch = useDispatch();
60
+ const history = useHistory();
61
+ const [loadState, setLoadState] = useState(true);
62
+
63
+ const handleClick = async link => {
64
+ try {
65
+ await dispatch(withGlobalLoader(fetchConfiguration(linkTo)));
66
+ history.push(link);
67
+ } catch (e) {
68
+ alert(`could not load configuration: ${linkTo}`);
69
+ }
70
+ };
51
71
 
52
72
  return (
53
73
  <div className={classes.root}>
54
74
  <Typography variant="h6" className={classes.title}>
55
75
  {title}
56
76
  </Typography>
77
+ {loadState && <CircularProgress className={classes.progress} />}
57
78
  <div className={classes.image}>
58
- <img src={image} alt={title} />
79
+ <img
80
+ src={getImageUrl(image)}
81
+ alt={title}
82
+ onLoad={() => setLoadState(false)}
83
+ onError={() => setLoadState(false)}
84
+ />
59
85
  </div>
60
86
  <div className={classes.buttonContainer}>
61
- <a href={linkTo}>
62
- <MainButton className={classes.button}>{T('itemOverview.customize')}</MainButton>
63
- </a>
87
+ <MainButton fullWidth onClick={() => handleClick(`/identifier:${linkTo}`)}>
88
+ {T('itemOverview.customize')}
89
+ </MainButton>
64
90
  </div>
65
91
  </div>
66
92
  );
67
93
  };
68
94
 
95
+ ItemTile.defaultProps = {
96
+ title: '',
97
+ linkTo: '',
98
+ image: '',
99
+ };
100
+
101
+ ItemTile.propTypes = {
102
+ title: PropTypes.string,
103
+ linkTo: PropTypes.string,
104
+ image: PropTypes.string,
105
+ };
106
+
69
107
  export default ItemTile;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { withStyles } from '@material-ui/core/styles';
3
- import Icon from '@material-ui/core/Icon/Icon';
3
+ import Icon from '@material-ui/core/Icon';
4
4
  import { t } from 'Framework/i18n';
5
5
  import Typography from '@material-ui/core/Typography';
6
6
  import PropTypes from 'prop-types';
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { T } from 'Framework/i18n';
3
3
  import Typography from '@material-ui/core/Typography';
4
- import { withStyles } from '@material-ui/core';
4
+ import { withStyles } from '@material-ui/core/styles';
5
5
 
6
6
  const styles = {
7
7
  root: {
@@ -1,11 +1,13 @@
1
1
  import React from 'react';
2
2
  import ReactDOM from 'react-dom';
3
3
  import PropTypes from 'prop-types';
4
- import { isFunction } from 'lodash';
5
- import Icon from '@material-ui/core/Icon/Icon';
6
- import withStyles from '@material-ui/core/styles/withStyles';
7
- import withWidth from '@material-ui/core/withWidth/withWidth';
8
- import { Typography, Button, Grid } from '@material-ui/core';
4
+ import isFunction from 'lodash/isFunction';
5
+ import Icon from '@material-ui/core/Icon';
6
+ import { withStyles } from '@material-ui/core/styles';
7
+ import withWidth from '@material-ui/core/withWidth';
8
+ import Typography from '@material-ui/core/Typography';
9
+ import Button from '@material-ui/core/Button';
10
+ import Grid from '@material-ui/core/Grid';
9
11
  import { withAlignTarget } from 'redhotmagma-visualization/AlignTargetProvider';
10
12
  import { t } from 'Framework/i18n';
11
13
  import AnalyticsWrapper from 'App/Shared/Components/Analytics/AnalyticsWrapper';
@@ -1,11 +1,12 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { Scrollbars } from 'react-custom-scrollbars';
4
- import { isFunction, get } from 'lodash';
5
- import withStyles from '@material-ui/core/styles/withStyles';
6
- import Icon from '@material-ui/core/Icon/Icon';
4
+ import isFunction from 'lodash/isFunction';
5
+ import get from 'lodash/get';
6
+ import { withStyles } from '@material-ui/core/styles';
7
+ import Icon from '@material-ui/core/Icon';
7
8
  import { withResizeDetectWrapper } from 'Shared/HOCs/ResizeDetect/ResizeDetect';
8
- import { Typography } from '@material-ui/core';
9
+ import Typography from '@material-ui/core/Typography';
9
10
  import withWidth, { isWidthDown } from '@material-ui/core/withWidth';
10
11
 
11
12
  export const styles = theme => ({
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import Typography from '@material-ui/core/Typography/index';
4
- import Divider from '@material-ui/core/Divider/index';
5
- import makeStyles from '@material-ui/core/styles/makeStyles';
3
+ import Typography from '@material-ui/core/Typography';
4
+ import Divider from '@material-ui/core/Divider';
5
+ import { makeStyles } from '@material-ui/core/styles';
6
6
 
7
7
  const useStyles = makeStyles(
8
8
  {
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
3
3
  import AmountPrice from 'App/Shared/Containers/AmountPrice';
4
4
  import ProductVariant from 'App/Shared/Containers/ProductVariant';
5
5
  import ConfigurationModeSwitch from './ConfigurationModeSwitch';
6
- import { makeStyles } from '@material-ui/core';
6
+ import { makeStyles } from '@material-ui/core/styles';
7
7
 
8
8
  export const useStyles = makeStyles(
9
9
  theme => {
@@ -19,7 +19,10 @@ import uiReducer from 'App/Reducers/UI/Reducer';
19
19
  import ServiceLocator from 'App/ServiceLocator';
20
20
  import mountWithState from 'Utils/Test/mountWithState';
21
21
  import { actionTypes as designAreaActionTypes } from 'App/Reducers/DesignArea/Actions';
22
- import { Switch, Select, Button } from '@material-ui/core';
22
+ import Switch from '@material-ui/core/Switch';
23
+ import Select from '@material-ui/core/Select';
24
+ import Button from '@material-ui/core/Button';
25
+
23
26
  import configurationModeReducer from 'App/Reducers/ConfigurationMode/Reducer';
24
27
 
25
28
  const createInitialState = () => ({
@@ -1,6 +1,5 @@
1
1
  import * as React from 'react';
2
2
  import { useEffect } from 'react';
3
- import { hot } from 'react-hot-loader';
4
3
 
5
4
  import { containerConnect } from 'Framework/ComponentContainer';
6
5
 
@@ -38,8 +37,9 @@ import { getConf } from 'App/configuration';
38
37
 
39
38
  import { DesignerScreen } from 'App/Modules/Designer/DesignerScreen';
40
39
  import { CreatorScreen } from 'App/Modules/Creator/CreatorScreen';
41
- import { useMediaQuery } from '@material-ui/core';
40
+ import useMediaQuery from '@material-ui/core/useMediaQuery';
42
41
  import { Services } from '../../ServiceLocator';
42
+ import { useParams } from 'react-router';
43
43
 
44
44
  /**
45
45
  * Main Screen of the configurator
@@ -56,6 +56,13 @@ export const Configurator = props => {
56
56
  }
57
57
  }, [imageOnly]);
58
58
 
59
+ let { identifier, code } = useParams();
60
+ useEffect(() => {
61
+ if ((identifier && identifier !== props.loadIdentifier) || (code && code !== props.loadCode)) {
62
+ Services.configurator.initialize();
63
+ }
64
+ }, [identifier, code]);
65
+
59
66
  const { fatalError } = props;
60
67
  if (fatalError) {
61
68
  return <ErrorPage />;
@@ -124,8 +131,6 @@ Configurator.defaultProps = {
124
131
  isPortraitMode: false,
125
132
  };
126
133
 
127
- const ConfiguratorHot = hot(module)(Configurator);
128
-
129
134
  const mapStateToProps = state => {
130
135
  const activeDesignArea = isAnyDesignAreaSelected(state);
131
136
  const fallbackMode = 'fallback' === getCurrentVisualizationSettings(state);
@@ -142,6 +147,7 @@ const mapStateToProps = state => {
142
147
  const showAddToCartButton = state.ui.visibilityMap.addToCartButton;
143
148
  const showConfigurationVariantSelection = state.ui.visibilityMap.configurationvariantSelection;
144
149
  const visualizationOverlayMode = visualizationModeCheck(state).is2DOverlay();
150
+ const { loadIdentifier, loadCode } = state.configurator;
145
151
 
146
152
  const configuration = {
147
153
  showAddToCartButton: getConf('showAddToCartButton'),
@@ -151,7 +157,7 @@ const mapStateToProps = state => {
151
157
  };
152
158
 
153
159
  return {
154
- Component: ConfiguratorHot,
160
+ Component: Configurator,
155
161
  selectedConfigurationMode,
156
162
  showConfigurationModeSwitch,
157
163
  activeDesignArea,
@@ -166,6 +172,8 @@ const mapStateToProps = state => {
166
172
  showConfigurationVariantSelection,
167
173
  configuration,
168
174
  visualizationOverlayMode,
175
+ loadIdentifier,
176
+ loadCode,
169
177
  };
170
178
  };
171
179
 
@@ -6,6 +6,8 @@ jest.mock('react-file-drop/dist/FileDrop/FileDrop.js', () => ({}));
6
6
  import { ThemeMixer } from '../ThemeProvider';
7
7
  import { createStoreProvider } from '../../../../Utils/Test/createStoreProvider';
8
8
  import ServiceLocator from '../../../ServiceLocator';
9
+ jest.mock('react-router');
10
+ import { useParams } from 'react-router';
9
11
 
10
12
  describe('Screen component', () => {
11
13
  ServiceLocator.provide(
@@ -20,8 +22,12 @@ describe('Screen component', () => {
20
22
  initDesignAreaInteraction() {
21
23
  return null;
22
24
  }
25
+ registerComponentChangeListener() {
26
+ return null;
27
+ }
23
28
  })()
24
29
  );
30
+ useParams.mockImplementation(() => ({}));
25
31
 
26
32
  it('renders the custom elements', () => {
27
33
  const { StoreProvider } = createStoreProvider();
@@ -1,6 +1,5 @@
1
1
  import React, { useEffect, useMemo, useRef, useState } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { hot } from 'react-hot-loader';
4
3
  import clsx from 'clsx';
5
4
  import { connect } from 'react-redux';
6
5
 
@@ -10,7 +9,7 @@ import Radio from '@material-ui/core/Radio';
10
9
  import Switch from '@material-ui/core/Switch';
11
10
  import Grid from '@material-ui/core/Grid';
12
11
  import FormControl from '@material-ui/core/FormControl';
13
- import withStyles from '@material-ui/core/styles/withStyles';
12
+ import { withStyles } from '@material-ui/core/styles';
14
13
 
15
14
  import MainButton from '../../../Shared/Components/MainButton';
16
15
  import { T } from '../../../Framework/i18n';
@@ -316,4 +315,4 @@ const mapDispatchToProps = dispatch => ({
316
315
  export const ConnectedDesignerProductPreviewScreen = connect(
317
316
  mapStateToProps,
318
317
  mapDispatchToProps
319
- )(hot(module)(withStyles(styles, { name: 'DesignProductionPreviewScreen' })(DesignerProductPreviewScreen)));
318
+ )(withStyles(styles, { name: 'DesignProductionPreviewScreen' })(DesignerProductPreviewScreen));
@@ -8,14 +8,14 @@ exports[`Screens/DesignerProductPreview/Screen renders the initial image upload
8
8
  id="react-file-drop-mock"
9
9
  >
10
10
  <div
11
- class="ImageEditDialog-imageUploadDropZone-34 DesignProductionPreviewScreen-imageUploadDropZone-4"
11
+ class="ImageEditDialog-imageUploadDropZone-35 DesignProductionPreviewScreen-imageUploadDropZone-4"
12
12
  >
13
13
  <div
14
- class="ImageEditDialog-imageUploadContainer-35"
14
+ class="ImageEditDialog-imageUploadContainer-36"
15
15
  >
16
16
  <svg
17
17
  aria-hidden="true"
18
- class="MuiSvgIcon-root ImageEditDialog-imageUploadIcon-36"
18
+ class="MuiSvgIcon-root ImageEditDialog-imageUploadIcon-37"
19
19
  focusable="false"
20
20
  viewBox="0 0 24 24"
21
21
  >
@@ -24,17 +24,17 @@ exports[`Screens/DesignerProductPreview/Screen renders the initial image upload
24
24
  />
25
25
  </svg>
26
26
  <p
27
- class="MuiTypography-root ImageEditDialog-imageUploadText-44 MuiTypography-body2"
27
+ class="MuiTypography-root ImageEditDialog-imageUploadText-45 MuiTypography-body2"
28
28
  >
29
29
  fileUpload.dragDropFiles
30
30
  </p>
31
31
  <button
32
- class="MuiButtonBase-root MuiButton-root MainButton-root-50 MuiButton-contained ImageEditDialog-imageUploadButton-39"
32
+ class="MuiButtonBase-root MuiButton-root MainButton-root-52 MuiButton-contained ImageEditDialog-imageUploadButton-40"
33
33
  tabindex="0"
34
34
  type="button"
35
35
  >
36
36
  <span
37
- class="MuiButton-label MainButton-label-51"
37
+ class="MuiButton-label MainButton-label-53"
38
38
  >
39
39
  fileUpload.chooseImage
40
40
  <input
@@ -46,20 +46,20 @@ exports[`Screens/DesignerProductPreview/Screen renders the initial image upload
46
46
  </div>
47
47
  </div>
48
48
  <div
49
- class="MuiFormGroup-root ImageEditDialog-imageUploadOwnership-40"
49
+ class="MuiFormGroup-root ImageEditDialog-imageUploadOwnership-41"
50
50
  >
51
51
  <label
52
52
  class="MuiFormControlLabel-root"
53
53
  >
54
54
  <span
55
55
  aria-disabled="false"
56
- class="MuiButtonBase-root MuiIconButton-root PrivateSwitchBase-root-52 MuiCheckbox-root ImageEditDialog-imageUploadOwnershipCheckbox-41 MuiCheckbox-colorSecondary MuiIconButton-colorSecondary"
56
+ class="MuiButtonBase-root MuiIconButton-root PrivateSwitchBase-root-54 MuiCheckbox-root ImageEditDialog-imageUploadOwnershipCheckbox-42 MuiCheckbox-colorSecondary MuiIconButton-colorSecondary"
57
57
  >
58
58
  <span
59
59
  class="MuiIconButton-label"
60
60
  >
61
61
  <input
62
- class="PrivateSwitchBase-input-55"
62
+ class="PrivateSwitchBase-input-57"
63
63
  data-indeterminate="false"
64
64
  type="checkbox"
65
65
  />
@@ -95,13 +95,13 @@ exports[`Screens/DesignerProductPreview/Screen renders the initial image upload
95
95
  class="MuiGrid-root MuiGrid-item"
96
96
  >
97
97
  <button
98
- class="MuiButtonBase-root MuiButton-root MainButton-root-50 MuiButton-contained Mui-disabled Mui-disabled"
98
+ class="MuiButtonBase-root MuiButton-root MainButton-root-52 MuiButton-contained Mui-disabled Mui-disabled"
99
99
  disabled=""
100
100
  tabindex="-1"
101
101
  type="button"
102
102
  >
103
103
  <span
104
- class="MuiButton-label MainButton-label-51"
104
+ class="MuiButton-label MainButton-label-53"
105
105
  >
106
106
  <span>
107
107
  fileUpload.continue
@@ -2,12 +2,19 @@ import React, { useEffect, useState } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import clsx from 'clsx';
4
4
  import ItemTile from './Configurator/Components/ItemTile/ItemTile';
5
- import makeStyles from '@material-ui/core/styles/makeStyles';
6
- import { AppBar, ButtonBase, Typography, Grid, useMediaQuery, useTheme } from '@material-ui/core';
5
+ import { makeStyles, useTheme } from '@material-ui/core/styles';
6
+ import AppBar from '@material-ui/core/AppBar';
7
+ import ButtonBase from '@material-ui/core/ButtonBase';
8
+ import Typography from '@material-ui/core/Typography';
9
+ import Grid from '@material-ui/core/Grid';
10
+ import useMediaQuery from '@material-ui/core/useMediaQuery';
7
11
  import { T } from 'Framework/i18n';
8
12
  import { lazyFetch } from '../Utils/Request/lazyFetch';
9
13
  import { Pagination } from '@material-ui/lab';
10
- import { getConf } from '../configuration';
14
+ import GlobalLoader from '../Shared/Containers/GlobalLoader';
15
+ import { withGlobalLoader } from '../Reducers/UI/Actions';
16
+ import { useDispatch } from 'react-redux';
17
+ import DefaultThemeProvider from './Configurator/ThemeProvider';
11
18
 
12
19
  const useStyles = makeStyles(
13
20
  theme => ({
@@ -73,55 +80,61 @@ const useStyles = makeStyles(
73
80
  { name: 'ItemOverview' }
74
81
  );
75
82
 
76
- const ItemOverview = ({ pageSize }) => {
83
+ export const ItemOverview = ({ ThemeProvider, pageSize }) => {
77
84
  const classes = useStyles();
78
85
  const theme = useTheme();
79
86
  const isMobile = useMediaQuery(theme.breakpoints.down('sm'));
80
87
 
81
- const [allItems, setAllItems] = useState([]);
82
88
  const [items, setItems] = useState([]);
83
89
  const [categories, setCategories] = useState([]);
84
- const [chosenCategory, setChosenCategory] = useState('');
90
+ const [chosenCategory, setChosenCategory] = useState(0);
85
91
  const [pagination, setPagination] = useState({
86
92
  count: 0,
87
93
  from: 0,
88
- to: pageSize,
89
94
  });
90
- const HOST = getConf('network.host');
95
+ const dispatch = useDispatch();
91
96
 
92
97
  const fetchItems = async () => {
93
- const response = await lazyFetch('items');
94
- return response.data.data;
98
+ const params = {
99
+ offset: pagination.from,
100
+ limit: pageSize,
101
+ };
102
+ if (chosenCategory) {
103
+ params['item-classifications'] = `[${chosenCategory}]`;
104
+ }
105
+ const response = await dispatch(
106
+ withGlobalLoader(() =>
107
+ lazyFetch({
108
+ url: `items`,
109
+ params,
110
+ })
111
+ )
112
+ );
113
+ return response.data;
95
114
  };
96
115
 
97
116
  const fetchCategories = async () => {
98
- const response = await lazyFetch('item-classifications');
117
+ const response = await dispatch(() => lazyFetch('item-classifications'));
99
118
  return response.data;
100
119
  };
101
120
 
102
121
  useEffect(() => {
103
122
  (async () => {
104
- const items = await fetchItems();
105
- setAllItems(items);
106
- setItems(items);
107
123
  setCategories(await fetchCategories());
108
124
  })();
109
125
  }, []);
110
126
 
111
127
  useEffect(() => {
112
- setPagination({ ...pagination, count: Math.ceil(items.length / pageSize) });
113
- }, [items, pagination.from, pagination.to]);
128
+ setPagination({ ...pagination, from: 0 });
129
+ }, [chosenCategory]);
114
130
 
115
131
  useEffect(() => {
116
- setPagination({ ...pagination, from: 0, to: pageSize });
117
-
118
- if (!chosenCategory) return setItems(allItems);
119
- setItems(
120
- allItems.filter(item =>
121
- item.itemclassifications.some(classification => classification.identifier === chosenCategory)
122
- )
123
- );
124
- }, [chosenCategory]);
132
+ (async () => {
133
+ const { data: items, count } = await fetchItems();
134
+ setItems(items);
135
+ setPagination({ ...pagination, count: Math.ceil(count / pageSize) });
136
+ })();
137
+ }, [pagination.from, chosenCategory]);
125
138
 
126
139
  const onClickCategory = identifier => {
127
140
  if (chosenCategory === identifier) return setChosenCategory('');
@@ -130,9 +143,7 @@ const ItemOverview = ({ pageSize }) => {
130
143
 
131
144
  const handlePageChange = (event, page) => {
132
145
  const from = (page - 1) * pageSize;
133
- const to = (page - 1) * pageSize + pageSize;
134
-
135
- setPagination({ ...pagination, from: from, to: to });
146
+ setPagination({ ...pagination, from: from });
136
147
  };
137
148
 
138
149
  const renderCategories = () => {
@@ -140,14 +151,11 @@ const ItemOverview = ({ pageSize }) => {
140
151
  <div className={classes.categoryContainer}>
141
152
  {categories.map(category => (
142
153
  <ButtonBase
143
- className={clsx(
144
- classes.categoryButton,
145
- chosenCategory === category.identifier && 'active'
146
- )}
154
+ className={clsx(classes.categoryButton, chosenCategory === category.id && 'active')}
147
155
  key={category.identifier}
148
- onClick={() => onClickCategory(category.identifier)}
156
+ onClick={() => onClickCategory(category.id)}
149
157
  >
150
- <Typography variant="body2">{category.translated_title}</Typography>
158
+ {category.translated_title}
151
159
  </ButtonBase>
152
160
  ))}
153
161
  </div>
@@ -168,46 +176,55 @@ const ItemOverview = ({ pageSize }) => {
168
176
  };
169
177
 
170
178
  const renderItems = () => {
171
- const itemsPerPage = items.slice(pagination.from, pagination.to);
172
-
173
- return (
174
- <div className={classes.itemContainer}>
175
- {renderPagination()}
176
- <Grid container className={classes.gridContainer}>
177
- {itemsPerPage.map((item, index) => (
178
- <Grid item key={item.identifier} xs={12} sm={6} md={3}>
179
- <ItemTile
180
- title={item.title}
181
- index={index}
182
- image={item.thumbnail}
183
- linkTo={`${HOST}/identifier:${item.identifier}`}
184
- key={item.identifier}
185
- ></ItemTile>
186
- </Grid>
187
- ))}
188
- </Grid>
189
- </div>
190
- );
179
+ if (items.length < 1) {
180
+ return (
181
+ <div>
182
+ <Typography variant="body2">{T('itemOverview.noItems')}</Typography>
183
+ </div>
184
+ );
185
+ } else {
186
+ return (
187
+ <div className={classes.itemContainer}>
188
+ {renderPagination()}
189
+ <Grid container className={classes.gridContainer}>
190
+ {items.map((item, index) => (
191
+ <Grid item key={item.identifier} xs={12} sm={6} md={3}>
192
+ <ItemTile
193
+ title={item.title}
194
+ index={index}
195
+ image={item.thumbnail}
196
+ linkTo={item.identifier}
197
+ key={item.identifier}
198
+ />
199
+ </Grid>
200
+ ))}
201
+ </Grid>
202
+ </div>
203
+ );
204
+ }
191
205
  };
192
206
 
193
207
  return (
194
- <>
195
- <AppBar className={classes.header}>
208
+ <ThemeProvider>
209
+ <AppBar color="default" className={classes.header}>
196
210
  <Typography variant="h5">{T('itemOverview.title')}</Typography>
197
211
  </AppBar>
198
212
  <div className={classes.container}>
199
213
  {!!categories.length && renderCategories()}
200
214
  {!!items.length && renderItems()}
201
215
  </div>
202
- </>
216
+ <GlobalLoader />
217
+ </ThemeProvider>
203
218
  );
204
219
  };
205
220
 
206
221
  ItemOverview.propTypes = {
222
+ ThemeProvider: PropTypes.elementType.isRequired,
207
223
  pageSize: PropTypes.number,
208
224
  };
209
225
 
210
226
  ItemOverview.defaultProps = {
227
+ ThemeProvider: DefaultThemeProvider,
211
228
  pageSize: 8,
212
229
  };
213
230
 
@@ -10,7 +10,7 @@ const screens = getConf('screens', {});
10
10
  // note: require should be used here to avoid importing the screen when it's not used
11
11
 
12
12
  if (!screens.ItemOverview) {
13
- const ItemOverview = require('./Screens/ItemOverview').default;
13
+ const { ItemOverview } = require('./Screens/ItemOverview');
14
14
  screens.ItemOverview = ItemOverview;
15
15
  }
16
16
  if (!screens.Configurator) {
@@ -2,7 +2,8 @@ import { Services } from '../ServiceLocator';
2
2
  import { EventTypes } from 'App/Constant';
3
3
  import { t } from '../../Framework/i18n';
4
4
  import { isDesignerMode } from '../Reducers/ConfigurationMode/Selectors';
5
- import { map, filter } from 'lodash';
5
+ import filter from 'lodash/filter';
6
+ import map from 'lodash/map';
6
7
 
7
8
  export const actionsToTrack = {
8
9
  /***************************\