@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.
- package/App/Constant.js +2 -3
- package/App/Error/DevelopmentErrorPage/index.js +4 -19
- package/App/Error/ErrorBoundary.js +13 -43
- package/App/Error/ProductionErrorPage/index.js +2 -11
- package/App/Error/ProductionErrorPage/index.story.js +0 -4
- package/App/Frame.js +10 -43
- package/App/Modules/Creator/Components/ConfigurationvariantItem/index.js +15 -58
- package/App/Modules/Creator/Components/ConfigurationvariantSelection/index.js +20 -60
- package/App/Modules/Creator/Components/CustomTitleEditor/index.js +15 -64
- package/App/Modules/Creator/Components/ExternalVisualization/index.js +19 -47
- package/App/Modules/Creator/Components/FastConfiguration/SelectableRow.js +10 -37
- package/App/Modules/Creator/Components/FastConfiguration/index.js +37 -101
- package/App/Modules/Creator/Components/FastConfigurationRow/index.js +12 -38
- package/App/Modules/Creator/Components/FastConfigurationSelect/index.js +29 -85
- package/App/Modules/Creator/Components/FormattedNumber/index.js +1 -17
- package/App/Modules/Creator/Components/FormattedPrice/index.js +1 -19
- package/App/Modules/Creator/Components/FullScreenView/FullScreenView.js +17 -36
- package/App/Modules/Creator/Components/Incompatibility/OptionExclusionRule/index.js +24 -61
- package/App/Modules/Creator/Components/Incompatibility/OptionRule/index.js +24 -60
- package/App/Modules/Creator/Components/Incompatibility/RuleComponent.js +12 -45
- package/App/Modules/Creator/Components/Incompatibility/index.js +28 -89
- package/App/Modules/Creator/Components/InvalidConfigurationNotice/index.js +14 -53
- package/App/Modules/Creator/Components/LoginForm/index.js +14 -52
- package/App/Modules/Creator/Components/Option/index.js +53 -155
- package/App/Modules/Creator/Components/Option/index.story.js +6 -17
- package/App/Modules/Creator/Components/OptionAmount/index.js +33 -74
- package/App/Modules/Creator/Components/OptionGroup/index.js +10 -23
- package/App/Modules/Creator/Components/Optiondetail/ZoomImage/index.js +26 -68
- package/App/Modules/Creator/Components/Optiondetail/index.js +44 -129
- package/App/Modules/Creator/Components/Optiondetail/index.story.js +11 -72
- package/App/Modules/Creator/Components/Optiondetail/index.test.mocks.js +56 -0
- package/App/Modules/Creator/Components/OptionsList/index.js +31 -81
- package/App/Modules/Creator/Components/Price/index.js +12 -40
- package/App/Modules/Creator/Components/ProductPart/index.js +14 -46
- package/App/Modules/Creator/Components/ProductPart/index.story.js +6 -17
- package/App/Modules/Creator/Components/ProductPartsList/index.js +25 -68
- package/App/Modules/Creator/Components/ProductPartsList/index.story.js +6 -21
- package/App/Modules/Creator/Components/SavedConfiguration/index.js +13 -45
- package/App/Modules/Creator/Components/ShareConfiguration/index.js +31 -90
- package/App/Modules/Creator/Components/StockInformation/index.js +13 -44
- package/App/Modules/Creator/Components/StoreConfigurationForm/index.js +15 -52
- package/App/Modules/Creator/Components/Tools/index.js +11 -45
- package/App/Modules/Creator/Components/ValidationResult/index.js +16 -62
- package/App/Modules/Creator/Components/index.js +2 -29
- package/App/Modules/Creator/Containers/AmountPrice/index.js +3 -12
- package/App/Modules/Creator/Containers/ConfigurationvariantSelection/index.js +5 -19
- package/App/Modules/Creator/Containers/CustomTitleEditor/index.js +4 -19
- package/App/Modules/Creator/Containers/FastConfiguration/index.js +6 -20
- package/App/Modules/Creator/Containers/FormattedPrice/index.js +4 -13
- package/App/Modules/Creator/Containers/Incompatibility/index.js +2 -12
- package/App/Modules/Creator/Containers/InvalidConfigurationNotice/index.js +8 -31
- package/App/Modules/Creator/Containers/LoadingOverlay/index.js +2 -9
- package/App/Modules/Creator/Containers/Optiondetail/index.js +7 -18
- package/App/Modules/Creator/Containers/OptionsList/index.js +3 -15
- package/App/Modules/Creator/Containers/ProductPart/index.js +1 -9
- package/App/Modules/Creator/Containers/ProductPartsList/index.js +3 -16
- package/App/Modules/Creator/Containers/SavedConfigurationContainer/index.js +1 -8
- package/App/Modules/Creator/Containers/ShareConfiguration/index.js +2 -10
- package/App/Modules/Creator/Containers/StockInformation/index.js +2 -10
- package/App/Modules/Creator/Containers/Tools/index.js +1 -10
- package/App/Modules/Creator/Containers/ValidationResult/index.js +2 -10
- package/App/Modules/Creator/Containers/index.js +42 -64
- package/App/Modules/Creator/CreatorScreen.js +45 -121
- package/App/Modules/Creator/Layouts/DefaultLayout.js +21 -50
- package/App/Modules/Designer/Components/AddGalleryImage/index.js +31 -92
- package/App/Modules/Designer/Components/AddGalleryImage/index.story.js +9 -22
- package/App/Modules/Designer/Components/AddGalleryImage/index.test.js +13 -35
- package/App/Modules/Designer/Components/AddVisualElement/index.js +30 -86
- package/App/Modules/Designer/Components/AddVisualElement/index.story.js +0 -5
- package/App/Modules/Designer/Components/AddVisualElement/index.test.js +12 -15
- package/App/Modules/Designer/Components/CloseDesignEditor/index.js +18 -51
- package/App/Modules/Designer/Components/CloseGraphicsEditorButton/index.js +7 -17
- package/App/Modules/Designer/Components/ColorPalettes/ColorPalettesSearch.js +20 -57
- package/App/Modules/Designer/Components/ColorPalettes/index.js +62 -178
- package/App/Modules/Designer/Components/ColorPalettes/index.story.js +0 -8
- package/App/Modules/Designer/Components/ColorPalettes/index.test.js +7 -11
- package/App/Modules/Designer/Components/DesignAreaControlbox/index.js +35 -108
- package/App/Modules/Designer/Components/DesignAreaControlbox/index.story.js +0 -8
- package/App/Modules/Designer/Components/DesignAreaControlbox/index.test.js +15 -23
- package/App/Modules/Designer/Components/DesignerSelectionToolbox/CustomFontOverlay.js +18 -51
- package/App/Modules/Designer/Components/DesignerSelectionToolbox/DesignerSelectionToolbox.js +53 -150
- package/App/Modules/Designer/Components/DesignerSelectionToolbox/fontItemUtils.js +10 -20
- package/App/Modules/Designer/Components/Dialog/index.js +21 -63
- package/App/Modules/Designer/Components/EditDesignButton/index.js +20 -43
- package/App/Modules/Designer/Components/FeedbackNotice/index.js +17 -53
- package/App/Modules/Designer/Components/FeedbackNotice/index.test.js +0 -4
- package/App/Modules/Designer/Components/FullScreenView/FullScreenView.js +6 -14
- package/App/Modules/Designer/Components/ImageColorPicker/ImageColorPicker.dev.js +5 -14
- package/App/Modules/Designer/Components/ImageColorPicker/ImageColorPicker.js +42 -137
- package/App/Modules/Designer/Components/ImageColorize/index.js +54 -177
- package/App/Modules/Designer/Components/ImageColorize/index.story.js +2 -6
- package/App/Modules/Designer/Components/ImageControlbox/index.js +27 -90
- package/App/Modules/Designer/Components/ImageEditDialog/ImageThumbnail.js +26 -71
- package/App/Modules/Designer/Components/ImageEditDialog/ImageUpload.js +138 -170
- package/App/Modules/Designer/Components/ImageEditDialog/index.js +55 -168
- package/App/Modules/Designer/Components/ImageLibraryFilter/index.js +20 -61
- package/App/Modules/Designer/Components/ImageLibraryThumbnail/index.js +24 -66
- package/App/Modules/Designer/Components/ObjectTools/index.js +18 -56
- package/App/Modules/Designer/Components/Select/index.js +21 -65
- package/App/Modules/Designer/Components/TextControlbox/TextFormatIcon.js +5 -20
- package/App/Modules/Designer/Components/TextControlbox/index.js +58 -176
- package/App/Modules/Designer/Components/TextControlbox/index.story.js +0 -10
- package/App/Modules/Designer/Components/TextControlbox/index.test.js +34 -41
- package/App/Modules/Designer/Containers/AddGalleryImage.js +8 -24
- package/App/Modules/Designer/Containers/AddVisualElement.js +28 -87
- package/App/Modules/Designer/Containers/CloseDesignEditor.js +1 -10
- package/App/Modules/Designer/Containers/CloseGraphicsEditorButton.js +1 -10
- package/App/Modules/Designer/Containers/ColorPalettes.js +22 -61
- package/App/Modules/Designer/Containers/DesignAreaControlbox.js +5 -17
- package/App/Modules/Designer/Containers/Designer.js +1 -10
- package/App/Modules/Designer/Containers/DesignerSelectionToolbox.js +7 -30
- package/App/Modules/Designer/Containers/EditDesignButton.js +1 -11
- package/App/Modules/Designer/Containers/ImageEditDialog.js +400 -658
- package/App/Modules/Designer/Designer.js +28 -84
- package/App/Modules/Designer/DesignerScreen.js +45 -100
- package/App/Modules/Designer/DesignerUI.js +31 -87
- package/App/Modules/Designer/Layouts/DefaultLayout.js +20 -45
- package/App/Modules/Designer/Layouts/Mobile/TwoSideBottomBar.js +4 -16
- package/App/Modules/Designer/Layouts/PopupAreaProvider.js +20 -67
- package/App/Modules/Designer/MultilayerComponents/DesignerClickAwayListener.js +5 -23
- package/App/Modules/Designer/MultilayerComponents/InlineToolboxPortal.js +19 -52
- package/App/Modules/Designer/MultilayerComponents/StandardToolboxPortal.js +9 -25
- package/App/Modules/Designer/Utils/FontFaceRepository.js +8 -30
- package/App/Modules/Designer/Utils/ImageEditUtils.js +14 -38
- package/App/Modules/Designer/Utils/SvgFixers.js +8 -26
- package/App/Modules/Designer/Utils/Transformers.js +54 -112
- package/App/Modules/Designer/setupDesigner.js +50 -72
- package/App/Modules/Designer/withActiveCanvas.js +22 -70
- package/App/Modules/Visualization/AlignTargetContainer.js +8 -19
- package/App/Modules/Visualization/CreatorAlignTarget.js +9 -20
- package/App/Modules/Visualization/DefaultVisualizationProvider.js +18 -50
- package/App/Modules/Visualization/DesignerAlignTarget.js +7 -13
- package/App/Modules/Visualization/Utils/getFirstDataURLFromScreenshotsObj.js +0 -3
- package/App/Reducers/Actions.js +81 -145
- package/App/Reducers/ConfigurationMode/Actions.js +4 -9
- package/App/Reducers/ConfigurationMode/Reducer.js +6 -23
- package/App/Reducers/ConfigurationMode/Selectors.js +22 -41
- package/App/Reducers/Configurator/Actions.js +386 -760
- package/App/Reducers/Configurator/AttributeSelectors.js +5 -17
- package/App/Reducers/Configurator/Modifiers.js +8 -15
- package/App/Reducers/Configurator/Reducer.js +107 -202
- package/App/Reducers/Configurator/Selectors.js +46 -119
- package/App/Reducers/Confirm/Actions.js +28 -49
- package/App/Reducers/Confirm/Reducer.js +1 -9
- package/App/Reducers/DesignArea/Actions.js +8 -29
- package/App/Reducers/DesignArea/DesignElementSelectors.js +18 -41
- package/App/Reducers/DesignArea/MaskSelectors.js +12 -35
- package/App/Reducers/DesignArea/Reducer.js +8 -40
- package/App/Reducers/DesignArea/Selectors.js +148 -413
- package/App/Reducers/DesignArea/Transformers.js +22 -87
- package/App/Reducers/DesignData/Actions.js +31 -93
- package/App/Reducers/DesignData/Modifiers.js +34 -114
- package/App/Reducers/DesignData/Reducer.js +9 -38
- package/App/Reducers/DesignData/Selectors.js +17 -50
- package/App/Reducers/DesignData/Transformers.js +2 -6
- package/App/Reducers/DesignView/Actions.js +3 -7
- package/App/Reducers/DesignView/Reducer.js +13 -47
- package/App/Reducers/DesignView/Selectors.js +17 -49
- package/App/Reducers/DesignView/Transformers.js +0 -3
- package/App/Reducers/Device/Actions.js +3 -7
- package/App/Reducers/Device/Reducer.js +9 -16
- package/App/Reducers/Fonts/Actions.js +12 -45
- package/App/Reducers/Fonts/Reducer.js +2 -11
- package/App/Reducers/Fonts/Selectors.js +9 -25
- package/App/Reducers/GeneralActions.js +3 -7
- package/App/Reducers/ImageGallery/Actions.js +97 -189
- package/App/Reducers/ImageGallery/Modifiers.js +13 -24
- package/App/Reducers/ImageGallery/Reducer.js +29 -98
- package/App/Reducers/ImageGallery/Selectors.js +21 -79
- package/App/Reducers/Reducer.js +10 -26
- package/App/Reducers/UI/Actions.js +73 -113
- package/App/Reducers/UI/Reducer.js +17 -26
- package/App/Reducers/UI/Selectors.js +3 -12
- package/App/Reducers.js +7 -21
- package/App/Routing.js +30 -107
- package/App/Screens/Configurator/CalculationWidgetScreen.js +10 -39
- package/App/Screens/Configurator/Components/AmountSelection/index.js +25 -77
- package/App/Screens/Configurator/Components/AmountSelection/index.story.js +0 -8
- package/App/Screens/Configurator/Components/CalculationWidget/index.js +53 -154
- package/App/Screens/Configurator/Components/CalculationWidget/index.story.js +6 -19
- package/App/Screens/Configurator/Components/CalculationWidget/index.test.js +39 -38
- package/App/Screens/Configurator/Components/ConfigurationModeSwitch/ConfigurationModeSwitch.js +7 -30
- package/App/Screens/Configurator/Components/ConfigurationModeSwitch/index.js +0 -2
- package/App/Screens/Configurator/Components/Confirm/index.js +13 -50
- package/App/Screens/Configurator/Components/Error/index.js +11 -48
- package/App/Screens/Configurator/Components/FallbackVisualization/FallbackVisualization.js +13 -25
- package/App/Screens/Configurator/Components/FullScreenView/index.js +37 -116
- package/App/Screens/Configurator/Components/FullScreenView/index.test.js +1 -4
- package/App/Screens/Configurator/Components/ImageLoader/ImageLoader.js +11 -42
- package/App/Screens/Configurator/Components/ItemTile/ItemTile.js +89 -33
- package/App/Screens/Configurator/Components/LandscapeInformation/index.js +3 -19
- package/App/Screens/Configurator/Components/NoVisualization/NoVisualization.js +3 -11
- package/App/Screens/Configurator/Components/PreviewPortal/index.js +29 -81
- package/App/Screens/Configurator/Components/Thumbnail/index.js +36 -102
- package/App/Screens/Configurator/Components/Thumbnail/index.test.js +0 -4
- package/App/Screens/Configurator/Components/TotalPrice/TotalPrice.js +9 -24
- package/App/Screens/Configurator/Containers/AmountPrice.js +12 -36
- package/App/Screens/Configurator/Containers/CalculationWidget.js +24 -85
- package/App/Screens/Configurator/Containers/ConfigurationModeSwitch.js +22 -43
- package/App/Screens/Configurator/Containers/Confirm.js +1 -10
- package/App/Screens/Configurator/Containers/FallbackVisualization.js +1 -11
- package/App/Screens/Configurator/Containers/FullScreenView.js +1 -14
- package/App/Screens/Configurator/Containers/Thumbnail.js +1 -13
- package/App/Screens/Configurator/Containers/Visualization.js +1 -5
- package/App/Screens/Configurator/DynamicComponents.js +8 -22
- package/App/Screens/Configurator/Screen.js +31 -70
- package/App/Screens/Configurator/ScreenPropTypes.js +2 -6
- package/App/Screens/Configurator/ThemeProvider.js +8 -42
- package/App/Screens/DesignerProductPreview/Constants.js +4 -7
- package/App/Screens/DesignerProductPreview/DesignerProductPreviewManager.js +204 -289
- package/App/Screens/DesignerProductPreview/Screen.js +58 -139
- package/App/Screens/ItemOverview.js +156 -191
- package/App/Screens.js +12 -20
- package/App/ServiceLocator.js +26 -51
- package/App/Services/AdminareaCommunicationService.js +33 -69
- package/App/Services/AnalyticsService.js +13 -40
- package/App/Services/ConfiguratorService.js +381 -567
- package/App/Services/DesignDataService.js +1448 -2001
- package/App/Services/DesignerService.js +290 -350
- package/App/Services/InteractionService.js +349 -502
- package/App/Services/UIService.js +12 -39
- package/App/Services/VisualizationService.js +246 -336
- package/App/Shared/Components/AcceptDesign/index.js +27 -70
- package/App/Shared/Components/AcceptPrivacy/index.js +21 -58
- package/App/Shared/Components/AddToBasket/index.js +31 -81
- package/App/Shared/Components/AddToBasket/index.story.js +0 -9
- package/App/Shared/Components/AlertDialog/index.js +15 -57
- package/App/Shared/Components/AmountInput/index.js +34 -107
- package/App/Shared/Components/AmountInput/index.story.js +0 -6
- package/App/Shared/Components/AmountPrice/index.js +220 -382
- package/App/Shared/Components/AmountPrice/index.story.js +1 -10
- package/App/Shared/Components/AmountPrice/index.test.js +6 -12
- package/App/Shared/Components/Analytics/AnalyticsWrapper.js +9 -21
- package/App/Shared/Components/BulkNames/index.js +28 -92
- package/App/Shared/Components/CallToAction/index.js +18 -42
- package/App/Shared/Components/ConfigurationOverview/index.js +14 -47
- package/App/Shared/Components/Header/Header.js +18 -46
- package/App/Shared/Components/Header/index.js +0 -2
- package/App/Shared/Components/Header/index.story.js +0 -13
- package/App/Shared/Components/InformationTag/InformationTag.js +20 -55
- package/App/Shared/Components/LicenseNotice/LicenseNotice.js +20 -54
- package/App/Shared/Components/LicenseNotice/index.js +0 -2
- package/App/Shared/Components/LoadConfiguration/index.js +47 -82
- package/App/Shared/Components/MessageBox/index.js +2 -19
- package/App/Shared/Components/MessageBox/index.story.js +0 -7
- package/App/Shared/Components/Notification/index.js +18 -53
- package/App/Shared/Components/Notification/index.story.js +0 -4
- package/App/Shared/Components/PdfDownload/index.js +19 -59
- package/App/Shared/Components/PlusMinusInput/index.js +13 -37
- package/App/Shared/Components/PriceList/index.js +27 -78
- package/App/Shared/Components/PriceList/index.story.js +6 -15
- package/App/Shared/Components/PriceOverview/index.js +29 -74
- package/App/Shared/Components/PriceOverview/index.story.js +1 -18
- package/App/Shared/Components/ProductVariant/Image.js +13 -35
- package/App/Shared/Components/ProductVariant/index.js +34 -123
- package/App/Shared/Components/ProductVariant/index.story.js +9 -22
- package/App/Shared/Components/Progress/Progress.js +6 -15
- package/App/Shared/Components/ReceiveOfferForm/index.js +26 -80
- package/App/Shared/Components/ReceiveOfferForm/index.story.js +0 -6
- package/App/Shared/Components/ReceiveOfferForm/index.test.js +1 -6
- package/App/Shared/Components/SaveConfiguration/index.js +26 -83
- package/App/Shared/Components/SendEmail/index.js +8 -30
- package/App/Shared/Components/Stepper/index.js +19 -56
- package/App/Shared/Components/Stepper/index.story.js +0 -5
- package/App/Shared/Components/ToolbarList/index.js +23 -69
- package/App/Shared/Components/ToolbarList/index.story.js +0 -4
- package/App/Shared/Components/VariantChooser/index.js +25 -68
- package/App/Shared/Components/VariantChooser/index.story.js +0 -13
- package/App/Shared/Containers/AlertMessages.js +1 -11
- package/App/Shared/Containers/AmountPrice/AmountPriceAdminareaWrapper.js +4 -17
- package/App/Shared/Containers/AmountPrice/index.js +29 -74
- package/App/Shared/Containers/BulkNames.js +26 -117
- package/App/Shared/Containers/Error.js +1 -11
- package/App/Shared/Containers/GlobalLoader.js +1 -9
- package/App/Shared/Containers/Header/index.js +22 -57
- package/App/Shared/Containers/LicenseNotice/LicenseNotice.js +2 -9
- package/App/Shared/Containers/LicenseNotice/index.js +0 -2
- package/App/Shared/Containers/LoadConfiguration/LoadConfiguration.js +36 -79
- package/App/Shared/Containers/LoadConfiguration/index.js +0 -2
- package/App/Shared/Containers/PdfDownload/index.js +2 -11
- package/App/Shared/Containers/ProductVariant/ProductVariant.js +59 -144
- package/App/Shared/Containers/ProductVariant/index.js +0 -2
- package/App/Shared/Containers/SaveConfiguration.js +3 -14
- package/App/Shared/Containers/SendEmail/SendEmail.js +3 -15
- package/App/Shared/Containers/SendEmail/index.js +0 -2
- package/App/Shared/Providers/DefaultCanvasProvider.js +5 -25
- package/App/Storage.js +3 -7
- package/App/Store.js +17 -38
- package/App/Translations.js +29 -43
- package/App/Utils/Request/lazyFetch.js +29 -45
- package/App/Utils/Request/pathParams.js +2 -7
- package/App/Utils/createMessageInterface.js +10 -21
- package/App/Utils/customClassName.js +0 -2
- package/App/Utils/getContrastText.js +5 -7
- package/App/Utils/getImageUrl.js +0 -8
- package/App/configuration.js +74 -104
- package/App/index.js +7 -29
- package/App/initServices.js +9 -32
- package/App/setup.js +2 -6
- package/Framework/Api.js +19 -41
- package/Framework/ComponentContainer.js +28 -76
- package/Framework/Components/Carousel/index.js +40 -104
- package/Framework/Components/Dialog/index.js +101 -237
- package/Framework/Components/DialogSelect/index.js +38 -132
- package/Framework/Components/Input/index.js +16 -58
- package/Framework/Components/LoadingOverlay/index.js +1 -12
- package/Framework/Components/Markdown/index.js +5 -26
- package/Framework/Components/Mobile/index.js +5 -13
- package/Framework/CustomError.js +13 -29
- package/Framework/Helpers/TransitionDetect.js +10 -29
- package/Framework/Helpers/isLandscapeMobile.js +0 -3
- package/Framework/Helpers/isMobileDevice.js +3 -8
- package/Framework/Helpers/isMobileSize.js +1 -4
- package/Framework/Services/AbstractAdminareaCommunicationService.js +8 -15
- package/Framework/Services/AbstractAsyncService.js +7 -14
- package/Framework/Services/AbstractConfiguratorService.js +9 -15
- package/Framework/Services/AbstractInteractionService.js +7 -14
- package/Framework/Services/AbstractStoreService.js +9 -15
- package/Framework/Services/AbstractUIService.js +7 -14
- package/Framework/Services/AbstractVisualizationService.js +7 -14
- package/Framework/Services/AsyncService.js +11 -33
- package/Framework/Services/StoreService.js +43 -92
- package/Framework/bindDecorator.js +24 -54
- package/Framework/i18n.js +57 -142
- package/Resources/Icons/MaterialUI/Icons/AddCircle.js +1 -5
- package/Resources/Icons/MaterialUI/Icons/RemoveCircle.js +1 -5
- package/Shared/Components/CustomDialog.js +21 -36
- package/Shared/Components/CustomDialogSelect.js +17 -47
- package/Shared/Components/MainButton.js +14 -33
- package/Shared/ErrorTypes/DeferredError.js +13 -31
- package/Shared/HOCs/ResizeDetect/ResizeDetect.dev.js +9 -18
- package/Shared/HOCs/ResizeDetect/ResizeDetect.js +28 -87
- package/Shared/HOCs/getDisplayName.js +0 -1
- package/Shared/HOCs/withFixedChangeHandler.js +11 -25
- package/Shared/PropTypes/ReactComponent.js +1 -5
- package/Shared/Styles/absoluteCenter.js +2 -5
- package/Utils/Array/isIdentical.js +3 -12
- package/Utils/Async/AsyncManager.js +51 -75
- package/Utils/Async/Deferred.js +12 -40
- package/Utils/Async/ObjectLock.js +3 -7
- package/Utils/Decorators/Observable.js +17 -34
- package/Utils/Dev/HOCs/withFilePicker.js +13 -41
- package/Utils/Dev/isDev.js +0 -2
- package/Utils/Events/pointerEvent.js +14 -47
- package/Utils/Events/preventEventDoubling.js +2 -7
- package/Utils/Function/cached.js +1 -9
- package/Utils/Function/createDebounceManager.js +3 -18
- package/Utils/Function/createSelector.js +7 -18
- package/Utils/Function/memoize.js +3 -12
- package/Utils/Function/sendMessage.js +3 -8
- package/Utils/Helper/createSelectionRangeMemo.js +4 -12
- package/Utils/Immutable/set.js +12 -35
- package/Utils/Math/conversions.js +2 -5
- package/Utils/Math/isPositiveNumber.js +2 -5
- package/Utils/Redux/createActionWithGlobalState.js +8 -11
- package/Utils/Styles/combineMediaQueries.js +2 -6
- package/Utils/Styles/createCheckerBoardBackground.js +5 -6
- package/Utils/Test/CallOrderChecker.js +0 -3
- package/Utils/Test/createStoreProvider.js +1 -7
- package/Utils/Test/formDataToJSON.js +0 -1
- package/Utils/Test/mountWithState.js +3 -9
- package/index.js +2 -2
- package/package.json +36 -33
- package/public/translations/de_DE.json +3 -27
- package/public/translations/en_GB.json +2 -26
- package/scripts/getDefaultWebpackConfig.js +25 -14
- package/src/App/Error/ProductionErrorPage/index.js +1 -1
- package/src/App/Modules/Creator/Components/ConfigurationvariantItem/index.js +3 -4
- package/src/App/Modules/Creator/Components/ConfigurationvariantSelection/index.js +2 -1
- package/src/App/Modules/Creator/Components/FastConfiguration/SelectableRow.js +1 -1
- package/src/App/Modules/Creator/Components/FastConfiguration/index.js +6 -5
- package/src/App/Modules/Creator/Components/FastConfigurationSelect/index.js +8 -6
- package/src/App/Modules/Creator/Components/FullScreenView/FullScreenView.js +3 -1
- package/src/App/Modules/Creator/Components/Incompatibility/OptionExclusionRule/index.js +2 -2
- package/src/App/Modules/Creator/Components/Incompatibility/OptionRule/index.js +2 -2
- package/src/App/Modules/Creator/Components/Incompatibility/index.js +2 -2
- package/src/App/Modules/Creator/Components/InvalidConfigurationNotice/index.js +1 -1
- package/src/App/Modules/Creator/Components/Option/__snapshots__/index.test.js.snap +0 -13
- package/src/App/Modules/Creator/Components/Option/index.js +9 -6
- package/src/App/Modules/Creator/Components/Option/index.test.js +1 -1
- package/src/App/Modules/Creator/Components/OptionAmount/index.js +2 -1
- package/src/App/Modules/Creator/Components/OptionAmount/index.test.js +1 -1
- package/src/App/Modules/Creator/Components/Optiondetail/ZoomImage/index.js +1 -1
- package/src/App/Modules/Creator/Components/Optiondetail/index.js +9 -7
- package/src/App/Modules/Creator/Components/Optiondetail/index.story.js +1 -48
- package/src/App/Modules/Creator/Components/Optiondetail/index.test.js +1 -1
- package/src/App/Modules/Creator/Components/Optiondetail/index.test.mocks.js +49 -0
- package/src/App/Modules/Creator/Components/OptionsList/index.js +3 -2
- package/src/App/Modules/Creator/Components/ProductPart/index.test.js +1 -1
- package/src/App/Modules/Creator/Components/ProductPartsList/index.js +1 -1
- package/src/App/Modules/Creator/Components/SavedConfiguration/index.js +3 -3
- package/src/App/Modules/Creator/Components/StoreConfigurationForm/index.js +2 -2
- package/src/App/Modules/Creator/Containers/CustomTitleEditor/index.js +1 -1
- package/src/App/Modules/Creator/Containers/FastConfiguration/index.js +1 -1
- package/src/App/Modules/Creator/Containers/FormattedPrice/index.js +1 -1
- package/src/App/Modules/Creator/Containers/InvalidConfigurationNotice/index.js +1 -1
- package/src/App/Modules/Creator/Containers/Optiondetail/index.js +1 -1
- package/src/App/Modules/Designer/Components/AddGalleryImage/__snapshots__/index.test.jsx.snap +0 -8
- package/src/App/Modules/Designer/Components/AddGalleryImage/index.js +4 -4
- package/src/App/Modules/Designer/Components/AddGalleryImage/index.test.jsx +0 -27
- package/src/App/Modules/Designer/Components/AddVisualElement/index.js +6 -6
- package/src/App/Modules/Designer/Components/AddVisualElement/index.test.jsx +3 -2
- package/src/App/Modules/Designer/Components/CloseDesignEditor/index.js +3 -3
- package/src/App/Modules/Designer/Components/ColorPalettes/ColorPalettesSearch.js +6 -6
- package/src/App/Modules/Designer/Components/ColorPalettes/index.js +14 -14
- package/src/App/Modules/Designer/Components/ColorPalettes/index.test.jsx +1 -1
- package/src/App/Modules/Designer/Components/DesignAreaControlbox/index.js +8 -8
- package/src/App/Modules/Designer/Components/DesignAreaControlbox/index.test.jsx +1 -1
- package/src/App/Modules/Designer/Components/DesignerSelectionToolbox/CustomFontOverlay.js +5 -5
- package/src/App/Modules/Designer/Components/DesignerSelectionToolbox/DesignerSelectionToolbox.js +2 -2
- package/src/App/Modules/Designer/Components/Dialog/index.js +1 -1
- package/src/App/Modules/Designer/Components/EditDesignButton/index.js +3 -2
- package/src/App/Modules/Designer/Components/FeedbackNotice/index.js +3 -3
- package/src/App/Modules/Designer/Components/ImageColorize/index.js +1 -1
- package/src/App/Modules/Designer/Components/ImageControlbox/index.js +6 -6
- package/src/App/Modules/Designer/Components/ImageEditDialog/ImageUpload.js +32 -6
- package/src/App/Modules/Designer/Components/ImageEditDialog/index.js +16 -12
- package/src/App/Modules/Designer/Components/ImageLibraryFilter/index.js +6 -6
- package/src/App/Modules/Designer/Components/ImageLibraryThumbnail/index.js +11 -7
- package/src/App/Modules/Designer/Components/ObjectTools/index.js +2 -2
- package/src/App/Modules/Designer/Components/Select/index.js +3 -3
- package/src/App/Modules/Designer/Components/TextControlbox/TextFormatIcon.js +1 -1
- package/src/App/Modules/Designer/Components/TextControlbox/index.js +11 -11
- package/src/App/Modules/Designer/Components/TextControlbox/index.test.jsx +3 -2
- package/src/App/Modules/Designer/Containers/AddGalleryImage.js +1 -1
- package/src/App/Modules/Designer/Designer.js +1 -1
- package/src/App/Modules/Designer/DesignerUI.js +7 -2
- package/src/App/Modules/Designer/Layouts/Mobile/TwoSideBottomBar.js +1 -1
- package/src/App/Modules/Designer/Layouts/PopupAreaProvider.js +1 -1
- package/src/App/Modules/Designer/MultilayerComponents/DesignerClickAwayListener.js +1 -1
- package/src/App/Modules/Designer/MultilayerComponents/InlineToolboxPortal.js +1 -1
- package/src/App/Modules/Designer/MultilayerComponents/StandardToolboxPortal.js +1 -1
- package/src/App/Modules/Designer/setupDesigner.js +22 -19
- package/src/App/Modules/Visualization/AlignTargetContainer.js +1 -1
- package/src/App/Modules/Visualization/CreatorAlignTarget.js +1 -1
- package/src/App/Modules/Visualization/DefaultVisualizationProvider.js +7 -2
- package/src/App/Modules/Visualization/DesignerAlignTarget.js +1 -1
- package/src/App/Reducers/Actions.js +5 -5
- package/src/App/Reducers/ConfigurationMode/Selectors.js +6 -0
- package/src/App/Reducers/Configurator/Actions.js +8 -1
- package/src/App/Reducers/Configurator/Reducer.js +27 -21
- package/src/App/Reducers/Configurator/Selectors.js +4 -1
- package/src/App/Reducers/DesignArea/Selectors.js +10 -0
- package/src/App/Reducers/Reducer.js +4 -3
- package/src/App/Reducers/UI/Actions.js +15 -1
- package/src/App/Reducers/UI/Reducer.js +20 -0
- package/src/App/Routing.js +12 -29
- package/src/App/Screens/Configurator/CalculationWidgetScreen.js +1 -4
- package/src/App/Screens/Configurator/Components/AmountSelection/index.js +4 -4
- package/src/App/Screens/Configurator/Components/CalculationWidget/index.js +3 -3
- package/src/App/Screens/Configurator/Components/CalculationWidget/index.test.jsx +5 -2
- package/src/App/Screens/Configurator/Components/ConfigurationModeSwitch/ConfigurationModeSwitch.js +1 -1
- package/src/App/Screens/Configurator/Components/FallbackVisualization/FallbackVisualization.js +1 -1
- package/src/App/Screens/Configurator/Components/FullScreenView/index.js +4 -4
- package/src/App/Screens/Configurator/Components/ItemTile/ItemTile.js +55 -17
- package/src/App/Screens/Configurator/Components/LandscapeInformation/index.js +1 -1
- package/src/App/Screens/Configurator/Components/NoVisualization/NoVisualization.js +1 -1
- package/src/App/Screens/Configurator/Components/PreviewPortal/index.js +7 -5
- package/src/App/Screens/Configurator/Components/Thumbnail/index.js +5 -4
- package/src/App/Screens/Configurator/Components/TotalPrice/TotalPrice.js +3 -3
- package/src/App/Screens/Configurator/Containers/AmountPrice.js +1 -1
- package/src/App/Screens/Configurator/Containers/__tests__/CalculationWidget.test.js +4 -1
- package/src/App/Screens/Configurator/Screen.js +13 -5
- package/src/App/Screens/Configurator/__tests__/Screen.test.js +6 -0
- package/src/App/Screens/DesignerProductPreview/Screen.js +2 -3
- package/src/App/Screens/DesignerProductPreview/__tests__/__snapshots__/Screen.test.js.snap +11 -11
- package/src/App/Screens/ItemOverview.js +74 -57
- package/src/App/Screens.js +1 -1
- package/src/App/Services/AnalyticsService.js +2 -1
- package/src/App/Services/DesignDataService.js +53 -7
- package/src/App/Services/DesignerService.js +22 -13
- package/src/App/Services/UIService.js +1 -1
- package/src/App/Services/VisualizationService.js +41 -2
- package/src/App/Services/__tests__/DesignDataService.test.js +1 -0
- package/src/App/Shared/Components/AcceptDesign/index.js +7 -6
- package/src/App/Shared/Components/AcceptPrivacy/index.js +4 -3
- package/src/App/Shared/Components/AddToBasket/index.js +4 -4
- package/src/App/Shared/Components/AmountInput/index.js +1 -1
- package/src/App/Shared/Components/AmountPrice/__snapshots__/index.test.jsx.snap +0 -125
- package/src/App/Shared/Components/AmountPrice/index.js +40 -17
- package/src/App/Shared/Components/AmountPrice/index.test.jsx +1 -1
- package/src/App/Shared/Components/Analytics/AnalyticsWrapper.test.js +2 -1
- package/src/App/Shared/Components/BulkNames/index.js +3 -3
- package/src/App/Shared/Components/CallToAction/__snapshots__/index.test.js.snap +4 -4
- package/src/App/Shared/Components/CallToAction/index.js +3 -3
- package/src/App/Shared/Components/CallToAction/index.test.js +1 -1
- package/src/App/Shared/Components/ConfigurationOverview/index.js +1 -1
- package/src/App/Shared/Components/Header/Header.js +3 -3
- package/src/App/Shared/Components/InformationTag/InformationTag.js +4 -2
- package/src/App/Shared/Components/LicenseNotice/LicenseNotice.js +3 -1
- package/src/App/Shared/Components/LoadConfiguration/index.js +27 -13
- package/src/App/Shared/Components/Notification/index.js +3 -3
- package/src/App/Shared/Components/PdfDownload/index.js +3 -3
- package/src/App/Shared/Components/PlusMinusInput/index.js +4 -4
- package/src/App/Shared/Components/PriceList/index.js +9 -9
- package/src/App/Shared/Components/PriceList/index.test.js +2 -2
- package/src/App/Shared/Components/PriceOverview/index.js +4 -4
- package/src/App/Shared/Components/PriceOverview/index.story.js +1 -1
- package/src/App/Shared/Components/ProductVariant/Image.js +1 -1
- package/src/App/Shared/Components/ProductVariant/index.js +5 -5
- package/src/App/Shared/Components/Progress/Progress.js +3 -3
- package/src/App/Shared/Components/ReceiveOfferForm/index.js +4 -4
- package/src/App/Shared/Components/SaveConfiguration/index.js +3 -3
- package/src/App/Shared/Components/SendEmail/index.js +3 -3
- package/src/App/Shared/Components/Stepper/index.js +4 -4
- package/src/App/Shared/Components/ToolbarList/index.js +6 -6
- package/src/App/Shared/Components/VariantChooser/index.js +7 -7
- package/src/App/Shared/Containers/AmountPrice/index.js +7 -1
- package/src/App/Shared/Containers/SaveConfiguration.js +1 -1
- package/src/App/Utils/Request/lazyFetch.js +2 -3
- package/src/App/configuration.js +20 -15
- package/src/App/index.js +2 -2
- package/src/Framework/Api.js +3 -3
- package/src/Framework/Components/Carousel/index.js +2 -2
- package/src/Framework/Components/Dialog/index.js +13 -10
- package/src/Framework/Components/DialogSelect/index.js +6 -5
- package/src/Framework/i18n.js +15 -8
- package/src/Shared/Components/CustomDialog.js +2 -1
- package/src/Shared/Components/CustomDialogSelect.js +2 -2
- package/src/Shared/Components/MainButton.js +2 -2
- package/src/Shared/Components/__tests__/index.test.jsx +6 -1
- package/src/Shared/HOCs/ResizeDetect/ResizeDetect.dev.js +1 -1
- package/src/Utils/Decorators/Observable.js +1 -0
- package/src/Utils/Test/mountWithState.js +1 -1
- package/App/Modules/Designer/Components/ImageEditDialog/res/checkers_tile.png +0 -0
- package/src/App/Modules/Designer/Components/ImageEditDialog/res/checkers_tile.png +0 -0
|
@@ -110,26 +110,29 @@ export const setupDesigner = designDataService => {
|
|
|
110
110
|
canvasMap.has(designArea) ? canvasMap.get(designArea) : false
|
|
111
111
|
);
|
|
112
112
|
|
|
113
|
-
designDataService.registerInitCanvas(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
113
|
+
designDataService.registerInitCanvas(
|
|
114
|
+
async ({ designArea, prevDesignArea, canvasSize, maskData, colorOverlayData }) => {
|
|
115
|
+
let canvas;
|
|
116
|
+
let isNew;
|
|
117
|
+
if (canvasMap.has(prevDesignArea)) {
|
|
118
|
+
canvas = canvasMap.get(prevDesignArea);
|
|
119
|
+
canvasMap.delete(prevDesignArea);
|
|
120
|
+
canvasMap.set(designArea, canvas);
|
|
121
|
+
canvas.setSize(canvasSize);
|
|
122
|
+
isNew = false;
|
|
123
|
+
} else {
|
|
124
|
+
canvas = canvasRepository.requestCanvas(designArea, canvasSize);
|
|
125
|
+
isNew = true;
|
|
126
|
+
}
|
|
127
|
+
await canvas.useMask(maskData);
|
|
128
|
+
canvas.useColorOverlay(colorOverlayData);
|
|
129
|
+
return {
|
|
130
|
+
canvas,
|
|
131
|
+
designArea,
|
|
132
|
+
isNew,
|
|
133
|
+
};
|
|
125
134
|
}
|
|
126
|
-
|
|
127
|
-
return {
|
|
128
|
-
canvas,
|
|
129
|
-
designArea,
|
|
130
|
-
isNew,
|
|
131
|
-
};
|
|
132
|
-
});
|
|
135
|
+
);
|
|
133
136
|
|
|
134
137
|
designDataService.registerRemoveCanvas(designArea => {
|
|
135
138
|
if (canvasMap.has(designArea)) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useRef, useEffect } from 'react';
|
|
2
|
-
import withStyles from '@material-ui/core/styles
|
|
2
|
+
import { withStyles } from '@material-ui/core/styles';
|
|
3
3
|
import { withAlignTarget } from 'redhotmagma-visualization/AlignTargetProvider';
|
|
4
4
|
import clsx from 'clsx';
|
|
5
5
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AlignTargetContainer } from '../Creator/Containers';
|
|
3
|
-
import withStyles from '@material-ui/core/styles
|
|
3
|
+
import { withStyles } from '@material-ui/core/styles';
|
|
4
4
|
import { useSelector } from 'react-redux';
|
|
5
5
|
|
|
6
6
|
const styles = theme => ({
|
|
@@ -3,7 +3,6 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import { VisualizationProvider } from 'redhotmagma-visualization/VisualizationProvider';
|
|
4
4
|
import { AlignTargetProvider } from 'redhotmagma-visualization/AlignTargetProvider';
|
|
5
5
|
import { Services } from 'App/ServiceLocator';
|
|
6
|
-
import sendMessage from 'Utils/Function/sendMessage';
|
|
7
6
|
|
|
8
7
|
export class DefaultVisualizationProvider extends React.Component {
|
|
9
8
|
static propTypes = {
|
|
@@ -19,7 +18,13 @@ export class DefaultVisualizationProvider extends React.Component {
|
|
|
19
18
|
this.setState({
|
|
20
19
|
visualization,
|
|
21
20
|
});
|
|
22
|
-
|
|
21
|
+
this.removeComponentChangeListener = Services.visualization.registerComponentChangeListener(
|
|
22
|
+
this.onComponentChange
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
componentWillUnmount() {
|
|
27
|
+
this.removeComponentChangeListener && this.removeComponentChangeListener();
|
|
23
28
|
}
|
|
24
29
|
|
|
25
30
|
onComponentChange = ({ data: { component } }) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Api, { isCancelError } from 'Framework/Api';
|
|
2
|
-
import
|
|
2
|
+
import isObject from 'lodash/isObject';
|
|
3
3
|
import { createAsyncManager } from '../../Utils/Async/AsyncManager';
|
|
4
4
|
|
|
5
5
|
export const REQUEST_DATA = 'REQUEST_DATA';
|
|
@@ -59,11 +59,11 @@ const handleResponse = (source, request, receiver, extraData = {}) => dispatch =
|
|
|
59
59
|
return dispatch(receiver(response.data, extraData, response));
|
|
60
60
|
})
|
|
61
61
|
.catch(error => {
|
|
62
|
-
if (
|
|
62
|
+
if (isObject(error.response)) {
|
|
63
63
|
if (error.response.status === 404) {
|
|
64
64
|
return dispatch(requestError(source, error));
|
|
65
65
|
}
|
|
66
|
-
if (
|
|
66
|
+
if (isObject(error.response.data)) {
|
|
67
67
|
// request error (generated by the server)
|
|
68
68
|
dispatch(receiveData(source, error));
|
|
69
69
|
return dispatch(receiver(error.response.data, extraData, error.response));
|
|
@@ -122,11 +122,11 @@ export const asyncRequest = (source, receiver, extraData = {}, options = {}) =>
|
|
|
122
122
|
if (useLocalErrorHandling) {
|
|
123
123
|
throw error;
|
|
124
124
|
}
|
|
125
|
-
if (
|
|
125
|
+
if (isObject(error.response)) {
|
|
126
126
|
if (error.response.status === 404) {
|
|
127
127
|
dispatch(requestError(source, error));
|
|
128
128
|
}
|
|
129
|
-
if (
|
|
129
|
+
if (isObject(error.response.data)) {
|
|
130
130
|
// request error (generated by the server)
|
|
131
131
|
dispatch(receiveData(source, error));
|
|
132
132
|
return receiver
|
|
@@ -39,7 +39,13 @@ export const isConfigurationModeSwitchAvailable = createSelector(
|
|
|
39
39
|
modules => Object.values(modules).length > 1
|
|
40
40
|
);
|
|
41
41
|
|
|
42
|
+
export const isCreatorModeSelected = createSelector(getSelectedConfigurationMode, mode =>
|
|
43
|
+
isCreatorMode(mode)
|
|
44
|
+
);
|
|
45
|
+
|
|
42
46
|
export const isDesignerMode = modeStr => modeStr === 'designer';
|
|
43
47
|
|
|
48
|
+
export const isCreatorMode = modeStr => modeStr === 'creator';
|
|
49
|
+
|
|
44
50
|
export const getAvailableLicenses = data =>
|
|
45
51
|
(data && data.license && data.license.split('+').filter(a => a)) || [];
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import * as apiActions from '../Actions';
|
|
2
|
-
import
|
|
2
|
+
import first from 'lodash/first';
|
|
3
|
+
import isObject from 'lodash/isObject';
|
|
4
|
+
import get from 'lodash/get';
|
|
5
|
+
import isArray from 'lodash/isArray';
|
|
6
|
+
import flatten from 'lodash/flatten';
|
|
3
7
|
import find from 'lodash/find';
|
|
4
8
|
import uniq from 'lodash/uniq';
|
|
5
9
|
import { t } from 'Framework/i18n';
|
|
@@ -515,6 +519,9 @@ export const switchOptions = (
|
|
|
515
519
|
|
|
516
520
|
export const doCalculation = () => (dispatch, getState) => {
|
|
517
521
|
const configuration = getConfiguration(getConfigurator(getState()));
|
|
522
|
+
if (!configuration.item.identifier) {
|
|
523
|
+
return {};
|
|
524
|
+
}
|
|
518
525
|
return dispatch(apiActions.postDataAsync('calculation', configuration, receiveCalculation));
|
|
519
526
|
};
|
|
520
527
|
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import * as actionTypes from './Actions';
|
|
2
|
-
import _ from 'lodash';
|
|
3
2
|
import get from 'lodash/get';
|
|
3
|
+
import isObject from 'lodash/isObject';
|
|
4
|
+
import mergeWith from 'lodash/mergeWith';
|
|
5
|
+
import merge from 'lodash/merge';
|
|
6
|
+
import filter from 'lodash/filter';
|
|
7
|
+
import cloneDeep from 'lodash/cloneDeep';
|
|
8
|
+
import isArray from 'lodash/isArray';
|
|
9
|
+
import find from 'lodash/find';
|
|
4
10
|
import findIndex from 'lodash/findIndex';
|
|
5
11
|
import omit from 'lodash/omit';
|
|
6
12
|
import forEach from 'lodash/forEach';
|
|
@@ -16,7 +22,7 @@ const initialState = {
|
|
|
16
22
|
options: [],
|
|
17
23
|
optionsWithDetails: [],
|
|
18
24
|
selectedoptionclassification: {},
|
|
19
|
-
calculation:
|
|
25
|
+
calculation: {},
|
|
20
26
|
calculationAutoResolve: true,
|
|
21
27
|
optiondetails: {},
|
|
22
28
|
validation: null,
|
|
@@ -43,7 +49,7 @@ export function configurationHandler(state, action) {
|
|
|
43
49
|
case actionTypes.RECEIVE_CONFIGURATION: {
|
|
44
50
|
const configuration = action.data;
|
|
45
51
|
|
|
46
|
-
if (!
|
|
52
|
+
if (!isObject(configuration)) {
|
|
47
53
|
throw new Error(
|
|
48
54
|
`Server side error! The configuration must be a JSON structure! Data: ${configuration}`
|
|
49
55
|
);
|
|
@@ -53,13 +59,13 @@ export function configurationHandler(state, action) {
|
|
|
53
59
|
let { selectedoptionclassification } = state;
|
|
54
60
|
if (selectedoptionclassification.identifier) {
|
|
55
61
|
selectedoptionclassification =
|
|
56
|
-
|
|
62
|
+
find(configuration.optionclassifications, {
|
|
57
63
|
identifier: selectedoptionclassification.identifier,
|
|
58
64
|
}) || selectedoptionclassification;
|
|
59
65
|
}
|
|
60
66
|
|
|
61
67
|
// set validation from the received configuration
|
|
62
|
-
const validation =
|
|
68
|
+
const validation = get(configuration, 'information.validation_result');
|
|
63
69
|
|
|
64
70
|
return {
|
|
65
71
|
...state,
|
|
@@ -80,7 +86,7 @@ export function configurationHandler(state, action) {
|
|
|
80
86
|
let { selectedoptionclassification, options } = state;
|
|
81
87
|
const { optionclassifications } = configuration;
|
|
82
88
|
if (selectedoptionclassification.identifier) {
|
|
83
|
-
const optionclassificationData =
|
|
89
|
+
const optionclassificationData = find(optionclassifications, {
|
|
84
90
|
identifier: selectedoptionclassification.identifier,
|
|
85
91
|
});
|
|
86
92
|
if (optionclassificationData) {
|
|
@@ -91,7 +97,7 @@ export function configurationHandler(state, action) {
|
|
|
91
97
|
for (let soi in selectedoptions) {
|
|
92
98
|
for (let oi in options) {
|
|
93
99
|
if (selectedoptions[soi].identifier === options[oi].identifier) {
|
|
94
|
-
options[oi] =
|
|
100
|
+
options[oi] = mergeWith(
|
|
95
101
|
options[oi], // dst
|
|
96
102
|
selectedoptions[soi], // src
|
|
97
103
|
(dstValue, srcValue) => {
|
|
@@ -127,7 +133,7 @@ export function configurationHandler(state, action) {
|
|
|
127
133
|
let { selectedoptionclassification } = state;
|
|
128
134
|
if (selectedoptionclassification.identifier) {
|
|
129
135
|
selectedoptionclassification =
|
|
130
|
-
|
|
136
|
+
find(configuration.optionclassifications, {
|
|
131
137
|
identifier: selectedoptionclassification.identifier,
|
|
132
138
|
}) || selectedoptionclassification;
|
|
133
139
|
}
|
|
@@ -156,20 +162,20 @@ export function optionAndOptionclassificationHandler(state, action) {
|
|
|
156
162
|
}
|
|
157
163
|
|
|
158
164
|
case actionTypes.RECEIVE_OPTIONS: {
|
|
159
|
-
const options =
|
|
165
|
+
const options = cloneDeep(action.data);
|
|
160
166
|
|
|
161
167
|
// the selected options of the selected optionclassification should be updated
|
|
162
168
|
// eg. after the switchoption call added a partial object (it contains only the identifier and amount)
|
|
163
169
|
// but only missing values are updated
|
|
164
170
|
const keepDstProps = ['amount'];
|
|
165
|
-
const selectedoptionclassification =
|
|
171
|
+
const selectedoptionclassification = cloneDeep(state.selectedoptionclassification);
|
|
166
172
|
for (let oi in options) {
|
|
167
173
|
const option = options[oi];
|
|
168
174
|
const { selectedoptions } = selectedoptionclassification;
|
|
169
175
|
for (let os in selectedoptions) {
|
|
170
176
|
const selectedoption = selectedoptions[os];
|
|
171
177
|
if (selectedoption.identifier === option.identifier) {
|
|
172
|
-
options[oi] = selectedoptions[os] =
|
|
178
|
+
options[oi] = selectedoptions[os] = mergeWith(
|
|
173
179
|
selectedoptions[os], // dst
|
|
174
180
|
option, // src
|
|
175
181
|
(dstValue, srcValue, key) => {
|
|
@@ -194,12 +200,12 @@ export function optionAndOptionclassificationHandler(state, action) {
|
|
|
194
200
|
for (let os in selectedoptions) {
|
|
195
201
|
const selectedoption = selectedoptions[os];
|
|
196
202
|
for (let oi in options) {
|
|
197
|
-
const itemGroupChildren =
|
|
203
|
+
const itemGroupChildren = get(options[oi], 'option_group.children');
|
|
198
204
|
if (itemGroupChildren instanceof Array) {
|
|
199
205
|
for (let ci in itemGroupChildren) {
|
|
200
206
|
if (itemGroupChildren[ci].identifier === selectedoption.identifier) {
|
|
201
|
-
options[oi] =
|
|
202
|
-
|
|
207
|
+
options[oi] = mergeWith(
|
|
208
|
+
cloneDeep(options[oi]), // dst
|
|
203
209
|
itemGroupChildren[ci], // src
|
|
204
210
|
(dstValue, srcValue) =>
|
|
205
211
|
// if the value is present in the src then use it, otherwise leave the original
|
|
@@ -319,7 +325,7 @@ export function dataHandler(state, action) {
|
|
|
319
325
|
}
|
|
320
326
|
|
|
321
327
|
case actionTypes.RECEIVE_CODESNIPPETS: {
|
|
322
|
-
if (!
|
|
328
|
+
if (!isArray(action.data)) {
|
|
323
329
|
throw new Error(
|
|
324
330
|
`Server side error! The code snippets must be a JSON array! Data: ${action.data}`
|
|
325
331
|
);
|
|
@@ -468,9 +474,9 @@ export function baseHandler(state, action) {
|
|
|
468
474
|
}
|
|
469
475
|
case actionTypes.DELETE_SELECTED_AMOUNTS: {
|
|
470
476
|
const selectedAmountsPath = 'configuration.customdata.selectedAmounts';
|
|
471
|
-
const selectedAmounts =
|
|
477
|
+
const selectedAmounts = cloneDeep(get(state, selectedAmountsPath, {}));
|
|
472
478
|
forEach(selectedAmounts, (selectedAmount, identifier) => {
|
|
473
|
-
const variantIdentifier =
|
|
479
|
+
const variantIdentifier = find(action.variant.sizes, { identifier: identifier });
|
|
474
480
|
if (variantIdentifier) {
|
|
475
481
|
delete selectedAmounts[variantIdentifier.identifier];
|
|
476
482
|
}
|
|
@@ -524,7 +530,7 @@ export function configurationModifierHandler(state, action) {
|
|
|
524
530
|
}
|
|
525
531
|
case actionTypes.DELETE_SELECTED_AMOUNT: {
|
|
526
532
|
const selectedAmountsPath = 'configuration.customdata.selectedAmounts';
|
|
527
|
-
const selectedAmounts =
|
|
533
|
+
const selectedAmounts = cloneDeep(get(state, selectedAmountsPath, {}));
|
|
528
534
|
|
|
529
535
|
delete selectedAmounts[action.identifier];
|
|
530
536
|
|
|
@@ -601,12 +607,12 @@ let reducerArray = Object.values(subReducers);
|
|
|
601
607
|
let stateReducerArray = Object.values(stateChangeReducers);
|
|
602
608
|
|
|
603
609
|
export const setSubReducers = customSubReducers => {
|
|
604
|
-
|
|
610
|
+
merge(subReducers, customSubReducers);
|
|
605
611
|
reducerArray = Object.values(subReducers);
|
|
606
612
|
};
|
|
607
613
|
|
|
608
614
|
export const setStateChangeReducers = customStateChangeReducers => {
|
|
609
|
-
|
|
615
|
+
merge(stateChangeReducers, customStateChangeReducers);
|
|
610
616
|
stateReducerArray = Object.values(stateChangeReducers);
|
|
611
617
|
};
|
|
612
618
|
|
|
@@ -628,7 +634,7 @@ export default function configuratorReducer(prevState = initialState, action = {
|
|
|
628
634
|
}
|
|
629
635
|
|
|
630
636
|
function filterOptionsWithDetails(options) {
|
|
631
|
-
return
|
|
637
|
+
return filter(
|
|
632
638
|
options,
|
|
633
639
|
option => !!(option.abstract || option.description || option.detailImageExists === true)
|
|
634
640
|
);
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import get from 'lodash/get';
|
|
2
2
|
import flow from 'lodash/flow';
|
|
3
|
-
import
|
|
3
|
+
import find from 'lodash/find';
|
|
4
|
+
import difference from 'lodash/difference';
|
|
5
|
+
import keys from 'lodash/keys';
|
|
6
|
+
import values from 'lodash/values';
|
|
4
7
|
import createSelector from '../../../Utils/Function/createSelector';
|
|
5
8
|
import { getSelectedConfigurationMode } from '../ConfigurationMode/Selectors';
|
|
6
9
|
|
|
@@ -444,6 +444,16 @@ export function getEngravingBackgroundColor(state, designProductionMethod, varia
|
|
|
444
444
|
);
|
|
445
445
|
}
|
|
446
446
|
|
|
447
|
+
export function getColorOverlayData(state, designArea, variantIdentifier = false) {
|
|
448
|
+
const designProductionMethod = getSelectedDesignProductionMethodForDesignArea(state, designArea);
|
|
449
|
+
if (!designProductionMethodHasEngravingVisualizationEffect(designProductionMethod)) {
|
|
450
|
+
return null;
|
|
451
|
+
}
|
|
452
|
+
return {
|
|
453
|
+
color: getEngravingBackgroundColor(state, designArea, variantIdentifier),
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
|
|
447
457
|
export function getVisualizationEffectWithOptions(state, designArea, variantIdentifier = false) {
|
|
448
458
|
const designProductionMethod = getSelectedDesignProductionMethodForDesignArea(state, designArea);
|
|
449
459
|
const effect = getVisualizationEffect(designProductionMethod);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import isObject from 'lodash/isObject';
|
|
2
|
+
import reduce from 'lodash/reduce';
|
|
2
3
|
|
|
3
4
|
import {
|
|
4
5
|
REQUEST_DATA,
|
|
@@ -70,7 +71,7 @@ export default function apiReducer(state = initialState, action = {}) {
|
|
|
70
71
|
case REQUEST_ERROR: {
|
|
71
72
|
const sourceState = getSourceState(action);
|
|
72
73
|
const sources = { ...state.sources };
|
|
73
|
-
const key =
|
|
74
|
+
const key = isObject(action.source) ? action.source.url : action.source;
|
|
74
75
|
if (sourceState.isFetching) {
|
|
75
76
|
sources[key] = sourceState;
|
|
76
77
|
} else {
|
|
@@ -80,7 +81,7 @@ export default function apiReducer(state = initialState, action = {}) {
|
|
|
80
81
|
return {
|
|
81
82
|
...state,
|
|
82
83
|
sources,
|
|
83
|
-
isFetching:
|
|
84
|
+
isFetching: reduce(
|
|
84
85
|
sources,
|
|
85
86
|
function(result, value) {
|
|
86
87
|
return result || value.isFetching;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export const SET_VISIBLE = 'ui/SET_VISIBLE';
|
|
2
|
+
export const SET_VISIBLE_WITH_COUNTER = 'ui/SET_VISIBLE_WITH_COUNTER';
|
|
2
3
|
|
|
3
4
|
export const SET_WORK_IN_PROGRESS = 'ui/SET_WORK_IN_PROGRESS';
|
|
4
5
|
|
|
@@ -8,9 +9,22 @@ export const SHOW_ALERT = 'ui/SHOW_ALERT';
|
|
|
8
9
|
export const DISMISS_ALERT = 'ui/DISMISS_ALERT';
|
|
9
10
|
export const CONFIGURATION_NOT_FOUND_ERROR = 'ui/CONFIGURATION_NOT_FOUND';
|
|
10
11
|
|
|
12
|
+
export const VISIBILITY_NAMES = {
|
|
13
|
+
globalLoader: 'globalLoader',
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const COUNTER_TYPE_NAMES = [VISIBILITY_NAMES.globalLoader];
|
|
17
|
+
|
|
11
18
|
export const setVisible = (name, show) => (dispatch, getState) => {
|
|
19
|
+
if (COUNTER_TYPE_NAMES.includes(name)) {
|
|
20
|
+
return dispatch({
|
|
21
|
+
type: SET_VISIBLE_WITH_COUNTER,
|
|
22
|
+
name,
|
|
23
|
+
show,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
12
26
|
if (getState().ui.visibilityMap[name] !== show) {
|
|
13
|
-
dispatch({
|
|
27
|
+
return dispatch({
|
|
14
28
|
type: SET_VISIBLE,
|
|
15
29
|
name,
|
|
16
30
|
show,
|
|
@@ -6,12 +6,14 @@ import {
|
|
|
6
6
|
SHOW_ALERT,
|
|
7
7
|
DISMISS_ALERT,
|
|
8
8
|
CONFIGURATION_NOT_FOUND_ERROR,
|
|
9
|
+
SET_VISIBLE_WITH_COUNTER,
|
|
9
10
|
} from './Actions';
|
|
10
11
|
|
|
11
12
|
import * as apiActions from '../Actions';
|
|
12
13
|
|
|
13
14
|
const initialState = {
|
|
14
15
|
visibilityMap: {},
|
|
16
|
+
visibilityMapCount: {},
|
|
15
17
|
backgroundWorkMap: {},
|
|
16
18
|
error: null,
|
|
17
19
|
message: null,
|
|
@@ -57,6 +59,24 @@ const UIReducer = (state = initialState, action = {}) => {
|
|
|
57
59
|
};
|
|
58
60
|
}
|
|
59
61
|
|
|
62
|
+
case SET_VISIBLE_WITH_COUNTER: {
|
|
63
|
+
const stackCount = Math.max(
|
|
64
|
+
(state.visibilityMapCount[action.name] || 0) + (action.show ? 1 : -1),
|
|
65
|
+
0
|
|
66
|
+
);
|
|
67
|
+
return {
|
|
68
|
+
...state,
|
|
69
|
+
visibilityMap: {
|
|
70
|
+
...state.visibilityMap,
|
|
71
|
+
[action.name]: stackCount > 0,
|
|
72
|
+
},
|
|
73
|
+
visibilityMapCount: {
|
|
74
|
+
...state.visibilityMapCount,
|
|
75
|
+
[action.name]: stackCount,
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
60
80
|
case SET_WORK_IN_PROGRESS: {
|
|
61
81
|
return {
|
|
62
82
|
...state,
|
package/src/App/Routing.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React, { Component } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { Route as BasicRoute, Redirect, Switch } from 'react-router';
|
|
4
|
-
import { BrowserRouter } from 'react-router-dom';
|
|
3
|
+
import { BrowserRouter, Route as BasicRoute, Redirect, Switch } from 'react-router-dom';
|
|
5
4
|
|
|
6
5
|
import WrapperFrame from './Frame';
|
|
7
6
|
import ErrorBoundary from './Error/ErrorBoundary';
|
|
@@ -10,33 +9,17 @@ import combinedScreens from './Screens';
|
|
|
10
9
|
|
|
11
10
|
import { getConf } from './configuration.js';
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
location
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
this.state = {
|
|
25
|
-
query: new URLSearchParams(props.location.search),
|
|
26
|
-
component,
|
|
27
|
-
rest,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
renderComponent = props => {
|
|
32
|
-
const { component: Component, query } = this.state;
|
|
33
|
-
return <Component {...props} query={query} />;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
render() {
|
|
37
|
-
return <BasicRoute {...this.state.rest} render={this.renderComponent} />;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
12
|
+
const Route = ({ component: Component, ...props }) => (
|
|
13
|
+
<BasicRoute
|
|
14
|
+
{...props}
|
|
15
|
+
render={() => <Component {...props} query={new URLSearchParams(props.location.search)} />}
|
|
16
|
+
/>
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
Route.propTypes = {
|
|
20
|
+
component: PropTypes.elementType,
|
|
21
|
+
location: PropTypes.object,
|
|
22
|
+
};
|
|
40
23
|
|
|
41
24
|
const NoMatch = () => <div>No routing found for the specified path.</div>;
|
|
42
25
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { hot } from 'react-hot-loader';
|
|
4
3
|
|
|
5
4
|
import { connect } from 'react-redux';
|
|
6
5
|
|
|
@@ -72,6 +71,4 @@ const mapStateToProps = state => {
|
|
|
72
71
|
};
|
|
73
72
|
};
|
|
74
73
|
|
|
75
|
-
export const ConnectedCalculationWidgetScreen = connect(mapStateToProps)(
|
|
76
|
-
hot(module)(CalculationWidgetScreen)
|
|
77
|
-
);
|
|
74
|
+
export const ConnectedCalculationWidgetScreen = connect(mapStateToProps)(CalculationWidgetScreen);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { withStyles } from '@material-ui/core/styles';
|
|
3
3
|
import { t } from 'Framework/i18n';
|
|
4
|
-
import Grid from '@material-ui/core/Grid
|
|
5
|
-
import InputBase from '@material-ui/core/InputBase
|
|
6
|
-
import Typography from '@material-ui/core/Typography
|
|
7
|
-
import Divider from '@material-ui/core/Divider
|
|
4
|
+
import Grid from '@material-ui/core/Grid';
|
|
5
|
+
import InputBase from '@material-ui/core/InputBase';
|
|
6
|
+
import Typography from '@material-ui/core/Typography';
|
|
7
|
+
import Divider from '@material-ui/core/Divider';
|
|
8
8
|
import AmountInput from 'App/Shared/Components/AmountInput';
|
|
9
9
|
import PropTypes from 'prop-types';
|
|
10
10
|
|
|
@@ -14,7 +14,7 @@ import ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';
|
|
|
14
14
|
import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
|
|
15
15
|
import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';
|
|
16
16
|
import Divider from '@material-ui/core/Divider';
|
|
17
|
-
import grey from '@material-ui/core/colors
|
|
17
|
+
import { grey } from '@material-ui/core/colors';
|
|
18
18
|
import Button from '@material-ui/core/Button';
|
|
19
19
|
import Card from '@material-ui/core/Card';
|
|
20
20
|
import CardContent from '@material-ui/core/CardContent';
|
|
@@ -23,8 +23,8 @@ import AmountInput from 'App/Shared/Components/AmountInput';
|
|
|
23
23
|
import MainButton from 'Shared/Components/MainButton';
|
|
24
24
|
import AnalyticsWrapper from 'App/Shared/Components/Analytics/AnalyticsWrapper';
|
|
25
25
|
import InformationTag from 'App/Shared/Components/InformationTag/InformationTag';
|
|
26
|
-
import TextField from '@material-ui/core/TextField
|
|
27
|
-
import Input from '@material-ui/core/Input
|
|
26
|
+
import TextField from '@material-ui/core/TextField';
|
|
27
|
+
import Input from '@material-ui/core/Input';
|
|
28
28
|
import Checkbox from '@material-ui/core/Checkbox';
|
|
29
29
|
import { combineMediaQueriesWithAnd } from '../../../../../Utils/Styles/combineMediaQueries';
|
|
30
30
|
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
/* eslint-env jest */
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import
|
|
3
|
+
import noop from 'lodash/noop';
|
|
4
4
|
import { mount, render } from 'enzyme';
|
|
5
5
|
import CalculationWidget from './index';
|
|
6
6
|
import MenuItem from '@material-ui/core/MenuItem';
|
|
7
|
-
import
|
|
7
|
+
import Select from '@material-ui/core/Select';
|
|
8
|
+
import ExpansionPanel from '@material-ui/core/ExpansionPanel';
|
|
9
|
+
import ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';
|
|
10
|
+
|
|
8
11
|
import ServiceLocator from 'App/ServiceLocator';
|
|
9
12
|
|
|
10
13
|
const designAreas = [
|
package/src/App/Screens/Configurator/Components/ConfigurationModeSwitch/ConfigurationModeSwitch.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { t } from 'Framework/i18n';
|
|
4
|
-
import { withStyles } from '@material-ui/core';
|
|
4
|
+
import { withStyles } from '@material-ui/core/styles';
|
|
5
5
|
import Button from '@material-ui/core/Button';
|
|
6
6
|
import AnalyticsWrapper from '../../../../Shared/Components/Analytics/AnalyticsWrapper';
|
|
7
7
|
|
package/src/App/Screens/Configurator/Components/FallbackVisualization/FallbackVisualization.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import withStyles from '@material-ui/core/styles
|
|
3
|
+
import { withStyles } from '@material-ui/core/styles';
|
|
4
4
|
import { T } from 'Framework/i18n';
|
|
5
5
|
import Typography from '@material-ui/core/Typography';
|
|
6
6
|
import { ImageLoader } from '../ImageLoader/ImageLoader';
|
|
@@ -2,11 +2,11 @@ import React from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import clsx from 'clsx';
|
|
4
4
|
import { withStyles } from '@material-ui/core/styles';
|
|
5
|
-
import Button from '@material-ui/core/Button
|
|
6
|
-
import Icon from '@material-ui/core/Icon
|
|
7
|
-
import Grid from '@material-ui/core/Grid
|
|
5
|
+
import Button from '@material-ui/core/Button';
|
|
6
|
+
import Icon from '@material-ui/core/Icon';
|
|
7
|
+
import Grid from '@material-ui/core/Grid';
|
|
8
8
|
import Typography from '@material-ui/core/Typography';
|
|
9
|
-
import withWidth, { isWidthDown } from '@material-ui/core/withWidth
|
|
9
|
+
import withWidth, { isWidthDown } from '@material-ui/core/withWidth';
|
|
10
10
|
import { t } from 'Framework/i18n';
|
|
11
11
|
import AnalyticsWrapper from 'App/Shared/Components/Analytics/AnalyticsWrapper';
|
|
12
12
|
import customClassName from 'App/Utils/customClassName';
|