@capillarytech/creatives-library 3.6.4 → 3.6.6
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/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +7 -7
- package/components/TemplatePreview/_templatePreview.scss +279 -20
- package/components/TemplatePreview/assets/images/home-screen-android.svg +21 -0
- package/components/TemplatePreview/assets/images/home-screen-ios.svg +16 -0
- package/components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -0
- package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +16 -0
- package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -0
- package/components/TemplatePreview/index.js +180 -20
- package/components/TemplatePreview/messages.js +16 -0
- package/containers/Cap/messsages.js +63 -0
- package/package.json +1 -1
- package/v2Components/FormBuilder/index.js +15 -6
- package/v2Components/Header/index.js +46 -0
- package/v2Components/Header/tests/index.test.js +10 -0
- package/v2Components/MobilePushPreviewV2/index.js +40 -32
- package/v2Components/MobilePushPreviewV2/messages.js +0 -8
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +64 -0
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +101 -19
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +12 -0
- package/v2Components/TemplatePreview/_templatePreview.scss +13 -4
- package/v2Components/TemplatePreview/assets/images/home-screen-android.svg +21 -0
- package/v2Components/TemplatePreview/assets/images/home-screen-ios.svg +16 -0
- package/v2Components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -0
- package/v2Components/TemplatePreview/assets/images/wechat-home-screen-android.svg +21 -0
- package/v2Components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -0
- package/v2Components/TemplatePreview/index.js +147 -20
- package/v2Components/TemplatePreview/messages.js +8 -0
- package/v2Containers/Assets/Gallery/index.js +4 -2
- package/v2Containers/CreativesContainer/SlideBoxContent.js +15 -2
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -1
- package/v2Containers/CreativesContainer/index.js +3 -1
- package/v2Containers/CreativesContainer/messages.js +2 -2
- package/v2Containers/Email/_email.scss +7 -1
- package/v2Containers/Email/index.js +39 -13
- package/v2Containers/Email/messages.js +4 -0
- package/v2Containers/EmailWrapper/index.js +4 -0
- package/v2Containers/MobilePush/Create/index.js +5 -0
- package/v2Containers/MobilePush/Edit/index.js +5 -0
- package/v2Containers/MobilepushWrapper/index.js +4 -1
- package/v2Containers/Sms/Create/index.js +2 -1
- package/v2Containers/Sms/Edit/index.js +2 -0
- package/v2Containers/Templates/index.js +6 -2
- package/v2Containers/TemplatesV2/_templatesV2.scss +5 -0
|
@@ -10,17 +10,114 @@ import React from 'react';
|
|
|
10
10
|
import _ from 'lodash';
|
|
11
11
|
import { injectIntl, FormattedMessage, intlShape } from 'react-intl';
|
|
12
12
|
// import styled from 'styled-components';
|
|
13
|
-
import {CapColumn, CapRow, CapHeading} from '@capillarytech/cap-ui-library';
|
|
13
|
+
import {CapColumn, CapRow, CapHeading, CapIcon, CapButton, CapImage} from '@capillarytech/cap-ui-library';
|
|
14
14
|
import './_templatePreview.scss';
|
|
15
15
|
import {updateCharCount} from '../../utils/smsCharCountV2';
|
|
16
16
|
import messages from './messages';
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
const
|
|
17
|
+
import { WECHAT } from '../../v2Containers/CreativesContainer/constants';
|
|
18
|
+
const wechatBodyNew = require('./assets/images/wechat_mobile_android.svg');
|
|
19
|
+
const smsMobileAndroid = require('./assets/images/sms_mobile_android.svg');
|
|
20
20
|
const androidPushMessagePhone = require('./assets/images/androidPushMessage.svg');
|
|
21
21
|
const iPhonePushMessagePhone = require('./assets/images/iPhonePushMessage.svg');
|
|
22
22
|
|
|
23
23
|
class TemplatePreview extends React.Component { // eslint-disable-line react/prefer-stateless-function
|
|
24
|
+
onPreviewContentClicked = (channel) => {
|
|
25
|
+
const IOSContent = (this.props.templateDataRaw && this.props.templateDataRaw.versions.base.IOS) ||
|
|
26
|
+
((this.props.device === 'iphone' || this.props.device === 'ios') && this.props.content);
|
|
27
|
+
const ANDROIDContent = (this.props.templateDataRaw && this.props.templateDataRaw.versions.base.ANDROID) ||
|
|
28
|
+
(this.props.device === 'android' && this.props.content);
|
|
29
|
+
const mobilePushPreviewContent = [];
|
|
30
|
+
if (this.props.channel === 'MOBILEPUSH') {
|
|
31
|
+
const previewObj = {
|
|
32
|
+
channel: this.props.channel,
|
|
33
|
+
accountId: this.props.templateDataRaw && this.props.templateDataRaw.definition.accountId,
|
|
34
|
+
messageSubject: this.props.templateDataRaw && this.props.templateDataRaw.name,
|
|
35
|
+
id: 'message_content_id_1',
|
|
36
|
+
};
|
|
37
|
+
if (IOSContent) {
|
|
38
|
+
previewObj.iosContent = {
|
|
39
|
+
title: IOSContent.title || IOSContent.header,
|
|
40
|
+
message: IOSContent.message || IOSContent.bodyText,
|
|
41
|
+
deviceType: "IOS",
|
|
42
|
+
expandableDetails: IOSContent.expandableDetails ||
|
|
43
|
+
{
|
|
44
|
+
style: "BIG_PICTURE",
|
|
45
|
+
image: this.props.content.bodyImage,
|
|
46
|
+
message: this.props.content.bodyText,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
if (ANDROIDContent) {
|
|
51
|
+
previewObj.androidContent = {
|
|
52
|
+
title: ANDROIDContent.title || ANDROIDContent.header,
|
|
53
|
+
message: ANDROIDContent.message || ANDROIDContent.bodyText,
|
|
54
|
+
deviceType: "ANDROID",
|
|
55
|
+
expandableDetails: ANDROIDContent.expandableDetails ||
|
|
56
|
+
{
|
|
57
|
+
style: "BIG_PICTURE",
|
|
58
|
+
image: this.props.content.bodyImage,
|
|
59
|
+
message: this.props.content.bodyText,
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
mobilePushPreviewContent.push(previewObj);
|
|
64
|
+
}
|
|
65
|
+
const previewContent = this.props.channel === 'MOBILEPUSH' ? mobilePushPreviewContent : this.props.content;
|
|
66
|
+
const params = {
|
|
67
|
+
content: previewContent,
|
|
68
|
+
channel,
|
|
69
|
+
};
|
|
70
|
+
this.props.onPreviewContentClicked(params);
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
onTestContentClicked = (channel) => {
|
|
74
|
+
let mobilePushPreviewContent = {};
|
|
75
|
+
const IOSContent = (this.props.templateDataRaw && this.props.templateDataRaw.versions.base.IOS) ||
|
|
76
|
+
((this.props.device === 'iphone' || this.props.device === 'ios') && this.props.content);
|
|
77
|
+
const ANDROIDContent = (this.props.templateDataRaw && this.props.templateDataRaw.versions.base.ANDROID) ||
|
|
78
|
+
(this.props.device === 'android' && this.props.content);
|
|
79
|
+
if (this.props.channel === 'MOBILEPUSH') {
|
|
80
|
+
mobilePushPreviewContent = {
|
|
81
|
+
channel: this.props.channel,
|
|
82
|
+
accountId: this.props.templateDataRaw && this.props.templateDataRaw.definition.accountId,
|
|
83
|
+
messageSubject: this.props.templateDataRaw && this.props.templateDataRaw.name,
|
|
84
|
+
id: 'message_content_id_1',
|
|
85
|
+
};
|
|
86
|
+
if (ANDROIDContent) {
|
|
87
|
+
mobilePushPreviewContent.androidContent = {
|
|
88
|
+
title: ANDROIDContent.title || ANDROIDContent.header,
|
|
89
|
+
message: ANDROIDContent.message || ANDROIDContent.bodyText,
|
|
90
|
+
deviceType: "ANDROID",
|
|
91
|
+
expandableDetails: ANDROIDContent.expandableDetails ||
|
|
92
|
+
{
|
|
93
|
+
style: "BIG_PICTURE",
|
|
94
|
+
image: this.props.content.bodyImage,
|
|
95
|
+
message: this.props.content.bodyText,
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
if (IOSContent) {
|
|
100
|
+
mobilePushPreviewContent.iosContent = {
|
|
101
|
+
title: IOSContent.title || IOSContent.header,
|
|
102
|
+
message: IOSContent.message || IOSContent.bodyText,
|
|
103
|
+
deviceType: "IOS",
|
|
104
|
+
expandableDetails: IOSContent.expandableDetails ||
|
|
105
|
+
{
|
|
106
|
+
style: "BIG_PICTURE",
|
|
107
|
+
image: this.props.content.bodyImage,
|
|
108
|
+
message: this.props.content.bodyText,
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const previewContent = this.props.channel === 'MOBILEPUSH' ? mobilePushPreviewContent : this.props.content;
|
|
114
|
+
const params = {
|
|
115
|
+
content: previewContent,
|
|
116
|
+
channel,
|
|
117
|
+
};
|
|
118
|
+
this.props.onTestContentClicked(params);
|
|
119
|
+
};
|
|
120
|
+
|
|
24
121
|
render() {
|
|
25
122
|
let content = channel && channel.toLowerCase() === 'sms' ? [this.props.content] : this.props.content;
|
|
26
123
|
const channel = this.props.channel;
|
|
@@ -64,16 +161,43 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
|
|
|
64
161
|
</CapHeading>}
|
|
65
162
|
</CapColumn>}
|
|
66
163
|
<CapColumn span={this.props.showCount ? 8 : 24}>
|
|
164
|
+
{this.props.showTestAndPreviewIcon && this.props.channel !== WECHAT && (
|
|
165
|
+
<div className="test-and-preview-container">
|
|
166
|
+
<CapButton
|
|
167
|
+
style={{
|
|
168
|
+
color: '#2466ea',
|
|
169
|
+
display: 'inline-block',
|
|
170
|
+
padding: '0 6px',
|
|
171
|
+
marginTop: '12px',
|
|
172
|
+
}}
|
|
173
|
+
type="flat"
|
|
174
|
+
onClick={() => this.onPreviewContentClicked(this.props.channel)}
|
|
175
|
+
>
|
|
176
|
+
<CapIcon type="eye"/><FormattedMessage {...messages.preview} />
|
|
177
|
+
</CapButton>
|
|
178
|
+
<CapButton
|
|
179
|
+
style={{
|
|
180
|
+
color: '#2466ea',
|
|
181
|
+
display: 'inline-block',
|
|
182
|
+
padding: '0 6px',
|
|
183
|
+
marginTop: '12px',
|
|
184
|
+
}}
|
|
185
|
+
type="flat"
|
|
186
|
+
onClick={() => this.onTestContentClicked(this.props.channel)}
|
|
187
|
+
>
|
|
188
|
+
<CapIcon type="lab"/><FormattedMessage {...messages.testMessage} />
|
|
189
|
+
</CapButton>
|
|
190
|
+
</div>
|
|
191
|
+
)}
|
|
67
192
|
<div className={`preview-container ${type === 'embedded' ? 'embedded-preview' : ''}`}>
|
|
68
193
|
{ channel && channel.toLowerCase() === 'sms' &&
|
|
69
194
|
<div>
|
|
70
|
-
<div className="shell align-center" id="sms-preview">
|
|
71
|
-
<
|
|
195
|
+
<div className="shell-v2 align-center" id="sms-preview">
|
|
196
|
+
<CapImage className="preview-image sms" src={smsMobileAndroid} alt="Preview is being generated"/>
|
|
72
197
|
<div className="msgContainer sms">
|
|
73
|
-
<img className="sms-icon" src={smsIcon} alt="Sms icon" />
|
|
74
198
|
<div className={"message-pop sms"}>
|
|
75
199
|
{content && content.length && content.map((msg, index) =>
|
|
76
|
-
<CapColumn key={`"message-pop-content-${index}`} className="message-pop-item align-left" style={{ background: '#
|
|
200
|
+
<CapColumn key={`"message-pop-content-${index}`} className="message-pop-item align-left" style={{ background: '#FFFFFF', color: '#091e42'}}>
|
|
77
201
|
{msg}
|
|
78
202
|
</CapColumn>)
|
|
79
203
|
}
|
|
@@ -96,10 +220,9 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
|
|
|
96
220
|
</div>
|
|
97
221
|
}
|
|
98
222
|
{channel && channel.toLowerCase() === 'wechat' ?
|
|
99
|
-
( <div className="shell align-center" id="sms-preview">
|
|
100
|
-
<
|
|
101
|
-
<div className="msgContainer">
|
|
102
|
-
{this.props.channel.toLowerCase() === 'wechat' ? <div className="sms-icon" style={{ width: '25px', height: '25px', background: '#2E89DF' }}></div> : <img className="sms-icon" src={smsIcon} alt={this.props.intl.formatMessage(messages.smsIcon)} />}
|
|
223
|
+
( <div className="shell-v2 align-center" id="sms-preview">
|
|
224
|
+
<CapImage className="preview-image" src={channel.toLowerCase() === 'wechat' ? wechatBodyNew : smsMobileAndroid} alt="Preview is being generated"/>
|
|
225
|
+
<div className="msgContainer wechat">
|
|
103
226
|
<div className="message-pop align-left" style={{ background: `${this.props.channel.toLowerCase() === 'wechat' ? '#ffffff' : '#3F51B5'}`, color: `${this.props.channel.toLowerCase() === 'wechat' ? '#333333' : '#ffffff'}`}}>{content}
|
|
104
227
|
</div>
|
|
105
228
|
</div>
|
|
@@ -107,10 +230,10 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
|
|
|
107
230
|
) : ''
|
|
108
231
|
}
|
|
109
232
|
{ channel && (channel.toLowerCase() === 'mobilepush') &&
|
|
110
|
-
(<div className="shell align-center" id="mobilepush-preview">
|
|
111
|
-
<
|
|
233
|
+
(<div className="shell-v2 align-center" id="mobilepush-preview">
|
|
234
|
+
<CapImage className="preview-image" src={this.props.device === "android" ? androidPushMessagePhone : iPhonePushMessagePhone} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
|
|
112
235
|
{(!!content.header || !!content.bodyText || !!content.bodyImage) &&
|
|
113
|
-
<div className={`${this.props.device}-push-message-Container`}>
|
|
236
|
+
<div className={`${this.props.device === 'ios' ? 'iphone' : this.props.device}-push-message-Container`}>
|
|
114
237
|
{this.props.device === "android" ?
|
|
115
238
|
<div className="message-pop align-left">
|
|
116
239
|
<div className="app-name">
|
|
@@ -123,7 +246,7 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
|
|
|
123
246
|
{content.bodyText}
|
|
124
247
|
</div>
|
|
125
248
|
{content.bodyImage && <div className="body-image">
|
|
126
|
-
<
|
|
249
|
+
<CapImage src={content.bodyImage} alt="" />
|
|
127
250
|
</div>}
|
|
128
251
|
{content.actions.filter((action) => action.label).length ?
|
|
129
252
|
<div className="actions">
|
|
@@ -138,7 +261,7 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
|
|
|
138
261
|
<span className="app-icon"></span>{content.appName ? content.appName : "App name"} <i className="material-icons">{this.props.intl.formatMessage(messages.close)}</i>
|
|
139
262
|
</div>
|
|
140
263
|
{content.bodyImage && <div className="body-image">
|
|
141
|
-
<
|
|
264
|
+
<CapImage src={content.bodyImage} alt=""/>
|
|
142
265
|
</div>}
|
|
143
266
|
<div className="title">
|
|
144
267
|
{content.header}
|
|
@@ -156,12 +279,12 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
|
|
|
156
279
|
}
|
|
157
280
|
{
|
|
158
281
|
channel && channel.toLowerCase() === 'line' ? (
|
|
159
|
-
<div className="shell align-center" id="sms-preview">
|
|
160
|
-
<
|
|
282
|
+
<div className="shell-v2 align-center" id="sms-preview">
|
|
283
|
+
<CapImage className="preview-image" src={wechatBodyNew} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
|
|
161
284
|
<div className="msgContainer">
|
|
162
285
|
<div className="sms-icon" style={{ width: '25px', height: '25px', background: '#2E89DF' }}></div>
|
|
163
286
|
<div className="message-pop align-left" style={{ background: '#ffffff', color: '#333333' }}>
|
|
164
|
-
{ (content && content.bodyImage) ? <
|
|
287
|
+
{ (content && content.bodyImage) ? <CapImage src={content.bodyImage} alt="ddd" style={{maxWidth: '100%'}}/> : '' }
|
|
165
288
|
{ (content && content.bodyText) ? content.bodyText : ''}
|
|
166
289
|
</div>
|
|
167
290
|
</div>
|
|
@@ -189,6 +312,10 @@ TemplatePreview.propTypes = {
|
|
|
189
312
|
unicodeEnabled: PropTypes.bool,
|
|
190
313
|
showCount: PropTypes.bool,
|
|
191
314
|
intl: intlShape.isRequired,
|
|
315
|
+
templateDataRaw: PropTypes.object,
|
|
316
|
+
onPreviewContentClicked: PropTypes.func,
|
|
317
|
+
onTestContentClicked: PropTypes.func,
|
|
318
|
+
showTestAndPreviewIcon: PropTypes.bool,
|
|
192
319
|
};
|
|
193
320
|
|
|
194
321
|
export default (injectIntl(TemplatePreview));
|
|
@@ -50,4 +50,12 @@ export default defineMessages({
|
|
|
50
50
|
id: 'creatives.componentsV2.TemplatePreview.smsIcon',
|
|
51
51
|
defaultMessage: 'Sms Icon',
|
|
52
52
|
},
|
|
53
|
+
preview: {
|
|
54
|
+
id: 'creatives.componentsV2.TemplatePreview.preview',
|
|
55
|
+
defaultMessage: 'Preview',
|
|
56
|
+
},
|
|
57
|
+
testMessage: {
|
|
58
|
+
id: 'creatives.componentsV2.TemplatePreview.testMessage',
|
|
59
|
+
defaultMessage: 'Test Message',
|
|
60
|
+
},
|
|
53
61
|
});
|
|
@@ -251,6 +251,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
251
251
|
}
|
|
252
252
|
}
|
|
253
253
|
getIllustrationProps={
|
|
254
|
+
buttonClassName: 'upload-image-gallery',
|
|
254
255
|
buttonLabel: <FormattedMessage {...messages.upload} />,
|
|
255
256
|
onClick: (e) => this.openFileDialog(e),
|
|
256
257
|
illustrationImage: imageGalleryIllustration,
|
|
@@ -317,6 +318,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
317
318
|
title: <span title={template.name} >{template.name}</span>,
|
|
318
319
|
extra: [
|
|
319
320
|
<CapIcon
|
|
321
|
+
className="view-gallery"
|
|
320
322
|
style={{marginRight: '16px'}}
|
|
321
323
|
type="eye"
|
|
322
324
|
onClick={() => { this.openPreviewMode(template); }}
|
|
@@ -324,7 +326,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
324
326
|
<CapDropdown
|
|
325
327
|
overlay={
|
|
326
328
|
<CapMenu>
|
|
327
|
-
<CapMenu.Item onClick={() => this.deleteAsset(template)}>
|
|
329
|
+
<CapMenu.Item className="delete-gallery" onClick={() => this.deleteAsset(template)}>
|
|
328
330
|
<FormattedMessage {...messages.delete} />
|
|
329
331
|
</CapMenu.Item>
|
|
330
332
|
</CapMenu>
|
|
@@ -429,7 +431,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
429
431
|
<div style={{ textAlign: 'right', marginTop: '16px', width: '50%'}}>
|
|
430
432
|
<form encType="multipart/form-data" id="myForm">
|
|
431
433
|
<input style={{ display: 'none'}} id="fileName" type="file" onChange={(e) => this.uploadImages(e, {files: e.target.files})} accept="image/*" multiple/>
|
|
432
|
-
<CapButton type={this.props.location.query.type !== 'embedded' ? 'primary' : 'secondary'} onClick={(e) => this.openFileDialog(e)} style={{float: 'right'}}>
|
|
434
|
+
<CapButton className="upload-image-gallery" type={this.props.location.query.type !== 'embedded' ? 'primary' : 'secondary'} onClick={(e) => this.openFileDialog(e)} style={{float: 'right'}}>
|
|
433
435
|
<FormattedMessage {...messages.upload} />
|
|
434
436
|
</CapButton>
|
|
435
437
|
</form>
|
|
@@ -69,6 +69,8 @@ function SlideBoxContent(props) {
|
|
|
69
69
|
selectedWeChatAccount,
|
|
70
70
|
weChatMaptemplateStep,
|
|
71
71
|
onWeChatMaptemplateStepChange,
|
|
72
|
+
onTestContentClicked,
|
|
73
|
+
onPreviewContentClicked
|
|
72
74
|
onFacebookSubmit,
|
|
73
75
|
} = props;
|
|
74
76
|
const type = messageDetails.type.toLowerCase(); // type is context in get tags values : outbound | dvs | referral | loyalty | coupons
|
|
@@ -104,7 +106,6 @@ function SlideBoxContent(props) {
|
|
|
104
106
|
isEmailPreview = slidBoxContent === 'preview' && channel === constants.EMAIL;
|
|
105
107
|
isMpushPreview = slidBoxContent === 'preview' && channel === constants.MOBILE_PUSH;
|
|
106
108
|
}
|
|
107
|
-
|
|
108
109
|
return (
|
|
109
110
|
<CreativesWrapper>
|
|
110
111
|
{!isFullMode && slidBoxContent === 'templates' && (
|
|
@@ -185,6 +186,8 @@ function SlideBoxContent(props) {
|
|
|
185
186
|
templateData={templateData}
|
|
186
187
|
forwardedTags={forwardedTags}
|
|
187
188
|
selectedOfferDetails={selectedOfferDetails}
|
|
189
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
190
|
+
onTestContentClicked={onTestContentClicked}
|
|
188
191
|
/>
|
|
189
192
|
)}
|
|
190
193
|
{
|
|
@@ -218,6 +221,8 @@ function SlideBoxContent(props) {
|
|
|
218
221
|
isFullMode={isFullMode}
|
|
219
222
|
forwardedTags={forwardedTags}
|
|
220
223
|
selectedOfferDetails={selectedOfferDetails}
|
|
224
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
225
|
+
onTestContentClicked={onTestContentClicked}
|
|
221
226
|
/>
|
|
222
227
|
)}
|
|
223
228
|
{isEmailCreate && (
|
|
@@ -240,6 +245,8 @@ function SlideBoxContent(props) {
|
|
|
240
245
|
onValidationFail={onValidationFail}
|
|
241
246
|
forwardedTags={forwardedTags}
|
|
242
247
|
selectedOfferDetails={selectedOfferDetails}
|
|
248
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
249
|
+
onTestContentClicked={onTestContentClicked}
|
|
243
250
|
/>
|
|
244
251
|
)}
|
|
245
252
|
{(isEditEmailWithId || isEmailEditWithContent) && (
|
|
@@ -263,6 +270,8 @@ function SlideBoxContent(props) {
|
|
|
263
270
|
onValidationFail={onValidationFail}
|
|
264
271
|
forwardedTags={forwardedTags}
|
|
265
272
|
selectedOfferDetails={selectedOfferDetails}
|
|
273
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
274
|
+
onTestContentClicked={onTestContentClicked}
|
|
266
275
|
/>
|
|
267
276
|
)}
|
|
268
277
|
{isEditMPush &&
|
|
@@ -283,6 +292,8 @@ function SlideBoxContent(props) {
|
|
|
283
292
|
onValidationFail={onValidationFail}
|
|
284
293
|
forwardedTags={forwardedTags}
|
|
285
294
|
selectedOfferDetails={selectedOfferDetails}
|
|
295
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
296
|
+
onTestContentClicked={onTestContentClicked}
|
|
286
297
|
/>
|
|
287
298
|
}
|
|
288
299
|
{isCreateMPush &&
|
|
@@ -307,7 +318,9 @@ function SlideBoxContent(props) {
|
|
|
307
318
|
query={query}
|
|
308
319
|
forwardedTags={forwardedTags}
|
|
309
320
|
onValidationFail={onValidationFail}
|
|
310
|
-
selectedOfferDetails={selectedOfferDetails}
|
|
321
|
+
selectedOfferDetails={selectedOfferDetails}
|
|
322
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
323
|
+
onTestContentClicked={onTestContentClicked}/>
|
|
311
324
|
}
|
|
312
325
|
{
|
|
313
326
|
isEditFacebook && (
|
|
@@ -48,7 +48,7 @@ function SlideBoxHeader(props) {
|
|
|
48
48
|
)}
|
|
49
49
|
{!showTemplateNameHeader && slidBoxContent === 'editTemplate' && (
|
|
50
50
|
<CapHeader
|
|
51
|
-
title={<FormattedMessage {...messages.editMessageContent} />}
|
|
51
|
+
title={<FormattedMessage {...messages.editMessageContent} values={{channel: getChannelLabel(channel)}}/>}
|
|
52
52
|
prefix={creativesMode !== 'edit' && !isFullMode && showPrefix &&
|
|
53
53
|
<PrefixWrapper>
|
|
54
54
|
<CapIcons.backIcon onClick={onShowTemplates} />
|
|
@@ -473,7 +473,7 @@ class Creatives extends React.Component {
|
|
|
473
473
|
}
|
|
474
474
|
render() {
|
|
475
475
|
const {slidBoxContent, isGetFormData, showSlideBox, templateData, currentChannel, emailCreateMode, templateStep, isLoadingContent, mobilePushCreateMode, isDiscardMessage, weChatTemplateType, weChatMaptemplateStep} = this.state;
|
|
476
|
-
const {isFullMode, creativesMode, cap, isUploading, channelsToHide, selectedWeChatAccount, forwardedTags, channelsToDisable, selectedOfferDetails, getCreativesData} = this.props;
|
|
476
|
+
const {isFullMode, creativesMode, cap, isUploading, channelsToHide, selectedWeChatAccount, forwardedTags, channelsToDisable, selectedOfferDetails, onTestContentClicked, onPreviewContentClicked, getCreativesData} = this.props;
|
|
477
477
|
const mapTemplateCreate = slidBoxContent === 'createTemplate' && weChatTemplateType === MAP_TEMPLATE && templateStep !== 'modeSelection';
|
|
478
478
|
/* TODO: Instead of passing down same props separately to each component down, write common function to these props and pass it accordingly */
|
|
479
479
|
return (
|
|
@@ -538,6 +538,8 @@ class Creatives extends React.Component {
|
|
|
538
538
|
weChatMaptemplateStep={weChatMaptemplateStep}
|
|
539
539
|
selectedWeChatAccount={selectedWeChatAccount}
|
|
540
540
|
onWeChatMaptemplateStepChange={this.onWeChatMaptemplateStepChange}
|
|
541
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
542
|
+
onTestContentClicked={onTestContentClicked}
|
|
541
543
|
onFacebookSubmit={getCreativesData}
|
|
542
544
|
/>
|
|
543
545
|
}
|
|
@@ -256,11 +256,11 @@ export default defineMessages({
|
|
|
256
256
|
},
|
|
257
257
|
"editMessageContent": {
|
|
258
258
|
id: `${scope}.editMessageContent`,
|
|
259
|
-
defaultMessage: `Edit
|
|
259
|
+
defaultMessage: `Edit {channel}`,
|
|
260
260
|
},
|
|
261
261
|
"createMessageContent": {
|
|
262
262
|
id: `${scope}.createMessageContent`,
|
|
263
|
-
defaultMessage: `New {channel}
|
|
263
|
+
defaultMessage: `New {channel}`,
|
|
264
264
|
},
|
|
265
265
|
"creativeTemplatesDesc": {
|
|
266
266
|
id: `${scope}.creativeTemplatesDesc`,
|