@configuratorware/configurator-frontendgui 1.28.1 → 1.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/App/Constant.js +73 -0
- package/App/Error/DevelopmentErrorPage/index.js +74 -0
- package/App/Error/ErrorBoundary.js +98 -0
- package/App/Error/ProductionErrorPage/Style.scss +47 -0
- package/App/Error/ProductionErrorPage/index.js +43 -0
- package/App/Error/ProductionErrorPage/index.story.js +13 -0
- package/App/Error/ProductionErrorPage/res/error_gears.png +0 -0
- package/App/Frame.js +95 -0
- package/App/Modules/Creator/Components/ConfigurationvariantItem/Styles.scss +33 -0
- package/App/Modules/Creator/Components/ConfigurationvariantItem/index.js +118 -0
- package/App/Modules/Creator/Components/ConfigurationvariantSelection/Styles.scss +47 -0
- package/App/Modules/Creator/Components/ConfigurationvariantSelection/index.js +130 -0
- package/App/Modules/Creator/Components/CustomTitleEditor/Styles.scss +43 -0
- package/App/Modules/Creator/Components/CustomTitleEditor/index.js +144 -0
- package/App/Modules/Creator/Components/ExternalVisualization/index.js +140 -0
- package/App/Modules/Creator/Components/FastConfiguration/SelectableRow.js +128 -0
- package/App/Modules/Creator/Components/FastConfiguration/Styles.scss +53 -0
- package/App/Modules/Creator/Components/FastConfiguration/index.js +280 -0
- package/App/Modules/Creator/Components/FastConfigurationRow/Styles.scss +45 -0
- package/App/Modules/Creator/Components/FastConfigurationRow/index.js +78 -0
- package/App/Modules/Creator/Components/FastConfigurationSelect/Styles.scss +35 -0
- package/App/Modules/Creator/Components/FastConfigurationSelect/index.js +251 -0
- package/App/Modules/Creator/Components/FormattedNumber/index.js +45 -0
- package/App/Modules/Creator/Components/FormattedPrice/index.js +57 -0
- package/App/Modules/Creator/Components/FullScreenView/FullScreenView.js +104 -0
- package/App/Modules/Creator/Components/Incompatibility/OptionRule/index.js +182 -0
- package/App/Modules/Creator/Components/Incompatibility/RuleComponent.js +88 -0
- package/App/Modules/Creator/Components/Incompatibility/index.js +251 -0
- package/App/Modules/Creator/Components/InvalidConfigurationNotice/index.js +164 -0
- package/App/Modules/Creator/Components/LoginForm/Styles.scss +9 -0
- package/App/Modules/Creator/Components/LoginForm/index.js +129 -0
- package/App/Modules/Creator/Components/Option/index.js +545 -0
- package/App/Modules/Creator/Components/Option/index.story.js +154 -0
- package/App/Modules/Creator/Components/OptionAmount/index.js +236 -0
- package/App/Modules/Creator/Components/OptionGroup/index.js +55 -0
- package/App/Modules/Creator/Components/Optiondetail/ZoomImage/index.js +173 -0
- package/App/Modules/Creator/Components/Optiondetail/index.js +499 -0
- package/App/Modules/Creator/Components/Optiondetail/index.story.js +117 -0
- package/App/Modules/Creator/Components/OptionsList/index.js +193 -0
- package/App/Modules/Creator/Components/Price/Styles.scss +3 -0
- package/App/Modules/Creator/Components/Price/index.js +79 -0
- package/App/Modules/Creator/Components/ProductPart/index.js +185 -0
- package/App/Modules/Creator/Components/ProductPart/index.story.js +88 -0
- package/App/Modules/Creator/Components/ProductPartsList/index.js +150 -0
- package/App/Modules/Creator/Components/ProductPartsList/index.story.js +101 -0
- package/App/Modules/Creator/Components/SavedConfiguration/Styles.scss +19 -0
- package/App/Modules/Creator/Components/SavedConfiguration/index.js +82 -0
- package/App/Modules/Creator/Components/ShareConfiguration/Styles.scss +23 -0
- package/App/Modules/Creator/Components/ShareConfiguration/index.js +224 -0
- package/App/Modules/Creator/Components/StockInformation/index.js +93 -0
- package/App/Modules/Creator/Components/StoreConfigurationForm/Styles.scss +5 -0
- package/App/Modules/Creator/Components/StoreConfigurationForm/index.js +123 -0
- package/App/Modules/Creator/Components/Tools/Styles.scss +44 -0
- package/App/Modules/Creator/Components/Tools/index.js +102 -0
- package/App/Modules/Creator/Components/ValidationResult/Styles.scss +45 -0
- package/App/Modules/Creator/Components/ValidationResult/index.js +165 -0
- package/App/Modules/Creator/Components/index.js +84 -0
- package/App/Modules/Creator/Containers/AmountPrice/index.js +26 -0
- package/App/Modules/Creator/Containers/ConfigurationvariantSelection/index.js +60 -0
- package/App/Modules/Creator/Containers/CustomTitleEditor/index.js +52 -0
- package/App/Modules/Creator/Containers/FastConfiguration/index.js +62 -0
- package/App/Modules/Creator/Containers/FormattedPrice/index.js +31 -0
- package/App/Modules/Creator/Containers/Incompatibility/index.js +40 -0
- package/App/Modules/Creator/Containers/InvalidConfigurationNotice/index.js +89 -0
- package/App/Modules/Creator/Containers/LoadingOverlay/index.js +26 -0
- package/App/Modules/Creator/Containers/Optiondetail/index.js +48 -0
- package/App/Modules/Creator/Containers/OptionsList/index.js +49 -0
- package/App/Modules/Creator/Containers/ProductPart/index.js +26 -0
- package/App/Modules/Creator/Containers/ProductPartsList/index.js +49 -0
- package/App/Modules/Creator/Containers/SavedConfigurationContainer/index.js +25 -0
- package/App/Modules/Creator/Containers/ShareConfiguration/index.js +42 -0
- package/App/Modules/Creator/Containers/StockInformation/index.js +33 -0
- package/App/Modules/Creator/Containers/Tools/index.js +44 -0
- package/App/Modules/Creator/Containers/ValidationResult/index.js +34 -0
- package/App/Modules/Creator/Containers/index.js +175 -0
- package/App/Modules/Creator/CreatorScreen.js +307 -0
- package/App/Modules/Creator/Layouts/DefaultLayout.js +260 -0
- package/App/Modules/Creator/Styles.scss +216 -0
- package/App/Modules/Designer/Components/AddGalleryImage/index.js +234 -0
- package/App/Modules/Designer/Components/AddGalleryImage/index.story.js +94 -0
- package/App/Modules/Designer/Components/AddGalleryImage/index.test.js +151 -0
- package/App/Modules/Designer/Components/AddVisualElement/Styles.scss +0 -0
- package/App/Modules/Designer/Components/AddVisualElement/index.js +278 -0
- package/App/Modules/Designer/Components/AddVisualElement/index.story.js +24 -0
- package/App/Modules/Designer/Components/AddVisualElement/index.test.js +47 -0
- package/App/Modules/Designer/Components/CloseDesignEditor/index.js +130 -0
- package/App/Modules/Designer/Components/CloseGraphicsEditorButton/index.js +54 -0
- package/App/Modules/Designer/Components/ColorPalettes/ColorPalettesSearch.js +175 -0
- package/App/Modules/Designer/Components/ColorPalettes/index.js +814 -0
- package/App/Modules/Designer/Components/ColorPalettes/index.story.js +158 -0
- package/App/Modules/Designer/Components/ColorPalettes/index.test.js +150 -0
- package/App/Modules/Designer/Components/DesignAreaControlbox/Styles.scss +0 -0
- package/App/Modules/Designer/Components/DesignAreaControlbox/index.js +467 -0
- package/App/Modules/Designer/Components/DesignAreaControlbox/index.story.js +272 -0
- package/App/Modules/Designer/Components/DesignAreaControlbox/index.test.js +164 -0
- package/App/Modules/Designer/Components/DesignerSelectionToolbox/CustomFontOverlay.js +162 -0
- package/App/Modules/Designer/Components/DesignerSelectionToolbox/DesignerSelectionToolbox.js +425 -0
- package/App/Modules/Designer/Components/DesignerSelectionToolbox/fontItemUtils.js +48 -0
- package/App/Modules/Designer/Components/Dialog/index.js +125 -0
- package/App/Modules/Designer/Components/EditDesignButton/index.js +128 -0
- package/App/Modules/Designer/Components/FeedbackNotice/index.js +110 -0
- package/App/Modules/Designer/Components/FeedbackNotice/index.test.js +16 -0
- package/App/Modules/Designer/Components/FullScreenView/FullScreenView.js +63 -0
- package/App/Modules/Designer/Components/ImageColorPicker/ImageColorPicker.dev.js +32 -0
- package/App/Modules/Designer/Components/ImageColorPicker/ImageColorPicker.js +430 -0
- package/App/Modules/Designer/Components/ImageColorize/index.js +636 -0
- package/App/Modules/Designer/Components/ImageColorize/index.story.js +73 -0
- package/App/Modules/Designer/Components/ImageControlbox/index.js +302 -0
- package/App/Modules/Designer/Components/ImageEditDialog/ImageThumbnail.js +171 -0
- package/App/Modules/Designer/Components/ImageEditDialog/ImageUpload.js +478 -0
- package/App/Modules/Designer/Components/ImageEditDialog/index.js +716 -0
- package/App/Modules/Designer/Components/ImageEditDialog/res/baseline_colorize_black_24dp.png +0 -0
- package/App/Modules/Designer/Components/ImageEditDialog/res/checkers_tile.png +0 -0
- package/App/Modules/Designer/Components/ImageLibraryFilter/index.js +179 -0
- package/App/Modules/Designer/Components/ImageLibraryThumbnail/Styles.scss +14 -0
- package/App/Modules/Designer/Components/ImageLibraryThumbnail/index.js +165 -0
- package/App/Modules/Designer/Components/ObjectTools/index.js +146 -0
- package/App/Modules/Designer/Components/Select/index.js +171 -0
- package/App/Modules/Designer/Components/TextControlbox/TextFormatIcon.js +48 -0
- package/App/Modules/Designer/Components/TextControlbox/index.js +656 -0
- package/App/Modules/Designer/Components/TextControlbox/index.story.js +109 -0
- package/App/Modules/Designer/Components/TextControlbox/index.test.js +172 -0
- package/App/Modules/Designer/Containers/AddGalleryImage.js +90 -0
- package/App/Modules/Designer/Containers/AddVisualElement.js +166 -0
- package/App/Modules/Designer/Containers/CloseDesignEditor.js +32 -0
- package/App/Modules/Designer/Containers/CloseGraphicsEditorButton.js +32 -0
- package/App/Modules/Designer/Containers/ColorPalettes.js +145 -0
- package/App/Modules/Designer/Containers/DesignAreaControlbox.js +54 -0
- package/App/Modules/Designer/Containers/Designer.js +37 -0
- package/App/Modules/Designer/Containers/DesignerSelectionToolbox.js +116 -0
- package/App/Modules/Designer/Containers/EditDesignButton.js +35 -0
- package/App/Modules/Designer/Containers/ImageEditDialog.js +1130 -0
- package/App/Modules/Designer/Designer.js +231 -0
- package/App/Modules/Designer/DesignerScreen.js +255 -0
- package/App/Modules/Designer/DesignerUI.js +241 -0
- package/App/Modules/Designer/Layouts/DefaultLayout.js +221 -0
- package/App/Modules/Designer/Layouts/Mobile/TwoSideBottomBar.js +50 -0
- package/App/Modules/Designer/Layouts/PopupAreaProvider.js +186 -0
- package/App/Modules/Designer/MultilayerComponents/DesignerClickAwayListener.js +53 -0
- package/App/Modules/Designer/MultilayerComponents/InlineToolboxPortal.js +106 -0
- package/App/Modules/Designer/MultilayerComponents/StandardToolboxPortal.js +64 -0
- package/App/Modules/Designer/Utils/FontFaceRepository.js +82 -0
- package/App/Modules/Designer/Utils/ImageEditUtils.js +104 -0
- package/App/Modules/Designer/Utils/Transformers.js +164 -0
- package/App/Modules/Designer/setupDesigner.js +182 -0
- package/App/Modules/Designer/withActiveCanvas.js +136 -0
- package/App/Modules/Visualization/AlignTargetContainer.js +55 -0
- package/App/Modules/Visualization/CreatorAlignTarget.js +41 -0
- package/App/Modules/Visualization/DefaultVisualizationProvider.js +105 -0
- package/App/Modules/Visualization/DesignerAlignTarget.js +45 -0
- package/App/Modules/Visualization/Utils/getFirstDataURLFromScreenshotsObj.js +20 -0
- package/App/Reducers/Actions.js +297 -0
- package/App/Reducers/ConfigurationMode/Actions.js +21 -0
- package/App/Reducers/ConfigurationMode/Reducer.js +80 -0
- package/App/Reducers/ConfigurationMode/Selectors.js +84 -0
- package/App/Reducers/Configurator/Actions.js +1417 -0
- package/App/Reducers/Configurator/AttributeSelectors.js +32 -0
- package/App/Reducers/Configurator/Modifiers.js +35 -0
- package/App/Reducers/Configurator/Reducer.js +639 -0
- package/App/Reducers/Configurator/Selectors.js +242 -0
- package/App/Reducers/Confirm/Actions.js +84 -0
- package/App/Reducers/Confirm/Reducer.js +30 -0
- package/App/Reducers/DesignArea/Actions.js +76 -0
- package/App/Reducers/DesignArea/DesignElementSelectors.js +114 -0
- package/App/Reducers/DesignArea/MaskSelectors.js +101 -0
- package/App/Reducers/DesignArea/Reducer.js +150 -0
- package/App/Reducers/DesignArea/Selectors.js +1304 -0
- package/App/Reducers/DesignArea/Transformers.js +333 -0
- package/App/Reducers/DesignData/Actions.js +232 -0
- package/App/Reducers/DesignData/Modifiers.js +328 -0
- package/App/Reducers/DesignData/Reducer.js +189 -0
- package/App/Reducers/DesignData/Selectors.js +94 -0
- package/App/Reducers/DesignData/Transformers.js +27 -0
- package/App/Reducers/DesignView/Actions.js +19 -0
- package/App/Reducers/DesignView/Reducer.js +165 -0
- package/App/Reducers/DesignView/Selectors.js +130 -0
- package/App/Reducers/DesignView/Transformers.js +32 -0
- package/App/Reducers/Device/Actions.js +16 -0
- package/App/Reducers/Device/Reducer.js +51 -0
- package/App/Reducers/Fonts/Actions.js +137 -0
- package/App/Reducers/Fonts/Reducer.js +39 -0
- package/App/Reducers/Fonts/Selectors.js +98 -0
- package/App/Reducers/GeneralActions.js +16 -0
- package/App/Reducers/ImageGallery/Actions.js +336 -0
- package/App/Reducers/ImageGallery/Modifiers.js +67 -0
- package/App/Reducers/ImageGallery/Reducer.js +320 -0
- package/App/Reducers/ImageGallery/Selectors.js +206 -0
- package/App/Reducers/Reducer.js +107 -0
- package/App/Reducers/UI/Actions.js +191 -0
- package/App/Reducers/UI/Reducer.js +98 -0
- package/App/Reducers/UI/Selectors.js +32 -0
- package/App/Reducers.js +48 -0
- package/App/Routing.js +168 -0
- package/App/Screens/Configurator/CalculationWidgetScreen.js +84 -0
- package/App/Screens/Configurator/Components/AmountSelection/Styles.scss +17 -0
- package/App/Screens/Configurator/Components/AmountSelection/index.js +170 -0
- package/App/Screens/Configurator/Components/AmountSelection/index.story.js +36 -0
- package/App/Screens/Configurator/Components/CalculationWidget/index.js +652 -0
- package/App/Screens/Configurator/Components/CalculationWidget/index.story.js +154 -0
- package/App/Screens/Configurator/Components/CalculationWidget/index.test.js +142 -0
- package/App/Screens/Configurator/Components/ConfigurationModeSwitch/ConfigurationModeSwitch.js +82 -0
- package/App/Screens/Configurator/Components/ConfigurationModeSwitch/index.js +15 -0
- package/App/Screens/Configurator/Components/Confirm/Styles.scss +0 -0
- package/App/Screens/Configurator/Components/Confirm/index.js +105 -0
- package/App/Screens/Configurator/Components/DesignApproval/index.js +76 -0
- package/App/Screens/Configurator/Components/DesignApproval/index.story.js +27 -0
- package/App/Screens/Configurator/Components/DesignApproval/index.test.js +31 -0
- package/App/Screens/Configurator/Components/Error/index.js +106 -0
- package/App/Screens/Configurator/Components/FallbackVisualization/FallbackVisualization.js +96 -0
- package/App/Screens/Configurator/Components/FileUpload/FileUploadBase.js +1 -0
- package/App/Screens/Configurator/Components/FullScreenView/index.js +304 -0
- package/App/Screens/Configurator/Components/FullScreenView/index.test.js +28 -0
- package/App/Screens/Configurator/Components/ImageLoader/ImageLoader.js +96 -0
- package/App/Screens/Configurator/Components/LandscapeInformation/index.js +75 -0
- package/App/Screens/Configurator/Components/NoVisualization/NoVisualization.js +35 -0
- package/App/Screens/Configurator/Components/PreviewPortal/index.js +249 -0
- package/App/Screens/Configurator/Components/Styles.scss +1 -0
- package/App/Screens/Configurator/Components/Thumbnail/index.js +394 -0
- package/App/Screens/Configurator/Components/Thumbnail/index.test.js +50 -0
- package/App/Screens/Configurator/Components/TotalPrice/TotalPrice.js +57 -0
- package/App/Screens/Configurator/Containers/AmountPrice.js +84 -0
- package/App/Screens/Configurator/Containers/CalculationWidget.js +278 -0
- package/App/Screens/Configurator/Containers/ConfigurationModeSwitch.js +81 -0
- package/App/Screens/Configurator/Containers/Confirm.js +37 -0
- package/App/Screens/Configurator/Containers/DesignApproval.js +129 -0
- package/App/Screens/Configurator/Containers/FallbackVisualization.js +32 -0
- package/App/Screens/Configurator/Containers/FullScreenView.js +47 -0
- package/App/Screens/Configurator/Containers/Thumbnail.js +41 -0
- package/App/Screens/Configurator/Containers/Visualization.js +13 -0
- package/App/Screens/Configurator/DynamicComponents.js +40 -0
- package/App/Screens/Configurator/Screen.js +238 -0
- package/App/Screens/Configurator/ScreenPropTypes.js +45 -0
- package/App/Screens/Configurator/ThemeProvider.js +298 -0
- package/App/Screens/DesignerProductPreview/Constants.js +12 -0
- package/App/Screens/DesignerProductPreview/DesignerProductPreviewManager.js +554 -0
- package/App/Screens/DesignerProductPreview/Screen.js +407 -0
- package/App/Screens.js +42 -0
- package/App/ServiceLocator.js +309 -0
- package/App/Services/AdminareaCommunicationService.js +149 -0
- package/App/Services/AnalyticsService.js +403 -0
- package/App/Services/ConfiguratorService.js +1166 -0
- package/App/Services/DesignDataService.js +3249 -0
- package/App/Services/DesignerService.js +496 -0
- package/App/Services/InteractionService.js +784 -0
- package/App/Services/UIService.js +129 -0
- package/App/Services/VisualizationService.js +844 -0
- package/App/Shared/Components/AcceptDesign/index.js +166 -0
- package/App/Shared/Components/AddToBasket/index.js +194 -0
- package/App/Shared/Components/AddToBasket/index.story.js +47 -0
- package/App/Shared/Components/AlertDialog/index.js +138 -0
- package/App/Shared/Components/AmountInput/Styles.scss +6 -0
- package/App/Shared/Components/AmountInput/index.js +296 -0
- package/App/Shared/Components/AmountInput/index.story.js +29 -0
- package/App/Shared/Components/AmountPrice/index.js +925 -0
- package/App/Shared/Components/AmountPrice/index.story.js +112 -0
- package/App/Shared/Components/AmountPrice/index.test.js +125 -0
- package/App/Shared/Components/Analytics/AnalyticsWrapper.js +49 -0
- package/App/Shared/Components/BulkNames/index.js +319 -0
- package/App/Shared/Components/CallToAction/index.js +220 -0
- package/App/Shared/Components/Header/Header.js +150 -0
- package/App/Shared/Components/Header/index.js +15 -0
- package/App/Shared/Components/Header/index.story.js +143 -0
- package/App/Shared/Components/InformationTag/InformationTag.js +155 -0
- package/App/Shared/Components/LicenseNotice/LicenseNotice.js +148 -0
- package/App/Shared/Components/LicenseNotice/index.js +15 -0
- package/App/Shared/Components/LoadConfiguration/index.js +218 -0
- package/App/Shared/Components/MessageBox/index.js +84 -0
- package/App/Shared/Components/MessageBox/index.story.js +49 -0
- package/App/Shared/Components/Notification/index.js +105 -0
- package/App/Shared/Components/Notification/index.story.js +55 -0
- package/App/Shared/Components/PdfDownload/index.js +150 -0
- package/App/Shared/Components/PlusMinusInput/index.js +118 -0
- package/App/Shared/Components/PriceList/index.js +237 -0
- package/App/Shared/Components/PriceList/index.story.js +114 -0
- package/App/Shared/Components/PriceOverview/index.js +177 -0
- package/App/Shared/Components/PriceOverview/index.story.js +215 -0
- package/App/Shared/Components/ProductVariant/Image.js +75 -0
- package/App/Shared/Components/ProductVariant/Styles.scss +11 -0
- package/App/Shared/Components/ProductVariant/index.js +477 -0
- package/App/Shared/Components/ProductVariant/index.story.js +283 -0
- package/App/Shared/Components/Progress/Progress.js +59 -0
- package/App/Shared/Components/ReceiveOfferForm/index.js +432 -0
- package/App/Shared/Components/ReceiveOfferForm/index.story.js +32 -0
- package/App/Shared/Components/ReceiveOfferForm/index.test.js +36 -0
- package/App/Shared/Components/SaveConfiguration/index.js +286 -0
- package/App/Shared/Components/SendEmail/index.js +103 -0
- package/App/Shared/Components/Stepper/index.js +136 -0
- package/App/Shared/Components/Stepper/index.story.js +38 -0
- package/App/Shared/Components/ToolbarList/index.js +231 -0
- package/App/Shared/Components/ToolbarList/index.story.js +33 -0
- package/App/Shared/Components/VariantChooser/index.js +270 -0
- package/App/Shared/Components/VariantChooser/index.story.js +100 -0
- package/App/Shared/Containers/AlertMessages.js +37 -0
- package/App/Shared/Containers/AmountPrice/AmountPriceAdminareaWrapper.js +40 -0
- package/App/Shared/Containers/AmountPrice/index.js +284 -0
- package/App/Shared/Containers/BulkNames.js +310 -0
- package/App/Shared/Containers/Error.js +37 -0
- package/App/Shared/Containers/GlobalLoader.js +25 -0
- package/App/Shared/Containers/Header/index.js +178 -0
- package/App/Shared/Containers/LicenseNotice/LicenseNotice.js +26 -0
- package/App/Shared/Containers/LicenseNotice/index.js +15 -0
- package/App/Shared/Containers/LoadConfiguration/LoadConfiguration.js +146 -0
- package/App/Shared/Containers/LoadConfiguration/index.js +15 -0
- package/App/Shared/Containers/PdfDownload/index.js +39 -0
- package/App/Shared/Containers/ProductVariant/ProductVariant.js +339 -0
- package/App/Shared/Containers/ProductVariant/index.js +15 -0
- package/App/Shared/Containers/SaveConfiguration.js +49 -0
- package/App/Shared/Containers/SendEmail/SendEmail.js +45 -0
- package/App/Shared/Containers/SendEmail/index.js +15 -0
- package/App/Shared/Providers/DefaultCanvasProvider.js +86 -0
- package/App/Storage.js +17 -0
- package/App/Store.js +87 -0
- package/App/Styles.scss +0 -0
- package/App/Translations.js +88 -0
- package/App/Utils/createMessageInterface.js +65 -0
- package/App/Utils/customClassName.js +12 -0
- package/App/Utils/getContrastText.js +27 -0
- package/App/Utils/getImageUrl.js +32 -0
- package/App/Variables.scss +84 -0
- package/App/configuration.js +421 -0
- package/App/index.js +52 -0
- package/App/initServices.js +67 -0
- package/App/setup.js +22 -0
- package/App/versionInfo.js +8 -0
- package/Framework/Api.js +178 -0
- package/Framework/ComponentContainer.js +165 -0
- package/Framework/Components/Carousel/Styles.scss +85 -0
- package/Framework/Components/Carousel/index.js +322 -0
- package/Framework/Components/Dialog/Style.scss +79 -0
- package/Framework/Components/Dialog/index.js +721 -0
- package/Framework/Components/DialogSelect/Styles.scss +53 -0
- package/Framework/Components/DialogSelect/index.js +331 -0
- package/Framework/Components/Input/index.js +147 -0
- package/Framework/Components/LoadingOverlay/Styles.scss +37 -0
- package/Framework/Components/LoadingOverlay/index.js +33 -0
- package/Framework/Components/Markdown/index.js +62 -0
- package/Framework/Components/Mobile/index.js +33 -0
- package/Framework/CustomError.js +51 -0
- package/Framework/Helpers/TransitionDetect.js +116 -0
- package/Framework/Helpers/isLandscapeMobile.js +14 -0
- package/Framework/Helpers/isMobileDevice.js +17 -0
- package/Framework/Helpers/isMobileSize.js +13 -0
- package/Framework/Mixins.scss +235 -0
- package/Framework/Services/AbstractAdminareaCommunicationService.js +48 -0
- package/Framework/Services/AbstractAsyncService.js +44 -0
- package/Framework/Services/AbstractConfiguratorService.js +47 -0
- package/Framework/Services/AbstractInteractionService.js +50 -0
- package/Framework/Services/AbstractStoreService.js +42 -0
- package/Framework/Services/AbstractUIService.js +53 -0
- package/Framework/Services/AbstractVisualizationService.js +47 -0
- package/Framework/Services/AsyncService.js +93 -0
- package/Framework/Services/StoreService.js +237 -0
- package/Framework/Variables.scss +22 -0
- package/Framework/bindDecorator.js +173 -0
- package/Framework/i18n.js +382 -0
- package/README.md +5 -26
- package/Resources/Icons/MaterialUI/Icons/AddCircle.js +13 -0
- package/Resources/Icons/MaterialUI/Icons/RemoveCircle.js +13 -0
- package/Resources/Icons/MaterialUI/fontFace.scss +37 -0
- package/Resources/Icons/MaterialUI/fonts/MaterialIcons-Regular.eot +0 -0
- package/Resources/Icons/MaterialUI/fonts/MaterialIcons-Regular.svg +2373 -0
- package/Resources/Icons/MaterialUI/fonts/MaterialIcons-Regular.ttf +0 -0
- package/Resources/Icons/MaterialUI/fonts/MaterialIcons-Regular.woff +0 -0
- package/Resources/Icons/MaterialUI/fonts/MaterialIcons-Regular.woff2 +0 -0
- package/Resources/Icons/fonts/ionicons.eot +0 -0
- package/Resources/Icons/fonts/ionicons.svg +2230 -0
- package/Resources/Icons/fonts/ionicons.ttf +0 -0
- package/Resources/Icons/fonts/ionicons.woff +0 -0
- package/Resources/Icons/ionicons.scss +1489 -0
- package/Resources/Icons/ioniconsExtend.scss +1469 -0
- package/Resources/Icons/v4/fontFace.scss +11 -0
- package/Resources/Icons/v4/fonts/ionicons.eot +0 -0
- package/Resources/Icons/v4/fonts/ionicons.svg +2090 -0
- package/Resources/Icons/v4/fonts/ionicons.ttf +0 -0
- package/Resources/Icons/v4/fonts/ionicons.woff +0 -0
- package/Resources/Icons/v4/fonts/ionicons.woff2 +0 -0
- package/Resources/Icons/v4/icons.scss +15 -0
- package/Resources/Icons/v4/iconsExtend.scss +7 -0
- package/Resources/Images/designer_placeholder_logo.svg +1 -0
- package/Resources/Masks/circle.svg +4 -0
- package/Shared/Components/CustomDialog.js +133 -0
- package/Shared/Components/CustomDialogSelect.js +161 -0
- package/Shared/Components/MainButton.js +81 -0
- package/Shared/ErrorTypes/DeferredError.js +51 -0
- package/Shared/HOCs/ResizeDetect/ResizeDetect.dev.js +60 -0
- package/Shared/HOCs/ResizeDetect/ResizeDetect.js +217 -0
- package/Shared/HOCs/getDisplayName.js +10 -0
- package/Shared/HOCs/withFixedChangeHandler.js +46 -0
- package/Shared/PropTypes/ReactComponent.js +13 -0
- package/Shared/Styles/absoluteCenter.js +17 -0
- package/Utils/Array/isIdentical.js +38 -0
- package/Utils/Async/AsyncManager.js +128 -0
- package/Utils/Async/Deferred.js +145 -0
- package/Utils/Async/ObjectLock.js +38 -0
- package/Utils/Decorators/Observable.js +130 -0
- package/Utils/Dev/HOCs/withFilePicker.js +101 -0
- package/Utils/Dev/isDev.js +21 -0
- package/Utils/Events/pointerEvent.js +199 -0
- package/Utils/Events/preventEventDoubling.js +23 -0
- package/Utils/Function/cached.js +64 -0
- package/Utils/Function/createDebounceManager.js +77 -0
- package/Utils/Function/createSelector.js +62 -0
- package/Utils/Function/memoize.js +46 -0
- package/Utils/Function/sendMessage.js +22 -0
- package/Utils/Helper/createSelectionRangeMemo.js +45 -0
- package/Utils/Immutable/set.js +81 -0
- package/Utils/Math/conversions.js +13 -0
- package/Utils/Math/isPositiveNumber.js +12 -0
- package/Utils/Redux/createActionWithGlobalState.js +23 -0
- package/Utils/Styles/combineMediaQueries.js +24 -0
- package/Utils/Styles/createCheckerBoardBackground.js +22 -0
- package/Utils/Test/CallOrderChecker.js +29 -0
- package/Utils/Test/createStoreProvider.js +33 -0
- package/Utils/Test/formDataToJSON.js +20 -0
- package/Utils/Test/mountWithState.js +40 -0
- package/index.js +8 -0
- package/package.json +22 -103
- package/scripts/cpPublic.js +3 -3
- package/scripts/getDefaultWebpackConfig.js +11 -10
- package/src/App/Error/ProductionErrorPage/Style.scss +1 -1
- package/src/App/Modules/Creator/Components/Option/index.test.js +1 -1
- package/src/App/Modules/Creator/Components/OptionAmount/index.test.js +1 -1
- package/src/App/Modules/Creator/Components/Optiondetail/index.js +7 -3
- package/src/App/Modules/Creator/Components/ProductPart/index.test.js +1 -1
- package/src/App/Modules/Designer/Components/AddGalleryImage/index.story.js +1 -1
- package/src/App/Modules/Designer/Components/ColorPalettes/index.test.jsx +1 -1
- package/src/App/Modules/Designer/Components/DesignAreaControlbox/index.js +21 -4
- package/src/App/Modules/Designer/Components/DesignAreaControlbox/index.test.jsx +1 -1
- package/src/App/Modules/Designer/Components/TextControlbox/index.test.jsx +1 -1
- package/src/App/Modules/Designer/Containers/Designer.js +1 -1
- package/src/App/Modules/Designer/DesignerScreen.js +32 -8
- package/src/App/{Screens/Configurator → Modules/Designer}/DesignerUI.js +42 -26
- package/src/App/Modules/Designer/Layouts/DefaultLayout.js +35 -1
- package/src/App/Modules/Designer/MultilayerComponents/DesignerClickAwayListener.js +18 -0
- package/src/App/Modules/Designer/MultilayerComponents/InlineToolboxPortal.js +54 -0
- package/src/App/Modules/Designer/MultilayerComponents/StandardToolboxPortal.js +38 -0
- package/src/App/Reducers/DesignView/Actions.js +1 -2
- package/src/App/Reducers/DesignView/Reducer.js +2 -10
- package/src/App/Reducers/DesignView/__mocks__/designerViewData.js +0 -1
- package/src/App/Reducers/DesignView/__tests__/Reducer.test.js +0 -22
- package/src/App/Reducers/ImageGallery/Actions.js +1 -1
- package/src/App/Screens/Configurator/Components/CalculationWidget/index.test.jsx +1 -1
- package/src/App/Screens/Configurator/Components/DesignApproval/index.test.jsx +1 -1
- package/src/App/Screens/Configurator/Components/FullScreenView/index.js +3 -2
- package/src/App/Screens/Configurator/Components/FullScreenView/index.test.jsx +1 -1
- package/src/App/Screens/Configurator/Components/PreviewPortal/index.js +7 -3
- package/src/App/Screens/Configurator/Containers/AmountPrice.js +1 -1
- package/src/App/Screens/Configurator/Containers/Confirm.js +1 -1
- package/src/App/Screens/Configurator/Containers/FullScreenView.js +1 -0
- package/src/App/Screens/Configurator/Containers/__tests__/Designer.test.js +1 -1
- package/src/App/Screens/Configurator/Screen.js +4 -2
- package/src/App/Screens/Configurator/__tests__/Screen.test.js +3 -0
- package/src/App/Services/ConfiguratorService.js +25 -4
- package/src/App/Services/InteractionService.js +2 -1
- package/src/App/Services/VisualizationService.js +3 -0
- package/src/App/Services/__tests__/DesignDataService.selectViewForComponent.test.js +0 -53
- package/src/App/Shared/Containers/AlertMessages.js +1 -1
- package/src/App/Shared/Containers/AmountPrice/index.test.js +1 -1
- package/src/App/Shared/Containers/Error.js +1 -1
- package/src/App/Shared/Containers/SaveConfiguration.js +1 -1
- package/src/App/Translations.js +1 -1
- package/src/App/Utils/createMessageInterface.js +10 -0
- package/src/App/configuration.js +3 -0
- package/src/Framework/i18n.js +2 -3
- package/src/Shared/Components/CustomDialog.js +1 -0
- package/babel.config.js +0 -46
- package/public/ConfigurationMessagingDemo.html +0 -55
- package/scripts/cpPath.js +0 -135
- package/scripts/moveLibToPackageRoot.js +0 -40
- package/scripts/rmDir.js +0 -29
- package/scripts/updateLocalPackages.js +0 -68
- package/scripts/utils/process.js +0 -19
- package/tsconfig.json +0 -22
|
@@ -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 =
|
|
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 '
|
|
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
|
|
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
|
};
|
|
@@ -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 '
|
|
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';
|
|
@@ -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 '
|
|
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 '
|
|
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} />);
|
|
@@ -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
|
-
|
|
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"
|
|
220
|
+
<Grid container direction="column" justifyContent="space-between" alignItems="center">
|
|
220
221
|
<PreviewButton
|
|
221
222
|
{...this.props}
|
|
222
223
|
onClick={this.openPreview}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-env jest */
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { mount, render } from 'enzyme';
|
|
4
|
-
import FullScreenView from '
|
|
4
|
+
import FullScreenView from './index';
|
|
5
5
|
|
|
6
6
|
describe('Screens/Configurator/Components/FullScreenView', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
@@ -51,6 +51,9 @@ const styles = theme => ({
|
|
|
51
51
|
},
|
|
52
52
|
visualizationWrapperCanvas: {
|
|
53
53
|
height: '100% ',
|
|
54
|
+
[theme.breakpoints.up('sm')]: {
|
|
55
|
+
height: 'calc(100% - 100px)',
|
|
56
|
+
},
|
|
54
57
|
},
|
|
55
58
|
closePreview: {
|
|
56
59
|
color: theme.palette.primary.darkText,
|
|
@@ -95,6 +98,7 @@ class PreviewPortal extends React.Component {
|
|
|
95
98
|
width: PropTypes.string,
|
|
96
99
|
dialogStyle: PropTypes.string,
|
|
97
100
|
hasItems: PropTypes.bool,
|
|
101
|
+
hasMoreItems: PropTypes.bool,
|
|
98
102
|
alignTarget: PropTypes.shape({ add: PropTypes.func.isRequired, remove: PropTypes.func.isRequired })
|
|
99
103
|
.isRequired,
|
|
100
104
|
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),
|
|
@@ -117,7 +121,7 @@ class PreviewPortal extends React.Component {
|
|
|
117
121
|
};
|
|
118
122
|
|
|
119
123
|
renderPreview() {
|
|
120
|
-
const {
|
|
124
|
+
const { hasMoreItems, closePreviewMode, classes, children, width, dialogStyle } = this.props;
|
|
121
125
|
const portalStyle = dialogStyle
|
|
122
126
|
? classes.fullscreenPortal + ' ' + dialogStyle
|
|
123
127
|
: classes.fullscreenPortal;
|
|
@@ -141,12 +145,12 @@ class PreviewPortal extends React.Component {
|
|
|
141
145
|
<div
|
|
142
146
|
ref={this.wrapperRef}
|
|
143
147
|
className={
|
|
144
|
-
|
|
148
|
+
hasMoreItems ? classes.visualizationWrapperThumbs : classes.visualizationWrapperCanvas
|
|
145
149
|
}
|
|
146
150
|
>
|
|
147
151
|
{children}
|
|
148
152
|
</div>
|
|
149
|
-
{
|
|
153
|
+
{hasMoreItems && <Thumbnails previewOpen={true} />}
|
|
150
154
|
{width !== 'xs' && (
|
|
151
155
|
<AnalyticsWrapper targetId="preview_close">
|
|
152
156
|
<Grid
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import AmountPrice from 'App/Shared/Containers/AmountPrice';
|
|
4
4
|
import ProductVariant from 'App/Shared/Containers/ProductVariant';
|
|
5
|
-
import ConfigurationModeSwitch from '
|
|
5
|
+
import ConfigurationModeSwitch from './ConfigurationModeSwitch';
|
|
6
6
|
import { makeStyles } from '@material-ui/core';
|
|
7
7
|
|
|
8
8
|
export const useStyles = makeStyles(
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import containerConnect from 'Framework/ComponentContainer';
|
|
2
|
-
import Confirm from '../Components/Confirm
|
|
2
|
+
import Confirm from '../Components/Confirm';
|
|
3
3
|
import { hideConfirm } from '../../../Reducers/Confirm/Actions';
|
|
4
4
|
|
|
5
5
|
const mapStateToProps = ({ confirm }) => {
|
|
@@ -21,6 +21,7 @@ const mapStateToProps = state => {
|
|
|
21
21
|
},
|
|
22
22
|
showDesignViewList: getDesignViewLength(state) > 1 && !isAnyDesignAreaSelected(state),
|
|
23
23
|
hasItems: getDesignViewLength(state) > 0,
|
|
24
|
+
hasMoreItems: getDesignViewLength(state) > 1,
|
|
24
25
|
areAllDesignAreasEmpty: areAllDesignAreasEmpty(state.configurator),
|
|
25
26
|
};
|
|
26
27
|
};
|
|
@@ -3,7 +3,7 @@ import mountWithState from 'Utils/Test/mountWithState';
|
|
|
3
3
|
import Designer from 'App/Modules/Designer/Containers/Designer';
|
|
4
4
|
import ServiceLocator from 'App/ServiceLocator';
|
|
5
5
|
|
|
6
|
-
jest.mock('
|
|
6
|
+
jest.mock('App/Modules/Designer/DesignerUI', () => {
|
|
7
7
|
const DefaultDesigner = () => <div />;
|
|
8
8
|
|
|
9
9
|
return {
|
|
@@ -11,7 +11,7 @@ import * as uiActions from 'App/Reducers/UI/Actions';
|
|
|
11
11
|
import Error from '../../Shared/Containers/Error';
|
|
12
12
|
import ErrorPage from '../../Error/ProductionErrorPage';
|
|
13
13
|
import AlertMessages from 'App/Shared/Containers/AlertMessages';
|
|
14
|
-
import LandscapeInformation from '
|
|
14
|
+
import LandscapeInformation from './Components/LandscapeInformation';
|
|
15
15
|
import Confirm from './Containers/Confirm';
|
|
16
16
|
import SaveConfiguration from 'App/Shared/Containers/SaveConfiguration';
|
|
17
17
|
import SendEmail from 'App/Shared/Containers/SendEmail';
|
|
@@ -52,7 +52,7 @@ export const Configurator = props => {
|
|
|
52
52
|
if (imageOnly) {
|
|
53
53
|
Services.visualization.enableDesignAreaInteraction(false);
|
|
54
54
|
} else {
|
|
55
|
-
Services.visualization.
|
|
55
|
+
Services.visualization.initDesignAreaInteraction();
|
|
56
56
|
}
|
|
57
57
|
}, [imageOnly]);
|
|
58
58
|
|
|
@@ -141,6 +141,7 @@ const mapStateToProps = state => {
|
|
|
141
141
|
const vertical = dock ? dock === 'left' : state.device.screen.orientation === 'landscape';
|
|
142
142
|
const showAddToCartButton = state.ui.visibilityMap.addToCartButton;
|
|
143
143
|
const showConfigurationVariantSelection = state.ui.visibilityMap.configurationvariantSelection;
|
|
144
|
+
const visualizationOverlayMode = getConf('visualizationOverlayMode');
|
|
144
145
|
|
|
145
146
|
const configuration = {
|
|
146
147
|
showAddToCartButton: getConf('showAddToCartButton'),
|
|
@@ -164,6 +165,7 @@ const mapStateToProps = state => {
|
|
|
164
165
|
showAddToCartButton,
|
|
165
166
|
showConfigurationVariantSelection,
|
|
166
167
|
configuration,
|
|
168
|
+
visualizationOverlayMode,
|
|
167
169
|
};
|
|
168
170
|
};
|
|
169
171
|
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
import { withGlobalLoader } from '../Reducers/UI/Actions';
|
|
31
31
|
import { getFontMapping } from '../Reducers/Fonts/Selectors';
|
|
32
32
|
import { Services } from '../ServiceLocator';
|
|
33
|
-
import { getConf } from '../configuration';
|
|
33
|
+
import { getConf, SaveTypes } from '../configuration';
|
|
34
34
|
import { selectMultipleOptions, setCalculationEnabled } from '../Reducers/Configurator/Actions';
|
|
35
35
|
import { setCalculationAutoResolveEnabled } from '../Reducers/Configurator/Actions';
|
|
36
36
|
import { skipNextAutoResolve } from '../Reducers/Configurator/Actions';
|
|
@@ -38,7 +38,12 @@ import { getDesignData } from '../Reducers/DesignData/Reducer';
|
|
|
38
38
|
import { getCached } from '../../Utils/Function/cached';
|
|
39
39
|
import { getFirstDataURLFromScreenshotsObj } from '../Modules/Visualization/Utils/getFirstDataURLFromScreenshotsObj';
|
|
40
40
|
import { isPlaceholderObject } from '../Reducers/DesignData/Selectors';
|
|
41
|
-
import createMessageInterface
|
|
41
|
+
import createMessageInterface, {
|
|
42
|
+
LISTENER_SAVE_CONFIGURATION,
|
|
43
|
+
LISTENER_SWITCH_OPTIONS,
|
|
44
|
+
METHOD_ADD_TO_CART,
|
|
45
|
+
METHOD_CONFIGURATION_SAVED_REMOTELY,
|
|
46
|
+
} from '../Utils/createMessageInterface';
|
|
42
47
|
|
|
43
48
|
const getSelectedAmountsBySizes = (item, selectedAmounts) => {
|
|
44
49
|
const itemGroupMap = (rootItem, fn) => {
|
|
@@ -83,7 +88,7 @@ export default class ConfiguratorService extends AbstractConfiguratorService {
|
|
|
83
88
|
const adminMode = getConf('adminMode');
|
|
84
89
|
if (!adminMode) {
|
|
85
90
|
const messageInterface = createMessageInterface();
|
|
86
|
-
messageInterface.addListener(
|
|
91
|
+
messageInterface.addListener(LISTENER_SWITCH_OPTIONS, async event => {
|
|
87
92
|
const optionsJSON = get(event, 'data.options');
|
|
88
93
|
try {
|
|
89
94
|
const optionsToSelect = JSON.parse(optionsJSON);
|
|
@@ -93,6 +98,19 @@ export default class ConfiguratorService extends AbstractConfiguratorService {
|
|
|
93
98
|
console.error('Wrong JSON provided for switch_options:', optionsJSON);
|
|
94
99
|
}
|
|
95
100
|
});
|
|
101
|
+
messageInterface.addListener(LISTENER_SAVE_CONFIGURATION, async event => {
|
|
102
|
+
const save_id = get(event, 'data.save_id');
|
|
103
|
+
const saveType =
|
|
104
|
+
get(event, 'data.save_type') === SaveTypes.CART ? SaveTypes.CART : SaveTypes.USER;
|
|
105
|
+
try {
|
|
106
|
+
const configuration = await this.captureAndSaveConfiguration(saveType);
|
|
107
|
+
const code = get(configuration, 'data.code');
|
|
108
|
+
messageInterface.dispatch({ method: METHOD_CONFIGURATION_SAVED_REMOTELY, save_id, code });
|
|
109
|
+
} catch (e) {
|
|
110
|
+
// eslint-disable-next-line no-console
|
|
111
|
+
console.error('Saving configuration failed, save_id was ', save_id);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
96
114
|
}
|
|
97
115
|
}
|
|
98
116
|
|
|
@@ -725,7 +743,10 @@ export default class ConfiguratorService extends AbstractConfiguratorService {
|
|
|
725
743
|
const appConf = getConf();
|
|
726
744
|
const targetOrigin = get(appConf, 'addToCartPostMessageTargetOrigin', '*');
|
|
727
745
|
|
|
728
|
-
window.parent.postMessage(
|
|
746
|
+
window.parent.postMessage(
|
|
747
|
+
{ method: METHOD_ADD_TO_CART, code: configuration.code },
|
|
748
|
+
targetOrigin
|
|
749
|
+
);
|
|
729
750
|
} else if (addToCartMethod === 'functionCall' && window.parent.addToCart !== undefined) {
|
|
730
751
|
window.parent.addToCart(configuration.code);
|
|
731
752
|
}
|
|
@@ -5,6 +5,7 @@ import Api from '../../Framework/Api';
|
|
|
5
5
|
import { t } from 'Framework/i18n';
|
|
6
6
|
import { getConfiguration } from '../Reducers/Configurator/Selectors';
|
|
7
7
|
import { EventTypes } from '../Constant';
|
|
8
|
+
import { METHOD_CONFIGURATION_SAVED } from '../Utils/createMessageInterface';
|
|
8
9
|
|
|
9
10
|
export default class InteractionService extends AbstractInteractionService {
|
|
10
11
|
constructor() {
|
|
@@ -44,7 +45,7 @@ export default class InteractionService extends AbstractInteractionService {
|
|
|
44
45
|
await configurator.captureAndSaveConfiguration(SaveTypes.USER);
|
|
45
46
|
const { code } = configurator.state.configuration;
|
|
46
47
|
this.postMessageToContainer({
|
|
47
|
-
method:
|
|
48
|
+
method: METHOD_CONFIGURATION_SAVED,
|
|
48
49
|
code,
|
|
49
50
|
});
|
|
50
51
|
} catch (e) {
|
|
@@ -264,6 +264,9 @@ export default class VisualizationService extends AbstractVisualizationService {
|
|
|
264
264
|
const isAdminMode = getConf('adminMode');
|
|
265
265
|
sendMessage(component, 'clearViewIfEmpty', !!isAdminMode);
|
|
266
266
|
|
|
267
|
+
const visualizationOverlayMode = getConf('visualizationOverlayMode');
|
|
268
|
+
sendMessage(component, 'setOverlayMode', !!visualizationOverlayMode);
|
|
269
|
+
|
|
267
270
|
this.observable.dispatch(EventTypes.ComponentChange, { component });
|
|
268
271
|
|
|
269
272
|
return this;
|
|
@@ -178,57 +178,4 @@ describe('DesignDataService.selectViewForComponent', () => {
|
|
|
178
178
|
|
|
179
179
|
expect(srv.selectDesignView).toHaveBeenCalledWith('front_view', { saveLast: false });
|
|
180
180
|
});
|
|
181
|
-
|
|
182
|
-
it('calls selectDesignView with the identifier of lastSelectedDesignView if no creatorView is referenced by the selected component', () => {
|
|
183
|
-
const componentWithNoCreatorView = {
|
|
184
|
-
identifier: 'id1',
|
|
185
|
-
title: 'title1',
|
|
186
|
-
creatorView: null,
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
ServiceLocator.provide(
|
|
190
|
-
new (class StoreService {
|
|
191
|
-
static serviceName = 'StoreService';
|
|
192
|
-
state = {
|
|
193
|
-
designArea: {
|
|
194
|
-
filteredDesignAreas: mockDesignAreas,
|
|
195
|
-
selectedDesignArea: {},
|
|
196
|
-
},
|
|
197
|
-
designView: {
|
|
198
|
-
designViews: [
|
|
199
|
-
{ identifier: 'front_view' },
|
|
200
|
-
{ identifier: 'side_view' },
|
|
201
|
-
{ identifier: 'top_view' },
|
|
202
|
-
],
|
|
203
|
-
selectedDesignView: {
|
|
204
|
-
identifier: 'side_view',
|
|
205
|
-
},
|
|
206
|
-
lastSelectedDesignView: {
|
|
207
|
-
identifier: 'top_view',
|
|
208
|
-
},
|
|
209
|
-
},
|
|
210
|
-
configurator: {
|
|
211
|
-
configuration: {
|
|
212
|
-
optionclassifications: [
|
|
213
|
-
componentWithNoCreatorView,
|
|
214
|
-
{
|
|
215
|
-
identifier: 'id2',
|
|
216
|
-
title: 'title2',
|
|
217
|
-
creatorView: { identifier: 'side_view' },
|
|
218
|
-
},
|
|
219
|
-
],
|
|
220
|
-
},
|
|
221
|
-
},
|
|
222
|
-
};
|
|
223
|
-
dispatch = v => v;
|
|
224
|
-
})()
|
|
225
|
-
);
|
|
226
|
-
const srv = new DesignDataService();
|
|
227
|
-
|
|
228
|
-
srv.selectDesignView = jest.fn();
|
|
229
|
-
|
|
230
|
-
srv.selectViewForComponent(componentWithNoCreatorView);
|
|
231
|
-
|
|
232
|
-
expect(srv.selectDesignView).toHaveBeenCalledWith('top_view', { saveLast: false });
|
|
233
|
-
});
|
|
234
181
|
});
|
|
@@ -2,7 +2,7 @@ import AmountPrice, {
|
|
|
2
2
|
createAmountPropsFromState,
|
|
3
3
|
createPricePropsFromState,
|
|
4
4
|
showProductVariantsForItem,
|
|
5
|
-
} from '
|
|
5
|
+
} from './index';
|
|
6
6
|
import mountWithState from 'Utils/Test/mountWithState';
|
|
7
7
|
import ServiceLocator from 'App/ServiceLocator';
|
|
8
8
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import CircularProgress from '@material-ui/core/CircularProgress/CircularProgress';
|
|
2
2
|
import containerConnect from 'Framework/ComponentContainer';
|
|
3
3
|
import { Services } from 'App/ServiceLocator';
|
|
4
|
-
import SaveConfiguration from '../Components/SaveConfiguration
|
|
4
|
+
import SaveConfiguration from '../Components/SaveConfiguration';
|
|
5
5
|
import { getShareUrl } from '../../Reducers/Configurator/Selectors';
|
|
6
6
|
|
|
7
7
|
const mapStateToProps = ({ ui, configurator }) => ({
|
package/src/App/Translations.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { use } from 'Framework/i18n';
|
|
2
|
-
import { isProduction } from '
|
|
2
|
+
import { isProduction } from './configuration';
|
|
3
3
|
export async function initLanguage(lang) {
|
|
4
4
|
// ensure that the filename always has an underscore and no dash
|
|
5
5
|
const fileKey = lang.replace('-', '_');
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import get from 'lodash/get';
|
|
2
2
|
|
|
3
|
+
export const METHOD_ADD_TO_CART = 'addtocart';
|
|
4
|
+
|
|
5
|
+
export const METHOD_CONFIGURATION_SAVED = 'configurationsaved';
|
|
6
|
+
|
|
7
|
+
export const METHOD_CONFIGURATION_SAVED_REMOTELY = 'configurationsaved_remotely';
|
|
8
|
+
|
|
9
|
+
export const LISTENER_SWITCH_OPTIONS = 'switch_options';
|
|
10
|
+
|
|
11
|
+
export const LISTENER_SAVE_CONFIGURATION = 'save_configuration';
|
|
12
|
+
|
|
3
13
|
/**
|
|
4
14
|
* Helper interface for bi-directional postMessage API
|
|
5
15
|
*/
|