@imposium-hub/components 2.8.0-6 → 2.8.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.js +8 -1
- 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/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/edit-guide-modal/EditGuideModal.d.ts +8 -0
- package/dist/cjs/components/edit-guide-modal/EditGuideModal.js +122 -0
- package/dist/cjs/components/edit-guide-modal/EditGuideModal.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/header/Header.js +2 -2
- package/dist/cjs/components/header/Header.js.map +1 -1
- 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 +1 -0
- package/dist/cjs/components/number-field/NumberField.js +3 -0
- package/dist/cjs/components/number-field/NumberField.js.map +1 -1
- package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js +52 -23
- package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
- package/dist/cjs/constants/copy.d.ts +1 -1
- package/dist/cjs/constants/copy.js +1 -1
- package/dist/cjs/constants/copy.js.map +1 -1
- package/dist/cjs/constants/publish.d.ts +3 -0
- package/dist/cjs/constants/publish.js +5 -3
- package/dist/cjs/constants/publish.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +3 -1
- 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/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/esm/components/app-wrapper/AppWrapper.js +8 -1
- 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/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/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/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/header/Header.js +2 -2
- package/dist/esm/components/header/Header.js.map +1 -1
- 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 +1 -0
- package/dist/esm/components/number-field/NumberField.js +3 -0
- package/dist/esm/components/number-field/NumberField.js.map +1 -1
- package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js +43 -14
- package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
- package/dist/esm/constants/copy.d.ts +1 -1
- package/dist/esm/constants/copy.js +1 -1
- package/dist/esm/constants/copy.js.map +1 -1
- package/dist/esm/constants/publish.d.ts +3 -0
- package/dist/esm/constants/publish.js +4 -2
- package/dist/esm/constants/publish.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- 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/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/package.json +1 -1
- package/src/components/app-wrapper/AppWrapper.tsx +8 -0
- package/src/components/edit-guide-modal/EditGuideModal.tsx +110 -0
- package/src/components/header/Header.tsx +2 -2
- package/src/components/number-field/NumberField.tsx +4 -0
- package/src/components/publish-wizard/publish/EmailWorkflow.tsx +66 -24
- package/src/constants/copy.ts +1 -1
- package/src/constants/publish.ts +7 -2
- package/src/index.ts +4 -1
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import React, { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
import ReactDOM from 'react-dom';
|
|
3
|
+
import Modal from '../modal/Modal';
|
|
4
|
+
import Button from '../button/Button';
|
|
5
|
+
import Section from '../section/Section';
|
|
6
|
+
import NumberField from '../number-field/NumberField';
|
|
7
|
+
|
|
8
|
+
export interface IEditGuideModalProps {
|
|
9
|
+
guide: number;
|
|
10
|
+
onClose: () => any;
|
|
11
|
+
onContinue: (e) => any;
|
|
12
|
+
isHorizontal: boolean;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const EditGuideModal = () => {
|
|
16
|
+
const [props, setProps] = useState<IEditGuideModalProps>(null);
|
|
17
|
+
const [isOpen, setIsOpen] = useState<boolean>(false);
|
|
18
|
+
const [guide, setGuide] = useState<number>(null);
|
|
19
|
+
|
|
20
|
+
const onOpen = (event) => {
|
|
21
|
+
setProps({
|
|
22
|
+
...event.detail
|
|
23
|
+
});
|
|
24
|
+
setIsOpen(true);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const onClose = () => setIsOpen(false);
|
|
28
|
+
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
window.addEventListener('openeditguidemodal', onOpen);
|
|
31
|
+
return () => {
|
|
32
|
+
window.removeEventListener('openeditguidemodal', onOpen);
|
|
33
|
+
};
|
|
34
|
+
}, []);
|
|
35
|
+
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (props?.guide) {
|
|
38
|
+
setGuide(props.guide);
|
|
39
|
+
}
|
|
40
|
+
}, [props?.guide]);
|
|
41
|
+
|
|
42
|
+
const onKeyDown = (e) => {
|
|
43
|
+
if (e.key === 'Enter') {
|
|
44
|
+
e.preventDefault();
|
|
45
|
+
onContinue(guide);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
if (isOpen) {
|
|
51
|
+
window.addEventListener('keypress', onKeyDown);
|
|
52
|
+
} else {
|
|
53
|
+
window.removeEventListener('keypress', onKeyDown);
|
|
54
|
+
}
|
|
55
|
+
return () => {
|
|
56
|
+
window.removeEventListener('keypress', onKeyDown);
|
|
57
|
+
};
|
|
58
|
+
}, [isOpen, onKeyDown]);
|
|
59
|
+
|
|
60
|
+
const onContinue = useCallback(
|
|
61
|
+
(e) => {
|
|
62
|
+
if (e) {
|
|
63
|
+
props.onContinue(e);
|
|
64
|
+
onClose();
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
[isOpen]
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
const modal = isOpen && (
|
|
71
|
+
<Modal
|
|
72
|
+
onRequestClose={onClose}
|
|
73
|
+
style={{
|
|
74
|
+
width: '200px',
|
|
75
|
+
height: '110px',
|
|
76
|
+
top: '25%',
|
|
77
|
+
left: '55%'
|
|
78
|
+
}}
|
|
79
|
+
isOpen={true}>
|
|
80
|
+
<Section
|
|
81
|
+
title={`Edit ${props.isHorizontal ? 'Horizontal Guide' : 'Vertical Guide'}`}
|
|
82
|
+
style={{ padding: '10px' }}>
|
|
83
|
+
<NumberField
|
|
84
|
+
label={'Guide Position'}
|
|
85
|
+
labelPosition='top'
|
|
86
|
+
onChange={(e) => setGuide(Number(e))}
|
|
87
|
+
focusOnMount={true}
|
|
88
|
+
value={guide}
|
|
89
|
+
/>
|
|
90
|
+
<Button
|
|
91
|
+
onClick={onClose}
|
|
92
|
+
style='bold'
|
|
93
|
+
color='secondary'>
|
|
94
|
+
Cancel
|
|
95
|
+
</Button>
|
|
96
|
+
<Button
|
|
97
|
+
onClick={() => onContinue(guide)}
|
|
98
|
+
style='bold'
|
|
99
|
+
color='primary'>
|
|
100
|
+
Ok
|
|
101
|
+
</Button>
|
|
102
|
+
</Section>
|
|
103
|
+
</Modal>
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
const PortalContextComponent = () =>
|
|
107
|
+
ReactDOM.createPortal(modal, document.querySelector('#react-root'));
|
|
108
|
+
|
|
109
|
+
return <PortalContextComponent />;
|
|
110
|
+
};
|
|
@@ -73,7 +73,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
73
73
|
|
|
74
74
|
private static readonly SDK_DOCS_LINK: string = 'https://docs.imposium.com/js-sdk/';
|
|
75
75
|
|
|
76
|
-
private static readonly DEFAULT_ACCOUNT_TOGGLE_COLOR: string = '
|
|
76
|
+
private static readonly DEFAULT_ACCOUNT_TOGGLE_COLOR: string = '#AF1126';
|
|
77
77
|
|
|
78
78
|
private static readonly NO_STORIES_COPY: string = 'No stories were found';
|
|
79
79
|
|
|
@@ -144,7 +144,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
144
144
|
: [];
|
|
145
145
|
|
|
146
146
|
let dropdownToggleColor: string = ImposiumHeader.DEFAULT_ACCOUNT_TOGGLE_COLOR;
|
|
147
|
-
let activeFirstChar: string = '';
|
|
147
|
+
let activeFirstChar: string = 'X';
|
|
148
148
|
|
|
149
149
|
if (activeOrganizationBlob && activeOrganizationBlob.hasOwnProperty('name')) {
|
|
150
150
|
dropdownToggleColor = string2HexCode(activeOrganizationBlob.name);
|
|
@@ -17,6 +17,7 @@ interface INumberFieldProps {
|
|
|
17
17
|
min?: number;
|
|
18
18
|
max?: number;
|
|
19
19
|
onBlur?(e): void;
|
|
20
|
+
focusOnMount?: boolean;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
interface INumberFieldState {
|
|
@@ -37,6 +38,9 @@ class NumberField extends React.PureComponent<INumberFieldProps, INumberFieldSta
|
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
public componentDidMount(): void {
|
|
41
|
+
if (this.props.focusOnMount && this.inputRef.current) {
|
|
42
|
+
this.inputRef.current.focus();
|
|
43
|
+
}
|
|
40
44
|
this.setState({
|
|
41
45
|
error: false,
|
|
42
46
|
value: this.props.value
|
|
@@ -12,7 +12,13 @@ import { connect } from 'react-redux';
|
|
|
12
12
|
import SelectField from '../../select-field/SelectField';
|
|
13
13
|
import { updateAssociation, getBatch, setPage } from '../../../redux/actions/active-batch';
|
|
14
14
|
import TextField from '../../text-field/TextField';
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
ADSTUDIO_POST_RENDER_ACTION,
|
|
17
|
+
ASSET_NAME_VAR,
|
|
18
|
+
ASSETS_POST_RENDER_ACTION,
|
|
19
|
+
CRM_PLACEMENT_VARS
|
|
20
|
+
} from '../../../constants/publish';
|
|
21
|
+
import CheckboxField from '../../checkbox-field/CheckboxField';
|
|
16
22
|
|
|
17
23
|
interface IEmailWorkflowProps {
|
|
18
24
|
story: any;
|
|
@@ -69,12 +75,12 @@ interface IEmailWorkflowProps {
|
|
|
69
75
|
onNext: (val: boolean) => void;
|
|
70
76
|
next: boolean;
|
|
71
77
|
isCrM: boolean;
|
|
78
|
+
isCrMAsset?: boolean;
|
|
72
79
|
}
|
|
73
80
|
|
|
74
81
|
interface CrMOverrides {
|
|
75
82
|
creative_id: string;
|
|
76
83
|
creative_library_id: string;
|
|
77
|
-
notification_email: string;
|
|
78
84
|
placement_type: string;
|
|
79
85
|
}
|
|
80
86
|
|
|
@@ -124,7 +130,6 @@ class EmailWorkflow extends React.PureComponent<IEmailWorkflowProps, IEmailWorkf
|
|
|
124
130
|
creativeManagerOverrides: {
|
|
125
131
|
creative_id: '',
|
|
126
132
|
creative_library_id: '',
|
|
127
|
-
notification_email: '',
|
|
128
133
|
placement_type: 'crm-adstudio'
|
|
129
134
|
},
|
|
130
135
|
waitingForPublish: false,
|
|
@@ -266,6 +271,8 @@ class EmailWorkflow extends React.PureComponent<IEmailWorkflowProps, IEmailWorkf
|
|
|
266
271
|
const { name } = this.props.story;
|
|
267
272
|
const { isCrM } = this.props;
|
|
268
273
|
const { inventory, inventoryKeys } = this.state;
|
|
274
|
+
const uploadAsAssets =
|
|
275
|
+
this.state.creativeManagerOverrides.placement_type === ASSETS_POST_RENDER_ACTION;
|
|
269
276
|
|
|
270
277
|
const maskConfig: any[] = inventoryKeys.map((currKey: string) => {
|
|
271
278
|
let value = '';
|
|
@@ -288,12 +295,27 @@ class EmailWorkflow extends React.PureComponent<IEmailWorkflowProps, IEmailWorkf
|
|
|
288
295
|
});
|
|
289
296
|
|
|
290
297
|
if (isCrM) {
|
|
291
|
-
|
|
292
|
-
maskConfig.push(
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
298
|
+
if (uploadAsAssets) {
|
|
299
|
+
maskConfig.push(
|
|
300
|
+
{
|
|
301
|
+
id: ASSET_NAME_VAR,
|
|
302
|
+
name: ASSET_NAME_VAR,
|
|
303
|
+
show: true
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
id: 'creative_library_id',
|
|
307
|
+
name: 'creative_library_id',
|
|
308
|
+
show: true
|
|
309
|
+
}
|
|
310
|
+
);
|
|
311
|
+
} else {
|
|
312
|
+
for (const id of CRM_PLACEMENT_VARS) {
|
|
313
|
+
maskConfig.push({
|
|
314
|
+
id,
|
|
315
|
+
name: id,
|
|
316
|
+
show: true
|
|
317
|
+
});
|
|
318
|
+
}
|
|
297
319
|
}
|
|
298
320
|
}
|
|
299
321
|
|
|
@@ -436,12 +458,7 @@ class EmailWorkflow extends React.PureComponent<IEmailWorkflowProps, IEmailWorkf
|
|
|
436
458
|
private getPostRenderActions() {
|
|
437
459
|
const CrMUploadAction = { data: {} };
|
|
438
460
|
const {
|
|
439
|
-
creativeManagerOverrides: {
|
|
440
|
-
placement_type,
|
|
441
|
-
creative_id,
|
|
442
|
-
creative_library_id,
|
|
443
|
-
notification_email
|
|
444
|
-
}
|
|
461
|
+
creativeManagerOverrides: { placement_type, creative_id, creative_library_id }
|
|
445
462
|
} = this.state;
|
|
446
463
|
|
|
447
464
|
CrMUploadAction['type'] = placement_type;
|
|
@@ -451,9 +468,6 @@ class EmailWorkflow extends React.PureComponent<IEmailWorkflowProps, IEmailWorkf
|
|
|
451
468
|
if (creative_library_id) {
|
|
452
469
|
CrMUploadAction.data['creative_library_id'] = creative_library_id;
|
|
453
470
|
}
|
|
454
|
-
if (notification_email) {
|
|
455
|
-
CrMUploadAction.data['notification_email'] = notification_email;
|
|
456
|
-
}
|
|
457
471
|
|
|
458
472
|
return [CrMUploadAction];
|
|
459
473
|
}
|
|
@@ -911,10 +925,8 @@ const CrMOptions: React.FC<ICrMOptionsProps> = ({ options, onChange, errorCopy =
|
|
|
911
925
|
</div>
|
|
912
926
|
) : null;
|
|
913
927
|
|
|
914
|
-
|
|
928
|
+
const standardInterface = (
|
|
915
929
|
<>
|
|
916
|
-
<HRule />
|
|
917
|
-
<br />
|
|
918
930
|
<h2>{copy.publish.crmPlacement}</h2>
|
|
919
931
|
<p>{copy.publish.crmData}</p>
|
|
920
932
|
{e}
|
|
@@ -933,14 +945,44 @@ const CrMOptions: React.FC<ICrMOptionsProps> = ({ options, onChange, errorCopy =
|
|
|
933
945
|
value={options.creative_id}
|
|
934
946
|
onChange={(v) => onInputChange('creative_id', v)}
|
|
935
947
|
/>
|
|
948
|
+
</>
|
|
949
|
+
);
|
|
950
|
+
|
|
951
|
+
const assetInterface = (
|
|
952
|
+
<>
|
|
953
|
+
<h2>{copy.publish.crmPlacement}</h2>
|
|
954
|
+
<p>{copy.publish.crmData}</p>
|
|
955
|
+
{e}
|
|
956
|
+
<br />
|
|
936
957
|
<TextField
|
|
937
958
|
width={'33%'}
|
|
938
959
|
labelPosition='top'
|
|
939
|
-
label={copy.publish.
|
|
940
|
-
value={options.
|
|
941
|
-
onChange={(v) => onInputChange('
|
|
960
|
+
label={copy.publish.creativeLibraryId}
|
|
961
|
+
value={options.creative_library_id}
|
|
962
|
+
onChange={(v) => onInputChange('creative_library_id', v)}
|
|
942
963
|
/>
|
|
964
|
+
</>
|
|
965
|
+
);
|
|
966
|
+
return (
|
|
967
|
+
<>
|
|
968
|
+
<HRule />
|
|
943
969
|
<br />
|
|
970
|
+
{options['placement_type'] === ASSETS_POST_RENDER_ACTION
|
|
971
|
+
? assetInterface
|
|
972
|
+
: standardInterface}
|
|
973
|
+
<br />
|
|
974
|
+
<HRule />
|
|
975
|
+
<CheckboxField
|
|
976
|
+
value={options['placement_type'] === ASSETS_POST_RENDER_ACTION ? true : false}
|
|
977
|
+
label={copy.publish.uploadAsAssets}
|
|
978
|
+
onChange={(v) => {
|
|
979
|
+
if (v === false) {
|
|
980
|
+
onInputChange('placement_type', ADSTUDIO_POST_RENDER_ACTION);
|
|
981
|
+
} else {
|
|
982
|
+
onInputChange('placement_type', ASSETS_POST_RENDER_ACTION);
|
|
983
|
+
}
|
|
984
|
+
}}
|
|
985
|
+
/>
|
|
944
986
|
<HRule />
|
|
945
987
|
</>
|
|
946
988
|
);
|
package/src/constants/copy.ts
CHANGED
|
@@ -123,6 +123,7 @@ export const compositions = {
|
|
|
123
123
|
};
|
|
124
124
|
|
|
125
125
|
export const publish = {
|
|
126
|
+
uploadAsAssets: 'Upload as Assets',
|
|
126
127
|
noVariablesError:
|
|
127
128
|
'No variables found on the project. Cannot proceed with publishing to Creative Manager until at least one variable is added to the project.',
|
|
128
129
|
publishInProgress: 'Publish to Creative Manager in progress',
|
|
@@ -130,7 +131,6 @@ export const publish = {
|
|
|
130
131
|
btnCrM: 'Creative Manager',
|
|
131
132
|
creativeLibraryId: 'Creative Library ID',
|
|
132
133
|
creativeId: 'Creative ID',
|
|
133
|
-
email: 'Notification Email',
|
|
134
134
|
missingFields: 'Please provide the missing fields and try again!',
|
|
135
135
|
crmPlacement: 'Creative Manager Placement Variables',
|
|
136
136
|
crmData: `If your CSV batch data doesn't contain the required Creative Manager placement variables, or you would like to override them, enter the values below before you upload the batch data.`,
|
package/src/constants/publish.ts
CHANGED
|
@@ -14,11 +14,16 @@ export const CRM_PLACEMENT_OPTIONS = [
|
|
|
14
14
|
}
|
|
15
15
|
];
|
|
16
16
|
|
|
17
|
+
export const ASSET_NAME_VAR = 'asset-name';
|
|
18
|
+
|
|
17
19
|
export const CRM_PLACEMENT_VARS = [
|
|
18
20
|
'creative_library_id',
|
|
19
21
|
'creative_id',
|
|
20
22
|
'version-name',
|
|
21
23
|
'version-id',
|
|
22
|
-
'clickTag1'
|
|
23
|
-
'notificiaton_email'
|
|
24
|
+
'clickTag1'
|
|
24
25
|
];
|
|
26
|
+
|
|
27
|
+
export const ADSTUDIO_POST_RENDER_ACTION = 'crm-adstudio';
|
|
28
|
+
|
|
29
|
+
export const ASSETS_POST_RENDER_ACTION = 'crm-asset';
|
package/src/index.ts
CHANGED
|
@@ -162,6 +162,7 @@ import StoryTableNameFilter from './components/assets/StoryTableNameFilter';
|
|
|
162
162
|
import { AppWrapper } from './components/app-wrapper/AppWrapper';
|
|
163
163
|
import { pushRoute, replaceRoute } from './utils/routing';
|
|
164
164
|
import { ProjectDropdown } from './components/header/ProjectDropdown';
|
|
165
|
+
import { EditGuideModal, IEditGuideModalProps } from './components/edit-guide-modal/EditGuideModal';
|
|
165
166
|
|
|
166
167
|
export {
|
|
167
168
|
ProjectDropdown,
|
|
@@ -319,5 +320,7 @@ export {
|
|
|
319
320
|
Submenu,
|
|
320
321
|
CopyPropIdButton,
|
|
321
322
|
ConfirmModal,
|
|
322
|
-
IConfirmModalProps
|
|
323
|
+
IConfirmModalProps,
|
|
324
|
+
EditGuideModal,
|
|
325
|
+
IEditGuideModalProps
|
|
323
326
|
};
|