@capillarytech/creatives-library 3.9.0 → 3.9.2

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 (41) 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/package-lock.json +3096 -0
  11. package/package.json +1 -1
  12. package/translations/en.json +5 -0
  13. package/translations/zh.json +5 -0
  14. package/v2Components/FormBuilder/index.js +24 -8
  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 +100 -18
  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/CreativesContainer/SlideBoxContent.js +15 -1
  29. package/v2Containers/CreativesContainer/SlideBoxHeader.js +1 -1
  30. package/v2Containers/CreativesContainer/index.js +3 -1
  31. package/v2Containers/CreativesContainer/messages.js +2 -2
  32. package/v2Containers/Email/_email.scss +7 -1
  33. package/v2Containers/Email/index.js +39 -13
  34. package/v2Containers/Email/messages.js +4 -0
  35. package/v2Containers/EmailWrapper/index.js +7 -5
  36. package/v2Containers/MobilePush/Create/index.js +5 -0
  37. package/v2Containers/MobilePush/Edit/index.js +5 -0
  38. package/v2Containers/MobilepushWrapper/index.js +4 -1
  39. package/v2Containers/Sms/Create/index.js +2 -1
  40. package/v2Containers/Sms/Edit/index.js +2 -0
  41. package/v2Containers/Templates/index.js +2 -2
@@ -8,18 +8,145 @@ import PropTypes from 'prop-types';
8
8
 
9
9
  import React from 'react';
10
10
  import _ from 'lodash';
11
- import { injectIntl, intlShape} from 'react-intl';
12
- import {CapColumn} from '@capillarytech/cap-react-ui-library';
11
+ import { injectIntl, intlShape, FormattedMessage} from 'react-intl';
12
+ import {CapColumn, CapTab, CapIcon, CapLabel, CapImage} from '@capillarytech/cap-ui-library';
13
13
  import './_templatePreview.scss';
14
14
  import {updateCharCount} from '../../utils/smsCharCountV2';
15
15
  import messages from './messages';
16
16
  const smsIcon = require('./assets/images/user-icon.svg');
17
+ const smsMobileAndroid = require('./assets/images/sms_mobile_android.svg');
18
+ const wechatMobileAndroid = require('./assets/images/wechat_mobile_android.svg');
19
+ const smsMobileIos = require('./assets/images/sms_mobile_ios.svg');
20
+ const smsAndroidHomeScreen = require('./assets/images/home-screen-android.svg');
21
+ const smsIosHomeScreen = require('./assets/images/home-screen-ios.svg');
17
22
  const wechatBody = require('./assets/images/WECHAT_5x.png');
18
23
  const smsBody = require('./assets/images/mobile.svg');
19
24
  const androidPushMessagePhone = require('./assets/images/androidPushMessage.svg');
20
25
  const iPhonePushMessagePhone = require('./assets/images/iPhonePushMessage.svg');
21
26
 
22
27
  class TemplatePreview extends React.Component { // eslint-disable-line react/prefer-stateless-function
28
+ getWechatAndroidPreview = (content) => (
29
+ <div className="shell-lock-screen-android align-center" id="sms-preview">
30
+ <div className="lock-screen-preview">
31
+ <CapImage className="preview-image sms" src={smsAndroidHomeScreen} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
32
+ <div className="lock-msgContainer wechat">
33
+ <div className="sender-id-text">
34
+ {this.props.intl.formatMessage(messages.senderId)}
35
+ </div>
36
+ <div className="message-text-container">
37
+ <CapLabel type="label1" style={{ height: '15px' }} >{content}</CapLabel>
38
+ </div>
39
+ </div>
40
+ <div className="action-text">
41
+ <FormattedMessage {...messages.markAsRead}/> <FormattedMessage {...messages.reply}/>
42
+ </div>
43
+ </div>
44
+ <div className="main-screen-preview">
45
+ <CapImage className="preview-image" src={wechatMobileAndroid} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
46
+ <div className="msgContainer wechat">
47
+ <div className="message-pop wechat align-left" style={{ background: '#ffffff', color: '#333333' }}>
48
+ {content}
49
+ </div>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ );
54
+
55
+ getWechatIosPreview = (content) => (
56
+ <div className="shell-lock-screen-ios align-center" id="sms-preview">
57
+ <div className="lock-screen-preview">
58
+ <CapImage className="preview-image sms" src={smsIosHomeScreen} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
59
+ <div className="lock-msgContainer wechat">
60
+ <div className="sender-id-text">
61
+ {this.props.intl.formatMessage(messages.senderId)}
62
+ </div>
63
+ <div className="message-text-container">
64
+ <CapLabel type="label1" style={{ height: '15px' }} >{content}</CapLabel>
65
+ </div>
66
+ </div>
67
+ <div className="action-text-reply">
68
+ <FormattedMessage {...messages.reply}/>
69
+ </div>
70
+ <div className="action-text-cancel">
71
+ <FormattedMessage {...messages.cancel}/>
72
+ </div>
73
+ </div>
74
+ <div className="main-screen-preview">
75
+ <CapImage className="preview-image" src={wechatMobileAndroid} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
76
+ <div className="msgContainer wechat">
77
+ <div className="message-pop wechat align-left" style={{ background: '#ffffff', color: '#333333' }}>
78
+ {content}
79
+ </div>
80
+ </div>
81
+ </div>
82
+ </div>
83
+ );
84
+
85
+ getSmsAndroidPreview = (content) => (
86
+ <div className="shell-lock-screen-android align-center" id="sms-preview">
87
+ <div className="lock-screen-preview">
88
+ <CapImage className="preview-image sms" src={smsAndroidHomeScreen} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
89
+ <div className="lock-msgContainer sms">
90
+ <div className="sender-id-text">
91
+ {this.props.intl.formatMessage(messages.senderId)}
92
+ </div>
93
+ <div className="message-text-container">
94
+ <CapLabel type="label1" style={{ height: '15px' }} >{content}</CapLabel>
95
+ </div>
96
+ </div>
97
+ <div className="action-text">
98
+ <FormattedMessage {...messages.markAsRead}/> <FormattedMessage {...messages.reply}/>
99
+ </div>
100
+ </div>
101
+ <div className="main-screen-preview">
102
+ <CapImage className="preview-image sms" src={smsMobileAndroid} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
103
+ <div className="msgContainer sms">
104
+ <div className={"message-pop sms"}>
105
+ {content && content.length && content.map((msg) =>
106
+ <CapColumn className="message-pop-item align-left" style={{ background: '#FFFFFF', color: '#091e42'}}>
107
+ {msg}
108
+ </CapColumn>)
109
+ }
110
+ </div>
111
+ </div>
112
+ </div>
113
+ </div>
114
+ );
115
+
116
+ getSmsIosPreview = (content) => (
117
+ <div className="shell-lock-screen-ios align-center" id="sms-preview">
118
+ <div className="lock-screen-preview">
119
+ <CapImage className="preview-image sms" src={smsIosHomeScreen} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
120
+ <div className="lock-msgContainer sms">
121
+ <div className="sender-id-text">
122
+ {this.props.intl.formatMessage(messages.senderId)}
123
+ </div>
124
+ <div className="message-text-container">
125
+ <CapLabel type="label1" style={{ height: '15px' }} >{content}</CapLabel>
126
+ </div>
127
+ </div>
128
+ <div className="action-text-reply">
129
+ <FormattedMessage {...messages.reply}/>
130
+ </div>
131
+ <div className="action-text-cancel">
132
+ <FormattedMessage {...messages.cancel}/>
133
+ </div>
134
+ </div>
135
+ <div className="main-screen-preview">
136
+ <CapImage className="preview-image sms" src={smsMobileIos} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
137
+ <div className="msgContainer sms">
138
+ <div className={"message-pop sms"}>
139
+ {content && content.length && content.map((msg) =>
140
+ <CapColumn className="message-pop-item align-left" style={{ background: '#ebecf0', color: '#091e42'}}>
141
+ {msg}
142
+ </CapColumn>)
143
+ }
144
+ </div>
145
+ </div>
146
+ </div>
147
+ </div>
148
+ );
149
+
23
150
  render() {
24
151
  console.log('preview props', this.props);
25
152
  let content = channel && channel.toLowerCase() === 'sms' ? [this.props.content] : this.props.content;
@@ -38,6 +165,7 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
38
165
  //smsText = this.props.intl.formatMessage(messages.previewGenerationMessage);
39
166
  //console.log('message text', smsText);
40
167
  }
168
+ const showLockScreenPreview = !!this.props.showLockScreenPreview;
41
169
  const type = this.props.location && this.props.location.query.type ? this.props.location.query.type : '';
42
170
  let iosActions = [];
43
171
  if (channel.toLowerCase() === "mobilepush") {
@@ -52,35 +180,67 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
52
180
  }
53
181
  return (
54
182
  <div className={`preview-container ${type === 'embedded' ? 'embedded-preview' : ''}`}>
55
- { channel && channel.toLowerCase() === 'sms' &&
56
- <div className="shell align-center" id="sms-preview">
57
- <img className="preview-image sms" src={smsBody} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
183
+ { channel && channel.toLowerCase() === 'sms' &&
184
+ (showLockScreenPreview ? (
185
+ <CapTab
186
+ panes={[
187
+ {
188
+ content: this.getSmsAndroidPreview(content),
189
+ tab: <CapIcon type="android" size='m' />,
190
+ key: 'android',
191
+ },
192
+ {
193
+ content: this.getSmsIosPreview(content),
194
+ tab: <CapIcon type="ios" size='m' />,
195
+ key: 'ios',
196
+ },
197
+ ]}
198
+ tabBarStyle={{margin: 'auto', width: '14%'}}
199
+ />
200
+ ) : (
201
+ <div className="shell align-center" id="sms-preview">
202
+ <CapImage className="preview-image sms" src={smsMobileAndroid} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
58
203
  <div className="msgContainer sms">
59
- <img className="sms-icon" src={smsIcon} alt={this.props.intl.formatMessage(messages.smsIcon)} />
60
204
  <div className={"message-pop sms"}>
61
205
  {content && content.length && content.map((msg) =>
62
- <CapColumn className="message-pop-item align-left" style={{ background: '#3F51B5', color: '#ffffff'}}>
206
+ <CapColumn className="message-pop-item align-left" style={{ background: '#FFFFFF', color: '#091e42'}}>
63
207
  {msg}
64
208
  </CapColumn>)
65
209
  }
66
210
  </div>
67
211
  </div>
68
- </div>
69
- }
70
- {channel && channel.toLowerCase() === 'wechat' ?
71
- ( <div className="shell align-center" id="sms-preview">
72
- <img className="preview-image" src={channel.toLowerCase() === 'wechat' ? wechatBody : smsBody} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
212
+ </div>)
213
+ )}
214
+ {channel && channel.toLowerCase() === 'wechat' &&
215
+ (showLockScreenPreview ? (
216
+ <CapTab
217
+ panes={[
218
+ {
219
+ content: this.getWechatAndroidPreview(content),
220
+ tab: <CapIcon type="android" size='m' />,
221
+ key: 'android',
222
+ },
223
+ {
224
+ content: this.getWechatIosPreview(content),
225
+ tab: <CapIcon type="ios" size='m' />,
226
+ key: 'ios',
227
+ },
228
+ ]}
229
+ tabBarStyle={{margin: 'auto', width: '14%'}}
230
+ />
231
+ ) : (
232
+ <div className="shell align-center" id="sms-preview">
233
+ <CapImage className="preview-image" src={channel.toLowerCase() === 'wechat' ? wechatMobileAndroid : smsBody} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
73
234
  <div className="msgContainer">
74
- {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)} />}
75
235
  <div className="message-pop align-left" style={{ background: `${this.props.channel.toLowerCase() === 'wechat' ? '#ffffff' : '#3F51B5'}`, color: `${this.props.channel.toLowerCase() === 'wechat' ? '#333333' : '#ffffff'}`}}>{content}
76
236
  </div>
77
237
  </div>
78
238
  </div>
79
- ) : ''
80
- }
239
+ )
240
+ )}
81
241
  { channel && (channel.toLowerCase() === 'mobilepush') &&
82
242
  (<div className="shell align-center" id="mobilepush-preview">
83
- <img className="preview-image" src={this.props.device === "android" ? androidPushMessagePhone : iPhonePushMessagePhone} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
243
+ <CapImage className="preview-image" src={this.props.device === "android" ? androidPushMessagePhone : iPhonePushMessagePhone} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
84
244
  {(!!content.header || !!content.bodyText || !!content.bodyImage) &&
85
245
  <div className={`${this.props.device}-push-message-Container`}>
86
246
  {this.props.device === "android" ?
@@ -95,7 +255,7 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
95
255
  {content.bodyText}
96
256
  </div>
97
257
  {content.bodyImage && <div className="body-image">
98
- <img src={content.bodyImage} alt="" />
258
+ <CapImage src={content.bodyImage} alt="" />
99
259
  </div>}
100
260
  {content.actions.filter((action) => action.label).length ?
101
261
  <div className="actions">
@@ -111,7 +271,7 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
111
271
  <span className="app-icon"></span>{content.appName ? content.appName : "App name"} <i className="material-icons">{this.props.intl.formatMessage(messages.close)}</i>
112
272
  </div>
113
273
  {content.bodyImage && <div className="body-image">
114
- <img src={content.bodyImage} alt=""/>
274
+ <CapImage src={content.bodyImage} alt=""/>
115
275
  </div>}
116
276
  <div className="title">
117
277
  {content.header}
@@ -130,11 +290,11 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
130
290
  {
131
291
  channel && channel.toLowerCase() === 'line' ? (
132
292
  <div className="shell align-center" id="sms-preview">
133
- <img className="preview-image" src={wechatBody} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
293
+ <CapImage className="preview-image" src={wechatBody} alt={this.props.intl.formatMessage(messages.previewGenerated)}/>
134
294
  <div className="msgContainer">
135
295
  <div className="sms-icon" style={{ width: '25px', height: '25px', background: '#2E89DF' }}></div>
136
296
  <div className="message-pop align-left" style={{ background: '#ffffff', color: '#333333' }}>
137
- { (content && content.bodyImage) ? <img src={content.bodyImage} alt="ddd" style={{maxWidth: '100%'}}/> : '' }
297
+ { (content && content.bodyImage) ? <CapImage src={content.bodyImage} alt="ddd" style={{maxWidth: '100%'}}/> : '' }
138
298
  { (content && content.bodyText) ? content.bodyText : ''}
139
299
  </div>
140
300
  </div>
@@ -10,6 +10,10 @@ export default defineMessages({
10
10
  id: 'creatives.components.TemplatePreview.previewGenerationMessage',
11
11
  defaultMessage: "Preview is being generated",
12
12
  },
13
+ senderId: {
14
+ id: 'creatives.components.TemplatePreview.senderId',
15
+ defaultMessage: "Sender ID",
16
+ },
13
17
  sms: {
14
18
  id: 'creatives.components.TemplatePreview.sms',
15
19
  defaultMessage: "SMS",
@@ -46,4 +50,16 @@ export default defineMessages({
46
50
  id: 'creatives.components.TemplatePreview.smsIcon',
47
51
  defaultMessage: 'Sms Icon',
48
52
  },
53
+ markAsRead: {
54
+ id: 'creatives.components.TemplatePreview.markAsRead',
55
+ defaultMessage: 'Mark as read',
56
+ },
57
+ reply: {
58
+ id: 'creatives.components.TemplatePreview.reply',
59
+ defaultMessage: 'Reply',
60
+ },
61
+ cancel: {
62
+ id: 'creatives.components.TemplatePreview.cancel',
63
+ defaultMessage: 'Cancel',
64
+ },
49
65
  });