@capillarytech/creatives-library 6.9.5 → 6.9.8

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 (78) hide show
  1. package/components/CapTagList/index.js +1 -1
  2. package/components/Edmeditor/index.js +1 -1
  3. package/components/FormBuilder/index.js +0 -1
  4. package/containers/TagList/index.js +3 -3
  5. package/index.html +3 -0
  6. package/package.json +2 -1
  7. package/services/api.js +16 -1
  8. package/v2Components/BeeEditor/index.js +278 -0
  9. package/v2Components/BeeEditor/index.scss +11 -0
  10. package/v2Components/BeeEditor/messages.js +47 -0
  11. package/v2Components/BeeEditor/tests/index.test.js +10 -0
  12. package/v2Components/CapTagList/index.js +55 -26
  13. package/v2Components/CmsTemplatesComponent/index.js +4 -4
  14. package/v2Components/Edmeditor/index.js +1 -1
  15. package/v2Components/EmailPreview/_emailPreview.scss +2 -2
  16. package/v2Components/FormBuilder/index.js +79 -43
  17. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +151 -151
  18. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +33 -33
  19. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/tests/index.test.js +10 -10
  20. package/v2Components/TemplatePreview/assets/images/androidPushMessage.svg +44 -44
  21. package/v2Components/TemplatePreview/assets/images/home-screen-android.svg +21 -21
  22. package/v2Components/TemplatePreview/assets/images/home-screen-ios.svg +16 -16
  23. package/v2Components/TemplatePreview/assets/images/iPhonePushMessage.svg +134 -134
  24. package/v2Components/TemplatePreview/assets/images/mobile.svg +23 -23
  25. package/v2Components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -22
  26. package/v2Components/TemplatePreview/assets/images/user-icon.svg +18 -18
  27. package/v2Components/TemplatePreview/assets/images/wechat-home-screen-android.svg +21 -21
  28. package/v2Components/TemplatePreview/assets/images/wechat-mobile.svg +77 -77
  29. package/v2Components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -20
  30. package/v2Components/TemplatePreview/tests/index.test.js +10 -10
  31. package/v2Containers/App/constants.js +1 -0
  32. package/v2Containers/CreativesContainer/SlideBoxFooter.js +51 -51
  33. package/v2Containers/CreativesContainer/actions.js +27 -27
  34. package/v2Containers/CreativesContainer/constants.js +17 -17
  35. package/v2Containers/CreativesContainer/index.js +7 -2
  36. package/v2Containers/CreativesContainer/index.scss +44 -44
  37. package/v2Containers/CreativesContainer/messages.js +305 -305
  38. package/v2Containers/CreativesContainer/reducer.js +29 -29
  39. package/v2Containers/CreativesContainer/sagas.js +11 -11
  40. package/v2Containers/CreativesContainer/selectors.js +30 -30
  41. package/v2Containers/CreativesContainer/tests/actions.test.js +18 -18
  42. package/v2Containers/CreativesContainer/tests/index.test.js +10 -10
  43. package/v2Containers/CreativesContainer/tests/reducer.test.js +9 -9
  44. package/v2Containers/CreativesContainer/tests/sagas.test.js +15 -15
  45. package/v2Containers/CreativesContainer/tests/selectors.test.js +10 -10
  46. package/v2Containers/Email/constants.js +1 -0
  47. package/v2Containers/Email/index.js +170 -116
  48. package/v2Containers/Email/initialSchema.js +18 -3
  49. package/v2Containers/Email/sagas.js +2 -2
  50. package/v2Containers/Email/selectors.js +5 -0
  51. package/v2Containers/EmailWrapper/index.js +19 -3
  52. package/v2Containers/Line/Container/ImageCarousel/Content.js +2 -2
  53. package/v2Containers/Line/Container/ImageCarousel/constants.js +1 -1
  54. package/v2Containers/Line/Container/ImageCarousel/index.js +6 -3
  55. package/v2Containers/Line/Container/_lineCreate.scss +6 -0
  56. package/v2Containers/TagList/index.js +9 -2
  57. package/v2Containers/Templates/actions.js +122 -117
  58. package/v2Containers/Templates/constants.js +49 -47
  59. package/v2Containers/Templates/index.js +36 -20
  60. package/v2Containers/Templates/messages.js +8 -0
  61. package/v2Containers/Templates/reducer.js +153 -145
  62. package/v2Containers/Templates/sagas.js +179 -179
  63. package/v2Containers/Templates/selectors.js +19 -1
  64. package/v2Containers/Templates/tests/actions.test.js +18 -18
  65. package/v2Containers/Templates/tests/index.test.js +10 -10
  66. package/v2Containers/Templates/tests/reducer.test.js +9 -9
  67. package/v2Containers/Templates/tests/sagas.test.js +15 -15
  68. package/v2Containers/Templates/tests/selectors.test.js +10 -10
  69. package/v2Containers/TemplatesV2/TemplatesV2.style.js +29 -29
  70. package/v2Containers/TemplatesV2/actions.js +16 -16
  71. package/v2Containers/TemplatesV2/constants.js +10 -10
  72. package/v2Containers/TemplatesV2/messages.js +61 -61
  73. package/v2Containers/TemplatesV2/selectors.js +25 -25
  74. package/v2Containers/TemplatesV2/tests/actions.test.js +18 -18
  75. package/v2Containers/TemplatesV2/tests/index.test.js +10 -10
  76. package/v2Containers/TemplatesV2/tests/reducer.test.js +9 -9
  77. package/v2Containers/TemplatesV2/tests/sagas.test.js +15 -15
  78. package/v2Containers/TemplatesV2/tests/selectors.test.js +10 -10
@@ -11,7 +11,7 @@ import PropTypes from 'prop-types';
11
11
  import React from 'react';
12
12
  import _ from 'lodash';
13
13
  import { Tabs, Table, Modal} from 'antd';
14
- import { CapDrawer, CapButton, CapInput, CapPopover, CapImage, CapCheckbox, CapRadio, CapSelect, CapTable, CapRow, CapColumn, CapNotification, CapUploader, CapHeading, CapIcon} from '@capillarytech/cap-ui-library';
14
+ import { CapSpin, CapDrawer, CapButton, CapInput, CapPopover, CapImage, CapCheckbox, CapRadio, CapSelect, CapTable, CapRow, CapColumn, CapNotification, CapUploader, CapHeading, CapIcon} from '@capillarytech/cap-ui-library';
15
15
  import { injectIntl, intlShape, FormattedMessage } from 'react-intl';
16
16
  import LabelHOC from '@capillarytech/cap-ui-library/assets/HOCs/ComponentWithLabelHOC';
17
17
  import { CAP_SPACE_12, CAP_SPACE_08, FONT_COLOR_05, FONT_COLOR_04 } from '@capillarytech/cap-ui-library/styled/variables';
@@ -21,6 +21,7 @@ import SlideBox from '../SlideBox';
21
21
  import CardGrid from '../CardGrid';
22
22
  import CKEditor from "../Ckeditor/";
23
23
  import EDMEditor from "../Edmeditor";
24
+ import BeeEditor from '../BeeEditor';
24
25
  import CustomPopOver from '../CustomPopOver';
25
26
  import messages from './messages';
26
27
  import './_formBuilder.scss';
@@ -275,7 +276,6 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
275
276
  onEdit() {
276
277
 
277
278
  }
278
-
279
279
  getModal = () => {
280
280
  let modal;
281
281
  if (this.state.modal) {
@@ -925,7 +925,10 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
925
925
  for (var i = 0; i < data.selectedLanguages.length; i+= 1) {
926
926
  const currentLang = data.selectedLanguages[i];
927
927
  const content = data[currentLang]['template-content'];
928
- const tagValidationResponse = this.validateTags(content, tags, injectedTags);
928
+ if (!content) {
929
+ return false;
930
+ }
931
+ const tagValidationResponse = this.validateTags(content, tags, injectedTags);;
929
932
  if (errorData[index][currentLang] === undefined) {
930
933
  errorData[index][currentLang] = {};
931
934
  }
@@ -2953,24 +2956,28 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2953
2956
  if (channel === 'EMAIL') {
2954
2957
  moduleFilterEnabled = this.props.isFullMode;
2955
2958
  }
2956
- columns.push(
2957
- <CapColumn key={`input-${val.id}`} offset={val.offset} span={val.width ? val.width : ''} style={val.style ? val.style : {marginBottom: '16px'}}>
2958
- <TagList
2959
- key={`input-${val.id}`}
2960
- moduleFilterEnabled={moduleFilterEnabled}
2961
- label={val.label ? val.label : ''}
2962
- onTagSelect={(data) => this.callChildEvent(data, val, 'onTagSelect')}
2963
- onContextChange={this.props.onContextChange}
2964
- location={this.props.location}
2965
- tags={this.props.tags ? this.props.tags : []}
2966
- injectedTags={this.props.injectedTags ? this.props.injectedTags : {}}
2967
- className={val.className ? val.className : ''}
2968
- id={val.id}
2969
- userLocale={this.props.userLocale}
2970
- selectedOfferDetails={this.props.selectedOfferDetails}
2971
- />
2972
- </CapColumn>
2973
- );
2959
+ const langIndex = 0;
2960
+ const currentLang = (!_.isEmpty(this.state.formData) && !_.isEmpty(this.state.formData[`${this.state.currentTab - 1}`]) && !_.isEmpty(this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages) && this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages[langIndex]) ? this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages[langIndex] : this.props.baseLanguage;
2961
+ if (!(_.get(this.state, `formData[${this.state.currentTab - 1}][${currentLang}].is_drag_drop`, false)) || channel !== 'EMAIL') {
2962
+ columns.push(
2963
+ <CapColumn key={`input-${val.id}`} offset={val.offset} span={val.width ? val.width : ''} style={val.style ? val.style : {marginBottom: '16px'}}>
2964
+ <TagList
2965
+ key={`input-${val.id}`}
2966
+ moduleFilterEnabled={moduleFilterEnabled}
2967
+ label={val.label ? val.label : ''}
2968
+ onTagSelect={(data) => this.callChildEvent(data, val, 'onTagSelect')}
2969
+ onContextChange={this.props.onContextChange}
2970
+ location={this.props.location}
2971
+ tags={this.props.tags ? this.props.tags : []}
2972
+ injectedTags={this.props.injectedTags ? this.props.injectedTags : {}}
2973
+ className={val.className ? val.className : ''}
2974
+ id={val.id}
2975
+ userLocale={this.props.userLocale}
2976
+ selectedOfferDetails={this.props.selectedOfferDetails}
2977
+ />
2978
+ </CapColumn>
2979
+ );
2980
+ }
2974
2981
  break;
2975
2982
  case "button":
2976
2983
  if (styling === 'semantic' && val.metaType === 'submit-button') {
@@ -3191,38 +3198,54 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3191
3198
  }
3192
3199
  }
3193
3200
  break;
3194
- case "edmeditor": {
3195
- // if (!this.state.formData[`${this.state.currentTab - 1}`]) {
3196
- // return true;
3197
- // }
3201
+ case "BEEeditor": {
3198
3202
  let langTab = 1;
3199
- if (val.id.match(/edmeditor/g)) {
3203
+ if (val.id.match(/BEEeditor/g)) {
3200
3204
  if (val.id.length > 9 && val.id.charAt(9)) {
3201
3205
  langTab = val.id.charAt(9);
3202
3206
  }
3203
3207
  }
3204
- const supportedLanguages = this.state.formData[this.state.currentTab - 1].selectedLanguages;
3205
- // let langIndex = 0;
3206
- // if (val.id.indexOf('edmeditor') > -1 && val.id !== 'edmeditorsrc') {
3207
- // const test = val.id.replace('src', '');
3208
- // langIndex = parseInt(test.replace('edmeditor', ''), 10) - 1;
3209
- // }
3210
- // const currentLang = (!_.isEmpty(this.state.formData) && !_.isEmpty(this.state.formData[`${this.state.currentTab - 1}`]) && !_.isEmpty(this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages) && this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages[langIndex]) ? this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages[langIndex] : this.props.baseLanguage;
3208
+ const { currentTab, formData } = this.state;
3209
+ const supportedLanguages = formData[currentTab - 1].selectedLanguages;
3211
3210
  const currentLang = supportedLanguages[langTab - 1];
3212
- const edmSrc = this.state.formData[`${this.state.currentTab - 1}`][currentLang] && this.state.formData[`${this.state.currentTab - 1}`][currentLang][`edmeditor${this.state.currentTab > 1 ? this.state.currentTab : ''}src`];
3213
-
3214
3211
 
3215
- if (!edmSrc) {
3212
+ let beeJson = '',
3213
+ beeToken = '',
3214
+ uuid = '';
3215
+ const data = formData[`${currentTab - 1}`][currentLang];
3216
+ if (data) {
3217
+ beeJson = data[`BEEeditor${currentTab > 1 ? currentTab : ''}json`];
3218
+ beeToken = data[`BEEeditor${currentTab > 1 ? currentTab : ''}token`];
3219
+ uuid = this.props.uuid;
3220
+ }
3221
+ if (!beeJson || !beeToken) {
3216
3222
  return false;
3217
3223
  }
3218
-
3219
-
3224
+ console.log('beeJson', beeJson);
3225
+ let isModuleFilterEnabled = _.get(this.props.location, 'query.type', '') !== 'embedded';
3226
+ const schemaChannel = _.get(this.props.schema, 'channel', "");
3227
+ if (schemaChannel === 'EMAIL') {
3228
+ isModuleFilterEnabled = this.props.isFullMode;
3229
+ }
3220
3230
  columns.push(
3221
3231
  <CapColumn style={val.colStyle ? val.colStyle : {}} span={val.width}>
3222
- <EDMEditor
3232
+ <BeeEditor
3233
+ uid={uuid}
3234
+ tokenData={beeToken}
3223
3235
  id={val.id}
3224
- getEditorInstanse={this.getEditorInstanse}
3225
- edmSrc={edmSrc}
3236
+ beeJson={beeJson}
3237
+ showTagsPopover={this.showTagsPopover}
3238
+ location={this.props.location}
3239
+ label={val.label || ''}
3240
+ className={val.className || ''}
3241
+ userLocale={this.props.userLocale}
3242
+ selectedOfferDetails={this.props.selectedOfferDetails}
3243
+ tags={this.props.tags || []}
3244
+ injectedTags={this.props.injectedTags ? this.props.injectedTags : {}}
3245
+ saveBeeInstance={this.props.saveBeeInstance}
3246
+ saveBeeData={this.props.saveBeeData}
3247
+ onContextChange={this.props.onContextChange}
3248
+ moduleFilterEnabled={isModuleFilterEnabled}
3226
3249
  />
3227
3250
  </CapColumn>
3228
3251
  );
@@ -3263,7 +3286,9 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3263
3286
  }
3264
3287
  </CapRow>
3265
3288
  );
3266
- fields.push(row);
3289
+ if (columns.length) {
3290
+ fields.push(row);
3291
+ }
3267
3292
  });
3268
3293
 
3269
3294
  _.forEach(section.actionFields, (field) => {
@@ -3303,8 +3328,18 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3303
3328
  }
3304
3329
  </CapRow>
3305
3330
  );
3306
- fields.push(row);
3331
+ if (columns.length) {
3332
+ fields.push(row);
3333
+ }
3334
+
3307
3335
  });
3336
+ if(!this.props.isEmailLoading && !fields.length) {
3337
+ return (
3338
+ <div style={{ textAlign: 'center' }}>
3339
+ <CapSpin spinning />
3340
+ </div>
3341
+ );
3342
+ }
3308
3343
  return fields;
3309
3344
  }
3310
3345
 
@@ -3538,6 +3573,7 @@ FormBuilder.propTypes = {
3538
3573
  setDrawerVisibility: PropTypes.bool,
3539
3574
  capDrawerContent: PropTypes.array,
3540
3575
  isFullMode: PropTypes.bool,
3576
+
3541
3577
  };
3542
3578
 
3543
3579
  export default injectIntl(FormBuilder);
@@ -1,152 +1,152 @@
1
- @import '~@capillarytech/cap-ui-library/styles/_variables.scss';
2
-
3
- .shell-lock-screen-android .main-screen-preview .wechatMsgContainer{
4
- position: absolute;
5
- left: 53.5%;
6
- top:28%;
7
- background: white;
8
- width: 19.5%;
9
- text-align: left;
10
- height: fit-content;
11
- border-radius: 0.285rem;
12
- }
13
-
14
- .shell-lock-screen-android .lock-screen-preview{
15
- .wechat-android-sender-id{
16
- position: absolute;
17
- top: 46%;
18
- font-size: 10px;
19
- left: 28%;
20
- }
21
- .wechat-android-title{
22
- position: absolute;
23
- top: 49%;
24
- font-size: 10px;
25
- left: 28%;
26
- color: #5e6c84;
27
- }
28
- .wechat-android-action-buttons{
29
- position: absolute;
30
- left: 28%;
31
- top: 53%;
32
- font-size: 10px;
33
- color: #3861ca;
34
- font-weight: 500;
35
- }
36
- .wechat-ios-sender-id{
37
- position: absolute;
38
- top: 44%;
39
- font-size: 10px;
40
- left: 28.5%;
41
- }
42
- .wechat-ios-title{
43
- position: absolute;
44
- top: 47%;
45
- font-size: 10px;
46
- left: 28.5%;
47
- color: #5e6c84;
48
- }
49
- .wechat-ios-action-reply{
50
- position: absolute;
51
- left: 35%;
52
- top: 59%;
53
- font-size: 12px;
54
- color: #3861ca;
55
- font-weight: 500;
56
- }
57
- .wechat-ios-action-cancel{
58
- position: absolute;
59
- left: 34.5%;
60
- top: 66%;
61
- font-size: 12px;
62
- color: #3861ca;
63
- font-weight: 500;
64
- }
65
- }
66
-
67
- .wechatMsgContainer{
68
- position: absolute;
69
- left: 30%;
70
- top: 20%;
71
- background: white;
72
- width: 40%;
73
- text-align: left;
74
- height: fit-content;
75
- border-radius: $CAP_SPACE_04;
76
- .richmedia-template {
77
- .richmedia-image-container {
78
- width: 100%;
79
- height: 102px;
80
- position: relative;
81
- img {
82
- border-top-left-radius: 4px;
83
- border-top-right-radius: 4px;
84
- }
85
- }
86
- .name-container-with-abstract {
87
- padding: $CAP_SPACE_12;
88
- height: 68px;
89
- }
90
- .name-container {
91
- position: absolute;
92
- bottom: 0px;
93
- height: 44px;
94
- padding-top: 16px;
95
- padding-left: 12px;
96
- color: $CAP_WHITE;
97
- opacity: 0.7;
98
- width: 100%;
99
- background-image: linear-gradient(to top,black 0% ,transparent 100%);
100
- }
101
- .additional-richmedia-container {
102
- display: flex;
103
- justify-content: space-between;
104
- margin: 8px;
105
- padding-bottom: 8px;
106
- img {
107
- border-radius: 4px;
108
- }
109
- }
110
- .additional-richmedia-container:not(:last-child) {
111
- border-bottom: 1px solid #dfe2e7;
112
- }
113
- div {
114
- text-overflow: ellipsis;
115
- overflow: hidden;
116
- white-space: nowrap;
117
- }
118
- }
119
- }
120
- .wechatMsgContainerOutbound{
121
- position: absolute;
122
- left: 35%;
123
- top: 20%;
124
- background: white;
125
- width: 30%;
126
- text-align: left;
127
- }
128
- .wechatMsgContainerCardLayout {
129
- position: absolute;
130
- left: 20%;
131
- top: 20%;
132
- background: white;
133
- width: 60%;
134
- text-align: left;
135
- }
136
- .overflow-handle-preview {
137
- overflow-y: auto;
138
- }
139
- .overflow-handle-preview-outbound {
140
- height: 330px;
141
- overflow-y: auto;
142
- }
143
- .preview-overflow-wrap-fields {
144
- text-overflow: ellipsis;
145
- overflow: hidden;
146
- overflow-wrap: break-word;
147
- display: -webkit-box !important;
148
- -webkit-box-orient: vertical;
149
- -webkit-line-clamp: 2;
150
- text-align: left;
151
- width: 200px;
1
+ @import '~@capillarytech/cap-ui-library/styles/_variables.scss';
2
+
3
+ .shell-lock-screen-android .main-screen-preview .wechatMsgContainer{
4
+ position: absolute;
5
+ left: 53.5%;
6
+ top:28%;
7
+ background: white;
8
+ width: 19.5%;
9
+ text-align: left;
10
+ height: fit-content;
11
+ border-radius: 0.285rem;
12
+ }
13
+
14
+ .shell-lock-screen-android .lock-screen-preview{
15
+ .wechat-android-sender-id{
16
+ position: absolute;
17
+ top: 46%;
18
+ font-size: 10px;
19
+ left: 28%;
20
+ }
21
+ .wechat-android-title{
22
+ position: absolute;
23
+ top: 49%;
24
+ font-size: 10px;
25
+ left: 28%;
26
+ color: #5e6c84;
27
+ }
28
+ .wechat-android-action-buttons{
29
+ position: absolute;
30
+ left: 28%;
31
+ top: 53%;
32
+ font-size: 10px;
33
+ color: #3861ca;
34
+ font-weight: 500;
35
+ }
36
+ .wechat-ios-sender-id{
37
+ position: absolute;
38
+ top: 44%;
39
+ font-size: 10px;
40
+ left: 28.5%;
41
+ }
42
+ .wechat-ios-title{
43
+ position: absolute;
44
+ top: 47%;
45
+ font-size: 10px;
46
+ left: 28.5%;
47
+ color: #5e6c84;
48
+ }
49
+ .wechat-ios-action-reply{
50
+ position: absolute;
51
+ left: 35%;
52
+ top: 59%;
53
+ font-size: 12px;
54
+ color: #3861ca;
55
+ font-weight: 500;
56
+ }
57
+ .wechat-ios-action-cancel{
58
+ position: absolute;
59
+ left: 34.5%;
60
+ top: 66%;
61
+ font-size: 12px;
62
+ color: #3861ca;
63
+ font-weight: 500;
64
+ }
65
+ }
66
+
67
+ .wechatMsgContainer{
68
+ position: absolute;
69
+ left: 30%;
70
+ top: 20%;
71
+ background: white;
72
+ width: 40%;
73
+ text-align: left;
74
+ height: fit-content;
75
+ border-radius: $CAP_SPACE_04;
76
+ .richmedia-template {
77
+ .richmedia-image-container {
78
+ width: 100%;
79
+ height: 102px;
80
+ position: relative;
81
+ img {
82
+ border-top-left-radius: 4px;
83
+ border-top-right-radius: 4px;
84
+ }
85
+ }
86
+ .name-container-with-abstract {
87
+ padding: $CAP_SPACE_12;
88
+ height: 68px;
89
+ }
90
+ .name-container {
91
+ position: absolute;
92
+ bottom: 0px;
93
+ height: 44px;
94
+ padding-top: 16px;
95
+ padding-left: 12px;
96
+ color: $CAP_WHITE;
97
+ opacity: 0.7;
98
+ width: 100%;
99
+ background-image: linear-gradient(to top,black 0% ,transparent 100%);
100
+ }
101
+ .additional-richmedia-container {
102
+ display: flex;
103
+ justify-content: space-between;
104
+ margin: 8px;
105
+ padding-bottom: 8px;
106
+ img {
107
+ border-radius: 4px;
108
+ }
109
+ }
110
+ .additional-richmedia-container:not(:last-child) {
111
+ border-bottom: 1px solid #dfe2e7;
112
+ }
113
+ div {
114
+ text-overflow: ellipsis;
115
+ overflow: hidden;
116
+ white-space: nowrap;
117
+ }
118
+ }
119
+ }
120
+ .wechatMsgContainerOutbound{
121
+ position: absolute;
122
+ left: 35%;
123
+ top: 20%;
124
+ background: white;
125
+ width: 30%;
126
+ text-align: left;
127
+ }
128
+ .wechatMsgContainerCardLayout {
129
+ position: absolute;
130
+ left: 20%;
131
+ top: 20%;
132
+ background: white;
133
+ width: 60%;
134
+ text-align: left;
135
+ }
136
+ .overflow-handle-preview {
137
+ overflow-y: auto;
138
+ }
139
+ .overflow-handle-preview-outbound {
140
+ height: 330px;
141
+ overflow-y: auto;
142
+ }
143
+ .preview-overflow-wrap-fields {
144
+ text-overflow: ellipsis;
145
+ overflow: hidden;
146
+ overflow-wrap: break-word;
147
+ display: -webkit-box !important;
148
+ -webkit-box-orient: vertical;
149
+ -webkit-line-clamp: 2;
150
+ text-align: left;
151
+ width: 200px;
152
152
  }
@@ -1,33 +1,33 @@
1
- /*
2
- * WechatRichmediaTemplatePreview Messages
3
- *
4
- * This contains all the text for the WechatRichmediaTemplatePreview component.
5
- */
6
- import { defineMessages } from 'react-intl';
7
-
8
- export default defineMessages({
9
- header: {
10
- id: 'creatives.components.WechatRichmediaTemplatePreview.header',
11
- defaultMessage: 'This is the WechatRichmediaTemplatePreview component !',
12
- },
13
- select: {
14
- id: 'creatives.components.WechatRichmediaTemplatePreview.select',
15
- defaultMessage: 'Select',
16
- },
17
- edit: {
18
- id: 'creatives.components.WechatRichmediaTemplatePreview.edit',
19
- defaultMessage: 'Edit',
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
- });
1
+ /*
2
+ * WechatRichmediaTemplatePreview Messages
3
+ *
4
+ * This contains all the text for the WechatRichmediaTemplatePreview component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ header: {
10
+ id: 'creatives.components.WechatRichmediaTemplatePreview.header',
11
+ defaultMessage: 'This is the WechatRichmediaTemplatePreview component !',
12
+ },
13
+ select: {
14
+ id: 'creatives.components.WechatRichmediaTemplatePreview.select',
15
+ defaultMessage: 'Select',
16
+ },
17
+ edit: {
18
+ id: 'creatives.components.WechatRichmediaTemplatePreview.edit',
19
+ defaultMessage: 'Edit',
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
+ });
@@ -1,10 +1,10 @@
1
- // import React from 'react';
2
- // import { shallow } from 'enzyme';
3
-
4
- // import WechatRichmediaTemplatePreview from '../index';
5
-
6
- describe('<WechatRichmediaTemplatePreview />', () => {
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 WechatRichmediaTemplatePreview from '../index';
5
+
6
+ describe('<WechatRichmediaTemplatePreview />', () => {
7
+ it('Expect to have unit tests specified', () => {
8
+ expect(true).toEqual(false);
9
+ });
10
+ });