@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.
Files changed (53) hide show
  1. package/components/CallTaskPreview/_callTaskPreview.scss +17 -0
  2. package/components/CallTaskPreview/images/Footer.png +0 -0
  3. package/components/CallTaskPreview/images/Header.png +0 -0
  4. package/components/CallTaskPreview/index.js +37 -0
  5. package/components/CallTaskPreview/messages.js +13 -0
  6. package/components/CallTaskPreview/tests/index.test.js +15 -0
  7. package/components/CapTagList/index.js +1 -1
  8. package/components/EmailPreviewV2/index.js +3 -1
  9. package/components/FormBuilder/index.js +10 -7
  10. package/components/NewCallTask/_newCallTask.scss +9 -0
  11. package/components/NewCallTask/index.js +152 -0
  12. package/components/NewCallTask/messages.js +29 -0
  13. package/components/NewCallTask/tests/index.test.js +10 -0
  14. package/containers/CallTask/_callTask.scss +5 -0
  15. package/containers/CallTask/actions.js +15 -0
  16. package/containers/CallTask/constants.js +7 -0
  17. package/containers/CallTask/index.js +141 -0
  18. package/containers/CallTask/messages.js +21 -0
  19. package/containers/CallTask/reducer.js +23 -0
  20. package/containers/CallTask/sagas.js +11 -0
  21. package/containers/CallTask/selectors.js +25 -0
  22. package/containers/CallTask/tests/actions.test.js +18 -0
  23. package/containers/CallTask/tests/index.test.js +10 -0
  24. package/containers/CallTask/tests/reducer.test.js +9 -0
  25. package/containers/CallTask/tests/sagas.test.js +15 -0
  26. package/containers/CallTask/tests/selectors.test.js +10 -0
  27. package/containers/CreativesContainer/SlideBoxContent.js +66 -3
  28. package/containers/CreativesContainer/SlideBoxFooter.js +3 -3
  29. package/containers/CreativesContainer/constants.js +2 -0
  30. package/containers/CreativesContainer/index.js +105 -21
  31. package/containers/Email/_email.scss +0 -1
  32. package/containers/Email/index.js +2 -0
  33. package/containers/Line/Edit/_lineEdit.scss +0 -4
  34. package/containers/MobilePush/Create/_mobilePushCreate.scss +0 -4
  35. package/containers/MobilePush/Create/index.js +4 -2
  36. package/containers/MobilePush/Edit/_mobilePushCreate.scss +0 -4
  37. package/containers/MobilePush/Edit/index.js +11 -8
  38. package/containers/MobilePush/Edit/selectors.js +2 -1
  39. package/containers/MobilepushWrapper/index.js +92 -0
  40. package/containers/MobilepushWrapper/messages.js +25 -0
  41. package/containers/MobilepushWrapper/tests/index.test.js +10 -0
  42. package/containers/Sms/Create/_smsCreate.scss +0 -1
  43. package/containers/Sms/Edit/actions.js +6 -0
  44. package/containers/Sms/Edit/constants.js +1 -0
  45. package/containers/Sms/Edit/index.js +1 -0
  46. package/containers/Sms/Edit/reducer.js +2 -0
  47. package/containers/TagList/index.js +3 -3
  48. package/containers/Templates/index.js +35 -17
  49. package/containers/TemplatesV2/index.js +22 -11
  50. package/index.js +7 -0
  51. package/package.json +2 -2
  52. package/routes.js +7 -2
  53. 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
+ });
@@ -32,7 +32,6 @@
32
32
  .ant-tabs-extra-content{
33
33
  flex: 1;
34
34
  align-self: flex-end;
35
- padding: 4px;
36
35
  }
37
36
 
38
37
  .version-popover {
@@ -37,3 +37,9 @@ export function clearEditResponse() {
37
37
  type: types.CLEAR_EDIT_RESPONSE_REQUEST,
38
38
  };
39
39
  }
40
+
41
+ export function resetEditTemplate() {
42
+ return {
43
+ type: types.RESET_EDIT_TEMPLATE,
44
+ };
45
+ }
@@ -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 { FormattedMessage, injectIntl, intlShape } from 'react-intl';
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, Select, Dropdown, Menu, Modal} from 'antd';
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
- <Option key={this.state.channel.toUpperCase() === "MOBILEPUSH" ? account.id : account.uuid} value={account.name}>{account.name}</Option>
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
- <Option key={this.state.channel.toUpperCase() === "MOBILEPUSH" ? account.id : account.uuid} value={account.name}>{account.name}</Option>
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
- <Option key={this.state.channel.toUpperCase() === "MOBILEPUSH" ? account.id : account.uuid} value={account.name}>{account.name}</Option>
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 className="selectAccount" onSelect={this.onAccountSelect} value={this.props.Templates.selectedWeChatAccount ? this.props.Templates.selectedWeChatAccount.name : undefined} placeholder={this.props.intl.formatMessage(messages.selectAccount)}>
1340
- {accountOptions}
1341
- </CapSelect>}
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 className="selectAccount" onSelect={this.onAccountSelect} value={this.props.Templates.selectedWeChatAccount ? this.props.Templates.selectedWeChatAccount.name : undefined} placeholder={this.props.intl.formatMessage(messages.selectAccount)}>
1348
- {accountOptions}
1349
- </CapSelect>}
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
- // {content: <div></div>, tab: 'Mpush', key: 'mobilepush'},
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 (<Templates
104
- key={channel}
105
- location={{pathname: `/${channel}`, search: '', query}}
106
- route={{name: channel}}
107
- router={this.props.router}
108
- isFullMode={this.props.isFullMode}
109
- createNew={this.props.createNew}
110
- onSelectTemplate={(id) => this.props.onSelectTemplate(this.selectTemplate(id))}
111
- renderNewCardGrid={this.getTemplateDataForGrid}
112
- handlePeviewTemplate={this.props.handlePeviewTemplate}
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.54",
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.86",
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);
@@ -7,10 +7,9 @@
7
7
  margin-right: 0rem !important;
8
8
  }
9
9
 
10
- .wrapper{
10
+ .wrapper {
11
11
  height: 100%;
12
12
  position: relative;
13
- font-family: "proxima-nova","open-sans", sans-serif !important;
14
13
  }
15
14
 
16
15
  .main{