@imposium-hub/components 2.2.45-0 → 2.2.46-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/dist/cjs/Util.d.ts +1 -0
  2. package/dist/cjs/Util.js +8 -1
  3. package/dist/cjs/Util.js.map +1 -1
  4. package/dist/cjs/components/Tooltip.d.ts +2 -2
  5. package/dist/cjs/components/Tooltip.js +4 -7
  6. package/dist/cjs/components/Tooltip.js.map +1 -1
  7. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  8. package/dist/cjs/components/anchor-field/AnchorField.d.ts +1 -1
  9. package/dist/cjs/components/app-wrapper/AppWrapper.d.ts +2 -1
  10. package/dist/cjs/components/app-wrapper/AppWrapper.js +79 -71
  11. package/dist/cjs/components/app-wrapper/AppWrapper.js.map +1 -1
  12. package/dist/cjs/components/assets/AssetField.js +2 -2
  13. package/dist/cjs/components/assets/AssetField.js.map +1 -1
  14. package/dist/cjs/components/assets/AssetsTableDurationCell.js +1 -4
  15. package/dist/cjs/components/assets/AssetsTableDurationCell.js.map +1 -1
  16. package/dist/cjs/components/assets/AssetsTableGlobalCell.js +1 -1
  17. package/dist/cjs/components/assets/AssetsTableGlobalCell.js.map +1 -1
  18. package/dist/cjs/components/assets/AssetsTableNameCell.js +4 -3
  19. package/dist/cjs/components/assets/AssetsTableNameCell.js.map +1 -1
  20. package/dist/cjs/components/assets/AssetsTableRateCell.js +9 -3
  21. package/dist/cjs/components/assets/AssetsTableRateCell.js.map +1 -1
  22. package/dist/cjs/components/assets/AssetsTableTypeFilter.js +2 -2
  23. package/dist/cjs/components/assets/AssetsTableTypeFilter.js.map +1 -1
  24. package/dist/cjs/components/assets/AssetsUploadMenu.js +157 -34
  25. package/dist/cjs/components/assets/AssetsUploadMenu.js.map +1 -1
  26. package/dist/cjs/components/auth-gate/AuthGate.js +5 -8
  27. package/dist/cjs/components/auth-gate/AuthGate.js.map +1 -1
  28. package/dist/cjs/components/button-group-field/ButtonGroupField.d.ts +1 -1
  29. package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +1 -1
  30. package/dist/cjs/components/color-field/ColorField.d.ts +1 -1
  31. package/dist/cjs/components/color-field/ColorField.js +2 -2
  32. package/dist/cjs/components/color-field/ColorField.js.map +1 -1
  33. package/dist/cjs/components/context-menu/ContextMenu.js +8 -4
  34. package/dist/cjs/components/context-menu/ContextMenu.js.map +1 -1
  35. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.d.ts +12 -0
  36. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.js +75 -0
  37. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.js.map +1 -0
  38. package/dist/cjs/components/data-table/DataTable.js +2 -2
  39. package/dist/cjs/components/data-table/DataTable.js.map +1 -1
  40. package/dist/cjs/components/dropdown/{dropdown.stories.js → Dropdown.stories.js} +1 -1
  41. package/dist/cjs/components/dropdown/{dropdown.stories.js.map → Dropdown.stories.js.map} +1 -1
  42. package/dist/cjs/components/header/Header.d.ts +0 -4
  43. package/dist/cjs/components/header/Header.js +19 -27
  44. package/dist/cjs/components/header/Header.js.map +1 -1
  45. package/dist/cjs/components/list-field/ListField.d.ts +1 -1
  46. package/dist/cjs/components/number-field/NumberField.d.ts +1 -1
  47. package/dist/cjs/components/publish-wizard/PublishWizard.js +63 -119
  48. package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
  49. package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js +28 -5
  50. package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
  51. package/dist/cjs/components/select-field/SelectField.d.ts +1 -1
  52. package/dist/cjs/components/select-field/SelectField.js +4 -0
  53. package/dist/cjs/components/select-field/SelectField.js.map +1 -1
  54. package/dist/cjs/components/slider-field/SliderField.d.ts +1 -1
  55. package/dist/cjs/components/smpte-field/SMPTEField.d.ts +1 -1
  56. package/dist/cjs/components/text-area-field/TextAreaField.d.ts +1 -1
  57. package/dist/cjs/components/text-field/TextField.d.ts +1 -1
  58. package/dist/cjs/constants/copy.d.ts +2 -5
  59. package/dist/cjs/constants/copy.js +5 -8
  60. package/dist/cjs/constants/copy.js.map +1 -1
  61. package/dist/cjs/constants/icons.d.ts +0 -1
  62. package/dist/cjs/constants/icons.js +1 -3
  63. package/dist/cjs/constants/icons.js.map +1 -1
  64. package/dist/cjs/index.d.ts +5 -3
  65. package/dist/cjs/index.js +8 -3
  66. package/dist/cjs/index.js.map +1 -1
  67. package/dist/cjs/redux/actions/access.d.ts +3 -1
  68. package/dist/cjs/redux/actions/access.js +43 -10
  69. package/dist/cjs/redux/actions/access.js.map +1 -1
  70. package/dist/cjs/redux/actions/asset-uploads.d.ts +5 -10
  71. package/dist/cjs/redux/actions/asset-uploads.js +262 -182
  72. package/dist/cjs/redux/actions/asset-uploads.js.map +1 -1
  73. package/dist/cjs/redux/actions/publish.js +3 -4
  74. package/dist/cjs/redux/actions/publish.js.map +1 -1
  75. package/dist/cjs/redux/reducers/access.js +30 -7
  76. package/dist/cjs/redux/reducers/access.js.map +1 -1
  77. package/dist/cjs/redux/reducers/asset-uploads.js +8 -24
  78. package/dist/cjs/redux/reducers/asset-uploads.js.map +1 -1
  79. package/dist/cjs/services/Session.d.ts +8 -9
  80. package/dist/cjs/services/Session.js +127 -31
  81. package/dist/cjs/services/Session.js.map +1 -1
  82. package/dist/esm/Util.d.ts +1 -0
  83. package/dist/esm/Util.js +6 -0
  84. package/dist/esm/Util.js.map +1 -1
  85. package/dist/esm/components/Tooltip.d.ts +2 -2
  86. package/dist/esm/components/Tooltip.js +4 -4
  87. package/dist/esm/components/Tooltip.js.map +1 -1
  88. package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  89. package/dist/esm/components/anchor-field/AnchorField.d.ts +1 -1
  90. package/dist/esm/components/app-wrapper/AppWrapper.d.ts +2 -1
  91. package/dist/esm/components/app-wrapper/AppWrapper.js +79 -69
  92. package/dist/esm/components/app-wrapper/AppWrapper.js.map +1 -1
  93. package/dist/esm/components/assets/AssetField.js +2 -2
  94. package/dist/esm/components/assets/AssetField.js.map +1 -1
  95. package/dist/esm/components/assets/AssetsTableDurationCell.js +2 -5
  96. package/dist/esm/components/assets/AssetsTableDurationCell.js.map +1 -1
  97. package/dist/esm/components/assets/AssetsTableGlobalCell.js +1 -1
  98. package/dist/esm/components/assets/AssetsTableGlobalCell.js.map +1 -1
  99. package/dist/esm/components/assets/AssetsTableNameCell.js +4 -3
  100. package/dist/esm/components/assets/AssetsTableNameCell.js.map +1 -1
  101. package/dist/esm/components/assets/AssetsTableRateCell.js +9 -3
  102. package/dist/esm/components/assets/AssetsTableRateCell.js.map +1 -1
  103. package/dist/esm/components/assets/AssetsTableTypeFilter.js +2 -2
  104. package/dist/esm/components/assets/AssetsTableTypeFilter.js.map +1 -1
  105. package/dist/esm/components/assets/AssetsUploadMenu.js +138 -34
  106. package/dist/esm/components/assets/AssetsUploadMenu.js.map +1 -1
  107. package/dist/esm/components/auth-gate/AuthGate.js +6 -9
  108. package/dist/esm/components/auth-gate/AuthGate.js.map +1 -1
  109. package/dist/esm/components/button-group-field/ButtonGroupField.d.ts +1 -1
  110. package/dist/esm/components/checkbox-field/CheckboxField.d.ts +1 -1
  111. package/dist/esm/components/color-field/ColorField.d.ts +1 -1
  112. package/dist/esm/components/color-field/ColorField.js +2 -2
  113. package/dist/esm/components/color-field/ColorField.js.map +1 -1
  114. package/dist/esm/components/context-menu/ContextMenu.js +7 -3
  115. package/dist/esm/components/context-menu/ContextMenu.js.map +1 -1
  116. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.d.ts +12 -0
  117. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.js +24 -0
  118. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.js.map +1 -0
  119. package/dist/esm/components/data-table/DataTable.js +2 -2
  120. package/dist/esm/components/data-table/DataTable.js.map +1 -1
  121. package/dist/esm/components/dropdown/{dropdown.stories.js → Dropdown.stories.js} +1 -1
  122. package/dist/esm/components/dropdown/{dropdown.stories.js.map → Dropdown.stories.js.map} +1 -1
  123. package/dist/esm/components/header/Header.d.ts +0 -4
  124. package/dist/esm/components/header/Header.js +19 -27
  125. package/dist/esm/components/header/Header.js.map +1 -1
  126. package/dist/esm/components/list-field/ListField.d.ts +1 -1
  127. package/dist/esm/components/number-field/NumberField.d.ts +1 -1
  128. package/dist/esm/components/publish-wizard/PublishWizard.js +64 -119
  129. package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
  130. package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js +28 -5
  131. package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
  132. package/dist/esm/components/select-field/SelectField.d.ts +1 -1
  133. package/dist/esm/components/select-field/SelectField.js +3 -0
  134. package/dist/esm/components/select-field/SelectField.js.map +1 -1
  135. package/dist/esm/components/slider-field/SliderField.d.ts +1 -1
  136. package/dist/esm/components/smpte-field/SMPTEField.d.ts +1 -1
  137. package/dist/esm/components/text-area-field/TextAreaField.d.ts +1 -1
  138. package/dist/esm/components/text-field/TextField.d.ts +1 -1
  139. package/dist/esm/constants/copy.d.ts +2 -5
  140. package/dist/esm/constants/copy.js +5 -8
  141. package/dist/esm/constants/copy.js.map +1 -1
  142. package/dist/esm/constants/icons.d.ts +0 -1
  143. package/dist/esm/constants/icons.js +0 -2
  144. package/dist/esm/constants/icons.js.map +1 -1
  145. package/dist/esm/index.d.ts +5 -3
  146. package/dist/esm/index.js +5 -3
  147. package/dist/esm/index.js.map +1 -1
  148. package/dist/esm/redux/actions/access.d.ts +3 -1
  149. package/dist/esm/redux/actions/access.js +37 -8
  150. package/dist/esm/redux/actions/access.js.map +1 -1
  151. package/dist/esm/redux/actions/asset-uploads.d.ts +5 -10
  152. package/dist/esm/redux/actions/asset-uploads.js +224 -167
  153. package/dist/esm/redux/actions/asset-uploads.js.map +1 -1
  154. package/dist/esm/redux/actions/publish.js +3 -4
  155. package/dist/esm/redux/actions/publish.js.map +1 -1
  156. package/dist/esm/redux/reducers/access.js +8 -5
  157. package/dist/esm/redux/reducers/access.js.map +1 -1
  158. package/dist/esm/redux/reducers/asset-uploads.js +11 -48
  159. package/dist/esm/redux/reducers/asset-uploads.js.map +1 -1
  160. package/dist/esm/services/Session.d.ts +8 -9
  161. package/dist/esm/services/Session.js +102 -29
  162. package/dist/esm/services/Session.js.map +1 -1
  163. package/dist/styles.css +151 -25
  164. package/dist/styles.less +280 -100
  165. package/less/components/assets.less +237 -63
  166. package/less/components/button.less +7 -1
  167. package/less/components/data-table.less +17 -11
  168. package/less/components/header.less +0 -13
  169. package/less/components/publish-wizard.less +20 -13
  170. package/less/components/story-previewer.less +1 -0
  171. package/package.json +6 -6
  172. package/src/Util.ts +10 -0
  173. package/src/components/Tooltip.tsx +9 -9
  174. package/src/components/advanced-number-field/AdvancedNumberField.tsx +1 -1
  175. package/src/components/anchor-field/AnchorField.tsx +1 -1
  176. package/src/components/app-wrapper/AppWrapper.tsx +120 -79
  177. package/src/components/assets/AssetField.tsx +3 -8
  178. package/src/components/assets/AssetsTableDurationCell.tsx +2 -5
  179. package/src/components/assets/AssetsTableGlobalCell.tsx +15 -0
  180. package/src/components/assets/AssetsTableNameCell.tsx +3 -5
  181. package/src/components/assets/AssetsTableRateCell.tsx +11 -4
  182. package/src/components/assets/AssetsTableTypeFilter.tsx +7 -8
  183. package/src/components/assets/AssetsUploadMenu.tsx +271 -98
  184. package/src/components/auth-gate/AuthGate.tsx +8 -14
  185. package/src/components/button-group-field/ButtonGroupField.tsx +1 -1
  186. package/src/components/checkbox-field/CheckboxField.tsx +1 -1
  187. package/src/components/color-field/ColorField.tsx +3 -3
  188. package/src/components/context-menu/ContextMenu.tsx +16 -11
  189. package/src/components/copy-prop-id-button/CopyPropIdButton.tsx +44 -0
  190. package/src/components/data-table/DataTable.tsx +2 -2
  191. package/src/components/header/Header.tsx +39 -74
  192. package/src/components/list-field/ListField.tsx +1 -1
  193. package/src/components/number-field/NumberField.tsx +1 -1
  194. package/src/components/publish-wizard/PublishWizard.tsx +102 -180
  195. package/src/components/publish-wizard/publish/EmailWorkflow.tsx +42 -10
  196. package/src/components/select-field/SelectField.tsx +4 -1
  197. package/src/components/slider-field/SliderField.tsx +1 -1
  198. package/src/components/smpte-field/SMPTEField.tsx +1 -1
  199. package/src/components/text-area-field/TextAreaField.tsx +1 -1
  200. package/src/components/text-field/TextField.tsx +1 -1
  201. package/src/constants/copy.ts +5 -9
  202. package/src/constants/icons.tsx +0 -3
  203. package/src/index.ts +16 -9
  204. package/src/redux/actions/access.ts +67 -5
  205. package/src/redux/actions/asset-uploads.ts +305 -205
  206. package/src/redux/actions/publish.ts +3 -6
  207. package/src/redux/reducers/access.ts +8 -5
  208. package/src/redux/reducers/asset-uploads.ts +13 -48
  209. package/src/services/Session.ts +120 -34
  210. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +0 -27
  211. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +0 -243
  212. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +0 -1
  213. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +0 -28
  214. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +0 -255
  215. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +0 -1
  216. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +0 -27
  217. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +0 -243
  218. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +0 -1
  219. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +0 -28
  220. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +0 -251
  221. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +0 -1
  222. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.d.ts +0 -15
  223. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js +0 -91
  224. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js.map +0 -1
  225. package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +0 -33
  226. package/dist/cjs/components/header/Header_BACKUP_73021.js +0 -393
  227. package/dist/cjs/components/header/Header_BACKUP_73021.js.map +0 -1
  228. package/dist/cjs/components/header/Header_BASE_73021.d.ts +0 -29
  229. package/dist/cjs/components/header/Header_BASE_73021.js +0 -376
  230. package/dist/cjs/components/header/Header_BASE_73021.js.map +0 -1
  231. package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +0 -33
  232. package/dist/cjs/components/header/Header_LOCAL_73021.js +0 -382
  233. package/dist/cjs/components/header/Header_LOCAL_73021.js.map +0 -1
  234. package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +0 -30
  235. package/dist/cjs/components/header/Header_REMOTE_73021.js +0 -386
  236. package/dist/cjs/components/header/Header_REMOTE_73021.js.map +0 -1
  237. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +0 -27
  238. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +0 -194
  239. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +0 -1
  240. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +0 -28
  241. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +0 -208
  242. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +0 -1
  243. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +0 -27
  244. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +0 -194
  245. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +0 -1
  246. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +0 -28
  247. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +0 -204
  248. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +0 -1
  249. package/dist/esm/components/error-message-preview/ErrorMessagePreview.d.ts +0 -15
  250. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js +0 -35
  251. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js.map +0 -1
  252. package/dist/esm/components/header/Header_BACKUP_73021.d.ts +0 -33
  253. package/dist/esm/components/header/Header_BACKUP_73021.js +0 -336
  254. package/dist/esm/components/header/Header_BACKUP_73021.js.map +0 -1
  255. package/dist/esm/components/header/Header_BASE_73021.d.ts +0 -29
  256. package/dist/esm/components/header/Header_BASE_73021.js +0 -322
  257. package/dist/esm/components/header/Header_BASE_73021.js.map +0 -1
  258. package/dist/esm/components/header/Header_LOCAL_73021.d.ts +0 -33
  259. package/dist/esm/components/header/Header_LOCAL_73021.js +0 -328
  260. package/dist/esm/components/header/Header_LOCAL_73021.js.map +0 -1
  261. package/dist/esm/components/header/Header_REMOTE_73021.d.ts +0 -30
  262. package/dist/esm/components/header/Header_REMOTE_73021.js +0 -329
  263. package/dist/esm/components/header/Header_REMOTE_73021.js.map +0 -1
  264. /package/dist/cjs/components/dropdown/{dropdown.stories.d.ts → Dropdown.stories.d.ts} +0 -0
  265. /package/dist/esm/components/dropdown/{dropdown.stories.d.ts → Dropdown.stories.d.ts} +0 -0
  266. /package/src/components/dropdown/{dropdown.stories.tsx → Dropdown.stories.tsx} +0 -0
@@ -1,17 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import { assets as copy } from '../../constants/copy';
3
3
  import CheckboxField from '../checkbox-field/CheckboxField';
4
- import { DeterminateLoader } from '../determinate-loader/DeterminateLoader';
5
4
  import {
6
- toggleAssignToStory,
7
5
  cancelAssetUpload,
8
- toggleTagFileName,
9
- setDelimiter,
10
- toggleTagDelimiter,
11
- toggleManualTagging,
12
- addManualTag,
13
- deleteManualTag,
14
- deleteManualTags
6
+ uploadingAsset,
7
+ updateUploadTags,
8
+ cancelNonUploadedAssets
15
9
  } from '../../redux/actions/asset-uploads';
16
10
  import { bindActionCreators } from 'redux';
17
11
  import { connect } from 'react-redux';
@@ -24,27 +18,58 @@ import AssetsTableTagsPivot from './AssetsTableTagsPivot';
24
18
  import Tag from '../tag/Tag';
25
19
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
26
20
  import { faEraser } from '@fortawesome/free-solid-svg-icons';
21
+ import { ICON_TIMES, ICON_UPLOAD } from '../../constants/icons';
22
+ import AssetsTableDropzone from './AssetsTableDropzone';
27
23
 
28
24
  interface IAssetsUploadMenuProps {
25
+ editor: any;
29
26
  assetUploads: any;
30
27
  assetTags: string[];
31
28
  api: any;
32
- editor: any;
33
- toggleAutoTag: (toggle: boolean) => any;
34
- toggleTagFileName: (toggle: boolean) => any;
35
- toggleAssignToStory: (toggle: boolean) => any;
36
- toggleTagDelimiter: (togglle: boolean) => any;
37
- setDelimiter: (delimiter: string) => any;
38
- toggleManualTagging: (togglle: boolean) => any;
39
- addManualTag: (tag: string) => any;
40
- deleteManualTag: (tag: string) => any;
41
- deleteManualTags: () => void;
42
29
  cancelAssetUpload: (fileName: string, api: IImposiumAPI) => any;
30
+ cancelNonUploadedAssets: (api: IImposiumAPI) => any;
31
+ updateEditorConfig(c): void;
32
+ uploadingAsset: (api: IImposiumAPI) => void;
33
+ updateUploadTags: () => void;
34
+ onDrop: (i, m) => any;
35
+ show: boolean;
36
+ onMenuHover: (o) => void;
37
+ toggleRef?: any;
38
+ onOutsideClick: (...args) => any;
39
+ tableHover: boolean;
43
40
  }
44
41
 
45
- class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps> {
42
+ interface IAssetsUploadMenuState {
43
+ assetOver: boolean;
44
+ }
45
+
46
+ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps, IAssetsUploadMenuState> {
47
+ private menuRef: any = null;
48
+
49
+ private clickHandler: any = (e) => this.detectOutsideClick(e);
50
+
46
51
  constructor(props: IAssetsUploadMenuProps) {
47
52
  super(props);
53
+
54
+ this.state = {
55
+ assetOver: false
56
+ };
57
+
58
+ this.menuRef = React.createRef();
59
+ }
60
+
61
+ public componentDidUpdate(prevProps: IAssetsUploadMenuProps) {
62
+ if (this.props.show && !prevProps.show) {
63
+ window.addEventListener('mousedown', this.clickHandler);
64
+ }
65
+
66
+ if (!this.props.show && prevProps.show) {
67
+ window.removeEventListener('mousedown', this.clickHandler);
68
+ }
69
+ }
70
+
71
+ public componentWillUnmount(): void {
72
+ window.removeEventListener('mousedown', this.clickHandler);
48
73
  }
49
74
 
50
75
  private handleCancelAssetUpload(fileName: string) {
@@ -52,82 +77,180 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps> {
52
77
  this.props.cancelAssetUpload(fileName, api);
53
78
  }
54
79
 
80
+ private uploadFileHandler() {
81
+ const { api } = this.props;
82
+ this.props.uploadingAsset(api);
83
+ this.props.updateEditorConfig({ showUploadsDropdown: false });
84
+ }
85
+
86
+ private cancelUploadHandler(remove: boolean) {
87
+ const { api } = this.props;
88
+ if (!remove) {
89
+ this.props.cancelNonUploadedAssets(api);
90
+ }
91
+ this.props.updateEditorConfig({ showUploadsDropdown: false });
92
+ }
93
+
94
+ private uploadsSetting(state) {
95
+ const currState = this.props.editor.assetUploads;
96
+
97
+ const newState = { ...currState, ...state };
98
+ this.props.updateEditorConfig({
99
+ assetUploads: newState
100
+ });
101
+ this.props.updateUploadTags();
102
+ }
103
+
104
+ private deleteManualTag(tag) {
105
+ const { manualTags } = this.props.editor.assetUploads;
106
+ const updatedManualTags = manualTags.filter((t: string) => t !== tag);
107
+ this.uploadsSetting({ manualTags: updatedManualTags });
108
+ }
109
+
110
+ private addManualTag(tag) {
111
+ const { manualTags } = this.props.editor.assetUploads;
112
+ const updatedManualTags = manualTags ? manualTags : [];
113
+ updatedManualTags.push(tag);
114
+ this.uploadsSetting({ manualTags: updatedManualTags });
115
+ }
116
+
117
+ private checkHover(monitor) {
118
+ const isOver = monitor.isOver();
119
+ if (isOver !== this.state.assetOver) {
120
+ this.setState({ assetOver: isOver }, () => this.props.onMenuHover(isOver));
121
+ }
122
+ }
123
+
124
+ private detectOutsideClick = (e: any): void => {
125
+ const { toggleRef } = this.props;
126
+ const { target } = e;
127
+
128
+ const isResizing = target.classList.contains('Resizer') ? true : false;
129
+ const clickInside =
130
+ this.menuRef.current && this.menuRef.current.contains(target) ? true : false;
131
+ const clickOnToggle =
132
+ toggleRef && toggleRef.current && toggleRef.current.contains(target) ? true : false;
133
+
134
+ if (!isResizing && !clickInside && !clickOnToggle) {
135
+ this.cancelRender(true);
136
+ }
137
+ };
138
+
139
+ private cancelRender = (forced: boolean = false): void => {
140
+ const { onOutsideClick } = this.props;
141
+
142
+ window.removeEventListener('mousedown', this.clickHandler);
143
+
144
+ if (forced) {
145
+ onOutsideClick();
146
+ }
147
+ };
148
+
55
149
  public render() {
56
150
  const {
57
- assetUploads: {
58
- uploads,
59
- assignToStory,
60
- tagByFileName,
61
- tagByDelimiter,
62
- delimiter,
63
- tagManually,
64
- manualTags
151
+ assetUploads: { uploads },
152
+ editor: {
153
+ showUploadsMenu,
154
+ assetUploads: {
155
+ tagByDelimiter,
156
+ delimiter,
157
+ assignToStory,
158
+ tagByFileName,
159
+ tagManually,
160
+ manualTags
161
+ }
65
162
  },
66
- assetTags,
67
- editor: { fromCrM }
163
+ assetTags
68
164
  } = this.props;
165
+ const disable = uploads.length > 0 ? false : true;
166
+
69
167
  let uploadsListInner;
168
+ const uploading = [];
70
169
  if (uploads.length > 0) {
71
170
  uploadsListInner = uploads.map((u: any) => {
72
- const { filename, percent } = u;
73
- const loader =
74
- percent < 100 ? (
75
- <DeterminateLoader progress={u.percent} />
76
- ) : (
77
- <span>{copy.uploads.preparePhase}</span>
171
+ const { filename, percent, tags } = u;
172
+
173
+ if (percent === 0) {
174
+ const closeButton = (
175
+ <Button
176
+ key='btn-cancel'
177
+ onClick={() => this.handleCancelAssetUpload(filename)}
178
+ style='subtle'
179
+ size='small'>
180
+ {ICON_TIMES}
181
+ </Button>
78
182
  );
79
- const closeButton = percent < 100 && (
80
- <Button
81
- key='btn-cancel'
82
- onClick={() => this.handleCancelAssetUpload(filename)}
83
- style='subtle'
84
- size='small'>
85
- {copy.uploads.cancelButton}
86
- </Button>
87
- );
88
-
89
- return (
90
- <div
91
- className='ongoing-upload'
92
- key={filename}>
93
- <div className='ongoing-upload-inner'>
94
- <div className='upload-filename'>{filename}</div>
95
- {closeButton}
183
+
184
+ const fileTags = tags.map((tag: string) => (
185
+ <Tag
186
+ key={tag}
187
+ copy={tag}
188
+ colorize={AssetsTableTagsPivot.COLORIZE_TAGS}
189
+ />
190
+ ));
191
+ return (
192
+ <div
193
+ className='ongoing-upload'
194
+ key={filename}>
195
+ <div className='ongoing-upload-inner'>
196
+ <input
197
+ className='upload-filename'
198
+ value={filename}
199
+ readOnly
200
+ />
201
+ <div className='tags-column'>{fileTags}</div>
202
+ {closeButton}
203
+ </div>
96
204
  </div>
97
- {loader}
98
- </div>
99
- );
205
+ );
206
+ } else {
207
+ uploading.push(true);
208
+ }
100
209
  });
101
210
  } else {
102
211
  uploadsListInner = <div className='no-ongoing-uploads'>{copy.uploads.noUploads}</div>;
103
212
  }
104
213
 
214
+ if (uploading.length === uploads.length) {
215
+ uploadsListInner = <div className='no-ongoing-uploads'>{copy.uploads.noUploads}</div>;
216
+ }
217
+
105
218
  const delimiterSelector = tagByDelimiter && (
106
219
  <SelectField
107
220
  width='35%'
108
221
  options={DELIMITER_OPTIONS}
109
222
  value={delimiter}
110
- onChange={(c) => this.props.setDelimiter(c)}
223
+ onChange={(c) => {
224
+ this.uploadsSetting({ delimiter: c });
225
+ }}
111
226
  />
112
227
  );
228
+
113
229
  const tagsArray = [...new Set(manualTags)];
230
+
114
231
  const tagsMarkup = tagsArray.map((tag: string) => (
115
232
  <Tag
116
233
  key={tag}
117
234
  copy={tag}
118
235
  colorize={AssetsTableTagsPivot.COLORIZE_TAGS}
119
- removeHandler={() => this.props.deleteManualTag(tag)}
236
+ removeHandler={() => {
237
+ this.deleteManualTag(tag);
238
+ }}
120
239
  />
121
240
  ));
241
+
122
242
  const removeTagsBtn =
123
243
  tagsArray.length > 0 ? (
124
244
  <Button
125
245
  tooltip='Remove All Tags'
126
246
  style='sublte'
127
- onClick={() => this.props.deleteManualTags()}>
247
+ onClick={() => {
248
+ this.uploadsSetting({ manualTags: [] });
249
+ }}>
128
250
  <FontAwesomeIcon icon={faEraser} />
129
251
  </Button>
130
252
  ) : null;
253
+
131
254
  const tagsColumn = tagManually && (
132
255
  <div className='tags-column'>
133
256
  <TextField
@@ -136,48 +259,103 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps> {
136
259
  suggestions={assetTags}
137
260
  label={copy.tags.add}
138
261
  width={AssetsTableTagsPivot.ADD_TAG_INPUT_WIDTH}
139
- doSubmit={(t) => this.props.addManualTag(t)}
262
+ doSubmit={(t) => {
263
+ this.addManualTag(t);
264
+ }}
140
265
  />
141
266
  {tagsMarkup}
142
267
  {removeTagsBtn}
143
268
  </div>
144
269
  );
145
270
 
271
+ const modifier = this.state.assetOver ? 'asset-over' : '';
272
+ const show = this.props.show ? 'show' : '';
273
+ const tableHover = this.props.tableHover ? 'table-hover' : '';
274
+ const width = document.getElementsByClassName('assetUploads')[0]?.clientWidth;
275
+
146
276
  return (
147
- <div className='uploads-menu'>
148
- <div className='uploads-controls'>
149
- <CheckboxField
150
- width='50%'
151
- label={copy.uploads.autoTagDelimiter}
152
- value={tagByDelimiter}
153
- onChange={() => this.props.toggleTagDelimiter(!tagByDelimiter)}
154
- />
155
- {delimiterSelector}
156
- <CheckboxField
157
- width='50%'
158
- label={copy.uploads.manualTagging}
159
- value={tagManually}
160
- onChange={() => this.props.toggleManualTagging(!tagManually)}
161
- />
162
- <CheckboxField
163
- width='50%'
164
- label={copy.uploads.autoTagFilname}
165
- value={tagByFileName}
166
- onChange={() => this.props.toggleTagFileName(!tagByFileName)}
167
- />
168
- {!fromCrM && (
277
+ <AssetsTableDropzone
278
+ className={`uploads-dropzone ${show} ${tableHover} ${modifier}`}
279
+ onDrop={(i, m) => {
280
+ this.props.onDrop(i, m);
281
+ }}
282
+ onExternalCollect={(o) => this.checkHover(o)}>
283
+ <div className='overlay'>
284
+ <p style={{ display: this.state.assetOver ? 'block' : 'none' }}>
285
+ {copy.dropAsset}
286
+ </p>
287
+ </div>
288
+ <div
289
+ className='uploads-menu'
290
+ style={{ width }}
291
+ ref={this.menuRef}>
292
+ <div className='uploads-controls'>
293
+ <CheckboxField
294
+ width='50%'
295
+ label={copy.uploads.autoTagDelimiter}
296
+ value={tagByDelimiter}
297
+ onChange={() =>
298
+ this.uploadsSetting({ tagByDelimiter: !tagByDelimiter })
299
+ }
300
+ />
301
+ {delimiterSelector}
302
+ <CheckboxField
303
+ width='50%'
304
+ label={copy.uploads.manualTagging}
305
+ value={tagManually}
306
+ onChange={() => this.uploadsSetting({ tagManually: !tagManually })}
307
+ />
308
+ <CheckboxField
309
+ width='50%'
310
+ label={copy.uploads.autoTagFilname}
311
+ value={tagByFileName}
312
+ onChange={() => this.uploadsSetting({ tagByFileName: !tagByFileName })}
313
+ />
169
314
  <CheckboxField
170
315
  width='50%'
171
316
  label={copy.uploads.assignToProjectInput}
172
317
  info={copy.uploads.assignToProjectInfo}
173
- value={assignToStory}
174
- onChange={() => this.props.toggleAssignToStory(!assignToStory)}
318
+ value={!assignToStory}
319
+ onChange={() => this.uploadsSetting({ assignToStory: !assignToStory })}
320
+ />
321
+ </div>
322
+ {tagsColumn}
323
+ <div className='uploads-list'>{uploadsListInner}</div>
324
+ <div className='uploads-confirm'>
325
+ <CheckboxField
326
+ label={`Don't show again`}
327
+ value={!showUploadsMenu}
328
+ onChange={() =>
329
+ this.props.updateEditorConfig({
330
+ showUploadsMenu: !showUploadsMenu
331
+ })
332
+ }
175
333
  />
176
- )}
334
+ <Button
335
+ key='cancel-upload'
336
+ onClick={() => this.cancelUploadHandler(disable)}
337
+ customStyles={{
338
+ color: 'black'
339
+ }}
340
+ style='bold'
341
+ color='secondary'
342
+ width='60px'
343
+ size='small'>
344
+ Cancel
345
+ </Button>
346
+ <Button
347
+ key='upload-file'
348
+ disabled={disable}
349
+ onClick={() => this.uploadFileHandler()}
350
+ style='bold'
351
+ color='primary'
352
+ width='80px'
353
+ size='small'>
354
+ Upload {ICON_UPLOAD}
355
+ </Button>
356
+ </div>
177
357
  </div>
178
- {tagsColumn}
179
- <div className='uploads-list'>{uploadsListInner}</div>
180
- </div>
358
+ </AssetsTableDropzone>
181
359
  );
182
360
  }
183
361
  }
@@ -185,15 +363,10 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps> {
185
363
  const mapDispatchToProps = (dispatch): any => {
186
364
  return bindActionCreators(
187
365
  {
188
- toggleAssignToStory,
189
- toggleTagFileName,
190
366
  cancelAssetUpload,
191
- toggleTagDelimiter,
192
- setDelimiter,
193
- toggleManualTagging,
194
- addManualTag,
195
- deleteManualTag,
196
- deleteManualTags
367
+ cancelNonUploadedAssets,
368
+ uploadingAsset,
369
+ updateUploadTags
197
370
  },
198
371
  dispatch
199
372
  );
@@ -202,8 +375,8 @@ const mapDispatchToProps = (dispatch): any => {
202
375
  const mapStateToProps = (state): any => {
203
376
  return {
204
377
  assetUploads: state.assetUploads,
205
- editor: state.editor,
206
- assetTags: state.assetTags
378
+ assetTags: state.assetTags,
379
+ editor: state.editor
207
380
  };
208
381
  };
209
382
 
@@ -5,18 +5,16 @@ import AuthService, { IIdentity } from '../../services/Auth0';
5
5
  import { connect } from 'react-redux';
6
6
  import { bindActionCreators } from 'redux';
7
7
  import { login } from '../../redux/actions/auth';
8
- import { setAccessData } from '../../redux/actions/access';
8
+ import { cacheAccessData } from '../../redux/actions/access';
9
9
 
10
10
  interface IAuthGateProps {
11
11
  auth0ClientId: string;
12
12
  auth0Domain: string;
13
13
  auth0Hash: string;
14
- onAuthenticated: (storyId, orgId) => any;
15
- storyId: string;
16
- organizationId: string;
14
+ onAuthenticated: () => any;
17
15
  baseUrl?: string;
18
- setAccessData(accessData: any): any;
19
16
  login: (id: IIdentity) => any;
17
+ cacheAccessData: (accessData: any) => any;
20
18
  }
21
19
 
22
20
  class AuthGate extends React.PureComponent<IAuthGateProps> {
@@ -36,16 +34,12 @@ class AuthGate extends React.PureComponent<IAuthGateProps> {
36
34
  } else {
37
35
  AuthService.parseIdFromHash(auth0Hash)
38
36
  .then((freshIdentity: IIdentity) => {
39
- // Use the cached org ID and story ID if it exists
40
- const orgId = SessionService.getCachedOrgId() || null;
41
- const storyId = SessionService.getCachedStoryId() || null;
42
-
43
- SessionService.getAccessData(freshIdentity.idToken, baseUrl, false, orgId)
37
+ SessionService.getAccessData(freshIdentity.idToken, baseUrl)
44
38
  .then((freshAccess: any) => {
45
39
  this.props.login(freshIdentity);
46
- this.props.setAccessData(freshAccess);
47
- SessionService.buildFreshSession(freshIdentity, orgId, storyId);
48
- onAuthenticated(storyId, orgId);
40
+ this.props.cacheAccessData(freshAccess);
41
+ SessionService.buildFreshSession(freshIdentity, freshAccess);
42
+ onAuthenticated();
49
43
  })
50
44
  .catch((e) => {
51
45
  AuthService.login();
@@ -70,7 +64,7 @@ const mapDispatchToProps = (dispatch) => {
70
64
  return bindActionCreators(
71
65
  {
72
66
  login,
73
- setAccessData
67
+ cacheAccessData
74
68
  },
75
69
  dispatch
76
70
  );
@@ -12,7 +12,7 @@ interface IButtonGroupOption {
12
12
  }
13
13
 
14
14
  interface IButtonGroupFieldProps {
15
- label?: string;
15
+ label?: any;
16
16
  width?: string | number;
17
17
  value: string | boolean;
18
18
  options: IButtonGroupOption[];
@@ -4,7 +4,7 @@ import { IToolTipConfig } from '../Tooltip';
4
4
  import { ICON_CHECK } from '../../constants/icons';
5
5
 
6
6
  interface ICheckboxFieldProps {
7
- label?: string;
7
+ label?: any;
8
8
  value: boolean;
9
9
  width?: string | number;
10
10
  tooltip?: IToolTipConfig | string;
@@ -1,11 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import FieldWrapper from '../field-wrapper/FieldWrapper';
3
3
  import { IToolTipConfig } from '../Tooltip';
4
- import { SketchPicker } from 'react-color';
4
+ import { SketchPicker } from '@imposium-hub/react-color';
5
5
 
6
6
  interface IColorFieldProps {
7
7
  buttons?: any;
8
- label?: string;
8
+ label?: any;
9
9
  placeholder?: string;
10
10
  readOnly?: boolean;
11
11
  value: string;
@@ -29,7 +29,7 @@ class ColorField extends React.PureComponent<IColorFieldProps, IColorFieldState>
29
29
 
30
30
  private picker: any;
31
31
 
32
- private transparentBg = `url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==") left center`;
32
+ private transparentBg = `url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADBJREFUOE9jPHPmzH8GPMDY2BifNAPjqAHDIgz+//+PNx2cPXsWfzoYNYCBceiHAQD1OVMJc/dYeAAAAABJRU5ErkJggg==") left center`;
33
33
 
34
34
  constructor(props) {
35
35
  super(props);
@@ -19,6 +19,8 @@ const ContextMenu = ({
19
19
  }) => {
20
20
  const contextMenuEl = useRef(null);
21
21
  const [isVisible, setVisible] = useState(false);
22
+ const [top, setTop] = useState('');
23
+ const [left, setLeft] = useState('');
22
24
  const [clientPosition, setClientPosition] = useState(null);
23
25
 
24
26
  const showMenu = (e) => {
@@ -107,8 +109,8 @@ const ContextMenu = ({
107
109
  if (windowInnerHeight < clientY + elemHeight) newClientY = clientY - elemHeight;
108
110
  if (windowInnerWidth < clientX + elemWidth) newClientX = clientX - elemWidth;
109
111
 
110
- contextMenuEl.current.style.top = `${newClientY + 2}px`;
111
- contextMenuEl.current.style.left = `${newClientX + 2}px`;
112
+ setTop(`${newClientY + 2}px`);
113
+ setLeft(`${newClientX + 2}px`);
112
114
 
113
115
  if (onShow) onShow();
114
116
  }
@@ -118,15 +120,18 @@ const ContextMenu = ({
118
120
  React.cloneElement(child, { id })
119
121
  );
120
122
 
121
- const ContextComponent = () => (
122
- <div
123
- className={`contextmenu`}
124
- ref={contextMenuEl}
125
- onMouseLeave={handleMouseLeave}
126
- {...attributes}>
127
- {childrenWithProps}
128
- </div>
129
- );
123
+ const ContextComponent = () => {
124
+ return (
125
+ <div
126
+ className={`contextmenu`}
127
+ ref={contextMenuEl}
128
+ style={{ top, left }}
129
+ onMouseLeave={handleMouseLeave}
130
+ {...attributes}>
131
+ {childrenWithProps}
132
+ </div>
133
+ );
134
+ };
130
135
 
131
136
  const PortalContextComponent = () =>
132
137
  ReactDOM.createPortal(<ContextComponent />, document.querySelector(appendTo));
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import { ICON_CLIPBOARD } from '../../constants/icons';
3
+ import Button from '../button/Button';
4
+ import { compositions as copy } from '../../constants/copy';
5
+
6
+ interface ICopyPropIdButtonProps {
7
+ copyPropId: string;
8
+ onNotification?(e): void;
9
+ onError?(e): void;
10
+ }
11
+
12
+ class CopyPropIdButton extends React.PureComponent<ICopyPropIdButtonProps, undefined> {
13
+ private clickHandler = () => this.copyPropId();
14
+
15
+ private copyPropId() {
16
+ const { onNotification, onError, copyPropId } = this.props;
17
+ navigator.clipboard.writeText(copyPropId).then(
18
+ () => {
19
+ if (onNotification) {
20
+ onNotification(`Property ID copied to clipboard.`);
21
+ }
22
+ },
23
+ () => {
24
+ if (onError) {
25
+ onError('Error copying property ID to clipboard.');
26
+ }
27
+ }
28
+ );
29
+ }
30
+
31
+ public render() {
32
+ return (
33
+ <Button
34
+ tooltip={copy.tooltipPropId}
35
+ onClick={this.clickHandler}
36
+ size='small'
37
+ style='subtle'>
38
+ {ICON_CLIPBOARD}
39
+ </Button>
40
+ );
41
+ }
42
+ }
43
+
44
+ export default CopyPropIdButton;