@capillarytech/creatives-library 2.0.54 → 2.0.57
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.
- package/components/CallTaskPreview/_callTaskPreview.scss +17 -0
- package/components/CallTaskPreview/images/Footer.png +0 -0
- package/components/CallTaskPreview/images/Header.png +0 -0
- package/components/CallTaskPreview/index.js +37 -0
- package/components/CallTaskPreview/messages.js +13 -0
- package/components/CallTaskPreview/tests/index.test.js +15 -0
- package/components/CapTagList/index.js +1 -1
- package/components/EmailPreviewV2/index.js +3 -1
- package/components/FormBuilder/index.js +10 -7
- package/components/NewCallTask/_newCallTask.scss +9 -0
- package/components/NewCallTask/index.js +152 -0
- package/components/NewCallTask/messages.js +29 -0
- package/components/NewCallTask/tests/index.test.js +10 -0
- package/containers/CallTask/_callTask.scss +5 -0
- package/containers/CallTask/actions.js +15 -0
- package/containers/CallTask/constants.js +7 -0
- package/containers/CallTask/index.js +141 -0
- package/containers/CallTask/messages.js +21 -0
- package/containers/CallTask/reducer.js +23 -0
- package/containers/CallTask/sagas.js +11 -0
- package/containers/CallTask/selectors.js +25 -0
- package/containers/CallTask/tests/actions.test.js +18 -0
- package/containers/CallTask/tests/index.test.js +10 -0
- package/containers/CallTask/tests/reducer.test.js +9 -0
- package/containers/CallTask/tests/sagas.test.js +15 -0
- package/containers/CallTask/tests/selectors.test.js +10 -0
- package/containers/CreativesContainer/SlideBoxContent.js +66 -3
- package/containers/CreativesContainer/SlideBoxFooter.js +3 -3
- package/containers/CreativesContainer/constants.js +2 -0
- package/containers/CreativesContainer/index.js +105 -21
- package/containers/Email/_email.scss +0 -1
- package/containers/Email/index.js +2 -0
- package/containers/Line/Edit/_lineEdit.scss +0 -4
- package/containers/MobilePush/Create/_mobilePushCreate.scss +0 -4
- package/containers/MobilePush/Create/index.js +4 -2
- package/containers/MobilePush/Edit/_mobilePushCreate.scss +0 -4
- package/containers/MobilePush/Edit/index.js +11 -8
- package/containers/MobilePush/Edit/selectors.js +2 -1
- package/containers/MobilepushWrapper/index.js +92 -0
- package/containers/MobilepushWrapper/messages.js +25 -0
- package/containers/MobilepushWrapper/tests/index.test.js +10 -0
- package/containers/Sms/Create/_smsCreate.scss +0 -1
- package/containers/Sms/Edit/actions.js +6 -0
- package/containers/Sms/Edit/constants.js +1 -0
- package/containers/Sms/Edit/index.js +1 -0
- package/containers/Sms/Edit/reducer.js +2 -0
- package/containers/TagList/index.js +3 -3
- package/containers/Templates/index.js +35 -17
- package/containers/TemplatesV2/index.js +22 -11
- package/index.js +7 -0
- package/package.json +2 -2
- package/routes.js +7 -2
- package/styles/containers/layout/_layoutPage.scss +1 -2
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/*
|
|
2
|
+
*
|
|
3
|
+
* MobilepushWrapper
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
import PropTypes from 'prop-types';
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import { connect } from 'react-redux';
|
|
9
|
+
import { FormattedMessage } from 'react-intl';
|
|
10
|
+
import {CapRadioCard, CapHeader} from '@capillarytech/cap-ui-library';
|
|
11
|
+
import {isEmpty} from 'lodash';
|
|
12
|
+
import MobilepushCreate from '../MobilePush/Create';
|
|
13
|
+
import messages from './messages';
|
|
14
|
+
|
|
15
|
+
export class MobilepushWrapper extends React.Component { // eslint-disable-line react/prefer-stateless-function
|
|
16
|
+
constructor(props) {
|
|
17
|
+
super(props);
|
|
18
|
+
this.modes = [
|
|
19
|
+
{
|
|
20
|
+
title: <FormattedMessage {...messages.text}/>,
|
|
21
|
+
content: <FormattedMessage {...messages.text}/>,
|
|
22
|
+
value: 'text',
|
|
23
|
+
// onClick: () => {
|
|
24
|
+
// this.emailUploader.current.click();
|
|
25
|
+
// },
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
title: <FormattedMessage {...messages.image}/>,
|
|
29
|
+
content: <FormattedMessage {...messages.image}/>,
|
|
30
|
+
value: 'image',
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
onChange = (e) => {
|
|
35
|
+
this.props.onMobilepushModeChange( e.target.value );
|
|
36
|
+
};
|
|
37
|
+
render() {
|
|
38
|
+
const {mobilePushCreateMode, step, getFormData, setIsLoadingContent, isGetFormData, query} = this.props;
|
|
39
|
+
const isShowMobilepushCreate = !isEmpty(mobilePushCreateMode);
|
|
40
|
+
return (
|
|
41
|
+
<div>
|
|
42
|
+
{step === "modeSelection" ?
|
|
43
|
+
<div>
|
|
44
|
+
<CapHeader size="small" title={<FormattedMessage {...messages.createMode}/>}/>
|
|
45
|
+
<CapRadioCard
|
|
46
|
+
panes={this.modes}
|
|
47
|
+
onChange={this.onChange}
|
|
48
|
+
selected={mobilePushCreateMode}
|
|
49
|
+
/>
|
|
50
|
+
</div>
|
|
51
|
+
:
|
|
52
|
+
<div>
|
|
53
|
+
{isShowMobilepushCreate && <MobilepushCreate
|
|
54
|
+
getFormLibraryData={getFormData}
|
|
55
|
+
setIsLoadingContent={setIsLoadingContent}
|
|
56
|
+
location={{
|
|
57
|
+
pathname: `/mobilepush/create/${mobilePushCreateMode}`,
|
|
58
|
+
query,
|
|
59
|
+
}}
|
|
60
|
+
params={{mode: mobilePushCreateMode}}
|
|
61
|
+
isFullMode={false}
|
|
62
|
+
isGetFormData={isGetFormData}
|
|
63
|
+
route={{ name: 'mobilepush' }}
|
|
64
|
+
/>
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
}
|
|
68
|
+
</div>
|
|
69
|
+
}
|
|
70
|
+
</div>
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
MobilepushWrapper.propTypes = {
|
|
76
|
+
onMobilepushModeChange: PropTypes.func,
|
|
77
|
+
mobilePushCreateMode: PropTypes.string,
|
|
78
|
+
step: PropTypes.string,
|
|
79
|
+
getFormData: PropTypes.string,
|
|
80
|
+
setIsLoadingContent: PropTypes.func,
|
|
81
|
+
isGetFormData: PropTypes.bool,
|
|
82
|
+
query: PropTypes.object,
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
function mapDispatchToProps(dispatch) {
|
|
87
|
+
return {
|
|
88
|
+
dispatch,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export default connect(null, mapDispatchToProps)(MobilepushWrapper);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* MobilepushWrapper Messages
|
|
3
|
+
*
|
|
4
|
+
* This contains all the text for the MobilepushWrapper component.
|
|
5
|
+
*/
|
|
6
|
+
import { defineMessages } from 'react-intl';
|
|
7
|
+
|
|
8
|
+
export default defineMessages({
|
|
9
|
+
header: {
|
|
10
|
+
id: 'app.containers.MobilepushWrapper.header',
|
|
11
|
+
defaultMessage: 'This is MobilepushWrapper container !',
|
|
12
|
+
},
|
|
13
|
+
image: {
|
|
14
|
+
id: 'app.containers.MobilepushWrapper.image',
|
|
15
|
+
defaultMessage: 'Image content',
|
|
16
|
+
},
|
|
17
|
+
text: {
|
|
18
|
+
id: 'app.containers.MobilepushWrapper.text',
|
|
19
|
+
defaultMessage: 'Text content',
|
|
20
|
+
},
|
|
21
|
+
createMode: {
|
|
22
|
+
id: 'app.containers.MobilepushWrapper.createMode',
|
|
23
|
+
defaultMessage: 'Which type of content you want to create?',
|
|
24
|
+
},
|
|
25
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// import React from 'react';
|
|
2
|
+
// import { shallow } from 'enzyme';
|
|
3
|
+
|
|
4
|
+
// import { MobilepushWrapper } from '../index';
|
|
5
|
+
|
|
6
|
+
describe('<MobilepushWrapper />', () => {
|
|
7
|
+
it('Expect to have unit tests specified', () => {
|
|
8
|
+
expect(true).toEqual(false);
|
|
9
|
+
});
|
|
10
|
+
});
|
|
@@ -15,3 +15,4 @@ export const EDIT_TEMPLATE_SUCCESS = 'app/containers/Sms/Edit/EDIT_TEMPLATE_SUCC
|
|
|
15
15
|
export const EDIT_TEMPLATE_FAILURE = 'app/containers/Sms/Edit/EDIT_TEMPLATE_FAILURE';
|
|
16
16
|
|
|
17
17
|
export const CLEAR_EDIT_RESPONSE_REQUEST = 'app/containers/Sms/Create/CLEAR_EDIT_RESPONSE_REQUEST';
|
|
18
|
+
export const RESET_EDIT_TEMPLATE = 'app/containers/Sms/Create/RESET_EDIT_TEMPLATE';
|
|
@@ -194,6 +194,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
|
|
|
194
194
|
if (this.props.setIsLoadingContent) {
|
|
195
195
|
this.props.setIsLoadingContent(true); // setting isLoading of CreativesContainer so that slidebox foot can be hidden till content is loaded
|
|
196
196
|
}
|
|
197
|
+
this.props.actions.resetEditTemplate();
|
|
197
198
|
window.removeEventListener("message", this.handleFrameTasks);
|
|
198
199
|
}
|
|
199
200
|
|
|
@@ -42,6 +42,8 @@ function editReducer(state = initialState, action) {
|
|
|
42
42
|
return state.set('getTemplateDetailsInProgress', false);
|
|
43
43
|
case types.CLEAR_EDIT_RESPONSE_REQUEST:
|
|
44
44
|
return state.set('editResponse', {});
|
|
45
|
+
case types.RESET_EDIT_TEMPLATE:
|
|
46
|
+
return state.set('templateDetails', {});
|
|
45
47
|
default:
|
|
46
48
|
return state;
|
|
47
49
|
}
|
|
@@ -82,9 +82,9 @@ export class TagList extends React.Component { // eslint-disable-line react/pref
|
|
|
82
82
|
console.log('Inside ', tag.label);
|
|
83
83
|
mainTags[tag.value] = {
|
|
84
84
|
'tag-header': true,
|
|
85
|
-
name: tag.label[this.props.userLocale] ? tag.label[this.props.userLocale] : tag.label.en,
|
|
86
|
-
desc: tag.desc ? tag.desc : tag.label.en,
|
|
87
|
-
subtags: tag.subtags,
|
|
85
|
+
"name": tag.label[this.props.userLocale] ? tag.label[this.props.userLocale] : tag.label.en,
|
|
86
|
+
"desc": tag.desc ? tag.desc : tag.label.en,
|
|
87
|
+
"subtags": tag.subtags,
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
90
|
});
|
|
@@ -8,13 +8,13 @@ import PropTypes from 'prop-types';
|
|
|
8
8
|
|
|
9
9
|
import React from 'react';
|
|
10
10
|
import { connect } from 'react-redux';
|
|
11
|
-
import {
|
|
11
|
+
import {injectIntl, intlShape } from 'react-intl';
|
|
12
12
|
import { createStructuredSelector } from 'reselect';
|
|
13
13
|
import moment from "moment";
|
|
14
14
|
import _ from 'lodash';
|
|
15
15
|
import { bindActionCreators } from 'redux';
|
|
16
|
-
import { Row,
|
|
17
|
-
import {CapButton, CapInput, CapIcon, CapSelect, CapPopover, CapSpin, CapCustomCard} from '@capillarytech/cap-ui-library';
|
|
16
|
+
import { Row, Dropdown, Menu, Modal} from 'antd';
|
|
17
|
+
import {CapButton, CapInput, CapIcon, CapSelect, CapPopover, CapSpin, CapCustomCard, CapRow, CapColumn} from '@capillarytech/cap-ui-library';
|
|
18
18
|
import { makeSelectTemplates, makeSelectTemplatesResponse } from './selectors';
|
|
19
19
|
import { makeSelectCreate as makeSelectCreateSms} from '../Sms/Create/selectors';
|
|
20
20
|
import { makeSelectCreate as makeSelectCreateMobilePush } from '../MobilePush/Create/selectors';
|
|
@@ -44,7 +44,6 @@ import Pagination from '../../components/Pagination';
|
|
|
44
44
|
import EmailPreview from '../../components/EmailPreview';
|
|
45
45
|
import CreativesContainer from '../CreativesContainer';
|
|
46
46
|
const MenuItem = Menu.Item;
|
|
47
|
-
const Option = Select.Option;
|
|
48
47
|
const {CapCustomCardList} = CapCustomCard;
|
|
49
48
|
|
|
50
49
|
export class Templates extends React.Component { // eslint-disable-line react/prefer-stateless-function
|
|
@@ -1318,16 +1317,27 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1318
1317
|
if (this.props.location.query.type === 'embedded' && (!this.props.location.query.module || (this.props.location.query.module && this.props.location.query.module !== 'library'))) {
|
|
1319
1318
|
if (this.props.location.query.source_account_id && account.sourceAccountIdentifier === this.props.location.query.source_account_id) {
|
|
1320
1319
|
accountOptions.push(
|
|
1321
|
-
|
|
1320
|
+
{ key: this.state.channel.toUpperCase() === "MOBILEPUSH" ? account.id : account.uuid,
|
|
1321
|
+
label: account.name,
|
|
1322
|
+
value: account.name,
|
|
1323
|
+
}
|
|
1322
1324
|
);
|
|
1323
1325
|
} else if (this.props.location.query.module && (this.state.channel.toUpperCase() === "WECHAT" || this.state.channel.toUpperCase() === "MOBILEPUSH")) {
|
|
1324
1326
|
accountOptions.push(
|
|
1325
|
-
|
|
1327
|
+
{
|
|
1328
|
+
key: this.state.channel.toUpperCase() === "MOBILEPUSH" ? account.id : account.uuid,
|
|
1329
|
+
value: account.name,
|
|
1330
|
+
label: account.name,
|
|
1331
|
+
}
|
|
1326
1332
|
);
|
|
1327
1333
|
}
|
|
1328
1334
|
} else {
|
|
1329
1335
|
accountOptions.push(
|
|
1330
|
-
|
|
1336
|
+
{
|
|
1337
|
+
key: this.state.channel.toUpperCase() === "MOBILEPUSH" ? account.id : account.uuid,
|
|
1338
|
+
value: account.name,
|
|
1339
|
+
label: account.name,
|
|
1340
|
+
}
|
|
1331
1341
|
);
|
|
1332
1342
|
}
|
|
1333
1343
|
}
|
|
@@ -1336,17 +1346,26 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1336
1346
|
const pageHeader = (
|
|
1337
1347
|
<div>
|
|
1338
1348
|
{(this.isEnabledInLibraryModule("showAccountSelection") || (((this.state.channel.toUpperCase() === 'WECHAT' || this.state.channel.toUpperCase() === "MOBILEPUSH") && (this.props.location.query.type !== 'embedded') && !_.isEmpty(this.props.Templates.weCrmAccounts)))) &&
|
|
1339
|
-
<CapSelect
|
|
1340
|
-
|
|
1341
|
-
|
|
1349
|
+
<CapSelect
|
|
1350
|
+
className="selectAccount"
|
|
1351
|
+
onSelect={this.onAccountSelect}
|
|
1352
|
+
value={this.props.Templates.selectedWeChatAccount ? this.props.Templates.selectedWeChatAccount.name : undefined}
|
|
1353
|
+
placeholder={this.props.intl.formatMessage(messages.selectAccount)}
|
|
1354
|
+
options={accountOptions}
|
|
1355
|
+
/>
|
|
1356
|
+
}
|
|
1342
1357
|
</div>
|
|
1343
1358
|
);
|
|
1344
1359
|
const pageHeaderDvs = (
|
|
1345
1360
|
<div>
|
|
1346
1361
|
{((this.state.channel.toUpperCase() === 'WECHAT' || this.state.channel.toUpperCase() === "MOBILEPUSH") && (this.props.location.query.type === 'embedded') && !_.isEmpty(this.props.Templates.weCrmAccounts)) &&
|
|
1347
|
-
<CapSelect
|
|
1348
|
-
|
|
1349
|
-
|
|
1362
|
+
<CapSelect
|
|
1363
|
+
className="selectAccount"
|
|
1364
|
+
onSelect={this.onAccountSelect}
|
|
1365
|
+
value={this.props.Templates.selectedWeChatAccount ? this.props.Templates.selectedWeChatAccount.name : undefined} placeholder={this.props.intl.formatMessage(messages.selectAccount)}
|
|
1366
|
+
options={accountOptions}
|
|
1367
|
+
/>
|
|
1368
|
+
}
|
|
1350
1369
|
</div>
|
|
1351
1370
|
);
|
|
1352
1371
|
let actionButton = '';
|
|
@@ -1481,9 +1500,11 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1481
1500
|
onChange={(e) => this.searchTemplate(e.target.value)}
|
|
1482
1501
|
/>
|
|
1483
1502
|
<div style={{display: "flex", justifyContent: "space-between", alignItems: 'center'}}>
|
|
1503
|
+
{(this.props.location.query.type === 'embedded' ) ? pageHeaderDvs : pageHeader}
|
|
1484
1504
|
<CapButton
|
|
1485
1505
|
type={this.props.isFullMode ? "primary" : "secondary"}
|
|
1486
1506
|
disabled={isLoading}
|
|
1507
|
+
style={{marginLeft: '8px'}}
|
|
1487
1508
|
onClick={(ev) => this.props.isFullMode ? this.createTemplate(ev) : this.handleBlankTemplateAction()} >
|
|
1488
1509
|
{ this.props.intl.formatMessage(messages.createNewActionButton) }
|
|
1489
1510
|
</CapButton>
|
|
@@ -1506,10 +1527,6 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
|
|
|
1506
1527
|
const loadingTip = (this.props.Templates.sendingFile && (this.state.channel.toLowerCase() === 'email' || this.state.channel.toLowerCase() === 'ebill')) ? this.props.intl.formatMessage(messages.uploadingFile) : this.props.intl.formatMessage(messages.gettingAllTemplates);
|
|
1507
1528
|
return (
|
|
1508
1529
|
<div>
|
|
1509
|
-
<Row className="template-header-container">
|
|
1510
|
-
<div className="template-header">{(this.props.location.query.type === 'embedded' ) ? pageHeaderDvs : pageHeader}</div>
|
|
1511
|
-
</Row>
|
|
1512
|
-
|
|
1513
1530
|
<input type="file" id="filename" style={{ display: 'none'}} accept=".zip, .html, .htm" onChange={(event) => this.handleFileUpload(event, {files: event.target.files})} />
|
|
1514
1531
|
|
|
1515
1532
|
|
|
@@ -1612,6 +1629,7 @@ Templates.propTypes = {
|
|
|
1612
1629
|
isFullMode: PropTypes.bool,
|
|
1613
1630
|
renderNewCardGrid: PropTypes.func,
|
|
1614
1631
|
handlePeviewTemplate: PropTypes.func,
|
|
1632
|
+
router: PropTypes.object,
|
|
1615
1633
|
};
|
|
1616
1634
|
|
|
1617
1635
|
const mapStateToProps = createStructuredSelector({
|
|
@@ -22,6 +22,7 @@ import { makeSelectTemplates, makeSelectTemplatesResponse } from '../Templates/s
|
|
|
22
22
|
import messages from './messages';
|
|
23
23
|
import * as actions from './actions';
|
|
24
24
|
import Templates from '../Templates';
|
|
25
|
+
import CallTask from '../CallTask';
|
|
25
26
|
import './_templatesV2.scss';
|
|
26
27
|
|
|
27
28
|
const {CapCustomCardList} = CapCustomCard;
|
|
@@ -52,8 +53,9 @@ export class TemplatesV2 extends React.Component { // eslint-disable-line react/
|
|
|
52
53
|
const deafaultPanes = [
|
|
53
54
|
{content: <div></div>, tab: 'Sms', key: 'sms'},
|
|
54
55
|
{content: <div></div>, tab: 'Email', key: 'email'},
|
|
56
|
+
// {content: <div></div>, tab: 'Call Task', key: 'calltask'},
|
|
55
57
|
// {content: this.getTemplatesComponent('wechat'), tab: 'Wechat', key: 'wechat'},
|
|
56
|
-
|
|
58
|
+
{content: <div></div>, tab: 'Mpush', key: 'mobilepush'},
|
|
57
59
|
];
|
|
58
60
|
const panes = this.setChannelContent(defaultChannel, deafaultPanes);
|
|
59
61
|
this.state = {
|
|
@@ -94,22 +96,27 @@ export class TemplatesV2 extends React.Component { // eslint-disable-line react/
|
|
|
94
96
|
|
|
95
97
|
</div>);
|
|
96
98
|
}
|
|
99
|
+
|
|
100
|
+
getCallTaskComponent = () => <CallTask onCreateNew={this.props.createNew} onCallTaskSubmit={this.props.onCallTaskSubmit}/>
|
|
101
|
+
|
|
97
102
|
getTemplatesComponent(channel) {
|
|
98
103
|
// const templates = this.props.Templates[`${channel}Templates`];
|
|
99
104
|
let query = {};
|
|
100
105
|
if (!this.props.isFullMode) {
|
|
101
106
|
query = {type: 'embedded', module: 'library'};
|
|
102
107
|
}
|
|
103
|
-
return (
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
108
|
+
return (channel === 'calltask' ?
|
|
109
|
+
this.getCallTaskComponent() :
|
|
110
|
+
<Templates
|
|
111
|
+
key={channel}
|
|
112
|
+
location={{pathname: `/${channel}`, search: '', query}}
|
|
113
|
+
route={{name: channel}}
|
|
114
|
+
router={this.props.router}
|
|
115
|
+
isFullMode={this.props.isFullMode}
|
|
116
|
+
createNew={this.props.createNew}
|
|
117
|
+
onSelectTemplate={(id) => this.props.onSelectTemplate(this.selectTemplate(id))}
|
|
118
|
+
renderNewCardGrid={this.getTemplateDataForGrid}
|
|
119
|
+
handlePeviewTemplate={this.props.handlePeviewTemplate}
|
|
113
120
|
/>);
|
|
114
121
|
}
|
|
115
122
|
|
|
@@ -121,6 +128,9 @@ export class TemplatesV2 extends React.Component { // eslint-disable-line react/
|
|
|
121
128
|
if (channel === "mpush") {
|
|
122
129
|
channel = "mobilepush";
|
|
123
130
|
}
|
|
131
|
+
if (channel === 'call task') {
|
|
132
|
+
channel = "calltask";
|
|
133
|
+
}
|
|
124
134
|
pane.content = this.getTemplatesComponent(channel);
|
|
125
135
|
return pane;
|
|
126
136
|
}
|
|
@@ -175,6 +185,7 @@ TemplatesV2.propTypes = {
|
|
|
175
185
|
Templates: PropTypes.object,
|
|
176
186
|
TemplatesList: PropTypes.arrayOf(PropTypes.object),
|
|
177
187
|
handlePeviewTemplate: PropTypes.func,
|
|
188
|
+
onCallTaskSubmit: PropTypes.func,
|
|
178
189
|
intl: intlShape,
|
|
179
190
|
onChannelChange: PropTypes.func,
|
|
180
191
|
};
|
package/index.js
CHANGED
|
@@ -19,6 +19,10 @@ import Email from './containers/Email/index';
|
|
|
19
19
|
import emailReducer from './containers/Email/reducer';
|
|
20
20
|
import emailSaga from './containers/Email/sagas';
|
|
21
21
|
|
|
22
|
+
import CallTask from './containers/CallTask/index';
|
|
23
|
+
import callTaskReducer from './containers/CallTask/reducer';
|
|
24
|
+
import callTaskSaga from './containers/CallTask/sagas';
|
|
25
|
+
|
|
22
26
|
import WeChat from './containers/WeChat/MapTemplates';
|
|
23
27
|
import wechatReduce from './containers/WeChat/MapTemplates/reducer';
|
|
24
28
|
import wechatSaga from './containers/WeChat/MapTemplates/sagas';
|
|
@@ -55,6 +59,7 @@ const TemplatesContainer = {Templates, templateReducer, templateSaga};
|
|
|
55
59
|
const SmsCreateContainer = {SmsCreate, smsCreateReducer, smsCreateSaga};
|
|
56
60
|
const SmsEditContainer = {SmsEdit, smsEditReducer, smsEditSaga};
|
|
57
61
|
const EmailContainer = {Email, emailReducer, emailSaga};
|
|
62
|
+
const CallTaskContainer = {CallTask, callTaskReducer, callTaskSaga};
|
|
58
63
|
const WechatContainer = {WeChat, wechatReduce, wechatSaga};
|
|
59
64
|
const MobilePushCreateContainer = {MobilepushCreate, mobilepushCreateReducer, mobilepushCreateSaga};
|
|
60
65
|
const MobilePushEditContainer = {MobilepushEdit, mobilepushEditReducer, mobilepushEditSaga};
|
|
@@ -68,6 +73,7 @@ export {default as TagListReducer} from './containers/TagList/reducer';
|
|
|
68
73
|
export {default as TemplatePreview} from './components/TemplatePreview';
|
|
69
74
|
export {default as EmailPreview} from './components/EmailPreview';
|
|
70
75
|
export {default as EmailPreviewV2} from './components/EmailPreviewV2';
|
|
76
|
+
export {default as CallTaskPreview} from './components/CallTaskPreview';
|
|
71
77
|
export {default as EmailMobilePreview} from './components/EmailMobilePreview';
|
|
72
78
|
|
|
73
79
|
CreativesContainer.CreativesContainerReducer = CreativesContainerReducer;
|
|
@@ -77,6 +83,7 @@ export { CapContainer,
|
|
|
77
83
|
SmsCreateContainer,
|
|
78
84
|
SmsEditContainer,
|
|
79
85
|
EmailContainer,
|
|
86
|
+
CallTaskContainer,
|
|
80
87
|
WechatContainer,
|
|
81
88
|
Cap,
|
|
82
89
|
Templates,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@capillarytech/creatives-library",
|
|
3
3
|
"author": "meharaj",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.57",
|
|
5
5
|
"description": "Capillary creatives ui",
|
|
6
6
|
"main": "./index.js",
|
|
7
7
|
"module": "./index.es.js",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"license": "LicenseRef-LICENSE",
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@capillarytech/cap-ui-library": "^1.0.
|
|
15
|
+
"@capillarytech/cap-ui-library": "^1.0.96",
|
|
16
16
|
"antd": "^3.15.0",
|
|
17
17
|
"axios": "^0.16.2",
|
|
18
18
|
"babel-polyfill": "6.20.0",
|
package/routes.js
CHANGED
|
@@ -607,21 +607,26 @@ export default function createRoutes(store) {
|
|
|
607
607
|
import('containers/Sms/Edit/reducer'),
|
|
608
608
|
import('containers/Sms/Edit/sagas'),
|
|
609
609
|
import('containers/Email/reducer'),
|
|
610
|
-
import('containers/Email/sagas')
|
|
610
|
+
import('containers/Email/sagas'),
|
|
611
|
+
import('containers/CallTask/reducer'),
|
|
612
|
+
import('containers/CallTask/sagas'),
|
|
613
|
+
]);
|
|
611
614
|
|
|
612
615
|
const renderRoute = loadModule(cb);
|
|
613
616
|
|
|
614
|
-
importModules.then(([reducer, sagas, component, emailContainerSagas, creativesContainerReducer, smsCreateReducer, smsCreateSaga, smsEditReducer, smsEditSaga, emailReducer, emailSaga]) => {
|
|
617
|
+
importModules.then(([reducer, sagas, component, emailContainerSagas, creativesContainerReducer, smsCreateReducer, smsCreateSaga, smsEditReducer, smsEditSaga, emailReducer, emailSaga, callTaskReducer, callTaskSagas]) => {
|
|
615
618
|
injectReducer('templates', reducer.default);
|
|
616
619
|
injectReducer('create', smsCreateReducer.default);
|
|
617
620
|
injectReducer('creativesContainer', creativesContainerReducer.default);
|
|
618
621
|
injectReducer('edit', smsEditReducer.default);
|
|
619
622
|
injectReducer('email', emailReducer.default);
|
|
623
|
+
injectReducer('callTask', callTaskReducer.default);
|
|
620
624
|
injectSagas(sagas.default);
|
|
621
625
|
injectSagas(emailContainerSagas.default);
|
|
622
626
|
injectSagas(smsCreateSaga.default);
|
|
623
627
|
injectSagas(smsEditSaga.default);
|
|
624
628
|
injectSagas(emailSaga.default);
|
|
629
|
+
injectSagas(callTaskSagas.default);
|
|
625
630
|
renderRoute(component);
|
|
626
631
|
});
|
|
627
632
|
importModules.catch(errorLoading);
|