@capillarytech/creatives-library 3.0.35 → 3.1.0

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 (218) hide show
  1. package/assets/noImage.png +0 -0
  2. package/components/BreadCrumbs/messages.js +1 -1
  3. package/components/CapTagList/index.js +3 -3
  4. package/components/CapTagList/messages.js +4 -16
  5. package/components/Ckeditor/messages.js +1 -1
  6. package/components/CustomPopOver/index.js +4 -3
  7. package/components/CustomPopOver/messages.js +1 -5
  8. package/components/DateFilter/index.js +12 -12
  9. package/components/DateFilter/messages.js +0 -40
  10. package/components/DateRange/index.js +4 -5
  11. package/components/DateRange/messages.js +1 -13
  12. package/components/Edmeditor/messages.js +1 -1
  13. package/components/EmailPreview/index.js +4 -4
  14. package/components/EmailPreview/messages.js +2 -18
  15. package/components/Footer/messages.js +1 -1
  16. package/components/FormBuilder/index.js +19 -15
  17. package/components/FormBuilder/messages.js +1 -33
  18. package/components/Header/messages.js +4 -4
  19. package/components/ImagePreview/index.js +1 -1
  20. package/components/ImagePreview/messages.js +1 -5
  21. package/components/PageHeader/messages.js +1 -1
  22. package/components/PreviewSideBar/index.js +2 -2
  23. package/components/PreviewSideBar/messages.js +6 -14
  24. package/components/Sidebar/messages.js +3 -3
  25. package/components/SmsTest/index.js +4 -6
  26. package/components/SmsTest/messages.js +1 -9
  27. package/components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +3 -3
  28. package/components/TemplatePreview/index.js +10 -11
  29. package/components/TemplatePreview/messages.js +7 -23
  30. package/components/Toastr/messages.js +1 -1
  31. package/components/ToastrMessage/index.js +1 -4
  32. package/components/ToastrMessage/messages.js +1 -5
  33. package/components/TopBar/messages.js +1 -1
  34. package/config/app.js +0 -2
  35. package/containers/Assets/Gallery/messages.js +20 -20
  36. package/containers/Cap/index.js +5 -5
  37. package/containers/Dashboard/index.js +2 -2
  38. package/containers/Dashboard/messages.js +1 -1
  39. package/containers/Ebill/index.js +1 -1
  40. package/containers/Ebill/messages.js +16 -20
  41. package/containers/Email/index.js +24 -24
  42. package/containers/Email/messages.js +59 -107
  43. package/containers/Line/Create/index.js +7 -7
  44. package/containers/Line/Create/messages.js +42 -58
  45. package/containers/Line/Edit/index.js +14 -14
  46. package/containers/Line/Edit/messages.js +38 -58
  47. package/containers/Login/components/LoginForm/index.js +7 -10
  48. package/containers/Login/components/LoginForm/messages.js +3 -15
  49. package/containers/Login/index.js +1 -1
  50. package/containers/Login/messages.js +3 -7
  51. package/containers/MobilePush/Create/index.js +45 -45
  52. package/containers/MobilePush/Create/messages.js +75 -111
  53. package/containers/MobilePush/Edit/index.js +45 -45
  54. package/containers/MobilePush/Edit/messages.js +83 -100
  55. package/containers/NotFoundPage/messages.js +1 -1
  56. package/containers/Sms/Create/index.js +8 -7
  57. package/containers/Sms/Create/messages.js +19 -43
  58. package/containers/Sms/Edit/index.js +4 -4
  59. package/containers/Sms/Edit/messages.js +20 -36
  60. package/containers/TagList/messages.js +1 -1
  61. package/containers/Templates/index.js +19 -20
  62. package/containers/Templates/messages.js +64 -136
  63. package/containers/TestPage/messages.js +1 -1
  64. package/containers/Testv2/index.js +2 -2
  65. package/containers/Testv2/messages.js +1 -9
  66. package/containers/WeChat/MapTemplates/index.js +10 -10
  67. package/containers/WeChat/MapTemplates/messages.js +17 -49
  68. package/containers/WeChat/RichmediaTemplates/Create/messages.js +33 -33
  69. package/containers/WeChat/RichmediaTemplates/Edit/messages.js +1 -1
  70. package/containers/WeChat/RichmediaTemplates/View/index.js +2 -2
  71. package/containers/WeChat/RichmediaTemplates/View/messages.js +1 -9
  72. package/index.js +20 -8
  73. package/package.json +4 -1
  74. package/routes.js +16 -2
  75. package/services/api.js +2 -17
  76. package/services/getSchema.js +4 -1
  77. package/translations/en.json +360 -1396
  78. package/translations/zh.json +381 -1417
  79. package/utils/smsCharCountV2.js +10 -26
  80. package/v2Components/BreadCrumbs/messages.js +1 -1
  81. package/v2Components/CallTaskPreview/messages.js +1 -1
  82. package/v2Components/CapTagList/index.js +5 -6
  83. package/v2Components/CapTagList/messages.js +4 -24
  84. package/v2Components/Ckeditor/index.js +0 -1
  85. package/v2Components/Ckeditor/messages.js +1 -1
  86. package/v2Components/CmsTemplatesComponent/messages.js +2 -2
  87. package/v2Components/CustomPopOver/index.js +2 -4
  88. package/v2Components/CustomPopOver/messages.js +1 -5
  89. package/v2Components/DateFilter/index.js +349 -0
  90. package/v2Components/DateFilter/messages.js +17 -0
  91. package/v2Components/DateFilter/tests/index.test.js +15 -0
  92. package/v2Components/DateRange/index.js +113 -0
  93. package/v2Components/DateRange/messages.js +13 -0
  94. package/v2Components/DateRange/tests/index.test.js +10 -0
  95. package/v2Components/Edmeditor/messages.js +1 -1
  96. package/v2Components/EmailPreview/index.js +2 -2
  97. package/v2Components/EmailPreview/messages.js +3 -11
  98. package/v2Components/EmailPreviewV2/index.js +1 -1
  99. package/v2Components/EmailPreviewV2/messages.js +9 -13
  100. package/v2Components/Footer/messages.js +1 -1
  101. package/v2Components/FormBuilder/_formBuilder.scss +19 -0
  102. package/v2Components/FormBuilder/index.js +58 -27
  103. package/v2Components/FormBuilder/messages.js +1 -49
  104. package/v2Components/Header/index.js +2 -2
  105. package/v2Components/Header/messages.js +4 -4
  106. package/v2Components/ImagePreview/index.js +2 -3
  107. package/v2Components/ImagePreview/messages.js +1 -5
  108. package/v2Components/MobilePushPreviewV2/index.js +5 -2
  109. package/v2Components/MobilePushPreviewV2/messages.js +1 -9
  110. package/v2Components/NavigationBar/messages.js +1 -1
  111. package/v2Components/NewCallTask/messages.js +5 -5
  112. package/v2Components/PageHeader/_pageHeader.scss +22 -0
  113. package/v2Components/PageHeader/index.js +37 -0
  114. package/v2Components/PageHeader/messages.js +13 -0
  115. package/v2Components/PageHeader/tests/index.test.js +10 -0
  116. package/v2Components/PreviewSideBar/messages.js +6 -6
  117. package/v2Components/Sidebar/_sidebar.scss +115 -0
  118. package/v2Components/Sidebar/index.js +208 -0
  119. package/v2Components/Sidebar/messages.js +21 -0
  120. package/v2Components/Sidebar/tests/index.test.js +10 -0
  121. package/v2Components/SmsEditor/index.js +55 -0
  122. package/v2Components/SmsEditor/tests/index.test.js +10 -0
  123. package/v2Components/SmsTest/index.js +4 -6
  124. package/v2Components/SmsTest/messages.js +1 -9
  125. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +2 -0
  126. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +18 -28
  127. package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +3 -3
  128. package/v2Components/TemplatePreview/_templatePreview.scss +0 -9
  129. package/v2Components/TemplatePreview/index.js +16 -35
  130. package/v2Components/TemplatePreview/messages.js +7 -23
  131. package/v2Components/Toastr/messages.js +1 -1
  132. package/v2Components/ToastrMessage/index.js +2 -3
  133. package/v2Components/ToastrMessage/messages.js +1 -5
  134. package/v2Components/TopBar/_topbar.scss +46 -0
  135. package/v2Components/TopBar/messages.js +7 -7
  136. package/v2Containers/App/constants.js +0 -11
  137. package/v2Containers/Assets/Gallery/messages.js +24 -24
  138. package/v2Containers/CallTask/messages.js +6 -6
  139. package/v2Containers/Cap/actions.js +0 -1
  140. package/v2Containers/Cap/index.js +9 -6
  141. package/v2Containers/Cap/messsages.js +15 -19
  142. package/v2Containers/Cap/sagas.js +8 -1
  143. package/v2Containers/ChannelTemplates/messages.js +1 -1
  144. package/v2Containers/CreativesContainer/SlideBoxContent.js +39 -1
  145. package/v2Containers/CreativesContainer/SlideBoxFooter.js +7 -1
  146. package/v2Containers/CreativesContainer/SlideBoxHeader.js +21 -3
  147. package/v2Containers/CreativesContainer/index.js +95 -50
  148. package/v2Containers/CreativesContainer/index.scss +15 -0
  149. package/v2Containers/CreativesContainer/messages.js +12 -16
  150. package/v2Containers/Dashboard/index.js +1 -2
  151. package/v2Containers/Dashboard/messages.js +1 -1
  152. package/v2Containers/Ebill/index.js +1 -1
  153. package/v2Containers/Ebill/messages.js +16 -20
  154. package/v2Containers/Email/index.js +20 -20
  155. package/v2Containers/Email/messages.js +61 -101
  156. package/v2Containers/EmailWrapper/index.js +44 -64
  157. package/v2Containers/EmailWrapper/messages.js +12 -12
  158. package/v2Containers/Line/Create/index.js +3 -3
  159. package/v2Containers/Line/Create/messages.js +41 -53
  160. package/v2Containers/Line/Edit/index.js +10 -10
  161. package/v2Containers/Line/Edit/messages.js +39 -55
  162. package/v2Containers/Login/components/LoginForm/index.js +6 -9
  163. package/v2Containers/Login/components/LoginForm/messages.js +3 -15
  164. package/v2Containers/Login/index.js +1 -1
  165. package/v2Containers/Login/messages.js +3 -7
  166. package/v2Containers/MobilePush/Create/_mobilePushCreate.scss +3 -0
  167. package/v2Containers/MobilePush/Create/index.js +33 -33
  168. package/v2Containers/MobilePush/Create/messages.js +81 -109
  169. package/v2Containers/MobilePush/Edit/_mobilePushCreate.scss +3 -0
  170. package/v2Containers/MobilePush/Edit/index.js +22 -22
  171. package/v2Containers/MobilePush/Edit/messages.js +79 -95
  172. package/v2Containers/MobilePush/initialSchema.js +1 -2
  173. package/v2Containers/MobilepushWrapper/messages.js +5 -5
  174. package/v2Containers/NotFoundPage/messages.js +1 -1
  175. package/v2Containers/Sms/Create/index.js +6 -6
  176. package/v2Containers/Sms/Create/messages.js +21 -41
  177. package/v2Containers/Sms/Edit/index.js +6 -6
  178. package/v2Containers/Sms/Edit/messages.js +20 -36
  179. package/v2Containers/TagList/messages.js +1 -1
  180. package/v2Containers/Templates/_templates.scss +31 -5
  181. package/v2Containers/Templates/index.js +243 -248
  182. package/v2Containers/Templates/messages.js +7 -15
  183. package/v2Containers/Templates/sagas.js +0 -1
  184. package/v2Containers/TemplatesV2/_templatesV2.scss +5 -0
  185. package/v2Containers/TemplatesV2/index.js +4 -1
  186. package/v2Containers/TemplatesV2/messages.js +5 -29
  187. package/v2Containers/TestPage/messages.js +1 -1
  188. package/v2Containers/Testv2/index.js +2 -2
  189. package/v2Containers/Testv2/messages.js +1 -9
  190. package/v2Containers/WeChat/MapTemplates/_mapTemplates.scss +16 -0
  191. package/v2Containers/WeChat/MapTemplates/actions.js +4 -2
  192. package/v2Containers/WeChat/MapTemplates/index.js +800 -872
  193. package/v2Containers/WeChat/MapTemplates/initialSchema.js +184 -0
  194. package/v2Containers/WeChat/MapTemplates/messages.js +19 -43
  195. package/v2Containers/WeChat/MapTemplates/sagas.js +6 -2
  196. package/v2Containers/WeChat/MapTemplates/selectors.js +1 -1
  197. package/v2Containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +118 -28
  198. package/v2Containers/WeChat/RichmediaTemplates/Create/actions.js +3 -1
  199. package/v2Containers/WeChat/RichmediaTemplates/Create/index.js +262 -306
  200. package/v2Containers/WeChat/RichmediaTemplates/Create/messages.js +43 -95
  201. package/v2Containers/WeChat/RichmediaTemplates/Create/reducer.js +2 -1
  202. package/v2Containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +113 -246
  203. package/v2Containers/WeChat/RichmediaTemplates/Create/sagas.js +5 -2
  204. package/v2Containers/WeChat/RichmediaTemplates/Create/selectors.js +1 -1
  205. package/v2Containers/WeChat/RichmediaTemplates/Edit/actions.js +2 -2
  206. package/v2Containers/WeChat/RichmediaTemplates/Edit/index.js +11 -10
  207. package/v2Containers/WeChat/RichmediaTemplates/Edit/messages.js +1 -1
  208. package/v2Containers/WeChat/RichmediaTemplates/Edit/reducer.js +1 -0
  209. package/v2Containers/WeChat/RichmediaTemplates/Edit/sagas.js +4 -2
  210. package/v2Containers/WeChat/RichmediaTemplates/Edit/selectors.js +1 -1
  211. package/v2Containers/WeChat/RichmediaTemplates/View/messages.js +1 -9
  212. package/v2Containers/WeChat/Wrapper/_wrapper.scss +0 -0
  213. package/v2Containers/WeChat/Wrapper/constants.js +5 -0
  214. package/v2Containers/WeChat/Wrapper/index.js +194 -0
  215. package/v2Containers/WeChat/Wrapper/messages.js +21 -0
  216. package/v2Containers/WeChat/helper.js +12 -0
  217. package/containers/Cap/messages.js +0 -75
  218. package/v2Containers/Cap/messages.js +0 -75
@@ -0,0 +1,113 @@
1
+ /**
2
+ *
3
+ * DateRange
4
+ *
5
+ */
6
+
7
+ import PropTypes from 'prop-types';
8
+
9
+ import React from 'react';
10
+ // import styled from 'styled-components';
11
+
12
+ import { FormattedMessage } from 'react-intl';
13
+ import { Grid, Button } from 'semantic-ui-react';
14
+
15
+ import DatePicker from 'react-datepicker';
16
+ import 'react-datepicker/dist/react-datepicker.css';
17
+
18
+ import moment from 'moment';
19
+
20
+ class DateRange extends React.Component { // eslint-disable-line react/prefer-stateless-function
21
+ constructor(props) {
22
+ super(props);
23
+ this.state = {
24
+ startDate: this.props.prevSelectedDate.startDate,
25
+ endDate: this.props.prevSelectedDate.endDate,
26
+ };
27
+
28
+ this.handleChangeStart = this.handleChangeStart.bind(this);
29
+ this.handleChangeEnd = this.handleChangeEnd.bind(this);
30
+ this.closeAndUpdate = this.closeAndUpdate.bind(this);
31
+ this.closeAndCancel = this.closeAndCancel.bind(this);
32
+ }
33
+
34
+ handleChangeStart(date) {
35
+ this.setState({ startDate: date });
36
+ }
37
+
38
+ handleChangeEnd(date) {
39
+ this.setState({ endDate: date });
40
+ }
41
+
42
+ closeAndUpdate() {
43
+ this.props.handleDatePickerApply(this.state.startDate, this.state.endDate, 'custom');
44
+ this.props.handleDatePickerCancel();
45
+ }
46
+
47
+ closeAndCancel() {
48
+ this.props.handleDatePickerCancel();
49
+ }
50
+
51
+ render() {
52
+ const { startDate, endDate } = this.state;
53
+
54
+ return (
55
+ <Grid className="dateRangeWrapper" columns={2}>
56
+ <Grid.Row className="selectedDateTitleWrapper">
57
+ <Grid.Column style={{ paddingLeft: 0, paddingBottom: `${8}px` }}>
58
+ <span className="selectedDateTitle">From</span>
59
+ <input className="selectedDateRange" type="text" readOnly defaultValue={moment(startDate).format('MM/DD/YYYY').toString()} />
60
+ <i className="calenderIcon material-icons">today</i>
61
+ </Grid.Column>
62
+ <Grid.Column style={{ paddingLeft: 0 }}>
63
+ <span className="selectedDateTitle">To</span>
64
+ <input className="selectedDateRange" readOnly type="text" defaultValue={moment(endDate).format('MM/DD/YYYY').toString()} />
65
+ <i className="calenderIcon material-icons">today</i>
66
+ </Grid.Column>
67
+ </Grid.Row>
68
+ <Grid.Row style={{ paddingTop: 0, paddingBottom: `${2}px` }}>
69
+ <Grid.Column style={{ paddingLeft: 0 }}>
70
+ <DatePicker
71
+ inline
72
+ selected={startDate}
73
+ startDate={startDate}
74
+ endDate={endDate}
75
+ onChange={this.handleChangeStart}
76
+ showMonthDropdown
77
+ showYearDropdown
78
+ dropdownMode="select"
79
+ />
80
+ </Grid.Column>
81
+ <Grid.Column style={{ paddingLeft: 0 }}>
82
+ <DatePicker
83
+ inline
84
+ selected={endDate}
85
+ startDate={startDate}
86
+ endDate={endDate}
87
+ minDate={startDate}
88
+ maxDate={moment()}
89
+ onChange={this.handleChangeEnd}
90
+ showMonthDropdown
91
+ showYearDropdown
92
+ dropdownMode="select"
93
+ />
94
+ </Grid.Column>
95
+ </Grid.Row>
96
+ <Grid.Row>
97
+ <Grid.Column width={16} style={{ paddingLeft: 0 }}>
98
+ <Button onClick={this.closeAndUpdate} className="btn-primary" floated="left"><FormattedMessage id="customdatepicker.done" defaultMessage="Done" /></Button>
99
+ <Button onClick={this.closeAndCancel} className="btn-secondary" floated="left"><FormattedMessage id="customdatepicker.cancel" defaultMessage="Cancel" /></Button>
100
+ </Grid.Column>
101
+ </Grid.Row>
102
+ </Grid>
103
+ );
104
+ }
105
+ }
106
+
107
+ DateRange.propTypes = {
108
+ prevSelectedDate: PropTypes.object.isRequired,
109
+ handleDatePickerCancel: PropTypes.func,
110
+ handleDatePickerApply: PropTypes.func,
111
+ };
112
+
113
+ export default DateRange;
@@ -0,0 +1,13 @@
1
+ /*
2
+ * DateRange Messages
3
+ *
4
+ * This contains all the text for the DateRange component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ header: {
10
+ id: 'app.components.DateRange.header',
11
+ defaultMessage: 'This is the DateRange component !',
12
+ },
13
+ });
@@ -0,0 +1,10 @@
1
+ // import React from 'react';
2
+ // import { shallow } from 'enzyme';
3
+
4
+ // import DateRange from '../index';
5
+
6
+ // describe('<DateRange />', () => {
7
+ // it('Expect to have unit tests specified', () => {
8
+ // expect(true).toEqual(false);
9
+ // });
10
+ // });
@@ -7,7 +7,7 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  header: {
10
- id: 'creatives.componentsV2.Edmeditor.header',
10
+ id: 'app.components.Edmeditor.header',
11
11
  defaultMessage: 'This is the Edmeditor component !',
12
12
  },
13
13
  });
@@ -61,7 +61,7 @@ class EmailPreview extends React.Component { // eslint-disable-line react/prefer
61
61
  const iframeDiv = (<div className={`${messageContainerName}`}>
62
62
  {emailSubjectLabel}
63
63
  <iframe srcDoc={copyContent} {...deviceAspectRatio[device](emailSubject)} >
64
- <p><FormattedMessage {...messages.browserDoesntSupportIframe} /></p>
64
+ <p>Your browser does not support iframes.</p>
65
65
  </iframe>
66
66
  </div>);
67
67
  return (
@@ -72,7 +72,7 @@ class EmailPreview extends React.Component { // eslint-disable-line react/prefer
72
72
  {this.props.header}
73
73
  </div>
74
74
  <div id="box-actions" style={{ float: 'right' }} onClick={this.props.handleClose}>
75
- <i className="material-icons close-emailPreivew"><FormattedMessage {...messages.close} /></i>
75
+ <i className="material-icons close-emailPreivew">close</i>
76
76
  </div>
77
77
  </div>
78
78
 
@@ -7,23 +7,15 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  lastModified: {
10
- id: 'creatives.componentsV2.EmailPreview.lastModified',
10
+ id: 'app.components.EmailPreview.lastModified',
11
11
  defaultMessage: 'Last modified on',
12
12
  },
13
13
  uploadedBy: {
14
- id: 'creatives.componentsV2.EmailPreview.uploadedBy',
14
+ id: 'app.components.EmailPreview.uploadedBy',
15
15
  defaultMessage: 'Last modified by',
16
16
  },
17
17
  subject: {
18
- id: 'creatives.componentsV2.EmailPreview.subject',
18
+ id: 'app.components.EmailPreview.subject',
19
19
  defaultMessage: 'Subject:',
20
20
  },
21
- browserDoesntSupportIframe: {
22
- id: 'creatives.componentsV2.EmailPreview.browserDoesntSupportIframe',
23
- defaultMessage: 'Your browser does not support iframes.',
24
- },
25
- close: {
26
- id: 'creatives.componentsV2.EmailPreview.close',
27
- defaultMessage: 'close',
28
- },
29
21
  });
@@ -89,7 +89,7 @@ class EmailPreviewV2 extends React.Component {
89
89
  const iframeDiv = (<div className={`${messageContainerName}`}>
90
90
  {emailSubjectLabel}
91
91
  <iframe srcDoc={copyContent} {...deviceAspectRatio[currentDevice](emailSubject)} >
92
- <p><FormattedMessage {...messages.browserDoesntSupportIframe} /></p>
92
+ <p>Your browser does not support iframes.</p>
93
93
  </iframe>
94
94
  </div>);
95
95
 
@@ -7,43 +7,39 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  header: {
10
- id: 'creatives.componentsV2.EmailPreviewV2.header',
10
+ id: 'app.components.EmailPreviewV2.header',
11
11
  defaultMessage: 'This is the EmailPreviewV2 component !',
12
12
  },
13
13
  desktop: {
14
- id: 'creatives.componentsV2.EmailPreviewV2.desktop',
14
+ id: 'app.components.EmailPreviewV2.desktop',
15
15
  defaultMessage: 'Desktop',
16
16
  },
17
17
  tablet: {
18
- id: 'creatives.componentsV2.EmailPreviewV2.tablet',
18
+ id: 'app.components.EmailPreviewV2.tablet',
19
19
  defaultMessage: 'Tablet',
20
20
  },
21
21
  mobile: {
22
- id: 'creatives.componentsV2.EmailPreviewV2.mobile',
22
+ id: 'app.components.EmailPreviewV2.mobile',
23
23
  defaultMessage: 'Mobile',
24
24
  },
25
25
  noIframeSupport: {
26
- id: 'creatives.componentsV2.EmailPreviewV2.noIframeSupport',
26
+ id: 'app.components.EmailPreviewV2.noIframeSupport',
27
27
  defaultMessage: 'Your browser does not support iframes.',
28
28
  },
29
29
  showAllDevices: {
30
- id: 'creatives.componentsV2.EmailPreviewV2.showAllDevices',
30
+ id: 'app.components.EmailPreviewV2.showAllDevices',
31
31
  defaultMessage: 'Show all devices',
32
32
  },
33
33
  lastModified: {
34
- id: 'creatives.componentsV2.EmailPreviewV2.lastModified',
34
+ id: 'app.components.PreviewSideBar.lastModified',
35
35
  defaultMessage: 'Last modified on',
36
36
  },
37
37
  uploadedBy: {
38
- id: 'creatives.componentsV2.EmailPreviewV2.uploadedBy',
38
+ id: 'app.components.PreviewSideBar.uploadedBy',
39
39
  defaultMessage: 'Last modified by',
40
40
  },
41
41
  subject: {
42
- id: 'creatives.componentsV2.EmailPreviewV2.subject',
42
+ id: 'app.components.PreviewSideBar.uploadedBy',
43
43
  defaultMessage: 'Subject:',
44
44
  },
45
- browserDoesntSupportIframe: {
46
- id: 'creatives.componentsV2.EmailPreviewV2.browserDoesntSupportIframe',
47
- defaultMessage: 'Your browser does not support iframes.',
48
- },
49
45
  });
@@ -7,7 +7,7 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  header: {
10
- id: 'creatives.componentsV2.Footer.header',
10
+ id: 'app.components.Footer.header',
11
11
  defaultMessage: 'This is the Footer component !',
12
12
  },
13
13
  });
@@ -76,3 +76,22 @@
76
76
  }
77
77
  }
78
78
  }
79
+
80
+ .form-builder-dragger {
81
+ .ant-upload-drag {
82
+ background-color: white;
83
+ }
84
+ .ant-upload-drag-container {
85
+ height: 200px;
86
+ padding: 44px 0px;
87
+ .dragger-title {
88
+ margin-bottom: 12px;
89
+ }
90
+ .dragger-or {
91
+ margin-bottom: 8px;
92
+ }
93
+ .dragger-button {
94
+
95
+ }
96
+ }
97
+ }
@@ -11,8 +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 { CapLabel, CapButton, CapInput, CapPopover, CapCheckbox, CapRadio, CapSelect, CapTable, CapRow, CapColumn, CapNotification} from '@capillarytech/cap-ui-library';
15
- import { injectIntl, intlShape, FormattedMessage } from 'react-intl';
14
+ import { CapButton, CapInput, CapPopover, CapCheckbox, CapRadio, CapSelect, CapTable, CapRow, CapColumn, CapNotification, CapUploader, CapHeading, CapIcon} from '@capillarytech/cap-ui-library';
16
15
  import LabelHOC from '@capillarytech/cap-ui-library/assets/HOCs/ComponentWithLabelHOC';
17
16
  import TemplatePreview from '../TemplatePreview';
18
17
  import TagList from '../../v2Containers/TagList';
@@ -24,7 +23,6 @@ import CustomPopOver from '../CustomPopOver';
24
23
  import './_formBuilder.scss';
25
24
  import {updateCharCount, checkUnicode} from "../../utils/smsCharCountV2";
26
25
  import {SMS} from '../../v2Containers/CreativesContainer/constants';
27
- import messages from './messages';
28
26
  const TabPane = Tabs.TabPane;
29
27
  const {Column} = Table;
30
28
  const {TextArea} = CapInput;
@@ -271,9 +269,9 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
271
269
  onOk={this.handleOk}
272
270
  onCancel={this.handleCancel}
273
271
  footer={[
274
- <CapButton key="back" onClick={this.handleCancel}><FormattedMessage {...messages.cancel} /></CapButton>,
272
+ <CapButton key="back" onClick={this.handleCancel}>Cancel</CapButton>,
275
273
  <CapButton key="submit" type="primary" id={this.state.modal.id} onClick={this.handleOk}>
276
- <FormattedMessage {...messages.yes} />
274
+ Yes
277
275
  </CapButton>,
278
276
  ]}
279
277
  >
@@ -286,7 +284,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
286
284
  onOk={this.handleOk}
287
285
  onCancel={this.handleCancel}
288
286
  footer={[
289
- <CapButton key="back" onClick={this.handleCancel}><FormattedMessage {...messages.ok} /></CapButton>,
287
+ <CapButton key="back" onClick={this.handleCancel}>Ok</CapButton>,
290
288
  ]}
291
289
  >
292
290
  {this.state.modal.body}
@@ -885,13 +883,13 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
885
883
  isValid = false;
886
884
  if (showMessages && !isNaN(index)) {
887
885
  if (tagValidationResponse.missingTags.length > 0 || tagValidationResponse.unsupportedTags.length > 0) {
888
- errorString += `${this.props.intl.formatMessage(messages.contentNotValidLanguage)} ${currentLang}\n`;
886
+ errorString += `Content is not valid for language: ${currentLang}\n`;
889
887
  }
890
888
  if (tagValidationResponse.missingTags.length > 0) {
891
- errorString += `${this.props.intl.formatMessage(messages.missingTags)} ${tagValidationResponse.missingTags.toString()}\n`;
889
+ errorString += `Missing tags are: ${tagValidationResponse.missingTags.toString()}\n`;
892
890
  }
893
891
  if (tagValidationResponse.unsupportedTags.length > 0) {
894
- errorString += `${this.props.intl.formatMessage(messages.unsupportedTags)} ${tagValidationResponse.unsupportedTags.toString()}\n`;
892
+ errorString += `Unsupported tags are: ${tagValidationResponse.unsupportedTags.toString()}\n`;
895
893
  }
896
894
  }
897
895
  }
@@ -949,7 +947,6 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
949
947
 
950
948
  };
951
949
  saveForm(saveForm) {
952
-
953
950
  if (this.props.isNewVersionFlow && !saveForm) {
954
951
  this.props.getValidationData();
955
952
  return;
@@ -2088,7 +2085,9 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2088
2085
  return val.value;
2089
2086
  }
2090
2087
  uploadImages = (e, {files}, val) => {
2091
- e.preventDefault();
2088
+ if (e) {
2089
+ e.preventDefault();
2090
+ }
2092
2091
  const _URL = window.URL || window.webkitURL;
2093
2092
  const file = files[0];
2094
2093
  if (val.supportedExtensions) {
@@ -2107,10 +2106,16 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2107
2106
  };
2108
2107
  this.callChildEvent({file, type: 'image', fileParams}, val, val.submitAction);
2109
2108
  };
2110
- const event = e;
2111
- event.target.value = null;
2109
+ if (e) {
2110
+ const event = e;
2111
+ event.target.value = null;
2112
+ }
2112
2113
  };
2113
2114
 
2115
+ capUploaderCustomRequest = (uploadData, val) => {
2116
+ this.uploadImages(undefined, {files: [uploadData.file]}, val);
2117
+ }
2118
+
2114
2119
  findBaseTab = () => {
2115
2120
  const activeTabKey = this.state.formData && this.state.formData.base ? this.state.formData.base.tabKey : -1;
2116
2121
  const formData = _.cloneDeep(this.state.formData);
@@ -2200,12 +2205,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2200
2205
  if (!val.onlyDisplay && !val.standalone && (!this.state.errorData[`${this.state.currentTab - 1}`] || (!this.state.errorData[`${this.state.currentTab - 1}`][val.id] && this.state.errorData[`${this.state.currentTab - 1}`][val.id] === null))) {
2201
2206
  return true;
2202
2207
  }
2203
- //
2204
- columns.push(
2205
- <CapColumn key="label" span={4}>
2206
- <CapLabel style={val.labelStyle ? val.labelStyle : {}}>{val.label}</CapLabel>
2207
- </CapColumn>
2208
- );
2208
+
2209
2209
  let ifError = false;
2210
2210
  const isVersionEnable = (this.state.usingTabContainer && !val.standalone);
2211
2211
  if (val.primitive) {
@@ -2230,7 +2230,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2230
2230
  ifError = this.state.checkValidation && (isVersionEnable ? this.state.errorData[`${this.state.currentTab - 1}`][val.id] : this.state.errorData[val.id]);
2231
2231
  const value = isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id];
2232
2232
  columns.push(
2233
- <CapColumn key={val.id} span={val.width} offset={val.offset}>
2233
+ <CapColumn key={val.id} span={val.width} offset={val.offset} style={val.style || {}}>
2234
2234
  <CapInput
2235
2235
  id={val.id}
2236
2236
  errorMessage={val.errorMessage && ifError ? val.errorMessage : ''}
@@ -2377,6 +2377,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2377
2377
  onSelect={(data) => this.updateFormData(data, val, 'onSelect')}
2378
2378
  value={(this.state.formData[val.id] && this.state.formData[val.id] !== '' ? this.state.formData[val.id] : undefined)}
2379
2379
  disabled={val.disabled}
2380
+ label={val.label}
2380
2381
  />
2381
2382
  </CapColumn>
2382
2383
  );
@@ -2583,11 +2584,12 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2583
2584
  const value = isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id];
2584
2585
  if (styling === 'semantic') {
2585
2586
  columns.push(
2586
- <CapColumn key={val.id} span={val.width} offset={val.offset}>
2587
+ <CapColumn key={val.id} span={val.width} offset={val.offset} style={val.style || {}}>
2587
2588
  <CapInput
2588
2589
  id={val.id}
2589
2590
  errorMessage={val.errorMessage && ifError ? val.errorMessage : ''}
2590
2591
  label={val.label}
2592
+ inductiveText={val.inductiveText}
2591
2593
  className={`input-primary chart-name-input${ifError ? ' error' : ''}`}
2592
2594
  // fluid={val.fluid}
2593
2595
  style={val.style ? val.style : {}}
@@ -2596,7 +2598,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2596
2598
  value={value || ""}
2597
2599
  defaultValue={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2598
2600
  disabled={val.disabled}
2599
- size="default"
2601
+ size={val.size || "default"}
2600
2602
  />
2601
2603
  </CapColumn>
2602
2604
  );
@@ -2733,13 +2735,42 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2733
2735
  {val.showPreview && <WithLabel key={`${val.id}-with-label`} {...rest} errorMessage={ifError && errorMessage} ifError={ifError}/>}
2734
2736
  <form encType="multipart/form-data" id={val.id}>
2735
2737
  <input key={val.id} style={{ display: 'none'}} id="fileName" type="file" onChange={(e) => this.uploadImages(e, {files: e.target.files}, val)} accept={val.supportedExtensions ? val.supportedExtensions : "image/*"} />
2736
- <CapButton disabled={val.disabled ? val.disabled : false} type="secondary" onClick={(e) => this.openFileDialog(e, val.id)} style={{float: 'right', right: '-16px', top: '212px'}}>
2738
+ <CapButton disabled={val.disabled ? val.disabled : false} type="flat" prefix={<CapIcon size="s" type="add-photo" />} onClick={(e) => this.openFileDialog(e, val.id)} style={{float: 'right', color: `${val.disabled ? '#b3bac5' : '#2466ea'}`}}>
2737
2739
  {val.label}
2738
2740
  </CapButton>
2739
2741
  </form>
2740
2742
  </CapColumn>
2741
2743
  );
2742
2744
  break;
2745
+
2746
+ case 'capUpload':
2747
+ columns.push(
2748
+ <CapUploader
2749
+ customRequest={(data) => this.capUploaderCustomRequest(data, val)}
2750
+ >
2751
+ <CapButton>
2752
+ {"Upload"}
2753
+ {' '}
2754
+ </CapButton>
2755
+ </CapUploader>
2756
+ );
2757
+ break;
2758
+
2759
+ case 'capDragger':
2760
+ columns.push(
2761
+ <CapUploader.CapDragger
2762
+ customRequest={(data) => this.capUploaderCustomRequest(data, val)}
2763
+ {...val.componentProps}
2764
+ className="form-builder-dragger"
2765
+ >
2766
+ <CapHeading className="dragger-title" type="h7">Drag and drop image here</CapHeading>
2767
+ <CapHeading className="dragger-or" type="label6">OR</CapHeading>
2768
+ <CapButton className="dragger-button" type="secondary">
2769
+ Select a file from your computer
2770
+ </CapButton>
2771
+ </CapUploader.CapDragger>
2772
+ );
2773
+ break;
2743
2774
 
2744
2775
  case "table":
2745
2776
  columns.push(
@@ -2925,6 +2956,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
2925
2956
  onSelect={(data) => this.updateFormData(data, val, 'onSelect')}
2926
2957
  value={isVersionEnable ? this.state.formData[this.state.currentTab - 1][val.id] : this.state.formData[val.id]}
2927
2958
  disabled={val.disabled}
2959
+ label={val.label}
2928
2960
  />
2929
2961
  {ifError && val.errorMessage &&
2930
2962
  <span className={'error'}>{val.errorMessage}</span>
@@ -3252,12 +3284,12 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3252
3284
  this.props.schema ? this.renderForm() : ''
3253
3285
  }
3254
3286
  <SlideBox
3255
- header={(<h3>{this.props.intl.formatMessage(messages.layoutSelection)}</h3>)}
3287
+ header={(<h3>Layout Selection</h3>)}
3256
3288
  width={60}
3257
3289
  content={cmsTemplateSelectionContent}
3258
3290
  show={this.props.showEdmEmailTemplates}
3259
3291
  handleClose={this.props.toggleEdmEmailTemplateSelection}
3260
- loadingText={this.props.intl.formatMessage(messages.loadingEDMTemplates)}
3292
+ loadingText={"Loading EDM Templates"}
3261
3293
  isLoading={this.props.getCmsTemplatesInProgress}
3262
3294
  />
3263
3295
  </CapRow>
@@ -3308,7 +3340,6 @@ FormBuilder.propTypes = {
3308
3340
  // saveForm: PropTypes.bool,
3309
3341
  stopValidation: PropTypes.func,
3310
3342
  handleDelete: PropTypes.func,
3311
- intl: intlShape.isRequired,
3312
3343
  };
3313
3344
 
3314
- export default injectIntl(FormBuilder);
3345
+ export default FormBuilder;
@@ -7,55 +7,7 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  header: {
10
- id: 'creatives.componentsV2.FormBuilder.header',
10
+ id: 'app.components.FormBuilder.header',
11
11
  defaultMessage: 'This is the FormBuilder component !',
12
12
  },
13
- cancel: {
14
- id: 'creatives.componentsV2.FormBuilder.cancel',
15
- defaultMessage: 'Cancel',
16
- },
17
- yes: {
18
- id: 'creatives.componentsV2.FormBuilder.yes',
19
- defaultMessage: 'Yes',
20
- },
21
- ok: {
22
- id: 'creatives.componentsV2.FormBuilder.ok',
23
- defaultMessage: 'Ok',
24
- },
25
- contentNotValidLanguage: {
26
- id: 'creatives.componentsV2.FormBuilder.contentNotValidLanguage',
27
- defaultMessage: 'Content is not valid for language:',
28
- },
29
- missingTags: {
30
- id: 'creatives.componentsV2.FormBuilder.missingTags',
31
- defaultMessage: 'Missing tags are:',
32
- },
33
- unsupportedTags: {
34
- id: 'creatives.componentsV2.FormBuilder.unsupportedTags',
35
- defaultMessage: 'Unsupported tags are:',
36
- },
37
- upload: {
38
- id: 'creatives.componentsV2.FormBuilder.upload',
39
- defaultMessage: 'Upload',
40
- },
41
- dragAndDrop: {
42
- id: 'creatives.componentsV2.FormBuilder.dragAndDrop',
43
- defaultMessage: 'Drag and drop image here',
44
- },
45
- or: {
46
- id: 'creatives.componentsV2.FormBuilder.or',
47
- defaultMessage: 'OR',
48
- },
49
- selectAFile: {
50
- id: 'creatives.componentsV2.FormBuilder.selectAFile',
51
- defaultMessage: 'Select a file from your computer',
52
- },
53
- layoutSelection: {
54
- id: 'creatives.componentsV2.FormBuilder.layoutSelection',
55
- defaultMessage: 'Layout Selection',
56
- },
57
- loadingEDMTemplates: {
58
- id: 'creatives.componentsV2.FormBuilder.loadingEDMTemplates',
59
- defaultMessage: 'Loading EDM Templates',
60
- },
61
13
  });
@@ -21,7 +21,7 @@ function Header(props) {
21
21
  <CapColumn span={10}>
22
22
  <CapInput id="template-name" placeholder="Enter template name*" defaultValue={props.templateName} type="input" onChange={props.templateNameHandler}/>
23
23
  </CapColumn>
24
- <CapColumn span={2} offset={8}>
24
+ {/* <CapColumn span={2} offset={8}>
25
25
  <CapButton id="preview-button" type="cancel" onClick={props.previewHandler}> <FormattedMessage {...messages.preview} /> </CapButton>
26
26
  </CapColumn>
27
27
  <CapColumn span={2}>
@@ -29,7 +29,7 @@ function Header(props) {
29
29
  </CapColumn>
30
30
  <CapColumn span={2}>
31
31
  <CapButton id="save-button" type="primary" onClick={props.saveHandler}> <FormattedMessage {...messages.save} /> </CapButton>
32
- </CapColumn>
32
+ </CapColumn> */}
33
33
  </CapRow>
34
34
  </div>
35
35
  );
@@ -7,19 +7,19 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  header: {
10
- id: 'creatives.componentsV2.Header.header',
10
+ id: 'app.components.Header.header',
11
11
  defaultMessage: 'This is the Header component !',
12
12
  },
13
13
  preview: {
14
- id: 'creatives.componentsV2.Header.preview',
14
+ id: 'app.components.Header.preview',
15
15
  defaultMessage: 'Preview',
16
16
  },
17
17
  cancel: {
18
- id: 'creatives.componentsV2.Header.cancel',
18
+ id: 'app.components.Header.cancel',
19
19
  defaultMessage: 'Cancel',
20
20
  },
21
21
  save: {
22
- id: 'creatives.componentsV2.Header.save',
22
+ id: 'app.components.Header.save',
23
23
  defaultMessage: 'Save',
24
24
  },
25
25
  });
@@ -7,9 +7,8 @@
7
7
  import PropTypes from 'prop-types';
8
8
 
9
9
  import React from 'react';
10
- import { injectIntl, FormattedMessage } from 'react-intl';
10
+ import { injectIntl } from 'react-intl';
11
11
  import { Spin } from 'antd';
12
- import messages from './messages';
13
12
  import './_imagePreview.scss';
14
13
 
15
14
  class ImagePreview extends React.Component { // eslint-disable-line react/prefer-stateless-function
@@ -22,7 +21,7 @@ class ImagePreview extends React.Component { // eslint-disable-line react/prefer
22
21
  {this.props.header}
23
22
  </div>
24
23
  <div id="box-actions" style={{ float: 'right' }} onClick={this.props.handleClose}>
25
- <i className="material-icons close-image-preview"><FormattedMessage {...messages.close} /></i>
24
+ <i className="material-icons close-image-preview">close</i>
26
25
  </div>
27
26
  </div>
28
27
 
@@ -7,11 +7,7 @@ import { defineMessages } from 'react-intl';
7
7
 
8
8
  export default defineMessages({
9
9
  loadingImage: {
10
- id: 'creatives.componentsV2.ImagePreview.loadingImage',
10
+ id: 'app.components.ImagePreview.loadingImage',
11
11
  defaultMessage: 'Loading images !!!!',
12
12
  },
13
- close: {
14
- id: 'creatives.componentsV2.ImagePreview.close',
15
- defaultMessage: 'close',
16
- },
17
13
  });