@imposium-hub/components 2.11.4 → 2.11.5-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/dist/cjs/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
- package/dist/cjs/components/anchor-field/AnchorField.d.ts +1 -1
- package/dist/cjs/components/assets/AssetsTableDateCell.d.ts +6 -1
- package/dist/cjs/components/assets/AssetsTableGlobalCell.d.ts +5 -1
- package/dist/cjs/components/assets/AssetsTablePreviewCell.d.ts +17 -1
- package/dist/cjs/components/assets/AssetsTableStatusCell.d.ts +5 -1
- package/dist/cjs/components/assets/AssetsTableTagsCell.d.ts +6 -1
- package/dist/cjs/components/assets/AssetsTableTypeCell.d.ts +5 -1
- package/dist/cjs/components/assets/AssetsTypeIcon.d.ts +5 -1
- package/dist/cjs/components/assets/FontAssetPreview.d.ts +1 -1
- package/dist/cjs/components/assets/StoryTableTotalRendersCell.d.ts +2 -1
- package/dist/cjs/components/button/Button.d.ts +1 -1
- package/dist/cjs/components/button/Button.stories.d.ts +6 -5
- package/dist/cjs/components/button-group-field/ButtonGroupField.stories.d.ts +2 -1
- package/dist/cjs/components/button-menu/ButtonMenu.d.ts +2 -2
- package/dist/cjs/components/button-menu/ButtonMenu.stories.d.ts +2 -1
- package/dist/cjs/components/button-menu/ButtonMenuItem.d.ts +1 -1
- package/dist/cjs/components/card/Card.d.ts +4 -4
- package/dist/cjs/components/card/Card.stories.d.ts +2 -1
- package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +1 -1
- package/dist/cjs/components/checkbox-field/CheckboxField.stories.d.ts +2 -1
- package/dist/cjs/components/color-field/ColorField.d.ts +1 -1
- package/dist/cjs/components/color-field/ColorFiled.stories.d.ts +2 -1
- package/dist/cjs/components/compositions/TextLayer.d.ts +1 -1
- package/dist/cjs/components/confirm-modal/ConfirmModal.d.ts +2 -1
- package/dist/cjs/components/controlled-list/ControlledList.d.ts +2 -2
- package/dist/cjs/components/controlled-list/ControlledList.stories.d.ts +2 -1
- package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.d.ts +1 -1
- package/dist/cjs/components/determinate-loader/DeterminateLoader.stories.d.ts +4 -3
- package/dist/cjs/components/dropdown/Dropdown.d.ts +1 -1
- package/dist/cjs/components/dropdown/dropdown.stories.d.ts +1 -1
- package/dist/cjs/components/field-wrapper/FieldWrapper.d.ts +2 -2
- package/dist/cjs/components/field-wrapper/FieldWrapper.stories.d.ts +2 -1
- package/dist/cjs/components/font-picker/FontPicker.d.ts +1 -1
- package/dist/cjs/components/h-rule/HRule.d.ts +2 -1
- package/dist/cjs/components/h-rule/HRule.stories.d.ts +3 -2
- package/dist/cjs/components/header/Header.js +2 -3
- package/dist/cjs/components/header/Header.js.map +1 -1
- package/dist/cjs/components/header/ProjectDropdown.d.ts +2 -1
- package/dist/cjs/components/list-field/ListField.d.ts +1 -1
- package/dist/cjs/components/list-field/ListField.stories.d.ts +2 -1
- package/dist/cjs/components/log-viewer/LogViewer.d.ts +1 -1
- package/dist/cjs/components/media-variable-field/MediaVariableField.d.ts +1 -1
- package/dist/cjs/components/modal/Modal.d.ts +1 -1
- package/dist/cjs/components/modal/Modal.stories.d.ts +2 -1
- package/dist/cjs/components/number-field/NumberField.d.ts +1 -1
- package/dist/cjs/components/number-field/NumberField.stories.d.ts +2 -1
- package/dist/cjs/components/players/AudioPlayer.d.ts +1 -1
- package/dist/cjs/components/players/AudioPreview.d.ts +1 -1
- package/dist/cjs/components/players/ImagePlayer.d.ts +1 -1
- package/dist/cjs/components/players/ImagePreview.d.ts +1 -1
- package/dist/cjs/components/players/ImageSequencePlayer.d.ts +1 -1
- package/dist/cjs/components/players/TemplatePlayer.d.ts +1 -1
- package/dist/cjs/components/players/VideoPlayer.d.ts +1 -1
- package/dist/cjs/components/players/VideoPreview.d.ts +1 -1
- package/dist/cjs/components/publish-wizard/PublishWizard.d.ts +2 -2
- package/dist/cjs/components/publish-wizard/PublishWizard.js +37 -14
- package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
- package/dist/cjs/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
- package/dist/cjs/components/publish-wizard/publish/CrMPublishCreativeSelectCell.js +1 -1
- package/dist/cjs/components/publish-wizard/publish/CrMPublishCreativeSelectCell.js.map +1 -1
- package/dist/cjs/components/publish-wizard/publish/CrMPublishCreativeSelectHeader.js.map +1 -1
- package/dist/cjs/components/publish-wizard/publish/CrMPublishNameCell.js +1 -1
- package/dist/cjs/components/publish-wizard/publish/CrMPublishNameCell.js.map +1 -1
- package/dist/cjs/components/publish-wizard/publish/CrMPublishPreviewCell.js.map +1 -1
- package/dist/cjs/components/publish-wizard/publish/CrMPublishStatusCell.js.map +1 -1
- package/dist/cjs/components/publish-wizard/publish/CrMPublishUI.js +15 -11
- package/dist/cjs/components/publish-wizard/publish/CrMPublishUI.js.map +1 -1
- package/dist/cjs/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
- package/dist/cjs/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
- package/dist/cjs/components/section/Section.d.ts +2 -1
- package/dist/cjs/components/section/Section.stories.d.ts +3 -2
- package/dist/cjs/components/select-field/SelectField.d.ts +1 -1
- package/dist/cjs/components/select-field/SelectField.stories.d.ts +2 -1
- package/dist/cjs/components/shortcut-menu/ShortcutMenu.stories.d.ts +2 -1
- package/dist/cjs/components/slider-field/SliderField.d.ts +1 -1
- package/dist/cjs/components/slider-field/SliderField.stories.d.ts +2 -1
- package/dist/cjs/components/smpte-field/SMPTEField.d.ts +1 -1
- package/dist/cjs/components/tabs/Tabs.d.ts +4 -1
- package/dist/cjs/components/tabs/Tabs.stories.d.ts +5 -2
- package/dist/cjs/components/tag/Tag.d.ts +9 -1
- package/dist/cjs/components/text-area-field/TextAreaField.d.ts +1 -1
- package/dist/cjs/components/text-area-field/TextAreaField.stories.d.ts +2 -1
- package/dist/cjs/components/text-field/TextField.d.ts +1 -1
- package/dist/cjs/components/text-field/TextField.stories.d.ts +2 -1
- package/dist/cjs/constants/copy.d.ts +3 -0
- package/dist/cjs/constants/copy.js +3 -0
- package/dist/cjs/constants/copy.js.map +1 -1
- package/dist/cjs/constants/icons.d.ts +78 -76
- package/dist/cjs/constants/icons.js +3 -1
- package/dist/cjs/constants/icons.js.map +1 -1
- package/dist/cjs/constants/publish.d.ts +21 -0
- package/dist/cjs/constants/publish.js +26 -1
- package/dist/cjs/constants/publish.js.map +1 -1
- package/dist/cjs/redux/actions/publish.d.ts +1 -1
- package/dist/cjs/redux/actions/publish.js +2 -2
- package/dist/cjs/redux/actions/publish.js.map +1 -1
- package/dist/cjs/services/API.d.ts +4 -2
- package/dist/cjs/services/API.js +10 -1
- package/dist/cjs/services/API.js.map +1 -1
- package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
- package/dist/esm/components/anchor-field/AnchorField.d.ts +1 -1
- package/dist/esm/components/assets/AssetsTableDateCell.d.ts +6 -1
- package/dist/esm/components/assets/AssetsTableGlobalCell.d.ts +5 -1
- package/dist/esm/components/assets/AssetsTablePreviewCell.d.ts +17 -1
- package/dist/esm/components/assets/AssetsTableStatusCell.d.ts +5 -1
- package/dist/esm/components/assets/AssetsTableTagsCell.d.ts +6 -1
- package/dist/esm/components/assets/AssetsTableTypeCell.d.ts +5 -1
- package/dist/esm/components/assets/AssetsTypeIcon.d.ts +5 -1
- package/dist/esm/components/assets/FontAssetPreview.d.ts +1 -1
- package/dist/esm/components/assets/StoryTableTotalRendersCell.d.ts +2 -1
- package/dist/esm/components/button/Button.d.ts +1 -1
- package/dist/esm/components/button/Button.stories.d.ts +6 -5
- package/dist/esm/components/button-group-field/ButtonGroupField.stories.d.ts +2 -1
- package/dist/esm/components/button-menu/ButtonMenu.d.ts +2 -2
- package/dist/esm/components/button-menu/ButtonMenu.stories.d.ts +2 -1
- package/dist/esm/components/button-menu/ButtonMenuItem.d.ts +1 -1
- package/dist/esm/components/card/Card.d.ts +4 -4
- package/dist/esm/components/card/Card.stories.d.ts +2 -1
- package/dist/esm/components/checkbox-field/CheckboxField.d.ts +1 -1
- package/dist/esm/components/checkbox-field/CheckboxField.stories.d.ts +2 -1
- package/dist/esm/components/color-field/ColorField.d.ts +1 -1
- package/dist/esm/components/color-field/ColorFiled.stories.d.ts +2 -1
- package/dist/esm/components/compositions/TextLayer.d.ts +1 -1
- package/dist/esm/components/confirm-modal/ConfirmModal.d.ts +2 -1
- package/dist/esm/components/controlled-list/ControlledList.d.ts +2 -2
- package/dist/esm/components/controlled-list/ControlledList.stories.d.ts +2 -1
- package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.d.ts +1 -1
- package/dist/esm/components/determinate-loader/DeterminateLoader.stories.d.ts +4 -3
- package/dist/esm/components/dropdown/Dropdown.d.ts +1 -1
- package/dist/esm/components/dropdown/dropdown.stories.d.ts +1 -1
- package/dist/esm/components/field-wrapper/FieldWrapper.d.ts +2 -2
- package/dist/esm/components/field-wrapper/FieldWrapper.stories.d.ts +2 -1
- package/dist/esm/components/font-picker/FontPicker.d.ts +1 -1
- package/dist/esm/components/h-rule/HRule.d.ts +2 -1
- package/dist/esm/components/h-rule/HRule.stories.d.ts +3 -2
- package/dist/esm/components/header/Header.js +2 -3
- package/dist/esm/components/header/Header.js.map +1 -1
- package/dist/esm/components/header/ProjectDropdown.d.ts +2 -1
- package/dist/esm/components/list-field/ListField.d.ts +1 -1
- package/dist/esm/components/list-field/ListField.stories.d.ts +2 -1
- package/dist/esm/components/log-viewer/LogViewer.d.ts +1 -1
- package/dist/esm/components/media-variable-field/MediaVariableField.d.ts +1 -1
- package/dist/esm/components/modal/Modal.d.ts +1 -1
- package/dist/esm/components/modal/Modal.stories.d.ts +2 -1
- package/dist/esm/components/number-field/NumberField.d.ts +1 -1
- package/dist/esm/components/number-field/NumberField.stories.d.ts +2 -1
- package/dist/esm/components/players/AudioPlayer.d.ts +1 -1
- package/dist/esm/components/players/AudioPreview.d.ts +1 -1
- package/dist/esm/components/players/ImagePlayer.d.ts +1 -1
- package/dist/esm/components/players/ImagePreview.d.ts +1 -1
- package/dist/esm/components/players/ImageSequencePlayer.d.ts +1 -1
- package/dist/esm/components/players/TemplatePlayer.d.ts +1 -1
- package/dist/esm/components/players/VideoPlayer.d.ts +1 -1
- package/dist/esm/components/players/VideoPreview.d.ts +1 -1
- package/dist/esm/components/publish-wizard/PublishWizard.d.ts +2 -2
- package/dist/esm/components/publish-wizard/PublishWizard.js +36 -14
- package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
- package/dist/esm/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
- package/dist/esm/components/publish-wizard/publish/CrMPublishCreativeSelectCell.js +1 -1
- package/dist/esm/components/publish-wizard/publish/CrMPublishCreativeSelectCell.js.map +1 -1
- package/dist/esm/components/publish-wizard/publish/CrMPublishCreativeSelectHeader.js +3 -3
- package/dist/esm/components/publish-wizard/publish/CrMPublishCreativeSelectHeader.js.map +1 -1
- package/dist/esm/components/publish-wizard/publish/CrMPublishNameCell.js +1 -1
- package/dist/esm/components/publish-wizard/publish/CrMPublishNameCell.js.map +1 -1
- package/dist/esm/components/publish-wizard/publish/CrMPublishPreviewCell.js.map +1 -1
- package/dist/esm/components/publish-wizard/publish/CrMPublishStatusCell.js.map +1 -1
- package/dist/esm/components/publish-wizard/publish/CrMPublishUI.js +19 -15
- package/dist/esm/components/publish-wizard/publish/CrMPublishUI.js.map +1 -1
- package/dist/esm/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
- package/dist/esm/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
- package/dist/esm/components/section/Section.d.ts +2 -1
- package/dist/esm/components/section/Section.stories.d.ts +3 -2
- package/dist/esm/components/select-field/SelectField.d.ts +1 -1
- package/dist/esm/components/select-field/SelectField.stories.d.ts +2 -1
- package/dist/esm/components/shortcut-menu/ShortcutMenu.stories.d.ts +2 -1
- package/dist/esm/components/slider-field/SliderField.d.ts +1 -1
- package/dist/esm/components/slider-field/SliderField.stories.d.ts +2 -1
- package/dist/esm/components/smpte-field/SMPTEField.d.ts +1 -1
- package/dist/esm/components/tabs/Tabs.d.ts +4 -1
- package/dist/esm/components/tabs/Tabs.stories.d.ts +5 -2
- package/dist/esm/components/tag/Tag.d.ts +9 -1
- package/dist/esm/components/text-area-field/TextAreaField.d.ts +1 -1
- package/dist/esm/components/text-area-field/TextAreaField.stories.d.ts +2 -1
- package/dist/esm/components/text-field/TextField.d.ts +1 -1
- package/dist/esm/components/text-field/TextField.stories.d.ts +2 -1
- package/dist/esm/constants/copy.d.ts +3 -0
- package/dist/esm/constants/copy.js +3 -0
- package/dist/esm/constants/copy.js.map +1 -1
- package/dist/esm/constants/icons.d.ts +78 -76
- package/dist/esm/constants/icons.js +2 -0
- package/dist/esm/constants/icons.js.map +1 -1
- package/dist/esm/constants/publish.d.ts +21 -0
- package/dist/esm/constants/publish.js +25 -0
- package/dist/esm/constants/publish.js.map +1 -1
- package/dist/esm/redux/actions/publish.d.ts +1 -1
- package/dist/esm/redux/actions/publish.js +2 -2
- package/dist/esm/redux/actions/publish.js.map +1 -1
- package/dist/esm/services/API.d.ts +4 -2
- package/dist/esm/services/API.js +10 -1
- package/dist/esm/services/API.js.map +1 -1
- package/dist/styles.css +14 -4
- package/dist/styles.less +17 -5
- package/less/components/data-table.less +1 -0
- package/less/components/header.less +6 -5
- package/less/components/publish-wizard.less +10 -0
- package/package.json +1 -1
- package/src/components/header/Header.tsx +2 -4
- package/src/components/publish-wizard/PublishWizard.tsx +56 -18
- package/src/components/publish-wizard/publish/CrMPublishCreativeSelectCell.tsx +29 -0
- package/src/components/publish-wizard/publish/CrMPublishCreativeSelectHeader.tsx +33 -0
- package/src/components/publish-wizard/publish/CrMPublishNameCell.tsx +27 -0
- package/src/components/publish-wizard/publish/CrMPublishPreviewCell.tsx +27 -0
- package/src/components/publish-wizard/publish/CrMPublishStatusCell.tsx +13 -0
- package/src/components/publish-wizard/publish/CrMPublishUI.tsx +195 -0
- package/src/constants/copy.ts +3 -0
- package/src/constants/icons.tsx +3 -0
- package/src/constants/publish.ts +28 -0
- package/src/redux/actions/publish.ts +2 -2
- package/src/services/API.ts +19 -3
package/dist/styles.css
CHANGED
|
@@ -1023,6 +1023,7 @@ body a {
|
|
|
1023
1023
|
.ip-table-wrapper .ip-table .ip-table-filter .filterable-cell-wrapper {
|
|
1024
1024
|
display: flex;
|
|
1025
1025
|
align-items: center;
|
|
1026
|
+
justify-content: space-between;
|
|
1026
1027
|
}
|
|
1027
1028
|
.ip-table-wrapper .ip-table .ip-table-header .filterable-cell-wrapper,
|
|
1028
1029
|
.ip-table-wrapper .ip-table .ip-table-filter .filterable-cell-wrapper {
|
|
@@ -1861,12 +1862,13 @@ body a {
|
|
|
1861
1862
|
.imposium-header .inner-content .inner-right a {
|
|
1862
1863
|
border: none;
|
|
1863
1864
|
}
|
|
1864
|
-
.imposium-header .inner-content .inner-right .
|
|
1865
|
-
margin-right: 10px;
|
|
1866
|
-
}
|
|
1867
|
-
.imposium-header .inner-content .inner-right .additional-buttons .creativeMgrBtn {
|
|
1865
|
+
.imposium-header .inner-content .inner-right .creativeMgrBtn {
|
|
1868
1866
|
position: relative;
|
|
1869
1867
|
top: 1px;
|
|
1868
|
+
margin-right: 10px;
|
|
1869
|
+
}
|
|
1870
|
+
.imposium-header .inner-content .inner-right .additional-buttons {
|
|
1871
|
+
margin-right: 10px;
|
|
1870
1872
|
}
|
|
1871
1873
|
.imposium-header .inner-content .inner-right .btn-help {
|
|
1872
1874
|
-webkit-touch-callout: none;
|
|
@@ -2486,6 +2488,14 @@ body a {
|
|
|
2486
2488
|
font-weight: bold;
|
|
2487
2489
|
font-size: 14px;
|
|
2488
2490
|
}
|
|
2491
|
+
.crm-publish-name {
|
|
2492
|
+
background: #161616;
|
|
2493
|
+
width: 100%;
|
|
2494
|
+
padding-left: 5px;
|
|
2495
|
+
}
|
|
2496
|
+
.crm-publish-name.disabled {
|
|
2497
|
+
opacity: 0.5;
|
|
2498
|
+
}
|
|
2489
2499
|
.section {
|
|
2490
2500
|
position: absolute;
|
|
2491
2501
|
width: 100%;
|
package/dist/styles.less
CHANGED
|
@@ -1131,6 +1131,7 @@ body{
|
|
|
1131
1131
|
.filterable-cell-wrapper {
|
|
1132
1132
|
display: flex;
|
|
1133
1133
|
align-items: center;
|
|
1134
|
+
justify-content: space-between;
|
|
1134
1135
|
}
|
|
1135
1136
|
|
|
1136
1137
|
.filterable-cell-wrapper {
|
|
@@ -1866,13 +1867,14 @@ body{
|
|
|
1866
1867
|
border:none;
|
|
1867
1868
|
}
|
|
1868
1869
|
|
|
1869
|
-
.
|
|
1870
|
+
.creativeMgrBtn {
|
|
1871
|
+
position: relative;
|
|
1872
|
+
top: 1px;
|
|
1870
1873
|
margin-right:10px;
|
|
1874
|
+
}
|
|
1871
1875
|
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
top: 1px;
|
|
1875
|
-
}
|
|
1876
|
+
.additional-buttons{
|
|
1877
|
+
margin-right:10px;
|
|
1876
1878
|
}
|
|
1877
1879
|
|
|
1878
1880
|
.btn-help {
|
|
@@ -2417,6 +2419,16 @@ body{
|
|
|
2417
2419
|
}
|
|
2418
2420
|
}
|
|
2419
2421
|
|
|
2422
|
+
.crm-publish-name{
|
|
2423
|
+
background: @backgroundDark;
|
|
2424
|
+
width: 100%;
|
|
2425
|
+
padding-left: 5px;
|
|
2426
|
+
|
|
2427
|
+
&.disabled{
|
|
2428
|
+
opacity: 0.5;
|
|
2429
|
+
}
|
|
2430
|
+
}
|
|
2431
|
+
|
|
2420
2432
|
@sectionPadding:7px 5px 5px 5px;
|
|
2421
2433
|
@sectionHeaderHeight:25px;
|
|
2422
2434
|
@loaderHeight:6px;
|
|
@@ -193,13 +193,14 @@
|
|
|
193
193
|
border:none;
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
-
.
|
|
196
|
+
.creativeMgrBtn {
|
|
197
|
+
position: relative;
|
|
198
|
+
top: 1px;
|
|
197
199
|
margin-right:10px;
|
|
200
|
+
}
|
|
198
201
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
top: 1px;
|
|
202
|
-
}
|
|
202
|
+
.additional-buttons{
|
|
203
|
+
margin-right:10px;
|
|
203
204
|
}
|
|
204
205
|
|
|
205
206
|
.btn-help {
|
package/package.json
CHANGED
|
@@ -544,11 +544,9 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
544
544
|
</span>
|
|
545
545
|
|
|
546
546
|
<span className='inner-right'>
|
|
547
|
+
{CrMLink}
|
|
547
548
|
{storyToggle}
|
|
548
|
-
<div className='additional-buttons'>
|
|
549
|
-
{additionalButtons}
|
|
550
|
-
{CrMLink}
|
|
551
|
-
</div>
|
|
549
|
+
<div className='additional-buttons'>{additionalButtons}</div>
|
|
552
550
|
{accountDropdownToggle}
|
|
553
551
|
<a
|
|
554
552
|
href='https://support.flashtalking.com/hc/en-us/sections/25515903148819-Imposium'
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { CrMPublishUI } from './publish/CrMPublishUI';
|
|
2
3
|
import Button from '../button/Button';
|
|
3
4
|
import SelectField from '../select-field/SelectField';
|
|
4
5
|
import HRule from '../h-rule/HRule';
|
|
@@ -34,7 +35,7 @@ interface IPublishWizardProps {
|
|
|
34
35
|
checkStoryForErrors(): any;
|
|
35
36
|
addViewer(c: any): void;
|
|
36
37
|
exportExperiences: () => void;
|
|
37
|
-
publishVersion: (api: IImposiumAPI, sId: string) => any;
|
|
38
|
+
publishVersion: (api: IImposiumAPI, sId: string, creativeIds?: string[]) => any;
|
|
38
39
|
batchesList: any;
|
|
39
40
|
onClose(): any;
|
|
40
41
|
api: IImposiumAPI;
|
|
@@ -94,6 +95,7 @@ interface IPublishWizardState {
|
|
|
94
95
|
next: boolean;
|
|
95
96
|
nextStep: boolean;
|
|
96
97
|
publishError: string;
|
|
98
|
+
selectedCreatives: string[];
|
|
97
99
|
}
|
|
98
100
|
|
|
99
101
|
interface IBigButtonProps {
|
|
@@ -140,7 +142,8 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
140
142
|
error: false,
|
|
141
143
|
next: false,
|
|
142
144
|
nextStep: false,
|
|
143
|
-
publishError: null
|
|
145
|
+
publishError: null,
|
|
146
|
+
selectedCreatives: []
|
|
144
147
|
};
|
|
145
148
|
this.emailWorkflow = React.createRef();
|
|
146
149
|
this.hiddenFileInputRef = React.createRef();
|
|
@@ -301,7 +304,7 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
301
304
|
|
|
302
305
|
if (fromCrM) {
|
|
303
306
|
this.props
|
|
304
|
-
.publishVersion(api, id)
|
|
307
|
+
.publishVersion(api, id, this.state.selectedCreatives)
|
|
305
308
|
.then(() => {
|
|
306
309
|
this.setState({ screenIndex: 1 });
|
|
307
310
|
})
|
|
@@ -334,12 +337,27 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
334
337
|
|
|
335
338
|
if (fromCrM && varLength === 0) {
|
|
336
339
|
return true;
|
|
340
|
+
} else if (fromCrM && this.state.selectedCreatives.length === 0) {
|
|
341
|
+
return true;
|
|
337
342
|
}
|
|
338
343
|
return false;
|
|
339
344
|
}
|
|
340
345
|
|
|
346
|
+
private getErrorCopyForCrMPublish() {
|
|
347
|
+
const { story, project } = this.props;
|
|
348
|
+
const variables = story ? story.acts[project.actId].inventory : {};
|
|
349
|
+
const varLength = variables ? Object.keys(variables).length : 0;
|
|
350
|
+
|
|
351
|
+
if (varLength === 0) {
|
|
352
|
+
return copy.publish.noVariablesError;
|
|
353
|
+
} else if (this.state.selectedCreatives.length === 0) {
|
|
354
|
+
return null;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
|
|
341
358
|
private renderLowerButtons() {
|
|
342
359
|
const { screenIndex, done, error, next } = this.state;
|
|
360
|
+
const { fromCrM } = this.props;
|
|
343
361
|
const { publishing } = this.props.publishData;
|
|
344
362
|
const disabledForCrM = this.shouldDisablePublishButtonForCrM();
|
|
345
363
|
const lowerButtons = [];
|
|
@@ -347,6 +365,10 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
347
365
|
// publish and skip buttons
|
|
348
366
|
if (screenIndex === 0) {
|
|
349
367
|
// publish
|
|
368
|
+
|
|
369
|
+
const btnCopy = fromCrM
|
|
370
|
+
? `Publish to ${this.state.selectedCreatives.length} Creatives`
|
|
371
|
+
: copy.publish.btnPublish;
|
|
350
372
|
lowerButtons.push(
|
|
351
373
|
<Button
|
|
352
374
|
tooltip={copy.publish.btnPublish}
|
|
@@ -355,7 +377,7 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
355
377
|
key='btn-publish'
|
|
356
378
|
onClick={() => this.handlePublish()}
|
|
357
379
|
color='primary'>
|
|
358
|
-
{
|
|
380
|
+
{btnCopy}
|
|
359
381
|
</Button>
|
|
360
382
|
);
|
|
361
383
|
|
|
@@ -434,28 +456,44 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
434
456
|
}
|
|
435
457
|
|
|
436
458
|
private renderPublish() {
|
|
459
|
+
const { fromCrM, story } = this.props;
|
|
437
460
|
const { publishing } = this.props.publishData;
|
|
438
|
-
const disabledForCrM = this.shouldDisablePublishButtonForCrM();
|
|
439
461
|
const { publishError } = this.state;
|
|
440
|
-
const
|
|
441
|
-
|
|
442
|
-
: disabledForCrM
|
|
443
|
-
? copy.publish.noVariablesError
|
|
444
|
-
: null;
|
|
462
|
+
const errorCopyForCrM = this.getErrorCopyForCrMPublish();
|
|
463
|
+
const errorCopy = publishError ? publishError : errorCopyForCrM ? errorCopyForCrM : null;
|
|
445
464
|
|
|
446
465
|
const error = errorCopy ? (
|
|
447
466
|
<p className='publish-error'>
|
|
448
467
|
<span className='icon'>{ICON_EXCLAIMATION_TRIANGLE}</span> {errorCopy}
|
|
449
468
|
</p>
|
|
450
469
|
) : null;
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
<
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
470
|
+
|
|
471
|
+
if (fromCrM) {
|
|
472
|
+
return (
|
|
473
|
+
<CrMPublishUI
|
|
474
|
+
selectedCreatives={this.state.selectedCreatives}
|
|
475
|
+
onUpdateSelectedCreatives={(c) => this.setState({ selectedCreatives: c })}
|
|
476
|
+
onError={(e) => this.setState({ publishError: e })}
|
|
477
|
+
publishing={publishing}
|
|
478
|
+
error={error}
|
|
479
|
+
creativeLibraryId={story.creativeLibraryId}
|
|
480
|
+
projectId={story.id}
|
|
481
|
+
api={this.props.api}
|
|
482
|
+
crmBaseUrl={this.props.creativeManagerBaseUrl}
|
|
483
|
+
/>
|
|
484
|
+
);
|
|
485
|
+
} else {
|
|
486
|
+
return (
|
|
487
|
+
<div>
|
|
488
|
+
<h2>{copy.publish.publishStepTitle}</h2>
|
|
489
|
+
<HRule />
|
|
490
|
+
<p>
|
|
491
|
+
{publishing ? copy.publish.publishInProgress : copy.publish.publishStepDesc}
|
|
492
|
+
</p>
|
|
493
|
+
{error}
|
|
494
|
+
</div>
|
|
495
|
+
);
|
|
496
|
+
}
|
|
459
497
|
}
|
|
460
498
|
|
|
461
499
|
private renderDistributionOptions() {
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import CheckboxField from '../../checkbox-field/CheckboxField';
|
|
3
|
+
import { canBePublishedTo } from './CrMPublishUI';
|
|
4
|
+
interface ICrMPublishCreativeSelectCellProps {
|
|
5
|
+
cell: any;
|
|
6
|
+
onSelectChange: (creativeId: string, selected: boolean) => void;
|
|
7
|
+
selectedCreatives: string[];
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const CrMPublishCreativeSelectCell: React.FC<ICrMPublishCreativeSelectCellProps> = (
|
|
11
|
+
props
|
|
12
|
+
) => {
|
|
13
|
+
const { cell, onSelectChange, selectedCreatives } = props;
|
|
14
|
+
const creativeId = cell.row.original.creativeId;
|
|
15
|
+
const isSelected = selectedCreatives.includes(creativeId);
|
|
16
|
+
const showCheckbox = canBePublishedTo(cell.row.original.approvalStatus);
|
|
17
|
+
if (showCheckbox) {
|
|
18
|
+
return (
|
|
19
|
+
<CheckboxField
|
|
20
|
+
label=''
|
|
21
|
+
propagate={false}
|
|
22
|
+
value={isSelected}
|
|
23
|
+
onChange={(selected) => onSelectChange(creativeId, selected)}
|
|
24
|
+
/>
|
|
25
|
+
);
|
|
26
|
+
} else {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import CheckboxField from '../../checkbox-field/CheckboxField';
|
|
3
|
+
import { canBePublishedTo } from './CrMPublishUI';
|
|
4
|
+
|
|
5
|
+
interface ICrMPublishCreativeSelectHeaderProps {
|
|
6
|
+
onSelectChange: (selected: boolean) => void;
|
|
7
|
+
selectedCreatives: string[];
|
|
8
|
+
creativeConfig: any[];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const CrMPublishCreativeSelectHeader: React.FC<ICrMPublishCreativeSelectHeaderProps> = (
|
|
12
|
+
props
|
|
13
|
+
) => {
|
|
14
|
+
const { onSelectChange, selectedCreatives, creativeConfig } = props;
|
|
15
|
+
|
|
16
|
+
const publishableCreatives = creativeConfig.filter((creative) =>
|
|
17
|
+
canBePublishedTo(creative.approvalStatus)
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
const publishableCreativeIds = publishableCreatives.map((creative) => creative.creativeId);
|
|
21
|
+
const allPublishableSelected =
|
|
22
|
+
publishableCreativeIds.length > 0 &&
|
|
23
|
+
publishableCreativeIds.every((id) => selectedCreatives.includes(id));
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<CheckboxField
|
|
27
|
+
label=''
|
|
28
|
+
propagate={false}
|
|
29
|
+
value={allPublishableSelected}
|
|
30
|
+
onChange={(selected) => onSelectChange(selected)}
|
|
31
|
+
/>
|
|
32
|
+
);
|
|
33
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { renderTooltip, renderTooltipProps } from '../../Tooltip';
|
|
3
|
+
import { canBePublishedTo } from './CrMPublishUI';
|
|
4
|
+
import * as copy from '../../../constants/copy';
|
|
5
|
+
|
|
6
|
+
interface ICrMPublishNameCellProps {
|
|
7
|
+
cell: any;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const CrMPublishNameCell: React.FC<ICrMPublishNameCellProps> = (props) => {
|
|
11
|
+
const { cell } = props;
|
|
12
|
+
const canBePublished = canBePublishedTo(cell.row.original.approvalStatus);
|
|
13
|
+
const tooltipId = `publish-name-${cell.row.original.creativeId}`;
|
|
14
|
+
|
|
15
|
+
if (canBePublished) {
|
|
16
|
+
return <div className={`crm-publish-name`}>{cell.row.original.creativeName}</div>;
|
|
17
|
+
} else {
|
|
18
|
+
return (
|
|
19
|
+
<div
|
|
20
|
+
className={`crm-publish-name disabled`}
|
|
21
|
+
{...renderTooltipProps(tooltipId, copy.publish.disabledCreativeTooltip)}>
|
|
22
|
+
{cell.row.original.creativeName}
|
|
23
|
+
{renderTooltip(tooltipId, copy.publish.disabledCreativeTooltip)}
|
|
24
|
+
</div>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Button } from '../../..';
|
|
3
|
+
import { ICON_EYE } from '../../../constants/icons';
|
|
4
|
+
|
|
5
|
+
interface ICrMPublishPreviewCellProps {
|
|
6
|
+
cell: any;
|
|
7
|
+
crmBaseUrl: string;
|
|
8
|
+
creativeLibraryId: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const CrMPublishPreviewCell: React.FC<ICrMPublishPreviewCellProps> = (props) => {
|
|
12
|
+
const { cell, crmBaseUrl, creativeLibraryId } = props;
|
|
13
|
+
const creativeId = cell.row.original.creativeId;
|
|
14
|
+
const previewUrl = `${crmBaseUrl}/library/${creativeLibraryId}/creative/${creativeId}/versions/`;
|
|
15
|
+
|
|
16
|
+
return (
|
|
17
|
+
<a
|
|
18
|
+
href={previewUrl}
|
|
19
|
+
target='_blank'>
|
|
20
|
+
<Button
|
|
21
|
+
style='subtle'
|
|
22
|
+
size='small'>
|
|
23
|
+
{ICON_EYE}
|
|
24
|
+
</Button>
|
|
25
|
+
</a>
|
|
26
|
+
);
|
|
27
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { CREATIVE_STATUS_LABELS } from '../../../constants/publish';
|
|
3
|
+
|
|
4
|
+
interface ICrMPublishStatusCellProps {
|
|
5
|
+
cell: any;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export const CrMPublishStatusCell: React.FC<ICrMPublishStatusCellProps> = (props) => {
|
|
9
|
+
const { cell } = props;
|
|
10
|
+
return (
|
|
11
|
+
CREATIVE_STATUS_LABELS[cell.row.original.approvalStatus] || cell.row.original.approvalStatus
|
|
12
|
+
);
|
|
13
|
+
};
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as copy from '../../../constants/copy';
|
|
3
|
+
import { DataTable, HRule, Button, IImposiumAPI, TextField } from '../../..';
|
|
4
|
+
import { useEffect, useState, useCallback } from 'react';
|
|
5
|
+
import { ICON_SEARCH } from '../../../constants/icons';
|
|
6
|
+
import { CREATIVE_STATUSES_TO_PUBLISH } from '../../../constants/publish';
|
|
7
|
+
import { CrMPublishStatusCell } from './CrMPublishStatusCell';
|
|
8
|
+
import { CrMPublishPreviewCell } from './CrMPublishPreviewCell';
|
|
9
|
+
import { CrMPublishNameCell } from './CrMPublishNameCell';
|
|
10
|
+
import { CrMPublishCreativeSelectHeader } from './CrMPublishCreativeSelectHeader';
|
|
11
|
+
import { CrMPublishCreativeSelectCell } from './CrMPublishCreativeSelectCell';
|
|
12
|
+
|
|
13
|
+
interface ICrmPublishUIProps {
|
|
14
|
+
publishing: boolean;
|
|
15
|
+
error: React.ReactNode;
|
|
16
|
+
api: IImposiumAPI;
|
|
17
|
+
creativeLibraryId: string;
|
|
18
|
+
projectId: string;
|
|
19
|
+
crmBaseUrl: string;
|
|
20
|
+
selectedCreatives: string[];
|
|
21
|
+
onUpdateSelectedCreatives: (selectedCreatives) => void;
|
|
22
|
+
onError: (error: string) => void;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const CrMPublishUI: React.FC<ICrmPublishUIProps> = (props) => {
|
|
26
|
+
const {
|
|
27
|
+
publishing,
|
|
28
|
+
error,
|
|
29
|
+
crmBaseUrl,
|
|
30
|
+
creativeLibraryId,
|
|
31
|
+
projectId,
|
|
32
|
+
api,
|
|
33
|
+
selectedCreatives,
|
|
34
|
+
onUpdateSelectedCreatives
|
|
35
|
+
} = props;
|
|
36
|
+
const [nameFilter, setNameFilter] = useState('');
|
|
37
|
+
const [creativeConfig, setCreativeConfig] = useState([]);
|
|
38
|
+
|
|
39
|
+
const nameSearch = (
|
|
40
|
+
<TextField
|
|
41
|
+
className='creative-name'
|
|
42
|
+
buttons={[
|
|
43
|
+
<Button
|
|
44
|
+
key='btn-search'
|
|
45
|
+
style='subtle'
|
|
46
|
+
size='small'>
|
|
47
|
+
{ICON_SEARCH}
|
|
48
|
+
</Button>
|
|
49
|
+
]}
|
|
50
|
+
width='150px'
|
|
51
|
+
value={nameFilter}
|
|
52
|
+
onChange={(value) => setNameFilter(value)}
|
|
53
|
+
/>
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
const onSelectChange = useCallback(
|
|
57
|
+
(creativeId: string, selected: boolean) => {
|
|
58
|
+
const previouslySelected = [...selectedCreatives];
|
|
59
|
+
if (selected) {
|
|
60
|
+
onUpdateSelectedCreatives([...previouslySelected, creativeId]);
|
|
61
|
+
} else {
|
|
62
|
+
onUpdateSelectedCreatives(previouslySelected.filter((id) => id !== creativeId));
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
[selectedCreatives, onUpdateSelectedCreatives]
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
const onSelectAllChange = useCallback(
|
|
69
|
+
(selected: boolean) => {
|
|
70
|
+
if (selected) {
|
|
71
|
+
const publishableCreativeIds = creativeConfig
|
|
72
|
+
.filter((creative) => canBePublishedTo(creative.approvalStatus))
|
|
73
|
+
.map((creative) => creative.creativeId);
|
|
74
|
+
onUpdateSelectedCreatives(publishableCreativeIds);
|
|
75
|
+
} else {
|
|
76
|
+
onUpdateSelectedCreatives([]);
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
[nameFilter, creativeConfig]
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
const COLUMN_CONFIG = [
|
|
83
|
+
{
|
|
84
|
+
accessor: 'selected',
|
|
85
|
+
width: 25,
|
|
86
|
+
disableResize: true,
|
|
87
|
+
disableSortBy: true,
|
|
88
|
+
Header: () => (
|
|
89
|
+
<CrMPublishCreativeSelectHeader
|
|
90
|
+
onSelectChange={onSelectAllChange}
|
|
91
|
+
selectedCreatives={selectedCreatives}
|
|
92
|
+
creativeConfig={creativeConfig}
|
|
93
|
+
/>
|
|
94
|
+
),
|
|
95
|
+
Cell: (cell: any) => (
|
|
96
|
+
<CrMPublishCreativeSelectCell
|
|
97
|
+
cell={cell}
|
|
98
|
+
onSelectChange={onSelectChange}
|
|
99
|
+
selectedCreatives={selectedCreatives}
|
|
100
|
+
/>
|
|
101
|
+
)
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
accessor: 'creativeName',
|
|
105
|
+
Header: 'Creative Name',
|
|
106
|
+
width: 250,
|
|
107
|
+
minWidth: 250,
|
|
108
|
+
maxWidth: 250,
|
|
109
|
+
disableSortBy: true,
|
|
110
|
+
Cell: (cell: any) => <CrMPublishNameCell cell={cell} />,
|
|
111
|
+
Search: nameSearch
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
accessor: 'creativeId',
|
|
115
|
+
Header: 'ID',
|
|
116
|
+
width: 75,
|
|
117
|
+
minWidth: 75,
|
|
118
|
+
maxWidth: 75,
|
|
119
|
+
disableSortBy: true
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
accessor: 'numberOfVersions',
|
|
123
|
+
Header: 'Versions',
|
|
124
|
+
width: 75,
|
|
125
|
+
minWidth: 75,
|
|
126
|
+
maxWidth: 75,
|
|
127
|
+
disableSortBy: true
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
accessor: 'approvalStatus',
|
|
131
|
+
Header: 'Status',
|
|
132
|
+
width: 75,
|
|
133
|
+
minWidth: 75,
|
|
134
|
+
maxWidth: 75,
|
|
135
|
+
disableSortBy: true,
|
|
136
|
+
Cell: (cell: any) => <CrMPublishStatusCell cell={cell} />
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
accessor: 'preview',
|
|
140
|
+
Header: 'Preview',
|
|
141
|
+
width: 50,
|
|
142
|
+
minWidth: 50,
|
|
143
|
+
maxWidth: 50,
|
|
144
|
+
disableSortBy: true,
|
|
145
|
+
Cell: (cell: any) => (
|
|
146
|
+
<CrMPublishPreviewCell
|
|
147
|
+
cell={cell}
|
|
148
|
+
crmBaseUrl={crmBaseUrl}
|
|
149
|
+
creativeLibraryId={creativeLibraryId}
|
|
150
|
+
/>
|
|
151
|
+
)
|
|
152
|
+
}
|
|
153
|
+
];
|
|
154
|
+
|
|
155
|
+
useEffect(() => {
|
|
156
|
+
api.getCreativesLinkedToProject(projectId)
|
|
157
|
+
.then((res) => {
|
|
158
|
+
setCreativeConfig(res.creatives);
|
|
159
|
+
})
|
|
160
|
+
.catch((err) => {
|
|
161
|
+
const msg = err.response?.data?.error || err.message;
|
|
162
|
+
const errorCopy = copy.publish.errorGettingCreatives.replace('{{ERR}}', msg);
|
|
163
|
+
props.onError(errorCopy);
|
|
164
|
+
});
|
|
165
|
+
}, []);
|
|
166
|
+
|
|
167
|
+
return (
|
|
168
|
+
<div>
|
|
169
|
+
<h2>{copy.publish.publishStepTitleFromCrM}</h2>
|
|
170
|
+
<HRule />
|
|
171
|
+
<p>{publishing ? copy.publish.publishInProgress : ''}</p>
|
|
172
|
+
<DataTable
|
|
173
|
+
showInterstitial={publishing}
|
|
174
|
+
columns={COLUMN_CONFIG}
|
|
175
|
+
data={
|
|
176
|
+
nameFilter
|
|
177
|
+
? creativeConfig.filter((creative) => {
|
|
178
|
+
return creative.creativeName
|
|
179
|
+
.toLowerCase()
|
|
180
|
+
.includes(nameFilter.toLowerCase());
|
|
181
|
+
})
|
|
182
|
+
: creativeConfig
|
|
183
|
+
}
|
|
184
|
+
hidePaginator={true}
|
|
185
|
+
itemsPerPage={1000}
|
|
186
|
+
tightRows={true}
|
|
187
|
+
/>
|
|
188
|
+
{error && <p className='publish-error'>{error}</p>}
|
|
189
|
+
</div>
|
|
190
|
+
);
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
export const canBePublishedTo = (approvalStatus: string) => {
|
|
194
|
+
return CREATIVE_STATUSES_TO_PUBLISH.includes(approvalStatus);
|
|
195
|
+
};
|
package/src/constants/copy.ts
CHANGED
|
@@ -127,6 +127,8 @@ export const compositions = {
|
|
|
127
127
|
};
|
|
128
128
|
|
|
129
129
|
export const publish = {
|
|
130
|
+
errorGettingCreatives: 'Error getting creatives linked to project: {{ERR}}',
|
|
131
|
+
disabledCreativeTooltip: 'You cannot publish a project to a creative with Approved status.',
|
|
130
132
|
uploadAsAssets: 'Upload as Assets',
|
|
131
133
|
noVariablesError:
|
|
132
134
|
'No variables found on the project. Cannot proceed with publishing to Creative Manager until at least one variable is added to the project.',
|
|
@@ -147,6 +149,7 @@ export const publish = {
|
|
|
147
149
|
|
|
148
150
|
// publish
|
|
149
151
|
publishStepTitle: 'STEP 1: Publish your Project',
|
|
152
|
+
publishStepTitleFromCrM: 'STEP 1: Publish your Project to selected Creatives',
|
|
150
153
|
publishStepDesc:
|
|
151
154
|
"Your project needs to be published before your changes can be seen. If you haven't made any changes since the last time you published, you can skip to the next step.",
|
|
152
155
|
|
package/src/constants/icons.tsx
CHANGED
|
@@ -60,6 +60,7 @@ import { faJs } from '@fortawesome/free-brands-svg-icons/faJs';
|
|
|
60
60
|
import { faDownload } from '@fortawesome/free-solid-svg-icons/faDownload';
|
|
61
61
|
import { faUpload } from '@fortawesome/free-solid-svg-icons/faUpload';
|
|
62
62
|
import { faCode } from '@fortawesome/free-solid-svg-icons/faCode';
|
|
63
|
+
import { faEye } from '@fortawesome/free-solid-svg-icons/faEye';
|
|
63
64
|
import {
|
|
64
65
|
faArrowDown,
|
|
65
66
|
faArrowLeft,
|
|
@@ -232,3 +233,5 @@ export const ICON_FILE_ERROR = <FontAwesomeIcon icon={faCircleExclamation} />;
|
|
|
232
233
|
export const ICON_FILE_ADD = <FontAwesomeIcon icon={faFileCirclePlus} />;
|
|
233
234
|
|
|
234
235
|
export const ICON_FILE_REPLACE = <FontAwesomeIcon icon={faFilePen} />;
|
|
236
|
+
|
|
237
|
+
export const ICON_EYE = <FontAwesomeIcon icon={faEye} />;
|