@capillarytech/creatives-library 6.11.6 → 6.11.7

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 (69) hide show
  1. package/assets/rich-video-placeholder.svg +20 -0
  2. package/components/TemplatePreview/_templatePreview.scss +14 -0
  3. package/components/TemplatePreview/index.js +83 -3
  4. package/components/TemplatePreview/messages.js +8 -0
  5. package/index.js +0 -5
  6. package/package.json +4 -4
  7. package/services/getSchema.js +0 -3
  8. package/v2Components/BeeEditor/index.js +263 -0
  9. package/v2Components/BeeEditor/index.scss +11 -0
  10. package/v2Components/BeeEditor/messages.js +71 -0
  11. package/v2Components/BeeEditor/tests/index.test.js +10 -0
  12. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +151 -151
  13. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +33 -33
  14. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/tests/index.test.js +10 -10
  15. package/v2Components/TemplatePreview/_templatePreview.scss +14 -0
  16. package/v2Components/TemplatePreview/assets/images/androidPushMessage.svg +44 -44
  17. package/v2Components/TemplatePreview/assets/images/home-screen-android.svg +21 -21
  18. package/v2Components/TemplatePreview/assets/images/home-screen-ios.svg +16 -16
  19. package/v2Components/TemplatePreview/assets/images/iPhonePushMessage.svg +134 -134
  20. package/v2Components/TemplatePreview/assets/images/mobile.svg +23 -23
  21. package/v2Components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -22
  22. package/v2Components/TemplatePreview/assets/images/user-icon.svg +18 -18
  23. package/v2Components/TemplatePreview/assets/images/wechat-home-screen-android.svg +21 -21
  24. package/v2Components/TemplatePreview/assets/images/wechat-mobile.svg +77 -77
  25. package/v2Components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -20
  26. package/v2Components/TemplatePreview/index.js +81 -2
  27. package/v2Components/TemplatePreview/messages.js +8 -0
  28. package/v2Components/TemplatePreview/tests/index.test.js +10 -10
  29. package/v2Containers/CreativesContainer/SlideBoxContent.js +11 -0
  30. package/v2Containers/CreativesContainer/actions.js +27 -27
  31. package/v2Containers/CreativesContainer/constants.js +17 -17
  32. package/v2Containers/CreativesContainer/index.scss +44 -44
  33. package/v2Containers/CreativesContainer/messages.js +305 -305
  34. package/v2Containers/CreativesContainer/reducer.js +29 -29
  35. package/v2Containers/CreativesContainer/sagas.js +11 -11
  36. package/v2Containers/CreativesContainer/selectors.js +30 -30
  37. package/v2Containers/CreativesContainer/tests/actions.test.js +18 -18
  38. package/v2Containers/CreativesContainer/tests/index.test.js +10 -10
  39. package/v2Containers/CreativesContainer/tests/reducer.test.js +9 -9
  40. package/v2Containers/CreativesContainer/tests/sagas.test.js +15 -15
  41. package/v2Containers/CreativesContainer/tests/selectors.test.js +10 -10
  42. package/v2Containers/Line/Container/ImageMap/index.js +2 -1
  43. package/v2Containers/Line/Container/Video/constants.js +10 -0
  44. package/v2Containers/Line/Container/Video/index.js +767 -0
  45. package/v2Containers/Line/Container/Video/messages.js +142 -0
  46. package/v2Containers/Line/Container/Video/style.js +61 -0
  47. package/v2Containers/Line/Container/Wrapper/index.js +2 -0
  48. package/v2Containers/Line/Container/Wrapper/messages.js +4 -0
  49. package/v2Containers/Line/Container/Wrapper/utils.js +8 -3
  50. package/v2Containers/Line/Container/constants.js +2 -0
  51. package/v2Containers/Line/Container/index.js +109 -2
  52. package/v2Containers/Line/Container/messages.js +4 -0
  53. package/v2Containers/Templates/index.js +15 -1
  54. package/v2Containers/Templates/messages.js +4 -0
  55. package/v2Containers/Templates/tests/actions.test.js +18 -18
  56. package/v2Containers/Templates/tests/index.test.js +10 -10
  57. package/v2Containers/Templates/tests/reducer.test.js +9 -9
  58. package/v2Containers/Templates/tests/sagas.test.js +15 -15
  59. package/v2Containers/Templates/tests/selectors.test.js +10 -10
  60. package/v2Containers/TemplatesV2/TemplatesV2.style.js +29 -29
  61. package/v2Containers/TemplatesV2/actions.js +16 -16
  62. package/v2Containers/TemplatesV2/constants.js +10 -10
  63. package/v2Containers/TemplatesV2/messages.js +61 -61
  64. package/v2Containers/TemplatesV2/selectors.js +25 -25
  65. package/v2Containers/TemplatesV2/tests/actions.test.js +18 -18
  66. package/v2Containers/TemplatesV2/tests/index.test.js +10 -10
  67. package/v2Containers/TemplatesV2/tests/reducer.test.js +9 -9
  68. package/v2Containers/TemplatesV2/tests/sagas.test.js +15 -15
  69. package/v2Containers/TemplatesV2/tests/selectors.test.js +10 -10
@@ -1,20 +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>
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>
@@ -21,10 +21,11 @@ const smsMobileAndroid = require('./assets/images/sms_mobile_android.svg');
21
21
  const lineMobileAndroid = require('../../assets/line.png');
22
22
  const lineImgPlaceholder = require('../../assets/line-image-placeholder.svg');
23
23
  const lineStickerPlaceholder = require('../../assets/smiley-placeholder.svg');
24
+ const lineVideoPlaceholder = require('../../assets/rich-video-placeholder.svg');
24
25
  const androidPushMessagePhone = require('./assets/images/androidPushMessage.svg');
25
26
  const iPhonePushMessagePhone = require('./assets/images/iPhonePushMessage.svg');
26
- import { CAP_COLOR_03, CAP_WHITE, FONT_COLOR_01, CAP_G08 } from '@capillarytech/cap-ui-library/styled/variables';
27
- import { TEMPLATE, IMAGE_CAROUSEL, IMAGE, STICKER, TEXT, IMAGE_MAP } from '../../v2Containers/Line/Container/constants';
27
+ import { CAP_COLOR_03, CAP_WHITE, FONT_COLOR_01, CAP_G08, CAP_G06 } from '@capillarytech/cap-ui-library/styled/variables';
28
+ import { TEMPLATE, IMAGE_CAROUSEL, IMAGE, STICKER, TEXT, IMAGE_MAP, VIDEO } from '../../v2Containers/Line/Container/constants';
28
29
 
29
30
  class TemplatePreview extends React.Component { // eslint-disable-line react/prefer-stateless-function
30
31
  onPreviewContentClicked = (channel) => {
@@ -175,6 +176,76 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
175
176
  });
176
177
  }
177
178
 
179
+ const getVideoContent = ({
180
+ video,
181
+ actionUrl,
182
+ sectionStyle,
183
+ }) => (
184
+ <div
185
+ className="message-pop align-left"
186
+ style={{
187
+ ...sectionStyle,
188
+ minHeight: 184,
189
+ display: 'flex',
190
+ justifyContent: 'center',
191
+ alignItems: 'center',
192
+ backgroundColor: !video ? 'transparent' : CAP_G06,
193
+ marginTop: 0,
194
+ }}
195
+ key={video}
196
+ >
197
+ {
198
+ video
199
+ ? (
200
+ <>
201
+ <video width="126" style={{ opacity: 0.5 }}>
202
+ <source src={video} type="video/mp4" />
203
+ </video>
204
+ <div
205
+ style={{
206
+ position: 'absolute',
207
+ display: 'flex',
208
+ flexDirection: 'column',
209
+ }}
210
+ >
211
+ <CapButton
212
+ className="preview-video-btn"
213
+ type="flat"
214
+ >
215
+ <CapIcon type="play"/>
216
+ <FormattedMessage {...messages.playVideo} />
217
+ </CapButton>
218
+ {
219
+ actionUrl
220
+ ? (
221
+ <CapButton
222
+ className="preview-video-btn"
223
+ type="flat"
224
+ >
225
+ <CapIcon type="reply" style={{ fontSize: 18 }}/>
226
+ <FormattedMessage {...messages.showDetails} />
227
+ </CapButton>
228
+ )
229
+ : null
230
+ }
231
+ </div>
232
+ </>
233
+ )
234
+ : (
235
+ <CapImage
236
+ src={lineVideoPlaceholder}
237
+ alt="brand-name"
238
+ rest={{
239
+ style: {
240
+ width: 126,
241
+ marginBottom: 5,
242
+ },
243
+ }}
244
+ />
245
+ )
246
+ }
247
+ </div>
248
+ );
178
249
 
179
250
  return (
180
251
  <CapRow>
@@ -346,6 +417,8 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
346
417
  stickerUrl: lineStickerPlaceholder,
347
418
  },
348
419
  imageCarousel = [lineImgPlaceholder],
420
+ video,
421
+ actionUrl,
349
422
  } = item || {};
350
423
  const sectionStyle = {
351
424
  background: CAP_WHITE,
@@ -393,7 +466,13 @@ class TemplatePreview extends React.Component { // eslint-disable-line react/pre
393
466
  </div>
394
467
  );
395
468
  }
469
+ if (type === VIDEO) {
470
+ return getVideoContent({ video, actionUrl, sectionStyle });
471
+ }
396
472
  if ((type === IMAGE_MAP && baseUrl)) {
473
+ if (video) {
474
+ return getVideoContent({ video, actionUrl, sectionStyle });
475
+ }
397
476
  return (
398
477
  <div
399
478
  className="message-pop align-left"
@@ -66,4 +66,12 @@ export default defineMessages({
66
66
  id: 'creatives.componentsV2.TemplatePreview.textMessageCharacter',
67
67
  defaultMessage: 'characters',
68
68
  },
69
+ playVideo: {
70
+ id: 'creatives.componentsV2.TemplatePreview.playVideo',
71
+ defaultMessage: 'Play',
72
+ },
73
+ showDetails: {
74
+ id: 'creatives.componentsV2.TemplatePreview.showDetails',
75
+ defaultMessage: 'Show details',
76
+ },
69
77
  });
@@ -1,10 +1,10 @@
1
- // import React from 'react';
2
- // import { shallow } from 'enzyme';
3
-
4
- // import TemplatePreview from '../index';
5
-
6
- describe('<TemplatePreview />', () => {
7
- it('Expect to have unit tests specified', () => {
8
- expect(true).toEqual(false);
9
- });
10
- });
1
+ // import React from 'react';
2
+ // import { shallow } from 'enzyme';
3
+
4
+ // import TemplatePreview from '../index';
5
+
6
+ describe('<TemplatePreview />', () => {
7
+ it('Expect to have unit tests specified', () => {
8
+ expect(true).toEqual(false);
9
+ });
10
+ });
@@ -176,6 +176,12 @@ function SlideBoxContent(props) {
176
176
  stickerId,
177
177
  packageId,
178
178
  baseUrl,
179
+ video: {
180
+ originalContentUrl,
181
+ externalLink: {
182
+ linkUri,
183
+ } = {},
184
+ } = {},
179
185
  template,
180
186
  }) => {
181
187
  let previewContent = {};
@@ -188,6 +194,8 @@ function SlideBoxContent(props) {
188
194
  packageId,
189
195
  };
190
196
  previewContent.baseUrl = baseUrl;
197
+ previewContent.video = originalContentUrl;
198
+ previewContent.actionUrl = linkUri;
191
199
  previewContent.imageCarousel = get(template, 'columns', [{}]).map(({ imageUrl, action: { label: actionLabel } = {} }) => ({ imageUrl, actionLabel }) );
192
200
 
193
201
  const getType = () => {
@@ -206,6 +214,9 @@ function SlideBoxContent(props) {
206
214
  if (template) {
207
215
  return 'image_carousel';
208
216
  }
217
+ if (video) {
218
+ return 'video';
219
+ }
209
220
  };
210
221
  previewContent.type = getType();
211
222
  return previewContent;
@@ -1,27 +1,27 @@
1
- /*
2
- *
3
- * CreativesContainer actions
4
- *
5
- */
6
-
7
- import {
8
- DEFAULT_ACTION,
9
- HIDE_CONTAINER_LOADER,
10
- SHOW_CONTANER_LOADER,
11
- } from './constants';
12
-
13
- export function defaultAction() {
14
- return {
15
- type: DEFAULT_ACTION,
16
- };
17
- }
18
- export function showCreativesContainerLoader() {
19
- return {
20
- type: SHOW_CONTANER_LOADER,
21
- };
22
- }
23
- export function hideCreativesContanerLoader() {
24
- return {
25
- type: HIDE_CONTAINER_LOADER,
26
- };
27
- }
1
+ /*
2
+ *
3
+ * CreativesContainer actions
4
+ *
5
+ */
6
+
7
+ import {
8
+ DEFAULT_ACTION,
9
+ HIDE_CONTAINER_LOADER,
10
+ SHOW_CONTANER_LOADER,
11
+ } from './constants';
12
+
13
+ export function defaultAction() {
14
+ return {
15
+ type: DEFAULT_ACTION,
16
+ };
17
+ }
18
+ export function showCreativesContainerLoader() {
19
+ return {
20
+ type: SHOW_CONTANER_LOADER,
21
+ };
22
+ }
23
+ export function hideCreativesContanerLoader() {
24
+ return {
25
+ type: HIDE_CONTAINER_LOADER,
26
+ };
27
+ }
@@ -1,17 +1,17 @@
1
- /*
2
- *
3
- * CreativesContainer constants
4
- *
5
- */
6
-
7
- export const DEFAULT_ACTION = 'app/CreativesContainer/DEFAULT_ACTION';
8
- export const EMAIL = "EMAIL";
9
- export const SMS = "SMS";
10
- export const EBILL = "EBILL";
11
- export const LINE = "LINE";
12
- export const CALL_TASK = "CALL_TASK";
13
- export const MOBILE_PUSH = "MOBILEPUSH";
14
- export const WECHAT = "WECHAT";
15
- export const FACEBOOK = "FACEBOOK";
16
- export const SHOW_CONTANER_LOADER = "app/CreativesContainer/SHOW_CONTANER_LOADER";
17
- export const HIDE_CONTAINER_LOADER = "app/CreativesContainer/HIDE_CONTAINER_LOADER";
1
+ /*
2
+ *
3
+ * CreativesContainer constants
4
+ *
5
+ */
6
+
7
+ export const DEFAULT_ACTION = 'app/CreativesContainer/DEFAULT_ACTION';
8
+ export const EMAIL = "EMAIL";
9
+ export const SMS = "SMS";
10
+ export const EBILL = "EBILL";
11
+ export const LINE = "LINE";
12
+ export const CALL_TASK = "CALL_TASK";
13
+ export const MOBILE_PUSH = "MOBILEPUSH";
14
+ export const WECHAT = "WECHAT";
15
+ export const FACEBOOK = "FACEBOOK";
16
+ export const SHOW_CONTANER_LOADER = "app/CreativesContainer/SHOW_CONTANER_LOADER";
17
+ export const HIDE_CONTAINER_LOADER = "app/CreativesContainer/HIDE_CONTAINER_LOADER";
@@ -1,45 +1,45 @@
1
- @import '~@capillarytech/cap-ui-library/styles/_variables.scss';
2
-
3
- $classPrefix: add-creatives-section;
4
-
5
- .#{$classPrefix} {
6
- &.creatives-library-mode{
7
- .sms-create-container, .sms-email-container{
8
- .ant-tabs-top-bar{
9
- display: none;
10
- }
11
- }
12
- }
13
- .#{$classPrefix}-footer {
14
- position: absolute;
15
- bottom: 0;
16
- left: 1px;
17
- padding: 0 12px;
18
- display: flex;
19
- align-items: center;
20
- height: 48px;
21
- border-top: 1px solid $CAP_G07;
22
-
23
- &.with-creative {
24
- width: 100%;
25
- }
26
- }
27
- .wechat-steps {
28
- width: 40% !important;
29
- left: 20%;
30
- position: relative;
31
- .ant-steps-item-title::after {
32
- top: 8px;
33
- }
34
- .ant-steps-item-content {
35
- vertical-align: middle;
36
- padding-top: 4px;
37
- }
38
- }
39
- }
40
-
41
- .map-template-create {
42
- .slidebox-header div:first-child {
43
- width: 100%;
44
- }
1
+ @import '~@capillarytech/cap-ui-library/styles/_variables.scss';
2
+
3
+ $classPrefix: add-creatives-section;
4
+
5
+ .#{$classPrefix} {
6
+ &.creatives-library-mode{
7
+ .sms-create-container, .sms-email-container{
8
+ .ant-tabs-top-bar{
9
+ display: none;
10
+ }
11
+ }
12
+ }
13
+ .#{$classPrefix}-footer {
14
+ position: absolute;
15
+ bottom: 0;
16
+ left: 1px;
17
+ padding: 0 12px;
18
+ display: flex;
19
+ align-items: center;
20
+ height: 48px;
21
+ border-top: 1px solid $CAP_G07;
22
+
23
+ &.with-creative {
24
+ width: 100%;
25
+ }
26
+ }
27
+ .wechat-steps {
28
+ width: 40% !important;
29
+ left: 20%;
30
+ position: relative;
31
+ .ant-steps-item-title::after {
32
+ top: 8px;
33
+ }
34
+ .ant-steps-item-content {
35
+ vertical-align: middle;
36
+ padding-top: 4px;
37
+ }
38
+ }
39
+ }
40
+
41
+ .map-template-create {
42
+ .slidebox-header div:first-child {
43
+ width: 100%;
44
+ }
45
45
  }