@capillarytech/creatives-library 3.8.10 → 3.8.11
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 -8
- 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/package-lock.json +3096 -0
- package/package.json +1 -1
- package/v2Components/FormBuilder/index.js +17 -7
- 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/CreativesContainer/SlideBoxContent.js +15 -1
- 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
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="221" height="473" viewBox="0 0 221 473">
|
|
2
|
+
<g fill="none" fill-rule="evenodd">
|
|
3
|
+
<rect width="220" height="473" fill="#101211" rx="26"/>
|
|
4
|
+
<rect width="52" height="5.011" x="84" y="14.03" fill="#2E2E2E" rx="2.5"/>
|
|
5
|
+
<rect width="52" height="5.011" x="84" y="455.964" fill="#2E2E2E" rx="2.5"/>
|
|
6
|
+
<ellipse cx="45.5" cy="19.541" fill="#2E2E2E" rx="5.5" ry="5.512"/>
|
|
7
|
+
<ellipse cx="65.5" cy="19.541" fill="#2E2E2E" rx="3.5" ry="3.507"/>
|
|
8
|
+
<rect width="202" height="404.856" x="9" y="36.076" fill="#E51FA3" rx="9"/>
|
|
9
|
+
<path fill="#FFF" d="M20.692 152.322h178.616c2.675 0 3.645.279 4.623.801.977.523 1.745 1.29 2.268 2.268.523.978.801 1.948.801 4.623v78.816c0 2.674-.278 3.644-.801 4.622-.523.978-1.29 1.745-2.268 2.268-.978.523-1.948.801-4.623.801H20.692c-2.675 0-3.645-.278-4.623-.801-.977-.523-1.745-1.29-2.268-2.268-.523-.978-.801-1.948-.801-4.622v-78.816c0-2.675.278-3.645.801-4.623.523-.977 1.29-1.745 2.268-2.268.978-.522 1.948-.801 4.623-.801z"/>
|
|
10
|
+
<text fill="#5E5E5E" font-family="Roboto-Regular, Roboto" font-size="10">
|
|
11
|
+
<tspan x="25" y="169.351">Wechat</tspan>
|
|
12
|
+
</text>
|
|
13
|
+
<text fill="#5E5E5E" font-family="Roboto-Regular, Roboto" font-size="10">
|
|
14
|
+
<tspan x="73.146" y="169.351">now</tspan>
|
|
15
|
+
</text>
|
|
16
|
+
<circle cx="66" cy="167.354" r="1" fill="#5E5E5E" fill-rule="nonzero"/>
|
|
17
|
+
<path fill="#5E5E5E" d="M104.725 163.393L101.424 166.694 98.123 163.393 97.109 164.409 101.424 168.734 105.739 164.409z"/>
|
|
18
|
+
<path fill="#FFF" fill-opacity=".6" d="M113.75 420.222h-.625v-1.241c0-1.712-1.4-3.102-3.125-3.102s-3.125 1.39-3.125 3.102v1.24h-.625c-.688 0-1.25.56-1.25 1.241v6.204c0 .682.563 1.24 1.25 1.24h7.5c.688 0 1.25-.558 1.25-1.24v-6.204c0-.682-.563-1.24-1.25-1.24zM110 425.9c-.55 0-1-.45-1-1.002 0-.55.45-1.002 1-1.002s1 .451 1 1.002c0 .551-.45 1.002-1 1.002zm2-6.012h-4v-1.18c0-1.007.897-1.827 2-1.827s2 .82 2 1.828v1.179z"/>
|
|
19
|
+
<path fill="#FFF" fill-rule="nonzero" d="M86.325 112.121l6.192-8.694-.072-.072c-.84.577-1.908.865-3.204.865-1.248 0-2.472-.348-3.672-1.046-1.2-.697-2.172-1.653-2.916-2.868-.744-1.215-1.116-2.567-1.116-4.059 0-1.443.378-2.795 1.134-4.058.756-1.263 1.776-2.279 3.06-3.049s2.682-1.154 4.194-1.154c1.632 0 3.09.397 4.374 1.19 1.284.794 2.28 1.822 2.988 3.085.708 1.263 1.062 2.592 1.062 3.986 0 1.323-.27 2.592-.81 3.807-.54 1.214-1.314 2.567-2.322 4.058l-6.444 9.705-2.448-1.696zm3.6-10.642c.96 0 1.854-.235 2.682-.704.828-.469 1.482-1.106 1.962-1.912.48-.806.72-1.69.72-2.652 0-.986-.24-1.882-.72-2.687-.48-.806-1.134-1.443-1.962-1.912-.828-.47-1.722-.704-2.682-.704s-1.848.235-2.664.704c-.816.469-1.464 1.106-1.944 1.912-.48.805-.72 1.701-.72 2.687 0 .962.24 1.846.72 2.652s1.128 1.443 1.944 1.912c.816.469 1.704.704 2.664.704zm13.806-2.237c-.648 0-1.194-.223-1.638-.668-.444-.445-.666-.992-.666-1.641 0-.65.222-1.197.666-1.642.444-.444.99-.667 1.638-.667.624 0 1.158.223 1.602.667.444.445.666.993.666 1.642 0 .65-.222 1.196-.666 1.641-.444.445-.978.668-1.602.668zm0 14.214c-.648 0-1.194-.223-1.638-.668-.444-.444-.666-.992-.666-1.641 0-.625.222-1.16.666-1.605.444-.445.99-.668 1.638-.668.624 0 1.158.223 1.602.668.444.445.666.98.666 1.605 0 .65-.222 1.197-.666 1.641-.444.445-.978.668-1.602.668zm17.191-5.52h-11.808v-2.309l11.52-17.064h3.312v16.487h3.168v2.886h-3.168v5.303h-3.024v-5.303zm0-2.886V93.037h-.144l-8.172 12.013h8.316zm14.527-12.194l-4.32 3.103-1.584-2.345 7.02-5.05h1.944v24.675h-3.06V92.856zM90.177 134.444c-.56 0-1.074-.17-1.54-.51-.467-.342-.787-.82-.96-1.434l.81-.33c.113.427.323.778.63 1.052.306.274.666.41 1.08.41.413 0 .763-.111 1.05-.335.286-.224.43-.53.43-.917 0-.334-.122-.61-.365-.827-.244-.217-.642-.42-1.195-.606l-.45-.16c-.507-.18-.92-.418-1.24-.712-.32-.294-.48-.701-.48-1.223 0-.34.093-.656.28-.947.186-.29.446-.522.78-.696.333-.174.706-.26 1.12-.26.413 0 .773.076 1.08.23.306.154.551.34.735.561.183.22.311.438.385.651l-.8.341c-.067-.247-.219-.47-.455-.671-.237-.2-.549-.3-.935-.3-.367 0-.68.103-.94.31-.26.207-.39.467-.39.781 0 .281.11.51.33.687.22.177.553.342 1 .496l.47.16c.606.22 1.08.496 1.42.827.34.33.51.78.51 1.348 0 .46-.119.848-.355 1.162-.237.314-.535.545-.895.692-.36.147-.73.22-1.11.22zm4.995 0c-.614 0-1.082-.18-1.405-.54-.324-.362-.485-.866-.485-1.514v-3.217h.85v3.087c0 .487.11.845.33 1.072.22.227.516.34.89.34.286 0 .541-.076.765-.23.223-.154.396-.354.52-.601.123-.247.185-.508.185-.782v-2.886h.85v5.11h-.81v-.74h-.04c-.14.253-.364.467-.67.64-.307.174-.634.261-.98.261zm3.615-5.27h.81v.75h.04c.14-.253.363-.469.67-.646.307-.177.633-.265.98-.265.613 0 1.082.178 1.405.536.323.357.485.843.485 1.458v3.277h-.85v-3.147c0-.474-.113-.818-.34-1.032-.227-.214-.537-.32-.93-.32-.273 0-.518.076-.735.23-.217.154-.385.356-.505.606s-.18.513-.18.787v2.876h-.85v-5.11zm8.88 5.27c-.526 0-.986-.145-1.38-.436-.393-.29-.67-.7-.83-1.227l.8-.331c.24.788.71 1.183 1.41 1.183.394 0 .709-.137.945-.411.237-.274.355-.635.355-1.083v-5.03h.85v4.96c0 .501-.091.93-.275 1.288-.183.357-.436.628-.76.812-.323.183-.695.275-1.115.275zm5.065 0c-.613 0-1.081-.18-1.405-.54-.323-.362-.485-.866-.485-1.514v-3.217h.85v3.087c0 .487.11.845.33 1.072.22.227.517.34.89.34.287 0 .542-.076.765-.23.224-.154.397-.354.52-.601.124-.247.185-.508.185-.782v-2.886h.85v5.11h-.81v-.74h-.04c-.14.253-.363.467-.67.64-.306.174-.633.261-.98.261zm3.616-7.335h.85v7.175h-.85v-7.175zm2.525 7.235c-.18 0-.332-.062-.455-.185-.124-.124-.185-.276-.185-.456 0-.174.061-.323.185-.446.123-.124.275-.186.455-.186.173 0 .321.062.445.186.123.123.185.272.185.446 0 .18-.062.332-.185.456-.124.123-.272.185-.445.185zm3.67-.912c.207-.207.617-.623 1.23-1.248.613-.624 1.04-1.067 1.28-1.327.34-.368.57-.655.69-.862.12-.207.18-.458.18-.752 0-.2-.052-.389-.155-.566-.103-.177-.253-.32-.45-.43-.197-.111-.432-.166-.705-.166-.36 0-.648.105-.865.315-.217.21-.358.44-.425.687l-.78-.31c.067-.215.187-.437.36-.667.173-.23.407-.428.7-.591.293-.164.64-.246 1.04-.246.42 0 .792.09 1.115.27.323.181.575.422.755.722.18.3.27.625.27.972 0 .702-.367 1.427-1.1 2.175l-2.05 2.064h3.23v.812h-4.32v-.852zm6.435.541l1.72-2.415-.02-.02c-.233.16-.53.24-.89.24-.346 0-.686-.096-1.02-.29-.333-.194-.603-.46-.81-.797-.206-.337-.31-.713-.31-1.127 0-.4.105-.777.315-1.127.21-.351.494-.633.85-.847.357-.214.745-.32 1.165-.32.454 0 .859.11 1.215.33.357.22.634.506.83.857.197.35.295.72.295 1.107 0 .367-.075.72-.225 1.057-.15.338-.365.713-.645 1.128l-1.79 2.695-.68-.47zm1-2.956c.267 0 .515-.065.745-.195.23-.13.412-.308.545-.532.134-.223.2-.469.2-.736 0-.274-.066-.523-.2-.747-.133-.223-.315-.4-.545-.53-.23-.131-.478-.196-.745-.196-.266 0-.513.065-.74.195-.226.13-.406.308-.54.531-.133.224-.2.473-.2.747 0 .267.067.513.2.736.134.224.314.401.54.532.227.13.474.195.74.195z"/>
|
|
20
|
+
</g>
|
|
21
|
+
</svg>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="220" height="472" viewBox="0 0 220 472">
|
|
2
|
+
<g fill="none" fill-rule="evenodd">
|
|
3
|
+
<rect width="220" height="472" fill="#101211" rx="26"/>
|
|
4
|
+
<rect width="202" height="404" x="9" y="36" fill="#F4F5F7" rx="9"/>
|
|
5
|
+
<rect width="182" height="136" x="19" y="112" fill="#F4F5F7" rx="17.5"/>
|
|
6
|
+
<path fill="#F4F5F7" d="M18 36h184c4.97 0 9 4.03 9 9v6H9v-6c0-4.97 4.03-9 9-9z"/>
|
|
7
|
+
<path fill="#F4F5F7" d="M9 51H211V82H9z" transform="matrix(1 0 0 -1 0 133)"/>
|
|
8
|
+
<rect width="52" height="5" x="84" y="14" fill="#2E2E2E" rx="2.5"/>
|
|
9
|
+
<rect width="52" height="5" x="84" y="455" fill="#2E2E2E" rx="2.5"/>
|
|
10
|
+
<circle cx="45.5" cy="19.5" r="5.5" fill="#2E2E2E"/>
|
|
11
|
+
<circle cx="65.5" cy="19.5" r="3.5" fill="#2E2E2E"/>
|
|
12
|
+
<text fill="#000" font-family="Roboto-Regular, Roboto" font-size="12" letter-spacing=".175">
|
|
13
|
+
<tspan x="49.5" y="71">Muji India</tspan>
|
|
14
|
+
</text>
|
|
15
|
+
<circle cx="199" cy="63" r="1" fill="#000"/>
|
|
16
|
+
<circle cx="199" cy="70" r="1" fill="#000"/>
|
|
17
|
+
<circle cx="199" cy="66.5" r="1" fill="#000"/>
|
|
18
|
+
<path fill="#000" d="M28 66c0 .279-.226.505-.505.505h-5.556l2.42 2.42c.198.197.198.518 0 .716-.198.198-.52.198-.718 0l-2.934-2.934c-.39-.39-.39-1.024 0-1.414l2.934-2.934c.198-.198.52-.198.718 0 .198.198.198.519 0 .717l-2.42 2.419h5.556c.279 0 .505.226.505.505z"/>
|
|
19
|
+
</g>
|
|
20
|
+
</svg>
|
|
@@ -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,8 +279,8 @@ 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={{ left: 10, borderRadius: '50%', width: '20px', height: '20px', background: '#2E89DF' }}></div>
|
|
163
286
|
<div className="message-pop align-left" style={{ background: '#ffffff', color: '#333333' }}>
|
|
@@ -167,7 +290,7 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
|
|
|
167
290
|
return content[item];
|
|
168
291
|
}
|
|
169
292
|
if (item === 'bodyImage' && content[item]) {
|
|
170
|
-
return <
|
|
293
|
+
return <CapImage src={content[item]} alt="brand-name" style={{maxWidth: '100%'}}/>;
|
|
171
294
|
}
|
|
172
295
|
return null;
|
|
173
296
|
})
|
|
@@ -198,6 +321,10 @@ TemplatePreview.propTypes = {
|
|
|
198
321
|
unicodeEnabled: PropTypes.bool,
|
|
199
322
|
showCount: PropTypes.bool,
|
|
200
323
|
intl: intlShape.isRequired,
|
|
324
|
+
templateDataRaw: PropTypes.object,
|
|
325
|
+
onPreviewContentClicked: PropTypes.func,
|
|
326
|
+
onTestContentClicked: PropTypes.func,
|
|
327
|
+
showTestAndPreviewIcon: PropTypes.bool,
|
|
201
328
|
};
|
|
202
329
|
|
|
203
330
|
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
|
});
|
|
@@ -72,6 +72,8 @@ function SlideBoxContent(props) {
|
|
|
72
72
|
selectedWeChatAccount,
|
|
73
73
|
weChatMaptemplateStep,
|
|
74
74
|
onWeChatMaptemplateStepChange,
|
|
75
|
+
onTestContentClicked,
|
|
76
|
+
onPreviewContentClicked,
|
|
75
77
|
onFacebookSubmit,
|
|
76
78
|
} = props;
|
|
77
79
|
const type = messageDetails.type.toLowerCase(); // type is context in get tags values : outbound | dvs | referral | loyalty | coupons
|
|
@@ -216,6 +218,8 @@ function SlideBoxContent(props) {
|
|
|
216
218
|
templateData={templateData}
|
|
217
219
|
forwardedTags={forwardedTags}
|
|
218
220
|
selectedOfferDetails={selectedOfferDetails}
|
|
221
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
222
|
+
onTestContentClicked={onTestContentClicked}
|
|
219
223
|
/>
|
|
220
224
|
)}
|
|
221
225
|
{
|
|
@@ -249,6 +253,8 @@ function SlideBoxContent(props) {
|
|
|
249
253
|
isFullMode={isFullMode}
|
|
250
254
|
forwardedTags={forwardedTags}
|
|
251
255
|
selectedOfferDetails={selectedOfferDetails}
|
|
256
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
257
|
+
onTestContentClicked={onTestContentClicked}
|
|
252
258
|
/>
|
|
253
259
|
)}
|
|
254
260
|
{isEmailCreate && (
|
|
@@ -271,6 +277,8 @@ function SlideBoxContent(props) {
|
|
|
271
277
|
onValidationFail={onValidationFail}
|
|
272
278
|
forwardedTags={forwardedTags}
|
|
273
279
|
selectedOfferDetails={selectedOfferDetails}
|
|
280
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
281
|
+
onTestContentClicked={onTestContentClicked}
|
|
274
282
|
/>
|
|
275
283
|
)}
|
|
276
284
|
{(isEditEmailWithId || isEmailEditWithContent) && (
|
|
@@ -294,6 +302,8 @@ function SlideBoxContent(props) {
|
|
|
294
302
|
onValidationFail={onValidationFail}
|
|
295
303
|
forwardedTags={forwardedTags}
|
|
296
304
|
selectedOfferDetails={selectedOfferDetails}
|
|
305
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
306
|
+
onTestContentClicked={onTestContentClicked}
|
|
297
307
|
/>
|
|
298
308
|
)}
|
|
299
309
|
{isEditMPush &&
|
|
@@ -314,6 +324,8 @@ function SlideBoxContent(props) {
|
|
|
314
324
|
onValidationFail={onValidationFail}
|
|
315
325
|
forwardedTags={forwardedTags}
|
|
316
326
|
selectedOfferDetails={selectedOfferDetails}
|
|
327
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
328
|
+
onTestContentClicked={onTestContentClicked}
|
|
317
329
|
/>
|
|
318
330
|
}
|
|
319
331
|
{isCreateMPush &&
|
|
@@ -338,7 +350,9 @@ function SlideBoxContent(props) {
|
|
|
338
350
|
query={query}
|
|
339
351
|
forwardedTags={forwardedTags}
|
|
340
352
|
onValidationFail={onValidationFail}
|
|
341
|
-
selectedOfferDetails={selectedOfferDetails}
|
|
353
|
+
selectedOfferDetails={selectedOfferDetails}
|
|
354
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
355
|
+
onTestContentClicked={onTestContentClicked}/>
|
|
342
356
|
}
|
|
343
357
|
{
|
|
344
358
|
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 (
|
|
@@ -539,6 +539,8 @@ class Creatives extends React.Component {
|
|
|
539
539
|
weChatMaptemplateStep={weChatMaptemplateStep}
|
|
540
540
|
selectedWeChatAccount={selectedWeChatAccount}
|
|
541
541
|
onWeChatMaptemplateStepChange={this.onWeChatMaptemplateStepChange}
|
|
542
|
+
onPreviewContentClicked={onPreviewContentClicked}
|
|
543
|
+
onTestContentClicked={onTestContentClicked}
|
|
542
544
|
onFacebookSubmit={getCreativesData}
|
|
543
545
|
/>
|
|
544
546
|
}
|
|
@@ -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`,
|