@capillarytech/creatives-library 3.6.7 → 3.6.9
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 +8 -7
- package/components/TemplatePreview/_templatePreview.scss +21 -280
- package/components/TemplatePreview/index.js +20 -180
- package/components/TemplatePreview/messages.js +0 -16
- package/package.json +1 -1
- package/v2Components/FormBuilder/index.js +6 -15
- package/v2Components/MobilePushPreviewV2/index.js +32 -40
- package/v2Components/MobilePushPreviewV2/messages.js +8 -0
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +0 -64
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +19 -101
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +0 -12
- package/v2Components/TemplatePreview/_templatePreview.scss +4 -13
- package/v2Components/TemplatePreview/assets/images/WECHAT_5x.png +0 -0
- package/v2Components/TemplatePreview/index.js +20 -147
- package/v2Components/TemplatePreview/messages.js +0 -8
- package/v2Containers/CallTask/index.js +1 -0
- package/v2Containers/CreativesContainer/SlideBoxContent.js +2 -15
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -1
- package/v2Containers/CreativesContainer/index.js +1 -3
- package/v2Containers/CreativesContainer/messages.js +2 -2
- package/v2Containers/Email/_email.scss +1 -7
- package/v2Containers/Email/index.js +13 -39
- package/v2Containers/Email/messages.js +0 -4
- package/v2Containers/EmailWrapper/index.js +0 -4
- package/v2Containers/Facebook/index.js +2 -1
- package/v2Containers/MobilePush/Create/index.js +0 -5
- package/v2Containers/MobilePush/Edit/index.js +0 -5
- package/v2Containers/MobilepushWrapper/index.js +1 -4
- package/v2Containers/Sms/Create/index.js +1 -2
- package/v2Containers/Sms/Edit/index.js +0 -2
|
@@ -7,15 +7,14 @@
|
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import PropTypes from 'prop-types';
|
|
9
9
|
// import { connect } from 'react-redux';
|
|
10
|
-
import { CapRow, CapColumn, CapButton
|
|
11
|
-
import { CapHeading, CapLabel
|
|
10
|
+
import { CapRow, CapColumn, CapButton } from '@capillarytech/cap-react-ui-library/';
|
|
11
|
+
import { CapHeading, CapLabel } from '@capillarytech/cap-ui-library/';
|
|
12
12
|
import { FormattedMessage } from 'react-intl';
|
|
13
13
|
import _ from 'lodash';
|
|
14
14
|
import './_wechatRichmediaTemplatePrev.scss';
|
|
15
15
|
import messages from './messages';
|
|
16
|
-
const wechatBody = require('./../assets/images/
|
|
17
|
-
|
|
18
|
-
const wechatLockScreenIos = require('./../assets/images/home-screen-ios.svg');
|
|
16
|
+
const wechatBody = require('./../assets/images/WECHAT_5x.png');
|
|
17
|
+
|
|
19
18
|
class WechatRichmediaTemplatePreview extends React.PureComponent { // eslint-disable-line react/prefer-stateless-function
|
|
20
19
|
preparePreviewData = (mediaList) => {
|
|
21
20
|
const previewMsg = [];
|
|
@@ -24,7 +23,7 @@ class WechatRichmediaTemplatePreview extends React.PureComponent { // eslint-dis
|
|
|
24
23
|
const contentData = content[0];
|
|
25
24
|
previewMsg.push(
|
|
26
25
|
<div className="richmedia-image-container">
|
|
27
|
-
<
|
|
26
|
+
<img alt="default" width="100%" height="102px" src={contentData.image_url} />
|
|
28
27
|
{mediaListLength !== 1 && (
|
|
29
28
|
<div className="name-container">
|
|
30
29
|
<CapHeading type="h4" style={{color: "white"}}>{contentData.title}</CapHeading>
|
|
@@ -44,7 +43,7 @@ class WechatRichmediaTemplatePreview extends React.PureComponent { // eslint-dis
|
|
|
44
43
|
previewMsg.push(
|
|
45
44
|
<div className="additional-richmedia-container">
|
|
46
45
|
<div><CapLabel type="label9" style={{width: '170px', top: '12px', position: 'relative'}}>{data.title}</CapLabel></div>
|
|
47
|
-
<
|
|
46
|
+
<img alt="default" width="34px" height="34px" src={data.image_url} />
|
|
48
47
|
</div>
|
|
49
48
|
);
|
|
50
49
|
});
|
|
@@ -62,7 +61,7 @@ class WechatRichmediaTemplatePreview extends React.PureComponent { // eslint-dis
|
|
|
62
61
|
returnObj.push(
|
|
63
62
|
<div style={{ width: "100%", height: 116, position: "relative" }}>
|
|
64
63
|
<CapRow>
|
|
65
|
-
<
|
|
64
|
+
<img alt="default" width="100%" height="110px" src={contentData.image_url} />
|
|
66
65
|
<div className="preview-overflow-wrap-fields" style={{ position: "absolute", bottom: "5%", left: "10%", width: "auto" }}>{contentData.title ? contentData.title : ""}</div>
|
|
67
66
|
</CapRow>
|
|
68
67
|
{Object.keys(mediaList).length === 1 ?
|
|
@@ -81,7 +80,7 @@ class WechatRichmediaTemplatePreview extends React.PureComponent { // eslint-dis
|
|
|
81
80
|
{contentData.title}
|
|
82
81
|
</CapColumn>
|
|
83
82
|
<CapColumn style={{ float: "right" }}>
|
|
84
|
-
<
|
|
83
|
+
<img alt="default" width="60px" height="60px" src={contentData.image_url}/>
|
|
85
84
|
</CapColumn>
|
|
86
85
|
</CapRow>
|
|
87
86
|
);
|
|
@@ -92,102 +91,21 @@ class WechatRichmediaTemplatePreview extends React.PureComponent { // eslint-dis
|
|
|
92
91
|
goToEdit(e, path) {
|
|
93
92
|
this.props.onEditClick(e, this.props.templateId, this.props.modeType, path);
|
|
94
93
|
}
|
|
95
|
-
getWechatRichMediaAndroidPreview = (content) => (
|
|
96
|
-
<div className="preview-container">
|
|
97
|
-
<div className="shell-lock-screen-android align-center">
|
|
98
|
-
<div className="lock-screen-preview">
|
|
99
|
-
<CapImage className="preview-image" src={wechatLockScreenAndroid} alt="Preview is being generated"/>
|
|
100
|
-
<div className="wechat-android-sender-id">
|
|
101
|
-
Muji India
|
|
102
|
-
</div>
|
|
103
|
-
<div className="wechat-android-title">
|
|
104
|
-
{content[0].title}
|
|
105
|
-
</div>
|
|
106
|
-
<div className="wechat-android-action-buttons">
|
|
107
|
-
<FormattedMessage {...messages.MarkAsRead} /> <FormattedMessage {...messages.reply} />
|
|
108
|
-
</div>
|
|
109
|
-
</div>
|
|
110
|
-
<div className="main-screen-preview">
|
|
111
|
-
<CapImage className="preview-image" src={wechatBody} alt="Preview is being generated"/>
|
|
112
|
-
<div className={this.props.type === 'embedded' ? "wechatMsgContainerOutbound" : "wechatMsgContainer"}>
|
|
113
|
-
<div className={this.props.type === 'embedded' ? "overflow-handle-preview-outbound" : "overflow-handle-preview"}>
|
|
114
|
-
{this.preparePreviewData(content)}
|
|
115
|
-
</div>
|
|
116
|
-
</div>
|
|
117
|
-
</div>
|
|
118
|
-
</div>
|
|
119
|
-
</div>
|
|
120
|
-
);
|
|
121
|
-
|
|
122
|
-
getWechatRIchMediaIosPreview = (content) => (
|
|
123
|
-
<div className="preview-container">
|
|
124
|
-
<div className="shell-lock-screen-android align-center">
|
|
125
|
-
<div className="lock-screen-preview">
|
|
126
|
-
<CapImage className="preview-image" src={wechatLockScreenIos} alt="Preview is being generated"/>
|
|
127
|
-
<div className="wechat-ios-sender-id">
|
|
128
|
-
Muji India
|
|
129
|
-
</div>
|
|
130
|
-
<div className="wechat-ios-title">
|
|
131
|
-
{content[0].title}
|
|
132
|
-
</div>
|
|
133
|
-
<div className="wechat-ios-action-reply">
|
|
134
|
-
<FormattedMessage {...messages.reply} />
|
|
135
|
-
</div>
|
|
136
|
-
<div className="wechat-ios-action-cancel">
|
|
137
|
-
<FormattedMessage {...messages.cancel} />
|
|
138
|
-
</div>
|
|
139
|
-
</div>
|
|
140
|
-
<div className="main-screen-preview">
|
|
141
|
-
<CapImage className="preview-image" src={wechatBody} alt="Preview is being generated"/>
|
|
142
|
-
<div className={this.props.type === 'embedded' ? "wechatMsgContainerOutbound" : "wechatMsgContainer"}>
|
|
143
|
-
<div className={this.props.type === 'embedded' ? "overflow-handle-preview-outbound" : "overflow-handle-preview"}>
|
|
144
|
-
{this.preparePreviewData(content)}
|
|
145
|
-
</div>
|
|
146
|
-
</div>
|
|
147
|
-
</div>
|
|
148
|
-
</div>
|
|
149
|
-
</div>
|
|
150
|
-
);
|
|
151
|
-
|
|
152
|
-
getContentForSlidebox = (content) => {
|
|
153
|
-
return (
|
|
154
|
-
!this.props.showLockScreenPreview ? (
|
|
155
|
-
<div className={`preview-container ${this.props.type === 'embedded' ? 'embedded-preview' : ''}`}>
|
|
156
|
-
<div className="shell align-center" id="sms-preview">
|
|
157
|
-
<CapImage className="preview-image" src={wechatBody} alt="Preview is being generated"/>
|
|
158
|
-
<div className={this.props.type === 'embedded' ? "wechatMsgContainerOutbound" : "wechatMsgContainer"}>
|
|
159
|
-
<div className={this.props.type === 'embedded' ? "overflow-handle-preview-outbound" : "overflow-handle-preview"}>
|
|
160
|
-
{this.preparePreviewData(this.props.content)}
|
|
161
|
-
</div>
|
|
162
|
-
</div>
|
|
163
|
-
</div>
|
|
164
|
-
{this.props.showEdit ? <CapButton onClick={(e) => this.goToEdit(e, this.props.path)} className="preview-buttons" type="primary">{this.props.type === 'embedded' ? <FormattedMessage {...messages.select} /> : <FormattedMessage {...messages.edit} /> }</CapButton> : ""}
|
|
165
|
-
</div>
|
|
166
|
-
) : (
|
|
167
|
-
<CapTab
|
|
168
|
-
panes={[
|
|
169
|
-
{
|
|
170
|
-
content: this.getWechatRichMediaAndroidPreview(this.props.content),
|
|
171
|
-
tab: <CapIcon type="android" size='m' />,
|
|
172
|
-
key: 'android',
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
content: this.getWechatRIchMediaIosPreview(this.props.content),
|
|
176
|
-
tab: <CapIcon type="ios" size='m' />,
|
|
177
|
-
key: 'ios',
|
|
178
|
-
},
|
|
179
|
-
]}
|
|
180
|
-
tabBarStyle={{margin: 'auto', width: '14%'}}
|
|
181
|
-
/>
|
|
182
|
-
)
|
|
183
|
-
);
|
|
184
|
-
};
|
|
185
|
-
|
|
186
94
|
render() {
|
|
187
95
|
return (
|
|
188
96
|
<div>
|
|
189
97
|
{this.props.contentForSlideBox ?
|
|
190
|
-
this.
|
|
98
|
+
<div className={`preview-container ${this.props.type === 'embedded' ? 'embedded-preview' : ''}`}>
|
|
99
|
+
<div className="shell align-center" id="sms-preview">
|
|
100
|
+
<img className="preview-image" src={wechatBody} alt="Preview is being generated"/>
|
|
101
|
+
<div className={this.props.type === 'embedded' ? "wechatMsgContainerOutbound" : "wechatMsgContainer"}>
|
|
102
|
+
<div className={this.props.type === 'embedded' ? "overflow-handle-preview-outbound" : "overflow-handle-preview"}>
|
|
103
|
+
{this.preparePreviewData(this.props.content)}
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
{this.props.showEdit ? <CapButton onClick={(e) => this.goToEdit(e, this.props.path)} className="preview-buttons" type="primary">{this.props.type === 'embedded' ? <FormattedMessage {...messages.select} /> : <FormattedMessage {...messages.edit} /> }</CapButton> : ""}
|
|
108
|
+
</div>
|
|
191
109
|
:
|
|
192
110
|
<div className={`preview-container ${this.props.type === 'embedded' ? 'embedded-preview' : ''}`}>
|
|
193
111
|
<div className="shell align-center" id="sms-preview">
|
|
@@ -18,16 +18,4 @@ export default defineMessages({
|
|
|
18
18
|
id: 'creatives.components.WechatRichmediaTemplatePreview.edit',
|
|
19
19
|
defaultMessage: 'Edit',
|
|
20
20
|
},
|
|
21
|
-
MarkAsRead: {
|
|
22
|
-
id: 'creatives.components.WechatRichmediaTemplatePreview.MarkAsRead',
|
|
23
|
-
defaultMessage: 'Mark as read',
|
|
24
|
-
},
|
|
25
|
-
reply: {
|
|
26
|
-
id: 'creatives.components.WechatRichmediaTemplatePreview.reply',
|
|
27
|
-
defaultMessage: 'Reply',
|
|
28
|
-
},
|
|
29
|
-
cancel: {
|
|
30
|
-
id: 'creatives.components.WechatRichmediaTemplatePreview.cancel',
|
|
31
|
-
defaultMessage: 'Cancel',
|
|
32
|
-
},
|
|
33
21
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.shell
|
|
1
|
+
.shell {
|
|
2
2
|
position: relative;
|
|
3
3
|
-webkit-transform: translate(-50%);
|
|
4
4
|
transform: translate(-50%);
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
|
|
16
16
|
.msgContainer {
|
|
17
17
|
position: absolute;
|
|
18
|
-
top:
|
|
19
|
-
left:
|
|
18
|
+
top: 18%;
|
|
19
|
+
left: 28.8%;
|
|
20
20
|
width: 42%;
|
|
21
21
|
height: 336px;
|
|
22
22
|
display: -webkit-box;
|
|
@@ -37,9 +37,6 @@
|
|
|
37
37
|
left: 14px;
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
&.wechat{
|
|
41
|
-
width: 52%;
|
|
42
|
-
}
|
|
43
40
|
|
|
44
41
|
.message-pop{
|
|
45
42
|
.unicode-disabled{
|
|
@@ -57,7 +54,7 @@
|
|
|
57
54
|
line-height: 14px;
|
|
58
55
|
padding: 0 8px 8px 8px;
|
|
59
56
|
font-size: 10px;
|
|
60
|
-
width:
|
|
57
|
+
width: 80%;
|
|
61
58
|
font-family: 'open-sans';
|
|
62
59
|
.message-pop-item{
|
|
63
60
|
padding: 4px;
|
|
@@ -362,9 +359,3 @@
|
|
|
362
359
|
font-size: 12px;
|
|
363
360
|
}
|
|
364
361
|
}
|
|
365
|
-
|
|
366
|
-
.test-and-preview-container{
|
|
367
|
-
display: flex;
|
|
368
|
-
margin-top: -12px;
|
|
369
|
-
margin-bottom: 12px;
|
|
370
|
-
}
|
|
Binary file
|
|
@@ -10,114 +10,17 @@ 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
|
|
13
|
+
import {CapColumn, CapRow, CapHeading} 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
|
+
const smsIcon = require('./assets/images/user-icon.svg');
|
|
18
|
+
const wechatBody = require('./assets/images/WECHAT_5x.png');
|
|
19
|
+
const smsBody = require('./assets/images/mobile.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
|
-
|
|
121
24
|
render() {
|
|
122
25
|
let content = channel && channel.toLowerCase() === 'sms' ? [this.props.content] : this.props.content;
|
|
123
26
|
const channel = this.props.channel;
|
|
@@ -161,43 +64,16 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
|
|
|
161
64
|
</CapHeading>}
|
|
162
65
|
</CapColumn>}
|
|
163
66
|
<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
|
-
)}
|
|
192
67
|
<div className={`preview-container ${type === 'embedded' ? 'embedded-preview' : ''}`}>
|
|
193
68
|
{ channel && channel.toLowerCase() === 'sms' &&
|
|
194
69
|
<div>
|
|
195
|
-
<div className="shell
|
|
196
|
-
<
|
|
70
|
+
<div className="shell align-center" id="sms-preview">
|
|
71
|
+
<img className="preview-image sms" src={smsBody} alt="Preview is being generated"/>
|
|
197
72
|
<div className="msgContainer sms">
|
|
73
|
+
<img className="sms-icon" src={smsIcon} alt="Sms icon" />
|
|
198
74
|
<div className={"message-pop sms"}>
|
|
199
75
|
{content && content.length && content.map((msg, index) =>
|
|
200
|
-
<CapColumn key={`"message-pop-content-${index}`} className="message-pop-item align-left" style={{ background: '#
|
|
76
|
+
<CapColumn key={`"message-pop-content-${index}`} className="message-pop-item align-left" style={{ background: '#3F51B5', color: '#ffffff'}}>
|
|
201
77
|
{msg}
|
|
202
78
|
</CapColumn>)
|
|
203
79
|
}
|
|
@@ -220,9 +96,10 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
|
|
|
220
96
|
</div>
|
|
221
97
|
}
|
|
222
98
|
{channel && channel.toLowerCase() === 'wechat' ?
|
|
223
|
-
( <div className="shell
|
|
224
|
-
<
|
|
225
|
-
<div className="msgContainer
|
|
99
|
+
( <div className="shell align-center" id="sms-preview">
|
|
100
|
+
<img className="preview-image" src={channel.toLowerCase() === 'wechat' ? wechatBody : smsBody} alt="Preview is being generated"/>
|
|
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)} />}
|
|
226
103
|
<div className="message-pop align-left" style={{ background: `${this.props.channel.toLowerCase() === 'wechat' ? '#ffffff' : '#3F51B5'}`, color: `${this.props.channel.toLowerCase() === 'wechat' ? '#333333' : '#ffffff'}`}}>{content}
|
|
227
104
|
</div>
|
|
228
105
|
</div>
|
|
@@ -230,10 +107,10 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
|
|
|
230
107
|
) : ''
|
|
231
108
|
}
|
|
232
109
|
{ channel && (channel.toLowerCase() === 'mobilepush') &&
|
|
233
|
-
(<div className="shell
|
|
234
|
-
<
|
|
110
|
+
(<div className="shell align-center" id="mobilepush-preview">
|
|
111
|
+
<img className="preview-image" src={this.props.device === "android" ? androidPushMessagePhone : iPhonePushMessagePhone} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
|
|
235
112
|
{(!!content.header || !!content.bodyText || !!content.bodyImage) &&
|
|
236
|
-
<div className={`${this.props.device
|
|
113
|
+
<div className={`${this.props.device}-push-message-Container`}>
|
|
237
114
|
{this.props.device === "android" ?
|
|
238
115
|
<div className="message-pop align-left">
|
|
239
116
|
<div className="app-name">
|
|
@@ -246,7 +123,7 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
|
|
|
246
123
|
{content.bodyText}
|
|
247
124
|
</div>
|
|
248
125
|
{content.bodyImage && <div className="body-image">
|
|
249
|
-
<
|
|
126
|
+
<img src={content.bodyImage} alt="" />
|
|
250
127
|
</div>}
|
|
251
128
|
{content.actions.filter((action) => action.label).length ?
|
|
252
129
|
<div className="actions">
|
|
@@ -261,7 +138,7 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
|
|
|
261
138
|
<span className="app-icon"></span>{content.appName ? content.appName : "App name"} <i className="material-icons">{this.props.intl.formatMessage(messages.close)}</i>
|
|
262
139
|
</div>
|
|
263
140
|
{content.bodyImage && <div className="body-image">
|
|
264
|
-
<
|
|
141
|
+
<img src={content.bodyImage} alt=""/>
|
|
265
142
|
</div>}
|
|
266
143
|
<div className="title">
|
|
267
144
|
{content.header}
|
|
@@ -279,12 +156,12 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
|
|
|
279
156
|
}
|
|
280
157
|
{
|
|
281
158
|
channel && channel.toLowerCase() === 'line' ? (
|
|
282
|
-
<div className="shell
|
|
283
|
-
<
|
|
159
|
+
<div className="shell align-center" id="sms-preview">
|
|
160
|
+
<img className="preview-image" src={wechatBody} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
|
|
284
161
|
<div className="msgContainer">
|
|
285
162
|
<div className="sms-icon" style={{ width: '25px', height: '25px', background: '#2E89DF' }}></div>
|
|
286
163
|
<div className="message-pop align-left" style={{ background: '#ffffff', color: '#333333' }}>
|
|
287
|
-
{ (content && content.bodyImage) ? <
|
|
164
|
+
{ (content && content.bodyImage) ? <img src={content.bodyImage} alt="ddd" style={{maxWidth: '100%'}}/> : '' }
|
|
288
165
|
{ (content && content.bodyText) ? content.bodyText : ''}
|
|
289
166
|
</div>
|
|
290
167
|
</div>
|
|
@@ -312,10 +189,6 @@ TemplatePreview.propTypes = {
|
|
|
312
189
|
unicodeEnabled: PropTypes.bool,
|
|
313
190
|
showCount: PropTypes.bool,
|
|
314
191
|
intl: intlShape.isRequired,
|
|
315
|
-
templateDataRaw: PropTypes.object,
|
|
316
|
-
onPreviewContentClicked: PropTypes.func,
|
|
317
|
-
onTestContentClicked: PropTypes.func,
|
|
318
|
-
showTestAndPreviewIcon: PropTypes.bool,
|
|
319
192
|
};
|
|
320
193
|
|
|
321
194
|
export default (injectIntl(TemplatePreview));
|
|
@@ -50,12 +50,4 @@ 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
|
-
},
|
|
61
53
|
});
|
|
@@ -63,6 +63,7 @@ export class CallTask extends React.Component { // eslint-disable-line react/pre
|
|
|
63
63
|
const templateIntlText = formatMessage(messages.template);
|
|
64
64
|
const templateText = isFullMode ? templateIntlText : '';
|
|
65
65
|
return {
|
|
66
|
+
buttonClassName: 'new-call-task-button',
|
|
66
67
|
buttonLabel: formatMessage(messages.newCallTaskTemplate, { templateText }),
|
|
67
68
|
onClick: showContentInSlidebox ? this.showNewCallTask : onCreateNew,
|
|
68
69
|
illustrationImage: calltaskIllustration,
|
|
@@ -69,8 +69,6 @@ function SlideBoxContent(props) {
|
|
|
69
69
|
selectedWeChatAccount,
|
|
70
70
|
weChatMaptemplateStep,
|
|
71
71
|
onWeChatMaptemplateStepChange,
|
|
72
|
-
onTestContentClicked,
|
|
73
|
-
onPreviewContentClicked,
|
|
74
72
|
onFacebookSubmit,
|
|
75
73
|
} = props;
|
|
76
74
|
const type = messageDetails.type.toLowerCase(); // type is context in get tags values : outbound | dvs | referral | loyalty | coupons
|
|
@@ -106,6 +104,7 @@ function SlideBoxContent(props) {
|
|
|
106
104
|
isEmailPreview = slidBoxContent === 'preview' && channel === constants.EMAIL;
|
|
107
105
|
isMpushPreview = slidBoxContent === 'preview' && channel === constants.MOBILE_PUSH;
|
|
108
106
|
}
|
|
107
|
+
|
|
109
108
|
return (
|
|
110
109
|
<CreativesWrapper>
|
|
111
110
|
{!isFullMode && slidBoxContent === 'templates' && (
|
|
@@ -186,8 +185,6 @@ function SlideBoxContent(props) {
|
|
|
186
185
|
templateData={templateData}
|
|
187
186
|
forwardedTags={forwardedTags}
|
|
188
187
|
selectedOfferDetails={selectedOfferDetails}
|
|
189
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
190
|
-
onTestContentClicked={onTestContentClicked}
|
|
191
188
|
/>
|
|
192
189
|
)}
|
|
193
190
|
{
|
|
@@ -221,8 +218,6 @@ function SlideBoxContent(props) {
|
|
|
221
218
|
isFullMode={isFullMode}
|
|
222
219
|
forwardedTags={forwardedTags}
|
|
223
220
|
selectedOfferDetails={selectedOfferDetails}
|
|
224
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
225
|
-
onTestContentClicked={onTestContentClicked}
|
|
226
221
|
/>
|
|
227
222
|
)}
|
|
228
223
|
{isEmailCreate && (
|
|
@@ -245,8 +240,6 @@ function SlideBoxContent(props) {
|
|
|
245
240
|
onValidationFail={onValidationFail}
|
|
246
241
|
forwardedTags={forwardedTags}
|
|
247
242
|
selectedOfferDetails={selectedOfferDetails}
|
|
248
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
249
|
-
onTestContentClicked={onTestContentClicked}
|
|
250
243
|
/>
|
|
251
244
|
)}
|
|
252
245
|
{(isEditEmailWithId || isEmailEditWithContent) && (
|
|
@@ -270,8 +263,6 @@ function SlideBoxContent(props) {
|
|
|
270
263
|
onValidationFail={onValidationFail}
|
|
271
264
|
forwardedTags={forwardedTags}
|
|
272
265
|
selectedOfferDetails={selectedOfferDetails}
|
|
273
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
274
|
-
onTestContentClicked={onTestContentClicked}
|
|
275
266
|
/>
|
|
276
267
|
)}
|
|
277
268
|
{isEditMPush &&
|
|
@@ -292,8 +283,6 @@ function SlideBoxContent(props) {
|
|
|
292
283
|
onValidationFail={onValidationFail}
|
|
293
284
|
forwardedTags={forwardedTags}
|
|
294
285
|
selectedOfferDetails={selectedOfferDetails}
|
|
295
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
296
|
-
onTestContentClicked={onTestContentClicked}
|
|
297
286
|
/>
|
|
298
287
|
}
|
|
299
288
|
{isCreateMPush &&
|
|
@@ -318,9 +307,7 @@ function SlideBoxContent(props) {
|
|
|
318
307
|
query={query}
|
|
319
308
|
forwardedTags={forwardedTags}
|
|
320
309
|
onValidationFail={onValidationFail}
|
|
321
|
-
selectedOfferDetails={selectedOfferDetails}
|
|
322
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
323
|
-
onTestContentClicked={onTestContentClicked}/>
|
|
310
|
+
selectedOfferDetails={selectedOfferDetails}/>
|
|
324
311
|
}
|
|
325
312
|
{
|
|
326
313
|
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} />}
|
|
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,
|
|
476
|
+
const {isFullMode, creativesMode, cap, isUploading, channelsToHide, selectedWeChatAccount, forwardedTags, channelsToDisable, selectedOfferDetails, 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,8 +538,6 @@ class Creatives extends React.Component {
|
|
|
538
538
|
weChatMaptemplateStep={weChatMaptemplateStep}
|
|
539
539
|
selectedWeChatAccount={selectedWeChatAccount}
|
|
540
540
|
onWeChatMaptemplateStepChange={this.onWeChatMaptemplateStepChange}
|
|
541
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
542
|
-
onTestContentClicked={onTestContentClicked}
|
|
543
541
|
onFacebookSubmit={getCreativesData}
|
|
544
542
|
/>
|
|
545
543
|
}
|
|
@@ -256,11 +256,11 @@ export default defineMessages({
|
|
|
256
256
|
},
|
|
257
257
|
"editMessageContent": {
|
|
258
258
|
id: `${scope}.editMessageContent`,
|
|
259
|
-
defaultMessage: `Edit
|
|
259
|
+
defaultMessage: `Edit message content`,
|
|
260
260
|
},
|
|
261
261
|
"createMessageContent": {
|
|
262
262
|
id: `${scope}.createMessageContent`,
|
|
263
|
-
defaultMessage: `New {channel}`,
|
|
263
|
+
defaultMessage: `New {channel} message`,
|
|
264
264
|
},
|
|
265
265
|
"creativeTemplatesDesc": {
|
|
266
266
|
id: `${scope}.creativeTemplatesDesc`,
|