@capillarytech/creatives-library 8.0.250-alpha.2 → 8.0.251
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/translations/en.json +3 -4
- 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 -455
- package/v2Components/ErrorInfoNote/messages.js +6 -36
- package/v2Components/ErrorInfoNote/style.scss +4 -280
- package/v2Components/FormBuilder/tests/index.test.js +4 -13
- package/v2Components/HtmlEditor/HTMLEditor.js +94 -547
- package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +133 -1358
- package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +16 -27
- package/v2Components/HtmlEditor/_htmlEditor.scss +45 -108
- package/v2Components/HtmlEditor/_index.lazy.scss +1 -1
- package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +101 -22
- package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +140 -146
- 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 +0 -9
- package/v2Components/HtmlEditor/components/EditorToolbar/index.js +1 -1
- 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 +6 -3
- package/v2Components/HtmlEditor/components/PreviewPane/index.js +34 -24
- 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/index.js +31 -49
- package/v2Components/HtmlEditor/components/ValidationPanel/_validationPanel.scss +34 -50
- package/v2Components/HtmlEditor/components/ValidationPanel/index.js +41 -70
- package/v2Components/HtmlEditor/constants.js +20 -42
- package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +16 -373
- package/v2Components/HtmlEditor/hooks/useEditorContent.js +2 -5
- package/v2Components/HtmlEditor/hooks/useInAppContent.js +146 -88
- package/v2Components/HtmlEditor/hooks/useValidation.js +53 -189
- package/v2Components/HtmlEditor/index.js +1 -1
- package/v2Components/HtmlEditor/messages.js +85 -95
- package/v2Components/HtmlEditor/utils/__tests__/htmlValidator.enhanced.test.js +45 -94
- 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 +102 -134
- package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +25 -23
- package/v2Components/HtmlEditor/utils/validationAdapter.js +41 -66
- package/v2Components/MobilePushPreviewV2/index.js +7 -32
- 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/Cap/tests/__snapshots__/index.test.js.snap +3 -4
- 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 -407
- 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 -106
- package/v2Containers/Email/actions.js +0 -7
- package/v2Containers/Email/constants.js +1 -5
- package/v2Containers/Email/index.js +29 -234
- 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 +19 -207
- 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 -61
- 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 +9 -15
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +6 -10
- package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +75 -102
- package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +54 -81
- package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +174 -244
- package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +12 -16
- package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +36 -52
- 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 -4
- package/v2Containers/Templates/tests/index.test.js +0 -10
- package/v2Containers/TemplatesV2/index.js +7 -15
- package/v2Containers/TemplatesV2/messages.js +0 -4
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +486 -682
- 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/HtmlEditor/__tests__/HTMLEditor.apiErrors.test.js +0 -874
- package/v2Components/HtmlEditor/components/ValidationPanel/constants.js +0 -6
- package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +0 -254
- package/v2Components/HtmlEditor/components/ValidationTabs/index.js +0 -364
- package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +0 -51
- package/v2Components/HtmlEditor/hooks/__tests__/useValidation.apiErrors.test.js +0 -795
- package/v2Components/HtmlEditor/utils/validationConstants.js +0 -40
- 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 -1285
- package/v2Containers/EmailWrapper/components/__tests__/EmailHTMLEditor.test.js +0 -1870
- package/v2Containers/EmailWrapper/components/__tests__/EmailWrapperView.test.js +0 -520
- package/v2Containers/EmailWrapper/tests/useEmailWrapper.edgeCases.test.js +0 -643
- 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 -107
- package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +0 -160
- package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +0 -476
- 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 -143
- 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 -82
- 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 -515
- 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 -46
- package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +0 -150
- 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 -203
- 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 -23
- 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 -47
- package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +0 -141
- 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 -81
- 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 -351
- 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,37 +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
|
-
// Mode selection component
|
|
32
|
+
// Mode selection component that handles the creation mode selection UI
|
|
45
33
|
const ModeSelectionUI = ({
|
|
46
34
|
isFullMode,
|
|
47
35
|
templateName,
|
|
@@ -63,7 +51,7 @@ const ModeSelectionUI = ({
|
|
|
63
51
|
value={templateName}
|
|
64
52
|
labelPosition="top"
|
|
65
53
|
size="default"
|
|
66
|
-
style={{ width: '68%'
|
|
54
|
+
style={{ width: '68%'}}
|
|
67
55
|
/>
|
|
68
56
|
)}
|
|
69
57
|
<CardContainer>
|
|
@@ -110,36 +98,25 @@ ModeSelectionUI.propTypes = {
|
|
|
110
98
|
uploadButtonLabel: PropTypes.node.isRequired,
|
|
111
99
|
};
|
|
112
100
|
|
|
113
|
-
// Content creation component
|
|
101
|
+
// Content creation component that handles the email or template selection UI
|
|
114
102
|
const ContentCreationUI = ({
|
|
115
103
|
isShowEmailCreate,
|
|
116
104
|
emailProps,
|
|
117
105
|
cmsTemplatesProps,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
) : (
|
|
128
|
-
<EmailWithoutSaga {...emailProps} />
|
|
129
|
-
)
|
|
130
|
-
) : (
|
|
131
|
-
<CmsTemplatesComponent {...cmsTemplatesProps} />
|
|
132
|
-
)}
|
|
133
|
-
</>
|
|
134
|
-
);
|
|
135
|
-
};
|
|
106
|
+
}) => (
|
|
107
|
+
<>
|
|
108
|
+
{isShowEmailCreate ? (
|
|
109
|
+
<Email {...emailProps} />
|
|
110
|
+
) : (
|
|
111
|
+
<CmsTemplatesComponent {...cmsTemplatesProps} />
|
|
112
|
+
)}
|
|
113
|
+
</>
|
|
114
|
+
);
|
|
136
115
|
|
|
137
116
|
ContentCreationUI.propTypes = {
|
|
138
117
|
isShowEmailCreate: PropTypes.bool.isRequired,
|
|
139
118
|
emailProps: PropTypes.object.isRequired,
|
|
140
119
|
cmsTemplatesProps: PropTypes.object.isRequired,
|
|
141
|
-
isHTMLEditorMode: PropTypes.bool,
|
|
142
|
-
htmlEditorProps: PropTypes.object,
|
|
143
120
|
};
|
|
144
121
|
|
|
145
122
|
// Main EmailWrapper presentational component
|
|
@@ -160,136 +137,9 @@ const EmailWrapperView = ({
|
|
|
160
137
|
isShowEmailCreate,
|
|
161
138
|
emailProps,
|
|
162
139
|
cmsTemplatesProps,
|
|
163
|
-
metaEntities,
|
|
164
|
-
loadingTags,
|
|
165
|
-
injectedTags,
|
|
166
|
-
globalActions,
|
|
167
|
-
supportedTags,
|
|
168
|
-
getDefaultTags,
|
|
169
|
-
location,
|
|
170
|
-
currentOrgDetails,
|
|
171
|
-
forwardedTags,
|
|
172
|
-
selectedOfferDetails,
|
|
173
|
-
eventContextTags,
|
|
174
|
-
getFormdata,
|
|
175
|
-
isGetFormData,
|
|
176
|
-
getLiquidTags,
|
|
177
|
-
showLiquidErrorInFooter,
|
|
178
|
-
onValidationFail,
|
|
179
|
-
emailActions,
|
|
180
|
-
Email,
|
|
181
|
-
templateData: templateDataProp,
|
|
182
|
-
params,
|
|
183
|
-
fetchingLiquidTags,
|
|
184
|
-
createTemplateInProgress,
|
|
185
|
-
fetchingCmsData,
|
|
186
|
-
setIsLoadingContent,
|
|
187
|
-
showTestAndPreviewSlidebox,
|
|
188
|
-
handleCloseTestAndPreview,
|
|
189
|
-
showTemplateName,
|
|
190
|
-
onHtmlEditorValidationStateChange,
|
|
191
|
-
moduleType,
|
|
192
140
|
}) => {
|
|
193
|
-
const htmlEditorRef = useRef(null);
|
|
194
|
-
const supportCKEditor = hasSupportCKEditor();
|
|
195
|
-
const hasParamsIdForEditor = params?.id || location?.query?.id || location?.params?.id || location?.pathname?.includes('/edit/');
|
|
196
|
-
const isEditModeForEditor = hasParamsIdForEditor;
|
|
197
|
-
const isBEEFromProps = emailProps?.editor === 'BEE' && emailProps?.selectedEditorMode === null;
|
|
198
|
-
const isDragDropFromCreateMode = emailCreateMode === EMAIL_CREATE_MODES.DRAG_DROP;
|
|
199
|
-
const isExplicitlyBEEEditor = isBEEFromProps || isDragDropFromCreateMode;
|
|
200
|
-
let isHTMLEditorMode = false;
|
|
201
|
-
|
|
202
|
-
if (supportCKEditor) {
|
|
203
|
-
isHTMLEditorMode = false; // Legacy flow: use Email component
|
|
204
|
-
} else if (isEditModeForEditor) {
|
|
205
|
-
isHTMLEditorMode = !isExplicitlyBEEEditor;
|
|
206
|
-
} else {
|
|
207
|
-
if (isExplicitlyBEEEditor || isBEEFromProps || isDragDropFromCreateMode) {
|
|
208
|
-
isHTMLEditorMode = false;
|
|
209
|
-
} else {
|
|
210
|
-
isHTMLEditorMode = emailProps?.selectedEditorMode === EMAIL_CREATE_MODES.HTML_EDITOR ||
|
|
211
|
-
emailCreateMode === EMAIL_CREATE_MODES.HTML_EDITOR;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
const isShowTemplateSelection = step === STEPS.MODE_SELECTION;
|
|
216
|
-
|
|
217
|
-
// Create onFormDataChange callback for template name updates (similar to Email component)
|
|
218
|
-
// This allows CreativesContainer to update the template name when user clicks "Edit name"
|
|
219
|
-
// When user edits the name in CreativesContainer header, it calls this callback
|
|
220
|
-
// which updates the template name in EmailWrapper, and then CreativesContainer
|
|
221
|
-
// will call showTemplateName again with the updated formData
|
|
222
|
-
const handleFormDataChange = useCallback((updatedFormData) => {
|
|
223
|
-
const newTemplateName = updatedFormData?.['template-name'] || templateName;
|
|
224
|
-
if (newTemplateName !== templateName && onTemplateNameChange) {
|
|
225
|
-
// Update template name in parent (useEmailWrapper hook)
|
|
226
|
-
onTemplateNameChange({ target: { value: newTemplateName } });
|
|
227
|
-
}
|
|
228
|
-
// Note: CreativesContainer will call showTemplateName again after this callback
|
|
229
|
-
// (it stores the callback in templateContainerDetails and calls it after state updates)
|
|
230
|
-
}, [templateName, onTemplateNameChange]);
|
|
231
|
-
|
|
232
|
-
const htmlEditorProps = isHTMLEditorMode ? {
|
|
233
|
-
// Location and params
|
|
234
|
-
location,
|
|
235
|
-
params,
|
|
236
|
-
// Tag-related props
|
|
237
|
-
getDefaultTags,
|
|
238
|
-
supportedTags,
|
|
239
|
-
metaEntities,
|
|
240
|
-
injectedTags,
|
|
241
|
-
globalActions,
|
|
242
|
-
loadingTags,
|
|
243
|
-
eventContextTags,
|
|
244
|
-
forwardedTags,
|
|
245
|
-
selectedOfferDetails,
|
|
246
|
-
currentOrgDetails,
|
|
247
|
-
// Email Redux state and actions
|
|
248
|
-
Email,
|
|
249
|
-
emailActions,
|
|
250
|
-
// Full mode props
|
|
251
|
-
isFullMode,
|
|
252
|
-
templateName,
|
|
253
|
-
isGetFormData,
|
|
254
|
-
getFormdata,
|
|
255
|
-
// Library mode props
|
|
256
|
-
templateData: templateDataProp,
|
|
257
|
-
// Uploaded content from zip file
|
|
258
|
-
EmailLayout,
|
|
259
|
-
// Liquid validation
|
|
260
|
-
getLiquidTags,
|
|
261
|
-
showLiquidErrorInFooter,
|
|
262
|
-
// Validation state callback
|
|
263
|
-
onHtmlEditorValidationStateChange,
|
|
264
|
-
onValidationFail,
|
|
265
|
-
// Template name
|
|
266
|
-
showTemplateName,
|
|
267
|
-
onFormDataChange: handleFormDataChange,
|
|
268
|
-
// Module type for unsubscribe tag validation
|
|
269
|
-
moduleType,
|
|
270
|
-
// Loading states
|
|
271
|
-
fetchingLiquidTags: fetchingLiquidTags || false,
|
|
272
|
-
createTemplateInProgress: createTemplateInProgress || false,
|
|
273
|
-
fetchingCmsData: fetchingCmsData || false,
|
|
274
|
-
// Parent loading control
|
|
275
|
-
setIsLoadingContent,
|
|
276
|
-
ref: htmlEditorRef,
|
|
277
|
-
} : {};
|
|
278
|
-
|
|
279
|
-
// Get formData for TestAndPreviewSlidebox when needed
|
|
280
|
-
const getFormDataForPreview = () => {
|
|
281
|
-
if (htmlEditorRef.current && htmlEditorRef.current.getFormDataForPreview) {
|
|
282
|
-
return htmlEditorRef.current.getFormDataForPreview();
|
|
283
|
-
}
|
|
284
|
-
return {};
|
|
285
|
-
};
|
|
286
141
|
|
|
287
|
-
const
|
|
288
|
-
if (htmlEditorRef.current && htmlEditorRef.current.getContentForPreview) {
|
|
289
|
-
return htmlEditorRef.current.getContentForPreview();
|
|
290
|
-
}
|
|
291
|
-
return '';
|
|
292
|
-
};
|
|
142
|
+
const isShowTemplateSelection = step === STEPS.MODE_SELECTION || (step === STEPS.TEMPLATE_SELECTION && emailCreateMode === EMAIL_CREATE_MODES.UPLOAD);
|
|
293
143
|
|
|
294
144
|
return (
|
|
295
145
|
<>
|
|
@@ -313,22 +163,9 @@ const EmailWrapperView = ({
|
|
|
313
163
|
isShowEmailCreate={isShowEmailCreate}
|
|
314
164
|
emailProps={emailProps}
|
|
315
165
|
cmsTemplatesProps={cmsTemplatesProps}
|
|
316
|
-
isHTMLEditorMode={isHTMLEditorMode}
|
|
317
|
-
htmlEditorProps={htmlEditorProps}
|
|
318
166
|
/>
|
|
319
167
|
)}
|
|
320
168
|
</CapSpin>
|
|
321
|
-
{/* Render TestAndPreviewSlidebox for HTML Editor (similar to legacy Email component) */}
|
|
322
|
-
{isHTMLEditorMode && showTestAndPreviewSlidebox && (
|
|
323
|
-
<TestAndPreviewSlidebox
|
|
324
|
-
show={showTestAndPreviewSlidebox}
|
|
325
|
-
onClose={handleCloseTestAndPreview}
|
|
326
|
-
formData={getFormDataForPreview()}
|
|
327
|
-
content={getContentForPreview()}
|
|
328
|
-
currentChannel={EMAIL}
|
|
329
|
-
currentTab={1}
|
|
330
|
-
/>
|
|
331
|
-
)}
|
|
332
169
|
</>
|
|
333
170
|
);
|
|
334
171
|
};
|
|
@@ -338,10 +175,6 @@ EmailWrapperView.propTypes = {
|
|
|
338
175
|
emailCreateMode: PropTypes.string,
|
|
339
176
|
step: PropTypes.string,
|
|
340
177
|
isFullMode: PropTypes.bool,
|
|
341
|
-
getFormdata: PropTypes.func,
|
|
342
|
-
isGetFormData: PropTypes.bool,
|
|
343
|
-
getLiquidTags: PropTypes.func,
|
|
344
|
-
showLiquidErrorInFooter: PropTypes.func,
|
|
345
178
|
templateName: PropTypes.string,
|
|
346
179
|
onTemplateNameChange: PropTypes.func.isRequired,
|
|
347
180
|
isTemplateNameEmpty: PropTypes.bool,
|
|
@@ -354,27 +187,6 @@ EmailWrapperView.propTypes = {
|
|
|
354
187
|
isShowEmailCreate: PropTypes.bool.isRequired,
|
|
355
188
|
emailProps: PropTypes.object.isRequired,
|
|
356
189
|
cmsTemplatesProps: PropTypes.object.isRequired,
|
|
357
|
-
metaEntities: PropTypes.object,
|
|
358
|
-
loadingTags: PropTypes.bool,
|
|
359
|
-
injectedTags: PropTypes.object,
|
|
360
|
-
globalActions: PropTypes.object,
|
|
361
|
-
supportedTags: PropTypes.array,
|
|
362
|
-
getDefaultTags: PropTypes.string,
|
|
363
|
-
location: PropTypes.object,
|
|
364
|
-
currentOrgDetails: PropTypes.object,
|
|
365
|
-
forwardedTags: PropTypes.object,
|
|
366
|
-
selectedOfferDetails: PropTypes.array,
|
|
367
|
-
eventContextTags: PropTypes.array,
|
|
368
|
-
emailActions: PropTypes.object,
|
|
369
|
-
Email: PropTypes.object,
|
|
370
|
-
templateData: PropTypes.object,
|
|
371
|
-
params: PropTypes.object,
|
|
372
|
-
fetchingLiquidTags: PropTypes.bool,
|
|
373
|
-
createTemplateInProgress: PropTypes.bool,
|
|
374
|
-
fetchingCmsData: PropTypes.bool,
|
|
375
|
-
setIsLoadingContent: PropTypes.func,
|
|
376
|
-
showTestAndPreviewSlidebox: PropTypes.bool,
|
|
377
|
-
handleCloseTestAndPreview: PropTypes.func,
|
|
378
190
|
};
|
|
379
191
|
|
|
380
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', () => {
|