@capillarytech/creatives-library 8.0.263 → 8.0.265
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/Android.png +0 -0
- package/assets/iOS.png +0 -0
- package/constants/unified.js +1 -3
- package/initialReducer.js +0 -2
- package/package.json +1 -1
- package/services/api.js +0 -15
- package/services/tests/api.test.js +0 -34
- package/tests/integration/TemplateCreation/TemplateCreation.integration.test.js +35 -17
- package/tests/integration/TemplateCreation/api-response.js +1 -31
- package/tests/integration/TemplateCreation/msw-handler.js +0 -2
- package/utils/common.js +0 -11
- package/utils/commonUtils.js +5 -28
- package/utils/tests/commonUtil.test.js +0 -224
- package/utils/tests/transformerUtils.test.js +0 -297
- package/utils/transformTemplateConfig.js +10 -0
- package/utils/transformerUtils.js +0 -40
- package/v2Components/CapDeviceContent/index.js +56 -61
- package/v2Components/CapImageUpload/constants.js +0 -2
- package/v2Components/CapImageUpload/index.js +16 -65
- package/v2Components/CapImageUpload/index.scss +1 -4
- package/v2Components/CapImageUpload/messages.js +1 -5
- package/v2Components/CapTagList/index.js +1 -6
- package/v2Components/CapTagListWithInput/index.js +1 -5
- package/v2Components/CapTagListWithInput/messages.js +1 -1
- package/v2Components/CapWhatsappCTA/tests/index.test.js +0 -5
- package/v2Components/ErrorInfoNote/index.js +72 -402
- package/v2Components/ErrorInfoNote/messages.js +6 -32
- package/v2Components/ErrorInfoNote/style.scss +6 -278
- package/v2Components/FormBuilder/tests/index.test.js +4 -13
- package/v2Components/HtmlEditor/HTMLEditor.js +99 -418
- package/v2Components/HtmlEditor/__tests__/HTMLEditor.test.js +133 -1882
- package/v2Components/HtmlEditor/__tests__/index.lazy.test.js +16 -27
- package/v2Components/HtmlEditor/_htmlEditor.scss +45 -108
- package/v2Components/HtmlEditor/_index.lazy.scss +1 -0
- package/v2Components/HtmlEditor/components/CodeEditorPane/_codeEditorPane.scss +102 -23
- package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +140 -148
- package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +1 -2
- package/v2Components/HtmlEditor/components/DeviceToggle/index.js +3 -3
- package/v2Components/HtmlEditor/components/EditorToolbar/_editorToolbar.scss +1 -9
- package/v2Components/HtmlEditor/components/EditorToolbar/index.js +6 -31
- package/v2Components/HtmlEditor/components/FullscreenModal/_fullscreenModal.scss +0 -22
- package/v2Components/HtmlEditor/components/InAppPreviewPane/DeviceFrame.js +7 -4
- package/v2Components/HtmlEditor/components/InAppPreviewPane/__tests__/DeviceFrame.test.js +45 -35
- package/v2Components/HtmlEditor/components/InAppPreviewPane/_inAppPreviewPane.scss +3 -1
- package/v2Components/HtmlEditor/components/InAppPreviewPane/constants.js +33 -33
- package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +6 -7
- package/v2Components/HtmlEditor/components/PreviewPane/_previewPane.scss +10 -7
- package/v2Components/HtmlEditor/components/PreviewPane/index.js +43 -22
- package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +1 -1
- package/v2Components/HtmlEditor/components/ValidationErrorDisplay/__tests__/index.test.js +152 -0
- package/v2Components/HtmlEditor/components/ValidationErrorDisplay/_validationErrorDisplay.scss +0 -18
- package/v2Components/HtmlEditor/components/ValidationErrorDisplay/index.js +31 -36
- package/v2Components/HtmlEditor/components/ValidationPanel/_validationPanel.scss +34 -46
- package/v2Components/HtmlEditor/components/ValidationPanel/index.js +46 -52
- package/v2Components/HtmlEditor/constants.js +20 -45
- package/v2Components/HtmlEditor/hooks/__tests__/useInAppContent.test.js +16 -373
- package/v2Components/HtmlEditor/hooks/__tests__/useValidation.test.js +16 -351
- package/v2Components/HtmlEditor/hooks/useEditorContent.js +2 -5
- package/v2Components/HtmlEditor/hooks/useInAppContent.js +146 -88
- package/v2Components/HtmlEditor/hooks/useValidation.js +56 -213
- package/v2Components/HtmlEditor/index.js +1 -1
- package/v2Components/HtmlEditor/messages.js +94 -102
- package/v2Components/HtmlEditor/utils/__tests__/htmlValidator.enhanced.test.js +45 -214
- package/v2Components/HtmlEditor/utils/__tests__/validationAdapter.test.js +0 -134
- package/v2Components/HtmlEditor/utils/contentSanitizer.js +41 -40
- package/v2Components/HtmlEditor/utils/htmlValidator.js +72 -71
- package/v2Components/HtmlEditor/utils/liquidTemplateSupport.js +124 -158
- package/v2Components/HtmlEditor/utils/properSyntaxHighlighting.js +25 -23
- package/v2Components/HtmlEditor/utils/validationAdapter.js +41 -66
- package/v2Components/MobilePushPreviewV2/index.js +7 -33
- package/v2Components/TemplatePreview/_templatePreview.scss +24 -55
- package/v2Components/TemplatePreview/index.js +32 -47
- package/v2Components/TemplatePreview/messages.js +0 -4
- package/v2Components/TestAndPreviewSlidebox/_testAndPreviewSlidebox.scss +0 -1
- package/v2Containers/App/constants.js +0 -5
- package/v2Containers/BeeEditor/index.js +90 -172
- package/v2Containers/CreativesContainer/SlideBoxContent.js +53 -184
- package/v2Containers/CreativesContainer/SlideBoxFooter.js +13 -163
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -3
- package/v2Containers/CreativesContainer/constants.js +0 -4
- package/v2Containers/CreativesContainer/index.js +46 -408
- package/v2Containers/CreativesContainer/messages.js +0 -12
- package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +0 -210
- package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +2 -11
- package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +50 -342
- package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +0 -103
- package/v2Containers/Email/actions.js +0 -7
- package/v2Containers/Email/constants.js +1 -5
- package/v2Containers/Email/index.js +36 -237
- package/v2Containers/Email/messages.js +0 -32
- package/v2Containers/Email/reducer.js +1 -12
- package/v2Containers/Email/sagas.js +7 -61
- package/v2Containers/Email/tests/__snapshots__/reducer.test.js.snap +0 -2
- package/v2Containers/Email/tests/reducer.test.js +0 -46
- package/v2Containers/Email/tests/sagas.test.js +29 -320
- package/v2Containers/EmailWrapper/components/EmailWrapperView.js +21 -211
- package/v2Containers/EmailWrapper/components/HTMLEditorTesting.js +74 -40
- package/v2Containers/EmailWrapper/components/__tests__/HTMLEditorTesting.test.js +67 -2
- package/v2Containers/EmailWrapper/constants.js +0 -2
- package/v2Containers/EmailWrapper/hooks/useEmailWrapper.js +77 -629
- package/v2Containers/EmailWrapper/index.js +23 -103
- package/v2Containers/EmailWrapper/messages.js +1 -65
- package/v2Containers/EmailWrapper/tests/EmailWrapperView.test.js +214 -0
- package/v2Containers/EmailWrapper/tests/useEmailWrapper.test.js +77 -594
- package/v2Containers/InApp/actions.js +0 -7
- package/v2Containers/InApp/constants.js +4 -20
- package/v2Containers/InApp/index.js +359 -802
- package/v2Containers/InApp/index.scss +3 -4
- package/v2Containers/InApp/messages.js +3 -7
- package/v2Containers/InApp/reducer.js +3 -21
- package/v2Containers/InApp/sagas.js +9 -29
- package/v2Containers/InApp/selectors.js +5 -25
- package/v2Containers/InApp/tests/index.test.js +50 -154
- package/v2Containers/InApp/tests/reducer.test.js +0 -34
- package/v2Containers/InApp/tests/sagas.test.js +9 -61
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +0 -3
- package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +0 -2
- package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +0 -2
- package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +0 -9
- package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +0 -12
- package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +0 -4
- package/v2Containers/TagList/index.js +19 -62
- package/v2Containers/Templates/ChannelTypeIllustration.js +1 -13
- package/v2Containers/Templates/_templates.scss +1 -265
- package/v2Containers/Templates/actions.js +1 -2
- package/v2Containers/Templates/constants.js +0 -1
- package/v2Containers/Templates/index.js +38 -363
- package/v2Containers/Templates/messages.js +0 -28
- package/v2Containers/Templates/reducer.js +0 -2
- package/v2Containers/Templates/tests/index.test.js +0 -10
- package/v2Containers/TemplatesV2/TemplatesV2.style.js +2 -4
- package/v2Containers/TemplatesV2/index.js +7 -15
- package/v2Containers/TemplatesV2/messages.js +0 -4
- package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +0 -34
- package/utils/imageUrlUpload.js +0 -141
- package/v2Components/CapImageUrlUpload/constants.js +0 -26
- package/v2Components/CapImageUrlUpload/index.js +0 -365
- package/v2Components/CapImageUrlUpload/index.scss +0 -35
- package/v2Components/CapImageUrlUpload/messages.js +0 -47
- package/v2Components/ErrorInfoNote/constants.js +0 -1
- package/v2Components/HtmlEditor/__tests__/HTMLEditor.apiErrors.test.js +0 -870
- package/v2Components/HtmlEditor/components/ValidationPanel/constants.js +0 -6
- package/v2Components/HtmlEditor/components/ValidationTabs/_validationTabs.scss +0 -281
- package/v2Components/HtmlEditor/components/ValidationTabs/index.js +0 -295
- package/v2Components/HtmlEditor/components/ValidationTabs/messages.js +0 -51
- package/v2Components/HtmlEditor/utils/validationConstants.js +0 -38
- package/v2Components/MobilePushPreviewV2/constants.js +0 -6
- package/v2Containers/BeePopupEditor/_beePopupEditor.scss +0 -14
- package/v2Containers/BeePopupEditor/constants.js +0 -10
- package/v2Containers/BeePopupEditor/index.js +0 -194
- package/v2Containers/BeePopupEditor/tests/index.test.js +0 -627
- package/v2Containers/EmailWrapper/components/EmailHTMLEditor.js +0 -1246
- package/v2Containers/EmailWrapper/components/__tests__/EmailHTMLEditor.test.js +0 -2472
- package/v2Containers/EmailWrapper/components/__tests__/EmailWrapperView.test.js +0 -520
- package/v2Containers/EmailWrapper/tests/useEmailWrapper.edgeCases.test.js +0 -956
- package/v2Containers/InApp/__tests__/InAppHTMLEditor.test.js +0 -376
- package/v2Containers/InApp/__tests__/sagas.test.js +0 -363
- package/v2Containers/InApp/tests/selectors.test.js +0 -612
- package/v2Containers/InAppWrapper/components/InAppWrapperView.js +0 -151
- package/v2Containers/InAppWrapper/components/__tests__/InAppWrapperView.test.js +0 -267
- package/v2Containers/InAppWrapper/components/inAppWrapperView.scss +0 -23
- package/v2Containers/InAppWrapper/constants.js +0 -16
- package/v2Containers/InAppWrapper/hooks/__tests__/useInAppWrapper.test.js +0 -473
- package/v2Containers/InAppWrapper/hooks/useInAppWrapper.js +0 -198
- package/v2Containers/InAppWrapper/index.js +0 -148
- package/v2Containers/InAppWrapper/messages.js +0 -49
- package/v2Containers/InappAdvance/index.js +0 -1099
- package/v2Containers/InappAdvance/index.scss +0 -10
- package/v2Containers/InappAdvance/tests/index.test.js +0 -448
- package/v2Containers/WebPush/Create/components/BrandIconSection.js +0 -108
- package/v2Containers/WebPush/Create/components/ButtonForm.js +0 -172
- package/v2Containers/WebPush/Create/components/ButtonItem.js +0 -101
- package/v2Containers/WebPush/Create/components/ButtonList.js +0 -145
- package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +0 -164
- package/v2Containers/WebPush/Create/components/ButtonsLinksSection.test.js +0 -463
- package/v2Containers/WebPush/Create/components/FormActions.js +0 -54
- package/v2Containers/WebPush/Create/components/FormActions.test.js +0 -163
- package/v2Containers/WebPush/Create/components/MediaSection.js +0 -142
- package/v2Containers/WebPush/Create/components/MediaSection.test.js +0 -341
- package/v2Containers/WebPush/Create/components/MessageSection.js +0 -103
- package/v2Containers/WebPush/Create/components/MessageSection.test.js +0 -268
- package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +0 -87
- package/v2Containers/WebPush/Create/components/NotificationTitleSection.test.js +0 -210
- package/v2Containers/WebPush/Create/components/TemplateNameSection.js +0 -54
- package/v2Containers/WebPush/Create/components/TemplateNameSection.test.js +0 -143
- package/v2Containers/WebPush/Create/components/__snapshots__/ButtonsLinksSection.test.js.snap +0 -86
- package/v2Containers/WebPush/Create/components/__snapshots__/FormActions.test.js.snap +0 -16
- package/v2Containers/WebPush/Create/components/__snapshots__/MediaSection.test.js.snap +0 -41
- package/v2Containers/WebPush/Create/components/__snapshots__/MessageSection.test.js.snap +0 -54
- package/v2Containers/WebPush/Create/components/__snapshots__/NotificationTitleSection.test.js.snap +0 -37
- package/v2Containers/WebPush/Create/components/__snapshots__/TemplateNameSection.test.js.snap +0 -21
- package/v2Containers/WebPush/Create/components/_buttons.scss +0 -246
- package/v2Containers/WebPush/Create/components/tests/ButtonForm.test.js +0 -554
- package/v2Containers/WebPush/Create/components/tests/ButtonItem.test.js +0 -607
- package/v2Containers/WebPush/Create/components/tests/ButtonList.test.js +0 -633
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonForm.test.js.snap +0 -666
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonItem.test.js.snap +0 -74
- package/v2Containers/WebPush/Create/components/tests/__snapshots__/ButtonList.test.js.snap +0 -78
- package/v2Containers/WebPush/Create/hooks/useButtonManagement.js +0 -138
- package/v2Containers/WebPush/Create/hooks/useButtonManagement.test.js +0 -406
- package/v2Containers/WebPush/Create/hooks/useCharacterCount.js +0 -30
- package/v2Containers/WebPush/Create/hooks/useCharacterCount.test.js +0 -151
- package/v2Containers/WebPush/Create/hooks/useImageUpload.js +0 -104
- package/v2Containers/WebPush/Create/hooks/useImageUpload.test.js +0 -538
- package/v2Containers/WebPush/Create/hooks/useTagManagement.js +0 -122
- package/v2Containers/WebPush/Create/hooks/useTagManagement.test.js +0 -633
- package/v2Containers/WebPush/Create/index.js +0 -1148
- package/v2Containers/WebPush/Create/index.scss +0 -134
- package/v2Containers/WebPush/Create/messages.js +0 -211
- package/v2Containers/WebPush/Create/preview/DevicePreviewContent.js +0 -228
- package/v2Containers/WebPush/Create/preview/NotificationContainer.js +0 -294
- package/v2Containers/WebPush/Create/preview/PreviewContent.js +0 -90
- package/v2Containers/WebPush/Create/preview/PreviewControls.js +0 -305
- package/v2Containers/WebPush/Create/preview/PreviewDisclaimer.js +0 -25
- package/v2Containers/WebPush/Create/preview/WebPushPreview.js +0 -155
- package/v2Containers/WebPush/Create/preview/assets/Light.svg +0 -53
- package/v2Containers/WebPush/Create/preview/assets/Top.svg +0 -5
- package/v2Containers/WebPush/Create/preview/assets/android-arrow-down.svg +0 -9
- package/v2Containers/WebPush/Create/preview/assets/android-arrow-up.svg +0 -9
- package/v2Containers/WebPush/Create/preview/assets/chrome-icon.png +0 -0
- package/v2Containers/WebPush/Create/preview/assets/edge-icon.png +0 -0
- package/v2Containers/WebPush/Create/preview/assets/firefox-icon.svg +0 -106
- package/v2Containers/WebPush/Create/preview/assets/iOS.svg +0 -26
- package/v2Containers/WebPush/Create/preview/assets/macos-arrow-down-icon.svg +0 -9
- package/v2Containers/WebPush/Create/preview/assets/macos-triple-dot-icon.svg +0 -9
- package/v2Containers/WebPush/Create/preview/assets/opera-icon.svg +0 -18
- package/v2Containers/WebPush/Create/preview/assets/safari-icon.svg +0 -29
- package/v2Containers/WebPush/Create/preview/assets/windows-close-icon.svg +0 -9
- package/v2Containers/WebPush/Create/preview/assets/windows-triple-dot-icon.svg +0 -9
- package/v2Containers/WebPush/Create/preview/components/AndroidMobileChromeHeader.js +0 -51
- package/v2Containers/WebPush/Create/preview/components/AndroidMobileExpanded.js +0 -145
- package/v2Containers/WebPush/Create/preview/components/IOSHeader.js +0 -45
- package/v2Containers/WebPush/Create/preview/components/NotificationExpandedContent.js +0 -68
- package/v2Containers/WebPush/Create/preview/components/NotificationHeader.js +0 -61
- package/v2Containers/WebPush/Create/preview/components/WindowsChromeExpanded.js +0 -99
- package/v2Containers/WebPush/Create/preview/components/tests/AndroidMobileExpanded.test.js +0 -733
- package/v2Containers/WebPush/Create/preview/components/tests/WindowsChromeExpanded.test.js +0 -571
- package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/AndroidMobileExpanded.test.js.snap +0 -85
- package/v2Containers/WebPush/Create/preview/components/tests/__snapshots__/WindowsChromeExpanded.test.js.snap +0 -81
- package/v2Containers/WebPush/Create/preview/config/notificationMappings.js +0 -50
- package/v2Containers/WebPush/Create/preview/constants.js +0 -637
- package/v2Containers/WebPush/Create/preview/notification-container.scss +0 -79
- package/v2Containers/WebPush/Create/preview/preview.scss +0 -358
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-chrome.scss +0 -370
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-edge.scss +0 -12
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-firefox.scss +0 -12
- package/v2Containers/WebPush/Create/preview/styles/_android-mobile-opera.scss +0 -12
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-chrome.scss +0 -47
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-edge.scss +0 -11
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-firefox.scss +0 -11
- package/v2Containers/WebPush/Create/preview/styles/_android-tablet-opera.scss +0 -11
- package/v2Containers/WebPush/Create/preview/styles/_base.scss +0 -207
- package/v2Containers/WebPush/Create/preview/styles/_ios.scss +0 -153
- package/v2Containers/WebPush/Create/preview/styles/_ipados.scss +0 -107
- package/v2Containers/WebPush/Create/preview/styles/_macos-chrome.scss +0 -101
- package/v2Containers/WebPush/Create/preview/styles/_windows-chrome.scss +0 -229
- package/v2Containers/WebPush/Create/preview/tests/DevicePreviewContent.test.js +0 -909
- package/v2Containers/WebPush/Create/preview/tests/NotificationContainer.test.js +0 -1081
- package/v2Containers/WebPush/Create/preview/tests/PreviewControls.test.js +0 -723
- package/v2Containers/WebPush/Create/preview/tests/WebPushPreview.test.js +0 -1327
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/DevicePreviewContent.test.js.snap +0 -131
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/NotificationContainer.test.js.snap +0 -112
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/PreviewControls.test.js.snap +0 -144
- package/v2Containers/WebPush/Create/preview/tests/__snapshots__/WebPushPreview.test.js.snap +0 -129
- package/v2Containers/WebPush/Create/utils/payloadBuilder.js +0 -96
- package/v2Containers/WebPush/Create/utils/payloadBuilder.test.js +0 -396
- package/v2Containers/WebPush/Create/utils/previewUtils.js +0 -89
- package/v2Containers/WebPush/Create/utils/urlValidation.js +0 -115
- package/v2Containers/WebPush/Create/utils/urlValidation.test.js +0 -449
- package/v2Containers/WebPush/Create/utils/validation.js +0 -75
- package/v2Containers/WebPush/Create/utils/validation.test.js +0 -283
- package/v2Containers/WebPush/actions.js +0 -60
- package/v2Containers/WebPush/constants.js +0 -132
- package/v2Containers/WebPush/index.js +0 -2
- package/v2Containers/WebPush/reducer.js +0 -104
- package/v2Containers/WebPush/sagas.js +0 -119
- package/v2Containers/WebPush/selectors.js +0 -65
- package/v2Containers/WebPush/tests/reducer.test.js +0 -863
- package/v2Containers/WebPush/tests/sagas.test.js +0 -566
- package/v2Containers/WebPush/tests/selectors.test.js +0 -960
|
@@ -1,389 +1,21 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import PropTypes from
|
|
3
|
-
import CapRow from
|
|
4
|
-
import CapButton from
|
|
5
|
-
import CapIcon from
|
|
6
|
-
import CapLabel from
|
|
7
|
-
import
|
|
8
|
-
import CapTooltip from '@capillarytech/cap-ui-library/CapTooltip';
|
|
1
|
+
import React from "react";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
import CapRow from "@capillarytech/cap-ui-library/CapRow";
|
|
4
|
+
import CapButton from "@capillarytech/cap-ui-library/CapButton";
|
|
5
|
+
import CapIcon from "@capillarytech/cap-ui-library/CapIcon";
|
|
6
|
+
import CapLabel from "@capillarytech/cap-ui-library/CapLabel";
|
|
7
|
+
import CapList from "@capillarytech/cap-ui-library/CapList";
|
|
9
8
|
import {
|
|
10
9
|
FormattedMessage,
|
|
10
|
+
FormattedNumber,
|
|
11
11
|
injectIntl,
|
|
12
|
-
} from
|
|
13
|
-
import
|
|
14
|
-
import messages from
|
|
15
|
-
import { processErrors } from
|
|
16
|
-
import ErrorTypeRenderer from
|
|
17
|
-
import { ANDROID, GENERIC, IOS } from
|
|
18
|
-
import { ERROR_TAB_KEYS } from '../HtmlEditor/utils/validationConstants';
|
|
19
|
-
import { SEVERITY } from '../HtmlEditor/components/ValidationPanel/constants';
|
|
20
|
-
import { LIQUID_DOC_URL } from './constants';
|
|
12
|
+
} from "react-intl";
|
|
13
|
+
import "./style.scss";
|
|
14
|
+
import messages from "./messages";
|
|
15
|
+
import { processErrors } from "./utils";
|
|
16
|
+
import ErrorTypeRenderer from "./ErrorTypeRenderer";
|
|
17
|
+
import { ANDROID, GENERIC, IOS } from "../../v2Containers/CreativesContainer/constants";
|
|
21
18
|
|
|
22
|
-
const { CapLabelInline } = CapLabel;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Group messages into Errors (blocking) and Warnings (non-blocking).
|
|
26
|
-
* STANDARD_ERROR_MSG + LIQUID_ERROR_MSG = errors; optional STANDARD_WARNING_MSG = warnings.
|
|
27
|
-
*/
|
|
28
|
-
const groupByErrorsAndWarnings = (standardErrors, liquidErrors, standardWarnings = []) => {
|
|
29
|
-
const errors = [];
|
|
30
|
-
|
|
31
|
-
(standardErrors || []).forEach((message, index) => {
|
|
32
|
-
errors.push({
|
|
33
|
-
message,
|
|
34
|
-
severity: SEVERITY.ERROR,
|
|
35
|
-
index,
|
|
36
|
-
source: 'standard',
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
(liquidErrors || []).forEach((message, index) => {
|
|
41
|
-
errors.push({
|
|
42
|
-
message,
|
|
43
|
-
severity: SEVERITY.ERROR,
|
|
44
|
-
index,
|
|
45
|
-
source: 'liquid',
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
const warnings = (standardWarnings || []).map((message, index) => ({
|
|
50
|
-
message,
|
|
51
|
-
severity: SEVERITY.WARNING,
|
|
52
|
-
index,
|
|
53
|
-
source: 'standard',
|
|
54
|
-
}));
|
|
55
|
-
|
|
56
|
-
return { errors, warnings };
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Clean error message by removing line/char and rule parts
|
|
61
|
-
* @param {string} message - Original error message
|
|
62
|
-
* @param {RegExpMatchArray|null} lineMatch - Line number match result
|
|
63
|
-
* @param {RegExpMatchArray|null} charMatch - Character number match result
|
|
64
|
-
* @param {RegExpMatchArray|null} ruleMatch - Rule name match result
|
|
65
|
-
* @returns {string} Cleaned message without line/char/rule information
|
|
66
|
-
*/
|
|
67
|
-
const cleanErrorMessage = (message, lineMatch, charMatch, ruleMatch) => {
|
|
68
|
-
let displayMessage = message;
|
|
69
|
-
if (lineMatch) {
|
|
70
|
-
displayMessage = displayMessage.replace(/Line\s+\d+,?\s*/gi, '');
|
|
71
|
-
}
|
|
72
|
-
if (charMatch) {
|
|
73
|
-
displayMessage = displayMessage.replace(/Char\s+\d+\.?\s*/gi, '');
|
|
74
|
-
}
|
|
75
|
-
if (ruleMatch) {
|
|
76
|
-
displayMessage = displayMessage.replace(/•\s*[a-z-]+$/i, '');
|
|
77
|
-
}
|
|
78
|
-
return displayMessage.trim();
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Tab content component
|
|
83
|
-
*/
|
|
84
|
-
const TabContent = ({ issues, onErrorClick, intl }) => {
|
|
85
|
-
if (!issues || issues.length === 0) {
|
|
86
|
-
return null;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
const handleNavigateClick = (issue, e) => {
|
|
90
|
-
e.stopPropagation();
|
|
91
|
-
if (onErrorClick) {
|
|
92
|
-
onErrorClick(issue);
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
return (
|
|
97
|
-
<CapRow className="error-info-note__content">
|
|
98
|
-
{issues.map((issue, index) => {
|
|
99
|
-
const { severity, message } = issue;
|
|
100
|
-
const key = `${message}-${index}`;
|
|
101
|
-
|
|
102
|
-
// Parse line and char from message if present (format: "... Line X, Char Y.")
|
|
103
|
-
const lineMatch = message.match(/Line\s+(\d+)/i);
|
|
104
|
-
const charMatch = message.match(/Char\s+(\d+)/i);
|
|
105
|
-
const line = lineMatch ? parseInt(lineMatch[1], 10) : null;
|
|
106
|
-
const char = charMatch ? parseInt(charMatch[1], 10) : null;
|
|
107
|
-
|
|
108
|
-
// Extract rule from message (format: "... • rule-name")
|
|
109
|
-
const ruleMatch = message.match(/•\s*([a-z-]+)$/i);
|
|
110
|
-
const rule = ruleMatch ? ruleMatch[1] : null;
|
|
111
|
-
|
|
112
|
-
// Clean message (remove line/char and rule parts for display)
|
|
113
|
-
const displayMessage = cleanErrorMessage(message, lineMatch, charMatch, ruleMatch);
|
|
114
|
-
|
|
115
|
-
return (
|
|
116
|
-
<CapRow
|
|
117
|
-
key={key}
|
|
118
|
-
className={`error-info-note__item error-info-note__item--${severity || 'error'}`}
|
|
119
|
-
>
|
|
120
|
-
<CapRow className="error-info-note__item-content">
|
|
121
|
-
<CapLabelInline type="label2" className="error-info-note__item-message">
|
|
122
|
-
{displayMessage}
|
|
123
|
-
</CapLabelInline>
|
|
124
|
-
{line && (
|
|
125
|
-
<CapLabelInline type="label2" className="error-info-note__item-location">
|
|
126
|
-
<FormattedMessage {...messages.line} />
|
|
127
|
-
{' '}
|
|
128
|
-
{line}
|
|
129
|
-
{char ? (
|
|
130
|
-
<>
|
|
131
|
-
,
|
|
132
|
-
{' '}
|
|
133
|
-
<FormattedMessage {...messages.char} />
|
|
134
|
-
{' '}
|
|
135
|
-
{char}
|
|
136
|
-
</>
|
|
137
|
-
) : ''}
|
|
138
|
-
.
|
|
139
|
-
</CapLabelInline>
|
|
140
|
-
)}
|
|
141
|
-
{rule && (
|
|
142
|
-
<CapLabelInline type="label2" className="error-info-note__item-rule">
|
|
143
|
-
•
|
|
144
|
-
{' '}
|
|
145
|
-
{rule}
|
|
146
|
-
</CapLabelInline>
|
|
147
|
-
)}
|
|
148
|
-
</CapRow>
|
|
149
|
-
{onErrorClick && (
|
|
150
|
-
<CapTooltip title={intl?.formatMessage ? intl.formatMessage(messages.navigateToError) : 'Go to error location'}>
|
|
151
|
-
<CapButton
|
|
152
|
-
type="flat"
|
|
153
|
-
className="error-info-note__item-navigate"
|
|
154
|
-
onClick={(e) => handleNavigateClick({ ...issue, line, column: char }, e)}
|
|
155
|
-
aria-label={intl?.formatMessage ? intl.formatMessage(messages.navigateToError) : 'Go to error location'}
|
|
156
|
-
>
|
|
157
|
-
<CapIcon type="redirection" />
|
|
158
|
-
</CapButton>
|
|
159
|
-
</CapTooltip>
|
|
160
|
-
)}
|
|
161
|
-
</CapRow>
|
|
162
|
-
);
|
|
163
|
-
})}
|
|
164
|
-
</CapRow>
|
|
165
|
-
);
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
TabContent.propTypes = {
|
|
169
|
-
issues: PropTypes.array,
|
|
170
|
-
onErrorClick: PropTypes.func,
|
|
171
|
-
intl: PropTypes.object,
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
TabContent.defaultProps = {
|
|
175
|
-
issues: [],
|
|
176
|
-
onErrorClick: null,
|
|
177
|
-
intl: null,
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* ErrorInfoNote Component with Tabbed Interface
|
|
182
|
-
* @param {boolean} useLegacyDisplay - If true, uses simple list display instead of tabbed interface (for BEE Editor)
|
|
183
|
-
*/
|
|
184
|
-
export const ErrorInfoNote = (props) => {
|
|
185
|
-
const {
|
|
186
|
-
errorMessages,
|
|
187
|
-
onErrorClick,
|
|
188
|
-
onClose,
|
|
189
|
-
isLiquidEnabled = true,
|
|
190
|
-
intl,
|
|
191
|
-
useLegacyDisplay = false, // Use simple list display instead of tabs (for BEE Editor)
|
|
192
|
-
} = props;
|
|
193
|
-
|
|
194
|
-
const [isDismissed, setIsDismissed] = useState(false);
|
|
195
|
-
const [activeKey, setActiveKey] = useState(null);
|
|
196
|
-
|
|
197
|
-
const {
|
|
198
|
-
LIQUID_ERROR_MSG: rawLiquidErrors = [],
|
|
199
|
-
STANDARD_ERROR_MSG: rawStandardErrors = [],
|
|
200
|
-
STANDARD_WARNING_MSG: rawStandardWarnings = [],
|
|
201
|
-
} = errorMessages || {};
|
|
202
|
-
|
|
203
|
-
// Detect if platform-specific (ANDROID/IOS) or GENERIC
|
|
204
|
-
const isObject = typeof rawStandardErrors === 'object' && rawStandardErrors !== null;
|
|
205
|
-
const isNotArray = !Array.isArray(rawLiquidErrors);
|
|
206
|
-
const hasPlatformKeys = isObject && isNotArray && [ANDROID, IOS, GENERIC].some((key) => key in rawLiquidErrors);
|
|
207
|
-
|
|
208
|
-
// For platform-specific errors or when useLegacyDisplay is true, use the legacy renderer
|
|
209
|
-
if (hasPlatformKeys) {
|
|
210
|
-
// Process errors for both platforms - they use the same structure but different platform parameters
|
|
211
|
-
const createPlatformErrors = (platform) => ({
|
|
212
|
-
STANDARD: processErrors(rawStandardErrors, 'standard', platform, messages),
|
|
213
|
-
LIQUID: processErrors(rawLiquidErrors, 'liquid', platform, messages),
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
const androidErrors = createPlatformErrors(ANDROID);
|
|
217
|
-
const iosErrors = createPlatformErrors(IOS);
|
|
218
|
-
return (
|
|
219
|
-
<ErrorTypeRenderer
|
|
220
|
-
genericErrors={null}
|
|
221
|
-
androidErrors={androidErrors}
|
|
222
|
-
iosErrors={iosErrors}
|
|
223
|
-
ErrorSectionComponent={ErrorSection}
|
|
224
|
-
/>
|
|
225
|
-
);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
// For BEE Editor (useLegacyDisplay=true), use simple list display without tabs
|
|
229
|
-
if (useLegacyDisplay) {
|
|
230
|
-
const standardErrors = Array.isArray(rawStandardErrors) ? rawStandardErrors : [];
|
|
231
|
-
const liquidErrors = Array.isArray(rawLiquidErrors) ? rawLiquidErrors : [];
|
|
232
|
-
const hasStandardErrors = standardErrors.length > 0;
|
|
233
|
-
const hasLiquidErrors = liquidErrors.length > 0 && isLiquidEnabled;
|
|
234
|
-
|
|
235
|
-
if (!hasStandardErrors && !hasLiquidErrors) {
|
|
236
|
-
return null;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
return (
|
|
240
|
-
<CapRow className="error-container error-container--legacy">
|
|
241
|
-
{hasStandardErrors && (
|
|
242
|
-
<ErrorSection
|
|
243
|
-
title={<FormattedMessage {...messages.standardErrorHeader} />}
|
|
244
|
-
errors={standardErrors}
|
|
245
|
-
liquidError={false}
|
|
246
|
-
/>
|
|
247
|
-
)}
|
|
248
|
-
{hasLiquidErrors && (
|
|
249
|
-
<ErrorSection
|
|
250
|
-
title={<FormattedMessage {...messages.dynamicErrorHeader} />}
|
|
251
|
-
errors={liquidErrors}
|
|
252
|
-
liquidError
|
|
253
|
-
/>
|
|
254
|
-
)}
|
|
255
|
-
</CapRow>
|
|
256
|
-
);
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
// Group into Errors (blocking) and Warnings (non-blocking)
|
|
260
|
-
const { errors: errorIssues, warnings: warningIssues } = useMemo(() => groupByErrorsAndWarnings(
|
|
261
|
-
Array.isArray(rawStandardErrors) ? rawStandardErrors : [],
|
|
262
|
-
Array.isArray(rawLiquidErrors) ? rawLiquidErrors : [],
|
|
263
|
-
Array.isArray(rawStandardWarnings) ? rawStandardWarnings : [],
|
|
264
|
-
), [rawStandardErrors, rawLiquidErrors, rawStandardWarnings]);
|
|
265
|
-
|
|
266
|
-
const errorsCount = errorIssues.length;
|
|
267
|
-
const warningsCount = warningIssues.length;
|
|
268
|
-
const totalCount = errorsCount + warningsCount;
|
|
269
|
-
const hasLiquidErrors = Array.isArray(rawLiquidErrors) && rawLiquidErrors.length > 0;
|
|
270
|
-
|
|
271
|
-
// Default active tab: errors if any, else warnings
|
|
272
|
-
useEffect(() => {
|
|
273
|
-
if (errorsCount > 0) {
|
|
274
|
-
setActiveKey(ERROR_TAB_KEYS.ERRORS);
|
|
275
|
-
} else if (warningsCount > 0) {
|
|
276
|
-
setActiveKey(ERROR_TAB_KEYS.WARNINGS);
|
|
277
|
-
}
|
|
278
|
-
}, [errorsCount, warningsCount]);
|
|
279
|
-
|
|
280
|
-
// Handle close
|
|
281
|
-
const handleClose = () => {
|
|
282
|
-
setIsDismissed(true);
|
|
283
|
-
if (onClose) {
|
|
284
|
-
onClose();
|
|
285
|
-
}
|
|
286
|
-
};
|
|
287
|
-
|
|
288
|
-
// Handle liquid documentation click
|
|
289
|
-
const handleLiquidDocClick = () => {
|
|
290
|
-
window.open(
|
|
291
|
-
LIQUID_DOC_URL,
|
|
292
|
-
'_blank',
|
|
293
|
-
);
|
|
294
|
-
};
|
|
295
|
-
|
|
296
|
-
// Don't render if no issues or dismissed
|
|
297
|
-
if (totalCount === 0 || isDismissed) {
|
|
298
|
-
return null;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
// Build tab panes: only Errors and Warnings
|
|
302
|
-
const tabPanes = [];
|
|
303
|
-
|
|
304
|
-
if (errorsCount > 0) {
|
|
305
|
-
tabPanes.push({
|
|
306
|
-
key: ERROR_TAB_KEYS.ERRORS,
|
|
307
|
-
tab: (
|
|
308
|
-
<CapLabelInline type="label2" className="error-info-note__tab-label error-info-note__tab-label--errors">
|
|
309
|
-
<FormattedMessage {...messages.errors} />
|
|
310
|
-
<CapLabelInline type="label2" className="error-info-note__tab-count">
|
|
311
|
-
(
|
|
312
|
-
{errorsCount}
|
|
313
|
-
)
|
|
314
|
-
</CapLabelInline>
|
|
315
|
-
</CapLabelInline>
|
|
316
|
-
),
|
|
317
|
-
content: (
|
|
318
|
-
<TabContent
|
|
319
|
-
issues={errorIssues}
|
|
320
|
-
onErrorClick={onErrorClick}
|
|
321
|
-
intl={intl}
|
|
322
|
-
/>
|
|
323
|
-
),
|
|
324
|
-
});
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
if (warningsCount > 0) {
|
|
328
|
-
tabPanes.push({
|
|
329
|
-
key: ERROR_TAB_KEYS.WARNINGS,
|
|
330
|
-
tab: (
|
|
331
|
-
<CapLabelInline type="label2" className="error-info-note__tab-label error-info-note__tab-label--warnings">
|
|
332
|
-
<FormattedMessage {...messages.warnings} />
|
|
333
|
-
<CapLabelInline type="label2" className="error-info-note__tab-count">
|
|
334
|
-
(
|
|
335
|
-
{warningsCount}
|
|
336
|
-
)
|
|
337
|
-
</CapLabelInline>
|
|
338
|
-
</CapLabelInline>
|
|
339
|
-
),
|
|
340
|
-
content: (
|
|
341
|
-
<TabContent
|
|
342
|
-
issues={warningIssues}
|
|
343
|
-
onErrorClick={onErrorClick}
|
|
344
|
-
intl={intl}
|
|
345
|
-
/>
|
|
346
|
-
),
|
|
347
|
-
});
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
return (
|
|
351
|
-
<CapRow className="error-container error-container--tabs">
|
|
352
|
-
<CapRow className="error-info-note__header">
|
|
353
|
-
<CapTab
|
|
354
|
-
activeKey={activeKey || (tabPanes[0]?.key)}
|
|
355
|
-
onChange={setActiveKey}
|
|
356
|
-
panes={tabPanes}
|
|
357
|
-
className="error-info-note__tabs"
|
|
358
|
-
/>
|
|
359
|
-
<CapRow className="error-info-note__actions">
|
|
360
|
-
{hasLiquidErrors && isLiquidEnabled && (
|
|
361
|
-
<CapButton
|
|
362
|
-
type="flat"
|
|
363
|
-
className="error-info-note__liquid-doc"
|
|
364
|
-
onClick={handleLiquidDocClick}
|
|
365
|
-
>
|
|
366
|
-
<FormattedMessage {...messages.liquidDoc} />
|
|
367
|
-
<CapIcon size="s" type="launch" />
|
|
368
|
-
</CapButton>
|
|
369
|
-
)}
|
|
370
|
-
<CapTooltip title={intl?.formatMessage ? intl.formatMessage(messages.closePanel) : 'Close validation panel'}>
|
|
371
|
-
<CapButton
|
|
372
|
-
type="flat"
|
|
373
|
-
className="error-info-note__close"
|
|
374
|
-
onClick={handleClose}
|
|
375
|
-
aria-label={intl?.formatMessage ? intl.formatMessage(messages.closePanel) : 'Close validation panel'}
|
|
376
|
-
>
|
|
377
|
-
<CapIcon type="close" />
|
|
378
|
-
</CapButton>
|
|
379
|
-
</CapTooltip>
|
|
380
|
-
</CapRow>
|
|
381
|
-
</CapRow>
|
|
382
|
-
</CapRow>
|
|
383
|
-
);
|
|
384
|
-
};
|
|
385
|
-
|
|
386
|
-
// Legacy ErrorSection component for platform-specific errors (backwards compatibility)
|
|
387
19
|
const ErrorSection = ({
|
|
388
20
|
title,
|
|
389
21
|
errors,
|
|
@@ -394,7 +26,7 @@ const ErrorSection = ({
|
|
|
394
26
|
{title && (
|
|
395
27
|
<CapRow
|
|
396
28
|
className={`error-header ${
|
|
397
|
-
!liquidError ?
|
|
29
|
+
!liquidError ? "standard-error-header" : ""
|
|
398
30
|
}`}
|
|
399
31
|
>
|
|
400
32
|
<>
|
|
@@ -406,7 +38,8 @@ const ErrorSection = ({
|
|
|
406
38
|
<CapButton
|
|
407
39
|
type="flat"
|
|
408
40
|
className="add-btn"
|
|
409
|
-
onClick={() => window.open(
|
|
41
|
+
onClick={() => window.open("https://docs.capillarytech.com/docs/liquid-language-in-messages", "_blank")
|
|
42
|
+
}
|
|
410
43
|
>
|
|
411
44
|
<FormattedMessage {...messages.liquidDoc} />
|
|
412
45
|
<CapIcon size="s" type="launch" />
|
|
@@ -420,15 +53,21 @@ const ErrorSection = ({
|
|
|
420
53
|
<CapLabel type="label2">{platformLabel}</CapLabel>
|
|
421
54
|
</CapRow>
|
|
422
55
|
)}
|
|
423
|
-
<
|
|
424
|
-
|
|
425
|
-
|
|
56
|
+
<CapList
|
|
57
|
+
className="error-list"
|
|
58
|
+
size="small"
|
|
59
|
+
dataSource={errors}
|
|
60
|
+
renderItem={(error, index) => (
|
|
61
|
+
<CapList.Item>
|
|
426
62
|
<CapLabel type="label2" className="cap-list-v2-error-item">
|
|
63
|
+
<CapLabel type="label2">
|
|
64
|
+
<FormattedNumber value={index + 1} />.
|
|
65
|
+
</CapLabel>
|
|
427
66
|
<CapLabel type="label2">{error}</CapLabel>
|
|
428
67
|
</CapLabel>
|
|
429
|
-
</
|
|
430
|
-
)
|
|
431
|
-
|
|
68
|
+
</CapList.Item>
|
|
69
|
+
)}
|
|
70
|
+
/>
|
|
432
71
|
</>
|
|
433
72
|
);
|
|
434
73
|
|
|
@@ -445,16 +84,54 @@ ErrorSection.defaultProps = {
|
|
|
445
84
|
platformLabel: null,
|
|
446
85
|
};
|
|
447
86
|
|
|
87
|
+
export const ErrorInfoNote = (props) => {
|
|
88
|
+
const { errorMessages } = props;
|
|
89
|
+
|
|
90
|
+
const {
|
|
91
|
+
LIQUID_ERROR_MSG: rawLiquidErrors = [],
|
|
92
|
+
STANDARD_ERROR_MSG: rawStandardErrors = [],
|
|
93
|
+
} = errorMessages || {};
|
|
94
|
+
|
|
95
|
+
// Detect if platform-specific (ANDROID/IOS) or GENERIC
|
|
96
|
+
const isObject = typeof rawStandardErrors === 'object' && rawStandardErrors !== null;
|
|
97
|
+
const isNotArray = !Array.isArray(rawLiquidErrors);
|
|
98
|
+
const hasPlatformKeys = isObject && isNotArray && [ANDROID, IOS, GENERIC].some((key) => key in rawLiquidErrors);
|
|
99
|
+
|
|
100
|
+
if (hasPlatformKeys) {
|
|
101
|
+
// Platform-specific
|
|
102
|
+
const androidErrors = {
|
|
103
|
+
STANDARD: processErrors(rawStandardErrors, 'standard', ANDROID, messages),
|
|
104
|
+
LIQUID: processErrors(rawLiquidErrors, 'liquid', ANDROID, messages),
|
|
105
|
+
};
|
|
106
|
+
const iosErrors = {
|
|
107
|
+
STANDARD: processErrors(rawStandardErrors, 'standard', IOS, messages),
|
|
108
|
+
LIQUID: processErrors(rawLiquidErrors, 'liquid', IOS, messages),
|
|
109
|
+
};
|
|
110
|
+
return (
|
|
111
|
+
<ErrorTypeRenderer
|
|
112
|
+
genericErrors={null}
|
|
113
|
+
androidErrors={androidErrors}
|
|
114
|
+
iosErrors={iosErrors}
|
|
115
|
+
ErrorSectionComponent={ErrorSection}
|
|
116
|
+
/>
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
// GENERIC (not platform-specific)
|
|
120
|
+
const genericStandard = processErrors(rawStandardErrors, 'standard', null, messages);
|
|
121
|
+
const genericLiquid = processErrors(rawLiquidErrors, 'liquid', null, messages);
|
|
122
|
+
return (
|
|
123
|
+
<ErrorTypeRenderer
|
|
124
|
+
genericErrors={{ standard: genericStandard, liquid: genericLiquid }}
|
|
125
|
+
ErrorSectionComponent={ErrorSection}
|
|
126
|
+
/>
|
|
127
|
+
);
|
|
128
|
+
};
|
|
129
|
+
|
|
448
130
|
ErrorInfoNote.defaultProps = {
|
|
449
131
|
errorMessages: {
|
|
450
132
|
LIQUID_ERROR_MSG: [],
|
|
451
133
|
STANDARD_ERROR_MSG: [],
|
|
452
134
|
},
|
|
453
|
-
onErrorClick: null,
|
|
454
|
-
onClose: null,
|
|
455
|
-
isLiquidEnabled: true,
|
|
456
|
-
intl: null,
|
|
457
|
-
useLegacyDisplay: false, // Use simple list display for BEE Editor
|
|
458
135
|
};
|
|
459
136
|
|
|
460
137
|
ErrorInfoNote.propTypes = {
|
|
@@ -475,13 +152,6 @@ ErrorInfoNote.propTypes = {
|
|
|
475
152
|
GENERIC: PropTypes.array,
|
|
476
153
|
}),
|
|
477
154
|
]),
|
|
478
|
-
STANDARD_WARNING_MSG: PropTypes.array,
|
|
479
155
|
}),
|
|
480
|
-
onErrorClick: PropTypes.func,
|
|
481
|
-
onClose: PropTypes.func,
|
|
482
|
-
isLiquidEnabled: PropTypes.bool,
|
|
483
|
-
intl: PropTypes.object,
|
|
484
|
-
useLegacyDisplay: PropTypes.bool, // Use simple list display for BEE Editor
|
|
485
156
|
};
|
|
486
|
-
|
|
487
157
|
export default injectIntl(ErrorInfoNote);
|
|
@@ -6,24 +6,6 @@
|
|
|
6
6
|
import { defineMessages } from "react-intl";
|
|
7
7
|
const scope = "creatives.componentsV2.ErrorInfoNote";
|
|
8
8
|
export default defineMessages({
|
|
9
|
-
// Tab labels: Errors = blocking, Warnings = non-blocking
|
|
10
|
-
errors: {
|
|
11
|
-
id: `${scope}.errors`,
|
|
12
|
-
defaultMessage: "Errors",
|
|
13
|
-
},
|
|
14
|
-
warnings: {
|
|
15
|
-
id: `${scope}.warnings`,
|
|
16
|
-
defaultMessage: "Warnings",
|
|
17
|
-
},
|
|
18
|
-
navigateToError: {
|
|
19
|
-
id: `${scope}.navigateToError`,
|
|
20
|
-
defaultMessage: "Go to error location",
|
|
21
|
-
},
|
|
22
|
-
closePanel: {
|
|
23
|
-
id: `${scope}.closePanel`,
|
|
24
|
-
defaultMessage: "Close validation panel",
|
|
25
|
-
},
|
|
26
|
-
// Legacy messages (kept for backwards compatibility)
|
|
27
9
|
dynamicErrorHeader: {
|
|
28
10
|
id: `${scope}.dynamicErrorHeader`,
|
|
29
11
|
defaultMessage:
|
|
@@ -42,39 +24,31 @@ export default defineMessages({
|
|
|
42
24
|
ariaFooter: {
|
|
43
25
|
id: `${scope}.ariaFooter`,
|
|
44
26
|
defaultMessage:
|
|
45
|
-
"Aira can make mistakes. Please verify the suggestions before applying them"
|
|
27
|
+
"Aira can make mistakes. Please verify the suggestions before applying them"
|
|
46
28
|
},
|
|
47
29
|
liquidDocLink: {
|
|
48
30
|
id: `${scope}.liquidDocLink`,
|
|
49
31
|
defaultMessage:
|
|
50
|
-
"https://docs.capillarytech.com/docs/liquid-language-in-messages"
|
|
32
|
+
"https://docs.capillarytech.com/docs/liquid-language-in-messages"
|
|
51
33
|
},
|
|
52
34
|
androidDynamicErrorHeader: {
|
|
53
35
|
id: `${scope}.androidDynamicErrorHeader`,
|
|
54
36
|
defaultMessage:
|
|
55
|
-
"Errors found in Android Dynamic Tags"
|
|
37
|
+
"Errors found in Android Dynamic Tags"
|
|
56
38
|
},
|
|
57
39
|
iosDynamicErrorHeader: {
|
|
58
40
|
id: `${scope}.iosDynamicErrorHeader`,
|
|
59
41
|
defaultMessage:
|
|
60
|
-
"Errors found in iOS Dynamic Tags"
|
|
42
|
+
"Errors found in iOS Dynamic Tags"
|
|
61
43
|
},
|
|
62
44
|
androidStandardErrorHeader: {
|
|
63
45
|
id: `${scope}.androidStandardErrorHeader`,
|
|
64
46
|
defaultMessage:
|
|
65
|
-
"Errors found in Android Standard Tags"
|
|
47
|
+
"Errors found in Android Standard Tags"
|
|
66
48
|
},
|
|
67
49
|
iosStandardErrorHeader: {
|
|
68
50
|
id: `${scope}.iosStandardErrorHeader`,
|
|
69
51
|
defaultMessage:
|
|
70
|
-
"Errors found in iOS Standard Tags"
|
|
71
|
-
},
|
|
72
|
-
line: {
|
|
73
|
-
id: `${scope}.line`,
|
|
74
|
-
defaultMessage: "Line",
|
|
75
|
-
},
|
|
76
|
-
char: {
|
|
77
|
-
id: `${scope}.char`,
|
|
78
|
-
defaultMessage: "Char",
|
|
52
|
+
"Errors found in iOS Standard Tags"
|
|
79
53
|
},
|
|
80
54
|
});
|