@imposium-hub/components 2.14.9 → 2.15.0-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/app-wrapper/AppWrapper.d.ts +1 -6
- package/dist/cjs/components/app-wrapper/AppWrapper.js +4 -8
- package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
- package/dist/cjs/components/app-wrapper/AppWrapperV2.d.ts +26 -0
- package/dist/cjs/components/app-wrapper/AppWrapperV2.js +266 -0
- package/dist/cjs/components/app-wrapper/AppWrapperV2.js.map +1 -0
- package/dist/cjs/components/app-wrapper/AppWrapperV3.d.ts +19 -0
- package/dist/cjs/components/app-wrapper/AppWrapperV3.js +195 -0
- package/dist/cjs/components/app-wrapper/AppWrapperV3.js.map +1 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +243 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +255 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +243 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +251 -0
- package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
- package/dist/cjs/components/assets/AssetsUploadMenu.js +5 -5
- package/dist/cjs/components/auth-gate/AuthGate.d.ts +2 -0
- package/dist/cjs/components/auth-gate/AuthGate.js +105 -0
- package/dist/cjs/components/auth-gate/AuthGate.js.map +1 -0
- package/dist/cjs/components/change-report/ChangeReportTree.d.ts +10 -0
- package/dist/cjs/components/change-report/ChangeReportTree.js +95 -0
- package/dist/cjs/components/change-report/ChangeReportTree.js.map +1 -0
- package/dist/cjs/components/context-menu/AnimateComponent.d.ts +0 -1
- package/dist/cjs/components/context-menu/AnimateComponent.js.map +1 -1
- package/dist/cjs/components/context-menu/ContextMenu.d.ts +0 -1
- package/dist/cjs/components/context-menu/ContextMenu.js +6 -6
- package/dist/cjs/components/context-menu/ContextMenu.js.map +1 -1
- package/dist/cjs/components/context-menu/ContextMenuItem.d.ts +0 -1
- package/dist/cjs/components/context-menu/ContextMenuItem.js.map +1 -1
- package/dist/cjs/components/context-menu/ContextMenuTrigger.d.ts +0 -1
- package/dist/cjs/components/context-menu/ContextMenuTrigger.js.map +1 -1
- package/dist/cjs/components/context-menu/SubMenu.d.ts +0 -1
- package/dist/cjs/components/context-menu/SubMenu.js.map +1 -1
- package/dist/cjs/components/dropdown/{Dropdown.stories.js → dropdown.stories.js} +1 -1
- package/dist/cjs/components/dropdown/{Dropdown.stories.js.map → dropdown.stories.js.map} +1 -1
- package/dist/cjs/components/edit-guide-modal/EditGuideModal.d.ts +8 -0
- package/dist/cjs/components/edit-guide-modal/EditGuideModal.js +132 -0
- package/dist/cjs/components/edit-guide-modal/EditGuideModal.js.map +1 -0
- package/dist/cjs/components/edit-marker-modal/EditMarkerModal.d.ts +8 -0
- package/dist/cjs/components/edit-marker-modal/EditMarkerModal.js +104 -0
- package/dist/cjs/components/edit-marker-modal/EditMarkerModal.js.map +1 -0
- package/dist/cjs/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
- package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js +91 -0
- package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
- package/dist/cjs/components/feature-flag-wrapper/FeatureFlagWrapper.d.ts +7 -0
- package/dist/cjs/components/feature-flag-wrapper/FeatureFlagWrapper.js +48 -0
- package/dist/cjs/components/feature-flag-wrapper/FeatureFlagWrapper.js.map +1 -0
- package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +33 -0
- package/dist/cjs/components/header/Header_BACKUP_73021.js +393 -0
- package/dist/cjs/components/header/Header_BACKUP_73021.js.map +1 -0
- package/dist/cjs/components/header/Header_BASE_73021.d.ts +29 -0
- package/dist/cjs/components/header/Header_BASE_73021.js +376 -0
- package/dist/cjs/components/header/Header_BASE_73021.js.map +1 -0
- package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +33 -0
- package/dist/cjs/components/header/Header_LOCAL_73021.js +382 -0
- package/dist/cjs/components/header/Header_LOCAL_73021.js.map +1 -0
- package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +30 -0
- package/dist/cjs/components/header/Header_REMOTE_73021.js +386 -0
- package/dist/cjs/components/header/Header_REMOTE_73021.js.map +1 -0
- package/dist/cjs/components/header/StoryDropdown.d.ts +6 -0
- package/dist/cjs/components/header/StoryDropdown.js +111 -0
- package/dist/cjs/components/header/StoryDropdown.js.map +1 -0
- package/dist/cjs/components/number-field/NumberField.d.ts +2 -3
- package/dist/cjs/components/number-field/NumberField.js +19 -23
- package/dist/cjs/components/number-field/NumberField.js.map +1 -1
- package/dist/cjs/components/portal/Portal.d.ts +0 -1
- package/dist/cjs/components/portal/Portal.js.map +1 -1
- package/dist/cjs/components/publish-wizard/PublishWizard.d.ts +5 -4
- package/dist/cjs/components/publish-wizard/PublishWizard.js +103 -34
- package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
- package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.d.ts +11 -0
- package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js +213 -0
- package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js.map +1 -0
- package/dist/cjs/components/service-icon/ServiceIcon.test.d.ts +0 -0
- package/dist/cjs/components/service-icon/ServiceIcon.test.js +1 -0
- package/dist/cjs/components/service-icon/ServiceIcon.test.js.map +1 -0
- package/dist/cjs/components/story-previewer/StoryPreviewer.js +2 -15
- package/dist/cjs/components/story-previewer/StoryPreviewer.js.map +1 -1
- package/dist/cjs/components/tabs/Tabs.d.ts +4 -12
- package/dist/cjs/components/tabs/Tabs.js +3 -21
- package/dist/cjs/components/tabs/Tabs.js.map +1 -1
- package/dist/cjs/components/tabs/Tabs.stories.d.ts +3 -1
- package/dist/cjs/components/tag/Tag.test.d.ts +0 -0
- package/dist/cjs/components/tag/Tag.test.js +1 -0
- package/dist/cjs/components/tag/Tag.test.js.map +1 -0
- package/dist/cjs/constants/copy.d.ts +9 -0
- package/dist/cjs/constants/copy.js +13 -2
- package/dist/cjs/constants/copy.js.map +1 -1
- package/dist/cjs/constants/snippets.d.ts +18 -0
- package/dist/cjs/constants/snippets.js +3 -0
- package/dist/cjs/constants/snippets.js.map +1 -0
- package/dist/cjs/index.d.ts +4 -2
- package/dist/cjs/index.js +4 -36
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/redux/actions/auth.d.ts +9 -0
- package/dist/cjs/redux/actions/auth.js +30 -0
- package/dist/cjs/redux/actions/auth.js.map +1 -0
- package/dist/cjs/redux/reducers/auth.d.ts +3 -0
- package/dist/cjs/redux/reducers/auth.js +67 -0
- package/dist/cjs/redux/reducers/auth.js.map +1 -0
- package/dist/cjs/services/API.d.ts +2 -0
- package/dist/cjs/services/API.js +6 -0
- package/dist/cjs/services/API.js.map +1 -1
- package/dist/cjs/services/Auth0.d.ts +18 -0
- package/dist/cjs/services/Auth0.js +102 -0
- package/dist/cjs/services/Auth0.js.map +1 -0
- package/dist/cjs/services/Session.d.ts +26 -0
- package/dist/cjs/services/Session.js +155 -0
- package/dist/cjs/services/Session.js.map +1 -0
- package/dist/cjs/utils/routing.d.ts +2 -4
- package/dist/cjs/utils/routing.js +4 -8
- package/dist/cjs/utils/routing.js.map +1 -1
- package/dist/esm/components/app-wrapper/AppWrapper.d.ts +1 -6
- package/dist/esm/components/app-wrapper/AppWrapper.js +5 -9
- package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
- package/dist/esm/components/app-wrapper/AppWrapperV2.d.ts +26 -0
- package/dist/esm/components/app-wrapper/AppWrapperV2.js +142 -0
- package/dist/esm/components/app-wrapper/AppWrapperV2.js.map +1 -0
- package/dist/esm/components/app-wrapper/AppWrapperV3.d.ts +19 -0
- package/dist/esm/components/app-wrapper/AppWrapperV3.js +88 -0
- package/dist/esm/components/app-wrapper/AppWrapperV3.js.map +1 -0
- package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
- package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +194 -0
- package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
- package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
- package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +208 -0
- package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
- package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
- package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +194 -0
- package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
- package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
- package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +204 -0
- package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
- package/dist/esm/components/assets/AssetsUploadMenu.js +5 -5
- package/dist/esm/components/auth-gate/AuthGate.d.ts +2 -0
- package/dist/esm/components/auth-gate/AuthGate.js +59 -0
- package/dist/esm/components/auth-gate/AuthGate.js.map +1 -0
- package/dist/esm/components/change-report/ChangeReportTree.d.ts +10 -0
- package/dist/esm/components/change-report/ChangeReportTree.js +42 -0
- package/dist/esm/components/change-report/ChangeReportTree.js.map +1 -0
- package/dist/esm/components/context-menu/AnimateComponent.d.ts +0 -1
- package/dist/esm/components/context-menu/AnimateComponent.js.map +1 -1
- package/dist/esm/components/context-menu/ContextMenu.d.ts +0 -1
- package/dist/esm/components/context-menu/ContextMenu.js +1 -2
- package/dist/esm/components/context-menu/ContextMenu.js.map +1 -1
- package/dist/esm/components/context-menu/ContextMenuItem.d.ts +0 -1
- package/dist/esm/components/context-menu/ContextMenuItem.js.map +1 -1
- package/dist/esm/components/context-menu/ContextMenuTrigger.d.ts +0 -1
- package/dist/esm/components/context-menu/ContextMenuTrigger.js.map +1 -1
- package/dist/esm/components/context-menu/SubMenu.d.ts +0 -1
- package/dist/esm/components/context-menu/SubMenu.js.map +1 -1
- package/dist/esm/components/dropdown/{Dropdown.stories.js → dropdown.stories.js} +1 -1
- package/dist/esm/components/dropdown/{Dropdown.stories.js.map → dropdown.stories.js.map} +1 -1
- package/dist/esm/components/edit-guide-modal/EditGuideModal.d.ts +8 -0
- package/dist/esm/components/edit-guide-modal/EditGuideModal.js +65 -0
- package/dist/esm/components/edit-guide-modal/EditGuideModal.js.map +1 -0
- package/dist/esm/components/edit-marker-modal/EditMarkerModal.d.ts +8 -0
- package/dist/esm/components/edit-marker-modal/EditMarkerModal.js +72 -0
- package/dist/esm/components/edit-marker-modal/EditMarkerModal.js.map +1 -0
- package/dist/esm/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
- package/dist/esm/components/error-message-preview/ErrorMessagePreview.js +35 -0
- package/dist/esm/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
- package/dist/esm/components/feature-flag-wrapper/FeatureFlagWrapper.d.ts +7 -0
- package/dist/esm/components/feature-flag-wrapper/FeatureFlagWrapper.js +10 -0
- package/dist/esm/components/feature-flag-wrapper/FeatureFlagWrapper.js.map +1 -0
- package/dist/esm/components/header/Header_BACKUP_73021.d.ts +33 -0
- package/dist/esm/components/header/Header_BACKUP_73021.js +336 -0
- package/dist/esm/components/header/Header_BACKUP_73021.js.map +1 -0
- package/dist/esm/components/header/Header_BASE_73021.d.ts +29 -0
- package/dist/esm/components/header/Header_BASE_73021.js +322 -0
- package/dist/esm/components/header/Header_BASE_73021.js.map +1 -0
- package/dist/esm/components/header/Header_LOCAL_73021.d.ts +33 -0
- package/dist/esm/components/header/Header_LOCAL_73021.js +328 -0
- package/dist/esm/components/header/Header_LOCAL_73021.js.map +1 -0
- package/dist/esm/components/header/Header_REMOTE_73021.d.ts +30 -0
- package/dist/esm/components/header/Header_REMOTE_73021.js +329 -0
- package/dist/esm/components/header/Header_REMOTE_73021.js.map +1 -0
- package/dist/esm/components/header/StoryDropdown.d.ts +6 -0
- package/dist/esm/components/header/StoryDropdown.js +82 -0
- package/dist/esm/components/header/StoryDropdown.js.map +1 -0
- package/dist/esm/components/number-field/NumberField.d.ts +2 -3
- package/dist/esm/components/number-field/NumberField.js +19 -18
- package/dist/esm/components/number-field/NumberField.js.map +1 -1
- package/dist/esm/components/portal/Portal.d.ts +0 -1
- package/dist/esm/components/portal/Portal.js.map +1 -1
- package/dist/esm/components/publish-wizard/PublishWizard.d.ts +5 -4
- package/dist/esm/components/publish-wizard/PublishWizard.js +91 -34
- package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
- package/dist/esm/components/replace-files-modal/ReplaceFilesModal.d.ts +11 -0
- package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js +141 -0
- package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js.map +1 -0
- package/dist/esm/components/service-icon/ServiceIcon.test.d.ts +0 -0
- package/dist/esm/components/service-icon/ServiceIcon.test.js +1 -0
- package/dist/esm/components/service-icon/ServiceIcon.test.js.map +1 -0
- package/dist/esm/components/story-previewer/StoryPreviewer.js +2 -14
- package/dist/esm/components/story-previewer/StoryPreviewer.js.map +1 -1
- package/dist/esm/components/tabs/Tabs.d.ts +4 -12
- package/dist/esm/components/tabs/Tabs.js +4 -11
- package/dist/esm/components/tabs/Tabs.js.map +1 -1
- package/dist/esm/components/tabs/Tabs.stories.d.ts +3 -1
- package/dist/esm/components/tag/Tag.test.d.ts +0 -0
- package/dist/esm/components/tag/Tag.test.js +1 -0
- package/dist/esm/components/tag/Tag.test.js.map +1 -0
- package/dist/esm/constants/copy.d.ts +9 -0
- package/dist/esm/constants/copy.js +13 -2
- package/dist/esm/constants/copy.js.map +1 -1
- package/dist/esm/constants/snippets.d.ts +18 -0
- package/dist/esm/constants/snippets.js +2 -0
- package/dist/esm/constants/snippets.js.map +1 -0
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.js +3 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/redux/actions/auth.d.ts +9 -0
- package/dist/esm/redux/actions/auth.js +25 -0
- package/dist/esm/redux/actions/auth.js.map +1 -0
- package/dist/esm/redux/reducers/auth.d.ts +3 -0
- package/dist/esm/redux/reducers/auth.js +27 -0
- package/dist/esm/redux/reducers/auth.js.map +1 -0
- package/dist/esm/services/API.d.ts +2 -0
- package/dist/esm/services/API.js +6 -0
- package/dist/esm/services/API.js.map +1 -1
- package/dist/esm/services/Auth0.d.ts +18 -0
- package/dist/esm/services/Auth0.js +68 -0
- package/dist/esm/services/Auth0.js.map +1 -0
- package/dist/esm/services/Session.d.ts +26 -0
- package/dist/esm/services/Session.js +107 -0
- package/dist/esm/services/Session.js.map +1 -0
- package/dist/esm/utils/routing.d.ts +2 -4
- package/dist/esm/utils/routing.js +3 -6
- package/dist/esm/utils/routing.js.map +1 -1
- package/dist/styles.css +130 -3
- package/dist/styles.less +215 -64
- package/less/components/assets.less +5 -6
- package/less/components/auth-gate.less +1 -1
- package/less/components/change-report.less +115 -0
- package/less/components/data-table.less +2 -2
- package/less/components/determinate-loader.less +2 -2
- package/less/components/font-preview.less +1 -1
- package/less/components/form-field.less +5 -5
- package/less/components/header.less +30 -30
- package/less/components/modal.less +2 -2
- package/less/components/player.less +2 -2
- package/less/components/publish-wizard.less +36 -0
- package/less/components/section.less +2 -2
- package/less/components/static-composition-editor.less +4 -4
- package/less/components/story-previewer.less +4 -4
- package/less/components/tabs.less +3 -3
- package/less/entry.less +1 -0
- package/package.json +13 -24
- package/src/components/app-wrapper/AppWrapper.tsx +10 -18
- package/src/components/assets/AssetsUploadMenu.tsx +5 -5
- package/src/components/change-report/ChangeReportTree.tsx +125 -0
- package/src/components/context-menu/AnimateComponent.tsx +0 -1
- package/src/components/context-menu/ContextMenu.tsx +13 -15
- package/src/components/context-menu/ContextMenuItem.tsx +0 -1
- package/src/components/context-menu/ContextMenuTrigger.tsx +0 -1
- package/src/components/context-menu/SubMenu.tsx +0 -1
- package/src/components/number-field/NumberField.tsx +24 -33
- package/src/components/portal/Portal.tsx +0 -1
- package/src/components/publish-wizard/PublishWizard.tsx +144 -39
- package/src/components/service-icon/ServiceIcon.test.tsx +0 -0
- package/src/components/story-previewer/StoryPreviewer.tsx +8 -21
- package/src/components/tabs/Tabs.tsx +8 -25
- package/src/components/tag/Tag.test.tsx +0 -0
- package/src/constants/copy.ts +16 -2
- package/src/constants/snippets.ts +25 -0
- package/src/index.ts +7 -2
- package/src/services/API.ts +8 -0
- package/src/utils/routing.ts +6 -10
- package/tsconfig.json +1 -1
- package/src/components/advanced-number-field/AdvancedNumberField.test.tsx +0 -704
- package/src/components/anchor-field/AnchorField.test.tsx +0 -130
- package/src/components/asset-details/AssetDetails.test.tsx +0 -494
- package/src/components/assets/AssetField.test.tsx +0 -439
- package/src/components/assets/AssetsTableAssetIdCell.test.tsx +0 -134
- package/src/components/assets/AssetsTableAssetIdFilter.test.tsx +0 -95
- package/src/components/assets/AssetsTableComplexTagCell.test.tsx +0 -159
- package/src/components/assets/AssetsTableDateCell.test.tsx +0 -106
- package/src/components/number-field/NumberField.test.tsx +0 -383
- package/src/components/text-field/TextField.test.tsx +0 -988
- package/src/test/setup.ts +0 -91
- package/src/test/utils.tsx +0 -44
- package/tsconfig.eslint.json +0 -8
- package/vitest.config.ts +0 -31
- /package/dist/cjs/components/dropdown/{Dropdown.stories.d.ts → dropdown.stories.d.ts} +0 -0
- /package/dist/esm/components/dropdown/{Dropdown.stories.d.ts → dropdown.stories.d.ts} +0 -0
- /package/src/components/dropdown/{Dropdown.stories.tsx → dropdown.stories.tsx} +0 -0
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { CrMPublishUI } from './publish/CrMPublishUI';
|
|
3
3
|
import Button from '../button/Button';
|
|
4
|
+
import ChangeReportTree from '../change-report/ChangeReportTree';
|
|
5
|
+
import { IChangeReportSection } from '../../constants/snippets';
|
|
4
6
|
import SelectField from '../select-field/SelectField';
|
|
5
7
|
import HRule from '../h-rule/HRule';
|
|
6
8
|
import {
|
|
@@ -72,6 +74,7 @@ interface IPublishWizardProps {
|
|
|
72
74
|
publishData: any;
|
|
73
75
|
onDeleteBatch?: (batchId: string) => any;
|
|
74
76
|
onBackBtn?: () => void;
|
|
77
|
+
auditLogEnabled?: boolean;
|
|
75
78
|
}
|
|
76
79
|
|
|
77
80
|
export interface ICredential {
|
|
@@ -98,6 +101,8 @@ interface IPublishWizardState {
|
|
|
98
101
|
nextStep: boolean;
|
|
99
102
|
publishError: string;
|
|
100
103
|
selectedCreatives: string[];
|
|
104
|
+
changeReport: IChangeReportSection[] | null;
|
|
105
|
+
publishNotes: string;
|
|
101
106
|
}
|
|
102
107
|
|
|
103
108
|
interface IBigButtonProps {
|
|
@@ -126,8 +131,12 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
126
131
|
publishData: { unpublished_changes }
|
|
127
132
|
} = props;
|
|
128
133
|
|
|
129
|
-
const
|
|
130
|
-
|
|
134
|
+
const hasReviewStep = !!props.auditLogEnabled;
|
|
135
|
+
const screenIndex = hasReviewStep
|
|
136
|
+
? 0
|
|
137
|
+
: unpublished_changes === undefined || unpublished_changes === true
|
|
138
|
+
? 0
|
|
139
|
+
: 1;
|
|
131
140
|
|
|
132
141
|
this.state = {
|
|
133
142
|
compositions: [],
|
|
@@ -145,28 +154,46 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
145
154
|
next: false,
|
|
146
155
|
nextStep: false,
|
|
147
156
|
publishError: null,
|
|
148
|
-
selectedCreatives: []
|
|
157
|
+
selectedCreatives: [],
|
|
158
|
+
changeReport: null,
|
|
159
|
+
publishNotes: ''
|
|
149
160
|
};
|
|
150
161
|
this.emailWorkflow = React.createRef();
|
|
151
162
|
this.hiddenFileInputRef = React.createRef();
|
|
152
163
|
}
|
|
153
164
|
|
|
154
165
|
public componentDidUpdate(prevProps, prevState) {
|
|
155
|
-
|
|
166
|
+
const hasReviewStep = !!this.props.auditLogEnabled;
|
|
167
|
+
// If we just finished publishing, advance from the Publish screen to the Distribution screen
|
|
168
|
+
const publishScreenIndex = hasReviewStep ? 1 : 0;
|
|
169
|
+
const distributionScreenIndex = hasReviewStep ? 2 : 1;
|
|
156
170
|
if (
|
|
157
171
|
prevProps.publishData.publishing &&
|
|
158
172
|
!this.props.publishData.publishing &&
|
|
159
|
-
this.state.screenIndex ===
|
|
173
|
+
this.state.screenIndex === publishScreenIndex &&
|
|
160
174
|
!this.state.publishError
|
|
161
175
|
) {
|
|
162
176
|
this.setState({
|
|
163
|
-
screenIndex:
|
|
177
|
+
screenIndex: distributionScreenIndex
|
|
164
178
|
});
|
|
165
179
|
}
|
|
166
180
|
}
|
|
167
181
|
|
|
168
182
|
public componentDidMount() {
|
|
169
|
-
const { story, api, handleError, activeComposition } = this.props;
|
|
183
|
+
const { story, api, handleError, activeComposition, auditLogEnabled } = this.props;
|
|
184
|
+
|
|
185
|
+
if (auditLogEnabled) {
|
|
186
|
+
api.getAuditLog(story.id)
|
|
187
|
+
.then((entries) => {
|
|
188
|
+
const currentEntry = entries?.[0];
|
|
189
|
+
const report = currentEntry?.id === 'current' ? currentEntry.changes : null;
|
|
190
|
+
this.setState({ changeReport: report });
|
|
191
|
+
})
|
|
192
|
+
.catch(() => {
|
|
193
|
+
this.setState({ changeReport: null });
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
|
|
170
197
|
// Pull in all of the access creds for the composition dropdown
|
|
171
198
|
api.getAssets({ type: ASSET_TYPES.VIDEO_COMPOSITION }, story.id)
|
|
172
199
|
.then((res) => {
|
|
@@ -303,12 +330,14 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
303
330
|
handleError,
|
|
304
331
|
fromCrM
|
|
305
332
|
} = this.props;
|
|
333
|
+
const hasReviewStep = !!this.props.auditLogEnabled;
|
|
334
|
+
const distributionScreenIndex = hasReviewStep ? 2 : 1;
|
|
306
335
|
|
|
307
336
|
if (fromCrM) {
|
|
308
337
|
this.props
|
|
309
338
|
.publishVersion(api, id, this.state.selectedCreatives)
|
|
310
339
|
.then(() => {
|
|
311
|
-
this.setState({ screenIndex:
|
|
340
|
+
this.setState({ screenIndex: distributionScreenIndex });
|
|
312
341
|
})
|
|
313
342
|
.catch((e) => {
|
|
314
343
|
this.setState({ publishError: e });
|
|
@@ -317,7 +346,7 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
317
346
|
this.props.publishVersion(api, id).catch((e) => {
|
|
318
347
|
handleError(e);
|
|
319
348
|
});
|
|
320
|
-
this.setState({ screenIndex:
|
|
349
|
+
this.setState({ screenIndex: distributionScreenIndex });
|
|
321
350
|
}
|
|
322
351
|
}
|
|
323
352
|
|
|
@@ -369,12 +398,35 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
369
398
|
const { fromCrM, story } = this.props;
|
|
370
399
|
const { publishing } = this.props.publishData;
|
|
371
400
|
const disabledForCrM = this.shouldDisablePublishButtonForCrM();
|
|
401
|
+
const hasReviewStep = !!this.props.auditLogEnabled;
|
|
402
|
+
const publishScreenIndex = hasReviewStep ? 1 : 0;
|
|
403
|
+
const distributionScreenIndex = hasReviewStep ? 2 : 1;
|
|
372
404
|
const lowerButtons = [];
|
|
373
405
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
406
|
+
if (hasReviewStep && screenIndex === 0) {
|
|
407
|
+
// Review Changes step: Skip and Publish buttons (no Back)
|
|
408
|
+
lowerButtons.push(
|
|
409
|
+
<Button
|
|
410
|
+
tooltip={copy.publish.btnSkip}
|
|
411
|
+
key='btn-skip'
|
|
412
|
+
size={'large'}
|
|
413
|
+
onClick={() => this.setState({ screenIndex: distributionScreenIndex })}
|
|
414
|
+
color='primary'>
|
|
415
|
+
{copy.publish.btnSkip}
|
|
416
|
+
</Button>
|
|
417
|
+
);
|
|
418
|
+
lowerButtons.push(
|
|
419
|
+
<Button
|
|
420
|
+
tooltip={copy.publish.btnPublish}
|
|
421
|
+
size={'large'}
|
|
422
|
+
key='btn-publish-review'
|
|
423
|
+
onClick={() => this.setState({ screenIndex: publishScreenIndex })}
|
|
424
|
+
color='primary'>
|
|
425
|
+
{copy.publish.btnPublish}
|
|
426
|
+
</Button>
|
|
427
|
+
);
|
|
428
|
+
} else if (screenIndex === publishScreenIndex) {
|
|
429
|
+
// Publish step: Publish and Skip buttons
|
|
378
430
|
const projectType = story.creativeId
|
|
379
431
|
? CRM_INTEGRATED_PROJECT_TYPES.SINGLE_CREATIVE
|
|
380
432
|
: CRM_INTEGRATED_PROJECT_TYPES.MULTI_CREATIVE;
|
|
@@ -401,13 +453,13 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
401
453
|
tooltip={copy.publish.btnSkip}
|
|
402
454
|
key='btn-skip'
|
|
403
455
|
size={'large'}
|
|
404
|
-
onClick={() => this.setState({ screenIndex:
|
|
456
|
+
onClick={() => this.setState({ screenIndex: distributionScreenIndex })}
|
|
405
457
|
color='primary'>
|
|
406
458
|
{copy.publish.btnSkip}
|
|
407
459
|
</Button>
|
|
408
460
|
);
|
|
409
461
|
} else {
|
|
410
|
-
//
|
|
462
|
+
// Distribution and sub-screens: Back button (and Done/Finish if applicable)
|
|
411
463
|
if (done || error) {
|
|
412
464
|
lowerButtons.push(
|
|
413
465
|
<Button
|
|
@@ -421,9 +473,10 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
421
473
|
);
|
|
422
474
|
}
|
|
423
475
|
|
|
424
|
-
|
|
476
|
+
// Back button: from distribution → go to 0 (Review Changes ON) or 0 (Publish OFF)
|
|
477
|
+
// from sub-screens → go back to distribution
|
|
478
|
+
const backIndex = screenIndex === distributionScreenIndex ? 0 : distributionScreenIndex;
|
|
425
479
|
|
|
426
|
-
// back button
|
|
427
480
|
lowerButtons.push(
|
|
428
481
|
<Button
|
|
429
482
|
tooltip={copy.publish.btnBack}
|
|
@@ -450,7 +503,6 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
450
503
|
</Button>
|
|
451
504
|
);
|
|
452
505
|
|
|
453
|
-
// reimport after column align
|
|
454
506
|
if (error) {
|
|
455
507
|
lowerButtons.push(
|
|
456
508
|
<Button
|
|
@@ -469,6 +521,32 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
469
521
|
return lowerButtons;
|
|
470
522
|
}
|
|
471
523
|
|
|
524
|
+
private renderReviewChanges() {
|
|
525
|
+
const { changeReport, publishNotes } = this.state;
|
|
526
|
+
return (
|
|
527
|
+
<div className='publish-wizard-step publish-wizard-step--review'>
|
|
528
|
+
<h2>{copy.publish.reviewChangesStepTitle}</h2>
|
|
529
|
+
<HRule />
|
|
530
|
+
<p>{copy.publish.reviewChangesDescription}</p>
|
|
531
|
+
<ChangeReportTree
|
|
532
|
+
sections={changeReport}
|
|
533
|
+
defaultExpanded={true}
|
|
534
|
+
emptyMessage={copy.publish.noChangesMessage}
|
|
535
|
+
loadingMessage={copy.publish.loadingChangesMessage}
|
|
536
|
+
/>
|
|
537
|
+
<div className='publish-notes-wrapper'>
|
|
538
|
+
<label className='publish-notes-label'>{copy.publish.publishNotesLabel}</label>
|
|
539
|
+
<textarea
|
|
540
|
+
className='publish-notes-textarea'
|
|
541
|
+
value={publishNotes}
|
|
542
|
+
onChange={(e) => this.setState({ publishNotes: e.target.value })}
|
|
543
|
+
placeholder={copy.publish.publishNotesPlaceholder}
|
|
544
|
+
/>
|
|
545
|
+
</div>
|
|
546
|
+
</div>
|
|
547
|
+
);
|
|
548
|
+
}
|
|
549
|
+
|
|
472
550
|
private renderPublish() {
|
|
473
551
|
const { fromCrM, story } = this.props;
|
|
474
552
|
const { publishing } = this.props.publishData;
|
|
@@ -591,6 +669,7 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
591
669
|
selectedComposition={selectedComposition}
|
|
592
670
|
publishDataset={publishDataset}
|
|
593
671
|
creativeManagerBaseUrl={creativeManagerBaseUrl}
|
|
672
|
+
hasReviewStep={!!this.props.auditLogEnabled}
|
|
594
673
|
/>
|
|
595
674
|
</div>
|
|
596
675
|
</div>
|
|
@@ -601,7 +680,10 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
601
680
|
private nextClickHandler = () => {
|
|
602
681
|
this.setState({ nextStep: true, error: false });
|
|
603
682
|
|
|
604
|
-
|
|
683
|
+
const hasReviewStep = !!this.props.auditLogEnabled;
|
|
684
|
+
const exportIndex = hasReviewStep ? 8 : 7;
|
|
685
|
+
const crmExportIndex = hasReviewStep ? 9 : 8;
|
|
686
|
+
if (this.state.screenIndex === exportIndex || this.state.screenIndex === crmExportIndex) {
|
|
605
687
|
this.emailWorkflow.current.getWrappedInstance().proceedWithExport();
|
|
606
688
|
}
|
|
607
689
|
};
|
|
@@ -654,6 +736,8 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
654
736
|
})?.name || '';
|
|
655
737
|
|
|
656
738
|
const variables = story ? story.acts[project.actId].inventory : {};
|
|
739
|
+
const hasReviewStep = !!this.props.auditLogEnabled;
|
|
740
|
+
|
|
657
741
|
return (
|
|
658
742
|
<div className='publish-wizard'>
|
|
659
743
|
<div className='publish-wizard-header'>
|
|
@@ -662,20 +746,26 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
662
746
|
</div>
|
|
663
747
|
{/* <PaneErrorBoundry>*/}
|
|
664
748
|
<div>
|
|
665
|
-
{screenIndex === 0 && this.
|
|
666
|
-
{screenIndex === 1 && this.
|
|
667
|
-
{screenIndex === 2 && (
|
|
749
|
+
{hasReviewStep && screenIndex === 0 && this.renderReviewChanges()}
|
|
750
|
+
{screenIndex === (hasReviewStep ? 1 : 0) && this.renderPublish()}
|
|
751
|
+
{screenIndex === (hasReviewStep ? 2 : 1) && this.renderDistributionOptions()}
|
|
752
|
+
{screenIndex === (hasReviewStep ? 3 : 2) && (
|
|
668
753
|
<WebpageHosted
|
|
669
754
|
story={story}
|
|
670
755
|
compositionId={selectedComposition}
|
|
671
756
|
accessKey={accessKey}
|
|
672
757
|
/>
|
|
673
758
|
)}
|
|
674
|
-
{(screenIndex ===
|
|
759
|
+
{(screenIndex === (hasReviewStep ? 4 : 3) ||
|
|
760
|
+
screenIndex === (hasReviewStep ? 8 : 7) ||
|
|
761
|
+
screenIndex === (hasReviewStep ? 9 : 8)) && (
|
|
675
762
|
<EmailWorkflow
|
|
676
|
-
isCrM={screenIndex === 8}
|
|
677
|
-
isExport={
|
|
678
|
-
|
|
763
|
+
isCrM={screenIndex === (hasReviewStep ? 9 : 8)}
|
|
764
|
+
isExport={
|
|
765
|
+
screenIndex === (hasReviewStep ? 8 : 7) ||
|
|
766
|
+
screenIndex === (hasReviewStep ? 9 : 8)
|
|
767
|
+
}
|
|
768
|
+
isEmail={screenIndex === (hasReviewStep ? 4 : 3)}
|
|
679
769
|
api={api}
|
|
680
770
|
story={story}
|
|
681
771
|
variables={variables}
|
|
@@ -701,7 +791,7 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
701
791
|
ref={this.emailWorkflow}
|
|
702
792
|
/>
|
|
703
793
|
)}
|
|
704
|
-
{screenIndex === 5 && (
|
|
794
|
+
{screenIndex === (hasReviewStep ? 6 : 5) && (
|
|
705
795
|
<HubSpotFlow
|
|
706
796
|
handleError={handleError}
|
|
707
797
|
status={status}
|
|
@@ -711,7 +801,7 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
|
|
|
711
801
|
compositionId={selectedComposition}
|
|
712
802
|
/>
|
|
713
803
|
)}
|
|
714
|
-
{screenIndex === 6 && <APIIntegration />}
|
|
804
|
+
{screenIndex === (hasReviewStep ? 7 : 6) && <APIIntegration />}
|
|
715
805
|
<br />
|
|
716
806
|
<HRule />
|
|
717
807
|
<div className='lower-buttons'>{this.renderLowerButtons()}</div>
|
|
@@ -731,7 +821,19 @@ const mapDispatchToProps = (dispatch) => {
|
|
|
731
821
|
return bindActionCreators({ publishVersion }, dispatch);
|
|
732
822
|
};
|
|
733
823
|
|
|
734
|
-
|
|
824
|
+
const ConnectedPublishWizard = connect(mapStateToProps, mapDispatchToProps)(PublishWizard);
|
|
825
|
+
|
|
826
|
+
const PublishWizardWithFlag = (props) => {
|
|
827
|
+
const auditLogEnabled = useFlag('feature.IMPOSIUM_EDITOR.AUDIT_LOG');
|
|
828
|
+
return (
|
|
829
|
+
<ConnectedPublishWizard
|
|
830
|
+
{...props}
|
|
831
|
+
auditLogEnabled={auditLogEnabled}
|
|
832
|
+
/>
|
|
833
|
+
);
|
|
834
|
+
};
|
|
835
|
+
|
|
836
|
+
export default PublishWizardWithFlag;
|
|
735
837
|
|
|
736
838
|
export const BigButton: React.FC<IBigButtonProps> = (p) => (
|
|
737
839
|
<div
|
|
@@ -742,7 +844,7 @@ export const BigButton: React.FC<IBigButtonProps> = (p) => (
|
|
|
742
844
|
</div>
|
|
743
845
|
);
|
|
744
846
|
|
|
745
|
-
export const TabContent: React.FC
|
|
847
|
+
export const TabContent: React.FC = ({ children }) => (
|
|
746
848
|
<div className='tab-content'>
|
|
747
849
|
<div className='settings-tab'>
|
|
748
850
|
<div className='integration-details'>{children}</div>
|
|
@@ -786,8 +888,11 @@ export const DistributeOptions = ({
|
|
|
786
888
|
onSelectOption,
|
|
787
889
|
selectedComposition,
|
|
788
890
|
publishDataset,
|
|
789
|
-
creativeManagerBaseUrl
|
|
891
|
+
creativeManagerBaseUrl,
|
|
892
|
+
hasReviewStep = false
|
|
790
893
|
}) => {
|
|
894
|
+
const shift = hasReviewStep ? 1 : 0;
|
|
895
|
+
const selectOption = (index: number) => onSelectOption(index + shift);
|
|
791
896
|
const isPrerendersEnabled = useFlag('feature.IMPOSIUM_EDITOR.PRERENDERS_CRM_WORKFLOW');
|
|
792
897
|
|
|
793
898
|
const getCrMLink = (creativeLibraryId: string, creativeId?: string) => {
|
|
@@ -806,7 +911,7 @@ export const DistributeOptions = ({
|
|
|
806
911
|
{ICON_GLOBE} {copy.publish.btnWebsite}
|
|
807
912
|
</span>
|
|
808
913
|
),
|
|
809
|
-
onClick: (e) =>
|
|
914
|
+
onClick: (e) => selectOption(2)
|
|
810
915
|
},
|
|
811
916
|
{
|
|
812
917
|
label: (
|
|
@@ -814,7 +919,7 @@ export const DistributeOptions = ({
|
|
|
814
919
|
{ICON_EMAIL} {copy.publish.btnEmail}
|
|
815
920
|
</span>
|
|
816
921
|
),
|
|
817
|
-
onClick: (e) =>
|
|
922
|
+
onClick: (e) => selectOption(3)
|
|
818
923
|
},
|
|
819
924
|
{
|
|
820
925
|
label: (
|
|
@@ -822,7 +927,7 @@ export const DistributeOptions = ({
|
|
|
822
927
|
{ICON_HUBSPOT} {copy.publish.btnHubspot}
|
|
823
928
|
</span>
|
|
824
929
|
),
|
|
825
|
-
onClick: (e) =>
|
|
930
|
+
onClick: (e) => selectOption(5)
|
|
826
931
|
},
|
|
827
932
|
{
|
|
828
933
|
label: (
|
|
@@ -830,7 +935,7 @@ export const DistributeOptions = ({
|
|
|
830
935
|
{ICON_PROJECT_DIAGRAM} {copy.publish.btnAPI}
|
|
831
936
|
</span>
|
|
832
937
|
),
|
|
833
|
-
onClick: (e) =>
|
|
938
|
+
onClick: (e) => selectOption(6)
|
|
834
939
|
},
|
|
835
940
|
{
|
|
836
941
|
label: (
|
|
@@ -838,7 +943,7 @@ export const DistributeOptions = ({
|
|
|
838
943
|
{ICON_DOWNLOAD} {copy.publish.btnExport}
|
|
839
944
|
</span>
|
|
840
945
|
),
|
|
841
|
-
onClick: (e) =>
|
|
946
|
+
onClick: (e) => selectOption(7)
|
|
842
947
|
},
|
|
843
948
|
{
|
|
844
949
|
label: (
|
|
@@ -846,7 +951,7 @@ export const DistributeOptions = ({
|
|
|
846
951
|
{ICON_IMAGE} {copy.publish.btnCRM}
|
|
847
952
|
</span>
|
|
848
953
|
),
|
|
849
|
-
onClick: (e) =>
|
|
954
|
+
onClick: (e) => selectOption(8)
|
|
850
955
|
}
|
|
851
956
|
]
|
|
852
957
|
: [
|
|
@@ -856,7 +961,7 @@ export const DistributeOptions = ({
|
|
|
856
961
|
{ICON_DOWNLOAD} {copy.publish.btnRunTestBatch}
|
|
857
962
|
</span>
|
|
858
963
|
),
|
|
859
|
-
onClick: (e) =>
|
|
964
|
+
onClick: (e) => selectOption(7)
|
|
860
965
|
},
|
|
861
966
|
{
|
|
862
967
|
label: (
|
|
@@ -885,7 +990,7 @@ export const DistributeOptions = ({
|
|
|
885
990
|
{ICON_IMAGE} {copy.publish.btnCRM}
|
|
886
991
|
</span>
|
|
887
992
|
),
|
|
888
|
-
onClick: (e) =>
|
|
993
|
+
onClick: (e) => selectOption(8),
|
|
889
994
|
style: { width: 'calc(100% - 4px)' }
|
|
890
995
|
});
|
|
891
996
|
}
|
|
File without changes
|
|
@@ -20,7 +20,7 @@ import ImagePlayer from '../players/ImagePlayer';
|
|
|
20
20
|
import { saveAs } from 'file-saver';
|
|
21
21
|
import MediaVariableField from '../media-variable-field/MediaVariableField';
|
|
22
22
|
import { IExperience } from '../../interfaces/experience';
|
|
23
|
-
import
|
|
23
|
+
import ReactResizeDetector from 'react-resize-detector';
|
|
24
24
|
import { ERROR, previewer as copy } from '../../constants/copy';
|
|
25
25
|
import { formattedTime } from '../../Util';
|
|
26
26
|
import Timer from '../../services/Timer';
|
|
@@ -30,25 +30,6 @@ import { ICON_DOWNLOAD, ICON_CLIPBOARD } from '../../constants/icons';
|
|
|
30
30
|
import AudioPlayer from '../players/AudioPlayer';
|
|
31
31
|
import ColorField from '../color-field/ColorField';
|
|
32
32
|
|
|
33
|
-
const ResizeDetectorWrapper: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
|
34
|
-
const { width, height, ref } = useResizeDetector<HTMLDivElement>({
|
|
35
|
-
handleWidth: true,
|
|
36
|
-
handleHeight: true
|
|
37
|
-
});
|
|
38
|
-
return (
|
|
39
|
-
<div
|
|
40
|
-
ref={ref}
|
|
41
|
-
style={{ width: '100%', height: '100%' }}>
|
|
42
|
-
{React.Children.map(children, (child) => {
|
|
43
|
-
if (React.isValidElement(child)) {
|
|
44
|
-
return React.cloneElement(child, { width, height } as any);
|
|
45
|
-
}
|
|
46
|
-
return child;
|
|
47
|
-
})}
|
|
48
|
-
</div>
|
|
49
|
-
);
|
|
50
|
-
};
|
|
51
|
-
|
|
52
33
|
interface IStoryPreviewerProps {
|
|
53
34
|
api: IImposiumAPI;
|
|
54
35
|
storyId: string;
|
|
@@ -805,7 +786,13 @@ class StoryPreviewer extends React.PureComponent<IStoryPreviewerProps, IStoryPre
|
|
|
805
786
|
);
|
|
806
787
|
}
|
|
807
788
|
|
|
808
|
-
return
|
|
789
|
+
return (
|
|
790
|
+
<ReactResizeDetector
|
|
791
|
+
handleWidth
|
|
792
|
+
handleHeight>
|
|
793
|
+
{player}
|
|
794
|
+
</ReactResizeDetector>
|
|
795
|
+
);
|
|
809
796
|
}
|
|
810
797
|
|
|
811
798
|
return null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { withResizeDetector } from 'react-resize-detector';
|
|
3
3
|
import ButtonMenu from '../button-menu/ButtonMenu';
|
|
4
4
|
import ButtonMenuItem from '../button-menu/ButtonMenuItem';
|
|
5
5
|
import Button from '../button/Button';
|
|
@@ -14,15 +14,15 @@ export interface ITab {
|
|
|
14
14
|
menuButtons?: JSX.Element;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
interface ITabsProps {
|
|
18
18
|
activeTab?: string;
|
|
19
19
|
keepMounted?: boolean;
|
|
20
20
|
options: ITab[];
|
|
21
21
|
onChange(i): void;
|
|
22
|
-
onClose
|
|
22
|
+
onClose(i): void;
|
|
23
23
|
tabPadding?: number;
|
|
24
|
-
width
|
|
25
|
-
height
|
|
24
|
+
width: number;
|
|
25
|
+
height: number;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
interface ITabsState {
|
|
@@ -85,7 +85,7 @@ class Tabs extends React.PureComponent<ITabsProps, ITabsState> {
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
private renderContent() {
|
|
88
|
-
const { options, activeTab, keepMounted, width
|
|
88
|
+
const { options, activeTab, keepMounted, width, height } = this.props;
|
|
89
89
|
|
|
90
90
|
if (keepMounted) {
|
|
91
91
|
const contentArray = [];
|
|
@@ -132,9 +132,7 @@ class Tabs extends React.PureComponent<ITabsProps, ITabsState> {
|
|
|
132
132
|
onClick={(e) => {
|
|
133
133
|
e.preventDefault();
|
|
134
134
|
e.stopPropagation();
|
|
135
|
-
|
|
136
|
-
this.props.onClose(key);
|
|
137
|
-
}
|
|
135
|
+
this.props.onClose(key);
|
|
138
136
|
}}>
|
|
139
137
|
{ICON_TIMES}
|
|
140
138
|
</Button>
|
|
@@ -220,19 +218,4 @@ class Tabs extends React.PureComponent<ITabsProps, ITabsState> {
|
|
|
220
218
|
}
|
|
221
219
|
}
|
|
222
220
|
|
|
223
|
-
|
|
224
|
-
const { width = 0, height = 0, ref } = useResizeDetector<HTMLDivElement>();
|
|
225
|
-
return (
|
|
226
|
-
<div
|
|
227
|
-
ref={ref}
|
|
228
|
-
style={{ width: '100%', height: '100%' }}>
|
|
229
|
-
<Tabs
|
|
230
|
-
{...props}
|
|
231
|
-
width={width}
|
|
232
|
-
height={height}
|
|
233
|
-
/>
|
|
234
|
-
</div>
|
|
235
|
-
);
|
|
236
|
-
};
|
|
237
|
-
|
|
238
|
-
export default TabsWithResize;
|
|
221
|
+
export default withResizeDetector(Tabs);
|
|
File without changes
|
package/src/constants/copy.ts
CHANGED
|
@@ -147,14 +147,28 @@ export const publish = {
|
|
|
147
147
|
'Your videos have finished rendering. They will appear in Creative Manager momentarily.',
|
|
148
148
|
renderComplete: 'Render Complete!',
|
|
149
149
|
|
|
150
|
+
// review changes
|
|
151
|
+
reviewChangesStepTitle: 'STEP 1: Review Changes',
|
|
152
|
+
reviewChangesDescription:
|
|
153
|
+
'Review the changes made since your last publish. You can publish these changes or skip to distribution.',
|
|
154
|
+
noChangesMessage: 'No changes detected since last publish.',
|
|
155
|
+
loadingChangesMessage: 'Loading changes...',
|
|
156
|
+
publishNotesLabel: 'Publish notes',
|
|
157
|
+
publishNotesPlaceholder: 'Describe the changes in this version...',
|
|
158
|
+
|
|
159
|
+
// change report status labels
|
|
160
|
+
statusAdded: 'Added',
|
|
161
|
+
statusRemoved: 'Removed',
|
|
162
|
+
statusModified: 'Modified',
|
|
163
|
+
|
|
150
164
|
// publish
|
|
151
|
-
publishStepTitle: 'STEP
|
|
165
|
+
publishStepTitle: 'STEP 2: Publish your Project',
|
|
152
166
|
publishStepTitleFromCrM: 'STEP 1: Publish your Project to selected Creatives',
|
|
153
167
|
publishStepDesc:
|
|
154
168
|
"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.",
|
|
155
169
|
|
|
156
170
|
// distribute
|
|
157
|
-
distributeStepTitle: 'STEP
|
|
171
|
+
distributeStepTitle: 'STEP 3: How do you want your users to view their video?',
|
|
158
172
|
distributeStepTitleFromCrM: 'STEP 2: Run a test batch or return to Creative Manager?',
|
|
159
173
|
distributeStepDesc:
|
|
160
174
|
'Select which Composition you want to deliver, access credentials you want to use, and distribution channel.',
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface IChangeReportNode {
|
|
2
|
+
label: string;
|
|
3
|
+
status: 'added' | 'removed' | 'modified';
|
|
4
|
+
oldValue?: string;
|
|
5
|
+
newValue?: string;
|
|
6
|
+
children?: IChangeReportNode[];
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface IChangeReportSection {
|
|
10
|
+
section:
|
|
11
|
+
| 'PROJECT SETTINGS'
|
|
12
|
+
| 'VARIABLES'
|
|
13
|
+
| 'SCENES & ENCODING'
|
|
14
|
+
| 'ASSETS'
|
|
15
|
+
| 'COMPOSITIONS & LAYERS';
|
|
16
|
+
nodes: IChangeReportNode[];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface IPublishLogEntry {
|
|
20
|
+
id: string;
|
|
21
|
+
version: number | null;
|
|
22
|
+
message: string | null;
|
|
23
|
+
changes: IChangeReportSection[] | null;
|
|
24
|
+
date_created: number | null;
|
|
25
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -16,7 +16,7 @@ import FieldWrapper from './components/field-wrapper/FieldWrapper';
|
|
|
16
16
|
import CheckboxField from './components/checkbox-field/CheckboxField';
|
|
17
17
|
import ListField from './components/list-field/ListField';
|
|
18
18
|
import ButtonGroupField from './components/button-group-field/ButtonGroupField';
|
|
19
|
-
import NumberField
|
|
19
|
+
import NumberField from './components/number-field/NumberField';
|
|
20
20
|
import SelectField from './components/select-field/SelectField';
|
|
21
21
|
import TextField from './components/text-field/TextField';
|
|
22
22
|
import TextAreaField from './components/text-area-field/TextAreaField';
|
|
@@ -168,6 +168,8 @@ import TextAreaAutocomplete from './components/text-area-autocomplete/TextAreaAu
|
|
|
168
168
|
import IconToggle from './components/icon-toggle/IconToggle';
|
|
169
169
|
import { DEFAULT_FONTS } from './constants/fonts';
|
|
170
170
|
import FontField from './components/font-field/FontField';
|
|
171
|
+
import { IChangeReportNode, IChangeReportSection, IPublishLogEntry } from './constants/snippets';
|
|
172
|
+
import ChangeReportTree from './components/change-report/ChangeReportTree';
|
|
171
173
|
|
|
172
174
|
export {
|
|
173
175
|
ProjectDropdown,
|
|
@@ -335,5 +337,8 @@ export {
|
|
|
335
337
|
IconToggle,
|
|
336
338
|
DEFAULT_FONTS,
|
|
337
339
|
FontField,
|
|
338
|
-
|
|
340
|
+
IChangeReportNode,
|
|
341
|
+
IChangeReportSection,
|
|
342
|
+
IPublishLogEntry,
|
|
343
|
+
ChangeReportTree
|
|
339
344
|
};
|
package/src/services/API.ts
CHANGED
|
@@ -164,6 +164,7 @@ export interface IImposiumAPI {
|
|
|
164
164
|
cancelAllPendingRequests();
|
|
165
165
|
getTTSVoices(params: any);
|
|
166
166
|
getCustomVoice(voiceId: string);
|
|
167
|
+
getAuditLog(storyId: string): Promise<any | Error>;
|
|
167
168
|
getToken: any;
|
|
168
169
|
}
|
|
169
170
|
|
|
@@ -1917,4 +1918,11 @@ export default class API {
|
|
|
1917
1918
|
url: `/text-to-speech/voice?service=ElevenLabs&id=${voiceId}`
|
|
1918
1919
|
});
|
|
1919
1920
|
};
|
|
1921
|
+
|
|
1922
|
+
public getAuditLog = (storyId: string): Promise<any | Error> => {
|
|
1923
|
+
return this.doRequest({
|
|
1924
|
+
method: 'GET',
|
|
1925
|
+
url: `/story/${storyId}/audit-log`
|
|
1926
|
+
});
|
|
1927
|
+
};
|
|
1920
1928
|
}
|
package/src/utils/routing.ts
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { browserHistory } from 'react-router';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export const configureHistory = (history: ICompatibleHistory): void => {
|
|
6
|
-
historySingleton = history;
|
|
7
|
-
};
|
|
8
|
-
export const pushRoute = (route: string): void => {
|
|
9
|
-
historySingleton?.push(route);
|
|
3
|
+
export const pushRoute = (route): void => {
|
|
4
|
+
browserHistory.push(route);
|
|
10
5
|
};
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
|
|
7
|
+
export const replaceRoute = (route): void => {
|
|
8
|
+
browserHistory.replace(route);
|
|
13
9
|
};
|
|
14
10
|
|
|
15
11
|
export const getDemoURL = (): string => {
|
package/tsconfig.json
CHANGED