@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.
- package/assets/noImage.png +0 -0
- package/components/BreadCrumbs/messages.js +1 -1
- package/components/CapTagList/index.js +3 -3
- package/components/CapTagList/messages.js +4 -16
- package/components/Ckeditor/messages.js +1 -1
- package/components/CustomPopOver/index.js +4 -3
- package/components/CustomPopOver/messages.js +1 -5
- package/components/DateFilter/index.js +12 -12
- package/components/DateFilter/messages.js +0 -40
- package/components/DateRange/index.js +4 -5
- package/components/DateRange/messages.js +1 -13
- package/components/Edmeditor/messages.js +1 -1
- package/components/EmailPreview/index.js +4 -4
- package/components/EmailPreview/messages.js +2 -18
- package/components/Footer/messages.js +1 -1
- package/components/FormBuilder/index.js +19 -15
- package/components/FormBuilder/messages.js +1 -33
- package/components/Header/messages.js +4 -4
- package/components/ImagePreview/index.js +1 -1
- package/components/ImagePreview/messages.js +1 -5
- package/components/PageHeader/messages.js +1 -1
- package/components/PreviewSideBar/index.js +2 -2
- package/components/PreviewSideBar/messages.js +6 -14
- package/components/Sidebar/messages.js +3 -3
- package/components/SmsTest/index.js +4 -6
- package/components/SmsTest/messages.js +1 -9
- package/components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +3 -3
- package/components/TemplatePreview/index.js +10 -11
- package/components/TemplatePreview/messages.js +7 -23
- package/components/Toastr/messages.js +1 -1
- package/components/ToastrMessage/index.js +1 -4
- package/components/ToastrMessage/messages.js +1 -5
- package/components/TopBar/messages.js +1 -1
- package/config/app.js +0 -2
- package/containers/Assets/Gallery/messages.js +20 -20
- package/containers/Cap/index.js +5 -5
- package/containers/Dashboard/index.js +2 -2
- package/containers/Dashboard/messages.js +1 -1
- package/containers/Ebill/index.js +1 -1
- package/containers/Ebill/messages.js +16 -20
- package/containers/Email/index.js +24 -24
- package/containers/Email/messages.js +59 -107
- package/containers/Line/Create/index.js +7 -7
- package/containers/Line/Create/messages.js +42 -58
- package/containers/Line/Edit/index.js +14 -14
- package/containers/Line/Edit/messages.js +38 -58
- package/containers/Login/components/LoginForm/index.js +7 -10
- package/containers/Login/components/LoginForm/messages.js +3 -15
- package/containers/Login/index.js +1 -1
- package/containers/Login/messages.js +3 -7
- package/containers/MobilePush/Create/index.js +45 -45
- package/containers/MobilePush/Create/messages.js +75 -111
- package/containers/MobilePush/Edit/index.js +45 -45
- package/containers/MobilePush/Edit/messages.js +83 -100
- package/containers/NotFoundPage/messages.js +1 -1
- package/containers/Sms/Create/index.js +8 -7
- package/containers/Sms/Create/messages.js +19 -43
- package/containers/Sms/Edit/index.js +4 -4
- package/containers/Sms/Edit/messages.js +20 -36
- package/containers/TagList/messages.js +1 -1
- package/containers/Templates/index.js +19 -20
- package/containers/Templates/messages.js +64 -136
- package/containers/TestPage/messages.js +1 -1
- package/containers/Testv2/index.js +2 -2
- package/containers/Testv2/messages.js +1 -9
- package/containers/WeChat/MapTemplates/index.js +10 -10
- package/containers/WeChat/MapTemplates/messages.js +17 -49
- package/containers/WeChat/RichmediaTemplates/Create/messages.js +33 -33
- package/containers/WeChat/RichmediaTemplates/Edit/messages.js +1 -1
- package/containers/WeChat/RichmediaTemplates/View/index.js +2 -2
- package/containers/WeChat/RichmediaTemplates/View/messages.js +1 -9
- package/index.js +20 -8
- package/package.json +4 -1
- package/routes.js +16 -2
- package/services/api.js +2 -17
- package/services/getSchema.js +4 -1
- package/translations/en.json +360 -1396
- package/translations/zh.json +381 -1417
- package/utils/smsCharCountV2.js +10 -26
- package/v2Components/BreadCrumbs/messages.js +1 -1
- package/v2Components/CallTaskPreview/messages.js +1 -1
- package/v2Components/CapTagList/index.js +5 -6
- package/v2Components/CapTagList/messages.js +4 -24
- package/v2Components/Ckeditor/index.js +0 -1
- package/v2Components/Ckeditor/messages.js +1 -1
- package/v2Components/CmsTemplatesComponent/messages.js +2 -2
- package/v2Components/CustomPopOver/index.js +2 -4
- package/v2Components/CustomPopOver/messages.js +1 -5
- package/v2Components/DateFilter/index.js +349 -0
- package/v2Components/DateFilter/messages.js +17 -0
- package/v2Components/DateFilter/tests/index.test.js +15 -0
- package/v2Components/DateRange/index.js +113 -0
- package/v2Components/DateRange/messages.js +13 -0
- package/v2Components/DateRange/tests/index.test.js +10 -0
- package/v2Components/Edmeditor/messages.js +1 -1
- package/v2Components/EmailPreview/index.js +2 -2
- package/v2Components/EmailPreview/messages.js +3 -11
- package/v2Components/EmailPreviewV2/index.js +1 -1
- package/v2Components/EmailPreviewV2/messages.js +9 -13
- package/v2Components/Footer/messages.js +1 -1
- package/v2Components/FormBuilder/_formBuilder.scss +19 -0
- package/v2Components/FormBuilder/index.js +58 -27
- package/v2Components/FormBuilder/messages.js +1 -49
- package/v2Components/Header/index.js +2 -2
- package/v2Components/Header/messages.js +4 -4
- package/v2Components/ImagePreview/index.js +2 -3
- package/v2Components/ImagePreview/messages.js +1 -5
- package/v2Components/MobilePushPreviewV2/index.js +5 -2
- package/v2Components/MobilePushPreviewV2/messages.js +1 -9
- package/v2Components/NavigationBar/messages.js +1 -1
- package/v2Components/NewCallTask/messages.js +5 -5
- package/v2Components/PageHeader/_pageHeader.scss +22 -0
- package/v2Components/PageHeader/index.js +37 -0
- package/v2Components/PageHeader/messages.js +13 -0
- package/v2Components/PageHeader/tests/index.test.js +10 -0
- package/v2Components/PreviewSideBar/messages.js +6 -6
- package/v2Components/Sidebar/_sidebar.scss +115 -0
- package/v2Components/Sidebar/index.js +208 -0
- package/v2Components/Sidebar/messages.js +21 -0
- package/v2Components/Sidebar/tests/index.test.js +10 -0
- package/v2Components/SmsEditor/index.js +55 -0
- package/v2Components/SmsEditor/tests/index.test.js +10 -0
- package/v2Components/SmsTest/index.js +4 -6
- package/v2Components/SmsTest/messages.js +1 -9
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +2 -0
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +18 -28
- package/v2Components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +3 -3
- package/v2Components/TemplatePreview/_templatePreview.scss +0 -9
- package/v2Components/TemplatePreview/index.js +16 -35
- package/v2Components/TemplatePreview/messages.js +7 -23
- package/v2Components/Toastr/messages.js +1 -1
- package/v2Components/ToastrMessage/index.js +2 -3
- package/v2Components/ToastrMessage/messages.js +1 -5
- package/v2Components/TopBar/_topbar.scss +46 -0
- package/v2Components/TopBar/messages.js +7 -7
- package/v2Containers/App/constants.js +0 -11
- package/v2Containers/Assets/Gallery/messages.js +24 -24
- package/v2Containers/CallTask/messages.js +6 -6
- package/v2Containers/Cap/actions.js +0 -1
- package/v2Containers/Cap/index.js +9 -6
- package/v2Containers/Cap/messsages.js +15 -19
- package/v2Containers/Cap/sagas.js +8 -1
- package/v2Containers/ChannelTemplates/messages.js +1 -1
- package/v2Containers/CreativesContainer/SlideBoxContent.js +39 -1
- package/v2Containers/CreativesContainer/SlideBoxFooter.js +7 -1
- package/v2Containers/CreativesContainer/SlideBoxHeader.js +21 -3
- package/v2Containers/CreativesContainer/index.js +95 -50
- package/v2Containers/CreativesContainer/index.scss +15 -0
- package/v2Containers/CreativesContainer/messages.js +12 -16
- package/v2Containers/Dashboard/index.js +1 -2
- package/v2Containers/Dashboard/messages.js +1 -1
- package/v2Containers/Ebill/index.js +1 -1
- package/v2Containers/Ebill/messages.js +16 -20
- package/v2Containers/Email/index.js +20 -20
- package/v2Containers/Email/messages.js +61 -101
- package/v2Containers/EmailWrapper/index.js +44 -64
- package/v2Containers/EmailWrapper/messages.js +12 -12
- package/v2Containers/Line/Create/index.js +3 -3
- package/v2Containers/Line/Create/messages.js +41 -53
- package/v2Containers/Line/Edit/index.js +10 -10
- package/v2Containers/Line/Edit/messages.js +39 -55
- package/v2Containers/Login/components/LoginForm/index.js +6 -9
- package/v2Containers/Login/components/LoginForm/messages.js +3 -15
- package/v2Containers/Login/index.js +1 -1
- package/v2Containers/Login/messages.js +3 -7
- package/v2Containers/MobilePush/Create/_mobilePushCreate.scss +3 -0
- package/v2Containers/MobilePush/Create/index.js +33 -33
- package/v2Containers/MobilePush/Create/messages.js +81 -109
- package/v2Containers/MobilePush/Edit/_mobilePushCreate.scss +3 -0
- package/v2Containers/MobilePush/Edit/index.js +22 -22
- package/v2Containers/MobilePush/Edit/messages.js +79 -95
- package/v2Containers/MobilePush/initialSchema.js +1 -2
- package/v2Containers/MobilepushWrapper/messages.js +5 -5
- package/v2Containers/NotFoundPage/messages.js +1 -1
- package/v2Containers/Sms/Create/index.js +6 -6
- package/v2Containers/Sms/Create/messages.js +21 -41
- package/v2Containers/Sms/Edit/index.js +6 -6
- package/v2Containers/Sms/Edit/messages.js +20 -36
- package/v2Containers/TagList/messages.js +1 -1
- package/v2Containers/Templates/_templates.scss +31 -5
- package/v2Containers/Templates/index.js +243 -248
- package/v2Containers/Templates/messages.js +7 -15
- package/v2Containers/Templates/sagas.js +0 -1
- package/v2Containers/TemplatesV2/_templatesV2.scss +5 -0
- package/v2Containers/TemplatesV2/index.js +4 -1
- package/v2Containers/TemplatesV2/messages.js +5 -29
- package/v2Containers/TestPage/messages.js +1 -1
- package/v2Containers/Testv2/index.js +2 -2
- package/v2Containers/Testv2/messages.js +1 -9
- package/v2Containers/WeChat/MapTemplates/_mapTemplates.scss +16 -0
- package/v2Containers/WeChat/MapTemplates/actions.js +4 -2
- package/v2Containers/WeChat/MapTemplates/index.js +800 -872
- package/v2Containers/WeChat/MapTemplates/initialSchema.js +184 -0
- package/v2Containers/WeChat/MapTemplates/messages.js +19 -43
- package/v2Containers/WeChat/MapTemplates/sagas.js +6 -2
- package/v2Containers/WeChat/MapTemplates/selectors.js +1 -1
- package/v2Containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +118 -28
- package/v2Containers/WeChat/RichmediaTemplates/Create/actions.js +3 -1
- package/v2Containers/WeChat/RichmediaTemplates/Create/index.js +262 -306
- package/v2Containers/WeChat/RichmediaTemplates/Create/messages.js +43 -95
- package/v2Containers/WeChat/RichmediaTemplates/Create/reducer.js +2 -1
- package/v2Containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +113 -246
- package/v2Containers/WeChat/RichmediaTemplates/Create/sagas.js +5 -2
- package/v2Containers/WeChat/RichmediaTemplates/Create/selectors.js +1 -1
- package/v2Containers/WeChat/RichmediaTemplates/Edit/actions.js +2 -2
- package/v2Containers/WeChat/RichmediaTemplates/Edit/index.js +11 -10
- package/v2Containers/WeChat/RichmediaTemplates/Edit/messages.js +1 -1
- package/v2Containers/WeChat/RichmediaTemplates/Edit/reducer.js +1 -0
- package/v2Containers/WeChat/RichmediaTemplates/Edit/sagas.js +4 -2
- package/v2Containers/WeChat/RichmediaTemplates/Edit/selectors.js +1 -1
- package/v2Containers/WeChat/RichmediaTemplates/View/messages.js +1 -9
- package/v2Containers/WeChat/Wrapper/_wrapper.scss +0 -0
- package/v2Containers/WeChat/Wrapper/constants.js +5 -0
- package/v2Containers/WeChat/Wrapper/index.js +194 -0
- package/v2Containers/WeChat/Wrapper/messages.js +21 -0
- package/v2Containers/WeChat/helper.js +12 -0
- package/containers/Cap/messages.js +0 -75
- 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
|
+
});
|
|
@@ -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
|
|
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"
|
|
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: '
|
|
10
|
+
id: 'app.components.EmailPreview.lastModified',
|
|
11
11
|
defaultMessage: 'Last modified on',
|
|
12
12
|
},
|
|
13
13
|
uploadedBy: {
|
|
14
|
-
id: '
|
|
14
|
+
id: 'app.components.EmailPreview.uploadedBy',
|
|
15
15
|
defaultMessage: 'Last modified by',
|
|
16
16
|
},
|
|
17
17
|
subject: {
|
|
18
|
-
id: '
|
|
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
|
|
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: '
|
|
10
|
+
id: 'app.components.EmailPreviewV2.header',
|
|
11
11
|
defaultMessage: 'This is the EmailPreviewV2 component !',
|
|
12
12
|
},
|
|
13
13
|
desktop: {
|
|
14
|
-
id: '
|
|
14
|
+
id: 'app.components.EmailPreviewV2.desktop',
|
|
15
15
|
defaultMessage: 'Desktop',
|
|
16
16
|
},
|
|
17
17
|
tablet: {
|
|
18
|
-
id: '
|
|
18
|
+
id: 'app.components.EmailPreviewV2.tablet',
|
|
19
19
|
defaultMessage: 'Tablet',
|
|
20
20
|
},
|
|
21
21
|
mobile: {
|
|
22
|
-
id: '
|
|
22
|
+
id: 'app.components.EmailPreviewV2.mobile',
|
|
23
23
|
defaultMessage: 'Mobile',
|
|
24
24
|
},
|
|
25
25
|
noIframeSupport: {
|
|
26
|
-
id: '
|
|
26
|
+
id: 'app.components.EmailPreviewV2.noIframeSupport',
|
|
27
27
|
defaultMessage: 'Your browser does not support iframes.',
|
|
28
28
|
},
|
|
29
29
|
showAllDevices: {
|
|
30
|
-
id: '
|
|
30
|
+
id: 'app.components.EmailPreviewV2.showAllDevices',
|
|
31
31
|
defaultMessage: 'Show all devices',
|
|
32
32
|
},
|
|
33
33
|
lastModified: {
|
|
34
|
-
id: '
|
|
34
|
+
id: 'app.components.PreviewSideBar.lastModified',
|
|
35
35
|
defaultMessage: 'Last modified on',
|
|
36
36
|
},
|
|
37
37
|
uploadedBy: {
|
|
38
|
-
id: '
|
|
38
|
+
id: 'app.components.PreviewSideBar.uploadedBy',
|
|
39
39
|
defaultMessage: 'Last modified by',
|
|
40
40
|
},
|
|
41
41
|
subject: {
|
|
42
|
-
id: '
|
|
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
|
});
|
|
@@ -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 {
|
|
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}
|
|
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
|
-
|
|
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}
|
|
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 +=
|
|
886
|
+
errorString += `Content is not valid for language: ${currentLang}\n`;
|
|
889
887
|
}
|
|
890
888
|
if (tagValidationResponse.missingTags.length > 0) {
|
|
891
|
-
errorString +=
|
|
889
|
+
errorString += `Missing tags are: ${tagValidationResponse.missingTags.toString()}\n`;
|
|
892
890
|
}
|
|
893
891
|
if (tagValidationResponse.unsupportedTags.length > 0) {
|
|
894
|
-
errorString +=
|
|
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
|
|
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
|
-
|
|
2111
|
-
|
|
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="
|
|
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>
|
|
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={
|
|
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
|
|
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: '
|
|
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: '
|
|
10
|
+
id: 'app.components.Header.header',
|
|
11
11
|
defaultMessage: 'This is the Header component !',
|
|
12
12
|
},
|
|
13
13
|
preview: {
|
|
14
|
-
id: '
|
|
14
|
+
id: 'app.components.Header.preview',
|
|
15
15
|
defaultMessage: 'Preview',
|
|
16
16
|
},
|
|
17
17
|
cancel: {
|
|
18
|
-
id: '
|
|
18
|
+
id: 'app.components.Header.cancel',
|
|
19
19
|
defaultMessage: 'Cancel',
|
|
20
20
|
},
|
|
21
21
|
save: {
|
|
22
|
-
id: '
|
|
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
|
|
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"
|
|
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: '
|
|
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
|
});
|