@capillarytech/creatives-library 2.0.24 → 2.0.25
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.
|
@@ -36,7 +36,7 @@ function SlideBoxContent(props) {
|
|
|
36
36
|
query,
|
|
37
37
|
search: '',
|
|
38
38
|
};
|
|
39
|
-
|
|
39
|
+
const isCreateSms = slidBoxContent === 'createTemplate' && channel === constants.SMS;
|
|
40
40
|
let isEditSms = false;
|
|
41
41
|
let isEditEmailWithId = false;
|
|
42
42
|
let isEmailEditWithContent = false;
|
|
@@ -47,7 +47,6 @@ function SlideBoxContent(props) {
|
|
|
47
47
|
if (templateData && channel) {
|
|
48
48
|
channel = templateData.type;// for edit mode with template data
|
|
49
49
|
isEditSms = slidBoxContent === 'editTemplate' && channel === constants.SMS;
|
|
50
|
-
isCreateSms = slidBoxContent === 'createTemplate' && channel === constants.SMS;
|
|
51
50
|
//isEmailCreate = slidBoxContent === 'createTemplate' && channel === constants.EMAIL;
|
|
52
51
|
isEditEmailWithId = slidBoxContent === 'editTemplate' && channel === constants.EMAIL && templateData._id;
|
|
53
52
|
isEmailEditWithContent = slidBoxContent === 'editTemplate' && channel === constants.EMAIL && !templateData._id;
|
|
@@ -16,7 +16,7 @@ import _ from 'lodash';
|
|
|
16
16
|
import { bindActionCreators } from 'redux';
|
|
17
17
|
import { Row, Select, Spin, Dropdown, Col, Breadcrumb, Menu, Modal} from 'antd';
|
|
18
18
|
import { CapPopover, CapSelect } from '@capillarytech/cap-react-ui-library';
|
|
19
|
-
import {CapButton, CapInput} from '@capillarytech/cap-ui-library';
|
|
19
|
+
import {CapButton, CapInput, CapIcon} from '@capillarytech/cap-ui-library';
|
|
20
20
|
import { makeSelectTemplates, makeSelectTemplatesResponse } from './selectors';
|
|
21
21
|
import { makeSelectCreate as makeSelectCreateSms} from '../Sms/Create/selectors';
|
|
22
22
|
import { makeSelectCreate as makeSelectCreateMobilePush } from '../MobilePush/Create/selectors';
|
|
@@ -96,7 +96,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
96
96
|
componentWillMount() {
|
|
97
97
|
if (this.state.channel === '') {
|
|
98
98
|
let channel = '';
|
|
99
|
-
|
|
99
|
+
|
|
100
100
|
switch (this.props.route.name.toLowerCase()) {
|
|
101
101
|
case "sms":
|
|
102
102
|
channel = 'Sms';
|
|
@@ -151,11 +151,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
151
151
|
// this.props.actions.getEdmDefaultTemplates();
|
|
152
152
|
// }
|
|
153
153
|
}
|
|
154
|
-
|
|
154
|
+
|
|
155
155
|
window.addEventListener("message", this.handleFrameTasks);
|
|
156
156
|
}
|
|
157
157
|
componentWillReceiveProps(nextProps) {
|
|
158
|
-
console.log('nextProps templates', nextProps, this.props.Create);
|
|
159
158
|
const params = {
|
|
160
159
|
name: this.state.searchText,
|
|
161
160
|
sortBy: this.state.sortBy,
|
|
@@ -185,7 +184,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
185
184
|
} else if (nextProps.route.name.toLowerCase() === 'line') {
|
|
186
185
|
channel = 'Line';
|
|
187
186
|
}
|
|
188
|
-
//
|
|
187
|
+
//
|
|
189
188
|
this.setState({ channel }, () => {
|
|
190
189
|
if (this.state.channel.toLowerCase() === 'line' || this.state.channel.toLowerCase() === 'sms' || this.state.channel.toLowerCase() === 'email' || this.state.channel.toLowerCase() === 'ebill' || (this.state.channel.toLowerCase() === 'wechat' && !_.isEmpty(nextProps.Templates.selectedWeChatAccount))) {
|
|
191
190
|
if (this.state.channel.toLowerCase() === 'wechat' && !_.isEmpty(nextProps.Templates.selectedWeChatAccount)) {
|
|
@@ -292,14 +291,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
292
291
|
}
|
|
293
292
|
if (!nextProps.Templates.deleteTemplateInProgress && !_.isEqual(nextProps.Templates.deleteTemplateInProgress, this.props.Templates.deleteTemplateInProgress) &&
|
|
294
293
|
nextProps.Templates.deleteResponse) {
|
|
295
|
-
console.log("delete");
|
|
296
294
|
const message = getMessageObject('success', `${this.state.channel.toUpperCase()} ${this.props.intl.formatMessage(messages['Template deleted successfully'])}`, true);
|
|
297
295
|
nextProps.globalActions.addMessageToQueue(message);
|
|
298
296
|
this.getAllTemplates({params, resetPage: true});
|
|
299
297
|
}
|
|
300
298
|
|
|
301
299
|
if (!nextProps.Templates.sendingFile && !_.isEqual(this.props.Templates.sendingFile, nextProps.Templates.sendingFile) && !nextProps.Templates.errorSendingFile) {
|
|
302
|
-
console.log('Got html Content ', nextProps.Templates.selectedEmailLayout);
|
|
303
300
|
const module = this.props.location.query.module ? this.props.location.query.module : 'default';
|
|
304
301
|
const isLanguageSupport = (this.props.location.query.isLanguageSupport) ? this.props.location.query.isLanguageSupport : true;
|
|
305
302
|
const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
|
|
@@ -346,7 +343,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
346
343
|
}
|
|
347
344
|
|
|
348
345
|
componentWillUnmount() {
|
|
349
|
-
console.log('removed listener templates');
|
|
350
346
|
window.removeEventListener("message", this.handleFrameTasks);
|
|
351
347
|
this.props.actions.resetTemplateStoreData();
|
|
352
348
|
this.props.globalActions.clearMetaEntities();
|
|
@@ -354,7 +350,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
354
350
|
}
|
|
355
351
|
|
|
356
352
|
onAccountSelect(value, option) {
|
|
357
|
-
console.log('Selected Account ', value, option);
|
|
358
353
|
this.setState({selectedAccount: value}, () => {
|
|
359
354
|
const params = {
|
|
360
355
|
name: this.state.searchText,
|
|
@@ -378,7 +373,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
378
373
|
let queryParams = params;
|
|
379
374
|
let page = this.state.page;
|
|
380
375
|
|
|
381
|
-
|
|
376
|
+
|
|
382
377
|
if (resetTemplates) {
|
|
383
378
|
queryParams.name = this.state.searchText;
|
|
384
379
|
queryParams.sortBy = this.state.sortBy;
|
|
@@ -434,11 +429,10 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
434
429
|
}
|
|
435
430
|
locale = this.getMappedLocale(locale);
|
|
436
431
|
//locale = 'zh';
|
|
437
|
-
|
|
432
|
+
|
|
438
433
|
moment.locale(locale);
|
|
439
434
|
};
|
|
440
435
|
getCurrentWindow(e) {
|
|
441
|
-
console.log('in sms templates', e);
|
|
442
436
|
const response = {
|
|
443
437
|
action: e.action,
|
|
444
438
|
value: 'templates',
|
|
@@ -457,7 +451,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
457
451
|
return creativesMode;
|
|
458
452
|
}
|
|
459
453
|
skipTemplateSelection = (e) => {
|
|
460
|
-
console.log("vvv", e);
|
|
461
454
|
const type = this.props.location.query.type;
|
|
462
455
|
const module = (type === 'embedded') ? this.props.location.query.module : 'default';
|
|
463
456
|
let routeParams = {};
|
|
@@ -492,12 +485,9 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
492
485
|
}
|
|
493
486
|
|
|
494
487
|
handleMenuAction = (item, key) => {
|
|
495
|
-
console.log('Menu Clicked ', item.key, key);
|
|
496
488
|
if (item.key.toLowerCase() === 'uploadfile') {
|
|
497
489
|
document.getElementById('filename').click();
|
|
498
|
-
console.log('Upload File');
|
|
499
490
|
} else if (item.key.toLowerCase() === 'useeditor') {
|
|
500
|
-
console.log('Use Editor');
|
|
501
491
|
this.toggleEdmEmailTemplateSelection();
|
|
502
492
|
}
|
|
503
493
|
};
|
|
@@ -535,13 +525,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
535
525
|
const module = this.props.location.query.module ? this.props.location.query.module : 'default';
|
|
536
526
|
const isLanguageSupport = (this.props.location.query.isLanguageSupport) ? this.props.location.query.isLanguageSupport : true;
|
|
537
527
|
const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
|
|
538
|
-
|
|
528
|
+
|
|
539
529
|
if (supportedZipFormats.indexOf(fileExtension.toLowerCase()) !== -1) {
|
|
540
|
-
console.log('Zip Format got');
|
|
541
530
|
this.props.actions.handleZipUpload(files[0]);
|
|
542
531
|
document.getElementById("filename").value = "";
|
|
543
532
|
} else if (fileExtension === 'html' || fileExtension === 'htm') {
|
|
544
|
-
console.log('html Format got');
|
|
545
533
|
const reader = new FileReader();
|
|
546
534
|
reader.onload = () => {
|
|
547
535
|
const text = reader.result;
|
|
@@ -566,7 +554,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
566
554
|
|
|
567
555
|
mapWechatTemplate() {
|
|
568
556
|
// const index = _.findIndex(this.props.Templates.weCRMtemplates, {template_id: key});
|
|
569
|
-
//
|
|
557
|
+
//
|
|
570
558
|
const type = this.props.location.query.type;
|
|
571
559
|
this.setState({routeParams: {
|
|
572
560
|
pathname: `/wechat/create`,
|
|
@@ -666,17 +654,15 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
666
654
|
return result;
|
|
667
655
|
}
|
|
668
656
|
startLoading(ifEdit) {
|
|
669
|
-
console.log('startLoading', ifEdit);
|
|
670
657
|
if (ifEdit) {
|
|
671
658
|
this.setState({loading: true});
|
|
672
659
|
}
|
|
673
660
|
}
|
|
674
661
|
|
|
675
662
|
startTemplateCreation(data) {
|
|
676
|
-
console.log('startTemplateCreation');
|
|
677
663
|
if (data.edit) {
|
|
678
664
|
const ifUnicode = checkUnicode(data.content);
|
|
679
|
-
|
|
665
|
+
|
|
680
666
|
const content = data.content;
|
|
681
667
|
const tempData = {
|
|
682
668
|
'sms-editor': content,
|
|
@@ -691,10 +677,8 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
691
677
|
}
|
|
692
678
|
|
|
693
679
|
handleFrameTasks = (e) => {
|
|
694
|
-
console.log('data listened to is 222', e.data, e);
|
|
695
680
|
const type = e.data;
|
|
696
681
|
if (typeof type === 'object') {
|
|
697
|
-
console.log('received something', type);
|
|
698
682
|
const action = type.action;
|
|
699
683
|
switch (action) {
|
|
700
684
|
case "startTemplateCreation":
|
|
@@ -718,11 +702,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
718
702
|
this.getFormData(e);
|
|
719
703
|
break;
|
|
720
704
|
case "startTemplateCreation":
|
|
721
|
-
|
|
705
|
+
|
|
722
706
|
//this.getFormData(e);
|
|
723
707
|
break;
|
|
724
708
|
case "validateContent":
|
|
725
|
-
|
|
709
|
+
|
|
726
710
|
this.validateContent(e);
|
|
727
711
|
break;
|
|
728
712
|
default:
|
|
@@ -753,7 +737,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
753
737
|
}
|
|
754
738
|
|
|
755
739
|
searchTemplate(data) {
|
|
756
|
-
console.log('searching template', data);
|
|
757
740
|
this.setState({searchText: data}, () => {
|
|
758
741
|
const params = {
|
|
759
742
|
name: this.state.searchText,
|
|
@@ -805,14 +788,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
805
788
|
if (this.state.channel.toLowerCase() === 'ebill' || this.state.channel.toLowerCase() === 'email') {
|
|
806
789
|
this.toggleEmailPreview();
|
|
807
790
|
} else {
|
|
808
|
-
console.log('toggle Preview ', this.state.previewOpen);
|
|
809
791
|
this.setState( (prevState) => ({
|
|
810
792
|
previewOpen: !prevState.previewOpen}));
|
|
811
793
|
}
|
|
812
794
|
}
|
|
813
795
|
|
|
814
796
|
toggleEdmEmailTemplateSelection = () => {
|
|
815
|
-
console.log('toggle Selection ', this.state.showEdmEmailTemplates);
|
|
816
797
|
this.setState( (prevState) => ({
|
|
817
798
|
showEdmEmailTemplates: !prevState.showEdmEmailTemplates}), () => {
|
|
818
799
|
this.props.actions.getEdmDefaultTemplates();
|
|
@@ -820,13 +801,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
820
801
|
};
|
|
821
802
|
|
|
822
803
|
deleteTemplate(template) {
|
|
823
|
-
console.log('deleting template', template);
|
|
824
804
|
this.props.actions.deleteTemplate(this.state.channel.toUpperCase(), template._id);
|
|
825
805
|
this.setState({actionTemplate: {}});
|
|
826
806
|
}
|
|
827
807
|
|
|
828
808
|
duplicateTemplate(template) {
|
|
829
|
-
console.log('dup template', template);
|
|
830
809
|
const duplicateObj = _.cloneDeep(template);
|
|
831
810
|
duplicateObj.name = `Copy of ${template.name} ${moment().format('MM-DD-YYYY hh:mma')}`;
|
|
832
811
|
delete duplicateObj._id;
|
|
@@ -845,7 +824,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
845
824
|
}
|
|
846
825
|
|
|
847
826
|
handleOnHoverItem(isHovering, id) {
|
|
848
|
-
console.log('parent handle hover', isHovering, id);
|
|
849
827
|
if (isHovering) {
|
|
850
828
|
this.setState({hoveredItem: id});
|
|
851
829
|
} else {
|
|
@@ -854,7 +832,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
854
832
|
}
|
|
855
833
|
|
|
856
834
|
handleOnItemClick(isClicked, id) {
|
|
857
|
-
console.log('parent handle click', isClicked, id);
|
|
858
835
|
this.setState({clickedItem: id});
|
|
859
836
|
}
|
|
860
837
|
|
|
@@ -866,7 +843,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
866
843
|
const isLanguageSupport = (this.props.location.query.isLanguageSupport) ? this.props.location.query.isLanguageSupport : true;
|
|
867
844
|
const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
|
|
868
845
|
let getQuery = '';
|
|
869
|
-
|
|
846
|
+
|
|
870
847
|
this.props.actions.setEdmTemplate(data);
|
|
871
848
|
if (this.state.channel && this.state.channel.toLowerCase() === 'email') {
|
|
872
849
|
getQuery = (type === 'embedded') ? {type: 'embedded', module, isLanguageSupport, isEdmSupport} : {module, isLanguageSupport, isEdmSupport};
|
|
@@ -885,7 +862,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
885
862
|
};
|
|
886
863
|
|
|
887
864
|
handleEditClick(e, id, modeType) {
|
|
888
|
-
console.log('inside props****', this.props);
|
|
889
865
|
if (modeType && modeType !== undefined) {
|
|
890
866
|
this.setState({modeType});
|
|
891
867
|
}
|
|
@@ -894,9 +870,9 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
894
870
|
const isLanguageSupport = (this.props.location.query.isLanguageSupport) ? this.props.location.query.isLanguageSupport : false;
|
|
895
871
|
const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
|
|
896
872
|
let getQuery = "";
|
|
897
|
-
|
|
873
|
+
|
|
898
874
|
e.stopPropagation();
|
|
899
|
-
|
|
875
|
+
|
|
900
876
|
this.props.actions.resetTemplateData();
|
|
901
877
|
let pathName = `/${this.state.channel === 'wechat' ? 'wechat' : 'sms'}/edit/${id}`;
|
|
902
878
|
if (this.state.channel.toLowerCase() === 'mobilepush') {
|
|
@@ -942,7 +918,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
942
918
|
templateInfo.content = template.versions.base;
|
|
943
919
|
templateInfo.appName = this.props.Templates.selectedWeChatAccount.name;
|
|
944
920
|
} else if (this.state.channel.toLowerCase() === "email") {
|
|
945
|
-
console.log('Test ', template);
|
|
946
921
|
this.props.actions.getTemplateDetails(template._id);
|
|
947
922
|
} else if (this.state.channel.toLowerCase() === 'ebill') {
|
|
948
923
|
this.props.actions.getTemplateDetails(template._id);
|
|
@@ -1016,26 +991,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1016
991
|
content,
|
|
1017
992
|
}
|
|
1018
993
|
);
|
|
1019
|
-
}
|
|
1020
|
-
items.push({
|
|
1021
|
-
id: 'blankTemplate',
|
|
1022
|
-
content: <div className={this.state.clickedItem === 'blankTemplate' ? 'sms-text-blurred' : ''}>
|
|
1023
|
-
<div>
|
|
1024
|
-
<div
|
|
1025
|
-
style={{textAlign: 'center', lineHeight: '260px'}}
|
|
1026
|
-
className="sms-text">{this.props.intl.formatMessage(messages.blankTemplate)}</div>
|
|
1027
|
-
</div>
|
|
1028
|
-
{this.state.clickedItem === 'blankTemplate' && <CapButton
|
|
1029
|
-
onClick={() => { this.createTemplate({key: 'text'}); }} key="text" className="edit-button" type="secondary">Text</CapButton>}
|
|
1030
|
-
{this.state.clickedItem === 'blankTemplate' && <CapButton
|
|
1031
|
-
onClick={() => { this.createTemplate({key: 'image'}); }} key="image" className="preview-button" type="secondary">image</CapButton>}
|
|
1032
|
-
</div>,
|
|
1033
|
-
});
|
|
1034
|
-
}*/
|
|
994
|
+
}
|
|
1035
995
|
data.map( (template) => {
|
|
1036
|
-
//
|
|
996
|
+
//
|
|
1037
997
|
const temp = {};
|
|
1038
|
-
//
|
|
998
|
+
//
|
|
1039
999
|
const updateDateTime = (moment().format('DD-MM-YYYY') === moment(template.updatedAt).format('DD-MM-YYYY')) ? moment(template.updatedAt).format('hh:mma') : moment(template.updatedAt).format('DD MMM YYYY');
|
|
1040
1000
|
let content = '';
|
|
1041
1001
|
temp.id = template._id;
|
|
@@ -1051,12 +1011,12 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1051
1011
|
{template._id === this.state.hoveredItem ? <CapButton onClick={() => this.handlePreviewClick(template)} className="preview-button" type="cancel">{this.props.intl.formatMessage(messages.previewButton)}</CapButton> : ''}
|
|
1052
1012
|
</div>);
|
|
1053
1013
|
} else if (this.state.channel.toLowerCase() === 'email' || this.state.channel.toLowerCase() === 'ebill') {
|
|
1054
|
-
//
|
|
1055
|
-
|
|
1014
|
+
//
|
|
1015
|
+
|
|
1056
1016
|
const imgSrc = template && template.versions && template.versions.base ? template.versions.base.preview_http_url : '';
|
|
1057
1017
|
const ifPreviewGenerated = template && template.versions && template.versions.base ? template.versions.base.isPreviewGenerated : 0;
|
|
1058
1018
|
content = <img src={imgSrc || ''} alt={this.props.intl.formatMessage(messages.previewGenerateText)} width="100%" height="100%"/>;
|
|
1059
|
-
|
|
1019
|
+
|
|
1060
1020
|
temp.content = (
|
|
1061
1021
|
<div
|
|
1062
1022
|
className="sms-template-content">
|
|
@@ -1224,7 +1184,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1224
1184
|
}
|
|
1225
1185
|
|
|
1226
1186
|
render() {
|
|
1227
|
-
console.log('templates props', this.props);
|
|
1228
1187
|
let pageHeaderText = '';
|
|
1229
1188
|
const moduleName = this.props.location.query.module;
|
|
1230
1189
|
if (this.props.location.query.type !== 'embedded') {
|
|
@@ -1242,37 +1201,13 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1242
1201
|
pageHeaderText = this.props.intl.formatMessage(messages.lineHeader);
|
|
1243
1202
|
}
|
|
1244
1203
|
}
|
|
1245
|
-
// const options = [
|
|
1246
|
-
// {
|
|
1247
|
-
// value: "Most Recent",
|
|
1248
|
-
// label: this.props.intl.formatMessage(messages.mostRecentOption),
|
|
1249
|
-
// },
|
|
1250
|
-
// {
|
|
1251
|
-
// value: "Alphabetically",
|
|
1252
|
-
// label: this.props.intl.formatMessage(messages.alphabeticallyOption),
|
|
1253
|
-
// },
|
|
1254
|
-
// ];
|
|
1255
|
-
// const typeOptions = [
|
|
1256
|
-
// {
|
|
1257
|
-
// value: "All",
|
|
1258
|
-
// label: "All",
|
|
1259
|
-
// },
|
|
1260
|
-
// {
|
|
1261
|
-
// label: "Text",
|
|
1262
|
-
// value: 'Text',
|
|
1263
|
-
// },
|
|
1264
|
-
// {
|
|
1265
|
-
// label: "Image",
|
|
1266
|
-
// value: "Image",
|
|
1267
|
-
// },
|
|
1268
|
-
// ];
|
|
1269
1204
|
const filterContent = (
|
|
1270
1205
|
<div className="action-container">
|
|
1271
1206
|
<CapInput
|
|
1272
1207
|
className="search-text"
|
|
1273
1208
|
style={{width: '210px'}}
|
|
1274
1209
|
placeholder={this.props.intl.formatMessage(messages.searchText)}
|
|
1275
|
-
prefix={<
|
|
1210
|
+
prefix={<CapIcon type="search" size="s"/>}
|
|
1276
1211
|
value={this.state.searchText}
|
|
1277
1212
|
onChange={(e) => this.searchTemplate(e.target.value)}
|
|
1278
1213
|
/>
|