@capillarytech/creatives-library 3.1.43 → 3.1.44

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.
@@ -3191,7 +3191,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3191
3191
 
3192
3192
  FormBuilder.defaultProps = {
3193
3193
  isNewVersionFlow: false,
3194
- userLocale: 'en',
3194
+ userLocale: localStorage.getItem('jlocale') || 'en',
3195
3195
  };
3196
3196
 
3197
3197
  FormBuilder.propTypes = {
@@ -382,7 +382,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
382
382
  <div>
383
383
  {/*<Spin spinning={this.props.Gallery.assetUploading || this.props.Gallery.fetchingAllAssets}>*/}
384
384
  <Helmet
385
- title="Gallery"
385
+ title={this.props.intl.formatMessage(messages.gallery)}
386
386
  />
387
387
  {/* this.props.location.query.type !== 'embedded' && <Row style={{marginBottom: '16px'}}>
388
388
  <Col>
@@ -0,0 +1,63 @@
1
+ import { defineMessages } from 'react-intl';
2
+ export default defineMessages({
3
+ "sms": {
4
+ id: 'reon.components.Cap.sms',
5
+ defaultMessage: 'SMS',
6
+ },
7
+ "wechat": {
8
+ id: 'reon.components.Cap.wechat',
9
+ defaultMessage: 'WeChat',
10
+ },
11
+ "gallery": {
12
+ id: 'reon.components.Cap.gallery',
13
+ defaultMessage: 'Gallery',
14
+ },
15
+ "creativesDashboard": {
16
+ id: 'reon.components.Cap.creativesDashboard',
17
+ defaultMessage: 'Creatives',
18
+ },
19
+ "creatives": {
20
+ id: 'reon.components.Cap.creatives',
21
+ defaultMessage: 'Creatives',
22
+ },
23
+ "campaigns": {
24
+ id: 'reon.components.Cap.campaigns',
25
+ defaultMessage: 'Campaigns',
26
+ },
27
+ "loyalty": {
28
+ id: 'reon.components.Cap.loyalty',
29
+ defaultMessage: 'Loyalty',
30
+ },
31
+ "member care": {
32
+ id: 'reon.components.Cap.memberCare',
33
+ defaultMessage: 'Member Care',
34
+ },
35
+ "workbench": {
36
+ id: 'reon.components.Cap.Workbench',
37
+ defaultMessage: 'WorkBench',
38
+ },
39
+ "store care": {
40
+ id: 'reon.components.Cap.storeCare',
41
+ defaultMessage: 'Store Care',
42
+ },
43
+ "store performance": {
44
+ id: 'reon.components.Cap.storePerformance',
45
+ defaultMessage: 'Store Performance',
46
+ },
47
+ "email": {
48
+ id: 'reon.components.Cap.email',
49
+ defaultMessage: 'Email',
50
+ },
51
+ "ebill": {
52
+ id: 'reon.components.Cap.ebill',
53
+ defaultMessage: 'Ebill',
54
+ },
55
+ "campaignsDashboard": {
56
+ id: 'reon.components.campaignsDashboard',
57
+ defaultMessage: 'Campaigns',
58
+ },
59
+ "campaignsHome": {
60
+ id: 'reon.components.campaignsHome',
61
+ defaultMessage: "Campaigns Home",
62
+ },
63
+ });
package/i18n.js CHANGED
@@ -4,15 +4,16 @@
4
4
  * This will setup the i18n language files and locale data for your app.
5
5
  *
6
6
  */
7
- import { addLocaleData } from 'react-intl';
8
- import enLocaleData from 'react-intl/locale-data/en';
9
- import zhLocaleData from 'react-intl/locale-data/zh';
7
+ const addLocaleData = require('react-intl').addLocaleData;
8
+ const enLocaleData = require('react-intl/locale-data/en');
9
+ const zhLocaleData = require('react-intl/locale-data/zh');
10
10
 
11
- import { DEFAULT_LOCALE } from './containers/Cap/constants'; // eslint-disable-line
12
- import enTranslationMessages from './translations/en.json';
13
- import zhTranslationMessages from './translations/zh.json';
11
+ const enTranslationMessages = require('./translations/en.json');
12
+ const zhTranslationMessages = require('./translations/zh.json');
14
13
 
15
- export const appLocales = [
14
+ const DEFAULT_LOCALE = 'en';
15
+
16
+ const appLocales = [
16
17
  'en',
17
18
  'zh',
18
19
  ];
@@ -20,7 +21,7 @@ export const appLocales = [
20
21
  addLocaleData(enLocaleData);
21
22
  addLocaleData(zhLocaleData);
22
23
 
23
- export const formatTranslationMessages = (locale, messages) => {
24
+ const formatTranslationMessages = (locale, messages) => {
24
25
  const defaultFormattedMessages = locale !== DEFAULT_LOCALE
25
26
  ? formatTranslationMessages(DEFAULT_LOCALE, enTranslationMessages)
26
27
  : {};
@@ -33,7 +34,13 @@ export const formatTranslationMessages = (locale, messages) => {
33
34
  }, {});
34
35
  };
35
36
 
36
- export const translationMessages = {
37
+ const translationMessages = {
37
38
  en: formatTranslationMessages('en', enTranslationMessages),
38
39
  zh: formatTranslationMessages('zh', zhTranslationMessages),
39
40
  };
41
+
42
+
43
+ exports.appLocales = appLocales;
44
+ exports.formatTranslationMessages = formatTranslationMessages;
45
+ exports.translationMessages = translationMessages;
46
+ exports.DEFAULT_LOCALE = DEFAULT_LOCALE;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capillarytech/creatives-library",
3
3
  "author": "meharaj",
4
- "version": "3.1.43",
4
+ "version": "3.1.44",
5
5
  "description": "Capillary creatives ui",
6
6
  "main": "./index.js",
7
7
  "module": "./index.es.js",
@@ -3303,7 +3303,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
3303
3303
 
3304
3304
  FormBuilder.defaultProps = {
3305
3305
  isNewVersionFlow: false,
3306
- userLocale: 'en',
3306
+ userLocale: localStorage.getItem('jlocale') || 'en',
3307
3307
  };
3308
3308
 
3309
3309
  FormBuilder.propTypes = {
@@ -0,0 +1,46 @@
1
+ /**
2
+ *
3
+ * Header
4
+ *
5
+ */
6
+
7
+ import PropTypes from 'prop-types';
8
+
9
+ import React from 'react';
10
+ // import styled from 'styled-components';
11
+ import { FormattedMessage } from 'react-intl';
12
+
13
+ import { CapRow, CapColumn, CapInput, CapButton } from '@capillarytech/cap-ui-library';
14
+ import messages from './messages';
15
+
16
+
17
+ function Header(props) {
18
+ return (
19
+ <div>
20
+ <CapRow className="template-form-header">
21
+ <CapColumn span={10}>
22
+ <CapInput id="template-name" placeholder="Enter template name*" defaultValue={props.templateName} type="input" onChange={props.templateNameHandler}/>
23
+ </CapColumn>
24
+ <CapColumn span={2} offset={8}>
25
+ <CapButton id="preview-button" type="cancel" onClick={props.previewHandler}> <FormattedMessage {...messages.preview} /> </CapButton>
26
+ </CapColumn>
27
+ <CapColumn span={2}>
28
+ <CapButton id="cancel-button" type="cancel" onClick={props.cancelHandler}> <FormattedMessage {...messages.cancel} /> </CapButton>
29
+ </CapColumn>
30
+ <CapColumn span={2}>
31
+ <CapButton id="save-button" type="primary" onClick={props.saveHandler}> <FormattedMessage {...messages.save} /> </CapButton>
32
+ </CapColumn>
33
+ </CapRow>
34
+ </div>
35
+ );
36
+ }
37
+
38
+ Header.propTypes = {
39
+ templateNameHandler: PropTypes.func,
40
+ previewHandler: PropTypes.func,
41
+ cancelHandler: PropTypes.func,
42
+ saveHandler: PropTypes.func,
43
+ templateName: PropTypes.string,
44
+ };
45
+
46
+ export default Header;
@@ -0,0 +1,10 @@
1
+ // import React from 'react';
2
+ // import { shallow } from 'enzyme';
3
+
4
+ // import Header from '../index';
5
+
6
+ describe('<Header />', () => {
7
+ it('Expect to have unit tests specified', () => {
8
+ expect(true).toEqual(false);
9
+ });
10
+ });
@@ -83,7 +83,7 @@ class NewCallTask extends React.Component { // eslint-disable-line react/prefer-
83
83
  }
84
84
 
85
85
  render() {
86
- const { intl, isLoading, metaEntities } = this.props;
86
+ const { intl, isLoading, metaEntities, selectedOfferDetails } = this.props;
87
87
  const { formatMessage } = intl;
88
88
  const { subject, messageBody, description } = this.state;
89
89
  const tags = metaEntities && metaEntities.tags ? metaEntities.tags.standard : [];
@@ -107,6 +107,7 @@ class NewCallTask extends React.Component { // eslint-disable-line react/prefer-
107
107
  label={formatMessage(messages.personalisationTags)}
108
108
  tags={tags}
109
109
  onTagSelect={this.onTagSelect}
110
+ selectedOfferDetails={selectedOfferDetails}
110
111
  />
111
112
  <CapInput.TextArea
112
113
  setInputRef={this.setInputRef}
@@ -148,6 +149,7 @@ NewCallTask.propTypes = {
148
149
  templateData: PropTypes.object,
149
150
  isLoading: PropTypes.bool,
150
151
  metaEntities: PropTypes.object,
152
+ selectedOfferDetails: PropTypes.array,
151
153
  };
152
154
 
153
155
  export default injectIntl(NewCallTask);
@@ -431,7 +431,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
431
431
  </div>
432
432
  ) : <input style={{ display: 'none'}} id="fileName" type="file" onChange={(e) => this.uploadImages(e, {files: e.target.files})} accept="image/*" multiple/>;
433
433
  const isLoading = this.props.Gallery.assetUploading || this.props.Gallery.fetchingAllAssets;
434
- const loadingTip = "Loading gallery... ";
434
+ const loadingTip = <FormattedMessage {...messages.loadingGallery} />;
435
435
 
436
436
  return (
437
437
  <div>
@@ -102,4 +102,8 @@ export default defineMessages({
102
102
  id: `creatives.containersV2.Assets.Gallery.noTemplatesFound`,
103
103
  defaultMessage: 'No templates found',
104
104
  },
105
+ loadingGallery: {
106
+ id: `creatives.containersV2.Assets.Gallery.loadingGallery`,
107
+ defaultMessage: 'Loading gallery...',
108
+ },
105
109
  });
@@ -70,7 +70,7 @@ export class CallTask extends React.Component { // eslint-disable-line react/pre
70
70
  };
71
71
  }
72
72
  render() {
73
- const { intl, onCallTaskSubmit, templateData, loadingMetaEntities, metaEntities } = this.props;
73
+ const { intl, onCallTaskSubmit, templateData, loadingMetaEntities, metaEntities, selectedOfferDetails } = this.props;
74
74
  const { formatMessage } = intl;
75
75
  const { mode } = this.state;
76
76
  return (
@@ -82,6 +82,7 @@ export class CallTask extends React.Component { // eslint-disable-line react/pre
82
82
  mode={mode}
83
83
  templateData={templateData}
84
84
  onCallTaskSubmit={onCallTaskSubmit}
85
+ selectedOfferDetails={selectedOfferDetails}
85
86
  />
86
87
  :
87
88
  <div>
@@ -132,6 +133,7 @@ CallTask.propTypes = {
132
133
  showContentInSlidebox: PropTypes.bool,
133
134
  onCreateNew: PropTypes.func,
134
135
  isFullMode: PropTypes.bool,
136
+ selectedOfferDetails: PropTypes.array,
135
137
  };
136
138
 
137
139
 
@@ -187,6 +187,7 @@ function SlideBoxContent(props) {
187
187
  templateData={templateData}
188
188
  onCallTaskSubmit={onCallTaskSubmit}
189
189
  forwardedTags={forwardedTags}
190
+ selectedOfferDetails={selectedOfferDetails}
190
191
  />
191
192
  }
192
193
  {
@@ -195,6 +196,7 @@ function SlideBoxContent(props) {
195
196
  mode={'create'}
196
197
  onCallTaskSubmit={onCallTaskSubmit}
197
198
  forwardedTags={forwardedTags}
199
+ selectedOfferDetails={selectedOfferDetails}
198
200
  />
199
201
  }
200
202
  {isCreateSms && (
@@ -273,6 +275,7 @@ function SlideBoxContent(props) {
273
275
  getDefaultTags={type}
274
276
  onValidationFail={onValidationFail}
275
277
  forwardedTags={forwardedTags}
278
+ selectedOfferDetails={selectedOfferDetails}
276
279
  />
277
280
  }
278
281
  {isCreateMPush &&
@@ -296,7 +299,8 @@ function SlideBoxContent(props) {
296
299
  showTemplateName={showTemplateName}
297
300
  query={query}
298
301
  forwardedTags={forwardedTags}
299
- onValidationFail={onValidationFail}/>
302
+ onValidationFail={onValidationFail}
303
+ selectedOfferDetails={selectedOfferDetails}/>
300
304
  }
301
305
  </CreativesWrapper>
302
306
  );
@@ -1705,6 +1705,7 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
1705
1705
  setModalContent={this.setModalContent}
1706
1706
  startValidation={this.state.startValidation}
1707
1707
  stopValidation={this.stopValidation}
1708
+ selectedOfferDetails={this.props.selectedOfferDetails}
1708
1709
  />
1709
1710
  </CapColumn>
1710
1711
  {this.props.iosCtasData && this.state.showIosCtaTable &&
@@ -1792,6 +1792,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
1792
1792
  setModalContent={this.setModalContent}
1793
1793
  startValidation={this.state.startValidation}
1794
1794
  stopValidation={this.stopValidation}
1795
+ selectedOfferDetails={this.props.selectedOfferDetails}
1795
1796
  />}
1796
1797
  </CapColumn>
1797
1798
  {this.props.iosCtasData && this.state.showIosCtaTable &&
@@ -176,7 +176,7 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
176
176
  const unicodeEnabled = _.get(this.state, `formData[0]['unicode-validity']`);
177
177
  const smsDetails = updateCharCount(content || "", unicodeEnabled || false);
178
178
  if (this.smsCount.current) {
179
- this.smsCount.current.innerText = `${smsDetails.parts}SMS (${smsDetails.chars_used} characters)`;
179
+ this.smsCount.current.innerText = `${smsDetails.parts}${this.props.intl.formatMessage(messages.sms)} (${smsDetails.chars_used} ${this.props.intl.formatMessage(messages.characters)})`;
180
180
  }
181
181
  }
182
182
 
@@ -110,4 +110,20 @@ export default defineMessages({
110
110
  id: 'creatives.containersV2.Create.templateNotValid',
111
111
  defaultMessage: 'Template data is not valid',
112
112
  },
113
+ "Creative name": {
114
+ id: 'creatives.containersV2.Create.creativeName',
115
+ defaultMessage: 'Creative name',
116
+ },
117
+ "Add label": {
118
+ id: 'creatives.containersV2.Create.addLabel',
119
+ defaultMessage: 'Add label',
120
+ },
121
+ "sms": {
122
+ id: 'creatives.containersV2.Create.sms',
123
+ defaultMessage: 'SMS',
124
+ },
125
+ "characters" : {
126
+ id: 'creatives.containersV2.Create.characters',
127
+ defaultMessage: 'characters',
128
+ },
113
129
  });
@@ -194,7 +194,7 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
194
194
  const unicodeEnabled = _.get(this.state, `formData[0]['unicode-validity']`);
195
195
  const smsDetails = updateCharCount(content || "", unicodeEnabled || false);
196
196
  if (this.smsCount.current) {
197
- this.smsCount.current.innerText = `${smsDetails.parts}SMS (${smsDetails.chars_used} characters)`;
197
+ this.smsCount.current.innerText = `${smsDetails.parts}${this.props.intl.formatMessage(messages.sms)} (${smsDetails.chars_used} ${this.props.intl.formatMessage(messages.characters)})`;
198
198
  }
199
199
  }
200
200
 
@@ -102,4 +102,20 @@ export default defineMessages({
102
102
  id: 'creatives.containersV2.Edit.templateMarkedSuccessfully',
103
103
  defaultMessage: "Template Marked as Final Successfully",
104
104
  },
105
+ "Creative name": {
106
+ id: 'creatives.containersV2.Edit.creativeName',
107
+ defaultMessage: 'Creative name',
108
+ },
109
+ "Add label": {
110
+ id: 'creatives.containersV2.Edit.addLabel',
111
+ defaultMessage: 'Add label',
112
+ },
113
+ "sms": {
114
+ id: 'creatives.containersV2.Edit.sms',
115
+ defaultMessage: 'SMS',
116
+ },
117
+ "characters" : {
118
+ id: 'creatives.containersV2.Edit.characters',
119
+ defaultMessage: 'characters',
120
+ },
105
121
  });