@capillarytech/creatives-library 3.8.11 → 3.9.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/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +8 -7
- package/components/TemplatePreview/_templatePreview.scss +20 -279
- package/components/TemplatePreview/index.js +20 -180
- package/components/TemplatePreview/messages.js +0 -16
- package/index.js +6 -0
- package/package.json +1 -1
- package/v2Components/FormBuilder/index.js +17 -25
- 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/index.js +20 -147
- package/v2Components/TemplatePreview/messages.js +0 -8
- package/v2Containers/Assets/Gallery/index.js +1 -0
- package/v2Containers/CreativesContainer/SlideBoxContent.js +17 -17
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -1
- package/v2Containers/CreativesContainer/index.js +51 -4
- 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 +5 -7
- package/v2Containers/Line/Create/actions.js +2 -1
- package/v2Containers/Line/Create/index.js +137 -61
- package/v2Containers/Line/Create/sagas.js +2 -2
- package/v2Containers/Line/Create/selectors.js +2 -7
- package/v2Containers/Line/CreateWrapper/index.js +5 -2
- package/v2Containers/Line/CreateWrapper/messages.js +12 -0
- 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
- package/v2Containers/Templates/_templates.scss +20 -16
- package/v2Containers/Templates/actions.js +7 -0
- package/v2Containers/Templates/constants.js +2 -0
- package/v2Containers/Templates/index.js +58 -9
- package/v2Containers/Templates/messages.js +8 -0
- package/v2Containers/Templates/reducer.js +2 -0
- package/components/TemplatePreview/assets/images/home-screen-android.svg +0 -21
- package/components/TemplatePreview/assets/images/home-screen-ios.svg +0 -16
- package/components/TemplatePreview/assets/images/sms_mobile_android.svg +0 -22
- package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +0 -16
- package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +0 -20
- package/package-lock.json +0 -3096
- package/v2Components/TemplatePreview/assets/images/home-screen-android.svg +0 -21
- package/v2Components/TemplatePreview/assets/images/home-screen-ios.svg +0 -16
- package/v2Components/TemplatePreview/assets/images/sms_mobile_android.svg +0 -22
- package/v2Components/TemplatePreview/assets/images/wechat-home-screen-android.svg +0 -21
- package/v2Components/TemplatePreview/assets/images/wechat_mobile_android.svg +0 -20
|
@@ -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
|
-
}
|
|
@@ -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,8 +156,8 @@ 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 sms" src={wechatBody} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
|
|
284
161
|
<div className="msgContainer">
|
|
285
162
|
<div className="sms-icon" style={{ left: 10, borderRadius: '50%', width: '20px', height: '20px', background: '#2E89DF' }}></div>
|
|
286
163
|
<div className="message-pop align-left" style={{ background: '#ffffff', color: '#333333' }}>
|
|
@@ -290,7 +167,7 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
|
|
|
290
167
|
return content[item];
|
|
291
168
|
}
|
|
292
169
|
if (item === 'bodyImage' && content[item]) {
|
|
293
|
-
return <
|
|
170
|
+
return <img src={content[item]} alt="brand-name" style={{maxWidth: '100%'}}/>;
|
|
294
171
|
}
|
|
295
172
|
return null;
|
|
296
173
|
})
|
|
@@ -321,10 +198,6 @@ TemplatePreview.propTypes = {
|
|
|
321
198
|
unicodeEnabled: PropTypes.bool,
|
|
322
199
|
showCount: PropTypes.bool,
|
|
323
200
|
intl: intlShape.isRequired,
|
|
324
|
-
templateDataRaw: PropTypes.object,
|
|
325
|
-
onPreviewContentClicked: PropTypes.func,
|
|
326
|
-
onTestContentClicked: PropTypes.func,
|
|
327
|
-
showTestAndPreviewIcon: PropTypes.bool,
|
|
328
201
|
};
|
|
329
202
|
|
|
330
203
|
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
|
});
|
|
@@ -245,6 +245,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
|
|
|
245
245
|
const fileParams = {
|
|
246
246
|
width: this.width,
|
|
247
247
|
height: this.height,
|
|
248
|
+
isGeneratePreview: true,
|
|
248
249
|
};
|
|
249
250
|
that.props.actions.uploadAsset(files[file], 'image', fileParams);
|
|
250
251
|
};
|
|
@@ -72,9 +72,9 @@ function SlideBoxContent(props) {
|
|
|
72
72
|
selectedWeChatAccount,
|
|
73
73
|
weChatMaptemplateStep,
|
|
74
74
|
onWeChatMaptemplateStepChange,
|
|
75
|
-
onTestContentClicked,
|
|
76
|
-
onPreviewContentClicked,
|
|
77
75
|
onFacebookSubmit,
|
|
76
|
+
saveMessage,
|
|
77
|
+
selectedAccount,
|
|
78
78
|
} = props;
|
|
79
79
|
const type = messageDetails.type.toLowerCase(); // type is context in get tags values : outbound | dvs | referral | loyalty | coupons
|
|
80
80
|
const query = { type: !isFullMode && 'embedded', module: isFullMode ? 'default' : 'library', isEditFromCampaigns: (templateData || {}).isEditFromCampaigns};
|
|
@@ -218,8 +218,6 @@ function SlideBoxContent(props) {
|
|
|
218
218
|
templateData={templateData}
|
|
219
219
|
forwardedTags={forwardedTags}
|
|
220
220
|
selectedOfferDetails={selectedOfferDetails}
|
|
221
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
222
|
-
onTestContentClicked={onTestContentClicked}
|
|
223
221
|
/>
|
|
224
222
|
)}
|
|
225
223
|
{
|
|
@@ -253,8 +251,6 @@ function SlideBoxContent(props) {
|
|
|
253
251
|
isFullMode={isFullMode}
|
|
254
252
|
forwardedTags={forwardedTags}
|
|
255
253
|
selectedOfferDetails={selectedOfferDetails}
|
|
256
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
257
|
-
onTestContentClicked={onTestContentClicked}
|
|
258
254
|
/>
|
|
259
255
|
)}
|
|
260
256
|
{isEmailCreate && (
|
|
@@ -277,8 +273,6 @@ function SlideBoxContent(props) {
|
|
|
277
273
|
onValidationFail={onValidationFail}
|
|
278
274
|
forwardedTags={forwardedTags}
|
|
279
275
|
selectedOfferDetails={selectedOfferDetails}
|
|
280
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
281
|
-
onTestContentClicked={onTestContentClicked}
|
|
282
276
|
/>
|
|
283
277
|
)}
|
|
284
278
|
{(isEditEmailWithId || isEmailEditWithContent) && (
|
|
@@ -302,8 +296,6 @@ function SlideBoxContent(props) {
|
|
|
302
296
|
onValidationFail={onValidationFail}
|
|
303
297
|
forwardedTags={forwardedTags}
|
|
304
298
|
selectedOfferDetails={selectedOfferDetails}
|
|
305
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
306
|
-
onTestContentClicked={onTestContentClicked}
|
|
307
299
|
/>
|
|
308
300
|
)}
|
|
309
301
|
{isEditMPush &&
|
|
@@ -324,8 +316,6 @@ function SlideBoxContent(props) {
|
|
|
324
316
|
onValidationFail={onValidationFail}
|
|
325
317
|
forwardedTags={forwardedTags}
|
|
326
318
|
selectedOfferDetails={selectedOfferDetails}
|
|
327
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
328
|
-
onTestContentClicked={onTestContentClicked}
|
|
329
319
|
/>
|
|
330
320
|
}
|
|
331
321
|
{isCreateMPush &&
|
|
@@ -350,9 +340,7 @@ function SlideBoxContent(props) {
|
|
|
350
340
|
query={query}
|
|
351
341
|
forwardedTags={forwardedTags}
|
|
352
342
|
onValidationFail={onValidationFail}
|
|
353
|
-
selectedOfferDetails={selectedOfferDetails}
|
|
354
|
-
onPreviewContentClicked={onPreviewContentClicked}
|
|
355
|
-
onTestContentClicked={onTestContentClicked}/>
|
|
343
|
+
selectedOfferDetails={selectedOfferDetails}/>
|
|
356
344
|
}
|
|
357
345
|
{
|
|
358
346
|
isEditFacebook && (
|
|
@@ -374,7 +362,12 @@ function SlideBoxContent(props) {
|
|
|
374
362
|
}}
|
|
375
363
|
route={{ name: (templateData.modeType || (templateData.definition && templateData.definition.mode)) === 'image' ? 'edit_image' : 'edit_text' }}
|
|
376
364
|
onCreateComplete={onCreateComplete}
|
|
377
|
-
isFullMode={
|
|
365
|
+
isFullMode={isFullMode}
|
|
366
|
+
saveMessage={saveMessage}
|
|
367
|
+
getFormSubscriptionData={getFormData}
|
|
368
|
+
isGetFormData={isGetFormData}
|
|
369
|
+
templateData={templateData}
|
|
370
|
+
selectedAccount={selectedAccount}
|
|
378
371
|
/>
|
|
379
372
|
)
|
|
380
373
|
}
|
|
@@ -383,7 +376,12 @@ function SlideBoxContent(props) {
|
|
|
383
376
|
<CreateLineWrapper
|
|
384
377
|
location={creativesLocationProps}
|
|
385
378
|
onCreateComplete={onCreateComplete}
|
|
386
|
-
isFullMode={
|
|
379
|
+
isFullMode={isFullMode}
|
|
380
|
+
isGetFormData={isGetFormData}
|
|
381
|
+
saveMessage={saveMessage}
|
|
382
|
+
selectedAccount={selectedAccount}
|
|
383
|
+
templateData={templateData}
|
|
384
|
+
getFormSubscriptionData={getFormData}
|
|
387
385
|
/>
|
|
388
386
|
)
|
|
389
387
|
}
|
|
@@ -428,5 +426,7 @@ SlideBoxContent.propTypes = {
|
|
|
428
426
|
weChatMaptemplateStep: PropTypes.string,
|
|
429
427
|
onFacebookSubmit: PropTypes.func,
|
|
430
428
|
onCreateComplete: PropTypes.func,
|
|
429
|
+
saveMessage: PropTypes.func,
|
|
430
|
+
selectedAccount: PropTypes.object,
|
|
431
431
|
};
|
|
432
432
|
export default SlideBoxContent;
|
|
@@ -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} />
|