@capillarytech/creatives-library 0.1.15 → 0.1.16

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.
@@ -940,6 +940,7 @@ class FormBuilder extends React.Component { // eslint-disable-line react/prefer-
940
940
 
941
941
  skipTags(tag) {
942
942
  const regexGroups = ["dynamic_expiry_date_after_\\d+_days.FORMAT_\\d", "user_id_b64", "outbox_id_b64", "unsubscribe\\(#[a-zA-Z\\d]{6}\\)","Link_to_[a-zA-z]"];
943
+
943
944
  //const regexGroups = [];
944
945
  let skipped = false;
945
946
  _.forEach(regexGroups, (group) => {
@@ -60,6 +60,12 @@
60
60
  left: 30%;
61
61
  width: 30%;
62
62
  }
63
+
64
+ img{
65
+ width: 100%;
66
+ object-fit: cover; // try contain
67
+ height: 100%;
68
+ }
63
69
  }
64
70
 
65
71
  .overlay {
@@ -105,3 +111,16 @@
105
111
  }
106
112
  }
107
113
  }
114
+
115
+ #slidebox-content{
116
+ img{
117
+ display: block;
118
+ max-width: 100%;
119
+ margin: 0 auto;
120
+ }
121
+ }
122
+
123
+ #slidebox-container{
124
+ left: 40vw !important;
125
+ width: 60vw !important;
126
+ }
@@ -69,6 +69,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
69
69
  }
70
70
 
71
71
  componentWillReceiveProps(nextProps) {
72
+ console.log("nextProps", nextProps);
72
73
  if ( !_.isEqual(nextProps.Gallery.uploadAssetSuccess, this.props.Gallery.uploadAssetSuccess) && nextProps.Gallery.uploadAssetSuccess) {
73
74
  if (this.props.location.query.type === 'embedded' && nextProps.Gallery.uploadedAssetData) {
74
75
  console.log('Post on will receive props');
@@ -106,19 +107,27 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
106
107
  const message = getMessageObject('error', this.props.intl.formatMessage(messages.assetDeleteFailed), true);
107
108
  this.props.globalActions.addMessageToQueue(message);
108
109
  }
110
+ if ( nextProps.Gallery.itemDeleted || !nextProps.Gallery.assetUploading) {
111
+ const params = {
112
+ name: this.state.searchText,
113
+ sortBy: 'Most Recent',
114
+ };
115
+ this.getAllAssets({params}, true);
116
+ }
109
117
  }
110
118
 
111
119
  componentWillUnmount() {
112
120
  window.removeEventListener("message", this.handleGallery, false);
113
121
  }
114
122
 
115
- getAllAssets = ({params, getNextPage, resetPage}) => {
123
+ getAllAssets = ({params, getNextPage, resetPage}, isReRender = false) => {
116
124
  let queryParams = params;
117
125
  let page = this.state.page;
118
- if (!this.props.Gallery.fetchingAllAssets && (resetPage || (page === 1 && this.state.totalCount === 0) || page <= (this.state.totalCount / this.state.perPageLimit))) {
126
+ if (!this.props.Gallery.fetchingAllAssets && ((resetPage || (page === 1 && this.state.totalCount === 0) || page <= (this.state.totalCount / this.state.perPageLimit)) || isReRender )) {
119
127
  if (getNextPage) {
120
128
  page += 1;
121
129
  }
130
+
122
131
  let totalCount = this.state.totalCount;
123
132
  if (resetPage) {
124
133
  page = 1;
@@ -226,17 +235,19 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
226
235
  uploadImages(e, {files}) {
227
236
  e.preventDefault();
228
237
  const _URL = window.URL || window.webkitURL;
229
- const file = files[0];
230
- const img = new Image();
231
- const that = this;
232
- img.src = _URL.createObjectURL(file);
233
- img.onload = function () {
234
- const fileParams = {
235
- width: this.width,
236
- height: this.height,
238
+ //const file = files[0];
239
+ for (let file in files){
240
+ const img = new Image();
241
+ const that = this;
242
+ img.src = _URL.createObjectURL(files[file]);
243
+ img.onload = function () {
244
+ const fileParams = {
245
+ width: this.width,
246
+ height: this.height,
247
+ };
248
+ that.props.actions.uploadAsset(files[file], 'image', fileParams);
237
249
  };
238
- that.props.actions.uploadAsset(file, 'image', fileParams);
239
- };
250
+ }
240
251
  }
241
252
 
242
253
  prepareData() {
@@ -300,7 +311,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
300
311
  <img style={{maxWidth: '100%', maxHeight: '100%'}} src={this.state.selectedAsset.metaInfo.secure_file_path ? this.state.selectedAsset.metaInfo.secure_file_path : this.state.selectedAsset.metaInfo.public_url} alt={this.state.selectedAsset.name} />
301
312
  </div>
302
313
  </div>
303
- <a href={this.state.selectedAsset.metaInfo.public_url} target="_blank" style={{ position: 'fixed', right: '24px', bottom: '17vh' }} ><i className="material-icons" style={{ color: '#2E89DF', cursor: 'pointer' }}>fullscreen</i></a>
314
+ <a href={this.state.selectedAsset.metaInfo.public_url} target="_blank" style={{ position: 'fixed', right: '55px', bottom: '18vh' }} ><i className="material-icons" style={{ color: '#2E89DF', cursor: 'pointer' }}>fullscreen</i></a>
304
315
  </div>
305
316
  <div style={{ fontSize: '14px', color: '#333333', lineHeight: '24px', fontFamily: 'OpenSans', textAlign: 'center', paddingTop: '10px'}}>
306
317
  <p style={{marginBottom: '0px'}}><span><FormattedMessage {...messages.dimensions} />: </span> <span>{`${this.state.selectedAsset.metaInfo.width}X${this.state.selectedAsset.metaInfo.height} px`}</span></p>
@@ -357,7 +368,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
357
368
  );
358
369
  const actionComponents = (
359
370
  <form encType="multipart/form-data" id="myForm">
360
- <input style={{ display: 'none'}} id="fileName" type="file" onChange={(e) => this.uploadImages(e, {files: e.target.files})} accept="image/*" />
371
+ <input style={{ display: 'none'}} id="fileName" type="file" onChange={(e) => this.uploadImages(e, {files: e.target.files})} accept="image/*" multiple/>
361
372
  <CapButton type={this.props.location.query.type !== 'embedded' ? 'primary' : 'secondary'} onClick={(e) => this.openFileDialog(e)} style={{float: 'right'}}>
362
373
  <FormattedMessage {...messages.upload} />
363
374
  </CapButton>
@@ -367,7 +378,7 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
367
378
 
368
379
  return (
369
380
  <div>
370
- <Spin spinning={this.props.Gallery.assetUploading || this.props.Gallery.fetchingAllAssets}>
381
+ {/*<Spin spinning={this.props.Gallery.assetUploading || this.props.Gallery.fetchingAllAssets}>*/}
371
382
  <Helmet
372
383
  title="Gallery"
373
384
  />
@@ -410,19 +421,21 @@ export class Gallery extends React.Component { // eslint-disable-line react/pref
410
421
  </div>
411
422
  </div>
412
423
  </div> :
413
- <Pagination onPageChange={() => { this.getAllAssets({getNextPage: true}); }} paginationSelector="pagination-container">
414
- <CardGrid
415
- listItem={this.prepareData()}
416
- filterContent={filterContent}
417
- onHoverItem={this.handleOnHoverItem}
418
- onItemClick={this.handleOnHoverItem}
419
- colNumber={this.props.location.query.type === 'embedded' ? 2 : 4}
420
- enablePagination
421
- />
422
- </Pagination>
424
+ <Spin spinning={this.props.Gallery.assetUploading || this.props.Gallery.fetchingAllAssets}>
425
+ <Pagination onPageChange={() => { this.getAllAssets({getNextPage: true}); }} paginationSelector="pagination-container">
426
+ <CardGrid
427
+ listItem={this.prepareData()}
428
+ filterContent={filterContent}
429
+ onHoverItem={this.handleOnHoverItem}
430
+ onItemClick={this.handleOnHoverItem}
431
+ colNumber={this.props.location.query.type === 'embedded' ? 2 : 4}
432
+ enablePagination
433
+ />
434
+ </Pagination>
435
+ </Spin>
423
436
  }
424
437
  {this.state.showImagePreviewModal && this.renderAssetPreviewModal()}
425
- </Spin>
438
+ {/*</Spin>*/}
426
439
  </div>
427
440
  );
428
441
  }
@@ -50,14 +50,14 @@ function galleryReducer(state = initialState, action) {
50
50
  case types.DELETE_ASSET_REQUEST:
51
51
  return state
52
52
  .set('deletingAsset', true)
53
- .set('assetDeleteError', false);
53
+ .set('assetDeleteError', false).set("itemDeleted", false);
54
54
  case types.DELETE_ASSET_SUCCESS:
55
55
  return state
56
- .set('deletingAsset', false);
56
+ .set('deletingAsset', false).set("itemDeleted", true);
57
57
  case types.DELETE_ASSET_FAILURE:
58
58
  return state
59
59
  .set('deletingAsset', false)
60
- .set('assetDeleteError', true);
60
+ .set('assetDeleteError', true).set("itemDeleted", false);
61
61
  case types.GET_USER_LIST_REQUEST:
62
62
  return state
63
63
  .set('fetchingUserList', true)
@@ -24,7 +24,7 @@ export function* uploadAsset(file, assetType, fileParams) {
24
24
  export function* deleteAssetById(assetId, assetType) {
25
25
  try {
26
26
  const result = yield call(Api.deleteAssetById, assetId, assetType);
27
- console.log(result);
27
+ console.log({"delete Asset Id": result});
28
28
  yield put({ type: types.DELETE_ASSET_SUCCESS, data: result.response });
29
29
  } catch (error) {
30
30
  yield put({ type: types.DELETE_ASSET_FAILURE, error });
@@ -3247,6 +3247,7 @@ Email.propTypes = {
3247
3247
  isGetFormData: PropTypes.bool,
3248
3248
  getFormSubscriptionData: PropTypes.func,
3249
3249
  supportedTags: PropTypes.array,
3250
+ getDefaultTags: PropTypes.bool,
3250
3251
  };
3251
3252
 
3252
3253
  const mapStateToProps = createStructuredSelector({
@@ -239,6 +239,9 @@ export class Create extends React.Component { // eslint-disable-line react/prefe
239
239
  }
240
240
  const result = {};
241
241
  result.base = baseData;
242
+ const msgObj = charCount.updateCharCount(baseData['sms-editor']);
243
+ result.base.msg_count = msgObj.msgCount;
244
+ console.log("Message Count", msgObj.msgCount);
242
245
  const response = {
243
246
  action: "getFormData",
244
247
  value: result,
@@ -89,7 +89,11 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
89
89
  }
90
90
  componentDidMount() {
91
91
  if (this.props.location.query && this.props.location.query.module === 'library') {
92
- this.props.actions.setTemplateDetails(this.props.templateData);
92
+ if (this.props.params.id) {
93
+ this.props.actions.getTemplateDetails(this.props.params.id);
94
+ } else {
95
+ this.props.actions.setTemplateDetails(this.props.templateData);
96
+ }
93
97
  } else {
94
98
  this.props.actions.getTemplateDetails(this.props.params.id);
95
99
  }
@@ -279,6 +283,9 @@ export class Edit extends React.Component { // eslint-disable-line react/prefer-
279
283
  }
280
284
  const result = {};
281
285
  result.base = baseData;
286
+ const msgObj = charCount.updateCharCount(baseData['sms-editor']);
287
+ result.base.msg_count = msgObj.msgCount;
288
+ console.log("Message Count", msgObj.msgCount);
282
289
  const response = {
283
290
  action: "getFormData",
284
291
  value: result,
@@ -64,6 +64,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
64
64
  showHtmlPreview: false,
65
65
  device: 'desktop',
66
66
  searchedTemplates: false,
67
+ defaultAccount: true,
67
68
  };
68
69
  this.handleOnHoverItem = this.handleOnHoverItem.bind(this);
69
70
  this.handleOnItemClick = this.handleOnItemClick.bind(this);
@@ -159,12 +160,14 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
159
160
  if (nextProps.route.name.toLowerCase() === 'sms') {
160
161
  channel = 'Sms';
161
162
  } else if (nextProps.route.name.toLowerCase() === 'wechat') {
163
+ this.setState({defaultAccount: true});
162
164
  channel = 'wechat';
163
165
  nextProps.actions.getWeCrmAccounts();
164
166
  } else if (nextProps.route.name.toLowerCase() === 'email') {
165
167
  channel = 'Email';
166
168
  // this.props.actions.getEdmDefaultTemplates();
167
169
  } else if (nextProps.route.name.toLowerCase() === "mobilepush") {
170
+ this.setState({defaultAccount: true});
168
171
  channel = "mobilepush";
169
172
  nextProps.actions.getWeCrmAccounts(channel);
170
173
  } else if (nextProps.route.name.toLowerCase() === 'ebill') {
@@ -302,12 +305,31 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
302
305
  if (!_.isEmpty(nextProps.Templates.templateDetails) && !_.isEqual(nextProps.Templates.templateDetails, this.props.Templates.templateDetails)) {
303
306
  this.setState({previewTemplate: nextProps.Templates.templateDetails});
304
307
  }
308
+
309
+ if (nextProps.Templates.weCrmAccounts !== undefined && nextProps.Templates.weCrmAccounts.length === 1 && this.state.defaultAccount ) {
310
+ const paramsDefault = {
311
+ name: this.state.searchText,
312
+ sortBy: this.state.sortBy,
313
+ };
314
+ if (this.state.channel.toLowerCase() === 'wechat') {
315
+ paramsDefault.wecrmId = nextProps.Templates.weCrmAccounts[0].configs.wecrm_app_id;
316
+ paramsDefault.wecrmToken = nextProps.Templates.weCrmAccounts[0].configs.wecrm_token;
317
+ nextProps.actions.setWeChatAccount(nextProps.Templates.weCrmAccounts[0]);
318
+ this.setState({defaultAccount: false});
319
+ } else if (this.state.channel.toLowerCase() === 'mobilepush') {
320
+ nextProps.actions.setWeChatAccount(nextProps.Templates.weCrmAccounts[0]);
321
+ paramsDefault.accountId = nextProps.Templates.weCrmAccounts[0].id;
322
+ this.setState({defaultAccount: false});
323
+ }
324
+ this.getAllTemplates({params: paramsDefault}, true);
325
+ }
305
326
  }
306
327
 
307
328
  componentWillUnmount() {
308
329
  console.log('removed listener templates');
309
330
  window.removeEventListener("message", this.handleFrameTasks);
310
331
  this.props.actions.resetTemplateStoreData();
332
+ // this.setState({defaultAccount: false});
311
333
  }
312
334
 
313
335
  onAccountSelect(value, option) {
@@ -978,7 +1000,7 @@ export class Templates extends React.Component { // eslint-disable-line react/pr
978
1000
  console.log('Data Prepare');
979
1001
  const imgSrc = template && template.versions && template.versions.base ? template.versions.base.preview_http_url : '';
980
1002
  const ifPreviewGenerated = template && template.versions && template.versions.base ? template.versions.base.isPreviewGenerated : 0;
981
- content = <img src={imgSrc || ''} alt={this.props.intl.formatMessage(messages.previewGenerateText)} />;
1003
+ content = <img src={imgSrc || ''} alt={this.props.intl.formatMessage(messages.previewGenerateText)} width="100%" height="100%"/>;
982
1004
  console.log('qwerty template preview', imgSrc, template, ifPreviewGenerated, content);
983
1005
  temp.content = (
984
1006
  <div
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@capillarytech/creatives-library",
3
3
  "author": "meharaj",
4
- "version": "0.1.15",
4
+ "version": "0.1.16",
5
5
  "description": "Capillary creatives ui",
6
6
  "main": "./index.js",
7
7
  "module": "./index.es.js",