@capillarytech/creatives-library 3.6.4 → 3.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +7 -7
  2. package/components/TemplatePreview/_templatePreview.scss +279 -20
  3. package/components/TemplatePreview/assets/images/home-screen-android.svg +21 -0
  4. package/components/TemplatePreview/assets/images/home-screen-ios.svg +16 -0
  5. package/components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -0
  6. package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +16 -0
  7. package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -0
  8. package/components/TemplatePreview/index.js +180 -20
  9. package/components/TemplatePreview/messages.js +16 -0
  10. package/containers/Cap/messsages.js +63 -0
  11. package/package.json +1 -1
  12. package/v2Components/FormBuilder/index.js +15 -6
  13. package/v2Components/Header/index.js +46 -0
  14. package/v2Components/Header/tests/index.test.js +10 -0
  15. package/v2Components/MobilePushPreviewV2/index.js +40 -32
  16. package/v2Components/MobilePushPreviewV2/messages.js +0 -8
  17. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +64 -0
  18. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +101 -19
  19. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +12 -0
  20. package/v2Components/TemplatePreview/_templatePreview.scss +13 -4
  21. package/v2Components/TemplatePreview/assets/images/home-screen-android.svg +21 -0
  22. package/v2Components/TemplatePreview/assets/images/home-screen-ios.svg +16 -0
  23. package/v2Components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -0
  24. package/v2Components/TemplatePreview/assets/images/wechat-home-screen-android.svg +21 -0
  25. package/v2Components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -0
  26. package/v2Components/TemplatePreview/index.js +147 -20
  27. package/v2Components/TemplatePreview/messages.js +8 -0
  28. package/v2Containers/Assets/Gallery/index.js +4 -2
  29. package/v2Containers/CreativesContainer/SlideBoxContent.js +15 -2
  30. package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -1
  31. package/v2Containers/CreativesContainer/index.js +3 -1
  32. package/v2Containers/CreativesContainer/messages.js +2 -2
  33. package/v2Containers/Email/_email.scss +7 -1
  34. package/v2Containers/Email/index.js +39 -13
  35. package/v2Containers/Email/messages.js +4 -0
  36. package/v2Containers/EmailWrapper/index.js +4 -0
  37. package/v2Containers/MobilePush/Create/index.js +5 -0
  38. package/v2Containers/MobilePush/Edit/index.js +5 -0
  39. package/v2Containers/MobilepushWrapper/index.js +4 -1
  40. package/v2Containers/Sms/Create/index.js +2 -1
  41. package/v2Containers/Sms/Edit/index.js +2 -0
  42. package/v2Containers/Templates/index.js +6 -2
  43. package/v2Containers/TemplatesV2/_templatesV2.scss +5 -0
@@ -10,17 +10,114 @@ import React from 'react';
10
10
  import _ from 'lodash';
11
11
  import { injectIntl, FormattedMessage, intlShape } from 'react-intl';
12
12
  // import styled from 'styled-components';
13
- import {CapColumn, CapRow, CapHeading} from '@capillarytech/cap-ui-library';
13
+ import {CapColumn, CapRow, CapHeading, CapIcon, CapButton, CapImage} from '@capillarytech/cap-ui-library';
14
14
  import './_templatePreview.scss';
15
15
  import {updateCharCount} from '../../utils/smsCharCountV2';
16
16
  import messages from './messages';
17
- 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');
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
- <img className="preview-image sms" src={smsBody} alt="Preview is being generated"/>
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: '#3F51B5', color: '#ffffff'}}>
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
- <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)} />}
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
- <img className="preview-image" src={this.props.device === "android" ? androidPushMessagePhone : iPhonePushMessagePhone} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
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
- <img src={content.bodyImage} alt="" />
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
- <img src={content.bodyImage} alt=""/>
264
+ <CapImage src={content.bodyImage} alt=""/>
142
265
  </div>}
143
266
  <div className="title">
144
267
  {content.header}
@@ -156,12 +279,12 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
156
279
  }
157
280
  {
158
281
  channel && channel.toLowerCase() === 'line' ? (
159
- <div className="shell align-center" id="sms-preview">
160
- <img className="preview-image" src={wechatBody} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
282
+ <div className="shell-v2 align-center" id="sms-preview">
283
+ <CapImage className="preview-image" src={wechatBodyNew} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
161
284
  <div className="msgContainer">
162
285
  <div className="sms-icon" style={{ width: '25px', height: '25px', background: '#2E89DF' }}></div>
163
286
  <div className="message-pop align-left" style={{ background: '#ffffff', color: '#333333' }}>
164
- { (content && content.bodyImage) ? <img src={content.bodyImage} alt="ddd" style={{maxWidth: '100%'}}/> : '' }
287
+ { (content && content.bodyImage) ? <CapImage src={content.bodyImage} alt="ddd" style={{maxWidth: '100%'}}/> : '' }
165
288
  { (content && content.bodyText) ? content.bodyText : ''}
166
289
  </div>
167
290
  </div>
@@ -189,6 +312,10 @@ TemplatePreview.propTypes = {
189
312
  unicodeEnabled: PropTypes.bool,
190
313
  showCount: PropTypes.bool,
191
314
  intl: intlShape.isRequired,
315
+ templateDataRaw: PropTypes.object,
316
+ onPreviewContentClicked: PropTypes.func,
317
+ onTestContentClicked: PropTypes.func,
318
+ showTestAndPreviewIcon: PropTypes.bool,
192
319
  };
193
320
 
194
321
  export default (injectIntl(TemplatePreview));
@@ -50,4 +50,12 @@ export default defineMessages({
50
50
  id: 'creatives.componentsV2.TemplatePreview.smsIcon',
51
51
  defaultMessage: 'Sms Icon',
52
52
  },
53
+ preview: {
54
+ id: 'creatives.componentsV2.TemplatePreview.preview',
55
+ defaultMessage: 'Preview',
56
+ },
57
+ testMessage: {
58
+ id: 'creatives.componentsV2.TemplatePreview.testMessage',
59
+ defaultMessage: 'Test Message',
60
+ },
53
61
  });
@@ -251,6 +251,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
251
251
  }
252
252
  }
253
253
  getIllustrationProps={
254
+ buttonClassName: 'upload-image-gallery',
254
255
  buttonLabel: <FormattedMessage {...messages.upload} />,
255
256
  onClick: (e) => this.openFileDialog(e),
256
257
  illustrationImage: imageGalleryIllustration,
@@ -317,6 +318,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
317
318
  title: <span title={template.name} >{template.name}</span>,
318
319
  extra: [
319
320
  <CapIcon
321
+ className="view-gallery"
320
322
  style={{marginRight: '16px'}}
321
323
  type="eye"
322
324
  onClick={() => { this.openPreviewMode(template); }}
@@ -324,7 +326,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
324
326
  <CapDropdown
325
327
  overlay={
326
328
  <CapMenu>
327
- <CapMenu.Item onClick={() => this.deleteAsset(template)}>
329
+ <CapMenu.Item className="delete-gallery" onClick={() => this.deleteAsset(template)}>
328
330
  <FormattedMessage {...messages.delete} />
329
331
  </CapMenu.Item>
330
332
  </CapMenu>
@@ -429,7 +431,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
429
431
  <div style={{ textAlign: 'right', marginTop: '16px', width: '50%'}}>
430
432
  <form encType="multipart/form-data" id="myForm">
431
433
  <input style={{ display: 'none'}} id="fileName" type="file" onChange={(e) => this.uploadImages(e, {files: e.target.files})} accept="image/*" multiple/>
432
- <CapButton type={this.props.location.query.type !== 'embedded' ? 'primary' : 'secondary'} onClick={(e) => this.openFileDialog(e)} style={{float: 'right'}}>
434
+ <CapButton className="upload-image-gallery" type={this.props.location.query.type !== 'embedded' ? 'primary' : 'secondary'} onClick={(e) => this.openFileDialog(e)} style={{float: 'right'}}>
433
435
  <FormattedMessage {...messages.upload} />
434
436
  </CapButton>
435
437
  </form>
@@ -69,6 +69,8 @@ function SlideBoxContent(props) {
69
69
  selectedWeChatAccount,
70
70
  weChatMaptemplateStep,
71
71
  onWeChatMaptemplateStepChange,
72
+ onTestContentClicked,
73
+ onPreviewContentClicked
72
74
  onFacebookSubmit,
73
75
  } = props;
74
76
  const type = messageDetails.type.toLowerCase(); // type is context in get tags values : outbound | dvs | referral | loyalty | coupons
@@ -104,7 +106,6 @@ function SlideBoxContent(props) {
104
106
  isEmailPreview = slidBoxContent === 'preview' && channel === constants.EMAIL;
105
107
  isMpushPreview = slidBoxContent === 'preview' && channel === constants.MOBILE_PUSH;
106
108
  }
107
-
108
109
  return (
109
110
  <CreativesWrapper>
110
111
  {!isFullMode && slidBoxContent === 'templates' && (
@@ -185,6 +186,8 @@ function SlideBoxContent(props) {
185
186
  templateData={templateData}
186
187
  forwardedTags={forwardedTags}
187
188
  selectedOfferDetails={selectedOfferDetails}
189
+ onPreviewContentClicked={onPreviewContentClicked}
190
+ onTestContentClicked={onTestContentClicked}
188
191
  />
189
192
  )}
190
193
  {
@@ -218,6 +221,8 @@ function SlideBoxContent(props) {
218
221
  isFullMode={isFullMode}
219
222
  forwardedTags={forwardedTags}
220
223
  selectedOfferDetails={selectedOfferDetails}
224
+ onPreviewContentClicked={onPreviewContentClicked}
225
+ onTestContentClicked={onTestContentClicked}
221
226
  />
222
227
  )}
223
228
  {isEmailCreate && (
@@ -240,6 +245,8 @@ function SlideBoxContent(props) {
240
245
  onValidationFail={onValidationFail}
241
246
  forwardedTags={forwardedTags}
242
247
  selectedOfferDetails={selectedOfferDetails}
248
+ onPreviewContentClicked={onPreviewContentClicked}
249
+ onTestContentClicked={onTestContentClicked}
243
250
  />
244
251
  )}
245
252
  {(isEditEmailWithId || isEmailEditWithContent) && (
@@ -263,6 +270,8 @@ function SlideBoxContent(props) {
263
270
  onValidationFail={onValidationFail}
264
271
  forwardedTags={forwardedTags}
265
272
  selectedOfferDetails={selectedOfferDetails}
273
+ onPreviewContentClicked={onPreviewContentClicked}
274
+ onTestContentClicked={onTestContentClicked}
266
275
  />
267
276
  )}
268
277
  {isEditMPush &&
@@ -283,6 +292,8 @@ function SlideBoxContent(props) {
283
292
  onValidationFail={onValidationFail}
284
293
  forwardedTags={forwardedTags}
285
294
  selectedOfferDetails={selectedOfferDetails}
295
+ onPreviewContentClicked={onPreviewContentClicked}
296
+ onTestContentClicked={onTestContentClicked}
286
297
  />
287
298
  }
288
299
  {isCreateMPush &&
@@ -307,7 +318,9 @@ function SlideBoxContent(props) {
307
318
  query={query}
308
319
  forwardedTags={forwardedTags}
309
320
  onValidationFail={onValidationFail}
310
- selectedOfferDetails={selectedOfferDetails}/>
321
+ selectedOfferDetails={selectedOfferDetails}
322
+ onPreviewContentClicked={onPreviewContentClicked}
323
+ onTestContentClicked={onTestContentClicked}/>
311
324
  }
312
325
  {
313
326
  isEditFacebook && (
@@ -48,7 +48,7 @@ function SlideBoxHeader(props) {
48
48
  )}
49
49
  {!showTemplateNameHeader && slidBoxContent === 'editTemplate' && (
50
50
  <CapHeader
51
- title={<FormattedMessage {...messages.editMessageContent} />}
51
+ title={<FormattedMessage {...messages.editMessageContent} values={{channel: getChannelLabel(channel)}}/>}
52
52
  prefix={creativesMode !== 'edit' && !isFullMode && showPrefix &&
53
53
  <PrefixWrapper>
54
54
  <CapIcons.backIcon onClick={onShowTemplates} />
@@ -473,7 +473,7 @@ class Creatives extends React.Component {
473
473
  }
474
474
  render() {
475
475
  const {slidBoxContent, isGetFormData, showSlideBox, templateData, currentChannel, emailCreateMode, templateStep, isLoadingContent, mobilePushCreateMode, isDiscardMessage, weChatTemplateType, weChatMaptemplateStep} = this.state;
476
- const {isFullMode, creativesMode, cap, isUploading, channelsToHide, selectedWeChatAccount, forwardedTags, channelsToDisable, selectedOfferDetails, getCreativesData} = this.props;
476
+ const {isFullMode, creativesMode, cap, isUploading, channelsToHide, selectedWeChatAccount, forwardedTags, channelsToDisable, selectedOfferDetails, onTestContentClicked, onPreviewContentClicked, getCreativesData} = this.props;
477
477
  const mapTemplateCreate = slidBoxContent === 'createTemplate' && weChatTemplateType === MAP_TEMPLATE && templateStep !== 'modeSelection';
478
478
  /* TODO: Instead of passing down same props separately to each component down, write common function to these props and pass it accordingly */
479
479
  return (
@@ -538,6 +538,8 @@ class Creatives extends React.Component {
538
538
  weChatMaptemplateStep={weChatMaptemplateStep}
539
539
  selectedWeChatAccount={selectedWeChatAccount}
540
540
  onWeChatMaptemplateStepChange={this.onWeChatMaptemplateStepChange}
541
+ onPreviewContentClicked={onPreviewContentClicked}
542
+ onTestContentClicked={onTestContentClicked}
541
543
  onFacebookSubmit={getCreativesData}
542
544
  />
543
545
  }
@@ -256,11 +256,11 @@ export default defineMessages({
256
256
  },
257
257
  "editMessageContent": {
258
258
  id: `${scope}.editMessageContent`,
259
- defaultMessage: `Edit message content`,
259
+ defaultMessage: `Edit {channel}`,
260
260
  },
261
261
  "createMessageContent": {
262
262
  id: `${scope}.createMessageContent`,
263
- defaultMessage: `New {channel} message`,
263
+ defaultMessage: `New {channel}`,
264
264
  },
265
265
  "creativeTemplatesDesc": {
266
266
  id: `${scope}.creativeTemplatesDesc`,
@@ -123,7 +123,13 @@
123
123
  margin-right: 0 !important;
124
124
  }
125
125
  }
126
-
126
+ .test-and-preview-container{
127
+ position: absolute;
128
+ left: 70%;
129
+ top: 4%;
130
+ margin-top: 0;
131
+ z-index: 999;
132
+ }
127
133
  }
128
134
 
129
135
  .version-popover {