@capillarytech/creatives-library 8.0.340-0 → 8.0.340-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app.js +8 -1
- package/global-styles.js +4 -0
- package/package.json +2 -2
- package/styles/components/navigation/_leftnav.scss +1 -1
- package/v2Components/AccessForbidden/index.js +1 -1
- package/v2Components/CapActionButton/index.js +5 -5
- package/v2Components/CapCustomSkeleton/index.js +1 -1
- package/v2Components/CapDeviceContent/index.js +5 -5
- package/v2Components/CapDocumentUpload/index.js +1 -1
- package/v2Components/CapImageUpload/index.js +1 -1
- package/v2Components/CapInAppCTA/index.js +118 -112
- package/v2Components/CapMpushCTA/index.js +72 -66
- package/v2Components/CapTagList/index.js +5 -5
- package/v2Components/CapVideoUpload/index.js +1 -1
- package/v2Components/CapWhatsappCTA/index.js +128 -124
- package/v2Components/CapWhatsappCarouselButton/index.js +27 -29
- package/v2Components/CapWhatsappQuickReply/index.js +7 -7
- package/v2Components/Carousel/index.js +1 -1
- package/v2Components/CommonTestAndPreview/AddTestCustomer.js +1 -1
- package/v2Components/CommonTestAndPreview/CustomValuesEditor.js +3 -3
- package/v2Components/CommonTestAndPreview/CustomerCreationModal.js +1 -1
- package/v2Components/CommonTestAndPreview/DeliverySettings/ModifyDeliverySettings.js +4 -4
- package/v2Components/CommonTestAndPreview/DeliverySettings/index.js +1 -1
- package/v2Components/CommonTestAndPreview/ExistingCustomerModal.js +6 -6
- package/v2Components/CommonTestAndPreview/LeftPanelContent.js +5 -5
- package/v2Components/CommonTestAndPreview/PreviewSection.js +1 -1
- package/v2Components/CommonTestAndPreview/UnifiedPreview/DeviceFrame.js +1 -1
- package/v2Components/CommonTestAndPreview/UnifiedPreview/EmailPreviewContent.js +8 -8
- package/v2Components/CommonTestAndPreview/UnifiedPreview/InAppPreviewContent.js +14 -13
- package/v2Components/CommonTestAndPreview/UnifiedPreview/MobilePushPreviewContent.js +22 -21
- package/v2Components/CommonTestAndPreview/UnifiedPreview/RcsPreviewContent.js +9 -9
- package/v2Components/CommonTestAndPreview/UnifiedPreview/SmsPreviewContent.js +8 -8
- package/v2Components/CommonTestAndPreview/UnifiedPreview/ViberPreviewContent.js +10 -10
- package/v2Components/CommonTestAndPreview/UnifiedPreview/WhatsAppPreviewContent.js +13 -12
- package/v2Components/CommonTestAndPreview/UnifiedPreview/ZaloPreviewContent.js +4 -3
- package/v2Components/CommonTestAndPreview/UnifiedPreview/_unifiedPreview.scss +10 -5
- package/v2Components/CommonTestAndPreview/UnifiedPreview/index.js +1 -1
- package/v2Components/CommonTestAndPreview/_commonTestAndPreview.scss +3 -4
- package/v2Components/CommonTestAndPreview/index.js +1 -1
- package/v2Components/CustomerSearchSection/_customerSearch.scss +2 -1
- package/v2Components/CustomerSearchSection/index.js +9 -9
- package/v2Components/EmailMobilePreview/index.js +1 -1
- package/v2Components/ErrorInfoNote/index.js +13 -11
- package/v2Components/ErrorInfoNote/style.scss +1 -1
- package/v2Components/FormBuilder/_formBuilder.scss +1 -0
- package/v2Components/FormBuilder/index.js +32 -40
- package/v2Components/HtmlEditor/HTMLEditor.js +4 -4
- package/v2Components/HtmlEditor/_htmlEditor.scss +2 -1
- package/v2Components/HtmlEditor/components/CodeEditorPane/index.js +1 -1
- package/v2Components/HtmlEditor/components/DeviceToggle/_deviceToggle.scss +2 -2
- package/v2Components/HtmlEditor/components/DeviceToggle/index.js +2 -2
- package/v2Components/HtmlEditor/components/EditorToolbar/PreviewModeGroup.js +2 -2
- package/v2Components/HtmlEditor/components/EditorToolbar/index.js +2 -2
- package/v2Components/HtmlEditor/components/InAppPreviewPane/index.js +1 -0
- package/v2Components/HtmlEditor/components/PreviewPane/index.js +2 -2
- package/v2Components/HtmlEditor/components/SplitContainer/SplitContainer.js +2 -2
- package/v2Components/HtmlEditor/components/SplitContainer/_splitContainer.scss +2 -1
- package/v2Components/HtmlEditor/components/ValidationPanel/index.js +6 -9
- package/v2Components/HtmlEditor/components/ValidationTabs/index.js +2 -2
- package/v2Components/NavigationBar/index.js +7 -1
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +3 -4
- package/v2Components/TemplatePreview/_templatePreview.scss +5 -3
- package/v2Components/TemplatePreview/index.js +11 -9
- package/v2Components/TestAndPreviewSlidebox/CustomValuesEditor.js +3 -3
- package/v2Components/TestAndPreviewSlidebox/LeftPanelContent.js +5 -5
- package/v2Components/TestAndPreviewSlidebox/PreviewSection.js +3 -3
- package/v2Components/TestAndPreviewSlidebox/_testAndPreviewSlidebox.scss +4 -2
- package/v2Containers/BeePopupEditor/index.js +1 -1
- package/v2Containers/CommunicationFlow/CommunicationFlow.js +5 -5
- package/v2Containers/CommunicationFlow/steps/ChannelSelectionStep/ChannelSelectionStep.js +4 -3
- package/v2Containers/CommunicationFlow/steps/CommunicationStrategyStep/CommunicationStrategyStep.js +2 -2
- package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/DeliverySettingsSection.js +3 -2
- package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/SenderDetails.js +7 -7
- package/v2Containers/CommunicationFlow/steps/DeliverySettingsStep/SenderDetails.scss +0 -5
- package/v2Containers/CommunicationFlow/steps/DynamicControlsStep/DynamicControlsStep.js +2 -2
- package/v2Containers/CommunicationFlow/steps/MessageTypeStep/MessageTypeStep.js +2 -2
- package/v2Containers/CreativesContainer/SlideBoxFooter.js +1 -1
- package/v2Containers/CreativesContainer/index.js +1 -1
- package/v2Containers/Ebill/index.js +10 -9
- package/v2Containers/Email/index.js +7 -7
- package/v2Containers/Email/initialSchema.js +1 -1
- package/v2Containers/FTP/index.js +1 -1
- package/v2Containers/Facebook/Advertisement/index.js +4 -4
- package/v2Containers/Facebook/index.js +2 -2
- package/v2Containers/InApp/index.js +21 -16
- package/v2Containers/InApp/index.scss +0 -7
- package/v2Containers/InAppWrapper/components/InAppWrapperView.js +2 -2
- package/v2Containers/InappAdvance/index.js +4 -4
- package/v2Containers/LanguageProvider/index.js +3 -3
- package/v2Containers/LanguageProvider/tests/index.test.js +3 -3
- package/v2Containers/Line/Container/Image/index.js +1 -1
- package/v2Containers/Line/Container/ImageCarousel/Content.js +1 -1
- package/v2Containers/Line/Container/ImageCarousel/index.js +5 -5
- package/v2Containers/Line/Container/ImageMap/index.js +3 -3
- package/v2Containers/Line/Container/Sticker/index.js +2 -2
- package/v2Containers/Line/Container/Sticker/utils.js +1 -1
- package/v2Containers/Line/Container/Video/index.js +1 -1
- package/v2Containers/Line/Container/Wrapper/index.js +3 -3
- package/v2Containers/Line/Container/Wrapper/style.js +1 -5
- package/v2Containers/Line/Container/index.js +2 -2
- package/v2Containers/Login/components/LoginForm/index.js +34 -47
- package/v2Containers/Login/index.js +5 -5
- package/v2Containers/MobilePushNew/components/CtaButtons.js +2 -2
- package/v2Containers/MobilePushNew/components/MediaUploaders.js +9 -9
- package/v2Containers/MobilePushNew/components/PlatformContentFields.js +4 -4
- package/v2Containers/MobilePushNew/index.js +2 -2
- package/v2Containers/MobilePushNew/index.scss +6 -3
- package/v2Containers/Rcs/index.js +24 -19
- package/v2Containers/Rcs/index.scss +0 -7
- package/v2Containers/SmsTrai/Edit/index.js +3 -2
- package/v2Containers/Templates/index.js +16 -16
- package/v2Containers/Viber/constants.js +0 -8
- package/v2Containers/Viber/index.js +19 -19
- package/v2Containers/Viber/index.scss +0 -7
- package/v2Containers/Viber/reducer.js +21 -44
- package/v2Containers/Viber/sagas.js +21 -62
- package/v2Containers/Viber/tests/index.test.js +0 -80
- package/v2Containers/Viber/tests/saga.test.js +40 -365
- package/v2Containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +1 -1
- package/v2Containers/WeChat/RichmediaTemplates/Create/index.js +2 -2
- package/v2Containers/WebPush/Create/components/BrandIconSection.js +1 -1
- package/v2Containers/WebPush/Create/components/ButtonForm.js +2 -2
- package/v2Containers/WebPush/Create/components/ButtonList.js +4 -4
- package/v2Containers/WebPush/Create/components/ButtonsLinksSection.js +4 -4
- package/v2Containers/WebPush/Create/components/FormActions.js +3 -3
- package/v2Containers/WebPush/Create/components/MessageSection.js +2 -2
- package/v2Containers/WebPush/Create/components/NotificationTitleSection.js +2 -2
- package/v2Containers/WebPush/Create/components/_buttons.scss +2 -2
- package/v2Containers/WebPush/Create/index.scss +6 -3
- package/v2Containers/WebPush/Create/preview/WebPushPreview.js +1 -1
- package/v2Containers/Whatsapp/index.js +28 -28
- package/v2Containers/Zalo/index.js +3 -3
- package/.npmrc copy +0 -2
- package/v2Containers/Viber/tests/reducer.test.js +0 -297
|
@@ -183,9 +183,9 @@ const CustomerSearchSection = ({
|
|
|
183
183
|
};
|
|
184
184
|
|
|
185
185
|
return (
|
|
186
|
-
<CapRow className="customer-search-section">
|
|
186
|
+
<CapRow useLegacy className="customer-search-section">
|
|
187
187
|
<div ref={searchContainerRef}>
|
|
188
|
-
<CapRow className="search-container">
|
|
188
|
+
<CapRow useLegacy className="search-container">
|
|
189
189
|
{selectedCustomer ? (
|
|
190
190
|
<SelectedCustomerView
|
|
191
191
|
customer={selectedCustomer}
|
|
@@ -203,7 +203,7 @@ const CustomerSearchSection = ({
|
|
|
203
203
|
/>
|
|
204
204
|
)}
|
|
205
205
|
{showDropdown && !selectedCustomer && (
|
|
206
|
-
<CapRow className="search-dropdown-container">
|
|
206
|
+
<CapRow useLegacy className="search-dropdown-container">
|
|
207
207
|
<CapRow type="flex" justify="center" align="middle">
|
|
208
208
|
{(processedSearchData?.length === 0 && customerSearchValue != null && !isSearchingCustomer) && (
|
|
209
209
|
<CapCard className="validation-card">
|
|
@@ -214,7 +214,7 @@ const CustomerSearchSection = ({
|
|
|
214
214
|
)}
|
|
215
215
|
{(isSearchingCustomer) && (
|
|
216
216
|
<CapCard className="validation-card">
|
|
217
|
-
<CapRow className="spin-card-align">
|
|
217
|
+
<CapRow useLegacy className="spin-card-align">
|
|
218
218
|
<CapSpin />
|
|
219
219
|
</CapRow>
|
|
220
220
|
</CapCard>
|
|
@@ -232,12 +232,12 @@ const CustomerSearchSection = ({
|
|
|
232
232
|
className="search-results-height link-result"
|
|
233
233
|
title={(
|
|
234
234
|
<>
|
|
235
|
-
<CapRow type="flex" align="middle"
|
|
235
|
+
<CapRow type="flex" align="middle" gap={16}>
|
|
236
236
|
<CapColumn data-testid="namingIcon">
|
|
237
237
|
<CapRow className="customer-common-profile">{getNamingIcon(d?.name)}</CapRow>
|
|
238
238
|
</CapColumn>
|
|
239
239
|
<CapColumn>
|
|
240
|
-
<CapRow type="flex"
|
|
240
|
+
<CapRow type="flex" gap={12}>
|
|
241
241
|
<CapColumn data-testid="searchResultName">
|
|
242
242
|
<CapHeading className="search-text" type="h4">
|
|
243
243
|
{d?.name}
|
|
@@ -279,7 +279,7 @@ const SearchInput = ({
|
|
|
279
279
|
disabled,
|
|
280
280
|
placeholder,
|
|
281
281
|
}) => (
|
|
282
|
-
<CapRow className="search-input-container">
|
|
282
|
+
<CapRow useLegacy className="search-input-container">
|
|
283
283
|
<CapInput
|
|
284
284
|
value={value}
|
|
285
285
|
onChange={onChange}
|
|
@@ -290,7 +290,7 @@ const SearchInput = ({
|
|
|
290
290
|
autoComplete="off"
|
|
291
291
|
/>
|
|
292
292
|
{error && (
|
|
293
|
-
<CapRow className="search-error">
|
|
293
|
+
<CapRow useLegacy className="search-error">
|
|
294
294
|
<CapAlert
|
|
295
295
|
message={error}
|
|
296
296
|
type="error"
|
|
@@ -304,7 +304,7 @@ const SearchInput = ({
|
|
|
304
304
|
|
|
305
305
|
const SelectedCustomerView = ({ customer, onClear, showIdentifiers }) => (
|
|
306
306
|
<div className="selected-customer-view">
|
|
307
|
-
<CapRow type="flex" align="middle"
|
|
307
|
+
<CapRow type="flex" align="middle" gap={8}>
|
|
308
308
|
<CapColumn>
|
|
309
309
|
<CapRow className="customer-common-profile">{getNamingIcon(customer?.name)}</CapRow>
|
|
310
310
|
</CapColumn>
|
|
@@ -94,7 +94,7 @@ const TabContent = ({ issues, onErrorClick, intl }) => {
|
|
|
94
94
|
};
|
|
95
95
|
|
|
96
96
|
return (
|
|
97
|
-
<CapRow className="error-info-note__content">
|
|
97
|
+
<CapRow useLegacy className="error-info-note__content">
|
|
98
98
|
{issues.map((issue, index) => {
|
|
99
99
|
const { severity, message } = issue;
|
|
100
100
|
const key = `${message}-${index}`;
|
|
@@ -114,10 +114,11 @@ const TabContent = ({ issues, onErrorClick, intl }) => {
|
|
|
114
114
|
|
|
115
115
|
return (
|
|
116
116
|
<CapRow
|
|
117
|
+
useLegacy
|
|
117
118
|
key={key}
|
|
118
119
|
className={`error-info-note__item error-info-note__item--${severity || 'error'}`}
|
|
119
120
|
>
|
|
120
|
-
<CapRow className="error-info-note__item-content">
|
|
121
|
+
<CapRow useLegacy className="error-info-note__item-content">
|
|
121
122
|
<CapLabelInline type="label2" className="error-info-note__item-message">
|
|
122
123
|
{displayMessage}
|
|
123
124
|
</CapLabelInline>
|
|
@@ -149,7 +150,7 @@ const TabContent = ({ issues, onErrorClick, intl }) => {
|
|
|
149
150
|
{onErrorClick && (
|
|
150
151
|
<CapTooltip title={intl?.formatMessage ? intl.formatMessage(messages.navigateToError) : 'Go to error location'}>
|
|
151
152
|
<CapButton
|
|
152
|
-
type="
|
|
153
|
+
type="link"
|
|
153
154
|
className="error-info-note__item-navigate"
|
|
154
155
|
onClick={(e) => handleNavigateClick({ ...issue, line, column: char }, e)}
|
|
155
156
|
aria-label={intl?.formatMessage ? intl.formatMessage(messages.navigateToError) : 'Go to error location'}
|
|
@@ -348,7 +349,7 @@ export const ErrorInfoNote = (props) => {
|
|
|
348
349
|
}
|
|
349
350
|
|
|
350
351
|
return (
|
|
351
|
-
<CapRow className="error-container error-container--tabs">
|
|
352
|
+
<CapRow useLegacy className="error-container error-container--tabs">
|
|
352
353
|
<CapRow className="error-info-note__header">
|
|
353
354
|
<CapTab
|
|
354
355
|
activeKey={activeKey || (tabPanes[0]?.key)}
|
|
@@ -356,10 +357,10 @@ export const ErrorInfoNote = (props) => {
|
|
|
356
357
|
panes={tabPanes}
|
|
357
358
|
className="error-info-note__tabs"
|
|
358
359
|
/>
|
|
359
|
-
<CapRow className="error-info-note__actions">
|
|
360
|
+
<CapRow useLegacy className="error-info-note__actions">
|
|
360
361
|
{hasLiquidErrors && (
|
|
361
362
|
<CapButton
|
|
362
|
-
type="
|
|
363
|
+
type="link"
|
|
363
364
|
className="error-info-note__liquid-doc"
|
|
364
365
|
onClick={handleLiquidDocClick}
|
|
365
366
|
>
|
|
@@ -369,7 +370,7 @@ export const ErrorInfoNote = (props) => {
|
|
|
369
370
|
)}
|
|
370
371
|
<CapTooltip title={intl?.formatMessage ? intl.formatMessage(messages.closePanel) : 'Close validation panel'}>
|
|
371
372
|
<CapButton
|
|
372
|
-
type="
|
|
373
|
+
type="link"
|
|
373
374
|
className="error-info-note__close"
|
|
374
375
|
onClick={handleClose}
|
|
375
376
|
aria-label={intl?.formatMessage ? intl.formatMessage(messages.closePanel) : 'Close validation panel'}
|
|
@@ -393,6 +394,7 @@ const ErrorSection = ({
|
|
|
393
394
|
<>
|
|
394
395
|
{title && (
|
|
395
396
|
<CapRow
|
|
397
|
+
useLegacy
|
|
396
398
|
className={`error-header ${
|
|
397
399
|
!liquidError ? 'standard-error-header' : ''
|
|
398
400
|
}`}
|
|
@@ -404,7 +406,7 @@ const ErrorSection = ({
|
|
|
404
406
|
<>
|
|
405
407
|
{liquidError && (
|
|
406
408
|
<CapButton
|
|
407
|
-
type="
|
|
409
|
+
type="link"
|
|
408
410
|
className="add-btn"
|
|
409
411
|
onClick={() => window.open(LIQUID_DOC_URL, '_blank')}
|
|
410
412
|
>
|
|
@@ -416,13 +418,13 @@ const ErrorSection = ({
|
|
|
416
418
|
</CapRow>
|
|
417
419
|
)}
|
|
418
420
|
{platformLabel && (
|
|
419
|
-
<CapRow className="error-header-sub-title">
|
|
421
|
+
<CapRow useLegacy className="error-header-sub-title">
|
|
420
422
|
<CapLabel type="label2">{platformLabel}</CapLabel>
|
|
421
423
|
</CapRow>
|
|
422
424
|
)}
|
|
423
|
-
<CapRow className="error-list-legacy">
|
|
425
|
+
<CapRow useLegacy className="error-list-legacy">
|
|
424
426
|
{(errors || []).map((error) => (
|
|
425
|
-
<CapRow key={`${error}`} className="error-list-legacy__item">
|
|
427
|
+
<CapRow useLegacy key={`${error}`} className="error-list-legacy__item">
|
|
426
428
|
<CapLabel type="label2" className="cap-list-v2-error-item">
|
|
427
429
|
<CapLabel type="label2">{error}</CapLabel>
|
|
428
430
|
</CapLabel>
|
|
@@ -10,7 +10,7 @@ import PropTypes from 'prop-types';
|
|
|
10
10
|
|
|
11
11
|
import React from 'react';
|
|
12
12
|
import _ from 'lodash';
|
|
13
|
-
import {
|
|
13
|
+
import { Table, Modal} from 'antd';
|
|
14
14
|
import { connect } from 'react-redux';
|
|
15
15
|
import CapSpin from '@capillarytech/cap-ui-library/CapSpin';
|
|
16
16
|
import CapDrawer from '@capillarytech/cap-ui-library/CapDrawer';
|
|
@@ -24,6 +24,7 @@ import CapSelect from '@capillarytech/cap-ui-library/CapSelect';
|
|
|
24
24
|
import CapTable from '@capillarytech/cap-ui-library/CapTable';
|
|
25
25
|
import CapRow from '@capillarytech/cap-ui-library/CapRow';
|
|
26
26
|
import CapColumn from '@capillarytech/cap-ui-library/CapColumn';
|
|
27
|
+
import CapTab from '@capillarytech/cap-ui-library/CapTab';
|
|
27
28
|
import CapNotification from '@capillarytech/cap-ui-library/CapNotification';
|
|
28
29
|
import CapUploader from '@capillarytech/cap-ui-library/CapUploader';
|
|
29
30
|
import CapHeading from '@capillarytech/cap-ui-library/CapHeading';
|
|
@@ -64,7 +65,6 @@ import { isEmailUnsubscribeTagOptional, isAiContentBotDisabled } from '../../uti
|
|
|
64
65
|
import { isUrl } from '../../v2Containers/Line/Container/Wrapper/utils';
|
|
65
66
|
import { bindActionCreators } from 'redux';
|
|
66
67
|
import { getChannelData, hasPersonalizationTags, validateLiquidTemplateContent, validateMobilePushContent } from '../../utils/commonUtils';
|
|
67
|
-
const TabPane = Tabs.TabPane;
|
|
68
68
|
const {Column} = Table;
|
|
69
69
|
const {TextArea} = CapInput;
|
|
70
70
|
const {CapRadioGroup} = CapRadio;
|
|
@@ -3158,7 +3158,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
3158
3158
|
break;
|
|
3159
3159
|
}
|
|
3160
3160
|
row.push(
|
|
3161
|
-
<CapRow>
|
|
3161
|
+
<CapRow useLegacy>
|
|
3162
3162
|
{
|
|
3163
3163
|
_.forEach(columns, (value) => {
|
|
3164
3164
|
if (value) {
|
|
@@ -3207,7 +3207,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
3207
3207
|
cols.push(<CapColumn style={childSection.colStyle ? childSection.colStyle : {}}offset={childSection.offset} span={childSection.width}>{renderedChildSection}</CapColumn>);
|
|
3208
3208
|
return true;
|
|
3209
3209
|
});
|
|
3210
|
-
const row = (<CapRow style={section.rowStyle ? section.rowStyle : {}}>
|
|
3210
|
+
const row = (<CapRow useLegacy style={section.rowStyle ? section.rowStyle : {}}>
|
|
3211
3211
|
{
|
|
3212
3212
|
_.forEach(cols, (value) => {
|
|
3213
3213
|
if (value) {
|
|
@@ -3320,7 +3320,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
3320
3320
|
return (
|
|
3321
3321
|
<CapButton
|
|
3322
3322
|
className="dragger-button"
|
|
3323
|
-
type="
|
|
3323
|
+
type="link"
|
|
3324
3324
|
style={{top: 0, position: 'absolute', right: 0, color: FONT_COLOR_05 }}
|
|
3325
3325
|
onClick={this.onReUpload}
|
|
3326
3326
|
>
|
|
@@ -3329,7 +3329,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
3329
3329
|
);
|
|
3330
3330
|
}
|
|
3331
3331
|
return (
|
|
3332
|
-
<CapButton disabled={val.disabled ? val.disabled : false} type="
|
|
3332
|
+
<CapButton disabled={val.disabled ? val.disabled : false} type="link" prefix={<CapIcon size="s" type="add-photo" />} onClick={(e) => this.openFileDialog(e, val.id)} style={{float: 'right', color: `${val.disabled ? FONT_COLOR_04 : FONT_COLOR_05}`}}>
|
|
3333
3333
|
{val.label}
|
|
3334
3334
|
</CapButton>
|
|
3335
3335
|
);
|
|
@@ -4034,7 +4034,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
4034
4034
|
return true;
|
|
4035
4035
|
});
|
|
4036
4036
|
const row = (
|
|
4037
|
-
<CapRow style={field.rowStyle ? field.rowStyle : {}} className={field.rowClassName ? field.rowClassName : ''}>
|
|
4037
|
+
<CapRow useLegacy style={field.rowStyle ? field.rowStyle : {}} className={field.rowClassName ? field.rowClassName : ''}>
|
|
4038
4038
|
{
|
|
4039
4039
|
_.forEach(columns, (value) => {
|
|
4040
4040
|
if (value) {
|
|
@@ -4076,7 +4076,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
4076
4076
|
}
|
|
4077
4077
|
});
|
|
4078
4078
|
const row = (
|
|
4079
|
-
<CapRow>
|
|
4079
|
+
<CapRow useLegacy>
|
|
4080
4080
|
{
|
|
4081
4081
|
_.forEach(columns, (value) => {
|
|
4082
4082
|
if (value) {
|
|
@@ -4159,31 +4159,30 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
4159
4159
|
}
|
|
4160
4160
|
const isPaneSupported = typeof pane.isSupported === "boolean" ? pane.isSupported : true; // pane.isSupported field exists only in mpush schema, in other channels it is not
|
|
4161
4161
|
if (isPaneSupported) {
|
|
4162
|
-
renderedPanes.push(
|
|
4163
|
-
|
|
4164
|
-
|
|
4165
|
-
tab={
|
|
4166
|
-
|
|
4167
|
-
|
|
4168
|
-
_.forEach(renderedContentSections, (value) => {
|
|
4169
|
-
if (value) {
|
|
4170
|
-
return value;
|
|
4171
|
-
}
|
|
4172
|
-
return value;
|
|
4173
|
-
}))
|
|
4174
|
-
}
|
|
4175
|
-
</div>
|
|
4176
|
-
}
|
|
4177
|
-
key={paneTabKey && paneTabKey !== '' ? `${paneTabKey}` : index}>
|
|
4178
|
-
{
|
|
4179
|
-
_.forEach(renderedSections, (value) => {
|
|
4162
|
+
renderedPanes.push({
|
|
4163
|
+
forceRender: true,
|
|
4164
|
+
tab: (
|
|
4165
|
+
<div className="form-tab-header" onInput={(e) => e.stopPropagation()}>
|
|
4166
|
+
{ this.state.translationLang !== 'ja-JP' && (
|
|
4167
|
+
_.forEach(renderedContentSections, (value) => {
|
|
4180
4168
|
if (value) {
|
|
4181
4169
|
return value;
|
|
4182
4170
|
}
|
|
4183
4171
|
return value;
|
|
4184
|
-
})
|
|
4185
|
-
|
|
4186
|
-
|
|
4172
|
+
}))
|
|
4173
|
+
}
|
|
4174
|
+
</div>
|
|
4175
|
+
),
|
|
4176
|
+
key: paneTabKey && paneTabKey !== '' ? `${paneTabKey}` : index,
|
|
4177
|
+
content: (
|
|
4178
|
+
_.forEach(renderedSections, (value) => {
|
|
4179
|
+
if (value) {
|
|
4180
|
+
return value;
|
|
4181
|
+
}
|
|
4182
|
+
return value;
|
|
4183
|
+
})
|
|
4184
|
+
),
|
|
4185
|
+
});
|
|
4187
4186
|
paneIndex += 1;
|
|
4188
4187
|
}
|
|
4189
4188
|
});
|
|
@@ -4196,7 +4195,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
4196
4195
|
activeTabKey = stateTabKey;
|
|
4197
4196
|
}
|
|
4198
4197
|
return (
|
|
4199
|
-
<
|
|
4198
|
+
<CapTab
|
|
4200
4199
|
className={`cap-tabs-${container.id}`}
|
|
4201
4200
|
activeKey={activeTabKey && activeTabKey !== '' ? `${activeTabKey}` : '1'}
|
|
4202
4201
|
defaultActiveKey={activeTabKey && activeTabKey !== '' ? `${activeTabKey}` : '1'}
|
|
@@ -4210,16 +4209,9 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
4210
4209
|
}
|
|
4211
4210
|
return value;
|
|
4212
4211
|
})
|
|
4213
|
-
}>
|
|
4214
|
-
{
|
|
4215
|
-
_.forEach(renderedPanes, (value) => {
|
|
4216
|
-
if (value) {
|
|
4217
|
-
return value;
|
|
4218
|
-
}
|
|
4219
|
-
return value;
|
|
4220
|
-
})
|
|
4221
4212
|
}
|
|
4222
|
-
|
|
4213
|
+
panes={renderedPanes}
|
|
4214
|
+
/>
|
|
4223
4215
|
);
|
|
4224
4216
|
|
|
4225
4217
|
default:
|
|
@@ -4273,7 +4265,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
|
|
|
4273
4265
|
|
|
4274
4266
|
return (
|
|
4275
4267
|
<CapSpin spinning={Boolean((this.isLiquidFlowSupportedByChannel() && this.props.liquidExtractionInProgress) || this.props.metaDataStatus === REQUEST)} tip={this.props.intl.formatMessage(messages.liquidSpinText)} >
|
|
4276
|
-
<CapRow>
|
|
4268
|
+
<CapRow useLegacy>
|
|
4277
4269
|
{this.props.schema && this.renderForm()}
|
|
4278
4270
|
<SlideBox
|
|
4279
4271
|
header={
|
|
@@ -609,7 +609,7 @@ const HTMLEditor = forwardRef(({
|
|
|
609
609
|
// Loading state
|
|
610
610
|
if (!content || !layout) {
|
|
611
611
|
return (
|
|
612
|
-
<CapRow className="html-editor-loading">
|
|
612
|
+
<CapRow useLegacy className="html-editor-loading">
|
|
613
613
|
<CapSpin size="large" tip={intl.formatMessage(messages.initializing)} />
|
|
614
614
|
</CapRow>
|
|
615
615
|
);
|
|
@@ -633,7 +633,7 @@ const HTMLEditor = forwardRef(({
|
|
|
633
633
|
/>
|
|
634
634
|
) : (
|
|
635
635
|
/* InApp variant: Device Toggle + Toolbar combined */
|
|
636
|
-
<CapRow className="html-editor__header">
|
|
636
|
+
<CapRow useLegacy className="html-editor__header">
|
|
637
637
|
<DeviceToggle
|
|
638
638
|
activeDevice={activeDevice}
|
|
639
639
|
onDeviceChange={switchDevice}
|
|
@@ -652,7 +652,7 @@ const HTMLEditor = forwardRef(({
|
|
|
652
652
|
)}
|
|
653
653
|
|
|
654
654
|
{/* Main Content Area - Split Container */}
|
|
655
|
-
<CapRow className="html-editor-content">
|
|
655
|
+
<CapRow useLegacy className="html-editor-content">
|
|
656
656
|
<SplitContainer className="html-editor-split-container">
|
|
657
657
|
{/* Code Editor Pane */}
|
|
658
658
|
<CodeEditorPane
|
|
@@ -691,7 +691,7 @@ const HTMLEditor = forwardRef(({
|
|
|
691
691
|
width="93vw"
|
|
692
692
|
className="html-editor-fullscreen-modal"
|
|
693
693
|
>
|
|
694
|
-
<CapRow className={`html-editor-fullscreen html-editor-fullscreen--${variant} ${isLibraryMode ? 'html-editor-fullscreen--library-mode' : ''}`}>
|
|
694
|
+
<CapRow useLegacy className={`html-editor-fullscreen html-editor-fullscreen--${variant} ${isLibraryMode ? 'html-editor-fullscreen--library-mode' : ''}`}>
|
|
695
695
|
{/* Editor Toolbar - Conditional based on variant */}
|
|
696
696
|
{variant === HTML_EDITOR_VARIANTS.EMAIL ? (
|
|
697
697
|
<EditorToolbar
|
|
@@ -274,7 +274,7 @@ const CodeEditorPaneComponent = ({
|
|
|
274
274
|
<div className="codemirror-wrapper">
|
|
275
275
|
<div ref={editorRef} className="codemirror-editor" />
|
|
276
276
|
{/* Floating Add Label Button */}
|
|
277
|
-
<CapRow className="code-editor-pane__actions">
|
|
277
|
+
<CapRow useLegacy className="code-editor-pane__actions">
|
|
278
278
|
<TagList
|
|
279
279
|
key="html-editor-taglist"
|
|
280
280
|
label={intl.formatMessage(messages.addLabel)}
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
transition: all 0.2s ease-in-out;
|
|
42
42
|
|
|
43
43
|
// Override any Cap UI button styles with high specificity
|
|
44
|
-
&.cap-button,
|
|
44
|
+
&.cap-button-v2,
|
|
45
45
|
&.ant-btn,
|
|
46
46
|
&.cap-button-primary,
|
|
47
47
|
&.cap-button-success,
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
// Override Cap UI styles for active state with high specificity
|
|
97
|
-
&.cap-button,
|
|
97
|
+
&.cap-button-v2,
|
|
98
98
|
&.ant-btn,
|
|
99
99
|
&.cap-button-primary,
|
|
100
100
|
&.cap-button-success,
|
|
@@ -51,7 +51,7 @@ const DeviceToggle = ({
|
|
|
51
51
|
return (
|
|
52
52
|
<CapRow className={`device-toggle ${className}`}>
|
|
53
53
|
{/* Device Tabs */}
|
|
54
|
-
<CapRow className="device-toggle__tabs">
|
|
54
|
+
<CapRow useLegacy className="device-toggle__tabs">
|
|
55
55
|
{/* Android Tab */}
|
|
56
56
|
<CapButton
|
|
57
57
|
type={activeDevice === DEVICE_TYPES.ANDROID ? "primary" : "default"}
|
|
@@ -78,7 +78,7 @@ const DeviceToggle = ({
|
|
|
78
78
|
</CapRow>
|
|
79
79
|
|
|
80
80
|
{/* Content Sync Checkbox */}
|
|
81
|
-
<CapRow className="device-toggle__sync">
|
|
81
|
+
<CapRow useLegacy className="device-toggle__sync">
|
|
82
82
|
<CapCheckbox
|
|
83
83
|
checked={keepContentSame}
|
|
84
84
|
onChange={handleCheckboxChange}
|
|
@@ -35,7 +35,7 @@ const PreviewModeGroup = ({
|
|
|
35
35
|
return (
|
|
36
36
|
<div className="preview-mode-group">
|
|
37
37
|
<CapButton
|
|
38
|
-
type="
|
|
38
|
+
type="link"
|
|
39
39
|
onClick={() => onChange(DESKTOP)}
|
|
40
40
|
disabled={disabled}
|
|
41
41
|
className={value === DESKTOP ? 'preview-mode-group__btn preview-mode-group__btn--active' : 'preview-mode-group__btn'}
|
|
@@ -45,7 +45,7 @@ const PreviewModeGroup = ({
|
|
|
45
45
|
<CapIcon type="desktop" size="m" />
|
|
46
46
|
</CapButton>
|
|
47
47
|
<CapButton
|
|
48
|
-
type="
|
|
48
|
+
type="link"
|
|
49
49
|
onClick={() => onChange(MOBILE)}
|
|
50
50
|
disabled={disabled}
|
|
51
51
|
className={value === MOBILE ? 'preview-mode-group__btn preview-mode-group__btn--active' : 'preview-mode-group__btn'}
|
|
@@ -61,7 +61,7 @@ const EditorToolbar = ({
|
|
|
61
61
|
<Header className={`editor-toolbar ${className}`}>
|
|
62
62
|
{/* Left Section - Title (conditional) */}
|
|
63
63
|
{showTitle && (
|
|
64
|
-
<CapRow className="editor-toolbar__left">
|
|
64
|
+
<CapRow useLegacy className="editor-toolbar__left">
|
|
65
65
|
<Text strong className="editor-toolbar__title">
|
|
66
66
|
{variant === HTML_EDITOR_VARIANTS.INAPP
|
|
67
67
|
? intl.formatMessage(messages.inAppEditor)
|
|
@@ -95,7 +95,7 @@ const EditorToolbar = ({
|
|
|
95
95
|
)}
|
|
96
96
|
|
|
97
97
|
{/* Right Section - Actions */}
|
|
98
|
-
<CapRow className="editor-toolbar__right">
|
|
98
|
+
<CapRow useLegacy className="editor-toolbar__right">
|
|
99
99
|
{showFullscreenButton && (
|
|
100
100
|
<CapButton
|
|
101
101
|
type="text"
|
|
@@ -183,14 +183,14 @@ const PreviewPane = ({
|
|
|
183
183
|
// Render Email preview for Email variant
|
|
184
184
|
return (
|
|
185
185
|
<div className={`preview-pane ${className}`}>
|
|
186
|
-
<CapRow className="preview-pane__mode-controls">
|
|
186
|
+
<CapRow useLegacy className="preview-pane__mode-controls">
|
|
187
187
|
<PreviewModeGroup
|
|
188
188
|
value={viewMode}
|
|
189
189
|
onChange={setViewMode}
|
|
190
190
|
/>
|
|
191
191
|
</CapRow>
|
|
192
192
|
|
|
193
|
-
<CapRow className="preview-pane__content">
|
|
193
|
+
<CapRow useLegacy className="preview-pane__content">
|
|
194
194
|
{iframeContent ? renderDeviceFrame() : renderEmptyState()}
|
|
195
195
|
</CapRow>
|
|
196
196
|
</div>
|
|
@@ -235,7 +235,7 @@ const SplitContainer = ({
|
|
|
235
235
|
className={containerClasses}
|
|
236
236
|
style={containerStyle}
|
|
237
237
|
>
|
|
238
|
-
<CapRow className="split-container__panel split-container__panel--first">
|
|
238
|
+
<CapRow useLegacy className="split-container__panel split-container__panel--first">
|
|
239
239
|
{children?.[0]}
|
|
240
240
|
</CapRow>
|
|
241
241
|
|
|
@@ -256,7 +256,7 @@ const SplitContainer = ({
|
|
|
256
256
|
</div>
|
|
257
257
|
</div>
|
|
258
258
|
|
|
259
|
-
<CapRow className="split-container__panel split-container__panel--second">
|
|
259
|
+
<CapRow useLegacy className="split-container__panel split-container__panel--second">
|
|
260
260
|
{children?.[1]}
|
|
261
261
|
</CapRow>
|
|
262
262
|
</div>
|
|
@@ -14,12 +14,9 @@ import Empty from 'antd/lib/empty';
|
|
|
14
14
|
import Spin from 'antd/lib/spin';
|
|
15
15
|
|
|
16
16
|
// Import icons individually
|
|
17
|
-
|
|
18
|
-
import WarningOutlined from '@ant-design/icons/WarningOutlined';
|
|
19
|
-
import InfoCircleOutlined from '@ant-design/icons/InfoCircleOutlined';
|
|
17
|
+
// TODO: ShieldOutlined, BugOutlined, EyeInvisibleOutlined have no direct CapIcon equivalent — kept for follow-up
|
|
20
18
|
import ShieldOutlined from '@ant-design/icons/ShieldOutlined';
|
|
21
19
|
import BugOutlined from '@ant-design/icons/BugOutlined';
|
|
22
|
-
import CodeOutlined from '@ant-design/icons/CodeOutlined';
|
|
23
20
|
import EyeInvisibleOutlined from '@ant-design/icons/EyeInvisibleOutlined';
|
|
24
21
|
import CapIcon from '@capillarytech/cap-ui-library/CapIcon';
|
|
25
22
|
|
|
@@ -90,15 +87,15 @@ const ValidationPanel = ({
|
|
|
90
87
|
const getSourceIcon = (source) => {
|
|
91
88
|
switch (source) {
|
|
92
89
|
case 'htmlhint':
|
|
93
|
-
return <
|
|
90
|
+
return <CapIcon type="code" outlined />;
|
|
94
91
|
case 'css-validator':
|
|
95
|
-
return <
|
|
92
|
+
return <CapIcon type="code" outlined />;
|
|
96
93
|
case 'security':
|
|
97
94
|
return <ShieldOutlined />;
|
|
98
95
|
case 'custom':
|
|
99
96
|
return <BugOutlined />;
|
|
100
97
|
default:
|
|
101
|
-
return <
|
|
98
|
+
return <CapIcon type="info" outlined />;
|
|
102
99
|
}
|
|
103
100
|
};
|
|
104
101
|
|
|
@@ -213,13 +210,13 @@ const ValidationPanel = ({
|
|
|
213
210
|
<div className="validation-panel">
|
|
214
211
|
<div className="validation-panel__summary">
|
|
215
212
|
<div className="validation-panel__summary-item">
|
|
216
|
-
<
|
|
213
|
+
<CapIcon type="exclamation-circle" outlined style={{ color: '#ff4d4f' }} />
|
|
217
214
|
<span>{validation?.summary?.totalErrors || 0}</span>
|
|
218
215
|
<FormattedMessage {...messages.errors} />
|
|
219
216
|
</div>
|
|
220
217
|
|
|
221
218
|
<div className="validation-panel__summary-item">
|
|
222
|
-
<
|
|
219
|
+
<CapIcon type="warning" outlined style={{ color: '#faad14' }} />
|
|
223
220
|
<span>{validation?.summary?.totalWarnings || 0}</span>
|
|
224
221
|
<FormattedMessage {...messages.warnings} />
|
|
225
222
|
</div>
|
|
@@ -247,14 +247,14 @@ const ValidationTabs = ({
|
|
|
247
247
|
|
|
248
248
|
return (
|
|
249
249
|
<div className={`validation-tabs ${isCollapsed ? 'validation-tabs--collapsed' : ''} ${className || ''}`}>
|
|
250
|
-
<CapRow className="validation-tabs__header">
|
|
250
|
+
<CapRow useLegacy className="validation-tabs__header">
|
|
251
251
|
<StyledCapTab
|
|
252
252
|
className="validation-tabs__tabs"
|
|
253
253
|
activeKey={activeKey || (tabPanes[0]?.key)}
|
|
254
254
|
onChange={setActiveKey}
|
|
255
255
|
panes={tabPanes}
|
|
256
256
|
/>
|
|
257
|
-
<CapRow className="validation-tabs__actions">
|
|
257
|
+
<CapRow useLegacy className="validation-tabs__actions">
|
|
258
258
|
<CapTooltip title={collapseLabel}>
|
|
259
259
|
<button
|
|
260
260
|
type="button"
|
|
@@ -35,7 +35,13 @@ const CapWrapper = styled.div`
|
|
|
35
35
|
background-color: #ffffff;
|
|
36
36
|
width: 100%;
|
|
37
37
|
display: flex;
|
|
38
|
-
margin-top: ${(props) => props.isEmbedded ? '0px' : '64px'}
|
|
38
|
+
margin-top: ${(props) => props.isEmbedded ? '0px' : '64px'};
|
|
39
|
+
.sidebar-container {
|
|
40
|
+
margin-right: 10px;
|
|
41
|
+
}
|
|
42
|
+
.ant-collapse {
|
|
43
|
+
background-color: #ffffff;
|
|
44
|
+
}
|
|
39
45
|
`;
|
|
40
46
|
|
|
41
47
|
const ComponentWrapper = styled.div`
|