@imposium-hub/components 2.3.5-0 → 2.3.6

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 (240) hide show
  1. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.d.ts +2 -2
  2. package/dist/cjs/components/anchor-field/AnchorField.d.ts +2 -2
  3. package/dist/cjs/components/assets/AssetField.js +2 -2
  4. package/dist/cjs/components/assets/AssetField.js.map +1 -1
  5. package/dist/cjs/components/assets/AssetsTableDateCell.d.ts +6 -1
  6. package/dist/cjs/components/assets/AssetsTableNameCell.js +2 -1
  7. package/dist/cjs/components/assets/AssetsTableNameCell.js.map +1 -1
  8. package/dist/cjs/components/assets/AssetsTablePreviewCell.d.ts +16 -1
  9. package/dist/cjs/components/assets/AssetsTableRateCell.js.map +1 -1
  10. package/dist/cjs/components/assets/AssetsTableStatusCell.d.ts +5 -1
  11. package/dist/cjs/components/assets/AssetsTableTagsCell.d.ts +6 -1
  12. package/dist/cjs/components/assets/AssetsTableTypeCell.d.ts +5 -1
  13. package/dist/cjs/components/assets/AssetsTypeIcon.d.ts +5 -1
  14. package/dist/cjs/components/assets/AssetsUploadMenu.js +157 -33
  15. package/dist/cjs/components/assets/AssetsUploadMenu.js.map +1 -1
  16. package/dist/cjs/components/assets/FontAssetPreview.d.ts +1 -1
  17. package/dist/cjs/components/button/Button.d.ts +1 -1
  18. package/dist/cjs/components/button/Button.stories.d.ts +6 -5
  19. package/dist/cjs/components/button-group-field/ButtonGroupField.d.ts +1 -1
  20. package/dist/cjs/components/button-group-field/ButtonGroupField.stories.d.ts +2 -1
  21. package/dist/cjs/components/button-menu/ButtonMenu.d.ts +2 -2
  22. package/dist/cjs/components/button-menu/ButtonMenu.stories.d.ts +2 -1
  23. package/dist/cjs/components/button-menu/ButtonMenuItem.d.ts +1 -1
  24. package/dist/cjs/components/card/Card.stories.d.ts +2 -1
  25. package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +2 -2
  26. package/dist/cjs/components/checkbox-field/CheckboxField.stories.d.ts +2 -1
  27. package/dist/cjs/components/color-field/ColorField.d.ts +2 -2
  28. package/dist/cjs/components/color-field/ColorField.js +2 -2
  29. package/dist/cjs/components/color-field/ColorField.js.map +1 -1
  30. package/dist/cjs/components/color-field/ColorFiled.stories.d.ts +2 -1
  31. package/dist/cjs/components/compositions/TextLayer.d.ts +1 -1
  32. package/dist/cjs/components/context-menu/AnimateComponent.d.ts +2 -1
  33. package/dist/cjs/components/context-menu/ContextMenu.d.ts +2 -1
  34. package/dist/cjs/components/context-menu/ContextMenuItem.d.ts +2 -1
  35. package/dist/cjs/components/context-menu/ContextMenuTrigger.d.ts +2 -1
  36. package/dist/cjs/components/context-menu/SubMenu.d.ts +2 -1
  37. package/dist/cjs/components/controlled-list/ControlledList.d.ts +2 -2
  38. package/dist/cjs/components/controlled-list/ControlledList.stories.d.ts +2 -1
  39. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.d.ts +12 -0
  40. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.js +75 -0
  41. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.js.map +1 -0
  42. package/dist/cjs/components/data-table/DataTable.js +2 -2
  43. package/dist/cjs/components/data-table/DataTable.js.map +1 -1
  44. package/dist/cjs/components/determinate-loader/DeterminateLoader.stories.d.ts +3 -3
  45. package/dist/cjs/components/dropdown/Dropdown.d.ts +1 -1
  46. package/dist/cjs/components/dropdown/Dropdown.stories.d.ts +1 -1
  47. package/dist/cjs/components/field-wrapper/FieldWrapper.d.ts +2 -2
  48. package/dist/cjs/components/field-wrapper/FieldWrapper.stories.d.ts +2 -1
  49. package/dist/cjs/components/font-picker/FontPicker.d.ts +1 -1
  50. package/dist/cjs/components/h-rule/HRule.d.ts +2 -1
  51. package/dist/cjs/components/h-rule/HRule.stories.d.ts +3 -2
  52. package/dist/cjs/components/list-field/ListField.d.ts +2 -2
  53. package/dist/cjs/components/list-field/ListField.stories.d.ts +2 -1
  54. package/dist/cjs/components/log-viewer/LogViewer.d.ts +1 -1
  55. package/dist/cjs/components/media-variable-field/MediaVariableField.d.ts +1 -1
  56. package/dist/cjs/components/modal/Modal.d.ts +1 -1
  57. package/dist/cjs/components/modal/Modal.stories.d.ts +2 -1
  58. package/dist/cjs/components/number-field/NumberField.d.ts +2 -2
  59. package/dist/cjs/components/number-field/NumberField.stories.d.ts +2 -1
  60. package/dist/cjs/components/players/AudioPlayer.d.ts +1 -1
  61. package/dist/cjs/components/players/AudioPreview.d.ts +1 -1
  62. package/dist/cjs/components/players/ImagePlayer.d.ts +1 -1
  63. package/dist/cjs/components/players/ImagePreview.d.ts +1 -1
  64. package/dist/cjs/components/players/ImageSequencePlayer.d.ts +1 -1
  65. package/dist/cjs/components/players/TemplatePlayer.d.ts +1 -1
  66. package/dist/cjs/components/players/VideoPreview.d.ts +1 -1
  67. package/dist/cjs/components/publish-wizard/PublishWizard.d.ts +3 -3
  68. package/dist/cjs/components/publish-wizard/PublishWizard.js +4 -0
  69. package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
  70. package/dist/cjs/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
  71. package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js +28 -5
  72. package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
  73. package/dist/cjs/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
  74. package/dist/cjs/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
  75. package/dist/cjs/components/section/Section.d.ts +2 -1
  76. package/dist/cjs/components/section/Section.stories.d.ts +3 -2
  77. package/dist/cjs/components/select-field/SelectField.d.ts +2 -2
  78. package/dist/cjs/components/select-field/SelectField.stories.d.ts +2 -1
  79. package/dist/cjs/components/shortcut-menu/ShortcutMenu.stories.d.ts +1 -1
  80. package/dist/cjs/components/slider-field/SliderField.d.ts +2 -2
  81. package/dist/cjs/components/slider-field/SliderField.stories.d.ts +2 -1
  82. package/dist/cjs/components/smpte-field/SMPTEField.d.ts +2 -2
  83. package/dist/cjs/components/story-previewer/StoryPreviewer.js +7 -2
  84. package/dist/cjs/components/story-previewer/StoryPreviewer.js.map +1 -1
  85. package/dist/cjs/components/tabs/Tabs.stories.d.ts +1 -1
  86. package/dist/cjs/components/tag/Tag.d.ts +9 -1
  87. package/dist/cjs/components/text-area-field/TextAreaField.d.ts +2 -2
  88. package/dist/cjs/components/text-area-field/TextAreaField.stories.d.ts +2 -1
  89. package/dist/cjs/components/text-field/TextField.d.ts +2 -2
  90. package/dist/cjs/components/text-field/TextField.stories.d.ts +2 -1
  91. package/dist/cjs/constants/copy.d.ts +2 -0
  92. package/dist/cjs/constants/copy.js +5 -3
  93. package/dist/cjs/constants/copy.js.map +1 -1
  94. package/dist/cjs/constants/icons.d.ts +71 -70
  95. package/dist/cjs/index.d.ts +4 -2
  96. package/dist/cjs/index.js +6 -3
  97. package/dist/cjs/index.js.map +1 -1
  98. package/dist/cjs/redux/actions/asset-uploads.d.ts +5 -10
  99. package/dist/cjs/redux/actions/asset-uploads.js +262 -182
  100. package/dist/cjs/redux/actions/asset-uploads.js.map +1 -1
  101. package/dist/cjs/redux/reducers/asset-uploads.js +8 -24
  102. package/dist/cjs/redux/reducers/asset-uploads.js.map +1 -1
  103. package/dist/cjs/utils/assets.d.ts +1 -0
  104. package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +2 -2
  105. package/dist/esm/components/anchor-field/AnchorField.d.ts +2 -2
  106. package/dist/esm/components/assets/AssetField.js +2 -2
  107. package/dist/esm/components/assets/AssetField.js.map +1 -1
  108. package/dist/esm/components/assets/AssetsTableDateCell.d.ts +6 -1
  109. package/dist/esm/components/assets/AssetsTableNameCell.js +2 -1
  110. package/dist/esm/components/assets/AssetsTableNameCell.js.map +1 -1
  111. package/dist/esm/components/assets/AssetsTablePreviewCell.d.ts +16 -1
  112. package/dist/esm/components/assets/AssetsTableRateCell.js.map +1 -1
  113. package/dist/esm/components/assets/AssetsTableStatusCell.d.ts +5 -1
  114. package/dist/esm/components/assets/AssetsTableTagsCell.d.ts +6 -1
  115. package/dist/esm/components/assets/AssetsTableTypeCell.d.ts +5 -1
  116. package/dist/esm/components/assets/AssetsTypeIcon.d.ts +5 -1
  117. package/dist/esm/components/assets/AssetsUploadMenu.js +138 -33
  118. package/dist/esm/components/assets/AssetsUploadMenu.js.map +1 -1
  119. package/dist/esm/components/assets/FontAssetPreview.d.ts +1 -1
  120. package/dist/esm/components/button/Button.d.ts +1 -1
  121. package/dist/esm/components/button/Button.stories.d.ts +6 -5
  122. package/dist/esm/components/button-group-field/ButtonGroupField.d.ts +1 -1
  123. package/dist/esm/components/button-group-field/ButtonGroupField.stories.d.ts +2 -1
  124. package/dist/esm/components/button-menu/ButtonMenu.d.ts +2 -2
  125. package/dist/esm/components/button-menu/ButtonMenu.stories.d.ts +2 -1
  126. package/dist/esm/components/button-menu/ButtonMenuItem.d.ts +1 -1
  127. package/dist/esm/components/card/Card.stories.d.ts +2 -1
  128. package/dist/esm/components/checkbox-field/CheckboxField.d.ts +2 -2
  129. package/dist/esm/components/checkbox-field/CheckboxField.stories.d.ts +2 -1
  130. package/dist/esm/components/color-field/ColorField.d.ts +2 -2
  131. package/dist/esm/components/color-field/ColorField.js +2 -2
  132. package/dist/esm/components/color-field/ColorField.js.map +1 -1
  133. package/dist/esm/components/color-field/ColorFiled.stories.d.ts +2 -1
  134. package/dist/esm/components/compositions/TextLayer.d.ts +1 -1
  135. package/dist/esm/components/context-menu/AnimateComponent.d.ts +2 -1
  136. package/dist/esm/components/context-menu/ContextMenu.d.ts +2 -1
  137. package/dist/esm/components/context-menu/ContextMenuItem.d.ts +2 -1
  138. package/dist/esm/components/context-menu/ContextMenuTrigger.d.ts +2 -1
  139. package/dist/esm/components/context-menu/SubMenu.d.ts +2 -1
  140. package/dist/esm/components/controlled-list/ControlledList.d.ts +2 -2
  141. package/dist/esm/components/controlled-list/ControlledList.stories.d.ts +2 -1
  142. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.d.ts +12 -0
  143. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.js +24 -0
  144. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.js.map +1 -0
  145. package/dist/esm/components/data-table/DataTable.js +2 -2
  146. package/dist/esm/components/data-table/DataTable.js.map +1 -1
  147. package/dist/esm/components/determinate-loader/DeterminateLoader.stories.d.ts +3 -3
  148. package/dist/esm/components/dropdown/Dropdown.d.ts +1 -1
  149. package/dist/esm/components/dropdown/Dropdown.stories.d.ts +1 -1
  150. package/dist/esm/components/field-wrapper/FieldWrapper.d.ts +2 -2
  151. package/dist/esm/components/field-wrapper/FieldWrapper.stories.d.ts +2 -1
  152. package/dist/esm/components/font-picker/FontPicker.d.ts +1 -1
  153. package/dist/esm/components/h-rule/HRule.d.ts +2 -1
  154. package/dist/esm/components/h-rule/HRule.stories.d.ts +3 -2
  155. package/dist/esm/components/list-field/ListField.d.ts +2 -2
  156. package/dist/esm/components/list-field/ListField.stories.d.ts +2 -1
  157. package/dist/esm/components/log-viewer/LogViewer.d.ts +1 -1
  158. package/dist/esm/components/media-variable-field/MediaVariableField.d.ts +1 -1
  159. package/dist/esm/components/modal/Modal.d.ts +1 -1
  160. package/dist/esm/components/modal/Modal.stories.d.ts +2 -1
  161. package/dist/esm/components/number-field/NumberField.d.ts +2 -2
  162. package/dist/esm/components/number-field/NumberField.stories.d.ts +2 -1
  163. package/dist/esm/components/players/AudioPlayer.d.ts +1 -1
  164. package/dist/esm/components/players/AudioPreview.d.ts +1 -1
  165. package/dist/esm/components/players/ImagePlayer.d.ts +1 -1
  166. package/dist/esm/components/players/ImagePreview.d.ts +1 -1
  167. package/dist/esm/components/players/ImageSequencePlayer.d.ts +1 -1
  168. package/dist/esm/components/players/TemplatePlayer.d.ts +1 -1
  169. package/dist/esm/components/players/VideoPreview.d.ts +1 -1
  170. package/dist/esm/components/publish-wizard/PublishWizard.d.ts +3 -3
  171. package/dist/esm/components/publish-wizard/PublishWizard.js +4 -0
  172. package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
  173. package/dist/esm/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
  174. package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js +28 -5
  175. package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
  176. package/dist/esm/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
  177. package/dist/esm/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
  178. package/dist/esm/components/section/Section.d.ts +2 -1
  179. package/dist/esm/components/section/Section.stories.d.ts +3 -2
  180. package/dist/esm/components/select-field/SelectField.d.ts +2 -2
  181. package/dist/esm/components/select-field/SelectField.stories.d.ts +2 -1
  182. package/dist/esm/components/shortcut-menu/ShortcutMenu.stories.d.ts +1 -1
  183. package/dist/esm/components/slider-field/SliderField.d.ts +2 -2
  184. package/dist/esm/components/slider-field/SliderField.stories.d.ts +2 -1
  185. package/dist/esm/components/smpte-field/SMPTEField.d.ts +2 -2
  186. package/dist/esm/components/story-previewer/StoryPreviewer.js +7 -2
  187. package/dist/esm/components/story-previewer/StoryPreviewer.js.map +1 -1
  188. package/dist/esm/components/tabs/Tabs.stories.d.ts +1 -1
  189. package/dist/esm/components/tag/Tag.d.ts +9 -1
  190. package/dist/esm/components/text-area-field/TextAreaField.d.ts +2 -2
  191. package/dist/esm/components/text-area-field/TextAreaField.stories.d.ts +2 -1
  192. package/dist/esm/components/text-field/TextField.d.ts +2 -2
  193. package/dist/esm/components/text-field/TextField.stories.d.ts +2 -1
  194. package/dist/esm/constants/copy.d.ts +2 -0
  195. package/dist/esm/constants/copy.js +5 -3
  196. package/dist/esm/constants/copy.js.map +1 -1
  197. package/dist/esm/constants/icons.d.ts +71 -70
  198. package/dist/esm/index.d.ts +4 -2
  199. package/dist/esm/index.js +4 -2
  200. package/dist/esm/index.js.map +1 -1
  201. package/dist/esm/redux/actions/asset-uploads.d.ts +5 -10
  202. package/dist/esm/redux/actions/asset-uploads.js +224 -167
  203. package/dist/esm/redux/actions/asset-uploads.js.map +1 -1
  204. package/dist/esm/redux/reducers/asset-uploads.js +11 -48
  205. package/dist/esm/redux/reducers/asset-uploads.js.map +1 -1
  206. package/dist/esm/utils/assets.d.ts +1 -0
  207. package/dist/styles.css +151 -2
  208. package/dist/styles.less +280 -74
  209. package/less/components/assets.less +237 -63
  210. package/less/components/button.less +7 -1
  211. package/less/components/data-table.less +17 -11
  212. package/less/components/publish-wizard.less +20 -0
  213. package/less/components/story-previewer.less +1 -0
  214. package/package.json +5 -5
  215. package/src/components/advanced-number-field/AdvancedNumberField.tsx +1 -1
  216. package/src/components/anchor-field/AnchorField.tsx +1 -1
  217. package/src/components/assets/AssetField.tsx +3 -8
  218. package/src/components/assets/AssetsTableGlobalCell.tsx +15 -0
  219. package/src/components/assets/AssetsTableNameCell.tsx +2 -1
  220. package/src/components/assets/AssetsTableRateCell.tsx +0 -1
  221. package/src/components/assets/AssetsUploadMenu.tsx +275 -97
  222. package/src/components/button-group-field/ButtonGroupField.tsx +1 -1
  223. package/src/components/checkbox-field/CheckboxField.tsx +1 -1
  224. package/src/components/color-field/ColorField.tsx +3 -3
  225. package/src/components/copy-prop-id-button/CopyPropIdButton.tsx +44 -0
  226. package/src/components/data-table/DataTable.tsx +2 -2
  227. package/src/components/list-field/ListField.tsx +1 -1
  228. package/src/components/number-field/NumberField.tsx +1 -1
  229. package/src/components/publish-wizard/PublishWizard.tsx +15 -8
  230. package/src/components/publish-wizard/publish/EmailWorkflow.tsx +42 -10
  231. package/src/components/select-field/SelectField.tsx +1 -1
  232. package/src/components/slider-field/SliderField.tsx +1 -1
  233. package/src/components/smpte-field/SMPTEField.tsx +1 -1
  234. package/src/components/story-previewer/StoryPreviewer.tsx +10 -6
  235. package/src/components/text-area-field/TextAreaField.tsx +1 -1
  236. package/src/components/text-field/TextField.tsx +1 -1
  237. package/src/constants/copy.ts +5 -3
  238. package/src/index.ts +6 -8
  239. package/src/redux/actions/asset-uploads.ts +305 -205
  240. package/src/redux/reducers/asset-uploads.ts +13 -48
@@ -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,26 +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
- toggleAutoTag: (toggle: boolean) => any;
33
- toggleTagFileName: (toggle: boolean) => any;
34
- toggleAssignToStory: (toggle: boolean) => any;
35
- toggleTagDelimiter: (togglle: boolean) => any;
36
- setDelimiter: (delimiter: string) => any;
37
- toggleManualTagging: (togglle: boolean) => any;
38
- addManualTag: (tag: string) => any;
39
- deleteManualTag: (tag: string) => any;
40
- deleteManualTags: () => void;
41
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;
42
40
  }
43
41
 
44
- 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
+
45
51
  constructor(props: IAssetsUploadMenuProps) {
46
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);
47
73
  }
48
74
 
49
75
  private handleCancelAssetUpload(fileName: string) {
@@ -51,81 +77,180 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps> {
51
77
  this.props.cancelAssetUpload(fileName, api);
52
78
  }
53
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
+
54
149
  public render() {
55
150
  const {
56
- assetUploads: {
57
- uploads,
58
- assignToStory,
59
- tagByFileName,
60
- tagByDelimiter,
61
- delimiter,
62
- tagManually,
63
- manualTags
151
+ assetUploads: { uploads },
152
+ editor: {
153
+ showUploadsMenu,
154
+ assetUploads: {
155
+ tagByDelimiter,
156
+ delimiter,
157
+ assignToStory,
158
+ tagByFileName,
159
+ tagManually,
160
+ manualTags
161
+ }
64
162
  },
65
163
  assetTags
66
164
  } = this.props;
165
+ const disable = uploads.length > 0 ? false : true;
166
+
67
167
  let uploadsListInner;
168
+ const uploading = [];
68
169
  if (uploads.length > 0) {
69
170
  uploadsListInner = uploads.map((u: any) => {
70
- const { filename, percent } = u;
71
- const loader =
72
- percent < 100 ? (
73
- <DeterminateLoader progress={u.percent} />
74
- ) : (
75
- <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>
76
182
  );
77
- const closeButton = percent < 100 && (
78
- <Button
79
- key='btn-cancel'
80
- onClick={() => this.handleCancelAssetUpload(filename)}
81
- style='subtle'
82
- size='small'>
83
- {copy.uploads.cancelButton}
84
- </Button>
85
- );
86
-
87
- return (
88
- <div
89
- className='ongoing-upload'
90
- key={filename}>
91
- <div className='ongoing-upload-inner'>
92
- <div className='upload-filename'>{filename}</div>
93
- {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>
94
204
  </div>
95
- {loader}
96
- </div>
97
- );
205
+ );
206
+ } else {
207
+ uploading.push(true);
208
+ }
98
209
  });
99
210
  } else {
100
211
  uploadsListInner = <div className='no-ongoing-uploads'>{copy.uploads.noUploads}</div>;
101
212
  }
102
213
 
214
+ if (uploading.length === uploads.length) {
215
+ uploadsListInner = <div className='no-ongoing-uploads'>{copy.uploads.noUploads}</div>;
216
+ }
217
+
103
218
  const delimiterSelector = tagByDelimiter && (
104
219
  <SelectField
105
220
  width='35%'
106
221
  options={DELIMITER_OPTIONS}
107
222
  value={delimiter}
108
- onChange={(c) => this.props.setDelimiter(c)}
223
+ onChange={(c) => {
224
+ this.uploadsSetting({ delimiter: c });
225
+ }}
109
226
  />
110
227
  );
228
+
111
229
  const tagsArray = [...new Set(manualTags)];
230
+
112
231
  const tagsMarkup = tagsArray.map((tag: string) => (
113
232
  <Tag
114
233
  key={tag}
115
234
  copy={tag}
116
235
  colorize={AssetsTableTagsPivot.COLORIZE_TAGS}
117
- removeHandler={() => this.props.deleteManualTag(tag)}
236
+ removeHandler={() => {
237
+ this.deleteManualTag(tag);
238
+ }}
118
239
  />
119
240
  ));
241
+
120
242
  const removeTagsBtn =
121
243
  tagsArray.length > 0 ? (
122
244
  <Button
123
245
  tooltip='Remove All Tags'
124
246
  style='sublte'
125
- onClick={() => this.props.deleteManualTags()}>
247
+ onClick={() => {
248
+ this.uploadsSetting({ manualTags: [] });
249
+ }}>
126
250
  <FontAwesomeIcon icon={faEraser} />
127
251
  </Button>
128
252
  ) : null;
253
+
129
254
  const tagsColumn = tagManually && (
130
255
  <div className='tags-column'>
131
256
  <TextField
@@ -134,46 +259,103 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps> {
134
259
  suggestions={assetTags}
135
260
  label={copy.tags.add}
136
261
  width={AssetsTableTagsPivot.ADD_TAG_INPUT_WIDTH}
137
- doSubmit={(t) => this.props.addManualTag(t)}
262
+ doSubmit={(t) => {
263
+ this.addManualTag(t);
264
+ }}
138
265
  />
139
266
  {tagsMarkup}
140
267
  {removeTagsBtn}
141
268
  </div>
142
269
  );
143
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
+
144
276
  return (
145
- <div className='uploads-menu'>
146
- <div className='uploads-controls'>
147
- <CheckboxField
148
- width='50%'
149
- label={copy.uploads.autoTagDelimiter}
150
- value={tagByDelimiter}
151
- onChange={() => this.props.toggleTagDelimiter(!tagByDelimiter)}
152
- />
153
- {delimiterSelector}
154
- <CheckboxField
155
- width='50%'
156
- label={copy.uploads.manualTagging}
157
- value={tagManually}
158
- onChange={() => this.props.toggleManualTagging(!tagManually)}
159
- />
160
- <CheckboxField
161
- width='50%'
162
- label={copy.uploads.autoTagFilname}
163
- value={tagByFileName}
164
- onChange={() => this.props.toggleTagFileName(!tagByFileName)}
165
- />
166
- <CheckboxField
167
- width='50%'
168
- label={copy.uploads.assignToProjectInput}
169
- info={copy.uploads.assignToProjectInfo}
170
- value={assignToStory}
171
- onChange={() => this.props.toggleAssignToStory(!assignToStory)}
172
- />
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>
173
287
  </div>
174
- {tagsColumn}
175
- <div className='uploads-list'>{uploadsListInner}</div>
176
- </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
+ />
314
+ <CheckboxField
315
+ width='50%'
316
+ label={copy.uploads.assignToProjectInput}
317
+ info={copy.uploads.assignToProjectInfo}
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
+ }
333
+ />
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>
357
+ </div>
358
+ </AssetsTableDropzone>
177
359
  );
178
360
  }
179
361
  }
@@ -181,15 +363,10 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps> {
181
363
  const mapDispatchToProps = (dispatch): any => {
182
364
  return bindActionCreators(
183
365
  {
184
- toggleAssignToStory,
185
- toggleTagFileName,
186
366
  cancelAssetUpload,
187
- toggleTagDelimiter,
188
- setDelimiter,
189
- toggleManualTagging,
190
- addManualTag,
191
- deleteManualTag,
192
- deleteManualTags
367
+ cancelNonUploadedAssets,
368
+ uploadingAsset,
369
+ updateUploadTags
193
370
  },
194
371
  dispatch
195
372
  );
@@ -198,7 +375,8 @@ const mapDispatchToProps = (dispatch): any => {
198
375
  const mapStateToProps = (state): any => {
199
376
  return {
200
377
  assetUploads: state.assetUploads,
201
- assetTags: state.assetTags
378
+ assetTags: state.assetTags,
379
+ editor: state.editor
202
380
  };
203
381
  };
204
382
 
@@ -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);
@@ -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;
@@ -265,7 +265,7 @@ const DataTable: React.FC<IDataTableProps> = (props: IDataTableProps) => {
265
265
  {...column.getHeaderProps()}
266
266
  className={`ip-table-header ${
267
267
  column.canSort ? 'ip-sortable' : ''
268
- }`}>
268
+ } ${column.pin ? 'pin' : ''}`}>
269
269
  {!searchable && (
270
270
  <div
271
271
  {...toggleProps}
@@ -371,7 +371,7 @@ const DataTable: React.FC<IDataTableProps> = (props: IDataTableProps) => {
371
371
  {...cell.getCellProps()}
372
372
  className={`ip-table-col ${
373
373
  cell.column.overflowVisible ? 'overflow-visible' : ''
374
- }`.trim()}>
374
+ } ${cell.column.pin ? 'pin' : ''}`.trim()}>
375
375
  {cell.render('Cell')}
376
376
  </td>
377
377
  ));
@@ -10,7 +10,7 @@ import { ICON_PLUS } from '../../constants/icons';
10
10
  interface IListFieldProps {
11
11
  buttons?: any;
12
12
  disabled?: boolean;
13
- label?: string;
13
+ label?: any;
14
14
  options: any;
15
15
  placeholder?: string;
16
16
  tooltip?: IToolTipConfig | string;
@@ -4,7 +4,7 @@ import { IToolTipConfig } from '../Tooltip';
4
4
 
5
5
  interface INumberFieldProps {
6
6
  buttons?: any;
7
- label?: string;
7
+ label?: any;
8
8
  placeholder?: string;
9
9
  readOnly?: boolean;
10
10
  value: number;
@@ -25,7 +25,6 @@ import { connect } from 'react-redux';
25
25
  interface IPublishWizardProps {
26
26
  story: any;
27
27
  project: any;
28
- updateEditorConfig(c): void;
29
28
  editor: any;
30
29
  updateScene(d): void;
31
30
  editStory(s): void;
@@ -67,6 +66,7 @@ interface IPublishWizardProps {
67
66
  renderBatch: (batchId: string, postRenderActions?: any) => any;
68
67
  publishData: any;
69
68
  onDeleteBatch?: (batchId: string) => any;
69
+ onBackBtn?: () => void;
70
70
  }
71
71
 
72
72
  export interface ICredential {
@@ -350,13 +350,20 @@ class PublishWizard extends React.PureComponent<IPublishWizardProps, IPublishWiz
350
350
  size={'large'}
351
351
  key='btn-back'
352
352
  onClick={() =>
353
- this.setState({
354
- screenIndex: backIndex,
355
- next: false,
356
- nextStep: false,
357
- error: false,
358
- done: false
359
- })
353
+ this.setState(
354
+ {
355
+ screenIndex: backIndex,
356
+ next: false,
357
+ nextStep: false,
358
+ error: false,
359
+ done: false
360
+ },
361
+ () => {
362
+ if (this.props.onBackBtn) {
363
+ this.props.onBackBtn();
364
+ }
365
+ }
366
+ )
360
367
  }
361
368
  color='primary'>
362
369
  {copy.publish.btnBack}