@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
|
@@ -10,7 +10,6 @@ import SmsWrapper from '../SmsWrapper';
|
|
|
10
10
|
import Email from '../Email';
|
|
11
11
|
import EmailWrapper from '../EmailWrapper';
|
|
12
12
|
import MobilepushWrapper from '../MobilepushWrapper';
|
|
13
|
-
import InAppWrapper from '../InAppWrapper';
|
|
14
13
|
import EmailPreviewV2 from '../../v2Components/EmailPreviewV2';
|
|
15
14
|
import MobilePushPreview from '../../v2Components/MobilePushPreviewV2';
|
|
16
15
|
import WechatWrapper from '../WeChat/Wrapper';
|
|
@@ -29,10 +28,6 @@ import { getWhatsappContent } from '../Whatsapp/utils';
|
|
|
29
28
|
import * as commonUtil from '../../utils/common';
|
|
30
29
|
import Zalo from '../Zalo';
|
|
31
30
|
import MobilePushNew from '../MobilePushNew';
|
|
32
|
-
import WebPush from '../WebPush';
|
|
33
|
-
import DevicePreviewContent from '../WebPush/Create/preview/DevicePreviewContent';
|
|
34
|
-
import { LAYOUT_MODE } from '../WebPush/Create/preview/constants';
|
|
35
|
-
import { WEBPUSH_CONTENT_FIELDS, WEBPUSH_TEMPLATE_PATHS } from '../WebPush/constants';
|
|
36
31
|
const CreativesWrapper = styled.div`
|
|
37
32
|
.ant-popover,
|
|
38
33
|
.ant-notification,
|
|
@@ -120,11 +115,7 @@ export function SlideBoxContent(props) {
|
|
|
120
115
|
emailCreateMode,
|
|
121
116
|
onMobilepushModeChange,
|
|
122
117
|
mobilePushCreateMode,
|
|
123
|
-
onInAppEditorTypeChange,
|
|
124
|
-
inAppEditorType,
|
|
125
118
|
templateStep,
|
|
126
|
-
inAppCreateMode,
|
|
127
|
-
onInAppModeChange,
|
|
128
119
|
onEnterTemplateName,
|
|
129
120
|
onRemoveTemplateName,
|
|
130
121
|
onCreateNextStep,
|
|
@@ -138,7 +129,6 @@ export function SlideBoxContent(props) {
|
|
|
138
129
|
onValidationFail,
|
|
139
130
|
channelsToHide,
|
|
140
131
|
forwardedTags,
|
|
141
|
-
supportedTags = [],
|
|
142
132
|
selectedOfferDetails,
|
|
143
133
|
channelsToDisable,
|
|
144
134
|
weChatTemplateType,
|
|
@@ -174,7 +164,6 @@ export function SlideBoxContent(props) {
|
|
|
174
164
|
handleTestAndPreview,
|
|
175
165
|
handleCloseTestAndPreview,
|
|
176
166
|
isTestAndPreviewMode,
|
|
177
|
-
onHtmlEditorValidationStateChange,
|
|
178
167
|
} = props;
|
|
179
168
|
const type = (messageDetails.type || '').toLowerCase(); // type is context in get tags values : outbound | dvs | referral | loyalty | coupons
|
|
180
169
|
const query = { type: !isFullMode && 'embedded', module: isFullMode ? 'default' : 'library', isEditFromCampaigns: (templateData || {}).isEditFromCampaigns};
|
|
@@ -211,7 +200,6 @@ export function SlideBoxContent(props) {
|
|
|
211
200
|
const isCreateRcs = isCreate && channel === constants.RCS;
|
|
212
201
|
const isCreateMPush = isCreate && channel === constants.MOBILE_PUSH;
|
|
213
202
|
const isCreateCallTask = isCreate && channel === constants.CALL_TASK;
|
|
214
|
-
const isCreateWebPush = isCreate && channel === constants.WEBPUSH;
|
|
215
203
|
let isEditSms = false;
|
|
216
204
|
let isEditEmailWithId = false;
|
|
217
205
|
let isEmailEditWithContent = false;
|
|
@@ -219,14 +207,12 @@ export function SlideBoxContent(props) {
|
|
|
219
207
|
let isEmailPreview = false;
|
|
220
208
|
let isMpushPreview = false;
|
|
221
209
|
let isInappPreview = false;
|
|
222
|
-
let isWebPushPreview = false;
|
|
223
210
|
let isEditCallTask = false;
|
|
224
211
|
let isEditMPush = false;
|
|
225
212
|
let isEditFacebook = false;
|
|
226
213
|
let isEditFTP = false;
|
|
227
214
|
let isEditWhatsapp = false;
|
|
228
215
|
let isEditInApp = false;
|
|
229
|
-
let isEditWebPush = false;
|
|
230
216
|
let isEditRcs = false;
|
|
231
217
|
let isEditZalo = false;
|
|
232
218
|
const isEmailCreate = isCreate && channel === constants.EMAIL;
|
|
@@ -240,12 +226,10 @@ export function SlideBoxContent(props) {
|
|
|
240
226
|
isEditFacebook = isEdit && channel === constants.FACEBOOK;
|
|
241
227
|
isEditWhatsapp = isEdit && channel === constants.WHATSAPP;
|
|
242
228
|
isEditRcs = isEdit && channel === constants.RCS;
|
|
243
|
-
isEditWebPush = isEdit && channel === constants.WEBPUSH;
|
|
244
229
|
isPreview = slidBoxContent === 'preview' && [constants.SMS, constants.LINE, constants.WHATSAPP, constants.FACEBOOK, constants.VIBER, constants.RCS].includes(channel);
|
|
245
230
|
isEmailPreview = slidBoxContent === 'preview' && channel === constants.EMAIL;
|
|
246
231
|
isMpushPreview = slidBoxContent === 'preview' && channel === constants.MOBILE_PUSH;
|
|
247
232
|
isInappPreview = slidBoxContent === 'preview' && channel === constants.INAPP;
|
|
248
|
-
isWebPushPreview = slidBoxContent === 'preview' && channel === constants.WEBPUSH;
|
|
249
233
|
isEditFTP = isEdit && [constants.NO_COMMUNICATION, constants.FTP].includes(channel);
|
|
250
234
|
isEditZalo = isEdit && channel?.toUpperCase() === constants.ZALO;
|
|
251
235
|
isEditInApp = isEdit && channel === constants.INAPP;
|
|
@@ -493,30 +477,8 @@ export function SlideBoxContent(props) {
|
|
|
493
477
|
templateData={templateData}
|
|
494
478
|
channel={channel}
|
|
495
479
|
forwardedTags={forwardedTags}
|
|
496
|
-
|
|
480
|
+
/>
|
|
497
481
|
)}
|
|
498
|
-
{isWebPushPreview && (() => {
|
|
499
|
-
const webpushContent = get(templateData, WEBPUSH_TEMPLATE_PATHS.CONTENT, {});
|
|
500
|
-
const notificationTitle = webpushContent?.[WEBPUSH_CONTENT_FIELDS.TITLE] || '';
|
|
501
|
-
const notificationBody = webpushContent?.[WEBPUSH_CONTENT_FIELDS.MESSAGE] || '';
|
|
502
|
-
const imageSrc = webpushContent?.[WEBPUSH_CONTENT_FIELDS.IMAGE] || '';
|
|
503
|
-
const brandIconSrc = webpushContent?.[WEBPUSH_CONTENT_FIELDS.BRAND_ICON] || '';
|
|
504
|
-
// Extract URL from onClickAction or use empty string
|
|
505
|
-
const url = webpushContent?.[WEBPUSH_CONTENT_FIELDS.ON_CLICK_ACTION]?.url || '';
|
|
506
|
-
|
|
507
|
-
return (
|
|
508
|
-
<div className="webpush-preview-container">
|
|
509
|
-
<DevicePreviewContent
|
|
510
|
-
notificationTitle={notificationTitle}
|
|
511
|
-
notificationBody={notificationBody}
|
|
512
|
-
url={url}
|
|
513
|
-
imageSrc={imageSrc}
|
|
514
|
-
brandIconSrc={brandIconSrc}
|
|
515
|
-
layoutMode={LAYOUT_MODE.COMPACT}
|
|
516
|
-
/>
|
|
517
|
-
</div>
|
|
518
|
-
);
|
|
519
|
-
})()}
|
|
520
482
|
|
|
521
483
|
{
|
|
522
484
|
(currentChannel === constants.WECHAT && !!slidBoxContent) && <WechatWrapper
|
|
@@ -674,95 +636,44 @@ export function SlideBoxContent(props) {
|
|
|
674
636
|
handleTestAndPreview={handleTestAndPreview}
|
|
675
637
|
handleCloseTestAndPreview={handleCloseTestAndPreview}
|
|
676
638
|
isTestAndPreviewMode={isTestAndPreviewMode}
|
|
677
|
-
location={location}
|
|
678
|
-
onHtmlEditorValidationStateChange={onHtmlEditorValidationStateChange}
|
|
679
639
|
/>
|
|
680
640
|
)}
|
|
681
641
|
{(isEditEmailWithId || isEmailEditWithContent) && (
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
isTestAndPreviewMode={isTestAndPreviewMode}
|
|
718
|
-
onHtmlEditorValidationStateChange={onHtmlEditorValidationStateChange}
|
|
719
|
-
/>
|
|
720
|
-
);
|
|
721
|
-
}
|
|
722
|
-
// HTML template: Use EmailWrapper component (which uses EmailWithoutSaga)
|
|
723
|
-
return (
|
|
724
|
-
<EmailWrapper
|
|
725
|
-
key="cretives-container-email-edit-wrapper"
|
|
726
|
-
setIsLoadingContent={setIsLoadingContent}
|
|
727
|
-
onEmailModeChange={onEmailModeChange}
|
|
728
|
-
emailCreateMode="editor"
|
|
729
|
-
isGetFormData={isGetFormData}
|
|
730
|
-
getFormdata={getFormData}
|
|
731
|
-
templateData={templateData}
|
|
732
|
-
type={type}
|
|
733
|
-
step="createTemplateContent"
|
|
734
|
-
showNextStep={onCreateNextStep}
|
|
735
|
-
isFullMode={isFullMode}
|
|
736
|
-
editor={editor}
|
|
737
|
-
cap={cap}
|
|
738
|
-
onResetStep={onResetStep}
|
|
739
|
-
showTemplateName={showTemplateName}
|
|
740
|
-
onEnterTemplateName={onEnterTemplateName}
|
|
741
|
-
onRemoveTemplateName={onRemoveTemplateName}
|
|
742
|
-
onValidationFail={onValidationFail}
|
|
743
|
-
forwardedTags={forwardedTags}
|
|
744
|
-
selectedOfferDetails={selectedOfferDetails}
|
|
745
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
746
|
-
onTestContentClicked={onTestContentClicked}
|
|
747
|
-
getCmsTemplatesInProgress={getCmsTemplatesInProgress}
|
|
748
|
-
moduleType={moduleType}
|
|
749
|
-
showLiquidErrorInFooter={showLiquidErrorInFooter}
|
|
750
|
-
eventContextTags={eventContextTags}
|
|
751
|
-
isLoyaltyModule={isLoyaltyModule}
|
|
752
|
-
showTestAndPreviewSlidebox={showTestAndPreviewSlidebox}
|
|
753
|
-
handleTestAndPreview={handleTestAndPreview}
|
|
754
|
-
handleCloseTestAndPreview={handleCloseTestAndPreview}
|
|
755
|
-
isTestAndPreviewMode={isTestAndPreviewMode}
|
|
756
|
-
onHtmlEditorValidationStateChange={onHtmlEditorValidationStateChange}
|
|
757
|
-
location={{
|
|
758
|
-
pathname: `/email/edit/${templateData._id}`,
|
|
759
|
-
query: { type: 'embedded', module: 'library', id: templateData._id },
|
|
760
|
-
}}
|
|
761
|
-
params={{ id: templateData._id }}
|
|
762
|
-
/>
|
|
763
|
-
);
|
|
764
|
-
})()
|
|
765
|
-
)}
|
|
642
|
+
<Email
|
|
643
|
+
key="cretives-container-email-edit"
|
|
644
|
+
setIsLoadingContent={setIsLoadingContent}
|
|
645
|
+
location={{
|
|
646
|
+
pathname: `/email/edit`,
|
|
647
|
+
query: { type: 'embedded', module: 'library'},
|
|
648
|
+
}}
|
|
649
|
+
route={{ name: 'email' }}
|
|
650
|
+
isGetFormData={isGetFormData}
|
|
651
|
+
getFormdata={getFormData}
|
|
652
|
+
params={{ id: templateData._id }}
|
|
653
|
+
templateData={templateData}
|
|
654
|
+
getFormSubscriptionData={getFormData}
|
|
655
|
+
getDefaultTags={type}
|
|
656
|
+
isFullMode={isFullMode}
|
|
657
|
+
editor={editor}
|
|
658
|
+
cap={cap}
|
|
659
|
+
showTemplateName={showTemplateName}
|
|
660
|
+
onValidationFail={onValidationFail}
|
|
661
|
+
forwardedTags={forwardedTags}
|
|
662
|
+
selectedOfferDetails={selectedOfferDetails}
|
|
663
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
664
|
+
onTestContentClicked={onTestContentClicked}
|
|
665
|
+
moduleType={moduleType}
|
|
666
|
+
showLiquidErrorInFooter={showLiquidErrorInFooter}
|
|
667
|
+
eventContextTags={eventContextTags}
|
|
668
|
+
isLoyaltyModule={isLoyaltyModule}
|
|
669
|
+
showTestAndPreviewSlidebox={showTestAndPreviewSlidebox}
|
|
670
|
+
handleTestAndPreview={handleTestAndPreview}
|
|
671
|
+
handleCloseTestAndPreview={handleCloseTestAndPreview}
|
|
672
|
+
isTestAndPreviewMode={(() => {
|
|
673
|
+
return isTestAndPreviewMode;
|
|
674
|
+
})()}
|
|
675
|
+
/>
|
|
676
|
+
)}
|
|
766
677
|
{isEditMPush && (
|
|
767
678
|
(isFullMode && !commonUtil.hasNewMobilePushFeatureEnabled()) ||
|
|
768
679
|
(!isFullMode && isLoyaltyModule) ||
|
|
@@ -1056,39 +967,22 @@ export function SlideBoxContent(props) {
|
|
|
1056
967
|
/>
|
|
1057
968
|
)}
|
|
1058
969
|
|
|
1059
|
-
{isCreateInApp && (
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
showTemplateName={showTemplateName}
|
|
1076
|
-
onEnterTemplateName={onEnterTemplateName}
|
|
1077
|
-
onRemoveTemplateName={onRemoveTemplateName}
|
|
1078
|
-
onValidationFail={onValidationFail}
|
|
1079
|
-
forwardedTags={forwardedTags}
|
|
1080
|
-
selectedOfferDetails={selectedOfferDetails}
|
|
1081
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
1082
|
-
onTestContentClicked={onTestContentClicked}
|
|
1083
|
-
moduleType={moduleType}
|
|
1084
|
-
showLiquidErrorInFooter={showLiquidErrorInFooter}
|
|
1085
|
-
eventContextTags={eventContextTags}
|
|
1086
|
-
onCreateComplete={onCreateComplete}
|
|
1087
|
-
handleClose={handleClose}
|
|
1088
|
-
getDefaultTags={type}
|
|
1089
|
-
onInAppModeChange={onInAppModeChange}
|
|
1090
|
-
inAppCreateMode={inAppCreateMode}
|
|
1091
|
-
showTestAndPreviewSlidebox={showTestAndPreviewSlidebox}
|
|
970
|
+
{isCreateInApp && (<InApp
|
|
971
|
+
isFullMode={isFullMode}
|
|
972
|
+
onCreateComplete={onCreateComplete}
|
|
973
|
+
handleClose={handleClose}
|
|
974
|
+
location={{
|
|
975
|
+
pathname: `/inapp/create`,
|
|
976
|
+
query,
|
|
977
|
+
search: '',
|
|
978
|
+
}}
|
|
979
|
+
getFormData={getFormData}
|
|
980
|
+
isGetFormData={isGetFormData}
|
|
981
|
+
templateData={templateData}
|
|
982
|
+
getDefaultTags={type}
|
|
983
|
+
eventContextTags={eventContextTags}
|
|
984
|
+
showLiquidErrorInFooter={showLiquidErrorInFooter}
|
|
985
|
+
showTestAndPreviewSlidebox={showTestAndPreviewSlidebox}
|
|
1092
986
|
handleTestAndPreview={handleTestAndPreview}
|
|
1093
987
|
handleCloseTestAndPreview={handleCloseTestAndPreview}
|
|
1094
988
|
isTestAndPreviewMode={isTestAndPreviewMode}
|
|
@@ -1120,28 +1014,6 @@ export function SlideBoxContent(props) {
|
|
|
1120
1014
|
/>
|
|
1121
1015
|
)}
|
|
1122
1016
|
|
|
1123
|
-
{(isCreateWebPush || isEditWebPush) && (
|
|
1124
|
-
<WebPush
|
|
1125
|
-
isFullMode={isFullMode}
|
|
1126
|
-
handleClose={handleClose}
|
|
1127
|
-
onCreateComplete={onCreateComplete}
|
|
1128
|
-
getFormData={getFormData}
|
|
1129
|
-
isGetFormData={isGetFormData}
|
|
1130
|
-
templateData={isEditWebPush ? templateData : undefined}
|
|
1131
|
-
creativesMode={creativesMode}
|
|
1132
|
-
params={isEditWebPush && templateData ? { id: templateData._id } : undefined}
|
|
1133
|
-
location={{
|
|
1134
|
-
pathname: isEditWebPush ? '/webpush/edit' : '/webpush/create',
|
|
1135
|
-
query,
|
|
1136
|
-
search: '',
|
|
1137
|
-
}}
|
|
1138
|
-
getDefaultTags={type}
|
|
1139
|
-
forwardedTags={forwardedTags}
|
|
1140
|
-
supportedTags={supportedTags}
|
|
1141
|
-
selectedOfferDetails={selectedOfferDetails}
|
|
1142
|
-
eventContextTags={eventContextTags}
|
|
1143
|
-
/>
|
|
1144
|
-
)}
|
|
1145
1017
|
{isCreateRcs && (<Rcs
|
|
1146
1018
|
{...rcsCommonProps}
|
|
1147
1019
|
showLiquidErrorInFooter={showLiquidErrorInFooter}
|
|
@@ -1179,8 +1051,6 @@ SlideBoxContent.propTypes = {
|
|
|
1179
1051
|
onSelectTemplate: PropTypes.func,
|
|
1180
1052
|
onPreviewTemplate: PropTypes.func,
|
|
1181
1053
|
templateData: PropTypes.object,
|
|
1182
|
-
onInAppEditorTypeChange: PropTypes.func,
|
|
1183
|
-
inAppEditorType: PropTypes.object,
|
|
1184
1054
|
location: PropTypes.object,
|
|
1185
1055
|
isGetFormData: PropTypes.bool,
|
|
1186
1056
|
getFormData: PropTypes.func,
|
|
@@ -1206,7 +1076,6 @@ SlideBoxContent.propTypes = {
|
|
|
1206
1076
|
onValidationFail: PropTypes.func,
|
|
1207
1077
|
channelsToHide: PropTypes.array,
|
|
1208
1078
|
forwardedTags: PropTypes.object,
|
|
1209
|
-
supportedTags: PropTypes.array,
|
|
1210
1079
|
selectedOfferDetails: PropTypes.array,
|
|
1211
1080
|
channelsToDisable: PropTypes.array,
|
|
1212
1081
|
weChatTemplateType: PropTypes.string,
|
|
@@ -1222,7 +1091,7 @@ SlideBoxContent.propTypes = {
|
|
|
1222
1091
|
onFTPSubmit: PropTypes.func,
|
|
1223
1092
|
messageStrategy: PropTypes.string,
|
|
1224
1093
|
fbAdManager: PropTypes.string,
|
|
1225
|
-
showDisabledFBInfo: PropTypes.
|
|
1094
|
+
showDisabledFBInfo: PropTypes.boolean,
|
|
1226
1095
|
orgUnitId: PropTypes.any,
|
|
1227
1096
|
smsRegister: PropTypes.any,
|
|
1228
1097
|
getCmsTemplatesInProgress: PropTypes.bool,
|
|
@@ -7,15 +7,12 @@ import PropTypes from 'prop-types';
|
|
|
7
7
|
import messages from './messages';
|
|
8
8
|
import ErrorInfoNote from '../../v2Components/ErrorInfoNote';
|
|
9
9
|
import { PREVIEW } from './constants';
|
|
10
|
-
import { EMAIL_CREATE_MODES } from '../EmailWrapper/constants';
|
|
11
10
|
|
|
12
|
-
function getFullModeSaveBtn(slidBoxContent
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
? <FormattedMessage {...messages.creativesTemplatesUpdate} />
|
|
18
|
-
: <FormattedMessage {...messages.creativesTemplatesSaveFullMode} />;
|
|
11
|
+
function getFullModeSaveBtn(slidBoxContent) {
|
|
12
|
+
return slidBoxContent === "editTemplate" ?
|
|
13
|
+
<FormattedMessage {...messages.creativesTemplatesUpdate}/>
|
|
14
|
+
:
|
|
15
|
+
<FormattedMessage {...messages.creativesTemplatesSaveFullMode}/>;
|
|
19
16
|
}
|
|
20
17
|
function SlideBoxFooter(props) {
|
|
21
18
|
const {
|
|
@@ -27,119 +24,18 @@ function SlideBoxFooter(props) {
|
|
|
27
24
|
fetchingCmsData,
|
|
28
25
|
isTemplateNameEmpty,
|
|
29
26
|
errorMessages,
|
|
30
|
-
|
|
31
|
-
isLiquidValidationError, // Legacy prop, kept for PropTypes compatibility
|
|
27
|
+
isLiquidValidationError,
|
|
32
28
|
currentTab,
|
|
33
29
|
onTestAndPreview,
|
|
34
30
|
// isEmptyContent,
|
|
35
31
|
showTestAndPreviewButton,
|
|
36
32
|
shouldShowDoneFooter,
|
|
37
33
|
shouldShowContinueFooter,
|
|
38
|
-
isContinueButtonDisabled,
|
|
39
|
-
continueButtonLabel,
|
|
40
|
-
htmlEditorValidationState,
|
|
41
|
-
isCreatingTemplate,
|
|
42
|
-
currentChannel,
|
|
43
|
-
emailCreateMode,
|
|
44
|
-
selectedEmailCreateMode,
|
|
45
34
|
} = props;
|
|
46
35
|
|
|
47
|
-
// Calculate if buttons should be disabled
|
|
48
|
-
// Only apply validation state checks for EMAIL channel in HTML Editor mode (not BEE/DragDrop)
|
|
49
|
-
// For other channels, BEE editor, or when htmlEditorValidationState is not provided, don't disable based on validation
|
|
50
|
-
const isEmailChannel = currentChannel?.toUpperCase() === 'EMAIL';
|
|
51
|
-
const isEditMode = slidBoxContent === 'editTemplate';
|
|
52
|
-
|
|
53
|
-
// Use selectedEmailCreateMode for accurate mode detection in create mode (emailCreateMode is mapped for backwards compatibility)
|
|
54
|
-
// In edit mode: htmlEditorValidationState is initialized as {} but only updated by HTML Editor
|
|
55
|
-
// If it's still in initial state (validationComplete === false, issueCounts.total === 0), it's BEE editor
|
|
56
|
-
// Upload mode also uses HTML Editor, so include it in HTML Editor mode check
|
|
57
|
-
const isUploadMode = emailCreateMode === EMAIL_CREATE_MODES.UPLOAD;
|
|
58
|
-
const isHTMLEditorModeInCreate = selectedEmailCreateMode === EMAIL_CREATE_MODES.HTML_EDITOR || isUploadMode;
|
|
59
|
-
// In edit mode: Check if htmlEditorValidationState has been updated by HTML Editor
|
|
60
|
-
// HTML Editor will call updateHtmlEditorValidationState, setting validationComplete to true at some point
|
|
61
|
-
// If validationComplete is false and issueCounts.total === 0, it's likely still in initial state (BEE editor)
|
|
62
|
-
const isHtmlEditorValidationStateActive = htmlEditorValidationState && (
|
|
63
|
-
htmlEditorValidationState.validationComplete === true
|
|
64
|
-
|| (htmlEditorValidationState.issueCounts && htmlEditorValidationState.issueCounts.total > 0)
|
|
65
|
-
|| htmlEditorValidationState.hasErrors === true
|
|
66
|
-
);
|
|
67
|
-
const isHTMLEditorModeInEdit = isEditMode && isHtmlEditorValidationStateActive;
|
|
68
|
-
const isHTMLEditorMode = isHTMLEditorModeInCreate || isHTMLEditorModeInEdit;
|
|
69
|
-
console.log('***isHTMLEditorMode', isHTMLEditorMode, 'isHTMLEditorModeInCreate', isHTMLEditorModeInCreate, 'isHTMLEditorModeInEdit', isHTMLEditorModeInEdit, 'isHtmlEditorValidationStateActive', isHtmlEditorValidationStateActive);
|
|
70
|
-
|
|
71
|
-
// BEE editor detection: drag_drop mode OR (editor mode AND not HTML Editor)
|
|
72
|
-
// In edit mode: if htmlEditorValidationState is in initial state (not updated by HTML Editor), it's BEE editor
|
|
73
|
-
const isBEEEditor = selectedEmailCreateMode === EMAIL_CREATE_MODES.DRAG_DROP
|
|
74
|
-
|| (emailCreateMode === EMAIL_CREATE_MODES.EDITOR && !isHTMLEditorMode)
|
|
75
|
-
|| (isEditMode && !isHtmlEditorValidationStateActive);
|
|
76
|
-
// Only check validation for HTML Editor mode, not for BEE/DragDrop editor
|
|
77
|
-
const shouldCheckValidation = isEmailChannel && htmlEditorValidationState && isHTMLEditorMode && !isBEEEditor;
|
|
78
|
-
const isContentEmpty = shouldCheckValidation ? (htmlEditorValidationState?.isContentEmpty ?? true) : false;
|
|
79
|
-
// Check if validation has completed
|
|
80
|
-
const validationComplete = shouldCheckValidation ? (htmlEditorValidationState?.validationComplete ?? false) : true;
|
|
81
|
-
// Only Rule Group #1 (Input & Sanitization) blocks; hasErrors is set by HTMLEditor from hasBlockingErrors.
|
|
82
|
-
// hasErrors should always be set (defaults to false), so we only check for explicit true value.
|
|
83
|
-
// Warnings (label issues, HTML/CSS compatibility) do NOT block buttons.
|
|
84
|
-
const hasValidationErrors = shouldCheckValidation && htmlEditorValidationState?.hasErrors === true;
|
|
85
|
-
console.log('***hasValidationErrors', hasValidationErrors);
|
|
86
|
-
const errorsAcknowledged = shouldCheckValidation ? (htmlEditorValidationState?.errorsAcknowledged ?? false) : true;
|
|
87
|
-
console.log('***errorsAcknowledged', errorsAcknowledged);
|
|
88
|
-
|
|
89
|
-
// IMPORTANT: In both modes, if validation finds errors, buttons must stay disabled until user acknowledges by clicking redirection icon
|
|
90
|
-
let shouldDisableButtons = false;
|
|
91
|
-
if (shouldCheckValidation) {
|
|
92
|
-
if (isEditMode) {
|
|
93
|
-
// Edit mode: Disable if validation has completed AND found errors AND errors not acknowledged
|
|
94
|
-
shouldDisableButtons = validationComplete && hasValidationErrors && !errorsAcknowledged;
|
|
95
|
-
} else {
|
|
96
|
-
// Create mode:
|
|
97
|
-
// 1. Disable until validation completes
|
|
98
|
-
// 2. Disable if content is empty
|
|
99
|
-
// 3. Disable if validation finds errors AND errors not acknowledged (user must click redirection icon)
|
|
100
|
-
shouldDisableButtons = !validationComplete || isContentEmpty || (hasValidationErrors && !errorsAcknowledged);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Show ErrorInfoNote for API validation errors (from validateLiquidTemplateContent)
|
|
105
|
-
// For HTML Editor: API validation errors are shown in ValidationErrorDisplay (inside CodeEditorPane), not here
|
|
106
|
-
const hasStandardErrors = errorMessages && errorMessages.STANDARD_ERROR_MSG && errorMessages.STANDARD_ERROR_MSG.length > 0;
|
|
107
|
-
const hasLiquidErrors = errorMessages && errorMessages.LIQUID_ERROR_MSG && errorMessages.LIQUID_ERROR_MSG.length > 0;
|
|
108
|
-
|
|
109
|
-
// Check if htmlEditorValidationState has actual validation errors
|
|
110
|
-
// If htmlEditorValidationState exists but has no errors (total === 0), and we have STANDARD/LIQUID errors,
|
|
111
|
-
// then those errors are from BEE editor (FormBuilder validation), not HTML Editor
|
|
112
|
-
const htmlEditorHasErrors = htmlEditorValidationState && htmlEditorValidationState.issueCounts && htmlEditorValidationState.issueCounts.total > 0;
|
|
113
|
-
|
|
114
|
-
// BEE editor errors: We have STANDARD/LIQUID errors AND either:
|
|
115
|
-
// 1. No htmlEditorValidationState exists, OR
|
|
116
|
-
// 2. htmlEditorValidationState exists but has no actual errors (meaning errors are from FormBuilder/BEE editor)
|
|
117
|
-
// IMPORTANT: Only check for BEE editor errors when NOT in HTML Editor mode (upload or html_editor)
|
|
118
|
-
// Upload mode uses HTML Editor, so BEE editor errors don't apply
|
|
119
|
-
// IMPORTANT: BEE editor doesn't have real-time content updates,
|
|
120
|
-
// so we should NOT disable buttons based on validation errors
|
|
121
|
-
// In edit mode: Check if htmlEditorValidationState is in initial state (not updated by HTML Editor)
|
|
122
|
-
// In edit mode with BEE editor, htmlEditorValidationState will remain in initial state
|
|
123
|
-
// In create mode, check selectedEmailCreateMode or emailCreateMode
|
|
124
|
-
const isBEEEditorModeInEdit = isEditMode && !isHtmlEditorValidationStateActive;
|
|
125
|
-
console.log('***isBEEEditorModeInEdit', isBEEEditorModeInEdit, 'isHtmlEditorValidationStateActive', isHtmlEditorValidationStateActive);
|
|
126
|
-
const isBEEEditorModeInCreate = !isHTMLEditorMode && !isEditMode;
|
|
127
|
-
console.log('***isBEEEditorModeInCreate', isBEEEditorModeInCreate);
|
|
128
|
-
const isBEEEditorMode = isBEEEditorModeInEdit || isBEEEditorModeInCreate;
|
|
129
|
-
console.log('***isBEEEditorMode', isBEEEditorMode);
|
|
130
|
-
const hasBEEEditorErrors = isEmailChannel && isBEEEditorMode && (hasStandardErrors || hasLiquidErrors) && (!htmlEditorValidationState || !htmlEditorHasErrors);
|
|
131
|
-
console.log('***hasBEEEditorErrors', hasBEEEditorErrors);
|
|
132
|
-
|
|
133
|
-
const shouldShowErrorInfoNote = hasBEEEditorErrors;
|
|
134
36
|
return (
|
|
135
|
-
<div className=
|
|
136
|
-
{
|
|
137
|
-
<ErrorInfoNote
|
|
138
|
-
errorMessages={errorMessages}
|
|
139
|
-
currentTab={currentTab?.toUpperCase()}
|
|
140
|
-
useLegacyDisplay // Use simple list display for BEE Editor (not tabbed interface)
|
|
141
|
-
/>
|
|
142
|
-
)}
|
|
37
|
+
<div className='template-footer-width'>
|
|
38
|
+
{isLiquidValidationError && (<ErrorInfoNote errorMessages={errorMessages} currentTab={currentTab?.toUpperCase()} />)}
|
|
143
39
|
<div>
|
|
144
40
|
{shouldShowDoneFooter() && (
|
|
145
41
|
<div>
|
|
@@ -151,10 +47,10 @@ function SlideBoxFooter(props) {
|
|
|
151
47
|
<CapRow>
|
|
152
48
|
<CapButton
|
|
153
49
|
onClick={onSave}
|
|
154
|
-
disabled={isTemplateNameEmpty || fetchingCmsData ||
|
|
50
|
+
disabled={isTemplateNameEmpty || fetchingCmsData || false}
|
|
155
51
|
>
|
|
156
52
|
{isFullMode ? (
|
|
157
|
-
getFullModeSaveBtn(slidBoxContent
|
|
53
|
+
getFullModeSaveBtn(slidBoxContent)
|
|
158
54
|
) : (
|
|
159
55
|
<FormattedMessage {...messages.creativesTemplatesSave} />
|
|
160
56
|
)}
|
|
@@ -163,7 +59,7 @@ function SlideBoxFooter(props) {
|
|
|
163
59
|
<CapButton
|
|
164
60
|
type="secondary"
|
|
165
61
|
onClick={onTestAndPreview}
|
|
166
|
-
disabled={
|
|
62
|
+
// disabled={isEmptyContent || false}
|
|
167
63
|
style={{ marginLeft: '8px' }}
|
|
168
64
|
>
|
|
169
65
|
<FormattedMessage {...messages.testAndPreview} />
|
|
@@ -174,11 +70,8 @@ function SlideBoxFooter(props) {
|
|
|
174
70
|
</div>
|
|
175
71
|
)}
|
|
176
72
|
{shouldShowContinueFooter() && (
|
|
177
|
-
<CapButton
|
|
178
|
-
|
|
179
|
-
disabled={isContinueButtonDisabled || false}
|
|
180
|
-
>
|
|
181
|
-
<FormattedMessage {...(continueButtonLabel || messages.continue)} />
|
|
73
|
+
<CapButton onClick={onCreateNextStep}>
|
|
74
|
+
<FormattedMessage {...messages.continue} />
|
|
182
75
|
</CapButton>
|
|
183
76
|
)}
|
|
184
77
|
{slidBoxContent === PREVIEW && (
|
|
@@ -206,48 +99,5 @@ SlideBoxFooter.propTypes = {
|
|
|
206
99
|
onTestAndPreview: PropTypes.func,
|
|
207
100
|
isEmptyContent: PropTypes.bool,
|
|
208
101
|
showTestAndPreviewButton: PropTypes.bool,
|
|
209
|
-
isContinueButtonDisabled: PropTypes.bool,
|
|
210
|
-
continueButtonLabel: PropTypes.object,
|
|
211
|
-
htmlEditorValidationState: PropTypes.shape({
|
|
212
|
-
isContentEmpty: PropTypes.bool,
|
|
213
|
-
issueCounts: PropTypes.shape({
|
|
214
|
-
html: PropTypes.number,
|
|
215
|
-
label: PropTypes.number,
|
|
216
|
-
liquid: PropTypes.number,
|
|
217
|
-
total: PropTypes.number,
|
|
218
|
-
}),
|
|
219
|
-
validationComplete: PropTypes.bool,
|
|
220
|
-
/** Only Rule Group #1 (Input & Sanitization) blocks; warnings do not block */
|
|
221
|
-
hasErrors: PropTypes.bool,
|
|
222
|
-
}),
|
|
223
|
-
isCreatingTemplate: PropTypes.bool,
|
|
224
|
-
currentChannel: PropTypes.string,
|
|
225
|
-
emailCreateMode: PropTypes.string,
|
|
226
|
-
selectedEmailCreateMode: PropTypes.string,
|
|
227
|
-
};
|
|
228
|
-
|
|
229
|
-
SlideBoxFooter.defaultProps = {
|
|
230
|
-
slidBoxContent: '',
|
|
231
|
-
onSave: () => {},
|
|
232
|
-
onEditTemplate: () => {},
|
|
233
|
-
onCreateNextStep: () => {},
|
|
234
|
-
shouldShowContinueFooter: () => {},
|
|
235
|
-
shouldShowDoneFooter: () => {},
|
|
236
|
-
isFullMode: false,
|
|
237
|
-
fetchingCmsData: false,
|
|
238
|
-
isTemplateNameEmpty: false,
|
|
239
|
-
errorMessages: [],
|
|
240
|
-
isLiquidValidationError: false,
|
|
241
|
-
currentTab: '',
|
|
242
|
-
onTestAndPreview: () => {},
|
|
243
|
-
isEmptyContent: false,
|
|
244
|
-
showTestAndPreviewButton: false,
|
|
245
|
-
isContinueButtonDisabled: false,
|
|
246
|
-
continueButtonLabel: {},
|
|
247
|
-
htmlEditorValidationState: {},
|
|
248
|
-
isCreatingTemplate: false,
|
|
249
|
-
currentChannel: '',
|
|
250
|
-
emailCreateMode: '',
|
|
251
|
-
selectedEmailCreateMode: '',
|
|
252
102
|
};
|
|
253
103
|
export default SlideBoxFooter;
|
|
@@ -45,7 +45,6 @@ export function SlideBoxHeader(props) {
|
|
|
45
45
|
const isZaloEdit = channel.toLowerCase() === ZALO && slidBoxContent === 'editTemplate';
|
|
46
46
|
const zaloOverview = isZaloEdit && isFullMode;
|
|
47
47
|
const whatsappOverview = isWhatsappEdit && isFullMode;
|
|
48
|
-
const shouldShowInAppEditHeader = isInAppEdit && !isFullMode;
|
|
49
48
|
const headerMessage = whatsappOverview ? messages.whatsappOverview : zaloOverview ? messages.zaloOverview : messages.editMessageContent;
|
|
50
49
|
const {
|
|
51
50
|
whatsappTemplateName,
|
|
@@ -72,7 +71,6 @@ export function SlideBoxHeader(props) {
|
|
|
72
71
|
rcs: <FormattedMessage {...messages.rcsCreative} />,
|
|
73
72
|
zalo: <FormattedMessage {...messages.zaloTemplate} />,
|
|
74
73
|
viber: <FormattedMessage {...messages.viberTemplate} />,
|
|
75
|
-
webpush: <FormattedMessage {...messages.webPushTemplate} />,
|
|
76
74
|
};
|
|
77
75
|
return labels[currentChannel.toLowerCase()];
|
|
78
76
|
};
|
|
@@ -111,7 +109,7 @@ export function SlideBoxHeader(props) {
|
|
|
111
109
|
}
|
|
112
110
|
/>
|
|
113
111
|
)}
|
|
114
|
-
{!showTemplateNameHeader && slidBoxContent === 'editTemplate' && (
|
|
112
|
+
{!showTemplateNameHeader && slidBoxContent === 'editTemplate' && (
|
|
115
113
|
<CapHeader
|
|
116
114
|
className="support-video-elements"
|
|
117
115
|
title={<FormattedMessage {...headerMessage} values={{ channel: getChannelLabel(channel) }} />}
|
|
@@ -21,12 +21,9 @@ export const PUSH = "PUSH";
|
|
|
21
21
|
export const RCS = "RCS";
|
|
22
22
|
export const ZALO = "ZALO";
|
|
23
23
|
export const INAPP = "INAPP";
|
|
24
|
-
export const WEBPUSH = "WEBPUSH";
|
|
25
|
-
export const WEBPUSH_BRAND_ICON = "WEBPUSH_BRAND_ICON";
|
|
26
24
|
export const PREVIEW = "preview";
|
|
27
25
|
export const EDIT_TEMPLATE = "editTemplate";
|
|
28
26
|
export const JOURNEY = "journey";
|
|
29
|
-
export const HTML = "HTML";
|
|
30
27
|
|
|
31
28
|
export const LOYALTY_SUPPORTED_ACTION = "SEND_COMMUNICATION_ACTION";
|
|
32
29
|
|
|
@@ -51,4 +48,3 @@ export const BIG_TEXT = "BIG_TEXT";
|
|
|
51
48
|
export const GENERIC = "GENERIC";
|
|
52
49
|
export const LIQUID_ERROR_MSG = "LIQUID_ERROR_MSG";
|
|
53
50
|
export const STANDARD_ERROR_MSG = "STANDARD_ERROR_MSG";
|
|
54
|
-
export const COMMON_CHANNELS = ['sms', 'email', 'wechat', 'mobilepush', 'webpush', 'line', 'viber', 'facebook', 'call_task', 'ftp', 'assets'];
|