@imposium-hub/components 2.2.44 → 2.2.45-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.
Files changed (154) hide show
  1. package/dist/cjs/Util.js +2 -0
  2. package/dist/cjs/Util.js.map +1 -1
  3. package/dist/cjs/components/app-wrapper/AppWrapper.d.ts +1 -2
  4. package/dist/cjs/components/app-wrapper/AppWrapper.js +70 -82
  5. package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
  6. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
  7. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +243 -0
  8. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
  9. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
  10. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +255 -0
  11. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
  12. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
  13. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +243 -0
  14. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
  15. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
  16. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +251 -0
  17. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
  18. package/dist/cjs/components/assets/AssetsTableDurationCell.js +18 -2
  19. package/dist/cjs/components/assets/AssetsTableDurationCell.js.map +1 -1
  20. package/dist/cjs/components/assets/AssetsTableGlobalCell.d.ts +6 -0
  21. package/dist/cjs/components/assets/AssetsTableGlobalCell.js +33 -0
  22. package/dist/cjs/components/assets/AssetsTableGlobalCell.js.map +1 -0
  23. package/dist/cjs/components/assets/AssetsTableNameCell.js +2 -2
  24. package/dist/cjs/components/assets/AssetsTableNameCell.js.map +1 -1
  25. package/dist/cjs/components/assets/AssetsUploadMenu.js +3 -2
  26. package/dist/cjs/components/assets/AssetsUploadMenu.js.map +1 -1
  27. package/dist/cjs/components/auth-gate/AuthGate.js +8 -5
  28. package/dist/cjs/components/auth-gate/AuthGate.js.map +1 -1
  29. package/dist/cjs/components/header/Header.d.ts +5 -0
  30. package/dist/cjs/components/header/Header.js +40 -22
  31. package/dist/cjs/components/header/Header.js.map +1 -1
  32. package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +33 -0
  33. package/dist/cjs/components/header/Header_BACKUP_73021.js +393 -0
  34. package/dist/cjs/components/header/Header_BACKUP_73021.js.map +1 -0
  35. package/dist/cjs/components/header/Header_BASE_73021.d.ts +29 -0
  36. package/dist/cjs/components/header/Header_BASE_73021.js +376 -0
  37. package/dist/cjs/components/header/Header_BASE_73021.js.map +1 -0
  38. package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +33 -0
  39. package/dist/cjs/components/header/Header_LOCAL_73021.js +382 -0
  40. package/dist/cjs/components/header/Header_LOCAL_73021.js.map +1 -0
  41. package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +30 -0
  42. package/dist/cjs/components/header/Header_REMOTE_73021.js +386 -0
  43. package/dist/cjs/components/header/Header_REMOTE_73021.js.map +1 -0
  44. package/dist/cjs/components/publish-wizard/PublishWizard.js +119 -59
  45. package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
  46. package/dist/cjs/components/story-previewer/StoryPreviewer.js +15 -10
  47. package/dist/cjs/components/story-previewer/StoryPreviewer.js.map +1 -1
  48. package/dist/cjs/constants/copy.d.ts +6 -0
  49. package/dist/cjs/constants/copy.js +7 -1
  50. package/dist/cjs/constants/copy.js.map +1 -1
  51. package/dist/cjs/constants/icons.d.ts +1 -0
  52. package/dist/cjs/constants/icons.js +3 -1
  53. package/dist/cjs/constants/icons.js.map +1 -1
  54. package/dist/cjs/index.d.ts +2 -2
  55. package/dist/cjs/index.js +2 -4
  56. package/dist/cjs/index.js.map +1 -1
  57. package/dist/cjs/redux/actions/access.d.ts +1 -3
  58. package/dist/cjs/redux/actions/access.js +10 -43
  59. package/dist/cjs/redux/actions/access.js.map +1 -1
  60. package/dist/cjs/redux/actions/publish.js +4 -3
  61. package/dist/cjs/redux/actions/publish.js.map +1 -1
  62. package/dist/cjs/redux/reducers/access.js +7 -30
  63. package/dist/cjs/redux/reducers/access.js.map +1 -1
  64. package/dist/cjs/services/Session.d.ts +9 -8
  65. package/dist/cjs/services/Session.js +31 -127
  66. package/dist/cjs/services/Session.js.map +1 -1
  67. package/dist/esm/Util.js +2 -0
  68. package/dist/esm/Util.js.map +1 -1
  69. package/dist/esm/components/app-wrapper/AppWrapper.d.ts +1 -2
  70. package/dist/esm/components/app-wrapper/AppWrapper.js +68 -82
  71. package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
  72. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
  73. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +194 -0
  74. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
  75. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
  76. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +208 -0
  77. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
  78. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
  79. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +194 -0
  80. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
  81. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
  82. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +204 -0
  83. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
  84. package/dist/esm/components/assets/AssetsTableDurationCell.js +18 -2
  85. package/dist/esm/components/assets/AssetsTableDurationCell.js.map +1 -1
  86. package/dist/esm/components/assets/AssetsTableGlobalCell.d.ts +6 -0
  87. package/dist/esm/components/assets/AssetsTableGlobalCell.js +8 -0
  88. package/dist/esm/components/assets/AssetsTableGlobalCell.js.map +1 -0
  89. package/dist/esm/components/assets/AssetsTableNameCell.js +2 -2
  90. package/dist/esm/components/assets/AssetsTableNameCell.js.map +1 -1
  91. package/dist/esm/components/assets/AssetsUploadMenu.js +3 -2
  92. package/dist/esm/components/assets/AssetsUploadMenu.js.map +1 -1
  93. package/dist/esm/components/auth-gate/AuthGate.js +9 -6
  94. package/dist/esm/components/auth-gate/AuthGate.js.map +1 -1
  95. package/dist/esm/components/header/Header.d.ts +5 -0
  96. package/dist/esm/components/header/Header.js +37 -22
  97. package/dist/esm/components/header/Header.js.map +1 -1
  98. package/dist/esm/components/header/Header_BACKUP_73021.d.ts +33 -0
  99. package/dist/esm/components/header/Header_BACKUP_73021.js +336 -0
  100. package/dist/esm/components/header/Header_BACKUP_73021.js.map +1 -0
  101. package/dist/esm/components/header/Header_BASE_73021.d.ts +29 -0
  102. package/dist/esm/components/header/Header_BASE_73021.js +322 -0
  103. package/dist/esm/components/header/Header_BASE_73021.js.map +1 -0
  104. package/dist/esm/components/header/Header_LOCAL_73021.d.ts +33 -0
  105. package/dist/esm/components/header/Header_LOCAL_73021.js +328 -0
  106. package/dist/esm/components/header/Header_LOCAL_73021.js.map +1 -0
  107. package/dist/esm/components/header/Header_REMOTE_73021.d.ts +30 -0
  108. package/dist/esm/components/header/Header_REMOTE_73021.js +329 -0
  109. package/dist/esm/components/header/Header_REMOTE_73021.js.map +1 -0
  110. package/dist/esm/components/publish-wizard/PublishWizard.js +119 -60
  111. package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
  112. package/dist/esm/components/story-previewer/StoryPreviewer.js +15 -10
  113. package/dist/esm/components/story-previewer/StoryPreviewer.js.map +1 -1
  114. package/dist/esm/constants/copy.d.ts +6 -0
  115. package/dist/esm/constants/copy.js +7 -1
  116. package/dist/esm/constants/copy.js.map +1 -1
  117. package/dist/esm/constants/icons.d.ts +1 -0
  118. package/dist/esm/constants/icons.js +2 -0
  119. package/dist/esm/constants/icons.js.map +1 -1
  120. package/dist/esm/index.d.ts +2 -2
  121. package/dist/esm/index.js +2 -2
  122. package/dist/esm/index.js.map +1 -1
  123. package/dist/esm/redux/actions/access.d.ts +1 -3
  124. package/dist/esm/redux/actions/access.js +8 -37
  125. package/dist/esm/redux/actions/access.js.map +1 -1
  126. package/dist/esm/redux/actions/publish.js +4 -3
  127. package/dist/esm/redux/actions/publish.js.map +1 -1
  128. package/dist/esm/redux/reducers/access.js +5 -8
  129. package/dist/esm/redux/reducers/access.js.map +1 -1
  130. package/dist/esm/services/Session.d.ts +9 -8
  131. package/dist/esm/services/Session.js +29 -102
  132. package/dist/esm/services/Session.js.map +1 -1
  133. package/dist/styles.css +24 -0
  134. package/dist/styles.less +27 -0
  135. package/less/components/context-menu.less +1 -0
  136. package/less/components/header.less +13 -0
  137. package/less/components/publish-wizard.less +13 -0
  138. package/package.json +1 -1
  139. package/src/Util.ts +3 -0
  140. package/src/components/app-wrapper/AppWrapper.tsx +77 -123
  141. package/src/components/assets/AssetsTableDurationCell.tsx +23 -2
  142. package/src/components/assets/AssetsTableNameCell.tsx +4 -1
  143. package/src/components/assets/AssetsUploadMenu.tsx +13 -8
  144. package/src/components/auth-gate/AuthGate.tsx +14 -8
  145. package/src/components/header/Header.tsx +88 -42
  146. package/src/components/publish-wizard/PublishWizard.tsx +172 -87
  147. package/src/components/story-previewer/StoryPreviewer.tsx +17 -10
  148. package/src/constants/copy.ts +8 -1
  149. package/src/constants/icons.tsx +3 -0
  150. package/src/index.ts +1 -10
  151. package/src/redux/actions/access.ts +5 -67
  152. package/src/redux/actions/publish.ts +6 -3
  153. package/src/redux/reducers/access.ts +5 -8
  154. package/src/services/Session.ts +34 -120
@@ -15,12 +15,17 @@ export interface IHeaderProps {
15
15
  activeOrganization: string;
16
16
  activeStory?: string;
17
17
  hideStoryPicker?: boolean;
18
+ hideOrgPicker?: boolean;
18
19
  onOrganizationChange?: (orgId: any) => any;
19
20
  onStoryChange?: (story: any) => any;
20
21
  logout: (...args) => any;
22
+ additionalButtons?: any[];
21
23
  auth: any;
22
24
  story: any;
23
25
  baseUrl: any;
26
+ hideDocs?: boolean;
27
+ showFTLogo?: boolean;
28
+ access: any;
24
29
  }
25
30
 
26
31
  export interface IHeaderState {
@@ -160,7 +165,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
160
165
 
161
166
  public componentDidUpdate(prevProps: Readonly<IHeaderProps>): void {
162
167
  const { accessData } = this.state;
163
- const { activeOrganization } = this.props;
168
+ const { activeOrganization, access } = this.props;
164
169
 
165
170
  if (activeOrganization !== prevProps.activeOrganization) {
166
171
  if (accessData !== null) {
@@ -169,6 +174,12 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
169
174
  this.getAccessDataHandler();
170
175
  }
171
176
  }
177
+
178
+ if (!_.isEqual(access, accessData)) {
179
+ this.setState({ accessData: access }, () =>
180
+ this.parseAccessData(access, activeOrganization)
181
+ );
182
+ }
172
183
  }
173
184
 
174
185
  private parseAccessData = (accessData: any, activeOrganization: string): void => {
@@ -312,7 +323,17 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
312
323
  };
313
324
 
314
325
  public render() {
315
- const { email, activeOrganization, activeStory, hideStoryPicker, story } = this.props;
326
+ const {
327
+ email,
328
+ activeOrganization,
329
+ activeStory,
330
+ hideStoryPicker,
331
+ story,
332
+ hideOrgPicker,
333
+ additionalButtons,
334
+ showFTLogo,
335
+ hideDocs
336
+ } = this.props;
316
337
  const {
317
338
  accessData,
318
339
  showAccountDropdown,
@@ -345,6 +366,14 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
345
366
  let serviceDropdownToggle: JSX.Element;
346
367
  let serviceDropdownMenu: JSX.Element;
347
368
 
369
+ const btnLogout = (
370
+ <button
371
+ className='btn-logout'
372
+ onClick={() => this.doLogout()}>
373
+ {ImposiumHeader.LOGOUT_COPY}
374
+ </button>
375
+ );
376
+
348
377
  if (accessData) {
349
378
  activeService = servicesByOrganization.find((s: any) =>
350
379
  window.location.href.includes(s.url)
@@ -363,6 +392,36 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
363
392
  .filter((s: any) => !s.private && ImposiumHeader.PRIVATE_IDS.indexOf(s.id) > -1)
364
393
  .map((s: any) => this.renderServiceAnchor(s, activeOrganization, activeStory));
365
394
 
395
+ const docsSection = !hideDocs ? (
396
+ <section className='service-menu-section'>
397
+ <div className='service-menu-heading'>{ImposiumHeader.DOCS_HEADER}</div>
398
+
399
+ <div className='service-menu-anchors'>
400
+ <div className='anchor-wrapper doc'>
401
+ <a
402
+ target='__blank'
403
+ href={ImposiumHeader.API_DOCS_LINK}>
404
+ <div className='icon-fixed'>
405
+ <ServiceIcon iconName='FaCogs' />
406
+ </div>
407
+ {ImposiumHeader.API_DOCS_LINK_COPY}
408
+ </a>
409
+ </div>
410
+
411
+ <div className='anchor-wrapper doc'>
412
+ <a
413
+ target='__blank'
414
+ href={ImposiumHeader.SDK_DOCS_LINK}>
415
+ <div className='icon-fixed'>
416
+ <ServiceIcon iconName='FaJsSquare' />
417
+ </div>
418
+ {ImposiumHeader.SDK_DOCS_LINK_COPY}
419
+ </a>
420
+ </div>
421
+ </div>
422
+ </section>
423
+ ) : null;
424
+
366
425
  serviceDropdownMenu = (
367
426
  <div className='service-menu'>
368
427
  <section className='service-menu-section'>
@@ -383,33 +442,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
383
442
  </section>
384
443
  )}
385
444
 
386
- <section className='service-menu-section'>
387
- <div className='service-menu-heading'>{ImposiumHeader.DOCS_HEADER}</div>
388
-
389
- <div className='service-menu-anchors'>
390
- <div className='anchor-wrapper doc'>
391
- <a
392
- target='__blank'
393
- href={ImposiumHeader.API_DOCS_LINK}>
394
- <div className='icon-fixed'>
395
- <ServiceIcon iconName='FaCogs' />
396
- </div>
397
- {ImposiumHeader.API_DOCS_LINK_COPY}
398
- </a>
399
- </div>
400
-
401
- <div className='anchor-wrapper doc'>
402
- <a
403
- target='__blank'
404
- href={ImposiumHeader.SDK_DOCS_LINK}>
405
- <div className='icon-fixed'>
406
- <ServiceIcon iconName='FaJsSquare' />
407
- </div>
408
- {ImposiumHeader.SDK_DOCS_LINK_COPY}
409
- </a>
410
- </div>
411
- </div>
412
- </section>
445
+ {docsSection}
413
446
  </div>
414
447
  );
415
448
 
@@ -431,7 +464,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
431
464
  </button>
432
465
  );
433
466
 
434
- accountDropdownToggle = (
467
+ accountDropdownToggle = !hideOrgPicker ? (
435
468
  <button
436
469
  id='btn-toggle-orgs'
437
470
  className='btn-toggle-orgs'
@@ -440,6 +473,8 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
440
473
  onClick={() => this.toggleAccountDropdown(!showAccountDropdown)}>
441
474
  {activeFirstChar}
442
475
  </button>
476
+ ) : (
477
+ btnLogout
443
478
  );
444
479
  }
445
480
 
@@ -474,7 +509,11 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
474
509
  });
475
510
  }}>
476
511
  <div className='story-name'>
477
- {currentStory ? currentStory.name : story ? story.name : ''}
512
+ {currentStory
513
+ ? currentStory.name
514
+ : story
515
+ ? story.name
516
+ : 'Project Not Found'}
478
517
  </div>
479
518
  {this.renderDropdownChevron(showStoriesDropdown)}
480
519
  </button>
@@ -528,6 +567,19 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
528
567
  );
529
568
  }
530
569
 
570
+ const logo = showFTLogo ? (
571
+ <>
572
+ <div className='ft-logo' />
573
+ &nbsp;&nbsp;|&nbsp;&nbsp;
574
+ <h1 className='heading'>{ImposiumHeader.DEFAULT_TITLE}</h1>
575
+ </>
576
+ ) : (
577
+ <>
578
+ <div className='logo' />
579
+ <h1 className='heading'>{ImposiumHeader.DEFAULT_TITLE}</h1>
580
+ </>
581
+ );
582
+
531
583
  return (
532
584
  <nav
533
585
  id='imposium-header'
@@ -535,16 +587,13 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
535
587
  style={headerBorder}>
536
588
  <div className='inner-content'>
537
589
  <span className='inner-left'>
538
- <div className='title'>
539
- <div className='logo' />
540
- <h1 className='heading'>{ImposiumHeader.DEFAULT_TITLE}</h1>
541
- </div>
542
-
590
+ <div className='title'>{logo}</div>
543
591
  {serviceDropdownToggle}
544
592
  </span>
545
593
 
546
594
  <span className='inner-right'>
547
595
  {storyToggle}
596
+ <div className='additional-buttons'>{additionalButtons}</div>
548
597
  {accountDropdownToggle}
549
598
  <a
550
599
  href='https://support.flashtalking.com/hc/en-us/sections/25515903148819-Imposium'
@@ -584,11 +633,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
584
633
 
585
634
  <div className='orgs-menu-footer'>
586
635
  <div className='email'>{email}</div>
587
- <button
588
- className='btn-logout'
589
- onClick={() => this.doLogout()}>
590
- {ImposiumHeader.LOGOUT_COPY}
591
- </button>
636
+ {btnLogout}
592
637
  </div>
593
638
  </div>
594
639
  </ImposiumDropdown>
@@ -600,7 +645,8 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
600
645
  const mapStateToProps = (state): any => {
601
646
  return {
602
647
  auth: state.auth,
603
- story: state.story
648
+ story: state.story,
649
+ access: state.access
604
650
  };
605
651
  };
606
652
 
@@ -5,10 +5,12 @@ import HRule from '../h-rule/HRule';
5
5
  import {
6
6
  ICON_DOWNLOAD,
7
7
  ICON_EMAIL,
8
+ ICON_EXCLAIMATION_TRIANGLE,
8
9
  ICON_GLOBE,
9
10
  ICON_HUBSPOT,
10
11
  ICON_IMAGE,
11
- ICON_PROJECT_DIAGRAM
12
+ ICON_PROJECT_DIAGRAM,
13
+ ICON_UP_RIGHT_FROM_SQUARE
12
14
  } from '../../constants/icons';
13
15
  import { IImposiumAPI } from '../../services/API';
14
16
  import * as copy from '../../constants/copy';
@@ -23,6 +25,8 @@ import { publishVersion } from '../../redux/actions/publish';
23
25
  import { connect } from 'react-redux';
24
26
 
25
27
  interface IPublishWizardProps {
28
+ fromCrM?: boolean;
29
+ creativeManagerBaseUrl?: string;
26
30
  story: any;
27
31
  project: any;
28
32
  updateEditorConfig(c): void;
@@ -34,7 +38,6 @@ interface IPublishWizardProps {
34
38
  exportExperiences: () => void;
35
39
  publishVersion: (api: IImposiumAPI, sId: string) => any;
36
40
  batchesList: any;
37
- publishing: boolean;
38
41
  onClose(): any;
39
42
  api: IImposiumAPI;
40
43
  handleError(e): void;
@@ -91,6 +94,7 @@ interface IPublishWizardState {
91
94
  error: boolean;
92
95
  next: boolean;
93
96
  nextStep: boolean;
97
+ publishError: string;
94
98
  }
95
99
 
96
100
  interface IBigButtonProps {
@@ -134,12 +138,27 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
134
138
  done: false,
135
139
  error: false,
136
140
  next: false,
137
- nextStep: false
141
+ nextStep: false,
142
+ publishError: null
138
143
  };
139
144
  this.emailWorkflow = React.createRef();
140
145
  this.hiddenFileInputRef = React.createRef();
141
146
  }
142
147
 
148
+ public componentDidUpdate(prevProps, prevState) {
149
+ // If we just finished publushing, and we're on the first screen still go to the second screen
150
+ if (
151
+ prevProps.publishData.publishing &&
152
+ !this.props.publishData.publishing &&
153
+ this.state.screenIndex === 0 &&
154
+ !this.state.publishError
155
+ ) {
156
+ this.setState({
157
+ screenIndex: 1
158
+ });
159
+ }
160
+ }
161
+
143
162
  public componentDidMount() {
144
163
  const { story, api, handleError, activeComposition } = this.props;
145
164
  // Pull in all of the access creds for the composition dropdown
@@ -275,12 +294,25 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
275
294
  const {
276
295
  story: { id },
277
296
  api,
278
- handleError
297
+ handleError,
298
+ fromCrM
279
299
  } = this.props;
280
- this.props.publishVersion(api, id).catch((e) => {
281
- handleError(e);
282
- });
283
- this.setState({ screenIndex: 1 });
300
+
301
+ if (fromCrM) {
302
+ this.props
303
+ .publishVersion(api, id)
304
+ .then(() => {
305
+ this.setState({ screenIndex: 1 });
306
+ })
307
+ .catch((e) => {
308
+ this.setState({ publishError: e });
309
+ });
310
+ } else {
311
+ this.props.publishVersion(api, id).catch((e) => {
312
+ handleError(e);
313
+ });
314
+ this.setState({ screenIndex: 1 });
315
+ }
284
316
  }
285
317
 
286
318
  private onCloseHandler = () => {
@@ -296,7 +328,7 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
296
328
 
297
329
  private renderLowerButtons() {
298
330
  const { screenIndex, done, error, next } = this.state;
299
- const { publishing } = this.props;
331
+ const { publishing } = this.props.publishData;
300
332
 
301
333
  const lowerButtons = [];
302
334
 
@@ -383,11 +415,19 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
383
415
  }
384
416
 
385
417
  private renderPublish() {
418
+ const { publishing } = this.props.publishData;
419
+ const { publishError } = this.state;
420
+ const error = publishError ? (
421
+ <p className='publish-error'>
422
+ <span className='icon'>{ICON_EXCLAIMATION_TRIANGLE}</span>&nbsp;&nbsp;{publishError}
423
+ </p>
424
+ ) : null;
386
425
  return (
387
426
  <div>
388
427
  <h2>{copy.publish.publishStepTitle}</h2>
389
428
  <HRule />
390
- <p>{copy.publish.publishStepDesc}</p>
429
+ <p>{publishing ? copy.publish.publishInProgress : copy.publish.publishStepDesc}</p>
430
+ {error}
391
431
  </div>
392
432
  );
393
433
  }
@@ -398,7 +438,7 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
398
438
  const { compositions, afterEffects, selectedComposition, credentials, accessKey } =
399
439
  this.state;
400
440
 
401
- const { publishDataset } = this.props;
441
+ const { publishDataset, fromCrM, story, creativeManagerBaseUrl } = this.props;
402
442
 
403
443
  for (const comp of compositions) {
404
444
  compOpts.push({
@@ -421,56 +461,75 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
421
461
  });
422
462
  }
423
463
 
424
- let distributionOptions = [
425
- {
426
- label: (
427
- <span>
428
- {ICON_GLOBE}&nbsp;{copy.publish.btnWebsite}
429
- </span>
430
- ),
431
- onClick: (e) => this.onSelectOption(2)
432
- },
433
- {
434
- label: (
435
- <span>
436
- {ICON_EMAIL}&nbsp;{copy.publish.btnEmail}
437
- </span>
438
- ),
439
- onClick: (e) => this.onSelectOption(3)
440
- },
441
- {
442
- label: (
443
- <span>
444
- {ICON_HUBSPOT}&nbsp;{copy.publish.btnHubspot}
445
- </span>
446
- ),
447
- onClick: (e) => this.onSelectOption(5)
448
- },
449
- {
450
- label: (
451
- <span>
452
- {ICON_PROJECT_DIAGRAM}&nbsp;{copy.publish.btnAPI}
453
- </span>
454
- ),
455
- onClick: (e) => this.onSelectOption(6)
456
- },
457
- {
458
- label: (
459
- <span>
460
- {ICON_DOWNLOAD}&nbsp;{copy.publish.btnExport}
461
- </span>
462
- ),
463
- onClick: (e) => this.onSelectOption(7)
464
- },
465
- {
466
- label: (
467
- <span>
468
- {ICON_IMAGE}&nbsp;{copy.publish.btnCRM}
469
- </span>
470
- ),
471
- onClick: (e) => this.onSelectOption(8)
472
- }
473
- ];
464
+ let distributionOptions = !fromCrM
465
+ ? [
466
+ {
467
+ label: (
468
+ <span>
469
+ {ICON_GLOBE}&nbsp;{copy.publish.btnWebsite}
470
+ </span>
471
+ ),
472
+ onClick: (e) => this.onSelectOption(2)
473
+ },
474
+ {
475
+ label: (
476
+ <span>
477
+ {ICON_EMAIL}&nbsp;{copy.publish.btnEmail}
478
+ </span>
479
+ ),
480
+ onClick: (e) => this.onSelectOption(3)
481
+ },
482
+ {
483
+ label: (
484
+ <span>
485
+ {ICON_HUBSPOT}&nbsp;{copy.publish.btnHubspot}
486
+ </span>
487
+ ),
488
+ onClick: (e) => this.onSelectOption(5)
489
+ },
490
+ {
491
+ label: (
492
+ <span>
493
+ {ICON_PROJECT_DIAGRAM}&nbsp;{copy.publish.btnAPI}
494
+ </span>
495
+ ),
496
+ onClick: (e) => this.onSelectOption(6)
497
+ },
498
+ {
499
+ label: (
500
+ <span>
501
+ {ICON_DOWNLOAD}&nbsp;{copy.publish.btnExport}
502
+ </span>
503
+ ),
504
+ onClick: (e) => this.onSelectOption(7)
505
+ },
506
+ {
507
+ label: (
508
+ <span>
509
+ {ICON_IMAGE}&nbsp;{copy.publish.btnCRM}
510
+ </span>
511
+ ),
512
+ onClick: (e) => this.onSelectOption(8)
513
+ }
514
+ ]
515
+ : [
516
+ {
517
+ label: (
518
+ <span>
519
+ {ICON_DOWNLOAD}&nbsp;{copy.publish.btnRunTestBatch}
520
+ </span>
521
+ ),
522
+ onClick: (e) => this.onSelectOption(7)
523
+ },
524
+ {
525
+ label: (
526
+ <span>
527
+ {ICON_UP_RIGHT_FROM_SQUARE}&nbsp;{copy.publish.btnCrM}
528
+ </span>
529
+ ),
530
+ link: `${creativeManagerBaseUrl}/library/${story.creativeLibraryId}/creative/${story.creativeLibraryId}/versions/`
531
+ }
532
+ ];
474
533
 
475
534
  if (publishDataset) {
476
535
  const indexes = [0, 2, 3];
@@ -482,41 +541,67 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
482
541
  }, []);
483
542
  }
484
543
 
544
+ const compDropdown = !fromCrM ? (
545
+ <SelectField
546
+ label={copy.project.compName}
547
+ value={selectedComposition}
548
+ onChange={this.onCompositionChange}
549
+ options={compOpts}
550
+ tooltip={copy.project.tooltipCompId}
551
+ />
552
+ ) : null;
553
+
554
+ const accessKeyDropdown = !fromCrM ? (
555
+ <SelectField
556
+ label={copy.publish.accessKey}
557
+ value={accessKey}
558
+ onChange={this.onCredentialsChange}
559
+ options={credOpts}
560
+ tooltip={copy.publish.tooltipAccessKey}
561
+ />
562
+ ) : null;
563
+
485
564
  return (
486
565
  <div>
487
- <h2>{copy.publish.distributeStepTitle}</h2>
566
+ <h2>
567
+ {!fromCrM
568
+ ? copy.publish.distributeStepTitle
569
+ : copy.publish.distributeStepTitleFromCrM}
570
+ </h2>
488
571
  <HRule />
489
- <p>{copy.publish.distributeStepDesc}</p>
572
+ <p>
573
+ {!fromCrM
574
+ ? copy.publish.distributeStepDesc
575
+ : copy.publish.distributeStepDescFromCrM}
576
+ </p>
490
577
  <HRule />
491
- {!this.state.selectedComposition && (
578
+ {!this.state.selectedComposition && !fromCrM && (
492
579
  <p className={'text-danger'}>{copy.publish.noCompErrorDesc}</p>
493
580
  )}
494
581
  <div style={{ marginTop: '10px' }}>
495
- <SelectField
496
- label={copy.project.compName}
497
- value={selectedComposition}
498
- onChange={this.onCompositionChange}
499
- options={compOpts}
500
- tooltip={copy.project.tooltipCompId}
501
- />
502
- <SelectField
503
- label={copy.publish.accessKey}
504
- value={accessKey}
505
- onChange={this.onCredentialsChange}
506
- options={credOpts}
507
- tooltip={copy.publish.tooltipAccessKey}
508
- />
582
+ {compDropdown}
583
+ {accessKeyDropdown}
509
584
 
510
585
  <div className='link-wrapper'>
511
- {distributionOptions?.map((option, index) => {
512
- return (
513
- <BigButton
514
- key={index}
515
- disabled={!selectedComposition}
516
- label={option.label}
517
- onClick={option.onClick}
518
- />
519
- );
586
+ {distributionOptions?.map((option: any, index) => {
587
+ if (option.link) {
588
+ return (
589
+ <BigLink
590
+ key={index}
591
+ label={option.label}
592
+ link={option.link}
593
+ />
594
+ );
595
+ } else {
596
+ return (
597
+ <BigButton
598
+ key={index}
599
+ disabled={!selectedComposition}
600
+ label={option.label}
601
+ onClick={option.onClick}
602
+ />
603
+ );
604
+ }
520
605
  })}
521
606
  </div>
522
607
  </div>