@configuratorware/configurator-frontendgui 1.28.6 → 1.29.3

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 (482) hide show
  1. package/App/Constant.js +73 -0
  2. package/App/Error/DevelopmentErrorPage/index.js +74 -0
  3. package/App/Error/ErrorBoundary.js +98 -0
  4. package/App/Error/ProductionErrorPage/Style.scss +47 -0
  5. package/App/Error/ProductionErrorPage/index.js +43 -0
  6. package/App/Error/ProductionErrorPage/index.story.js +13 -0
  7. package/App/Error/ProductionErrorPage/res/error_gears.png +0 -0
  8. package/App/Frame.js +95 -0
  9. package/App/Modules/Creator/Components/ConfigurationvariantItem/Styles.scss +33 -0
  10. package/App/Modules/Creator/Components/ConfigurationvariantItem/index.js +118 -0
  11. package/App/Modules/Creator/Components/ConfigurationvariantSelection/Styles.scss +47 -0
  12. package/App/Modules/Creator/Components/ConfigurationvariantSelection/index.js +130 -0
  13. package/App/Modules/Creator/Components/CustomTitleEditor/Styles.scss +43 -0
  14. package/App/Modules/Creator/Components/CustomTitleEditor/index.js +144 -0
  15. package/App/Modules/Creator/Components/ExternalVisualization/index.js +140 -0
  16. package/App/Modules/Creator/Components/FastConfiguration/SelectableRow.js +128 -0
  17. package/App/Modules/Creator/Components/FastConfiguration/Styles.scss +53 -0
  18. package/App/Modules/Creator/Components/FastConfiguration/index.js +280 -0
  19. package/App/Modules/Creator/Components/FastConfigurationRow/Styles.scss +45 -0
  20. package/App/Modules/Creator/Components/FastConfigurationRow/index.js +78 -0
  21. package/App/Modules/Creator/Components/FastConfigurationSelect/Styles.scss +35 -0
  22. package/App/Modules/Creator/Components/FastConfigurationSelect/index.js +251 -0
  23. package/App/Modules/Creator/Components/FormattedNumber/index.js +45 -0
  24. package/App/Modules/Creator/Components/FormattedPrice/index.js +57 -0
  25. package/App/Modules/Creator/Components/FullScreenView/FullScreenView.js +104 -0
  26. package/App/Modules/Creator/Components/Incompatibility/OptionExclusionRule/index.js +186 -0
  27. package/App/Modules/Creator/Components/Incompatibility/OptionRule/index.js +182 -0
  28. package/App/Modules/Creator/Components/Incompatibility/RuleComponent.js +88 -0
  29. package/App/Modules/Creator/Components/Incompatibility/index.js +253 -0
  30. package/App/Modules/Creator/Components/InvalidConfigurationNotice/index.js +164 -0
  31. package/App/Modules/Creator/Components/LoginForm/Styles.scss +9 -0
  32. package/App/Modules/Creator/Components/LoginForm/index.js +129 -0
  33. package/App/Modules/Creator/Components/Option/index.js +545 -0
  34. package/App/Modules/Creator/Components/Option/index.story.js +154 -0
  35. package/App/Modules/Creator/Components/OptionAmount/index.js +236 -0
  36. package/App/Modules/Creator/Components/OptionGroup/index.js +55 -0
  37. package/App/Modules/Creator/Components/Optiondetail/ZoomImage/index.js +173 -0
  38. package/App/Modules/Creator/Components/Optiondetail/index.js +499 -0
  39. package/App/Modules/Creator/Components/Optiondetail/index.story.js +117 -0
  40. package/App/Modules/Creator/Components/OptionsList/index.js +193 -0
  41. package/App/Modules/Creator/Components/Price/Styles.scss +3 -0
  42. package/App/Modules/Creator/Components/Price/index.js +79 -0
  43. package/App/Modules/Creator/Components/ProductPart/index.js +187 -0
  44. package/App/Modules/Creator/Components/ProductPart/index.story.js +88 -0
  45. package/App/Modules/Creator/Components/ProductPartsList/index.js +153 -0
  46. package/App/Modules/Creator/Components/ProductPartsList/index.story.js +101 -0
  47. package/App/Modules/Creator/Components/SavedConfiguration/Styles.scss +19 -0
  48. package/App/Modules/Creator/Components/SavedConfiguration/index.js +82 -0
  49. package/App/Modules/Creator/Components/ShareConfiguration/Styles.scss +23 -0
  50. package/App/Modules/Creator/Components/ShareConfiguration/index.js +224 -0
  51. package/App/Modules/Creator/Components/StockInformation/index.js +93 -0
  52. package/App/Modules/Creator/Components/StoreConfigurationForm/Styles.scss +5 -0
  53. package/App/Modules/Creator/Components/StoreConfigurationForm/index.js +123 -0
  54. package/App/Modules/Creator/Components/Tools/Styles.scss +44 -0
  55. package/App/Modules/Creator/Components/Tools/index.js +102 -0
  56. package/App/Modules/Creator/Components/ValidationResult/Styles.scss +45 -0
  57. package/App/Modules/Creator/Components/ValidationResult/index.js +165 -0
  58. package/App/Modules/Creator/Components/index.js +84 -0
  59. package/App/Modules/Creator/Containers/AmountPrice/index.js +26 -0
  60. package/App/Modules/Creator/Containers/ConfigurationvariantSelection/index.js +60 -0
  61. package/App/Modules/Creator/Containers/CustomTitleEditor/index.js +52 -0
  62. package/App/Modules/Creator/Containers/FastConfiguration/index.js +62 -0
  63. package/App/Modules/Creator/Containers/FormattedPrice/index.js +31 -0
  64. package/App/Modules/Creator/Containers/Incompatibility/index.js +40 -0
  65. package/App/Modules/Creator/Containers/InvalidConfigurationNotice/index.js +89 -0
  66. package/App/Modules/Creator/Containers/LoadingOverlay/index.js +26 -0
  67. package/App/Modules/Creator/Containers/Optiondetail/index.js +48 -0
  68. package/App/Modules/Creator/Containers/OptionsList/index.js +49 -0
  69. package/App/Modules/Creator/Containers/ProductPart/index.js +26 -0
  70. package/App/Modules/Creator/Containers/ProductPartsList/index.js +50 -0
  71. package/App/Modules/Creator/Containers/SavedConfigurationContainer/index.js +25 -0
  72. package/App/Modules/Creator/Containers/ShareConfiguration/index.js +42 -0
  73. package/App/Modules/Creator/Containers/StockInformation/index.js +33 -0
  74. package/App/Modules/Creator/Containers/Tools/index.js +44 -0
  75. package/App/Modules/Creator/Containers/ValidationResult/index.js +34 -0
  76. package/App/Modules/Creator/Containers/index.js +175 -0
  77. package/App/Modules/Creator/CreatorScreen.js +307 -0
  78. package/App/Modules/Creator/Layouts/DefaultLayout.js +260 -0
  79. package/App/Modules/Creator/Styles.scss +216 -0
  80. package/App/Modules/Designer/Components/AddGalleryImage/index.js +234 -0
  81. package/App/Modules/Designer/Components/AddGalleryImage/index.story.js +94 -0
  82. package/App/Modules/Designer/Components/AddGalleryImage/index.test.js +151 -0
  83. package/App/Modules/Designer/Components/AddVisualElement/Styles.scss +0 -0
  84. package/App/Modules/Designer/Components/AddVisualElement/index.js +278 -0
  85. package/App/Modules/Designer/Components/AddVisualElement/index.story.js +24 -0
  86. package/App/Modules/Designer/Components/AddVisualElement/index.test.js +47 -0
  87. package/App/Modules/Designer/Components/CloseDesignEditor/index.js +130 -0
  88. package/App/Modules/Designer/Components/CloseGraphicsEditorButton/index.js +54 -0
  89. package/App/Modules/Designer/Components/ColorPalettes/ColorPalettesSearch.js +175 -0
  90. package/App/Modules/Designer/Components/ColorPalettes/index.js +814 -0
  91. package/App/Modules/Designer/Components/ColorPalettes/index.story.js +158 -0
  92. package/App/Modules/Designer/Components/ColorPalettes/index.test.js +150 -0
  93. package/App/Modules/Designer/Components/DesignAreaControlbox/Styles.scss +0 -0
  94. package/App/Modules/Designer/Components/DesignAreaControlbox/index.js +467 -0
  95. package/App/Modules/Designer/Components/DesignAreaControlbox/index.story.js +272 -0
  96. package/App/Modules/Designer/Components/DesignAreaControlbox/index.test.js +164 -0
  97. package/App/Modules/Designer/Components/DesignerSelectionToolbox/CustomFontOverlay.js +162 -0
  98. package/App/Modules/Designer/Components/DesignerSelectionToolbox/DesignerSelectionToolbox.js +425 -0
  99. package/App/Modules/Designer/Components/DesignerSelectionToolbox/fontItemUtils.js +48 -0
  100. package/App/Modules/Designer/Components/Dialog/index.js +125 -0
  101. package/App/Modules/Designer/Components/EditDesignButton/index.js +128 -0
  102. package/App/Modules/Designer/Components/FeedbackNotice/index.js +110 -0
  103. package/App/Modules/Designer/Components/FeedbackNotice/index.test.js +16 -0
  104. package/App/Modules/Designer/Components/FullScreenView/FullScreenView.js +63 -0
  105. package/App/Modules/Designer/Components/ImageColorPicker/ImageColorPicker.dev.js +32 -0
  106. package/App/Modules/Designer/Components/ImageColorPicker/ImageColorPicker.js +430 -0
  107. package/App/Modules/Designer/Components/ImageColorize/index.js +636 -0
  108. package/App/Modules/Designer/Components/ImageColorize/index.story.js +73 -0
  109. package/App/Modules/Designer/Components/ImageControlbox/index.js +302 -0
  110. package/App/Modules/Designer/Components/ImageEditDialog/ImageThumbnail.js +171 -0
  111. package/App/Modules/Designer/Components/ImageEditDialog/ImageUpload.js +478 -0
  112. package/App/Modules/Designer/Components/ImageEditDialog/index.js +716 -0
  113. package/App/Modules/Designer/Components/ImageEditDialog/res/baseline_colorize_black_24dp.png +0 -0
  114. package/App/Modules/Designer/Components/ImageEditDialog/res/checkers_tile.png +0 -0
  115. package/App/Modules/Designer/Components/ImageLibraryFilter/index.js +179 -0
  116. package/App/Modules/Designer/Components/ImageLibraryThumbnail/Styles.scss +14 -0
  117. package/App/Modules/Designer/Components/ImageLibraryThumbnail/index.js +165 -0
  118. package/App/Modules/Designer/Components/ObjectTools/index.js +146 -0
  119. package/App/Modules/Designer/Components/Select/index.js +171 -0
  120. package/App/Modules/Designer/Components/TextControlbox/TextFormatIcon.js +48 -0
  121. package/App/Modules/Designer/Components/TextControlbox/index.js +656 -0
  122. package/App/Modules/Designer/Components/TextControlbox/index.story.js +109 -0
  123. package/App/Modules/Designer/Components/TextControlbox/index.test.js +172 -0
  124. package/App/Modules/Designer/Containers/AddGalleryImage.js +90 -0
  125. package/App/Modules/Designer/Containers/AddVisualElement.js +166 -0
  126. package/App/Modules/Designer/Containers/CloseDesignEditor.js +32 -0
  127. package/App/Modules/Designer/Containers/CloseGraphicsEditorButton.js +32 -0
  128. package/App/Modules/Designer/Containers/ColorPalettes.js +145 -0
  129. package/App/Modules/Designer/Containers/DesignAreaControlbox.js +54 -0
  130. package/App/Modules/Designer/Containers/Designer.js +37 -0
  131. package/App/Modules/Designer/Containers/DesignerSelectionToolbox.js +116 -0
  132. package/App/Modules/Designer/Containers/EditDesignButton.js +35 -0
  133. package/App/Modules/Designer/Containers/ImageEditDialog.js +1130 -0
  134. package/App/Modules/Designer/Designer.js +231 -0
  135. package/App/Modules/Designer/DesignerScreen.js +255 -0
  136. package/App/Modules/Designer/DesignerUI.js +241 -0
  137. package/App/Modules/Designer/Layouts/DefaultLayout.js +221 -0
  138. package/App/Modules/Designer/Layouts/Mobile/TwoSideBottomBar.js +50 -0
  139. package/App/Modules/Designer/Layouts/PopupAreaProvider.js +186 -0
  140. package/App/Modules/Designer/MultilayerComponents/DesignerClickAwayListener.js +53 -0
  141. package/App/Modules/Designer/MultilayerComponents/InlineToolboxPortal.js +106 -0
  142. package/App/Modules/Designer/MultilayerComponents/StandardToolboxPortal.js +64 -0
  143. package/App/Modules/Designer/Utils/FontFaceRepository.js +82 -0
  144. package/App/Modules/Designer/Utils/ImageEditUtils.js +104 -0
  145. package/App/Modules/Designer/Utils/Transformers.js +164 -0
  146. package/App/Modules/Designer/setupDesigner.js +182 -0
  147. package/App/Modules/Designer/withActiveCanvas.js +136 -0
  148. package/App/Modules/Visualization/AlignTargetContainer.js +55 -0
  149. package/App/Modules/Visualization/CreatorAlignTarget.js +41 -0
  150. package/App/Modules/Visualization/DefaultVisualizationProvider.js +105 -0
  151. package/App/Modules/Visualization/DesignerAlignTarget.js +45 -0
  152. package/App/Modules/Visualization/Utils/getFirstDataURLFromScreenshotsObj.js +20 -0
  153. package/App/Reducers/Actions.js +297 -0
  154. package/App/Reducers/ConfigurationMode/Actions.js +21 -0
  155. package/App/Reducers/ConfigurationMode/Reducer.js +80 -0
  156. package/App/Reducers/ConfigurationMode/Selectors.js +84 -0
  157. package/App/Reducers/Configurator/Actions.js +1417 -0
  158. package/App/Reducers/Configurator/AttributeSelectors.js +32 -0
  159. package/App/Reducers/Configurator/Modifiers.js +35 -0
  160. package/App/Reducers/Configurator/Reducer.js +639 -0
  161. package/App/Reducers/Configurator/Selectors.js +242 -0
  162. package/App/Reducers/Confirm/Actions.js +84 -0
  163. package/App/Reducers/Confirm/Reducer.js +30 -0
  164. package/App/Reducers/DesignArea/Actions.js +76 -0
  165. package/App/Reducers/DesignArea/DesignElementSelectors.js +114 -0
  166. package/App/Reducers/DesignArea/MaskSelectors.js +101 -0
  167. package/App/Reducers/DesignArea/Reducer.js +150 -0
  168. package/App/Reducers/DesignArea/Selectors.js +1304 -0
  169. package/App/Reducers/DesignArea/Transformers.js +333 -0
  170. package/App/Reducers/DesignData/Actions.js +232 -0
  171. package/App/Reducers/DesignData/Modifiers.js +328 -0
  172. package/App/Reducers/DesignData/Reducer.js +189 -0
  173. package/App/Reducers/DesignData/Selectors.js +94 -0
  174. package/App/Reducers/DesignData/Transformers.js +27 -0
  175. package/App/Reducers/DesignView/Actions.js +19 -0
  176. package/App/Reducers/DesignView/Reducer.js +165 -0
  177. package/App/Reducers/DesignView/Selectors.js +130 -0
  178. package/App/Reducers/DesignView/Transformers.js +32 -0
  179. package/App/Reducers/Device/Actions.js +16 -0
  180. package/App/Reducers/Device/Reducer.js +51 -0
  181. package/App/Reducers/Fonts/Actions.js +137 -0
  182. package/App/Reducers/Fonts/Reducer.js +39 -0
  183. package/App/Reducers/Fonts/Selectors.js +98 -0
  184. package/App/Reducers/GeneralActions.js +16 -0
  185. package/App/Reducers/ImageGallery/Actions.js +336 -0
  186. package/App/Reducers/ImageGallery/Modifiers.js +67 -0
  187. package/App/Reducers/ImageGallery/Reducer.js +320 -0
  188. package/App/Reducers/ImageGallery/Selectors.js +206 -0
  189. package/App/Reducers/Reducer.js +107 -0
  190. package/App/Reducers/UI/Actions.js +191 -0
  191. package/App/Reducers/UI/Reducer.js +98 -0
  192. package/App/Reducers/UI/Selectors.js +32 -0
  193. package/App/Reducers.js +48 -0
  194. package/App/Routing.js +168 -0
  195. package/App/Screens/Configurator/CalculationWidgetScreen.js +84 -0
  196. package/App/Screens/Configurator/Components/AmountSelection/Styles.scss +17 -0
  197. package/App/Screens/Configurator/Components/AmountSelection/index.js +170 -0
  198. package/App/Screens/Configurator/Components/AmountSelection/index.story.js +36 -0
  199. package/App/Screens/Configurator/Components/CalculationWidget/index.js +652 -0
  200. package/App/Screens/Configurator/Components/CalculationWidget/index.story.js +154 -0
  201. package/App/Screens/Configurator/Components/CalculationWidget/index.test.js +142 -0
  202. package/App/Screens/Configurator/Components/ConfigurationModeSwitch/ConfigurationModeSwitch.js +82 -0
  203. package/App/Screens/Configurator/Components/ConfigurationModeSwitch/index.js +15 -0
  204. package/App/Screens/Configurator/Components/Confirm/Styles.scss +0 -0
  205. package/App/Screens/Configurator/Components/Confirm/index.js +105 -0
  206. package/App/Screens/Configurator/Components/DesignApproval/index.js +76 -0
  207. package/App/Screens/Configurator/Components/DesignApproval/index.story.js +27 -0
  208. package/App/Screens/Configurator/Components/DesignApproval/index.test.js +31 -0
  209. package/App/Screens/Configurator/Components/Error/index.js +106 -0
  210. package/App/Screens/Configurator/Components/FallbackVisualization/FallbackVisualization.js +96 -0
  211. package/App/Screens/Configurator/Components/FileUpload/FileUploadBase.js +1 -0
  212. package/App/Screens/Configurator/Components/FullScreenView/index.js +304 -0
  213. package/App/Screens/Configurator/Components/FullScreenView/index.test.js +28 -0
  214. package/App/Screens/Configurator/Components/ImageLoader/ImageLoader.js +96 -0
  215. package/App/Screens/Configurator/Components/LandscapeInformation/index.js +75 -0
  216. package/App/Screens/Configurator/Components/NoVisualization/NoVisualization.js +35 -0
  217. package/App/Screens/Configurator/Components/PreviewPortal/index.js +249 -0
  218. package/App/Screens/Configurator/Components/Styles.scss +1 -0
  219. package/App/Screens/Configurator/Components/Thumbnail/index.js +394 -0
  220. package/App/Screens/Configurator/Components/Thumbnail/index.test.js +50 -0
  221. package/App/Screens/Configurator/Components/TotalPrice/TotalPrice.js +57 -0
  222. package/App/Screens/Configurator/Containers/AmountPrice.js +84 -0
  223. package/App/Screens/Configurator/Containers/CalculationWidget.js +278 -0
  224. package/App/Screens/Configurator/Containers/ConfigurationModeSwitch.js +81 -0
  225. package/App/Screens/Configurator/Containers/Confirm.js +37 -0
  226. package/App/Screens/Configurator/Containers/DesignApproval.js +129 -0
  227. package/App/Screens/Configurator/Containers/FallbackVisualization.js +32 -0
  228. package/App/Screens/Configurator/Containers/FullScreenView.js +47 -0
  229. package/App/Screens/Configurator/Containers/Thumbnail.js +41 -0
  230. package/App/Screens/Configurator/Containers/Visualization.js +13 -0
  231. package/App/Screens/Configurator/DynamicComponents.js +40 -0
  232. package/App/Screens/Configurator/Screen.js +238 -0
  233. package/App/Screens/Configurator/ScreenPropTypes.js +45 -0
  234. package/App/Screens/Configurator/ThemeProvider.js +298 -0
  235. package/App/Screens/DesignerProductPreview/Constants.js +12 -0
  236. package/App/Screens/DesignerProductPreview/DesignerProductPreviewManager.js +554 -0
  237. package/App/Screens/DesignerProductPreview/Screen.js +407 -0
  238. package/App/Screens.js +42 -0
  239. package/App/ServiceLocator.js +309 -0
  240. package/App/Services/AdminareaCommunicationService.js +149 -0
  241. package/App/Services/AnalyticsService.js +403 -0
  242. package/App/Services/ConfiguratorService.js +1166 -0
  243. package/App/Services/DesignDataService.js +3249 -0
  244. package/App/Services/DesignerService.js +496 -0
  245. package/App/Services/InteractionService.js +784 -0
  246. package/App/Services/UIService.js +129 -0
  247. package/App/Services/VisualizationService.js +844 -0
  248. package/App/Shared/Components/AcceptDesign/index.js +166 -0
  249. package/App/Shared/Components/AddToBasket/index.js +194 -0
  250. package/App/Shared/Components/AddToBasket/index.story.js +47 -0
  251. package/App/Shared/Components/AlertDialog/index.js +138 -0
  252. package/App/Shared/Components/AmountInput/Styles.scss +6 -0
  253. package/App/Shared/Components/AmountInput/index.js +296 -0
  254. package/App/Shared/Components/AmountInput/index.story.js +29 -0
  255. package/App/Shared/Components/AmountPrice/index.js +925 -0
  256. package/App/Shared/Components/AmountPrice/index.story.js +112 -0
  257. package/App/Shared/Components/AmountPrice/index.test.js +125 -0
  258. package/App/Shared/Components/Analytics/AnalyticsWrapper.js +49 -0
  259. package/App/Shared/Components/BulkNames/index.js +319 -0
  260. package/App/Shared/Components/CallToAction/index.js +220 -0
  261. package/App/Shared/Components/Header/Header.js +150 -0
  262. package/App/Shared/Components/Header/index.js +15 -0
  263. package/App/Shared/Components/Header/index.story.js +143 -0
  264. package/App/Shared/Components/InformationTag/InformationTag.js +155 -0
  265. package/App/Shared/Components/LicenseNotice/LicenseNotice.js +148 -0
  266. package/App/Shared/Components/LicenseNotice/index.js +15 -0
  267. package/App/Shared/Components/LoadConfiguration/index.js +218 -0
  268. package/App/Shared/Components/MessageBox/index.js +84 -0
  269. package/App/Shared/Components/MessageBox/index.story.js +49 -0
  270. package/App/Shared/Components/Notification/index.js +105 -0
  271. package/App/Shared/Components/Notification/index.story.js +55 -0
  272. package/App/Shared/Components/PdfDownload/index.js +150 -0
  273. package/App/Shared/Components/PlusMinusInput/index.js +118 -0
  274. package/App/Shared/Components/PriceList/index.js +237 -0
  275. package/App/Shared/Components/PriceList/index.story.js +114 -0
  276. package/App/Shared/Components/PriceOverview/index.js +177 -0
  277. package/App/Shared/Components/PriceOverview/index.story.js +215 -0
  278. package/App/Shared/Components/ProductVariant/Image.js +75 -0
  279. package/App/Shared/Components/ProductVariant/Styles.scss +11 -0
  280. package/App/Shared/Components/ProductVariant/index.js +477 -0
  281. package/App/Shared/Components/ProductVariant/index.story.js +283 -0
  282. package/App/Shared/Components/Progress/Progress.js +59 -0
  283. package/App/Shared/Components/ReceiveOfferForm/index.js +432 -0
  284. package/App/Shared/Components/ReceiveOfferForm/index.story.js +32 -0
  285. package/App/Shared/Components/ReceiveOfferForm/index.test.js +36 -0
  286. package/App/Shared/Components/SaveConfiguration/index.js +286 -0
  287. package/App/Shared/Components/SendEmail/index.js +103 -0
  288. package/App/Shared/Components/Stepper/index.js +136 -0
  289. package/App/Shared/Components/Stepper/index.story.js +38 -0
  290. package/App/Shared/Components/ToolbarList/index.js +231 -0
  291. package/App/Shared/Components/ToolbarList/index.story.js +33 -0
  292. package/App/Shared/Components/VariantChooser/index.js +270 -0
  293. package/App/Shared/Components/VariantChooser/index.story.js +100 -0
  294. package/App/Shared/Containers/AlertMessages.js +37 -0
  295. package/App/Shared/Containers/AmountPrice/AmountPriceAdminareaWrapper.js +40 -0
  296. package/App/Shared/Containers/AmountPrice/index.js +284 -0
  297. package/App/Shared/Containers/BulkNames.js +310 -0
  298. package/App/Shared/Containers/Error.js +37 -0
  299. package/App/Shared/Containers/GlobalLoader.js +25 -0
  300. package/App/Shared/Containers/Header/index.js +178 -0
  301. package/App/Shared/Containers/LicenseNotice/LicenseNotice.js +26 -0
  302. package/App/Shared/Containers/LicenseNotice/index.js +15 -0
  303. package/App/Shared/Containers/LoadConfiguration/LoadConfiguration.js +146 -0
  304. package/App/Shared/Containers/LoadConfiguration/index.js +15 -0
  305. package/App/Shared/Containers/PdfDownload/index.js +39 -0
  306. package/App/Shared/Containers/ProductVariant/ProductVariant.js +339 -0
  307. package/App/Shared/Containers/ProductVariant/index.js +15 -0
  308. package/App/Shared/Containers/SaveConfiguration.js +49 -0
  309. package/App/Shared/Containers/SendEmail/SendEmail.js +45 -0
  310. package/App/Shared/Containers/SendEmail/index.js +15 -0
  311. package/App/Shared/Providers/DefaultCanvasProvider.js +86 -0
  312. package/App/Storage.js +17 -0
  313. package/App/Store.js +87 -0
  314. package/App/Styles.scss +0 -0
  315. package/App/Translations.js +88 -0
  316. package/App/Utils/createMessageInterface.js +65 -0
  317. package/App/Utils/customClassName.js +12 -0
  318. package/App/Utils/getContrastText.js +27 -0
  319. package/App/Utils/getImageUrl.js +32 -0
  320. package/App/Variables.scss +84 -0
  321. package/App/configuration.js +421 -0
  322. package/App/index.js +52 -0
  323. package/App/initServices.js +67 -0
  324. package/App/setup.js +22 -0
  325. package/App/versionInfo.js +8 -0
  326. package/Framework/Api.js +178 -0
  327. package/Framework/ComponentContainer.js +165 -0
  328. package/Framework/Components/Carousel/Styles.scss +85 -0
  329. package/Framework/Components/Carousel/index.js +322 -0
  330. package/Framework/Components/Dialog/Style.scss +79 -0
  331. package/Framework/Components/Dialog/index.js +721 -0
  332. package/Framework/Components/DialogSelect/Styles.scss +53 -0
  333. package/Framework/Components/DialogSelect/index.js +331 -0
  334. package/Framework/Components/Input/index.js +147 -0
  335. package/Framework/Components/LoadingOverlay/Styles.scss +37 -0
  336. package/Framework/Components/LoadingOverlay/index.js +33 -0
  337. package/Framework/Components/Markdown/index.js +62 -0
  338. package/Framework/Components/Mobile/index.js +33 -0
  339. package/Framework/CustomError.js +51 -0
  340. package/Framework/Helpers/TransitionDetect.js +116 -0
  341. package/Framework/Helpers/isLandscapeMobile.js +14 -0
  342. package/Framework/Helpers/isMobileDevice.js +17 -0
  343. package/Framework/Helpers/isMobileSize.js +13 -0
  344. package/Framework/Mixins.scss +235 -0
  345. package/Framework/Services/AbstractAdminareaCommunicationService.js +48 -0
  346. package/Framework/Services/AbstractAsyncService.js +44 -0
  347. package/Framework/Services/AbstractConfiguratorService.js +47 -0
  348. package/Framework/Services/AbstractInteractionService.js +50 -0
  349. package/Framework/Services/AbstractStoreService.js +42 -0
  350. package/Framework/Services/AbstractUIService.js +53 -0
  351. package/Framework/Services/AbstractVisualizationService.js +47 -0
  352. package/Framework/Services/AsyncService.js +93 -0
  353. package/Framework/Services/StoreService.js +237 -0
  354. package/Framework/Variables.scss +22 -0
  355. package/Framework/bindDecorator.js +173 -0
  356. package/Framework/i18n.js +382 -0
  357. package/README.md +5 -26
  358. package/Resources/Icons/MaterialUI/Icons/AddCircle.js +13 -0
  359. package/Resources/Icons/MaterialUI/Icons/RemoveCircle.js +13 -0
  360. package/Resources/Icons/MaterialUI/fontFace.scss +37 -0
  361. package/Resources/Icons/MaterialUI/fonts/MaterialIcons-Regular.eot +0 -0
  362. package/Resources/Icons/MaterialUI/fonts/MaterialIcons-Regular.svg +2373 -0
  363. package/Resources/Icons/MaterialUI/fonts/MaterialIcons-Regular.ttf +0 -0
  364. package/Resources/Icons/MaterialUI/fonts/MaterialIcons-Regular.woff +0 -0
  365. package/Resources/Icons/MaterialUI/fonts/MaterialIcons-Regular.woff2 +0 -0
  366. package/Resources/Icons/fonts/ionicons.eot +0 -0
  367. package/Resources/Icons/fonts/ionicons.svg +2230 -0
  368. package/Resources/Icons/fonts/ionicons.ttf +0 -0
  369. package/Resources/Icons/fonts/ionicons.woff +0 -0
  370. package/Resources/Icons/ionicons.scss +1489 -0
  371. package/Resources/Icons/ioniconsExtend.scss +1469 -0
  372. package/Resources/Icons/v4/fontFace.scss +11 -0
  373. package/Resources/Icons/v4/fonts/ionicons.eot +0 -0
  374. package/Resources/Icons/v4/fonts/ionicons.svg +2090 -0
  375. package/Resources/Icons/v4/fonts/ionicons.ttf +0 -0
  376. package/Resources/Icons/v4/fonts/ionicons.woff +0 -0
  377. package/Resources/Icons/v4/fonts/ionicons.woff2 +0 -0
  378. package/Resources/Icons/v4/icons.scss +15 -0
  379. package/Resources/Icons/v4/iconsExtend.scss +7 -0
  380. package/Resources/Images/designer_placeholder_logo.svg +1 -0
  381. package/Resources/Masks/circle.svg +4 -0
  382. package/Shared/Components/CustomDialog.js +133 -0
  383. package/Shared/Components/CustomDialogSelect.js +161 -0
  384. package/Shared/Components/MainButton.js +81 -0
  385. package/Shared/ErrorTypes/DeferredError.js +51 -0
  386. package/Shared/HOCs/ResizeDetect/ResizeDetect.dev.js +60 -0
  387. package/Shared/HOCs/ResizeDetect/ResizeDetect.js +217 -0
  388. package/Shared/HOCs/getDisplayName.js +10 -0
  389. package/Shared/HOCs/withFixedChangeHandler.js +46 -0
  390. package/Shared/PropTypes/ReactComponent.js +13 -0
  391. package/Shared/Styles/absoluteCenter.js +17 -0
  392. package/Utils/Array/isIdentical.js +38 -0
  393. package/Utils/Async/AsyncManager.js +128 -0
  394. package/Utils/Async/Deferred.js +145 -0
  395. package/Utils/Async/ObjectLock.js +38 -0
  396. package/Utils/Decorators/Observable.js +130 -0
  397. package/Utils/Dev/HOCs/withFilePicker.js +101 -0
  398. package/Utils/Dev/isDev.js +21 -0
  399. package/Utils/Events/pointerEvent.js +199 -0
  400. package/Utils/Events/preventEventDoubling.js +23 -0
  401. package/Utils/Function/cached.js +64 -0
  402. package/Utils/Function/createDebounceManager.js +77 -0
  403. package/Utils/Function/createSelector.js +62 -0
  404. package/Utils/Function/memoize.js +46 -0
  405. package/Utils/Function/sendMessage.js +22 -0
  406. package/Utils/Helper/createSelectionRangeMemo.js +45 -0
  407. package/Utils/Immutable/set.js +81 -0
  408. package/Utils/Math/conversions.js +13 -0
  409. package/Utils/Math/isPositiveNumber.js +12 -0
  410. package/Utils/Redux/createActionWithGlobalState.js +23 -0
  411. package/Utils/Styles/combineMediaQueries.js +24 -0
  412. package/Utils/Styles/createCheckerBoardBackground.js +22 -0
  413. package/Utils/Test/CallOrderChecker.js +29 -0
  414. package/Utils/Test/createStoreProvider.js +33 -0
  415. package/Utils/Test/formDataToJSON.js +20 -0
  416. package/Utils/Test/mountWithState.js +40 -0
  417. package/index.js +8 -0
  418. package/package.json +22 -103
  419. package/public/translations/de_DE.json +3 -0
  420. package/public/translations/en_GB.json +3 -0
  421. package/scripts/cpPublic.js +3 -3
  422. package/scripts/getDefaultWebpackConfig.js +11 -10
  423. package/src/App/Error/ProductionErrorPage/Style.scss +1 -1
  424. package/src/App/Modules/Creator/Components/Incompatibility/OptionExclusionRule/index.js +116 -0
  425. package/src/App/Modules/Creator/Components/Incompatibility/index.js +2 -1
  426. package/src/App/Modules/Creator/Components/Option/index.test.js +1 -1
  427. package/src/App/Modules/Creator/Components/OptionAmount/index.test.js +1 -1
  428. package/src/App/Modules/Creator/Components/ProductPart/__snapshots__/index.test.js.snap +33 -10
  429. package/src/App/Modules/Creator/Components/ProductPart/index.js +5 -1
  430. package/src/App/Modules/Creator/Components/ProductPart/index.test.js +14 -1
  431. package/src/App/Modules/Creator/Components/ProductPartsList/index.js +3 -0
  432. package/src/App/Modules/Creator/Containers/ProductPartsList/index.js +1 -0
  433. package/src/App/Modules/Designer/Components/AddGalleryImage/index.story.js +1 -1
  434. package/src/App/Modules/Designer/Components/ColorPalettes/index.test.jsx +1 -1
  435. package/src/App/Modules/Designer/Components/DesignAreaControlbox/index.js +21 -4
  436. package/src/App/Modules/Designer/Components/DesignAreaControlbox/index.test.jsx +1 -1
  437. package/src/App/Modules/Designer/Components/TextControlbox/index.test.jsx +1 -1
  438. package/src/App/Modules/Designer/Containers/Designer.js +1 -1
  439. package/src/App/Modules/Designer/DesignerScreen.js +32 -8
  440. package/src/App/{Screens/Configurator → Modules/Designer}/DesignerUI.js +42 -26
  441. package/src/App/Modules/Designer/Layouts/DefaultLayout.js +35 -1
  442. package/src/App/Modules/Designer/MultilayerComponents/DesignerClickAwayListener.js +18 -0
  443. package/src/App/Modules/Designer/MultilayerComponents/InlineToolboxPortal.js +54 -0
  444. package/src/App/Modules/Designer/MultilayerComponents/StandardToolboxPortal.js +38 -0
  445. package/src/App/Reducers/DesignView/Actions.js +1 -2
  446. package/src/App/Reducers/DesignView/Reducer.js +2 -10
  447. package/src/App/Reducers/DesignView/__mocks__/designerViewData.js +0 -1
  448. package/src/App/Reducers/DesignView/__tests__/Reducer.test.js +0 -22
  449. package/src/App/Reducers/ImageGallery/Actions.js +1 -1
  450. package/src/App/Screens/Configurator/Components/CalculationWidget/__snapshots__/index.test.jsx.snap +4 -4
  451. package/src/App/Screens/Configurator/Components/CalculationWidget/index.test.jsx +1 -1
  452. package/src/App/Screens/Configurator/Components/DesignApproval/index.test.jsx +1 -1
  453. package/src/App/Screens/Configurator/Components/FullScreenView/__snapshots__/index.test.jsx.snap +1 -1
  454. package/src/App/Screens/Configurator/Components/FullScreenView/index.js +3 -2
  455. package/src/App/Screens/Configurator/Components/FullScreenView/index.test.jsx +1 -1
  456. package/src/App/Screens/Configurator/Components/PreviewPortal/index.js +7 -3
  457. package/src/App/Screens/Configurator/Containers/AmountPrice.js +1 -1
  458. package/src/App/Screens/Configurator/Containers/Confirm.js +1 -1
  459. package/src/App/Screens/Configurator/Containers/FullScreenView.js +1 -0
  460. package/src/App/Screens/Configurator/Containers/__tests__/Designer.test.js +1 -1
  461. package/src/App/Screens/Configurator/Screen.js +3 -1
  462. package/src/App/Screens/DesignerProductPreview/__tests__/__snapshots__/Screen.test.js.snap +1 -1
  463. package/src/App/Services/ConfiguratorService.js +25 -4
  464. package/src/App/Services/InteractionService.js +2 -1
  465. package/src/App/Services/VisualizationService.js +3 -0
  466. package/src/App/Services/__tests__/DesignDataService.selectViewForComponent.test.js +0 -53
  467. package/src/App/Shared/Containers/AlertMessages.js +1 -1
  468. package/src/App/Shared/Containers/AmountPrice/index.test.js +1 -1
  469. package/src/App/Shared/Containers/Error.js +1 -1
  470. package/src/App/Shared/Containers/SaveConfiguration.js +1 -1
  471. package/src/App/Translations.js +1 -1
  472. package/src/App/Utils/createMessageInterface.js +10 -0
  473. package/src/App/configuration.js +3 -0
  474. package/src/Framework/i18n.js +2 -3
  475. package/babel.config.js +0 -46
  476. package/public/ConfigurationMessagingDemo.html +0 -55
  477. package/scripts/cpPath.js +0 -135
  478. package/scripts/moveLibToPackageRoot.js +0 -40
  479. package/scripts/rmDir.js +0 -29
  480. package/scripts/updateLocalPackages.js +0 -68
  481. package/scripts/utils/process.js +0 -19
  482. package/tsconfig.json +0 -22
@@ -51,7 +51,9 @@ const styles = theme => ({
51
51
  padding: 0,
52
52
  },
53
53
  '&:last-child': {
54
- paddingBottom: 16,
54
+ [theme.breakpoints.up('sm')]: {
55
+ paddingBottom: 16,
56
+ },
55
57
  },
56
58
  },
57
59
  listItemText: {
@@ -101,13 +103,28 @@ const styles = theme => ({
101
103
  },
102
104
  },
103
105
  underlineInputText: {
104
- marginBottom: 8,
106
+ marginBottom: 0,
107
+ [theme.breakpoints.up('sm')]: {
108
+ marginBottom: 8,
109
+ },
110
+ '&:before': {
111
+ borderBottom: 0,
112
+ [theme.breakpoints.up('sm')]: {
113
+ borderBottom: '1px solid rgba(0, 0, 0, 0.42)',
114
+ },
115
+ },
105
116
  //https://github.com/mui-org/material-ui/issues/12192#issuecomment-406182809
106
117
  '&&&&:hover:before': {
107
- borderBottom: '1px solid rgba(0, 0, 0, 0.42)',
118
+ borderBottom: 0,
119
+ [theme.breakpoints.up('sm')]: {
120
+ borderBottom: '1px solid rgba(0, 0, 0, 0.42)',
121
+ },
108
122
  },
109
123
  '&:after': {
110
- borderBottom: '1px solid transparent',
124
+ borderBottom: 0,
125
+ [theme.breakpoints.up('sm')]: {
126
+ borderBottom: '1px solid transparent',
127
+ },
111
128
  },
112
129
  },
113
130
  iconRootCheck: {
@@ -2,7 +2,7 @@
2
2
  import React from 'react';
3
3
  import { noop } from 'lodash';
4
4
  import { mount, render } from 'enzyme';
5
- import DesignAreaControlbox from '../DesignAreaControlbox';
5
+ import DesignAreaControlbox from './index';
6
6
  import MenuItem from '@material-ui/core/MenuItem';
7
7
  import ServiceLocator from 'App/ServiceLocator';
8
8
 
@@ -3,7 +3,7 @@ import React from 'react';
3
3
  import { noop } from 'lodash';
4
4
  import { mount, render } from 'enzyme';
5
5
  import MenuItem from '@material-ui/core/MenuItem';
6
- import TextControlbox from '../TextControlbox';
6
+ import TextControlbox from './index';
7
7
  import ServiceLocator from 'App/ServiceLocator';
8
8
 
9
9
  const mockedFontsList = [
@@ -1,6 +1,6 @@
1
1
  import { containerConnect } from 'Framework/ComponentContainer';
2
2
  import { designAreaAppliesMask, getCurrentCanvasSize } from 'App/Reducers/DesignArea/Selectors';
3
- import { DefaultDesigner } from 'App/Screens/Configurator/DesignerUI';
3
+ import { DefaultDesigner } from '../DesignerUI';
4
4
  import { Services } from 'App/ServiceLocator';
5
5
  import { getClientHighlightColor, visualizationModeCheck } from 'App/Reducers/Configurator/Selectors';
6
6
  import { isFallbackVisualizationMode } from 'App/Reducers/Configurator/Selectors';
@@ -25,6 +25,7 @@ import DesignerSelectionToolbox from './Containers/DesignerSelectionToolbox';
25
25
  import AddVisualElement from './Containers/AddVisualElement';
26
26
  import ScreenPropTypes from '../../Screens/Configurator/ScreenPropTypes';
27
27
  import FullScreenView from './Components/FullScreenView/FullScreenView';
28
+ import DesignerClickAwayListener from './MultilayerComponents/DesignerClickAwayListener';
28
29
 
29
30
  /**
30
31
  * Main Screen of the configurator
@@ -59,6 +60,7 @@ export function DesignerScreen(props) {
59
60
  renderLoader,
60
61
  renderLicenseNotice,
61
62
  customElements,
63
+ visualizationOverlayMode,
62
64
 
63
65
  // Components
64
66
  CanvasProvider,
@@ -78,6 +80,16 @@ export function DesignerScreen(props) {
78
80
  renderProps.width === 'xs' && showDesigner ? () => <div /> : renderHeader()
79
81
  }
80
82
  fallbackMode={fallbackMode}
83
+ showDesigner={showDesigner}
84
+ visualizationOverlayMode={visualizationOverlayMode}
85
+ renderDesigner={
86
+ visualizationOverlayMode &&
87
+ (props => (
88
+ <FallbackVisualization fallbackMode={fallbackMode} showContent={showDesigner}>
89
+ {showDesigner && renderDesigner({ visualizationOverlayMode, ...props })}
90
+ </FallbackVisualization>
91
+ ))
92
+ }
81
93
  renderVisualization={() =>
82
94
  renderVisualization({
83
95
  fullScreenViewProps: {
@@ -100,9 +112,11 @@ export function DesignerScreen(props) {
100
112
  : !showProductViewButton && renderEditDesignButton({ styledButton: false })
101
113
  : null}
102
114
  {!fallbackMode && <DesignerAlignTarget />}
103
- <FallbackVisualization fallbackMode={fallbackMode} showContent={showDesigner}>
104
- {showDesigner && renderDesigner()}
105
- </FallbackVisualization>
115
+ {!visualizationOverlayMode && (
116
+ <FallbackVisualization fallbackMode={fallbackMode} showContent={showDesigner}>
117
+ {showDesigner && renderDesigner()}
118
+ </FallbackVisualization>
119
+ )}
106
120
  {renderError()}
107
121
  {renderAlertMessages()}
108
122
  {renderConfirm()}
@@ -230,11 +244,21 @@ const renderEditDesignButton = ({ styledButton }) => <EditDesignButton buttonXS=
230
244
  DesignerScreen.defaultProps = {
231
245
  // Render props
232
246
  renderCreator: () => null,
233
- renderDesigner: () => (
234
- <React.Suspense fallback={<div>Loading Designer Component...</div>}>
235
- <Designer />
236
- </React.Suspense>
237
- ),
247
+ renderDesigner: ({ designerClassName, visualizationOverlayMode } = {}) => {
248
+ const designer = <Designer visualizationOverlayMode={visualizationOverlayMode} />;
249
+ return (
250
+ <React.Suspense fallback={<div>Loading Designer Component...</div>}>
251
+ {visualizationOverlayMode ? (
252
+ <>
253
+ <DesignerClickAwayListener />
254
+ <div className={designerClassName}>{designer}</div>
255
+ </>
256
+ ) : (
257
+ designer
258
+ )}
259
+ </React.Suspense>
260
+ );
261
+ },
238
262
  renderDesignerSelectionToolbox: () => (
239
263
  <React.Suspense fallback={<div>Loading Designer Toolbox...</div>}>
240
264
  <DesignerSelectionToolbox />
@@ -7,8 +7,8 @@ import IconDelete from '@material-ui/icons/Delete';
7
7
  import IconRotate from '@material-ui/icons/RotateRight';
8
8
  import IconScale from '@material-ui/icons/UnfoldMore';
9
9
 
10
- import Designer from 'App/Modules/Designer/Designer';
11
- import AddVisualElement from 'App/Modules/Designer/Containers/AddVisualElement';
10
+ import Designer from './Designer';
11
+ import AddVisualElement from './Containers/AddVisualElement';
12
12
  import withWidth, { isWidthUp } from '@material-ui/core/withWidth/withWidth';
13
13
 
14
14
  import { getConf } from 'App/configuration';
@@ -16,6 +16,8 @@ import PropTypes from 'prop-types';
16
16
  import Typography from '@material-ui/core/Typography';
17
17
  import { useSelector } from 'react-redux';
18
18
  import { getSelectedDesignProductionMethod } from '../../Reducers/DesignArea/Selectors';
19
+ import StandardToolboxPortal from './MultilayerComponents/StandardToolboxPortal';
20
+ import InlineToolboxPortal from './MultilayerComponents/InlineToolboxPortal';
19
21
 
20
22
  const StandardToolboxWithCanvasState = withWidth()(
21
23
  ({ width }) =>
@@ -26,15 +28,23 @@ const StandardToolboxWithCanvasState = withWidth()(
26
28
  )
27
29
  );
28
30
 
29
- const renderStandardToolbox = ({ upload, components: { StandardToolbox } }) => (
30
- <StandardToolbox {...{ upload }}>
31
- {({ canvas }) => (
32
- <CanvasStateProvider canvas={canvas}>
33
- <StandardToolboxWithCanvasState canvas={canvas} />
34
- </CanvasStateProvider>
35
- )}
36
- </StandardToolbox>
37
- );
31
+ const renderStandardToolbox = ({ visualizationOverlayMode } = {}) => ({
32
+ upload,
33
+ components: { StandardToolbox },
34
+ }) => {
35
+ const ContainerComponent = visualizationOverlayMode ? StandardToolboxPortal : React.Fragment;
36
+ return (
37
+ <ContainerComponent>
38
+ <StandardToolbox {...{ upload }}>
39
+ {({ canvas }) => (
40
+ <CanvasStateProvider canvas={canvas}>
41
+ <StandardToolboxWithCanvasState canvas={canvas} />
42
+ </CanvasStateProvider>
43
+ )}
44
+ </StandardToolbox>
45
+ </ContainerComponent>
46
+ );
47
+ };
38
48
 
39
49
  const toolboxButtonStyle = {
40
50
  width: 40,
@@ -119,8 +129,12 @@ const renderAngleLabel = angleLabel => {
119
129
  return <AngleLabel angleLabel={angleLabel} />;
120
130
  };
121
131
 
122
- const renderInlineToolbox = ({ components: { InlineToolbox } }) => (
123
- <InlineToolbox renderToolboxButton={renderInlineToolButton} renderAngleLabel={renderAngleLabel} />
132
+ const renderInlineToolbox = ({ visualizationOverlayMode }) => ({ components: { InlineToolbox } }) => (
133
+ <InlineToolbox
134
+ renderToolboxButton={renderInlineToolButton}
135
+ renderAngleLabel={renderAngleLabel}
136
+ ContainerComponent={visualizationOverlayMode ? InlineToolboxPortal : React.Fragment}
137
+ />
124
138
  );
125
139
 
126
140
  renderInlineToolButton.propTypes = {
@@ -134,17 +148,19 @@ renderInlineToolbox.propTypes = {
134
148
  components: PropTypes.element,
135
149
  };
136
150
 
137
- renderStandardToolbox.propTypes = {
138
- upload: PropTypes.array,
139
- components: PropTypes.element,
151
+ export const DefaultDesigner = ({ visualizationOverlayMode, ...props }) => {
152
+ return (
153
+ <Designer
154
+ renderStandardToolbox={renderStandardToolbox({ visualizationOverlayMode })}
155
+ renderSelectionToolbox={() => null /*disable the default*/}
156
+ renderInlineToolbox={renderInlineToolbox({ visualizationOverlayMode })}
157
+ renderRulers={getConf('displayEditorRulers', true) ? null : noop}
158
+ fillContainer
159
+ {...props}
160
+ />
161
+ );
162
+ };
163
+
164
+ DefaultDesigner.propTypes = {
165
+ visualizationOverlayMode: PropTypes.bool.isRequired,
140
166
  };
141
- export const DefaultDesigner = props => (
142
- <Designer
143
- renderStandardToolbox={renderStandardToolbox}
144
- renderSelectionToolbox={() => null /*disable the default*/}
145
- renderInlineToolbox={renderInlineToolbox}
146
- renderRulers={getConf('displayEditorRulers', true) ? null : noop}
147
- fillContainer
148
- {...props}
149
- />
150
- );
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { withStyles } from '@material-ui/core/styles';
3
3
  import withWidth from '@material-ui/core/withWidth';
4
4
  import PropTypes from 'prop-types';
5
+ import clsx from 'clsx';
5
6
 
6
7
  const styles = theme => ({
7
8
  root: {
@@ -97,6 +98,26 @@ const styles = theme => ({
97
98
  top: 69,
98
99
  },
99
100
  },
101
+ visualizationOverlay: {
102
+ pointerEvents: 'none',
103
+ zIndex: 1,
104
+ },
105
+ designer: {
106
+ position: 'absolute',
107
+ width: '100%',
108
+ height: 'calc(100% - 342px)',
109
+ display: 'flex',
110
+ pointerEvents: 'none',
111
+ top: 60,
112
+ [theme.breakpoints.up('sm')]: {
113
+ top: 0,
114
+ },
115
+ [theme.orientation.landscape]: {
116
+ width: 'calc(100% - 366px)',
117
+ height: 'calc(100% - 150px)',
118
+ top: 0,
119
+ },
120
+ },
100
121
  toBottom: {
101
122
  marginTop: 'auto',
102
123
  },
@@ -129,6 +150,9 @@ const DefaultLayout = ({
129
150
  fallbackMode,
130
151
  isPortraitMode,
131
152
  imageOnly,
153
+ renderDesigner,
154
+ showDesigner,
155
+ visualizationOverlayMode,
132
156
  }) => {
133
157
  return imageOnly ? (
134
158
  <div className={`${classes.root} ${fallbackMode ? classes.fallbackMode : ''}`}>
@@ -155,7 +179,17 @@ const DefaultLayout = ({
155
179
  })}
156
180
  </div>
157
181
  <div className={`${classes.container} ${isPortraitMode ? classes.containerTabletPortrait : ''}`}>
158
- {!fallbackMode && <div className={classes.visualization}>{renderVisualization()}</div>}
182
+ {renderDesigner && renderDesigner({ designerClassName: classes.designer })}
183
+ {!fallbackMode && (
184
+ <div
185
+ className={clsx(
186
+ classes.visualization,
187
+ showDesigner && visualizationOverlayMode && classes.visualizationOverlay
188
+ )}
189
+ >
190
+ {renderVisualization()}
191
+ </div>
192
+ )}
159
193
  <div className={classes.main}>
160
194
  {renderMain({
161
195
  area: 'main',
@@ -0,0 +1,18 @@
1
+ import * as React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { Services } from 'App/ServiceLocator';
4
+ import { withStyles } from '@material-ui/core';
5
+
6
+ const styles = () => ({
7
+ root: { position: 'absolute', height: '100%', width: '100%' },
8
+ });
9
+
10
+ export const DesignerClickAwayListener = ({ classes }) => (
11
+ <div className={classes.root} onClick={() => Services.designData.clearDesignAreaSelection()} />
12
+ );
13
+
14
+ DesignerClickAwayListener.propTypes = {
15
+ classes: PropTypes.object.isRequired,
16
+ };
17
+
18
+ export default withStyles(styles, { name: 'DesignerClickAwayListener' })(DesignerClickAwayListener);
@@ -0,0 +1,54 @@
1
+ import React, { useEffect, useLayoutEffect, useState } from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import Portal from '@material-ui/core/Portal';
4
+ import { withStyles } from '@material-ui/core';
5
+
6
+ const styles = {
7
+ root: {
8
+ position: 'absolute',
9
+ top: 0,
10
+ left: 0,
11
+ zIndex: 1,
12
+ pointerEvents: 'none',
13
+ '& > *': {
14
+ pointerEvents: 'all',
15
+ },
16
+ },
17
+ };
18
+
19
+ const InlineToolboxPortal = ({
20
+ classes,
21
+ canvasPosition,
22
+ canvas,
23
+ selectedObject,
24
+ inlineToolboxRef,
25
+ ...props
26
+ }) => {
27
+ const [style, setStyle] = useState(null);
28
+ useEffect(() => {
29
+ const { top, left, width, height } = canvas.canvasElement.getBoundingClientRect();
30
+ setStyle({ top, left, width, height, position: 'absolute' });
31
+ }, [canvasPosition, canvas, selectedObject, inlineToolboxRef]);
32
+ useLayoutEffect(() => {
33
+ inlineToolboxRef && inlineToolboxRef.updateToolbarTransform();
34
+ }, [style, inlineToolboxRef]);
35
+ return (
36
+ <Portal>
37
+ <div className={classes.root} style={style} {...props} />
38
+ </Portal>
39
+ );
40
+ };
41
+
42
+ InlineToolboxPortal.propTypes = {
43
+ classes: PropTypes.object.isRequired,
44
+ canvasPosition: PropTypes.object.isRequired,
45
+ canvas: PropTypes.object.isRequired,
46
+ selectedObject: PropTypes.object,
47
+ inlineToolboxRef: PropTypes.object,
48
+ };
49
+
50
+ export const StyledInlineToolboxPortal = withStyles(styles, { name: 'StandardToolboxPortal' })(
51
+ InlineToolboxPortal
52
+ );
53
+
54
+ export default StyledInlineToolboxPortal;
@@ -0,0 +1,38 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import Portal from '@material-ui/core/Portal';
4
+ import { withStyles } from '@material-ui/core';
5
+
6
+ const styles = theme => ({
7
+ root: {
8
+ position: 'absolute',
9
+ zIndex: 1,
10
+ display: 'flex',
11
+ flexDirection: 'column',
12
+ alignItems: 'center',
13
+ bottom: 48,
14
+ left: 8,
15
+ width: 'calc(100% - 388px)',
16
+ [theme.orientation.portrait]: {
17
+ bottom: 370,
18
+ left: 0,
19
+ width: '100%',
20
+ },
21
+ },
22
+ });
23
+
24
+ const StandardToolboxPortal = ({ classes, ...props }) => (
25
+ <Portal>
26
+ <div className={classes.root} {...props} />
27
+ </Portal>
28
+ );
29
+
30
+ StandardToolboxPortal.propTypes = {
31
+ classes: PropTypes.object.isRequired,
32
+ };
33
+
34
+ export const StyledStandardToolboxPortal = withStyles(styles, { name: 'StandardToolboxPortal' })(
35
+ StandardToolboxPortal
36
+ );
37
+
38
+ export default StyledStandardToolboxPortal;
@@ -2,8 +2,7 @@ export const actionTypes = {
2
2
  SELECT_DESIGN_VIEW: 'DesignView/SELECT_DESIGN_VIEW',
3
3
  };
4
4
 
5
- export const selectDesignView = (designViewIdentifier, options) => ({
5
+ export const selectDesignView = designViewIdentifier => ({
6
6
  type: actionTypes.SELECT_DESIGN_VIEW,
7
7
  designViewIdentifier,
8
- options,
9
8
  });
@@ -1,4 +1,4 @@
1
- import { actionTypes as designViewActionTypes } from '../DesignView/Actions';
1
+ import { actionTypes as designViewActionTypes } from './Actions';
2
2
  import find from 'lodash/find';
3
3
  import get from 'lodash/get';
4
4
  import * as configuratorActionTypes from '../Configurator/Actions';
@@ -16,7 +16,6 @@ const prepareDesignViews = designViews =>
16
16
  const initialState = {
17
17
  designViews: [],
18
18
  selectedDesignView: {},
19
- lastSelectedDesignView: {},
20
19
  autogeneratedDesignViews: [],
21
20
  viewThumbnailImages: [],
22
21
  };
@@ -24,13 +23,11 @@ const initialState = {
24
23
  export default function designViewReducer(state = initialState, action = {}) {
25
24
  switch (action.type) {
26
25
  case designViewActionTypes.SELECT_DESIGN_VIEW: {
27
- const { designViewIdentifier, options = {} } = action;
26
+ const { designViewIdentifier } = action;
28
27
  const designView = find(state.designViews, { identifier: designViewIdentifier });
29
- const { saveLast = true } = options;
30
28
  return {
31
29
  ...state,
32
30
  selectedDesignView: designView,
33
- ...(saveLast ? { lastSelectedDesignView: designView } : null),
34
31
  };
35
32
  }
36
33
  case configuratorActionTypes.RECEIVE_DESIGNER_DATA: {
@@ -62,14 +59,12 @@ export default function designViewReducer(state = initialState, action = {}) {
62
59
  ...state,
63
60
  designViews: prepareDesignViews(updatedDesignViews),
64
61
  selectedDesignView: {},
65
- lastSelectedDesignView: {},
66
62
  };
67
63
  }
68
64
  return {
69
65
  ...state,
70
66
  designViews: prepareDesignViews(designViews),
71
67
  selectedDesignView: {},
72
- lastSelectedDesignView: {},
73
68
  };
74
69
  }
75
70
  case configuratorActionTypes.RECEIVE_CONFIGURATION: {
@@ -87,7 +82,6 @@ export default function designViewReducer(state = initialState, action = {}) {
87
82
  ...state,
88
83
  designViews: [],
89
84
  selectedDesignView: {},
90
- lastSelectedDesignView: {},
91
85
  autogeneratedDesignViews,
92
86
  viewThumbnailImages,
93
87
  };
@@ -99,7 +93,6 @@ export default function designViewReducer(state = initialState, action = {}) {
99
93
  ...state,
100
94
  designViews: autogeneratedDesignViews,
101
95
  selectedDesignView,
102
- lastSelectedDesignView: selectedDesignView,
103
96
  autogeneratedDesignViews,
104
97
  viewThumbnailImages,
105
98
  };
@@ -109,7 +102,6 @@ export default function designViewReducer(state = initialState, action = {}) {
109
102
  ...state,
110
103
  designViews: [],
111
104
  selectedDesignView: {},
112
- lastSelectedDesignView: {},
113
105
  autogeneratedDesignViews: [],
114
106
  viewThumbnailImages: [],
115
107
  };
@@ -91,5 +91,4 @@ export const simpleState = {
91
91
  selectedDesignView: {
92
92
  identifier: 'front_view',
93
93
  },
94
- lastSelectedDesignView: {},
95
94
  };
@@ -13,7 +13,6 @@ describe('Reducers/DesignView.designViewReducer', () => {
13
13
  expect(initialState).toEqual({
14
14
  designViews: [],
15
15
  selectedDesignView: {},
16
- lastSelectedDesignView: {},
17
16
  autogeneratedDesignViews: [],
18
17
  viewThumbnailImages: [],
19
18
  });
@@ -42,23 +41,6 @@ describe('Reducers/DesignView.designViewReducer', () => {
42
41
  const action = selectDesignView(identifier);
43
42
  const state = designViewReducer(initialState, action);
44
43
  expect(state.selectedDesignView.identifier).toBe(identifier);
45
- expect(state.lastSelectedDesignView.identifier).toBe(identifier);
46
- });
47
- test('returns the correct state for SELECT_DESIGN_VIEW action, if the { saveLast: false } option is provided', () => {
48
- // select a view directly (eg. user clicks the view buttons)
49
- const initialState = designViewReducer(simpleState);
50
- const selectedDesignViewIdentifier = simpleState.designViews[1].identifier;
51
- const selectDesignViewAction = selectDesignView(selectedDesignViewIdentifier);
52
- const state1 = designViewReducer(initialState, selectDesignViewAction);
53
- expect(state1.selectedDesignView.identifier).toBe(selectedDesignViewIdentifier);
54
- expect(state1.lastSelectedDesignView.identifier).toBe(selectedDesignViewIdentifier);
55
-
56
- // select a view automatically (eg. user switches to a component which has a linked view)
57
- const autoDesignViewIdentifier = simpleState.designViews[0].identifier;
58
- const action = selectDesignView(autoDesignViewIdentifier, { saveLast: false });
59
- const state2 = designViewReducer(state1, action);
60
- expect(state2.selectedDesignView.identifier).toBe(autoDesignViewIdentifier);
61
- expect(state2.lastSelectedDesignView.identifier).toBe(selectedDesignViewIdentifier);
62
44
  });
63
45
  test('clears the selectedDesignView for RECEIVE_CONFIGURATION action', () => {
64
46
  const initialState = designViewReducer(simpleState);
@@ -70,7 +52,6 @@ describe('Reducers/DesignView.designViewReducer', () => {
70
52
  const action = { type: RECEIVE_CONFIGURATION };
71
53
  const state = designViewReducer(stateWithSelectedDesignView, action);
72
54
  expect(state.selectedDesignView).toEqual({});
73
- expect(state.lastSelectedDesignView).toEqual({});
74
55
  });
75
56
  test(
76
57
  'creates the designViews list and sets the selectedDesignView if visualizationData is available ' +
@@ -100,9 +81,6 @@ describe('Reducers/DesignView.designViewReducer', () => {
100
81
  expect(state.selectedDesignView).toEqual({
101
82
  identifier: 'front',
102
83
  });
103
- expect(state.lastSelectedDesignView).toEqual({
104
- identifier: 'front',
105
- });
106
84
  }
107
85
  );
108
86
 
@@ -1,6 +1,6 @@
1
1
  import { createDefaultReceiver, fetchDataAsync, postDataAsync } from '../Actions';
2
2
  import { createAsyncTask } from '../UI/Actions';
3
- import { getUserImagesByDesignArea } from '../ImageGallery/Selectors';
3
+ import { getUserImagesByDesignArea } from './Selectors';
4
4
  import { calculateImageBrightness } from '../../Services/DesignDataService';
5
5
  import { getImageUsageInfo } from './Selectors';
6
6
  import { getCurrentCompatibilityInfoHash } from '../DesignArea/Selectors';
@@ -100,7 +100,7 @@ exports[`renders correctly 1`] = `
100
100
  </div>
101
101
  </div>
102
102
  <div
103
- class="MuiCollapse-container MuiCollapse-hidden"
103
+ class="MuiCollapse-root MuiCollapse-hidden"
104
104
  style="min-height:0px"
105
105
  >
106
106
  <div
@@ -277,7 +277,7 @@ exports[`renders correctly 1`] = `
277
277
  </div>
278
278
  </div>
279
279
  <div
280
- class="MuiCollapse-container MuiCollapse-hidden"
280
+ class="MuiCollapse-root MuiCollapse-hidden"
281
281
  style="min-height:0px"
282
282
  >
283
283
  <div
@@ -454,7 +454,7 @@ exports[`renders correctly 1`] = `
454
454
  </div>
455
455
  </div>
456
456
  <div
457
- class="MuiCollapse-container MuiCollapse-hidden"
457
+ class="MuiCollapse-root MuiCollapse-hidden"
458
458
  style="min-height:0px"
459
459
  >
460
460
  <div
@@ -631,7 +631,7 @@ exports[`renders correctly 1`] = `
631
631
  </div>
632
632
  </div>
633
633
  <div
634
- class="MuiCollapse-container MuiCollapse-hidden"
634
+ class="MuiCollapse-root MuiCollapse-hidden"
635
635
  style="min-height:0px"
636
636
  >
637
637
  <div
@@ -2,7 +2,7 @@
2
2
  import React from 'react';
3
3
  import { noop } from 'lodash';
4
4
  import { mount, render } from 'enzyme';
5
- import CalculationWidget from '../CalculationWidget';
5
+ import CalculationWidget from './index';
6
6
  import MenuItem from '@material-ui/core/MenuItem';
7
7
  import { Select, ExpansionPanel, ExpansionPanelDetails } from '@material-ui/core';
8
8
  import ServiceLocator from 'App/ServiceLocator';
@@ -2,7 +2,7 @@
2
2
  import React from 'react';
3
3
  import noop from 'lodash/noop';
4
4
  import { render } from 'enzyme';
5
- import DesignApproval from '../DesignApproval';
5
+ import DesignApproval from './index';
6
6
 
7
7
  it('renders correctly without error', () => {
8
8
  const tree = render(<DesignApproval checked={true} error={false} link={'fakeLink'} onChange={noop} />);
@@ -2,7 +2,7 @@
2
2
 
3
3
  exports[`Screens/Configurator/Components/FullScreenView renders correctly 1`] = `
4
4
  <div
5
- class="MuiGrid-root MuiGrid-container MuiGrid-direction-xs-column MuiGrid-align-items-xs-center MuiGrid-justify-xs-space-between"
5
+ class="MuiGrid-root MuiGrid-container MuiGrid-direction-xs-column MuiGrid-align-items-xs-center MuiGrid-justify-content-xs-space-between"
6
6
  >
7
7
  <div
8
8
  aria-disabled="false"
@@ -27,6 +27,7 @@ const styles = theme => ({
27
27
  left: 'calc(50%)',
28
28
  zIndex: 2,
29
29
  transform: 'translate(-50%, 0)',
30
+ pointerEvents: 'all',
30
31
  [theme.breakpoints.down('sm')]: {
31
32
  zIndex: 5,
32
33
  },
@@ -179,7 +180,7 @@ class FullScreenView extends React.Component {
179
180
  <Grid
180
181
  container
181
182
  direction="column"
182
- justify="space-between"
183
+ justifyContent="space-between"
183
184
  className={clsx(classes.viewsContainer, customClassName('views'))}
184
185
  >
185
186
  {showPreviewButton && (
@@ -216,7 +217,7 @@ class FullScreenView extends React.Component {
216
217
  !topPreviewButton &&
217
218
  showPreviewButton &&
218
219
  width !== 'xs' && (
219
- <Grid container direction="column" justify="space-between" alignItems="center">
220
+ <Grid container direction="column" justifyContent="space-between" alignItems="center">
220
221
  <PreviewButton
221
222
  {...this.props}
222
223
  onClick={this.openPreview}