@capillarytech/creatives-library 3.1.43 → 3.1.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/FormBuilder/index.js +1 -1
- package/containers/Assets/Gallery/index.js +1 -1
- package/containers/Cap/messsages.js +63 -0
- package/i18n.js +16 -9
- package/package.json +1 -1
- package/v2Components/FormBuilder/index.js +1 -1
- package/v2Components/Header/index.js +46 -0
- package/v2Components/Header/tests/index.test.js +10 -0
- package/v2Components/NewCallTask/index.js +3 -1
- package/v2Containers/Assets/Gallery/index.js +1 -1
- package/v2Containers/Assets/Gallery/messages.js +4 -0
- package/v2Containers/CallTask/index.js +3 -1
- package/v2Containers/CreativesContainer/SlideBoxContent.js +5 -1
- package/v2Containers/MobilePush/Create/index.js +1 -0
- package/v2Containers/MobilePush/Edit/index.js +1 -0
- package/v2Containers/Sms/Create/index.js +1 -1
- package/v2Containers/Sms/Create/messages.js +16 -0
- package/v2Containers/Sms/Edit/index.js +1 -1
- package/v2Containers/Sms/Edit/messages.js +16 -0
|
@@ -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=
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
import zhTranslationMessages from './translations/zh.json';
|
|
11
|
+
const enTranslationMessages = require('./translations/en.json');
|
|
12
|
+
const zhTranslationMessages = require('./translations/zh.json');
|
|
14
13
|
|
|
15
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
@@ -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;
|
|
@@ -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 =
|
|
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}
|
|
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}
|
|
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
|
});
|