@capillarytech/creatives-library 8.0.263 → 8.0.265
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/assets/Android.png +0 -0
- package/assets/iOS.png +0 -0
- package/constants/unified.js +1 -3
- package/initialReducer.js +0 -2
- package/package.json +1 -1
- package/services/api.js +0 -15
- package/services/tests/api.test.js +0 -34
- package/tests/integration/TemplateCreation/TemplateCreation.integration.test.js +35 -17
- package/tests/integration/TemplateCreation/api-response.js +1 -31
- package/tests/integration/TemplateCreation/msw-handler.js +0 -2
- package/utils/common.js +0 -11
- package/utils/commonUtils.js +5 -28
- package/utils/tests/commonUtil.test.js +0 -224
- package/utils/tests/transformerUtils.test.js +0 -297
- package/utils/transformTemplateConfig.js +10 -0
- package/utils/transformerUtils.js +0 -40
- package/v2Components/CapDeviceContent/index.js +56 -61
- package/v2Components/CapImageUpload/constants.js +0 -2
- package/v2Components/CapImageUpload/index.js +16 -65
- package/v2Components/CapImageUpload/index.scss +1 -4
- package/v2Components/CapImageUpload/messages.js +1 -5
- package/v2Components/CapTagList/index.js +1 -6
- package/v2Components/CapTagListWithInput/index.js +1 -5
- package/v2Components/CapTagListWithInput/messages.js +1 -1
- package/v2Components/CapWhatsappCTA/tests/index.test.js +0 -5
- package/v2Components/ErrorInfoNote/index.js +72 -402
- package/v2Components/ErrorInfoNote/messages.js +6 -32
- package/v2Components/ErrorInfoNote/style.scss +6 -278
- package/v2Components/FormBuilder/tests/index.test.js +4 -13
- package/v2Components/HtmlEditor/HTMLEditor.js +99 -418
- package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +133 -1882
- package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +16 -27
- package/v2Components/HtmlEditor/_htmlEditor.scss +45 -108
- package/v2Components/HtmlEditor/_index.lazy.scss +1 -0
- package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +102 -23
- package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +140 -148
- package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +1 -2
- package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
- package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +1 -9
- package/v2Components/HtmlEditor/components/EditorToolbar/index.js +6 -31
- package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +0 -22
- package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +7 -4
- package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +45 -35
- package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +3 -1
- package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
- package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +6 -7
- package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +10 -7
- package/v2Components/HtmlEditor/components/PreviewPane/index.js +43 -22
- package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
- package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +152 -0
- package/v2Components/HtmlEditor/components/ValidationErrorDisplay/_validationErrorDisplay.scss +0 -18
- package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +31 -36
- package/v2Components/HtmlEditor/components/ValidationPanel/_validationPanel.scss +34 -46
- package/v2Components/HtmlEditor/components/ValidationPanel/index.js +46 -52
- package/v2Components/HtmlEditor/constants.js +20 -45
- package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +16 -373
- package/v2Components/HtmlEditor/hooks/__tests__/useValidation.test.js +16 -351
- package/v2Components/HtmlEditor/hooks/useEditorContent.js +2 -5
- package/v2Components/HtmlEditor/hooks/useInAppContent.js +146 -88
- package/v2Components/HtmlEditor/hooks/useValidation.js +56 -213
- package/v2Components/HtmlEditor/index.js +1 -1
- package/v2Components/HtmlEditor/messages.js +94 -102
- package/v2Components/HtmlEditor/utils/__tests__/htmlValidator.enhanced.test.js +45 -214
- package/v2Components/HtmlEditor/utils/__tests__/validationAdapter.test.js +0 -134
- package/v2Components/HtmlEditor/utils/contentSanitizer.js +41 -40
- package/v2Components/HtmlEditor/utils/htmlValidator.js +72 -71
- package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +124 -158
- package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +25 -23
- package/v2Components/HtmlEditor/utils/validationAdapter.js +41 -66
- package/v2Components/MobilePushPreviewV2/index.js +7 -33
- package/v2Components/TemplatePreview/_templatePreview.scss +24 -55
- package/v2Components/TemplatePreview/index.js +32 -47
- package/v2Components/TemplatePreview/messages.js +0 -4
- package/v2Components/TestAndPreviewSlidebox/_testAndPreviewSlidebox.scss +0 -1
- package/v2Containers/App/constants.js +0 -5
- package/v2Containers/BeeEditor/index.js +90 -172
- package/v2Containers/CreativesContainer/SlideBoxContent.js +53 -184
- package/v2Containers/CreativesContainer/SlideBoxFooter.js +13 -163
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -3
- package/v2Containers/CreativesContainer/constants.js +0 -4
- package/v2Containers/CreativesContainer/index.js +46 -408
- package/v2Containers/CreativesContainer/messages.js +0 -12
- package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +0 -210
- package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +2 -11
- package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +50 -342
- package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +0 -103
- package/v2Containers/Email/actions.js +0 -7
- package/v2Containers/Email/constants.js +1 -5
- package/v2Containers/Email/index.js +36 -237
- package/v2Containers/Email/messages.js +0 -32
- package/v2Containers/Email/reducer.js +1 -12
- package/v2Containers/Email/sagas.js +7 -61
- package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +0 -2
- package/v2Containers/Email/tests/reducer.test.js +0 -46
- package/v2Containers/Email/tests/sagas.test.js +29 -320
- package/v2Containers/EmailWrapper/components/EmailWrapperView.js +21 -211
- package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +74 -40
- package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +67 -2
- package/v2Containers/EmailWrapper/constants.js +0 -2
- package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +77 -629
- package/v2Containers/EmailWrapper/index.js +23 -103
- package/v2Containers/EmailWrapper/messages.js +1 -65
- package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +214 -0
- package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +77 -594
- package/v2Containers/InApp/actions.js +0 -7
- package/v2Containers/InApp/constants.js +4 -20
- package/v2Containers/InApp/index.js +359 -802
- package/v2Containers/InApp/index.scss +3 -4
- package/v2Containers/InApp/messages.js +3 -7
- package/v2Containers/InApp/reducer.js +3 -21
- package/v2Containers/InApp/sagas.js +9 -29
- package/v2Containers/InApp/selectors.js +5 -25
- package/v2Containers/InApp/tests/index.test.js +50 -154
- package/v2Containers/InApp/tests/reducer.test.js +0 -34
- package/v2Containers/InApp/tests/sagas.test.js +9 -61
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +0 -3
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +0 -2
- package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +0 -2
- package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +0 -9
- package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +0 -12
- package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +0 -4
- package/v2Containers/TagList/index.js +19 -62
- package/v2Containers/Templates/ChannelTypeIllustration.js +1 -13
- package/v2Containers/Templates/_templates.scss +1 -265
- package/v2Containers/Templates/actions.js +1 -2
- package/v2Containers/Templates/constants.js +0 -1
- package/v2Containers/Templates/index.js +38 -363
- package/v2Containers/Templates/messages.js +0 -28
- package/v2Containers/Templates/reducer.js +0 -2
- package/v2Containers/Templates/tests/index.test.js +0 -10
- package/v2Containers/TemplatesV2/TemplatesV2.style.js +2 -4
- package/v2Containers/TemplatesV2/index.js +7 -15
- package/v2Containers/TemplatesV2/messages.js +0 -4
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +0 -34
- package/utils/imageUrlUpload.js +0 -141
- package/v2Components/CapImageUrlUpload/constants.js +0 -26
- package/v2Components/CapImageUrlUpload/index.js +0 -365
- package/v2Components/CapImageUrlUpload/index.scss +0 -35
- package/v2Components/CapImageUrlUpload/messages.js +0 -47
- package/v2Components/ErrorInfoNote/constants.js +0 -1
- package/v2Components/HtmlEditor/__tests__/HTMLEditor.apiErrors.test.js +0 -870
- package/v2Components/HtmlEditor/components/ValidationPanel/constants.js +0 -6
- package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +0 -281
- package/v2Components/HtmlEditor/components/ValidationTabs/index.js +0 -295
- package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +0 -51
- package/v2Components/HtmlEditor/utils/validationConstants.js +0 -38
- package/v2Components/MobilePushPreviewV2/constants.js +0 -6
- package/v2Containers/BeePopupEditor/_beePopupEditor.scss +0 -14
- package/v2Containers/BeePopupEditor/constants.js +0 -10
- package/v2Containers/BeePopupEditor/index.js +0 -194
- package/v2Containers/BeePopupEditor/tests/index.test.js +0 -627
- package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +0 -1246
- package/v2Containers/EmailWrapper/components/__tests__/EmailHTMLEditor.test.js +0 -2472
- package/v2Containers/EmailWrapper/components/__tests__/EmailWrapperView.test.js +0 -520
- package/v2Containers/EmailWrapper/tests/useEmailWrapper.edgeCases.test.js +0 -956
- package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +0 -376
- package/v2Containers/InApp/__tests__/sagas.test.js +0 -363
- package/v2Containers/InApp/tests/selectors.test.js +0 -612
- package/v2Containers/InAppWrapper/components/InAppWrapperView.js +0 -151
- package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +0 -267
- package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +0 -23
- package/v2Containers/InAppWrapper/constants.js +0 -16
- package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +0 -473
- package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +0 -198
- package/v2Containers/InAppWrapper/index.js +0 -148
- package/v2Containers/InAppWrapper/messages.js +0 -49
- package/v2Containers/InappAdvance/index.js +0 -1099
- package/v2Containers/InappAdvance/index.scss +0 -10
- package/v2Containers/InappAdvance/tests/index.test.js +0 -448
- package/v2Containers/WebPush/Create/components/BrandIconSection.js +0 -108
- package/v2Containers/WebPush/Create/components/ButtonForm.js +0 -172
- package/v2Containers/WebPush/Create/components/ButtonItem.js +0 -101
- package/v2Containers/WebPush/Create/components/ButtonList.js +0 -145
- package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +0 -164
- package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +0 -463
- package/v2Containers/WebPush/Create/components/FormActions.js +0 -54
- package/v2Containers/WebPush/Create/components/FormActions.test.js +0 -163
- package/v2Containers/WebPush/Create/components/MediaSection.js +0 -142
- package/v2Containers/WebPush/Create/components/MediaSection.test.js +0 -341
- package/v2Containers/WebPush/Create/components/MessageSection.js +0 -103
- package/v2Containers/WebPush/Create/components/MessageSection.test.js +0 -268
- package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +0 -87
- package/v2Containers/WebPush/Create/components/NotificationTitleSection.test.js +0 -210
- package/v2Containers/WebPush/Create/components/TemplateNameSection.js +0 -54
- package/v2Containers/WebPush/Create/components/TemplateNameSection.test.js +0 -143
- package/v2Containers/WebPush/Create/components/__snapshots__/ButtonsLinksSection.test.js.snap +0 -86
- package/v2Containers/WebPush/Create/components/__snapshots__/FormActions.test.js.snap +0 -16
- package/v2Containers/WebPush/Create/components/__snapshots__/MediaSection.test.js.snap +0 -41
- package/v2Containers/WebPush/Create/components/__snapshots__/MessageSection.test.js.snap +0 -54
- package/v2Containers/WebPush/Create/components/__snapshots__/NotificationTitleSection.test.js.snap +0 -37
- package/v2Containers/WebPush/Create/components/__snapshots__/TemplateNameSection.test.js.snap +0 -21
- package/v2Containers/WebPush/Create/components/_buttons.scss +0 -246
- package/v2Containers/WebPush/Create/components/tests/ButtonForm.test.js +0 -554
- package/v2Containers/WebPush/Create/components/tests/ButtonItem.test.js +0 -607
- package/v2Containers/WebPush/Create/components/tests/ButtonList.test.js +0 -633
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonForm.test.js.snap +0 -666
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonItem.test.js.snap +0 -74
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonList.test.js.snap +0 -78
- package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +0 -138
- package/v2Containers/WebPush/Create/hooks/useButtonManagement.test.js +0 -406
- package/v2Containers/WebPush/Create/hooks/useCharacterCount.js +0 -30
- package/v2Containers/WebPush/Create/hooks/useCharacterCount.test.js +0 -151
- package/v2Containers/WebPush/Create/hooks/useImageUpload.js +0 -104
- package/v2Containers/WebPush/Create/hooks/useImageUpload.test.js +0 -538
- package/v2Containers/WebPush/Create/hooks/useTagManagement.js +0 -122
- package/v2Containers/WebPush/Create/hooks/useTagManagement.test.js +0 -633
- package/v2Containers/WebPush/Create/index.js +0 -1148
- package/v2Containers/WebPush/Create/index.scss +0 -134
- package/v2Containers/WebPush/Create/messages.js +0 -211
- package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +0 -228
- package/v2Containers/WebPush/Create/preview/NotificationContainer.js +0 -294
- package/v2Containers/WebPush/Create/preview/PreviewContent.js +0 -90
- package/v2Containers/WebPush/Create/preview/PreviewControls.js +0 -305
- package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +0 -25
- package/v2Containers/WebPush/Create/preview/WebPushPreview.js +0 -155
- package/v2Containers/WebPush/Create/preview/assets/Light.svg +0 -53
- package/v2Containers/WebPush/Create/preview/assets/Top.svg +0 -5
- package/v2Containers/WebPush/Create/preview/assets/android-arrow-down.svg +0 -9
- package/v2Containers/WebPush/Create/preview/assets/android-arrow-up.svg +0 -9
- package/v2Containers/WebPush/Create/preview/assets/chrome-icon.png +0 -0
- package/v2Containers/WebPush/Create/preview/assets/edge-icon.png +0 -0
- package/v2Containers/WebPush/Create/preview/assets/firefox-icon.svg +0 -106
- package/v2Containers/WebPush/Create/preview/assets/iOS.svg +0 -26
- package/v2Containers/WebPush/Create/preview/assets/macos-arrow-down-icon.svg +0 -9
- package/v2Containers/WebPush/Create/preview/assets/macos-triple-dot-icon.svg +0 -9
- package/v2Containers/WebPush/Create/preview/assets/opera-icon.svg +0 -18
- package/v2Containers/WebPush/Create/preview/assets/safari-icon.svg +0 -29
- package/v2Containers/WebPush/Create/preview/assets/windows-close-icon.svg +0 -9
- package/v2Containers/WebPush/Create/preview/assets/windows-triple-dot-icon.svg +0 -9
- package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +0 -51
- package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +0 -145
- package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +0 -45
- package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +0 -68
- package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +0 -61
- package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +0 -99
- package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +0 -733
- package/v2Containers/WebPush/Create/preview/components/tests/WindowsChromeExpanded.test.js +0 -571
- package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +0 -85
- package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/WindowsChromeExpanded.test.js.snap +0 -81
- package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +0 -50
- package/v2Containers/WebPush/Create/preview/constants.js +0 -637
- package/v2Containers/WebPush/Create/preview/notification-container.scss +0 -79
- package/v2Containers/WebPush/Create/preview/preview.scss +0 -358
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +0 -370
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-edge.scss +0 -12
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-firefox.scss +0 -12
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-opera.scss +0 -12
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-chrome.scss +0 -47
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-edge.scss +0 -11
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-firefox.scss +0 -11
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-opera.scss +0 -11
- package/v2Containers/WebPush/Create/preview/styles/_base.scss +0 -207
- package/v2Containers/WebPush/Create/preview/styles/_ios.scss +0 -153
- package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +0 -107
- package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +0 -101
- package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +0 -229
- package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +0 -909
- package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +0 -1081
- package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +0 -723
- package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +0 -1327
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +0 -131
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +0 -112
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/PreviewControls.test.js.snap +0 -144
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/WebPushPreview.test.js.snap +0 -129
- package/v2Containers/WebPush/Create/utils/payloadBuilder.js +0 -96
- package/v2Containers/WebPush/Create/utils/payloadBuilder.test.js +0 -396
- package/v2Containers/WebPush/Create/utils/previewUtils.js +0 -89
- package/v2Containers/WebPush/Create/utils/urlValidation.js +0 -115
- package/v2Containers/WebPush/Create/utils/urlValidation.test.js +0 -449
- package/v2Containers/WebPush/Create/utils/validation.js +0 -75
- package/v2Containers/WebPush/Create/utils/validation.test.js +0 -283
- package/v2Containers/WebPush/actions.js +0 -60
- package/v2Containers/WebPush/constants.js +0 -132
- package/v2Containers/WebPush/index.js +0 -2
- package/v2Containers/WebPush/reducer.js +0 -104
- package/v2Containers/WebPush/sagas.js +0 -119
- package/v2Containers/WebPush/selectors.js +0 -65
- package/v2Containers/WebPush/tests/reducer.test.js +0 -863
- package/v2Containers/WebPush/tests/sagas.test.js +0 -566
- package/v2Containers/WebPush/tests/selectors.test.js +0 -960
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { FormattedMessage } from 'react-intl';
|
|
4
4
|
import styled from 'styled-components';
|
|
@@ -11,38 +11,25 @@ import CapSpin from '@capillarytech/cap-ui-library/CapSpin';
|
|
|
11
11
|
import CapButton from '@capillarytech/cap-ui-library/CapButton';
|
|
12
12
|
import CapError from '@capillarytech/cap-ui-library/CapError';
|
|
13
13
|
import ComponentWithLabelHOC from '@capillarytech/cap-ui-library/assets/HOCs/ComponentWithLabelHOC';
|
|
14
|
-
import
|
|
15
|
-
import { EmailWithoutSaga } from '../../Email';
|
|
14
|
+
import Email from '../../Email';
|
|
16
15
|
import CmsTemplatesComponent from '../../../v2Components/CmsTemplatesComponent';
|
|
17
|
-
import EmailHTMLEditor from './EmailHTMLEditor';
|
|
18
|
-
import TestAndPreviewSlidebox from '../../../v2Components/TestAndPreviewSlidebox';
|
|
19
|
-
import { EMAIL } from '../../CreativesContainer/constants';
|
|
20
16
|
import messages from '../messages';
|
|
21
17
|
import { EMAIL_CREATE_MODES, STEPS } from '../constants';
|
|
22
|
-
import { hasSupportCKEditor } from '../../../utils/common';
|
|
23
18
|
|
|
24
19
|
const CapRadioCardWithLabel = ComponentWithLabelHOC(CapRadioCard);
|
|
25
20
|
|
|
26
21
|
const CardContainer = styled.div`
|
|
27
22
|
margin-top: 16px;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
.icon-container {
|
|
33
|
-
background-color: ${CAP_COLOR_06};
|
|
34
|
-
.anticon,
|
|
35
|
-
.cap-icon {
|
|
36
|
-
color: ${CAP_WHITE};
|
|
37
|
-
}
|
|
38
|
-
}
|
|
23
|
+
.ant-radio-group{
|
|
24
|
+
.ant-radio-button-wrapper{
|
|
25
|
+
&:first-child{
|
|
26
|
+
margin-left: unset;
|
|
39
27
|
}
|
|
40
28
|
}
|
|
41
29
|
}
|
|
42
30
|
`;
|
|
43
31
|
|
|
44
|
-
|
|
45
|
-
// Mode selection component
|
|
32
|
+
// Mode selection component that handles the creation mode selection UI
|
|
46
33
|
const ModeSelectionUI = ({
|
|
47
34
|
isFullMode,
|
|
48
35
|
templateName,
|
|
@@ -64,21 +51,20 @@ const ModeSelectionUI = ({
|
|
|
64
51
|
value={templateName}
|
|
65
52
|
labelPosition="top"
|
|
66
53
|
size="default"
|
|
67
|
-
style={{ width: '68%'
|
|
54
|
+
style={{ width: '68%'}}
|
|
68
55
|
/>
|
|
69
56
|
)}
|
|
70
57
|
<CardContainer>
|
|
71
58
|
<CapRadioCardWithLabel
|
|
72
|
-
style={{ marginLeft: '-6px'}}
|
|
73
59
|
panes={modes}
|
|
74
60
|
onChange={onChange}
|
|
75
61
|
selected={emailCreateMode}
|
|
76
|
-
label={<FormattedMessage {...messages.
|
|
62
|
+
label={<FormattedMessage {...messages.createMode} />}
|
|
77
63
|
/>
|
|
78
64
|
</CardContainer>
|
|
79
65
|
<>
|
|
80
66
|
{emailCreateMode === EMAIL_CREATE_MODES.UPLOAD && (
|
|
81
|
-
<div>
|
|
67
|
+
<div style={{ marginLeft: '8px' }}>
|
|
82
68
|
<CapUploader onChange={useFileUpload} accept=".zip, .html, .htm" showUploadList={false}>
|
|
83
69
|
{(isFullMode && isTemplateNameEmpty) && (
|
|
84
70
|
<CapError type="error">
|
|
@@ -112,36 +98,25 @@ ModeSelectionUI.propTypes = {
|
|
|
112
98
|
uploadButtonLabel: PropTypes.node.isRequired,
|
|
113
99
|
};
|
|
114
100
|
|
|
115
|
-
// Content creation component
|
|
101
|
+
// Content creation component that handles the email or template selection UI
|
|
116
102
|
const ContentCreationUI = ({
|
|
117
103
|
isShowEmailCreate,
|
|
118
104
|
emailProps,
|
|
119
105
|
cmsTemplatesProps,
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
) : (
|
|
130
|
-
<EmailWithoutSaga {...emailProps} />
|
|
131
|
-
)
|
|
132
|
-
) : (
|
|
133
|
-
<CmsTemplatesComponent {...cmsTemplatesProps} />
|
|
134
|
-
)}
|
|
135
|
-
</>
|
|
136
|
-
);
|
|
137
|
-
};
|
|
106
|
+
}) => (
|
|
107
|
+
<>
|
|
108
|
+
{isShowEmailCreate ? (
|
|
109
|
+
<Email {...emailProps} />
|
|
110
|
+
) : (
|
|
111
|
+
<CmsTemplatesComponent {...cmsTemplatesProps} />
|
|
112
|
+
)}
|
|
113
|
+
</>
|
|
114
|
+
);
|
|
138
115
|
|
|
139
116
|
ContentCreationUI.propTypes = {
|
|
140
117
|
isShowEmailCreate: PropTypes.bool.isRequired,
|
|
141
118
|
emailProps: PropTypes.object.isRequired,
|
|
142
119
|
cmsTemplatesProps: PropTypes.object.isRequired,
|
|
143
|
-
isHTMLEditorMode: PropTypes.bool,
|
|
144
|
-
htmlEditorProps: PropTypes.object,
|
|
145
120
|
};
|
|
146
121
|
|
|
147
122
|
// Main EmailWrapper presentational component
|
|
@@ -162,136 +137,9 @@ const EmailWrapperView = ({
|
|
|
162
137
|
isShowEmailCreate,
|
|
163
138
|
emailProps,
|
|
164
139
|
cmsTemplatesProps,
|
|
165
|
-
metaEntities,
|
|
166
|
-
loadingTags,
|
|
167
|
-
injectedTags,
|
|
168
|
-
globalActions,
|
|
169
|
-
supportedTags,
|
|
170
|
-
getDefaultTags,
|
|
171
|
-
location,
|
|
172
|
-
currentOrgDetails,
|
|
173
|
-
forwardedTags,
|
|
174
|
-
selectedOfferDetails,
|
|
175
|
-
eventContextTags,
|
|
176
|
-
getFormdata,
|
|
177
|
-
isGetFormData,
|
|
178
|
-
getLiquidTags,
|
|
179
|
-
showLiquidErrorInFooter,
|
|
180
|
-
onValidationFail,
|
|
181
|
-
emailActions,
|
|
182
|
-
Email,
|
|
183
|
-
templateData: templateDataProp,
|
|
184
|
-
params,
|
|
185
|
-
fetchingLiquidTags,
|
|
186
|
-
createTemplateInProgress,
|
|
187
|
-
fetchingCmsData,
|
|
188
|
-
setIsLoadingContent,
|
|
189
|
-
showTestAndPreviewSlidebox,
|
|
190
|
-
handleCloseTestAndPreview,
|
|
191
|
-
showTemplateName,
|
|
192
|
-
onHtmlEditorValidationStateChange,
|
|
193
|
-
moduleType,
|
|
194
140
|
}) => {
|
|
195
|
-
const htmlEditorRef = useRef(null);
|
|
196
|
-
const supportCKEditor = hasSupportCKEditor();
|
|
197
|
-
const hasParamsIdForEditor = params?.id || location?.query?.id || location?.params?.id || location?.pathname?.includes('/edit/');
|
|
198
|
-
const isEditModeForEditor = hasParamsIdForEditor;
|
|
199
|
-
const isBEEFromProps = emailProps?.editor === 'BEE' && emailProps?.selectedEditorMode === null;
|
|
200
|
-
const isDragDropFromCreateMode = emailCreateMode === EMAIL_CREATE_MODES.DRAG_DROP;
|
|
201
|
-
const isExplicitlyBEEEditor = isBEEFromProps || isDragDropFromCreateMode;
|
|
202
|
-
let isHTMLEditorMode = false;
|
|
203
141
|
|
|
204
|
-
|
|
205
|
-
isHTMLEditorMode = false; // Legacy flow: use Email component
|
|
206
|
-
} else if (isEditModeForEditor) {
|
|
207
|
-
isHTMLEditorMode = !isExplicitlyBEEEditor;
|
|
208
|
-
} else {
|
|
209
|
-
if (isExplicitlyBEEEditor || isBEEFromProps || isDragDropFromCreateMode) {
|
|
210
|
-
isHTMLEditorMode = false;
|
|
211
|
-
} else {
|
|
212
|
-
isHTMLEditorMode = emailProps?.selectedEditorMode === EMAIL_CREATE_MODES.HTML_EDITOR ||
|
|
213
|
-
emailCreateMode === EMAIL_CREATE_MODES.HTML_EDITOR;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
const isShowTemplateSelection = step === STEPS.MODE_SELECTION;
|
|
218
|
-
|
|
219
|
-
// Create onFormDataChange callback for template name updates (similar to Email component)
|
|
220
|
-
// This allows CreativesContainer to update the template name when user clicks "Edit name"
|
|
221
|
-
// When user edits the name in CreativesContainer header, it calls this callback
|
|
222
|
-
// which updates the template name in EmailWrapper, and then CreativesContainer
|
|
223
|
-
// will call showTemplateName again with the updated formData
|
|
224
|
-
const handleFormDataChange = useCallback((updatedFormData) => {
|
|
225
|
-
const newTemplateName = updatedFormData?.['template-name'] || templateName;
|
|
226
|
-
if (newTemplateName !== templateName && onTemplateNameChange) {
|
|
227
|
-
// Update template name in parent (useEmailWrapper hook)
|
|
228
|
-
onTemplateNameChange({ target: { value: newTemplateName } });
|
|
229
|
-
}
|
|
230
|
-
// Note: CreativesContainer will call showTemplateName again after this callback
|
|
231
|
-
// (it stores the callback in templateContainerDetails and calls it after state updates)
|
|
232
|
-
}, [templateName, onTemplateNameChange]);
|
|
233
|
-
|
|
234
|
-
const htmlEditorProps = isHTMLEditorMode ? {
|
|
235
|
-
// Location and params
|
|
236
|
-
location,
|
|
237
|
-
params,
|
|
238
|
-
// Tag-related props
|
|
239
|
-
getDefaultTags,
|
|
240
|
-
supportedTags,
|
|
241
|
-
metaEntities,
|
|
242
|
-
injectedTags,
|
|
243
|
-
globalActions,
|
|
244
|
-
loadingTags,
|
|
245
|
-
eventContextTags,
|
|
246
|
-
forwardedTags,
|
|
247
|
-
selectedOfferDetails,
|
|
248
|
-
currentOrgDetails,
|
|
249
|
-
// Email Redux state and actions
|
|
250
|
-
Email,
|
|
251
|
-
emailActions,
|
|
252
|
-
// Full mode props
|
|
253
|
-
isFullMode,
|
|
254
|
-
templateName,
|
|
255
|
-
isGetFormData,
|
|
256
|
-
getFormdata,
|
|
257
|
-
// Library mode props
|
|
258
|
-
templateData: templateDataProp,
|
|
259
|
-
// Uploaded content from zip file
|
|
260
|
-
EmailLayout,
|
|
261
|
-
// Liquid validation
|
|
262
|
-
getLiquidTags,
|
|
263
|
-
showLiquidErrorInFooter,
|
|
264
|
-
// Validation state callback
|
|
265
|
-
onHtmlEditorValidationStateChange,
|
|
266
|
-
onValidationFail,
|
|
267
|
-
// Template name
|
|
268
|
-
showTemplateName,
|
|
269
|
-
onFormDataChange: handleFormDataChange,
|
|
270
|
-
// Module type for unsubscribe tag validation
|
|
271
|
-
moduleType,
|
|
272
|
-
// Loading states
|
|
273
|
-
fetchingLiquidTags: fetchingLiquidTags || false,
|
|
274
|
-
createTemplateInProgress: createTemplateInProgress || false,
|
|
275
|
-
fetchingCmsData: fetchingCmsData || false,
|
|
276
|
-
// Parent loading control
|
|
277
|
-
setIsLoadingContent,
|
|
278
|
-
ref: htmlEditorRef,
|
|
279
|
-
} : {};
|
|
280
|
-
|
|
281
|
-
// Get formData for TestAndPreviewSlidebox when needed
|
|
282
|
-
const getFormDataForPreview = () => {
|
|
283
|
-
if (htmlEditorRef.current && htmlEditorRef.current.getFormDataForPreview) {
|
|
284
|
-
return htmlEditorRef.current.getFormDataForPreview();
|
|
285
|
-
}
|
|
286
|
-
return {};
|
|
287
|
-
};
|
|
288
|
-
|
|
289
|
-
const getContentForPreview = () => {
|
|
290
|
-
if (htmlEditorRef.current && htmlEditorRef.current.getContentForPreview) {
|
|
291
|
-
return htmlEditorRef.current.getContentForPreview();
|
|
292
|
-
}
|
|
293
|
-
return '';
|
|
294
|
-
};
|
|
142
|
+
const isShowTemplateSelection = step === STEPS.MODE_SELECTION || (step === STEPS.TEMPLATE_SELECTION && emailCreateMode === EMAIL_CREATE_MODES.UPLOAD);
|
|
295
143
|
|
|
296
144
|
return (
|
|
297
145
|
<>
|
|
@@ -315,22 +163,9 @@ const EmailWrapperView = ({
|
|
|
315
163
|
isShowEmailCreate={isShowEmailCreate}
|
|
316
164
|
emailProps={emailProps}
|
|
317
165
|
cmsTemplatesProps={cmsTemplatesProps}
|
|
318
|
-
isHTMLEditorMode={isHTMLEditorMode}
|
|
319
|
-
htmlEditorProps={htmlEditorProps}
|
|
320
166
|
/>
|
|
321
167
|
)}
|
|
322
168
|
</CapSpin>
|
|
323
|
-
{/* Render TestAndPreviewSlidebox for HTML Editor (similar to legacy Email component) */}
|
|
324
|
-
{isHTMLEditorMode && showTestAndPreviewSlidebox && (
|
|
325
|
-
<TestAndPreviewSlidebox
|
|
326
|
-
show={showTestAndPreviewSlidebox}
|
|
327
|
-
onClose={handleCloseTestAndPreview}
|
|
328
|
-
formData={getFormDataForPreview()}
|
|
329
|
-
content={getContentForPreview()}
|
|
330
|
-
currentChannel={EMAIL}
|
|
331
|
-
currentTab={1}
|
|
332
|
-
/>
|
|
333
|
-
)}
|
|
334
169
|
</>
|
|
335
170
|
);
|
|
336
171
|
};
|
|
@@ -340,10 +175,6 @@ EmailWrapperView.propTypes = {
|
|
|
340
175
|
emailCreateMode: PropTypes.string,
|
|
341
176
|
step: PropTypes.string,
|
|
342
177
|
isFullMode: PropTypes.bool,
|
|
343
|
-
getFormdata: PropTypes.func,
|
|
344
|
-
isGetFormData: PropTypes.bool,
|
|
345
|
-
getLiquidTags: PropTypes.func,
|
|
346
|
-
showLiquidErrorInFooter: PropTypes.func,
|
|
347
178
|
templateName: PropTypes.string,
|
|
348
179
|
onTemplateNameChange: PropTypes.func.isRequired,
|
|
349
180
|
isTemplateNameEmpty: PropTypes.bool,
|
|
@@ -356,27 +187,6 @@ EmailWrapperView.propTypes = {
|
|
|
356
187
|
isShowEmailCreate: PropTypes.bool.isRequired,
|
|
357
188
|
emailProps: PropTypes.object.isRequired,
|
|
358
189
|
cmsTemplatesProps: PropTypes.object.isRequired,
|
|
359
|
-
metaEntities: PropTypes.object,
|
|
360
|
-
loadingTags: PropTypes.bool,
|
|
361
|
-
injectedTags: PropTypes.object,
|
|
362
|
-
globalActions: PropTypes.object,
|
|
363
|
-
supportedTags: PropTypes.array,
|
|
364
|
-
getDefaultTags: PropTypes.string,
|
|
365
|
-
location: PropTypes.object,
|
|
366
|
-
currentOrgDetails: PropTypes.object,
|
|
367
|
-
forwardedTags: PropTypes.object,
|
|
368
|
-
selectedOfferDetails: PropTypes.array,
|
|
369
|
-
eventContextTags: PropTypes.array,
|
|
370
|
-
emailActions: PropTypes.object,
|
|
371
|
-
Email: PropTypes.object,
|
|
372
|
-
templateData: PropTypes.object,
|
|
373
|
-
params: PropTypes.object,
|
|
374
|
-
fetchingLiquidTags: PropTypes.bool,
|
|
375
|
-
createTemplateInProgress: PropTypes.bool,
|
|
376
|
-
fetchingCmsData: PropTypes.bool,
|
|
377
|
-
setIsLoadingContent: PropTypes.func,
|
|
378
|
-
showTestAndPreviewSlidebox: PropTypes.bool,
|
|
379
|
-
handleCloseTestAndPreview: PropTypes.func,
|
|
380
190
|
};
|
|
381
191
|
|
|
382
192
|
export default EmailWrapperView;
|
|
@@ -24,20 +24,24 @@ const HTMLEditorTesting = () => {
|
|
|
24
24
|
// Show/Hide editor
|
|
25
25
|
show: () => {
|
|
26
26
|
setIsVisible(true);
|
|
27
|
+
console.log('✅ HTMLEditor test mode activated');
|
|
27
28
|
},
|
|
28
29
|
|
|
29
30
|
hide: () => {
|
|
30
31
|
setIsVisible(false);
|
|
32
|
+
console.log('✅ HTMLEditor test mode deactivated');
|
|
31
33
|
},
|
|
32
34
|
|
|
33
35
|
toggle: () => {
|
|
34
|
-
setIsVisible(
|
|
36
|
+
setIsVisible(prev => !prev);
|
|
37
|
+
console.log(`✅ HTMLEditor test mode ${!isVisible ? 'activated' : 'deactivated'}`);
|
|
35
38
|
},
|
|
36
39
|
|
|
37
40
|
// Variant control
|
|
38
41
|
setVariant: (newVariant) => {
|
|
39
42
|
if (['email', 'inapp'].includes(newVariant)) {
|
|
40
43
|
setVariant(newVariant);
|
|
44
|
+
console.log(`✅ Variant set to: ${newVariant}`);
|
|
41
45
|
} else {
|
|
42
46
|
console.error('❌ Invalid variant. Use: "email" or "inapp"');
|
|
43
47
|
}
|
|
@@ -48,6 +52,7 @@ const HTMLEditorTesting = () => {
|
|
|
48
52
|
const validLayouts = Object.values(LAYOUT_TYPES);
|
|
49
53
|
if (validLayouts.includes(layout)) {
|
|
50
54
|
setLayoutType(layout);
|
|
55
|
+
console.log(`✅ Layout set to: ${layout}`);
|
|
51
56
|
} else {
|
|
52
57
|
console.error(`❌ Invalid layout. Use: ${validLayouts.join(', ')}`);
|
|
53
58
|
}
|
|
@@ -56,22 +61,58 @@ const HTMLEditorTesting = () => {
|
|
|
56
61
|
// Content control
|
|
57
62
|
setContent: (newContent) => {
|
|
58
63
|
setContent(newContent);
|
|
64
|
+
console.log('✅ Content updated');
|
|
59
65
|
},
|
|
60
66
|
|
|
61
67
|
getContent: () => {
|
|
68
|
+
console.log('Current content:', content);
|
|
62
69
|
return content;
|
|
63
70
|
},
|
|
64
71
|
|
|
65
72
|
// Status
|
|
66
73
|
status: () => {
|
|
74
|
+
console.log('📊 HTMLEditor Test Status:');
|
|
75
|
+
console.log(` Visible: ${isVisible}`);
|
|
76
|
+
console.log(` Variant: ${variant}`);
|
|
77
|
+
console.log(` Layout: ${layoutType}`);
|
|
78
|
+
console.log(` Content size: ${content.length} chars`);
|
|
67
79
|
},
|
|
68
80
|
|
|
69
81
|
// Help
|
|
70
82
|
help: () => {
|
|
71
|
-
|
|
83
|
+
console.log(`
|
|
84
|
+
🚀 HTMLEditor Testing Console Commands:
|
|
85
|
+
|
|
86
|
+
📱 Basic Controls:
|
|
87
|
+
htmlEditorTest.show() - Show the editor
|
|
88
|
+
htmlEditorTest.hide() - Hide the editor
|
|
89
|
+
htmlEditorTest.toggle() - Toggle editor visibility
|
|
90
|
+
|
|
91
|
+
⚙️ Configuration:
|
|
92
|
+
htmlEditorTest.setVariant('email') - Set to email variant
|
|
93
|
+
htmlEditorTest.setVariant('inapp') - Set to inapp variant
|
|
94
|
+
htmlEditorTest.setLayout('POPUP') - Set layout (inapp only)
|
|
95
|
+
- Valid: POPUP, HEADER, FOOTER, FULLSCREEN
|
|
96
|
+
|
|
97
|
+
📝 Content:
|
|
98
|
+
htmlEditorTest.setContent('<h1>Test</h1>') - Set editor content
|
|
99
|
+
htmlEditorTest.getContent() - Get current content
|
|
100
|
+
|
|
101
|
+
📊 Status:
|
|
102
|
+
htmlEditorTest.status() - Show current status
|
|
103
|
+
htmlEditorTest.help() - Show this help
|
|
104
|
+
|
|
105
|
+
💡 Example Usage:
|
|
106
|
+
htmlEditorTest.show()
|
|
107
|
+
htmlEditorTest.setVariant('inapp')
|
|
108
|
+
htmlEditorTest.setLayout('HEADER') // Top banner
|
|
109
|
+
htmlEditorTest.setLayout('FOOTER') // Bottom banner
|
|
110
|
+
`);
|
|
111
|
+
}
|
|
72
112
|
};
|
|
73
113
|
|
|
74
114
|
// Show help on first load
|
|
115
|
+
console.log('🚀 HTMLEditor Testing Ready! Type htmlEditorTest.help() for commands');
|
|
75
116
|
|
|
76
117
|
// Cleanup on unmount
|
|
77
118
|
return () => {
|
|
@@ -87,40 +128,32 @@ const HTMLEditorTesting = () => {
|
|
|
87
128
|
}
|
|
88
129
|
|
|
89
130
|
return (
|
|
90
|
-
<div
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
131
|
+
<div style={{
|
|
132
|
+
position: 'fixed',
|
|
133
|
+
top: 0,
|
|
134
|
+
left: 0,
|
|
135
|
+
right: 0,
|
|
136
|
+
bottom: 0,
|
|
137
|
+
backgroundColor: 'rgba(0, 0, 0, 0.8)',
|
|
138
|
+
zIndex: 9999,
|
|
139
|
+
display: 'flex',
|
|
140
|
+
flexDirection: 'column',
|
|
141
|
+
padding: '20px'
|
|
142
|
+
}}>
|
|
143
|
+
{/* Header */}
|
|
144
|
+
<div style={{
|
|
145
|
+
backgroundColor: '#fff',
|
|
146
|
+
padding: '10px 20px',
|
|
147
|
+
borderRadius: '8px 8px 0 0',
|
|
99
148
|
display: 'flex',
|
|
100
|
-
|
|
101
|
-
|
|
149
|
+
justifyContent: 'space-between',
|
|
150
|
+
alignItems: 'center',
|
|
151
|
+
borderBottom: '1px solid #ddd'
|
|
102
152
|
}}>
|
|
103
|
-
{/* Header */}
|
|
104
|
-
<div
|
|
105
|
-
style={{
|
|
106
|
-
backgroundColor: '#fff',
|
|
107
|
-
padding: '10px 20px',
|
|
108
|
-
borderRadius: '8px 8px 0 0',
|
|
109
|
-
display: 'flex',
|
|
110
|
-
justifyContent: 'space-between',
|
|
111
|
-
alignItems: 'center',
|
|
112
|
-
borderBottom: '1px solid #ddd',
|
|
113
|
-
}}>
|
|
114
153
|
<div>
|
|
115
154
|
<strong>HTMLEditor Testing Mode</strong>
|
|
116
155
|
<span style={{ marginLeft: '20px', color: '#666' }}>
|
|
117
|
-
Variant:
|
|
118
|
-
{' '}
|
|
119
|
-
{variant}
|
|
120
|
-
{' '}
|
|
121
|
-
| Layout:
|
|
122
|
-
{' '}
|
|
123
|
-
{layoutType}
|
|
156
|
+
Variant: {variant} | Layout: {layoutType}
|
|
124
157
|
</span>
|
|
125
158
|
</div>
|
|
126
159
|
<button
|
|
@@ -131,7 +164,7 @@ const HTMLEditorTesting = () => {
|
|
|
131
164
|
border: 'none',
|
|
132
165
|
padding: '5px 15px',
|
|
133
166
|
borderRadius: '4px',
|
|
134
|
-
cursor: 'pointer'
|
|
167
|
+
cursor: 'pointer'
|
|
135
168
|
}}
|
|
136
169
|
>
|
|
137
170
|
Close
|
|
@@ -139,13 +172,12 @@ const HTMLEditorTesting = () => {
|
|
|
139
172
|
</div>
|
|
140
173
|
|
|
141
174
|
{/* Editor Container */}
|
|
142
|
-
<div
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}}>
|
|
175
|
+
<div style={{
|
|
176
|
+
flex: 1,
|
|
177
|
+
backgroundColor: '#fff',
|
|
178
|
+
borderRadius: '0 0 8px 8px',
|
|
179
|
+
overflow: 'hidden'
|
|
180
|
+
}}>
|
|
149
181
|
<IntlProvider locale="en" messages={{}}>
|
|
150
182
|
<HTMLEditor
|
|
151
183
|
variant={variant}
|
|
@@ -153,8 +185,10 @@ const HTMLEditorTesting = () => {
|
|
|
153
185
|
initialContent={content}
|
|
154
186
|
onContentChange={(newContent) => {
|
|
155
187
|
setContent(newContent);
|
|
188
|
+
console.log('📝 Content changed:', newContent.substring(0, 100) + '...');
|
|
156
189
|
}}
|
|
157
|
-
onSave={() => {
|
|
190
|
+
onSave={(savedContent) => {
|
|
191
|
+
console.log('💾 Content saved:', savedContent);
|
|
158
192
|
}}
|
|
159
193
|
/>
|
|
160
194
|
</IntlProvider>
|
|
@@ -47,8 +47,8 @@ describe('HTMLEditorTesting', () => {
|
|
|
47
47
|
beforeEach(() => {
|
|
48
48
|
// Mock console methods
|
|
49
49
|
consoleSpy = {
|
|
50
|
-
log: jest.spyOn(console, 'log').mockImplementation(() => {
|
|
51
|
-
error: jest.spyOn(console, 'error').mockImplementation(() => {
|
|
50
|
+
log: jest.spyOn(console, 'log').mockImplementation(() => {}),
|
|
51
|
+
error: jest.spyOn(console, 'error').mockImplementation(() => {})
|
|
52
52
|
};
|
|
53
53
|
|
|
54
54
|
// Clear any existing window.htmlEditorTest
|
|
@@ -88,6 +88,14 @@ describe('HTMLEditorTesting', () => {
|
|
|
88
88
|
expect(typeof window.htmlEditorTest.status).toBe('function');
|
|
89
89
|
expect(typeof window.htmlEditorTest.help).toBe('function');
|
|
90
90
|
});
|
|
91
|
+
|
|
92
|
+
it('logs help message on initial load', () => {
|
|
93
|
+
render(<HTMLEditorTesting />);
|
|
94
|
+
|
|
95
|
+
expect(consoleSpy.log).toHaveBeenCalledWith(
|
|
96
|
+
'🚀 HTMLEditor Testing Ready! Type htmlEditorTest.help() for commands'
|
|
97
|
+
);
|
|
98
|
+
});
|
|
91
99
|
});
|
|
92
100
|
|
|
93
101
|
describe('Visibility Control', () => {
|
|
@@ -99,6 +107,7 @@ describe('HTMLEditorTesting', () => {
|
|
|
99
107
|
});
|
|
100
108
|
|
|
101
109
|
expect(screen.getByTestId('mock-html-editor')).toBeInTheDocument();
|
|
110
|
+
expect(consoleSpy.log).toHaveBeenCalledWith('✅ HTMLEditor test mode activated');
|
|
102
111
|
});
|
|
103
112
|
|
|
104
113
|
it('hides editor when hide() is called', () => {
|
|
@@ -115,6 +124,7 @@ describe('HTMLEditorTesting', () => {
|
|
|
115
124
|
window.htmlEditorTest.hide();
|
|
116
125
|
});
|
|
117
126
|
expect(screen.queryByTestId('mock-html-editor')).not.toBeInTheDocument();
|
|
127
|
+
expect(consoleSpy.log).toHaveBeenCalledWith('✅ HTMLEditor test mode deactivated');
|
|
118
128
|
});
|
|
119
129
|
|
|
120
130
|
it('toggles editor visibility with toggle()', () => {
|
|
@@ -125,11 +135,14 @@ describe('HTMLEditorTesting', () => {
|
|
|
125
135
|
window.htmlEditorTest.toggle();
|
|
126
136
|
});
|
|
127
137
|
expect(screen.getByTestId('mock-html-editor')).toBeInTheDocument();
|
|
138
|
+
expect(consoleSpy.log).toHaveBeenCalledWith('✅ HTMLEditor test mode activated');
|
|
139
|
+
|
|
128
140
|
// Toggle to hide
|
|
129
141
|
act(() => {
|
|
130
142
|
window.htmlEditorTest.toggle();
|
|
131
143
|
});
|
|
132
144
|
expect(screen.queryByTestId('mock-html-editor')).not.toBeInTheDocument();
|
|
145
|
+
expect(consoleSpy.log).toHaveBeenCalledWith('✅ HTMLEditor test mode deactivated');
|
|
133
146
|
});
|
|
134
147
|
|
|
135
148
|
it('closes editor when close button is clicked', () => {
|
|
@@ -156,6 +169,7 @@ describe('HTMLEditorTesting', () => {
|
|
|
156
169
|
});
|
|
157
170
|
|
|
158
171
|
expect(screen.getByTestId('editor-variant')).toHaveTextContent('email');
|
|
172
|
+
expect(consoleSpy.log).toHaveBeenCalledWith('✅ Variant set to: email');
|
|
159
173
|
});
|
|
160
174
|
|
|
161
175
|
it('sets variant to inapp', () => {
|
|
@@ -167,6 +181,7 @@ describe('HTMLEditorTesting', () => {
|
|
|
167
181
|
});
|
|
168
182
|
|
|
169
183
|
expect(screen.getByTestId('editor-variant')).toHaveTextContent('inapp');
|
|
184
|
+
expect(consoleSpy.log).toHaveBeenCalledWith('✅ Variant set to: inapp');
|
|
170
185
|
});
|
|
171
186
|
|
|
172
187
|
it('rejects invalid variant', () => {
|
|
@@ -200,6 +215,7 @@ describe('HTMLEditorTesting', () => {
|
|
|
200
215
|
});
|
|
201
216
|
|
|
202
217
|
expect(screen.getByTestId('editor-layout')).toHaveTextContent(LAYOUT_TYPES.MODAL);
|
|
218
|
+
expect(consoleSpy.log).toHaveBeenCalledWith(`✅ Layout set to: ${LAYOUT_TYPES.MODAL}`);
|
|
203
219
|
});
|
|
204
220
|
|
|
205
221
|
it('sets layout to HEADER', () => {
|
|
@@ -211,6 +227,7 @@ describe('HTMLEditorTesting', () => {
|
|
|
211
227
|
});
|
|
212
228
|
|
|
213
229
|
expect(screen.getByTestId('editor-layout')).toHaveTextContent(LAYOUT_TYPES.HEADER);
|
|
230
|
+
expect(consoleSpy.log).toHaveBeenCalledWith(`✅ Layout set to: ${LAYOUT_TYPES.HEADER}`);
|
|
214
231
|
});
|
|
215
232
|
|
|
216
233
|
it('sets layout to FOOTER', () => {
|
|
@@ -222,6 +239,7 @@ describe('HTMLEditorTesting', () => {
|
|
|
222
239
|
});
|
|
223
240
|
|
|
224
241
|
expect(screen.getByTestId('editor-layout')).toHaveTextContent(LAYOUT_TYPES.FOOTER);
|
|
242
|
+
expect(consoleSpy.log).toHaveBeenCalledWith(`✅ Layout set to: ${LAYOUT_TYPES.FOOTER}`);
|
|
225
243
|
});
|
|
226
244
|
|
|
227
245
|
it('sets layout to FULLSCREEN', () => {
|
|
@@ -233,6 +251,7 @@ describe('HTMLEditorTesting', () => {
|
|
|
233
251
|
});
|
|
234
252
|
|
|
235
253
|
expect(screen.getByTestId('editor-layout')).toHaveTextContent(LAYOUT_TYPES.FULLSCREEN);
|
|
254
|
+
expect(consoleSpy.log).toHaveBeenCalledWith(`✅ Layout set to: ${LAYOUT_TYPES.FULLSCREEN}`);
|
|
236
255
|
});
|
|
237
256
|
|
|
238
257
|
it('rejects invalid layout', () => {
|
|
@@ -270,6 +289,7 @@ describe('HTMLEditorTesting', () => {
|
|
|
270
289
|
});
|
|
271
290
|
|
|
272
291
|
expect(screen.getByTestId('editor-content')).toHaveTextContent(newContent);
|
|
292
|
+
expect(consoleSpy.log).toHaveBeenCalledWith('✅ Content updated');
|
|
273
293
|
});
|
|
274
294
|
|
|
275
295
|
it('gets current content', () => {
|
|
@@ -278,6 +298,7 @@ describe('HTMLEditorTesting', () => {
|
|
|
278
298
|
const result = window.htmlEditorTest.getContent();
|
|
279
299
|
|
|
280
300
|
expect(result).toBe('<h1>Test HTML Editor</h1><p>This is a test integration.</p>');
|
|
301
|
+
expect(consoleSpy.log).toHaveBeenCalledWith('Current content:', result);
|
|
281
302
|
});
|
|
282
303
|
|
|
283
304
|
it('starts with default content', () => {
|
|
@@ -301,6 +322,8 @@ describe('HTMLEditorTesting', () => {
|
|
|
301
322
|
|
|
302
323
|
const changeButton = screen.getByTestId('trigger-content-change');
|
|
303
324
|
fireEvent.click(changeButton);
|
|
325
|
+
|
|
326
|
+
expect(consoleSpy.log).toHaveBeenCalledWith('📝 Content changed:', '<p>Changed content</p>...');
|
|
304
327
|
});
|
|
305
328
|
|
|
306
329
|
it('handles save callback', () => {
|
|
@@ -312,6 +335,46 @@ describe('HTMLEditorTesting', () => {
|
|
|
312
335
|
|
|
313
336
|
const saveButton = screen.getByTestId('trigger-save');
|
|
314
337
|
fireEvent.click(saveButton);
|
|
338
|
+
|
|
339
|
+
expect(consoleSpy.log).toHaveBeenCalledWith('💾 Content saved:', '<p>Saved content</p>');
|
|
340
|
+
});
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
describe('Status and Help', () => {
|
|
344
|
+
it('shows status information', () => {
|
|
345
|
+
render(<HTMLEditorTesting />);
|
|
346
|
+
|
|
347
|
+
act(() => {
|
|
348
|
+
window.htmlEditorTest.show();
|
|
349
|
+
window.htmlEditorTest.setVariant('inapp');
|
|
350
|
+
window.htmlEditorTest.setLayout(LAYOUT_TYPES.HEADER);
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
// Clear previous console calls
|
|
354
|
+
consoleSpy.log.mockClear();
|
|
355
|
+
|
|
356
|
+
act(() => {
|
|
357
|
+
window.htmlEditorTest.status();
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
expect(consoleSpy.log).toHaveBeenCalledWith('📊 HTMLEditor Test Status:');
|
|
361
|
+
expect(consoleSpy.log).toHaveBeenCalledWith(' Visible: true');
|
|
362
|
+
expect(consoleSpy.log).toHaveBeenCalledWith(' Variant: inapp');
|
|
363
|
+
expect(consoleSpy.log).toHaveBeenCalledWith(' Layout: HEADER');
|
|
364
|
+
expect(consoleSpy.log).toHaveBeenCalledWith(' Content size: 59 chars');
|
|
365
|
+
});
|
|
366
|
+
|
|
367
|
+
it('shows help information', () => {
|
|
368
|
+
render(<HTMLEditorTesting />);
|
|
369
|
+
|
|
370
|
+
act(() => {
|
|
371
|
+
window.htmlEditorTest.help();
|
|
372
|
+
});
|
|
373
|
+
|
|
374
|
+
expect(consoleSpy.log).toHaveBeenCalledWith(expect.stringContaining('🚀 HTMLEditor Testing Console Commands:'));
|
|
375
|
+
expect(consoleSpy.log).toHaveBeenCalledWith(expect.stringContaining('htmlEditorTest.show()'));
|
|
376
|
+
expect(consoleSpy.log).toHaveBeenCalledWith(expect.stringContaining('htmlEditorTest.setVariant(\'email\')'));
|
|
377
|
+
expect(consoleSpy.log).toHaveBeenCalledWith(expect.stringContaining('htmlEditorTest.setLayout(\'POPUP\')'));
|
|
315
378
|
});
|
|
316
379
|
});
|
|
317
380
|
|
|
@@ -407,6 +470,8 @@ describe('HTMLEditorTesting', () => {
|
|
|
407
470
|
act(() => {
|
|
408
471
|
window.htmlEditorTest.status();
|
|
409
472
|
});
|
|
473
|
+
|
|
474
|
+
expect(consoleSpy.log).toHaveBeenCalledWith(` Content size: ${customContent.length} chars`);
|
|
410
475
|
});
|
|
411
476
|
|
|
412
477
|
it('handles multiple rapid operations', () => {
|