@imposium-hub/components 2.9.0-0 → 2.9.0-10
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 +10 -1
- package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
- package/dist/cjs/components/assets/AssetsTableAssetIdFilter.js +1 -1
- package/dist/cjs/components/assets/AssetsTableAssetIdFilter.js.map +1 -1
- package/dist/cjs/components/assets/AssetsTableNameFilter.js +1 -1
- package/dist/cjs/components/assets/AssetsTableNameFilter.js.map +1 -1
- package/dist/cjs/components/assets/AssetsTableTagsFilter.js +1 -1
- package/dist/cjs/components/assets/AssetsTableTagsFilter.js.map +1 -1
- package/dist/cjs/components/assets/AssetsUploadMenu.js +6 -2
- package/dist/cjs/components/assets/AssetsUploadMenu.js.map +1 -1
- package/dist/cjs/components/confirm-modal/ConfirmModal.js +3 -2
- package/dist/cjs/components/confirm-modal/ConfirmModal.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 +122 -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/field-wrapper/FieldWrapper.d.ts +1 -0
- package/dist/cjs/components/field-wrapper/FieldWrapper.js +10 -8
- package/dist/cjs/components/field-wrapper/FieldWrapper.js.map +1 -1
- package/dist/cjs/components/header/Header.js +9 -5
- package/dist/cjs/components/header/Header.js.map +1 -1
- package/dist/cjs/components/number-field/NumberField.d.ts +1 -0
- package/dist/cjs/components/number-field/NumberField.js +5 -2
- 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/components/replace-files-modal/ReplaceFilesModal.d.ts +5 -3
- package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js +114 -46
- package/dist/cjs/components/replace-files-modal/ReplaceFilesModal.js.map +1 -1
- package/dist/cjs/components/slider-field/SliderField.d.ts +2 -0
- package/dist/cjs/components/slider-field/SliderField.js +17 -8
- package/dist/cjs/components/slider-field/SliderField.js.map +1 -1
- package/dist/cjs/components/story-previewer/StoryPreviewer.js +17 -3
- package/dist/cjs/components/story-previewer/StoryPreviewer.js.map +1 -1
- package/dist/cjs/components/tabs/Tabs.js +2 -1
- package/dist/cjs/components/tabs/Tabs.js.map +1 -1
- package/dist/cjs/components/text-field/TextField.d.ts +1 -0
- package/dist/cjs/components/text-field/TextField.js +2 -2
- package/dist/cjs/components/text-field/TextField.js.map +1 -1
- package/dist/cjs/constants/copy.d.ts +5 -1
- package/dist/cjs/constants/copy.js +6 -2
- package/dist/cjs/constants/copy.js.map +1 -1
- package/dist/cjs/constants/icons.d.ts +2 -0
- package/dist/cjs/constants/icons.js +3 -1
- package/dist/cjs/constants/icons.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 +4 -3
- package/dist/cjs/index.js +8 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/redux/actions/asset-uploads.d.ts +1 -1
- package/dist/cjs/redux/actions/asset-uploads.js +169 -119
- package/dist/cjs/redux/actions/asset-uploads.js.map +1 -1
- package/dist/cjs/redux/actions/publish.js +14 -4
- package/dist/cjs/redux/actions/publish.js.map +1 -1
- package/dist/cjs/redux/reducers/asset-uploads.js +2 -1
- package/dist/cjs/redux/reducers/asset-uploads.js.map +1 -1
- package/dist/cjs/services/API.d.ts +3 -8
- package/dist/cjs/services/API.js +29 -101
- package/dist/cjs/services/API.js.map +1 -1
- package/dist/cjs/utils/modal.d.ts +4 -0
- package/dist/cjs/utils/modal.js +11 -2
- package/dist/cjs/utils/modal.js.map +1 -1
- package/dist/esm/components/app-wrapper/AppWrapper.js +10 -1
- package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
- package/dist/esm/components/assets/AssetsTableAssetIdFilter.js +1 -1
- package/dist/esm/components/assets/AssetsTableAssetIdFilter.js.map +1 -1
- package/dist/esm/components/assets/AssetsTableNameFilter.js +1 -1
- package/dist/esm/components/assets/AssetsTableNameFilter.js.map +1 -1
- package/dist/esm/components/assets/AssetsTableTagsFilter.js +1 -1
- package/dist/esm/components/assets/AssetsTableTagsFilter.js.map +1 -1
- package/dist/esm/components/assets/AssetsUploadMenu.js +7 -3
- package/dist/esm/components/assets/AssetsUploadMenu.js.map +1 -1
- package/dist/esm/components/confirm-modal/ConfirmModal.js +3 -2
- package/dist/esm/components/confirm-modal/ConfirmModal.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/field-wrapper/FieldWrapper.d.ts +1 -0
- package/dist/esm/components/field-wrapper/FieldWrapper.js +10 -8
- package/dist/esm/components/field-wrapper/FieldWrapper.js.map +1 -1
- package/dist/esm/components/header/Header.js +7 -3
- package/dist/esm/components/header/Header.js.map +1 -1
- package/dist/esm/components/number-field/NumberField.d.ts +1 -0
- package/dist/esm/components/number-field/NumberField.js +5 -2
- 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/components/replace-files-modal/ReplaceFilesModal.d.ts +5 -3
- package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js +110 -47
- package/dist/esm/components/replace-files-modal/ReplaceFilesModal.js.map +1 -1
- package/dist/esm/components/slider-field/SliderField.d.ts +2 -0
- package/dist/esm/components/slider-field/SliderField.js +17 -8
- package/dist/esm/components/slider-field/SliderField.js.map +1 -1
- package/dist/esm/components/story-previewer/StoryPreviewer.js +13 -4
- package/dist/esm/components/story-previewer/StoryPreviewer.js.map +1 -1
- package/dist/esm/components/tabs/Tabs.js +2 -1
- package/dist/esm/components/tabs/Tabs.js.map +1 -1
- package/dist/esm/components/text-field/TextField.d.ts +1 -0
- package/dist/esm/components/text-field/TextField.js +2 -2
- package/dist/esm/components/text-field/TextField.js.map +1 -1
- package/dist/esm/constants/copy.d.ts +5 -1
- package/dist/esm/constants/copy.js +6 -2
- package/dist/esm/constants/copy.js.map +1 -1
- package/dist/esm/constants/icons.d.ts +2 -0
- package/dist/esm/constants/icons.js +3 -1
- package/dist/esm/constants/icons.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 +4 -3
- package/dist/esm/index.js +4 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/redux/actions/asset-uploads.d.ts +1 -1
- package/dist/esm/redux/actions/asset-uploads.js +165 -115
- package/dist/esm/redux/actions/asset-uploads.js.map +1 -1
- package/dist/esm/redux/actions/publish.js +14 -4
- package/dist/esm/redux/actions/publish.js.map +1 -1
- package/dist/esm/redux/reducers/asset-uploads.js +2 -1
- package/dist/esm/redux/reducers/asset-uploads.js.map +1 -1
- package/dist/esm/services/API.d.ts +3 -8
- package/dist/esm/services/API.js +9 -46
- package/dist/esm/services/API.js.map +1 -1
- package/dist/esm/utils/modal.d.ts +4 -0
- package/dist/esm/utils/modal.js +9 -1
- package/dist/esm/utils/modal.js.map +1 -1
- package/dist/styles.css +101 -6
- package/dist/styles.less +91 -58
- package/less/components/assets.less +5 -39
- package/less/components/button-menu.less +1 -0
- package/less/components/button.less +57 -19
- package/less/components/form-field.less +27 -0
- package/less/components/story-previewer.less +1 -1
- package/package.json +5 -5
- package/src/components/app-wrapper/AppWrapper.tsx +10 -0
- package/src/components/assets/AssetsTableAssetIdFilter.tsx +1 -0
- package/src/components/assets/AssetsTableNameFilter.tsx +1 -0
- package/src/components/assets/AssetsTableTagsFilter.tsx +1 -0
- package/src/components/assets/AssetsUploadMenu.tsx +21 -9
- package/src/components/confirm-modal/ConfirmModal.tsx +3 -2
- package/src/components/edit-guide-modal/EditGuideModal.tsx +110 -0
- package/src/components/field-wrapper/FieldWrapper.tsx +16 -12
- package/src/components/header/Header.tsx +7 -3
- package/src/components/number-field/NumberField.tsx +6 -2
- package/src/components/publish-wizard/publish/EmailWorkflow.tsx +66 -24
- package/src/components/replace-files-modal/ReplaceFilesModal.tsx +217 -0
- package/src/components/slider-field/SliderField.tsx +44 -22
- package/src/components/story-previewer/StoryPreviewer.tsx +24 -8
- package/src/components/tabs/Tabs.tsx +2 -1
- package/src/components/text-field/TextField.tsx +5 -2
- package/src/constants/copy.ts +6 -2
- package/src/constants/icons.tsx +10 -1
- package/src/constants/publish.ts +7 -2
- package/src/index.ts +6 -2
- package/src/redux/actions/asset-uploads.ts +193 -162
- package/src/redux/actions/publish.ts +14 -4
- package/src/redux/reducers/asset-uploads.ts +2 -1
- package/src/services/API.ts +13 -76
- package/src/utils/modal.ts +13 -1
- package/dist/cjs/components/auth-gate/AuthGate.d.ts +0 -2
- package/dist/cjs/components/auth-gate/AuthGate.js +0 -105
- package/dist/cjs/components/auth-gate/AuthGate.js.map +0 -1
- package/dist/cjs/redux/actions/auth.d.ts +0 -9
- package/dist/cjs/redux/actions/auth.js +0 -30
- package/dist/cjs/redux/actions/auth.js.map +0 -1
- package/dist/cjs/redux/reducers/auth.d.ts +0 -3
- package/dist/cjs/redux/reducers/auth.js +0 -67
- package/dist/cjs/redux/reducers/auth.js.map +0 -1
- package/dist/cjs/services/Auth0.d.ts +0 -18
- package/dist/cjs/services/Auth0.js +0 -102
- package/dist/cjs/services/Auth0.js.map +0 -1
- package/dist/cjs/services/Session.d.ts +0 -26
- package/dist/cjs/services/Session.js +0 -155
- package/dist/cjs/services/Session.js.map +0 -1
- package/dist/esm/components/auth-gate/AuthGate.d.ts +0 -2
- package/dist/esm/components/auth-gate/AuthGate.js +0 -59
- package/dist/esm/components/auth-gate/AuthGate.js.map +0 -1
- package/dist/esm/redux/actions/auth.d.ts +0 -9
- package/dist/esm/redux/actions/auth.js +0 -25
- package/dist/esm/redux/actions/auth.js.map +0 -1
- package/dist/esm/redux/reducers/auth.d.ts +0 -3
- package/dist/esm/redux/reducers/auth.js +0 -27
- package/dist/esm/redux/reducers/auth.js.map +0 -1
- package/dist/esm/services/Auth0.d.ts +0 -18
- package/dist/esm/services/Auth0.js +0 -68
- package/dist/esm/services/Auth0.js.map +0 -1
- package/dist/esm/services/Session.d.ts +0 -26
- package/dist/esm/services/Session.js +0 -107
- package/dist/esm/services/Session.js.map +0 -1
|
@@ -116,44 +116,6 @@
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
// .assetUploads {
|
|
120
|
-
// .imposium-dropdown {
|
|
121
|
-
// border: unset;
|
|
122
|
-
|
|
123
|
-
// .uploads-dropzone{
|
|
124
|
-
// position: absolute;
|
|
125
|
-
// top: 0;
|
|
126
|
-
// height: 100%;
|
|
127
|
-
// z-index: 2;
|
|
128
|
-
// display: none;
|
|
129
|
-
|
|
130
|
-
// &.asset-over {
|
|
131
|
-
// .uploads-menu{
|
|
132
|
-
// opacity: .3;
|
|
133
|
-
// }
|
|
134
|
-
// .overlay {
|
|
135
|
-
// border-style: dashed;
|
|
136
|
-
// border-color: hsl(225, 100%, 50%);
|
|
137
|
-
// border-width: medium;
|
|
138
|
-
// position: absolute;
|
|
139
|
-
// top: 50%;
|
|
140
|
-
// left: 50%;
|
|
141
|
-
// transform: translate(-50%, -50%);
|
|
142
|
-
// -ms-transform: translate(-50%, -50%);
|
|
143
|
-
// text-align: center;
|
|
144
|
-
// height: 98%;
|
|
145
|
-
// width: 99%;
|
|
146
|
-
// display: flex;
|
|
147
|
-
// z-index: 1;
|
|
148
|
-
// p {
|
|
149
|
-
// vertical-align: middle;
|
|
150
|
-
// margin: auto;
|
|
151
|
-
// }
|
|
152
|
-
// }
|
|
153
|
-
// }
|
|
154
|
-
// }
|
|
155
|
-
// }
|
|
156
|
-
// }
|
|
157
119
|
.uploads-menu {
|
|
158
120
|
height: 100%;
|
|
159
121
|
overflow-y: auto;
|
|
@@ -331,7 +293,7 @@
|
|
|
331
293
|
width: 173px;
|
|
332
294
|
z-index: 1001;
|
|
333
295
|
}
|
|
334
|
-
}
|
|
296
|
+
}
|
|
335
297
|
|
|
336
298
|
.asset-details .rta .rta__autocomplete {
|
|
337
299
|
width: 362px;
|
|
@@ -388,6 +350,10 @@
|
|
|
388
350
|
flex-direction: row;
|
|
389
351
|
justify-content: space-between;
|
|
390
352
|
width: 100%;
|
|
353
|
+
.upload-icon {
|
|
354
|
+
padding-left: 2px;
|
|
355
|
+
padding-right: 2px;
|
|
356
|
+
}
|
|
391
357
|
.tags-column {
|
|
392
358
|
width: unset;
|
|
393
359
|
padding: unset;
|
|
@@ -166,22 +166,60 @@
|
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
.confirm-modal {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
169
|
+
top: calc(50% - 38px);
|
|
170
|
+
p {
|
|
171
|
+
text-align: center;
|
|
172
|
+
padding-bottom: 5px;
|
|
173
|
+
}
|
|
174
|
+
.confirm-buttons {
|
|
175
|
+
.imposium-btn {
|
|
176
|
+
width: 76px;
|
|
177
|
+
|
|
178
|
+
.btn-bold {
|
|
179
|
+
border: 1px solid #2d8cea;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.replace-files-modal,
|
|
186
|
+
.confirm-modal {
|
|
187
|
+
position: relative;
|
|
188
|
+
align-items: center;
|
|
189
|
+
display: flex;
|
|
190
|
+
flex-direction: column;
|
|
191
|
+
.confirm-buttons,
|
|
192
|
+
.replace-files-buttons {
|
|
193
|
+
.imposium-btn {
|
|
194
|
+
width: 76px;
|
|
195
|
+
|
|
196
|
+
.btn-bold {
|
|
197
|
+
border: 1px solid #2d8cea;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
.replace-files-modal {
|
|
203
|
+
text-align: center;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
.replace-files-buttons {
|
|
207
|
+
width: 100%;
|
|
208
|
+
margin-top: 10px;
|
|
209
|
+
.checkbox {
|
|
210
|
+
float: left;
|
|
211
|
+
padding-left: 10px;
|
|
212
|
+
position: relative;
|
|
213
|
+
top: 6px;
|
|
214
|
+
.label-left {
|
|
215
|
+
width: fit-content;
|
|
216
|
+
}
|
|
217
|
+
.checkbox {
|
|
218
|
+
top: 0px;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
.buttons {
|
|
222
|
+
float: right;
|
|
223
|
+
padding-right: 10px;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
@@ -131,6 +131,14 @@
|
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
+
.filterable-cell-wrapper .form-field-buttons{
|
|
135
|
+
position:absolute;
|
|
136
|
+
height: 18px;
|
|
137
|
+
top:4px;
|
|
138
|
+
right:0px;
|
|
139
|
+
background:@inputBackground;
|
|
140
|
+
z-index: 1000;
|
|
141
|
+
}
|
|
134
142
|
|
|
135
143
|
.checkbox-field{
|
|
136
144
|
|
|
@@ -215,6 +223,10 @@
|
|
|
215
223
|
input{
|
|
216
224
|
width:calc(100% - @sliderValWidth);
|
|
217
225
|
margin:0px;
|
|
226
|
+
|
|
227
|
+
&.toggle{
|
|
228
|
+
width:calc(100% - @sliderValWidth - 18px);
|
|
229
|
+
}
|
|
218
230
|
}
|
|
219
231
|
|
|
220
232
|
.val{
|
|
@@ -231,6 +243,21 @@
|
|
|
231
243
|
box-sizing:border-box;
|
|
232
244
|
background:lighten(@inputBackground, 4%);
|
|
233
245
|
}
|
|
246
|
+
|
|
247
|
+
.checkbox{
|
|
248
|
+
.inputMixin;
|
|
249
|
+
line-height: 10px;
|
|
250
|
+
border: 1px solid @backgroundLight;
|
|
251
|
+
border-radius: 2px;
|
|
252
|
+
width:18px;
|
|
253
|
+
height:18px;
|
|
254
|
+
padding:2px;
|
|
255
|
+
cursor: pointer;
|
|
256
|
+
|
|
257
|
+
.fa-check {
|
|
258
|
+
margin-left: 1px;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
234
261
|
}
|
|
235
262
|
|
|
236
263
|
.color-field{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@imposium-hub/components",
|
|
3
|
-
"version": "2.9.0-
|
|
3
|
+
"version": "2.9.0-10",
|
|
4
4
|
"description": "React & Typescript component / asset library for Imposium front-ends",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"@fortawesome/pro-solid-svg-icons": "^6.1.1",
|
|
59
59
|
"@fortawesome/react-fontawesome": "^0.1.18",
|
|
60
60
|
"@imposium-hub/react-textarea-autocomplete": "^4.9.13-6",
|
|
61
|
-
"axios": "^
|
|
61
|
+
"axios": "^1.9.0",
|
|
62
62
|
"hotkeys-js": "^3.6.12",
|
|
63
63
|
"localforage": "^1.7.3",
|
|
64
64
|
"react": "^17.0.1",
|
|
@@ -68,14 +68,13 @@
|
|
|
68
68
|
"react-dropzone": "^10.1.6",
|
|
69
69
|
"react-redux": "^5.0.7",
|
|
70
70
|
"react-resize-detector": "^6.7.1",
|
|
71
|
+
"react-router": "^3.2.6",
|
|
71
72
|
"react-spinners": "^0.6.1",
|
|
72
73
|
"react-table": "^7.7.0",
|
|
73
74
|
"react-tooltip": "^5.27.0",
|
|
74
|
-
"react-router": "^3.2.6",
|
|
75
75
|
"smpte-timecode": "^1.2.3"
|
|
76
76
|
},
|
|
77
77
|
"devDependencies": {
|
|
78
|
-
"react-router": "^3.2.6",
|
|
79
78
|
"@auth0/auth0-react": "^2.3.0",
|
|
80
79
|
"@fortawesome/fontawesome-svg-core": "^6.7.1",
|
|
81
80
|
"@fortawesome/free-brands-svg-icons": "^6.7.1",
|
|
@@ -101,7 +100,7 @@
|
|
|
101
100
|
"@types/resize-observer-browser": "^0.1.5",
|
|
102
101
|
"@typescript-eslint/eslint-plugin": "^5.26.0",
|
|
103
102
|
"@typescript-eslint/parser": "^5.26.0",
|
|
104
|
-
"axios": "^
|
|
103
|
+
"axios": "^1.9.0",
|
|
105
104
|
"concurrently": "^7.1.0",
|
|
106
105
|
"eslint": "^8.14.0",
|
|
107
106
|
"eslint-config-prettier": "^8.5.0",
|
|
@@ -122,6 +121,7 @@
|
|
|
122
121
|
"react-dropzone": "^10.1.6",
|
|
123
122
|
"react-redux": "^5.0.7",
|
|
124
123
|
"react-resize-detector": "^6.7.1",
|
|
124
|
+
"react-router": "^3.2.6",
|
|
125
125
|
"react-spinners": "^0.6.1",
|
|
126
126
|
"react-table": "^7.7.0",
|
|
127
127
|
"react-tooltip": "^5.27.1",
|
|
@@ -8,6 +8,8 @@ import { replaceRoute } from '../../utils/routing';
|
|
|
8
8
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
9
9
|
import { faExclamationTriangle } from '@fortawesome/pro-light-svg-icons';
|
|
10
10
|
import { initPendo } from '../../utils/pendo';
|
|
11
|
+
import { EditGuideModal } from '../edit-guide-modal/EditGuideModal';
|
|
12
|
+
import { ReplaceFilesModal } from '../replace-files-modal/ReplaceFilesModal';
|
|
11
13
|
|
|
12
14
|
export interface IAppWrapperProps {
|
|
13
15
|
appLabel: string;
|
|
@@ -228,6 +230,12 @@ export const AppWrapper: React.FC<IAppWrapperProps> = (props) => {
|
|
|
228
230
|
})
|
|
229
231
|
.catch((e: Error) => {
|
|
230
232
|
setErrorState(APP_WRAPPER_ERROR_STATES.UNAUTHORIZED_ORG);
|
|
233
|
+
|
|
234
|
+
// Attempt to get the access data again without the org ID, so we can at least shoe the user the org dropdown
|
|
235
|
+
api.init(baseUrl, getAccessTokenSilently, null);
|
|
236
|
+
api.getAccessData(false).then((freshAccess: any) => {
|
|
237
|
+
props.setAccessData(freshAccess);
|
|
238
|
+
});
|
|
231
239
|
});
|
|
232
240
|
|
|
233
241
|
// If we're not loading, and we're not authenticated, call login, and cache story + org ID from URL if it's there
|
|
@@ -279,6 +287,8 @@ export const AppWrapper: React.FC<IAppWrapperProps> = (props) => {
|
|
|
279
287
|
/>
|
|
280
288
|
{innerContent}
|
|
281
289
|
<ConfirmModal />
|
|
290
|
+
<EditGuideModal />
|
|
291
|
+
<ReplaceFilesModal />
|
|
282
292
|
</div>
|
|
283
293
|
);
|
|
284
294
|
};
|
|
@@ -18,7 +18,7 @@ import AssetsTableTagsPivot from './AssetsTableTagsPivot';
|
|
|
18
18
|
import Tag from '../tag/Tag';
|
|
19
19
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
20
20
|
import { faEraser } from '@fortawesome/free-solid-svg-icons';
|
|
21
|
-
import { ICON_TIMES, ICON_UPLOAD } from '../../constants/icons';
|
|
21
|
+
import { ICON_FILE_ADD, ICON_FILE_REPLACE, ICON_TIMES, ICON_UPLOAD } from '../../constants/icons';
|
|
22
22
|
import AssetsTableDropzone from './AssetsTableDropzone';
|
|
23
23
|
|
|
24
24
|
interface IAssetsUploadMenuProps {
|
|
@@ -148,7 +148,7 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps, IAsse
|
|
|
148
148
|
|
|
149
149
|
public render() {
|
|
150
150
|
const {
|
|
151
|
-
assetUploads
|
|
151
|
+
assetUploads,
|
|
152
152
|
editor: {
|
|
153
153
|
fromCrM,
|
|
154
154
|
showUploadsMenu,
|
|
@@ -163,10 +163,13 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps, IAsse
|
|
|
163
163
|
},
|
|
164
164
|
assetTags
|
|
165
165
|
} = this.props;
|
|
166
|
+
|
|
167
|
+
const uploads = assetUploads?.uploads || [];
|
|
166
168
|
const disable = uploads.length > 0 ? false : true;
|
|
167
169
|
|
|
168
170
|
let uploadsListInner;
|
|
169
171
|
const uploading = [];
|
|
172
|
+
|
|
170
173
|
if (uploads.length > 0) {
|
|
171
174
|
uploadsListInner = uploads.map((u: any) => {
|
|
172
175
|
const { filename, percent, tags } = u;
|
|
@@ -182,18 +185,27 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps, IAsse
|
|
|
182
185
|
</Button>
|
|
183
186
|
);
|
|
184
187
|
|
|
185
|
-
const fileTags =
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
188
|
+
const fileTags =
|
|
189
|
+
tags && !u.assetId
|
|
190
|
+
? tags.map((tag: string) => (
|
|
191
|
+
<Tag
|
|
192
|
+
key={tag}
|
|
193
|
+
copy={tag}
|
|
194
|
+
colorize={AssetsTableTagsPivot.COLORIZE_TAGS}
|
|
195
|
+
/>
|
|
196
|
+
))
|
|
197
|
+
: [];
|
|
198
|
+
|
|
192
199
|
return (
|
|
193
200
|
<div
|
|
194
201
|
className='ongoing-upload'
|
|
195
202
|
key={filename}>
|
|
196
203
|
<div className='ongoing-upload-inner'>
|
|
204
|
+
{u.assetId ? (
|
|
205
|
+
<div className='upload-icon'>{ICON_FILE_REPLACE}</div>
|
|
206
|
+
) : (
|
|
207
|
+
<div className='upload-icon'>{ICON_FILE_ADD}</div>
|
|
208
|
+
)}
|
|
197
209
|
<input
|
|
198
210
|
className='upload-filename'
|
|
199
211
|
value={filename}
|
|
@@ -4,6 +4,7 @@ import Modal from '../modal/Modal';
|
|
|
4
4
|
import Button from '../button/Button';
|
|
5
5
|
import { confirm as copy } from '../../constants/copy';
|
|
6
6
|
import Section from '../section/Section';
|
|
7
|
+
import { confirmModalEvent } from '../../utils/modal';
|
|
7
8
|
|
|
8
9
|
export interface IConfirmModalProps {
|
|
9
10
|
onYes: () => void;
|
|
@@ -65,9 +66,9 @@ export const ConfirmModal = () => {
|
|
|
65
66
|
);
|
|
66
67
|
|
|
67
68
|
useEffect(() => {
|
|
68
|
-
window.addEventListener(
|
|
69
|
+
window.addEventListener(confirmModalEvent, onOpen);
|
|
69
70
|
return () => {
|
|
70
|
-
window.removeEventListener(
|
|
71
|
+
window.removeEventListener(confirmModalEvent, onOpen);
|
|
71
72
|
};
|
|
72
73
|
}, []);
|
|
73
74
|
|
|
@@ -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
|
+
};
|
|
@@ -14,6 +14,7 @@ interface IFieldWrapperProps {
|
|
|
14
14
|
width?: string | number;
|
|
15
15
|
labelPosition?: string;
|
|
16
16
|
labelWidth?: string | number;
|
|
17
|
+
header?: boolean;
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
interface IFieldWrapperState {
|
|
@@ -87,7 +88,7 @@ class FieldWrapper extends React.PureComponent<IFieldWrapperProps, IFieldWrapper
|
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
public render() {
|
|
90
|
-
const { label, width, customClass } = this.props;
|
|
91
|
+
const { label, width, customClass, header } = this.props;
|
|
91
92
|
const labelJSX = this.renderLabel();
|
|
92
93
|
|
|
93
94
|
const style = {};
|
|
@@ -100,19 +101,22 @@ class FieldWrapper extends React.PureComponent<IFieldWrapperProps, IFieldWrapper
|
|
|
100
101
|
}
|
|
101
102
|
|
|
102
103
|
return (
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
style={style}>
|
|
106
|
-
{labelJSX}
|
|
104
|
+
<>
|
|
105
|
+
{header && this.renderButtons()}
|
|
107
106
|
<div
|
|
108
|
-
className={`form-field
|
|
109
|
-
{
|
|
110
|
-
{
|
|
111
|
-
|
|
107
|
+
className={`form-field ${customClass} ${this.getLabelClass()}`}
|
|
108
|
+
style={style}>
|
|
109
|
+
{labelJSX}
|
|
110
|
+
<div
|
|
111
|
+
className={`form-field-content ${this.getLabelClass()}`}
|
|
112
|
+
{...fieldProps}>
|
|
113
|
+
{this.props.children}
|
|
114
|
+
{!header && this.renderButtons()}
|
|
115
|
+
</div>
|
|
116
|
+
{renderTooltip(this.tooltipId, this.props.tooltip)}
|
|
117
|
+
{this.renderInfo()}
|
|
112
118
|
</div>
|
|
113
|
-
|
|
114
|
-
{this.renderInfo()}
|
|
115
|
-
</div>
|
|
119
|
+
</>
|
|
116
120
|
);
|
|
117
121
|
}
|
|
118
122
|
|
|
@@ -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);
|
|
@@ -164,6 +164,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
164
164
|
const { activeOrganization, api, activeServiceId, unsavedChanges } = this.props;
|
|
165
165
|
|
|
166
166
|
const changeStory = () => {
|
|
167
|
+
api.cancelAllPendingRequests();
|
|
167
168
|
pushRoute(`/${activeOrganization}/${story.id}`);
|
|
168
169
|
api.cacheActiveStory(activeServiceId, activeOrganization, story.id);
|
|
169
170
|
};
|
|
@@ -178,6 +179,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
178
179
|
|
|
179
180
|
openConfirmModal({
|
|
180
181
|
showCancel: true,
|
|
182
|
+
showNo: true,
|
|
181
183
|
noLabel: header.noSave,
|
|
182
184
|
onNo: () => changeStory(),
|
|
183
185
|
yesLabel: header.onSave,
|
|
@@ -197,8 +199,9 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
197
199
|
this.setState({ showAccountDropdown: false });
|
|
198
200
|
|
|
199
201
|
if (orgId) {
|
|
200
|
-
const lastModified = getLastModifiedStoryInOrg(orgId, this.props.access);
|
|
201
202
|
const changeOrg = () => {
|
|
203
|
+
api.cancelAllPendingRequests();
|
|
204
|
+
const lastModified = getLastModifiedStoryInOrg(orgId, this.props.access);
|
|
202
205
|
let storyId = lastModified;
|
|
203
206
|
api.getCachedStoryForOrg(activeServiceId, orgId)
|
|
204
207
|
.then((res) => {
|
|
@@ -225,6 +228,7 @@ class ImposiumHeader extends React.PureComponent<IHeaderProps, IHeaderState> {
|
|
|
225
228
|
|
|
226
229
|
openConfirmModal({
|
|
227
230
|
showCancel: true,
|
|
231
|
+
showNo: true,
|
|
228
232
|
noLabel: header.noSave,
|
|
229
233
|
onNo: () => changeOrg(),
|
|
230
234
|
yesLabel: header.onSave,
|
|
@@ -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
|
|
@@ -70,8 +74,8 @@ class NumberField extends React.PureComponent<INumberFieldProps, INumberFieldSta
|
|
|
70
74
|
|
|
71
75
|
private onChange(e) {
|
|
72
76
|
let val = e.target.value;
|
|
73
|
-
if (val === '') {
|
|
74
|
-
val =
|
|
77
|
+
if (val === '' || val === null) {
|
|
78
|
+
val = this.props.min;
|
|
75
79
|
} else {
|
|
76
80
|
val = parseFloat(val);
|
|
77
81
|
}
|