@capillarytech/creatives-library 8.0.136-alpha.4 → 8.0.136-beta.3

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 (292) hide show
  1. package/components/BreadCrumbs/index.js +65 -0
  2. package/components/BreadCrumbs/messages.js +13 -0
  3. package/components/CapTagList/index.js +235 -0
  4. package/components/CapTagList/messages.js +45 -0
  5. package/components/Card/_customCard.scss +40 -0
  6. package/components/Card/index.js +78 -0
  7. package/components/Card/tests/__snapshots__/index.test.js.snap +22 -0
  8. package/components/Card/tests/index.test.js +20 -0
  9. package/components/CardGrid/index.js +71 -0
  10. package/components/Ckeditor/index.js +238 -0
  11. package/components/Ckeditor/messages.js +13 -0
  12. package/components/Ckeditor/style.scss +3 -0
  13. package/components/Component/index.js +29 -0
  14. package/components/CustomPopOver/index.js +81 -0
  15. package/components/CustomPopOver/messages.js +17 -0
  16. package/components/DateFilter/index.js +349 -0
  17. package/components/DateFilter/messages.js +57 -0
  18. package/components/DateRange/index.js +114 -0
  19. package/components/DateRange/messages.js +25 -0
  20. package/components/Edmeditor/index.js +65 -0
  21. package/components/Edmeditor/messages.js +13 -0
  22. package/components/EmailPreview/_emailPreview.scss +119 -0
  23. package/components/EmailPreview/assets/images/iPad.svg +10 -0
  24. package/components/EmailPreview/assets/images/mobile.png +0 -0
  25. package/components/EmailPreview/index.js +107 -0
  26. package/components/EmailPreview/messages.js +33 -0
  27. package/components/Footer/index.js +27 -0
  28. package/components/Footer/messages.js +13 -0
  29. package/components/FormBuilder/_formBuilder.scss +83 -0
  30. package/components/FormBuilder/index.js +3279 -0
  31. package/components/FormBuilder/messages.js +61 -0
  32. package/components/Header/index.js +44 -0
  33. package/components/Header/messages.js +29 -0
  34. package/components/ImagePreview/_imagePreview.scss +63 -0
  35. package/components/ImagePreview/index.js +52 -0
  36. package/components/ImagePreview/messages.js +17 -0
  37. package/components/PageHeader/_pageHeader.scss +22 -0
  38. package/components/PageHeader/index.js +37 -0
  39. package/components/PageHeader/messages.js +13 -0
  40. package/components/Pagination/_pagination.scss +5 -0
  41. package/components/Pagination/index.js +49 -0
  42. package/components/PreviewSideBar/_previewsidebar.scss +28 -0
  43. package/components/PreviewSideBar/index.js +152 -0
  44. package/components/PreviewSideBar/messages.js +41 -0
  45. package/components/Sidebar/_sidebar.scss +115 -0
  46. package/components/Sidebar/index.js +214 -0
  47. package/components/Sidebar/messages.js +21 -0
  48. package/components/SlideBox/_slideBox.scss +63 -0
  49. package/components/SlideBox/index.js +47 -0
  50. package/components/SlideBox/tests/index.test.js +103 -0
  51. package/components/SmsEditor/index.js +55 -0
  52. package/components/SmsTest/index.js +117 -0
  53. package/components/SmsTest/messages.js +21 -0
  54. package/components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +42 -0
  55. package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +141 -0
  56. package/components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +21 -0
  57. package/components/TemplatePreview/_templatePreview.scss +642 -0
  58. package/components/TemplatePreview/assets/images/WECHAT_5x.png +0 -0
  59. package/components/TemplatePreview/assets/images/androidPushMessage.svg +45 -0
  60. package/components/TemplatePreview/assets/images/home-screen-android.svg +21 -0
  61. package/components/TemplatePreview/assets/images/home-screen-ios.svg +16 -0
  62. package/components/TemplatePreview/assets/images/iPhonePushMessage.svg +135 -0
  63. package/components/TemplatePreview/assets/images/mobile.svg +24 -0
  64. package/components/TemplatePreview/assets/images/sms-body.png +0 -0
  65. package/components/TemplatePreview/assets/images/sms-icon.png +0 -0
  66. package/components/TemplatePreview/assets/images/sms_mobile.png +0 -0
  67. package/components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -0
  68. package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +16 -0
  69. package/components/TemplatePreview/assets/images/user-icon.svg +19 -0
  70. package/components/TemplatePreview/assets/images/wechat-mobile.svg +78 -0
  71. package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -0
  72. package/components/TemplatePreview/index.js +617 -0
  73. package/components/TemplatePreview/messages.js +78 -0
  74. package/components/Toastr/index.js +60 -0
  75. package/components/Toastr/messages.js +13 -0
  76. package/components/ToastrMessage/index.js +113 -0
  77. package/components/ToastrMessage/messages.js +17 -0
  78. package/components/TopBar/_topbar.scss +46 -0
  79. package/components/TopBar/assets/images/capillary_logo.png +0 -0
  80. package/components/TopBar/assets/images/old_capillary_logo.png +0 -0
  81. package/components/TopBar/index.js +113 -0
  82. package/components/TopBar/messages.js +29 -0
  83. package/containers/App/actions.js +7 -0
  84. package/containers/App/constants.js +114 -0
  85. package/containers/App/index.js +52 -0
  86. package/containers/App/reducer.js +19 -0
  87. package/containers/App/sagas.js +31 -0
  88. package/containers/App/selectors.js +25 -0
  89. package/containers/App/test/saga.test.js +11 -0
  90. package/containers/Assets/Gallery/_gallery.scss +126 -0
  91. package/containers/Assets/Gallery/actions.js +37 -0
  92. package/containers/Assets/Gallery/constants.js +23 -0
  93. package/containers/Assets/Gallery/index.js +473 -0
  94. package/containers/Assets/Gallery/messages.js +93 -0
  95. package/containers/Assets/Gallery/reducer.js +81 -0
  96. package/containers/Assets/Gallery/sagas.js +80 -0
  97. package/containers/Assets/Gallery/selectors.js +25 -0
  98. package/containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +9 -0
  99. package/containers/Assets/Gallery/tests/actions.test.js +25 -0
  100. package/containers/Assets/Gallery/tests/reducer.test.js +96 -0
  101. package/containers/Assets/Gallery/tests/saga.test.js +157 -0
  102. package/containers/Cap/actions.js +66 -0
  103. package/containers/Cap/constants.js +25 -0
  104. package/containers/Cap/index.js +402 -0
  105. package/containers/Cap/messages.js +75 -0
  106. package/containers/Cap/reducer.js +113 -0
  107. package/containers/Cap/sagas.js +159 -0
  108. package/containers/Cap/selectors.js +75 -0
  109. package/containers/Cap/tests/__snapshots__/index.test.js.snap +2269 -0
  110. package/containers/Cap/tests/index.test.js +22 -0
  111. package/containers/Cap/tests/saga.test.js +284 -0
  112. package/containers/Dashboard/actions.js +15 -0
  113. package/containers/Dashboard/constants.js +7 -0
  114. package/containers/Dashboard/index.js +76 -0
  115. package/containers/Dashboard/messages.js +13 -0
  116. package/containers/Dashboard/reducer.js +21 -0
  117. package/containers/Dashboard/sagas.js +17 -0
  118. package/containers/Dashboard/selectors.js +25 -0
  119. package/containers/Dashboard/test/saga.test.js +9 -0
  120. package/containers/Ebill/_ebill.scss +5 -0
  121. package/containers/Ebill/actions.js +43 -0
  122. package/containers/Ebill/constants.js +20 -0
  123. package/containers/Ebill/index.js +1278 -0
  124. package/containers/Ebill/messages.js +77 -0
  125. package/containers/Ebill/reducer.js +72 -0
  126. package/containers/Ebill/sagas.js +74 -0
  127. package/containers/Ebill/selectors.js +25 -0
  128. package/containers/Ebill/test/saga.test.js +11 -0
  129. package/containers/Email/_email.scss +141 -0
  130. package/containers/Email/actions.js +81 -0
  131. package/containers/Email/constants.js +36 -0
  132. package/containers/Email/index.js +3325 -0
  133. package/containers/Email/messages.js +289 -0
  134. package/containers/Email/reducer.js +142 -0
  135. package/containers/Email/sagas.js +135 -0
  136. package/containers/Email/selectors.js +31 -0
  137. package/containers/Email/test/saga.test.js +671 -0
  138. package/containers/LanguageProvider/actions.js +17 -0
  139. package/containers/LanguageProvider/constants.js +8 -0
  140. package/containers/LanguageProvider/index.js +80 -0
  141. package/containers/LanguageProvider/reducer.js +30 -0
  142. package/containers/LanguageProvider/selectors.js +20 -0
  143. package/containers/LanguageProvider/tests/actions.test.js +19 -0
  144. package/containers/LanguageProvider/tests/index.test.js +78 -0
  145. package/containers/LanguageProvider/tests/reducer.test.js +20 -0
  146. package/containers/LanguageProvider/tests/selectors.test.js +15 -0
  147. package/containers/Line/Create/_lineCreate.scss +54 -0
  148. package/containers/Line/Create/actions.js +90 -0
  149. package/containers/Line/Create/constants.js +39 -0
  150. package/containers/Line/Create/index.js +836 -0
  151. package/containers/Line/Create/messages.js +189 -0
  152. package/containers/Line/Create/reducer.js +99 -0
  153. package/containers/Line/Create/sagas.js +121 -0
  154. package/containers/Line/Create/selectors.js +36 -0
  155. package/containers/Line/Create/tests/saga.test.js +202 -0
  156. package/containers/Line/Edit/_lineEdit.scss +35 -0
  157. package/containers/Line/Edit/actions.js +79 -0
  158. package/containers/Line/Edit/constants.js +27 -0
  159. package/containers/Line/Edit/index.js +1050 -0
  160. package/containers/Line/Edit/messages.js +177 -0
  161. package/containers/Line/Edit/reducer.js +83 -0
  162. package/containers/Line/Edit/sagas.js +80 -0
  163. package/containers/Line/Edit/selectors.js +29 -0
  164. package/containers/Line/Edit/test/saga.test.js +160 -0
  165. package/containers/Login/assets/images/capillary_logo.png +0 -0
  166. package/containers/Login/components/LoginForm/index.js +62 -0
  167. package/containers/Login/components/LoginForm/messages.js +33 -0
  168. package/containers/Login/index.js +130 -0
  169. package/containers/Login/messages.js +25 -0
  170. package/containers/Login/selectors.js +25 -0
  171. package/containers/MobilePush/Create/_mobilePushCreate.scss +39 -0
  172. package/containers/MobilePush/Create/actions.js +46 -0
  173. package/containers/MobilePush/Create/constants.js +23 -0
  174. package/containers/MobilePush/Create/index.js +2303 -0
  175. package/containers/MobilePush/Create/messages.js +269 -0
  176. package/containers/MobilePush/Create/reducer.js +70 -0
  177. package/containers/MobilePush/Create/sagas.js +74 -0
  178. package/containers/MobilePush/Create/selectors.js +28 -0
  179. package/containers/MobilePush/Create/test/saga.test.js +19 -0
  180. package/containers/MobilePush/Edit/_mobilePushCreate.scss +39 -0
  181. package/containers/MobilePush/Edit/actions.js +91 -0
  182. package/containers/MobilePush/Edit/constants.js +35 -0
  183. package/containers/MobilePush/Edit/index.js +2601 -0
  184. package/containers/MobilePush/Edit/messages.js +266 -0
  185. package/containers/MobilePush/Edit/reducer.js +112 -0
  186. package/containers/MobilePush/Edit/sagas.js +126 -0
  187. package/containers/MobilePush/Edit/selectors.js +29 -0
  188. package/containers/MobilePush/Edit/tests/saga.test.js +255 -0
  189. package/containers/NotFoundPage/index.js +25 -0
  190. package/containers/NotFoundPage/messages.js +13 -0
  191. package/containers/NotFoundPage/tests/index.test.js +17 -0
  192. package/containers/Sms/Create/_smsCreate.scss +42 -0
  193. package/containers/Sms/Create/actions.js +27 -0
  194. package/containers/Sms/Create/constants.js +16 -0
  195. package/containers/Sms/Create/index.js +1488 -0
  196. package/containers/Sms/Create/messages.js +109 -0
  197. package/containers/Sms/Create/reducer.js +41 -0
  198. package/containers/Sms/Create/sagas.js +40 -0
  199. package/containers/Sms/Create/selectors.js +28 -0
  200. package/containers/Sms/Create/test/saga.test.js +11 -0
  201. package/containers/Sms/Edit/actions.js +40 -0
  202. package/containers/Sms/Edit/constants.js +17 -0
  203. package/containers/Sms/Edit/index.js +1472 -0
  204. package/containers/Sms/Edit/messages.js +105 -0
  205. package/containers/Sms/Edit/reducer.js +50 -0
  206. package/containers/Sms/Edit/sagas.js +60 -0
  207. package/containers/Sms/Edit/selectors.js +32 -0
  208. package/containers/Sms/Edit/test/saga.test.js +13 -0
  209. package/containers/TagList/_tagList.scss +8 -0
  210. package/containers/TagList/actions.js +15 -0
  211. package/containers/TagList/constants.js +32 -0
  212. package/containers/TagList/index.js +236 -0
  213. package/containers/TagList/messages.js +13 -0
  214. package/containers/TagList/reducer.js +23 -0
  215. package/containers/TagList/sagas.js +11 -0
  216. package/containers/TagList/selectors.js +25 -0
  217. package/containers/Templates/_templates.scss +333 -0
  218. package/containers/Templates/actions.js +103 -0
  219. package/containers/Templates/constants.js +60 -0
  220. package/containers/Templates/index.js +1756 -0
  221. package/containers/Templates/messages.js +337 -0
  222. package/containers/Templates/reducer.js +142 -0
  223. package/containers/Templates/sagas.js +163 -0
  224. package/containers/Templates/selectors.js +28 -0
  225. package/containers/Templates/test/saga.test.js +241 -0
  226. package/containers/WeChat/MapTemplates/_mapTemplates.scss +8 -0
  227. package/containers/WeChat/MapTemplates/actions.js +52 -0
  228. package/containers/WeChat/MapTemplates/constants.js +28 -0
  229. package/containers/WeChat/MapTemplates/index.js +1610 -0
  230. package/containers/WeChat/MapTemplates/messages.js +157 -0
  231. package/containers/WeChat/MapTemplates/reducer.js +74 -0
  232. package/containers/WeChat/MapTemplates/sagas.js +84 -0
  233. package/containers/WeChat/MapTemplates/selectors.js +25 -0
  234. package/containers/WeChat/MapTemplates/test/saga.test.js +155 -0
  235. package/containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +57 -0
  236. package/containers/WeChat/RichmediaTemplates/Create/actions.js +36 -0
  237. package/containers/WeChat/RichmediaTemplates/Create/constants.js +15 -0
  238. package/containers/WeChat/RichmediaTemplates/Create/index.js +1071 -0
  239. package/containers/WeChat/RichmediaTemplates/Create/messages.js +165 -0
  240. package/containers/WeChat/RichmediaTemplates/Create/reducer.js +60 -0
  241. package/containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +497 -0
  242. package/containers/WeChat/RichmediaTemplates/Create/sagas.js +51 -0
  243. package/containers/WeChat/RichmediaTemplates/Create/selectors.js +37 -0
  244. package/containers/WeChat/RichmediaTemplates/Create/test/saga.test.js +13 -0
  245. package/containers/WeChat/RichmediaTemplates/Edit/actions.js +20 -0
  246. package/containers/WeChat/RichmediaTemplates/Edit/constants.js +10 -0
  247. package/containers/WeChat/RichmediaTemplates/Edit/index.js +136 -0
  248. package/containers/WeChat/RichmediaTemplates/Edit/messages.js +13 -0
  249. package/containers/WeChat/RichmediaTemplates/Edit/reducer.js +28 -0
  250. package/containers/WeChat/RichmediaTemplates/Edit/sagas.js +36 -0
  251. package/containers/WeChat/RichmediaTemplates/Edit/selectors.js +30 -0
  252. package/containers/WeChat/RichmediaTemplates/Edit/test/saga.test.js +12 -0
  253. package/containers/WeChat/RichmediaTemplates/View/actions.js +15 -0
  254. package/containers/WeChat/RichmediaTemplates/View/constants.js +7 -0
  255. package/containers/WeChat/RichmediaTemplates/View/index.js +47 -0
  256. package/containers/WeChat/RichmediaTemplates/View/messages.js +21 -0
  257. package/containers/WeChat/RichmediaTemplates/View/reducer.js +23 -0
  258. package/containers/WeChat/RichmediaTemplates/View/sagas.js +11 -0
  259. package/containers/WeChat/RichmediaTemplates/View/selectors.js +25 -0
  260. package/index.js +2 -4
  261. package/package.json +1 -1
  262. package/routes.js +202 -136
  263. package/services/getSchema.js +1 -1
  264. package/services/localStorageApi.js +0 -1
  265. package/tests/i18n.test.js +1 -1
  266. package/utils/asyncInjectors.js +78 -0
  267. package/utils/authWrapper.js +1 -1
  268. package/utils/callNativeEvent.js +16 -0
  269. package/utils/checkStore.js +21 -0
  270. package/utils/common.js +2 -2
  271. package/utils/customAuthWrapper.js +62 -0
  272. package/utils/customConnectedAuthWrapper.js +26 -0
  273. package/utils/tagValidations.js +1 -1
  274. package/utils/tests/checkStore.test.js +1 -1
  275. package/utils/tests/customAuth.test.js +1 -1
  276. package/utils/transformerUtils.js +195 -1
  277. package/v2Components/CapTagList/index.js +14 -9
  278. package/v2Components/Carousel/style.scss +1 -1
  279. package/v2Components/EmailMobilePreview/index.js +2 -2
  280. package/v2Components/FormBuilder/index.js +2 -2
  281. package/v2Components/TemplatePreview/index.js +1 -2
  282. package/v2Containers/Cap/tests/saga.test.js +1 -1
  283. package/v2Containers/Email/index.js +1 -1
  284. package/v2Containers/FTP/index.js +1 -1
  285. package/v2Containers/Line/Container/Text/index.js +6 -6
  286. package/v2Containers/Sms/Create/index.js +2 -2
  287. package/v2Containers/Sms/Edit/index.js +1 -1
  288. package/v2Containers/TagList/index.js +1 -1
  289. package/v2Containers/TagList/utils.js +1 -1
  290. package/v2Containers/Templates/index.js +1 -1
  291. package/v2Containers/Templates/sagas.js +1 -1
  292. package/constants/unified.js +0 -189
@@ -0,0 +1,78 @@
1
+ /*
2
+ * TemplatePreview Messages
3
+ *
4
+ * This contains all the text for the TemplatePreview component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ previewGenerationMessage: {
10
+ id: 'creatives.components.TemplatePreview.previewGenerationMessage',
11
+ defaultMessage: "Preview is being generated",
12
+ },
13
+ senderId: {
14
+ id: 'creatives.components.TemplatePreview.senderId',
15
+ defaultMessage: "Sender ID",
16
+ },
17
+ sms: {
18
+ id: 'creatives.components.TemplatePreview.sms',
19
+ defaultMessage: "SMS",
20
+ },
21
+ characters: {
22
+ id: 'creatives.components.TemplatePreview.characters',
23
+ defaultMessage: "characters",
24
+ },
25
+ charactersPerSms: {
26
+ id: 'creatives.components.TemplatePreview.charactersPerSms',
27
+ defaultMessage: "SMS chars",
28
+ },
29
+ charactersTotal: {
30
+ id: 'creatives.components.TemplatePreview.charactersTotal',
31
+ defaultMessage: "SMS char total",
32
+ },
33
+ smsFormatType: {
34
+ id: 'creatives.components.TemplatePreview.smsFormatType',
35
+ defaultMessage: 'Message has unicode characters',
36
+ },
37
+ includesOptoutTag: {
38
+ id: 'app.components.TemplatePreview.includesOptoutTag',
39
+ defaultMessage: 'Includes optout tag',
40
+ },
41
+ previewGenerated: {
42
+ id: 'creatives.components.TemplatePreview.previewGenerated',
43
+ defaultMessage: 'Preview is being generated',
44
+ },
45
+ close: {
46
+ id: 'creatives.components.TemplatePreview.close',
47
+ defaultMessage: 'close',
48
+ },
49
+ smsIcon: {
50
+ id: 'creatives.components.TemplatePreview.smsIcon',
51
+ defaultMessage: 'Sms Icon',
52
+ },
53
+ markAsRead: {
54
+ id: 'creatives.components.TemplatePreview.markAsRead',
55
+ defaultMessage: 'Mark as read',
56
+ },
57
+ reply: {
58
+ id: 'creatives.components.TemplatePreview.reply',
59
+ defaultMessage: 'Reply',
60
+ },
61
+ cancel: {
62
+ id: 'creatives.components.TemplatePreview.cancel',
63
+ defaultMessage: 'Cancel',
64
+ },
65
+ unicodeIconTooltip: {
66
+ id: `creatives.components.TemplatePreview.unicodeIconTooltip`,
67
+ defaultMessage:
68
+ 'This message has unicode characters. This may affect the cost per message.',
69
+ },
70
+ playVideo: {
71
+ id: 'creatives.componentsV2.TemplatePreview.playVideo',
72
+ defaultMessage: 'Play',
73
+ },
74
+ showDetails: {
75
+ id: 'creatives.componentsV2.TemplatePreview.showDetails',
76
+ defaultMessage: 'Show details',
77
+ },
78
+ });
@@ -0,0 +1,60 @@
1
+ import PropTypes from 'prop-types';
2
+ import React from 'react';
3
+ import styled from 'styled-components';
4
+ import { messagePositionConfig } from '../../config/toastr';
5
+ import ToastrMessage from '../ToastrMessage';
6
+
7
+ // import { FormattedMessage } from 'react-intl';
8
+ // import messages from './messages';
9
+
10
+ const StyledMessageContainer = styled.div`
11
+ position: fixed;
12
+ width: 320px;
13
+ transition: all .2s ease-out;
14
+ font-family: open-sans,sans-serif;
15
+ margin-top: 64px;
16
+ margin-right: 32px;
17
+ z-index: 10005;
18
+ `;
19
+
20
+ class Toastr extends React.Component { // eslint-disable-line react/prefer-stateless-function
21
+ constructor(prop) {
22
+ super(prop);
23
+ this.state = {
24
+ percentCompleted: 0,
25
+ percCompleted: {},
26
+ };
27
+ this.percCompleted = 0;
28
+ this.currentTime = 0;
29
+ this.closeMessagePopup = this.closeMessagePopup.bind(this);
30
+ }
31
+
32
+ closeMessagePopup(messageIndex) {
33
+ this.props.handleRemoveMessage(messageIndex);
34
+ }
35
+
36
+ render() {
37
+ return (
38
+ <StyledMessageContainer style={{ ...messagePositionConfig[this.props.position] }}>
39
+ {this.props.messagesList.map((message) => {
40
+
41
+ return <ToastrMessage key={message.messageId} timeout={this.props.timeout} messageId={message.messageId} title={message.title} text={message.text} type={message.type} handleMessageClose={this.closeMessagePopup} hideProgressBar={message.hideProgressBar} />;
42
+ })}
43
+ </StyledMessageContainer>
44
+ );
45
+ }
46
+ }
47
+
48
+ Toastr.propTypes = {
49
+ messagesList: PropTypes.array.isRequired,
50
+ timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),
51
+ position: PropTypes.string,
52
+ handleRemoveMessage: PropTypes.func,
53
+ };
54
+
55
+ Toastr.defaultProps = {
56
+ type: 'info',
57
+ timeout: '4',
58
+ position: 'bottom right',
59
+ };
60
+ export default Toastr;
@@ -0,0 +1,13 @@
1
+ /*
2
+ * Toastr Messages
3
+ *
4
+ * This contains all the text for the Toastr component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ header: {
10
+ id: 'creatives.components.Toastr.header',
11
+ defaultMessage: 'This is the Toastr component !',
12
+ },
13
+ });
@@ -0,0 +1,113 @@
1
+ /**
2
+ *
3
+ * ToastrMessage
4
+ *
5
+ */
6
+
7
+ import PropTypes from 'prop-types';
8
+
9
+ import React from 'react';
10
+ import { Progress } from 'semantic-ui-react';
11
+ import styled from 'styled-components';
12
+ import { FormattedMessage } from 'react-intl';
13
+ import { messageTypeConfig } from '../../config/toastr';
14
+
15
+ import messages from './messages';
16
+
17
+ const StyledMessageWrapper = styled.div`
18
+ background: #f9f9fa;
19
+ transition: all .2s fade-out;
20
+ -webkit-box-shadow: 2px 2px 10px -1px rgba(0,0,0,0.39);
21
+ -moz-box-shadow: 2px 2px 10px -1px rgba(0,0,0,0.39);
22
+ box-shadow: 2px 2px 10px -1px rgba(0,0,0,0.39);
23
+ border-radius: 5px;
24
+ `;
25
+ const StyleIcon = styled.i`
26
+ float: right;
27
+ cursor: pointer;
28
+ fontSize: 16px;
29
+ `;
30
+ const MessageContent = styled.div`
31
+ padding-left: 14px;
32
+ `;
33
+
34
+ const MessageHeader = styled.div`
35
+ padding-left: 14px;
36
+ font-weight: bold;
37
+ font-family: proxima-nova,sans-serif;
38
+ `;
39
+
40
+ const StyledMessageType = styled.div `
41
+ position: absolute;
42
+ width: 10px;
43
+ height: 100%;
44
+ border-top-left-radius: 5px;
45
+ border-bottom-left-radius: 5px;
46
+ `;
47
+
48
+ class ToastrMessage extends React.Component { // eslint-disable-line react/prefer-stateless-function
49
+ constructor(prop) {
50
+ super(prop);
51
+ this.state = { percent: 0 };
52
+ this.intervalId = null;
53
+ this.closeMessagePopup = this.closeMessagePopup.bind(this);
54
+ }
55
+
56
+ componentDidMount() {
57
+ const distance = 100 / ((this.props.timeout - 500) / 100);
58
+ if (this.props.timeout && this.props.timeout > 500) {
59
+ this.intervalId = setInterval(() => {
60
+ const percent = this.state.percent + distance;
61
+ this.setState({ percent: percent < 100 ? percent : 100 });
62
+ }, 100);
63
+ }
64
+ }
65
+
66
+ componentDidUpdate() {
67
+ if (this.state.percent >= 100 && this.intervalId) {
68
+ this.props.handleMessageClose(this.props.messageId);
69
+ clearTimeout(this.intervalId);
70
+ }
71
+ }
72
+
73
+ componentWillUnmount() {
74
+ if (this.intervalId) {
75
+ clearTimeout(this.intervalId);
76
+ }
77
+ }
78
+
79
+ closeMessagePopup(messageIndex) {
80
+ this.props.handleMessageClose(messageIndex);
81
+ }
82
+
83
+
84
+ render() {
85
+ return (
86
+ <StyledMessageWrapper key={this.props.messageId}>
87
+ <StyledMessageType style={{ ...messageTypeConfig[this.props.type] }} />
88
+ <div style={{ padding: `${16}px` }}>
89
+ <MessageHeader>
90
+ { this.props.title ? <span style={{ fontSize: `${20}px` }}>{this.props.title}</span> : '' }
91
+ <StyleIcon className="material-icons" onClick={() => this.closeMessagePopup(this.props.messageId)}><FormattedMessage {...messages.close} /></StyleIcon>
92
+ </MessageHeader>
93
+ <MessageContent>
94
+ {this.props.text}
95
+ </MessageContent>
96
+ </div>
97
+ {(this.props.timeout > 0 && !this.props.hideProgressBar) ? <Progress style={{ transition: `${0.4}s linear` }} percent={this.state.percent} attached="bottom" /> : ''}
98
+ </StyledMessageWrapper>
99
+ );
100
+ }
101
+ }
102
+
103
+ ToastrMessage.propTypes = {
104
+ messageId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
105
+ timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),
106
+ title: PropTypes.string,
107
+ text: PropTypes.string,
108
+ type: PropTypes.string,
109
+ handleMessageClose: PropTypes.func,
110
+ hideProgressBar: PropTypes.bool,
111
+ };
112
+
113
+ export default ToastrMessage;
@@ -0,0 +1,17 @@
1
+ /*
2
+ * ToastrMessage Messages
3
+ *
4
+ * This contains all the text for the ToastrMessage component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ header: {
10
+ id: 'creatives.components.ToastrMessage.header',
11
+ defaultMessage: 'This is the ToastrMessage component !',
12
+ },
13
+ close: {
14
+ id: 'creatives.components.ToastrMessage.close',
15
+ defaultMessage: 'close',
16
+ },
17
+ });
@@ -0,0 +1,46 @@
1
+ .ui.navbar.menu {
2
+ height: 40px !important;
3
+ }
4
+ .ui.menu.navbar .item>img.logo{
5
+ height: 27px !important;
6
+ padding-left: 0!important;
7
+ margin: 0 auto;
8
+ max-width: 200px;
9
+ }
10
+ .ui.menu.navbar .ui.selection.dropdown{
11
+ height: 40px !important;
12
+ }
13
+
14
+ .ui.menu .ui.dropdown .menu>.selected.item {
15
+ background: #151821;
16
+ }
17
+ .org-list-drp-dwn .menu > .item{
18
+ height: 40px !important;
19
+ }
20
+ .ui.menu.navbar .ui.dropdown .menu>.item{
21
+ height: 40px !important;
22
+ }
23
+
24
+ .ui.search.selection.dropdown>input.search{
25
+ padding-left: 12px !important;
26
+ padding-top: 8px !important;
27
+ padding-bottom: 8px !important;
28
+ }
29
+
30
+ .ui.menu:not(.vertical) .right.item, .ui.menu:not(.vertical) .right.menu {
31
+ padding-right: 4px;
32
+ }
33
+
34
+ .ui.menu .item {
35
+ padding-left: 12px !important;
36
+ padding-right: 12px !important;
37
+ }
38
+
39
+ .ui.secondary.vertical.menu>.item {
40
+ margin-bottom: 0 !important;
41
+ padding: 8px 16px !important;
42
+ }
43
+
44
+ .ui.menu.navbar .item.dropdownItem {
45
+ padding: 0px !important;
46
+ }
@@ -0,0 +1,113 @@
1
+ import PropTypes from 'prop-types';
2
+ import React from 'react';
3
+ // import styled from 'styled-components';
4
+
5
+ import { Menu, Image, Dropdown, Popup } from 'semantic-ui-react';
6
+ import { FormattedMessage } from 'react-intl';
7
+ import { Link } from 'react-router';
8
+
9
+ import { loadItem } from 'services/localStorageApi';
10
+ import messages from './messages';
11
+ import './_topbar.scss';
12
+
13
+ const logo = require('./assets/images/capillary_logo.png');
14
+
15
+ class TopBar extends React.Component { // eslint-disable-line react/prefer-stateless-function
16
+ constructor(props) {
17
+ super(props);
18
+ this.state = {
19
+ activeItem: '',
20
+ orgList: [],
21
+ selectedOrg: loadItem('orgID'),
22
+ };
23
+ this.handleItemClick = this.handleItemClick.bind(this);
24
+ this.logout = this.logout.bind(this);
25
+ this.handleOrgChange = this.handleOrgChange.bind(this);
26
+ }
27
+
28
+ componentDidUpdate(prevProps) {
29
+ if (prevProps.orgID !== this.props.orgID) {
30
+ this.props.navigateToDashboard();
31
+ }
32
+ }
33
+
34
+ handleOrgChange(data) {
35
+ const orgId = data.value;
36
+ if (this.state.selectedOrg !== orgId) {
37
+ this.props.changeOrg(orgId);
38
+ this.setState({ selectedOrg: orgId });
39
+ }
40
+ }
41
+
42
+ handleItemClick(e) {
43
+ this.setState({ activeItem: e.target.id });
44
+ }
45
+
46
+ logout(e) {
47
+ e.preventDefault();
48
+ this.props.logout();
49
+ }
50
+
51
+ render() {
52
+ const proxyOrgList = this.props.proxyOrgList;
53
+ const defaultOrgName = this.props.orgName;
54
+ const selectedOrg = loadItem('orgID');
55
+ return (
56
+ <Menu className="navbar" key="navbar">
57
+
58
+ <Menu.Item key="logo" as={Link} to="/" name="logo" className="logo-container" onClick={this.handleItemClick}>
59
+ <Image className="logo" src={logo} alt="Capillary Technologies" />
60
+ </Menu.Item>
61
+
62
+ { proxyOrgList.length > 1 ?
63
+ <Menu.Item className="dropdownItem" key="orgSelection">
64
+ <FormattedMessage {...messages.dropdownMessage}>
65
+ {(message) => <Dropdown
66
+ placeholder={message}
67
+ className="org-list-drp-dwn"
68
+ defaultValue={selectedOrg}
69
+ search
70
+ options={proxyOrgList}
71
+ selection
72
+ onChange={(event, data) => this.handleOrgChange(data)}
73
+ />}
74
+ </FormattedMessage>
75
+ </Menu.Item> :
76
+ <Menu.Item key="default-org">
77
+ {defaultOrgName}
78
+ </Menu.Item>
79
+ }
80
+
81
+ <Menu.Menu position="right">
82
+ <Menu.Item key="first-name">
83
+ <FormattedMessage {...messages.hi} />&nbsp;{this.props.userName}!
84
+ </Menu.Item>
85
+ <Menu.Item key="user-details">
86
+ <Popup
87
+ trigger={<i className="material-icons">person</i>}
88
+ content={< div className="ui secondary vertical menu">
89
+ <a href="" className="item hide"><FormattedMessage {...messages.profile} /><i className="user icon" /></a>
90
+ <a href="" className="item hide"><FormattedMessage {...messages.settings} /> <i className="settings icon" /></a>
91
+ <a href="" className="item" onClick={this.logout}><FormattedMessage {...messages.logout} />
92
+ <i className="sign out icon" /></a> </div >}
93
+ on="click" position="bottom right" offset={7}
94
+ />
95
+ </Menu.Item>
96
+ </Menu.Menu>
97
+ </Menu>
98
+
99
+ );
100
+ }
101
+ }
102
+
103
+ TopBar.propTypes = {
104
+ userName: PropTypes.string,
105
+ proxyOrgList: PropTypes.array,
106
+ orgName: PropTypes.string,
107
+ orgID: PropTypes.number,
108
+ navigateToDashboard: PropTypes.func,
109
+ changeOrg: PropTypes.func,
110
+ logout: PropTypes.func,
111
+ };
112
+
113
+ export default TopBar;
@@ -0,0 +1,29 @@
1
+ /*
2
+ * TopBar Messages
3
+ *
4
+ * This contains all the text for the TopBar component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ profile: {
10
+ id: 'reon.components.TopBar.profile',
11
+ defaultMessage: 'Profile',
12
+ },
13
+ settings: {
14
+ id: 'reon.components.TopBar.settings',
15
+ defaultMessage: 'Settings',
16
+ },
17
+ logout: {
18
+ id: 'reon.components.TopBar.logout',
19
+ defaultMessage: 'Logout',
20
+ },
21
+ dropdownMessage: {
22
+ id: 'reon.components.TopBar.brand.dropdown',
23
+ defaultMessage: 'Select brand',
24
+ },
25
+ hi: {
26
+ id: 'creatives.components.TopBar.brand.dropdown',
27
+ defaultMessage: 'Hi',
28
+ },
29
+ });
@@ -0,0 +1,7 @@
1
+ import * as types from './constants';
2
+
3
+ export function getSidebar() {
4
+ return {
5
+ type: types.GET_SIDEBAR_REQUEST,
6
+ };
7
+ }
@@ -0,0 +1,114 @@
1
+ export const GET_SIDEBAR_REQUEST = 'app/App/GET_SIDEBAR_REQUEST';
2
+ export const GET_SIDEBAR_SUCCESS = 'app/App/GET_SIDEBAR_SUCCESS';
3
+ export const GET_SIDEBAR_FAILURE = 'app/App/GET_SIDEBAR_FAILURE';
4
+
5
+ export const STORE2DOOR_PLUS_ENABLED = 'STORE2DOOR_PLUS_ENABLED';
6
+ export const TRAI_DLT = 'TRAI_DLT';
7
+ export const CARD_BASED_SCOPE = 'CARD_BASED_SCOPE';
8
+ export const HOSPITALITY_BASED_SCOPE = 'HOSPITALITY_BASED_SCOPE';
9
+ export const REGISTRATION_CUSTOM_FIELD = 'Registration custom fields';
10
+ export const GIFT_CARDS = 'GIFT_CARDS';
11
+ export const PROMO_ENGINE = 'PROMO_ENGINE';
12
+ export const LIQUID_SUPPORT = 'ENABLE_LIQUID_SUPPORT';
13
+ export const CUSTOM_TAG = 'CustomTagMessage';
14
+ export const CUSTOMER_EXTENDED_FIELD = 'Customer extended fields';
15
+ export const EXTENDED_TAG = 'ExtendedTagMessage';
16
+ export const BADGES_UI_ENABLED = 'BADGES_UI_ENABLED';
17
+ export const JP_LOCALE_HIDE_FEATURE = 'JP_LOCALE_HIDE_FEATURE';
18
+ export const ENABLE_WECHAT = 'ENABLE_WECHAT';
19
+ export const ENABLE_CUSTOMER_BARCODE_TAG = "ENABLE_CUSTOMER_BARCODE_TAG";
20
+ export const EMAIL_UNSUBSCRIBE_TAG_MANDATORY = "EMAIL_UNSUBSCRIBE_TAG_MANDATORY";
21
+ export const ENABLE_NEW_MPUSH = "ENABLE_NEW_MPUSH";
22
+
23
+ export const CARD_RELATED_TAGS = [
24
+ 'card_series',
25
+ 'card_number',
26
+ 'card_issue_date',
27
+ 'card_status',
28
+ 'card_series_name',
29
+ 'card_name',
30
+ ];
31
+
32
+ export const HOSPITALITY_RELATED_TAGS = [
33
+ "hospitality_series",
34
+ "tax_Code",
35
+ "roomTypeCode",
36
+ "bookingChannel",
37
+ "hotelReservationID_ResID_Type",
38
+ "lastModifyDateTime",
39
+ "guestCounts_IsPerRoom",
40
+ "ratePlan_RatePlanCode",
41
+ "resID_Value",
42
+ "numberOfUnits",
43
+ "rateTimeUnit",
44
+ "resStatus",
45
+ "timeSpan_End",
46
+ "roomStay_MarketCode",
47
+ "createDateTime",
48
+ "amount",
49
+ "timeSpan_Start",
50
+ "email",
51
+ "resID_Source",
52
+ ];
53
+ export const GIFT_VOUCHER_RELATED_TAGS = [
54
+ "gift_voucher",
55
+ "gift_voucher_expiry_date.FORMAT_1",
56
+ "gift_voucher_expiry_date.FORMAT_2",
57
+ "gift_voucher_expiry_date.FORMAT_3",
58
+ "gift_voucher_expiry_date.FORMAT_4",
59
+ "gift_voucher_expiry_date.FORMAT_5",
60
+ "gift_voucher_expiry_date.FORMAT_6",
61
+ "gift_voucher_expiry_date.FORMAT_7",
62
+ "gift_voucher_expiry_date.FORMAT_8",
63
+ "gift_voucher_expiry_date",
64
+ ];
65
+ export const PROMO_ENGINE_RELATED_TAGS = [
66
+ "promotion",
67
+ "promotion_expiry_date.FORMAT_1",
68
+ "promotion_expiry_date.FORMAT_2",
69
+ "promotion_expiry_date.FORMAT_3",
70
+ "promotion_expiry_date.FORMAT_4",
71
+ "promotion_expiry_date.FORMAT_5",
72
+ "promotion_expiry_date.FORMAT_6",
73
+ "promotion_expiry_date.FORMAT_7",
74
+ "promotion_expiry_date.FORMAT_8",
75
+ "promotion_expiry_date",
76
+ ];
77
+
78
+ export const BADGES_RELATED_TAGS = [
79
+ "Badge_expiry_date",
80
+ "badges_issue_expiry_date",
81
+ "badge_expiry_mm_slash_dd_slash_yyyy",
82
+ "badge_expiry_dd_slash_mm_slash_yyyy",
83
+ "badge_expiry_yyyy_hyphen_mm_hyphen_dd",
84
+ "badge_expiry_mm_slash_dd_slash_yy",
85
+ "badge_expiry_dd_space_Mon_space_yyyy",
86
+ "badge_expiry_Day_comma_space_Mon_space_dd_comma_space_yy",
87
+ "badge_expiry_Dd_dot_mm_dot_yy",
88
+ "badge_expiry_dd_space_Mon",
89
+ "Days_until_expiry",
90
+ "badges_enroll_expiry_date.FORMAT_1",
91
+ "badges_enroll_expiry_date.FORMAT_2",
92
+ "badges_enroll_expiry_date.FORMAT_3",
93
+ "badges_enroll_expiry_date.FORMAT_4",
94
+ "badges_enroll_expiry_date.FORMAT_5",
95
+ "badges_enroll_expiry_date.FORMAT_6",
96
+ "badges_enroll_expiry_date.FORMAT_7",
97
+ "badges_enroll_expiry_date.FORMAT_8",
98
+ "badges_enroll_expiring_in_days",
99
+ "badges_issue_expiry_date.FORMAT_1",
100
+ "badges_issue_expiry_date.FORMAT_2",
101
+ "badges_issue_expiry_date.FORMAT_3",
102
+ "badges_issue_expiry_date.FORMAT_4",
103
+ "badges_issue_expiry_date.FORMAT_5",
104
+ "badges_issue_expiry_date.FORMAT_6",
105
+ "badges_issue_expiry_date.FORMAT_7",
106
+ "badges_issue_expiry_date.FORMAT_8",
107
+ "badges_issue_expiring_in_days",
108
+ ];
109
+ export const BADGES_ENROLL = 'BADGES_ENROLL';
110
+ export const BADGES_ISSUE = 'BADGES_ISSUE';
111
+
112
+ export const CUSTOMER_BARCODE_TAG = "customer_barcode";
113
+ export const COPY_OF = "Copy of";
114
+ export const ENTRY_TRIGGER_TAG_REGEX = /\bentryTrigger\.\w+(?:\.\w+)?(?:\(\w+\))?/g;
@@ -0,0 +1,52 @@
1
+ /**
2
+ *
3
+ * App.js
4
+ *
5
+ * This component is the skeleton around the actual pages, and should only
6
+ * contain code that should be seen on all pages. (e.g. navigation bar)
7
+ *
8
+ */
9
+
10
+ import React, { useEffect } from 'react'; // eslint-disable-line no-unused-vars
11
+ import { Switch } from 'react-router';
12
+ import { ConnectedRouter } from 'connected-react-router/immutable';
13
+ import history from 'utils/history';
14
+
15
+ import Cap from '../Cap';
16
+ import CapV2 from '../../v2Containers/Cap';
17
+ import Login from '../Login';
18
+ import NotFoundPage from '../NotFoundPage';
19
+
20
+ import GlobalStyle from '../../global-styles';
21
+ import config from '../../config/app';
22
+ import withReactRouterV3Compatibility from '../../hoc/withReactRouterV3Compatibility';
23
+ import RenderRoute from '../../v2Components/RenderRoute';
24
+ import { updateCharCount } from '../../utils/smsCharCountV2';
25
+
26
+ const loginUrl =
27
+ process.env.NODE_ENV === 'production'
28
+ ? `${config.production.login_url}`
29
+ : `${config.development.login_url}`;
30
+
31
+ // const Protected = userIsAuthenticatedRedir(Cap);
32
+ const v3CompatibleCap = withReactRouterV3Compatibility(Cap);
33
+ const v3CompatibleCapV2 = withReactRouterV3Compatibility(CapV2);
34
+
35
+ export default function App() {
36
+ useEffect(() => {
37
+ updateCharCount("", false);
38
+ });
39
+ return (
40
+ <div>
41
+ <ConnectedRouter history={history}>
42
+ <Switch>
43
+ <RenderRoute exact path={loginUrl} component={Login} />
44
+ <RenderRoute path="/v2" component={v3CompatibleCapV2} key="/v2" />
45
+ <RenderRoute path="/" component={v3CompatibleCap} key="/" />
46
+ <RenderRoute component={NotFoundPage} />
47
+ </Switch>
48
+ </ConnectedRouter>
49
+ <GlobalStyle />
50
+ </div>
51
+ );
52
+ }
@@ -0,0 +1,19 @@
1
+ import { fromJS } from 'immutable';
2
+ import * as types from './constants';
3
+
4
+ const initialState = fromJS({});
5
+
6
+ function appReducer(state = initialState, action) {
7
+ switch (action.type) {
8
+ case types.GET_SIDEBAR_REQUEST:
9
+ return state;
10
+ case types.GET_SIDEBAR_SUCCESS:
11
+ return state;
12
+ case types.GET_SIDEBAR_FAILURE:
13
+ return state;
14
+ default:
15
+ return state;
16
+ }
17
+ }
18
+
19
+ export default appReducer;