@imposium-hub/components 2.2.44-1 → 2.2.44-3

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 (196) hide show
  1. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  2. package/dist/cjs/components/anchor-field/AnchorField.d.ts +1 -1
  3. package/dist/cjs/components/assets/AssetsTableGlobalCell.d.ts +6 -0
  4. package/dist/cjs/components/assets/AssetsTableGlobalCell.js +33 -0
  5. package/dist/cjs/components/assets/AssetsTableGlobalCell.js.map +1 -0
  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 +1 -1
  9. package/dist/cjs/components/assets/AssetsTableRateCell.js +9 -3
  10. package/dist/cjs/components/assets/AssetsTableRateCell.js.map +1 -1
  11. package/dist/cjs/components/assets/AssetsUploadMenu.js +162 -33
  12. package/dist/cjs/components/assets/AssetsUploadMenu.js.map +1 -1
  13. package/dist/cjs/components/assets/FontAssetPreview.d.ts +1 -1
  14. package/dist/cjs/components/button/Button.d.ts +1 -1
  15. package/dist/cjs/components/button/Button.stories.d.ts +6 -5
  16. package/dist/cjs/components/button-group-field/ButtonGroupField.stories.d.ts +2 -1
  17. package/dist/cjs/components/button-menu/ButtonMenu.d.ts +2 -2
  18. package/dist/cjs/components/button-menu/ButtonMenu.stories.d.ts +2 -1
  19. package/dist/cjs/components/button-menu/ButtonMenuItem.d.ts +1 -1
  20. package/dist/cjs/components/card/Card.stories.d.ts +2 -1
  21. package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +1 -1
  22. package/dist/cjs/components/checkbox-field/CheckboxField.stories.d.ts +2 -1
  23. package/dist/cjs/components/color-field/ColorField.d.ts +1 -1
  24. package/dist/cjs/components/color-field/ColorField.js +2 -2
  25. package/dist/cjs/components/color-field/ColorField.js.map +1 -1
  26. package/dist/cjs/components/color-field/ColorFiled.stories.d.ts +2 -1
  27. package/dist/cjs/components/compositions/TextLayer.d.ts +1 -1
  28. package/dist/cjs/components/context-menu/AnimateComponent.d.ts +2 -1
  29. package/dist/cjs/components/context-menu/ContextMenu.d.ts +2 -1
  30. package/dist/cjs/components/context-menu/ContextMenuItem.d.ts +2 -1
  31. package/dist/cjs/components/context-menu/ContextMenuTrigger.d.ts +2 -1
  32. package/dist/cjs/components/context-menu/SubMenu.d.ts +2 -1
  33. package/dist/cjs/components/controlled-list/ControlledList.d.ts +2 -2
  34. package/dist/cjs/components/controlled-list/ControlledList.stories.d.ts +2 -1
  35. package/dist/cjs/components/data-table/DataTable.js +2 -2
  36. package/dist/cjs/components/data-table/DataTable.js.map +1 -1
  37. package/dist/cjs/components/determinate-loader/DeterminateLoader.stories.d.ts +3 -3
  38. package/dist/cjs/components/dropdown/Dropdown.d.ts +1 -1
  39. package/dist/cjs/components/dropdown/dropdown.stories.d.ts +1 -1
  40. package/dist/cjs/components/field-wrapper/FieldWrapper.d.ts +2 -2
  41. package/dist/cjs/components/field-wrapper/FieldWrapper.stories.d.ts +2 -1
  42. package/dist/cjs/components/font-picker/FontPicker.d.ts +1 -1
  43. package/dist/cjs/components/h-rule/HRule.d.ts +2 -1
  44. package/dist/cjs/components/h-rule/HRule.stories.d.ts +3 -2
  45. package/dist/cjs/components/list-field/ListField.d.ts +1 -1
  46. package/dist/cjs/components/list-field/ListField.stories.d.ts +2 -1
  47. package/dist/cjs/components/log-viewer/LogViewer.d.ts +1 -1
  48. package/dist/cjs/components/media-variable-field/MediaVariableField.d.ts +1 -1
  49. package/dist/cjs/components/modal/Modal.d.ts +1 -1
  50. package/dist/cjs/components/modal/Modal.stories.d.ts +2 -1
  51. package/dist/cjs/components/number-field/NumberField.d.ts +1 -1
  52. package/dist/cjs/components/number-field/NumberField.stories.d.ts +2 -1
  53. package/dist/cjs/components/players/AudioPlayer.d.ts +1 -1
  54. package/dist/cjs/components/players/AudioPreview.d.ts +1 -1
  55. package/dist/cjs/components/players/ImagePlayer.d.ts +1 -1
  56. package/dist/cjs/components/players/ImagePreview.d.ts +1 -1
  57. package/dist/cjs/components/players/ImageSequencePlayer.d.ts +1 -1
  58. package/dist/cjs/components/players/TemplatePlayer.d.ts +1 -1
  59. package/dist/cjs/components/players/VideoPreview.d.ts +1 -1
  60. package/dist/cjs/components/publish-wizard/PublishWizard.d.ts +3 -3
  61. package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
  62. package/dist/cjs/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
  63. package/dist/cjs/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
  64. package/dist/cjs/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
  65. package/dist/cjs/components/section/Section.d.ts +2 -1
  66. package/dist/cjs/components/section/Section.stories.d.ts +3 -2
  67. package/dist/cjs/components/select-field/SelectField.d.ts +1 -1
  68. package/dist/cjs/components/select-field/SelectField.stories.d.ts +2 -1
  69. package/dist/cjs/components/shortcut-menu/ShortcutMenu.stories.d.ts +1 -1
  70. package/dist/cjs/components/slider-field/SliderField.d.ts +1 -1
  71. package/dist/cjs/components/slider-field/SliderField.stories.d.ts +2 -1
  72. package/dist/cjs/components/smpte-field/SMPTEField.d.ts +1 -1
  73. package/dist/cjs/components/tabs/Tabs.stories.d.ts +1 -1
  74. package/dist/cjs/components/text-area-field/TextAreaField.d.ts +1 -1
  75. package/dist/cjs/components/text-area-field/TextAreaField.stories.d.ts +2 -1
  76. package/dist/cjs/components/text-field/TextField.d.ts +1 -1
  77. package/dist/cjs/components/text-field/TextField.stories.d.ts +2 -1
  78. package/dist/cjs/constants/copy.d.ts +1 -0
  79. package/dist/cjs/constants/copy.js +4 -3
  80. package/dist/cjs/constants/copy.js.map +1 -1
  81. package/dist/cjs/constants/icons.d.ts +71 -70
  82. package/dist/cjs/index.d.ts +3 -2
  83. package/dist/cjs/index.js +3 -2
  84. package/dist/cjs/index.js.map +1 -1
  85. package/dist/cjs/redux/actions/asset-uploads.d.ts +5 -10
  86. package/dist/cjs/redux/actions/asset-uploads.js +258 -177
  87. package/dist/cjs/redux/actions/asset-uploads.js.map +1 -1
  88. package/dist/cjs/redux/reducers/asset-uploads.js +10 -24
  89. package/dist/cjs/redux/reducers/asset-uploads.js.map +1 -1
  90. package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  91. package/dist/esm/components/anchor-field/AnchorField.d.ts +1 -1
  92. package/dist/esm/components/assets/AssetsTableGlobalCell.d.ts +6 -0
  93. package/dist/esm/components/assets/AssetsTableGlobalCell.js +8 -0
  94. package/dist/esm/components/assets/AssetsTableGlobalCell.js.map +1 -0
  95. package/dist/esm/components/assets/AssetsTableNameCell.js +2 -1
  96. package/dist/esm/components/assets/AssetsTableNameCell.js.map +1 -1
  97. package/dist/esm/components/assets/AssetsTablePreviewCell.d.ts +1 -1
  98. package/dist/esm/components/assets/AssetsTableRateCell.js +9 -3
  99. package/dist/esm/components/assets/AssetsTableRateCell.js.map +1 -1
  100. package/dist/esm/components/assets/AssetsUploadMenu.js +144 -33
  101. package/dist/esm/components/assets/AssetsUploadMenu.js.map +1 -1
  102. package/dist/esm/components/assets/FontAssetPreview.d.ts +1 -1
  103. package/dist/esm/components/button/Button.d.ts +1 -1
  104. package/dist/esm/components/button/Button.stories.d.ts +6 -5
  105. package/dist/esm/components/button-group-field/ButtonGroupField.stories.d.ts +2 -1
  106. package/dist/esm/components/button-menu/ButtonMenu.d.ts +2 -2
  107. package/dist/esm/components/button-menu/ButtonMenu.stories.d.ts +2 -1
  108. package/dist/esm/components/button-menu/ButtonMenuItem.d.ts +1 -1
  109. package/dist/esm/components/card/Card.stories.d.ts +2 -1
  110. package/dist/esm/components/checkbox-field/CheckboxField.d.ts +1 -1
  111. package/dist/esm/components/checkbox-field/CheckboxField.stories.d.ts +2 -1
  112. package/dist/esm/components/color-field/ColorField.d.ts +1 -1
  113. package/dist/esm/components/color-field/ColorField.js +2 -2
  114. package/dist/esm/components/color-field/ColorField.js.map +1 -1
  115. package/dist/esm/components/color-field/ColorFiled.stories.d.ts +2 -1
  116. package/dist/esm/components/compositions/TextLayer.d.ts +1 -1
  117. package/dist/esm/components/context-menu/AnimateComponent.d.ts +2 -1
  118. package/dist/esm/components/context-menu/ContextMenu.d.ts +2 -1
  119. package/dist/esm/components/context-menu/ContextMenuItem.d.ts +2 -1
  120. package/dist/esm/components/context-menu/ContextMenuTrigger.d.ts +2 -1
  121. package/dist/esm/components/context-menu/SubMenu.d.ts +2 -1
  122. package/dist/esm/components/controlled-list/ControlledList.d.ts +2 -2
  123. package/dist/esm/components/controlled-list/ControlledList.stories.d.ts +2 -1
  124. package/dist/esm/components/data-table/DataTable.js +2 -2
  125. package/dist/esm/components/data-table/DataTable.js.map +1 -1
  126. package/dist/esm/components/determinate-loader/DeterminateLoader.stories.d.ts +3 -3
  127. package/dist/esm/components/dropdown/Dropdown.d.ts +1 -1
  128. package/dist/esm/components/dropdown/dropdown.stories.d.ts +1 -1
  129. package/dist/esm/components/field-wrapper/FieldWrapper.d.ts +2 -2
  130. package/dist/esm/components/field-wrapper/FieldWrapper.stories.d.ts +2 -1
  131. package/dist/esm/components/font-picker/FontPicker.d.ts +1 -1
  132. package/dist/esm/components/h-rule/HRule.d.ts +2 -1
  133. package/dist/esm/components/h-rule/HRule.stories.d.ts +3 -2
  134. package/dist/esm/components/list-field/ListField.d.ts +1 -1
  135. package/dist/esm/components/list-field/ListField.stories.d.ts +2 -1
  136. package/dist/esm/components/log-viewer/LogViewer.d.ts +1 -1
  137. package/dist/esm/components/media-variable-field/MediaVariableField.d.ts +1 -1
  138. package/dist/esm/components/modal/Modal.d.ts +1 -1
  139. package/dist/esm/components/modal/Modal.stories.d.ts +2 -1
  140. package/dist/esm/components/number-field/NumberField.d.ts +1 -1
  141. package/dist/esm/components/number-field/NumberField.stories.d.ts +2 -1
  142. package/dist/esm/components/players/AudioPlayer.d.ts +1 -1
  143. package/dist/esm/components/players/AudioPreview.d.ts +1 -1
  144. package/dist/esm/components/players/ImagePlayer.d.ts +1 -1
  145. package/dist/esm/components/players/ImagePreview.d.ts +1 -1
  146. package/dist/esm/components/players/ImageSequencePlayer.d.ts +1 -1
  147. package/dist/esm/components/players/TemplatePlayer.d.ts +1 -1
  148. package/dist/esm/components/players/VideoPreview.d.ts +1 -1
  149. package/dist/esm/components/publish-wizard/PublishWizard.d.ts +3 -3
  150. package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
  151. package/dist/esm/components/publish-wizard/publish/APIIntegration.d.ts +1 -1
  152. package/dist/esm/components/publish-wizard/publish/HubSpotFlow.d.ts +1 -1
  153. package/dist/esm/components/publish-wizard/publish/WebpageHosted.d.ts +2 -2
  154. package/dist/esm/components/section/Section.d.ts +2 -1
  155. package/dist/esm/components/section/Section.stories.d.ts +3 -2
  156. package/dist/esm/components/select-field/SelectField.d.ts +1 -1
  157. package/dist/esm/components/select-field/SelectField.stories.d.ts +2 -1
  158. package/dist/esm/components/shortcut-menu/ShortcutMenu.stories.d.ts +1 -1
  159. package/dist/esm/components/slider-field/SliderField.d.ts +1 -1
  160. package/dist/esm/components/slider-field/SliderField.stories.d.ts +2 -1
  161. package/dist/esm/components/smpte-field/SMPTEField.d.ts +1 -1
  162. package/dist/esm/components/tabs/Tabs.stories.d.ts +1 -1
  163. package/dist/esm/components/text-area-field/TextAreaField.d.ts +1 -1
  164. package/dist/esm/components/text-area-field/TextAreaField.stories.d.ts +2 -1
  165. package/dist/esm/components/text-field/TextField.d.ts +1 -1
  166. package/dist/esm/components/text-field/TextField.stories.d.ts +2 -1
  167. package/dist/esm/constants/copy.d.ts +1 -0
  168. package/dist/esm/constants/copy.js +4 -3
  169. package/dist/esm/constants/copy.js.map +1 -1
  170. package/dist/esm/constants/icons.d.ts +71 -70
  171. package/dist/esm/index.d.ts +3 -2
  172. package/dist/esm/index.js +3 -2
  173. package/dist/esm/index.js.map +1 -1
  174. package/dist/esm/redux/actions/asset-uploads.d.ts +5 -10
  175. package/dist/esm/redux/actions/asset-uploads.js +221 -162
  176. package/dist/esm/redux/actions/asset-uploads.js.map +1 -1
  177. package/dist/esm/redux/reducers/asset-uploads.js +15 -47
  178. package/dist/esm/redux/reducers/asset-uploads.js.map +1 -1
  179. package/dist/esm/utils/assets.d.ts +1 -0
  180. package/dist/styles.css +90 -2
  181. package/dist/styles.less +172 -73
  182. package/less/components/assets.less +154 -63
  183. package/less/components/data-table.less +17 -11
  184. package/less/components/story-previewer.less +1 -0
  185. package/package.json +4 -4
  186. package/src/components/assets/AssetsTableGlobalCell.tsx +15 -0
  187. package/src/components/assets/AssetsTableNameCell.tsx +2 -1
  188. package/src/components/assets/AssetsTableRateCell.tsx +11 -4
  189. package/src/components/assets/AssetsUploadMenu.tsx +282 -97
  190. package/src/components/color-field/ColorField.tsx +2 -2
  191. package/src/components/data-table/DataTable.tsx +2 -2
  192. package/src/components/publish-wizard/PublishWizard.tsx +0 -1
  193. package/src/constants/copy.ts +4 -3
  194. package/src/index.ts +3 -7
  195. package/src/redux/actions/asset-uploads.ts +301 -200
  196. package/src/redux/reducers/asset-uploads.ts +17 -47
@@ -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,182 @@ 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
+
102
+ this.props.updateUploadTags();
103
+ }
104
+
105
+ private deleteManualTag(tag) {
106
+ const { manualTags } = this.props.editor.assetUploads;
107
+ const updatedManualTags = manualTags.filter((t: string) => t !== tag);
108
+ this.uploadsSetting({ manualTags: updatedManualTags });
109
+ }
110
+
111
+ private addManualTag(tag) {
112
+ const { manualTags } = this.props.editor.assetUploads;
113
+ const updatedManualTags = manualTags ? manualTags : [];
114
+ updatedManualTags.push(tag);
115
+ this.uploadsSetting({ manualTags: updatedManualTags });
116
+ }
117
+
118
+ private checkHover(monitor) {
119
+ const isOver = monitor.isOver();
120
+ if (isOver !== this.state.assetOver) {
121
+ this.setState({ assetOver: isOver }, () => this.props.onMenuHover(isOver));
122
+ }
123
+ }
124
+
125
+ private detectOutsideClick = (e: any): void => {
126
+ const { toggleRef } = this.props;
127
+ const { target } = e;
128
+
129
+ const isResizing = target.classList.contains('Resizer') ? true : false;
130
+ const clickInside =
131
+ this.menuRef.current && this.menuRef.current.contains(target) ? true : false;
132
+ const clickOnToggle =
133
+ toggleRef && toggleRef.current && toggleRef.current.contains(target) ? true : false;
134
+
135
+ if (!isResizing && !clickInside && !clickOnToggle) {
136
+ this.cancelRender(true);
137
+ }
138
+ };
139
+
140
+ private cancelRender = (forced: boolean = false): void => {
141
+ const { onOutsideClick } = this.props;
142
+
143
+ window.removeEventListener('mousedown', this.clickHandler);
144
+
145
+ if (forced) {
146
+ onOutsideClick();
147
+ }
148
+ };
149
+
54
150
  public render() {
55
151
  const {
56
- assetUploads: {
57
- uploads,
58
- assignToStory,
59
- tagByFileName,
60
- tagByDelimiter,
61
- delimiter,
62
- tagManually,
63
- manualTags
152
+ assetUploads: { uploads },
153
+ editor: {
154
+ showUploadsMenu,
155
+ assetUploads: {
156
+ tagByDelimiter,
157
+ delimiter,
158
+ assignToStory,
159
+ tagByFileName,
160
+ tagManually,
161
+ manualTags
162
+ }
64
163
  },
65
164
  assetTags
66
165
  } = this.props;
166
+ const disable = uploads.length > 0 ? false : true;
167
+
67
168
  let uploadsListInner;
169
+ const uploading = [];
170
+
68
171
  if (uploads.length > 0) {
69
172
  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>
173
+ const { filename, percent, tags } = u;
174
+
175
+ if (percent === 0) {
176
+ const closeButton = (
177
+ <Button
178
+ key='btn-cancel'
179
+ onClick={() => this.handleCancelAssetUpload(filename)}
180
+ style='subtle'
181
+ size='small'>
182
+ {ICON_TIMES}
183
+ </Button>
76
184
  );
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}
185
+
186
+ const fileTags = tags.map((tag: string) => (
187
+ <Tag
188
+ key={tag}
189
+ copy={tag}
190
+ colorize={AssetsTableTagsPivot.COLORIZE_TAGS}
191
+ />
192
+ ));
193
+ return (
194
+ <div
195
+ className='ongoing-upload'
196
+ key={filename}>
197
+ <div className='ongoing-upload-inner'>
198
+ <input
199
+ className='upload-filename'
200
+ value={filename}
201
+ readOnly
202
+ />
203
+ <div className='tags-column'>{fileTags}</div>
204
+ {closeButton}
205
+ </div>
94
206
  </div>
95
- {loader}
96
- </div>
97
- );
207
+ );
208
+ } else {
209
+ uploading.push(true);
210
+ }
98
211
  });
99
212
  } else {
100
213
  uploadsListInner = <div className='no-ongoing-uploads'>{copy.uploads.noUploads}</div>;
101
214
  }
102
215
 
216
+ if (uploading.length === uploads.length) {
217
+ uploadsListInner = <div className='no-ongoing-uploads'>{copy.uploads.noUploads}</div>;
218
+ }
219
+
103
220
  const delimiterSelector = tagByDelimiter && (
104
221
  <SelectField
105
222
  width='35%'
106
223
  options={DELIMITER_OPTIONS}
107
224
  value={delimiter}
108
- onChange={(c) => this.props.setDelimiter(c)}
225
+ onChange={(c) => {
226
+ this.uploadsSetting({ delimiter: c });
227
+ }}
109
228
  />
110
229
  );
230
+
111
231
  const tagsArray = [...new Set(manualTags)];
232
+
112
233
  const tagsMarkup = tagsArray.map((tag: string) => (
113
234
  <Tag
114
235
  key={tag}
115
236
  copy={tag}
116
237
  colorize={AssetsTableTagsPivot.COLORIZE_TAGS}
117
- removeHandler={() => this.props.deleteManualTag(tag)}
238
+ removeHandler={() => {
239
+ this.deleteManualTag(tag);
240
+ }}
118
241
  />
119
242
  ));
243
+
120
244
  const removeTagsBtn =
121
245
  tagsArray.length > 0 ? (
122
246
  <Button
123
247
  tooltip='Remove All Tags'
124
248
  style='sublte'
125
- onClick={() => this.props.deleteManualTags()}>
249
+ onClick={() => {
250
+ this.uploadsSetting({ manualTags: [] });
251
+ }}>
126
252
  <FontAwesomeIcon icon={faEraser} />
127
253
  </Button>
128
254
  ) : null;
255
+
129
256
  const tagsColumn = tagManually && (
130
257
  <div className='tags-column'>
131
258
  <TextField
@@ -134,46 +261,108 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps> {
134
261
  suggestions={assetTags}
135
262
  label={copy.tags.add}
136
263
  width={AssetsTableTagsPivot.ADD_TAG_INPUT_WIDTH}
137
- doSubmit={(t) => this.props.addManualTag(t)}
264
+ doSubmit={(t) => {
265
+ this.addManualTag(t);
266
+ }}
138
267
  />
139
268
  {tagsMarkup}
140
269
  {removeTagsBtn}
141
270
  </div>
142
271
  );
143
272
 
273
+ const modifier = this.state.assetOver ? 'asset-over' : '';
274
+ const show = this.props.show ? 'show' : '';
275
+ const tableHover = this.props.tableHover ? 'table-hover' : '';
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 className='uploads-menu'>
289
+ <div
290
+ className='uploads-menu'
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={() => {
307
+ this.uploadsSetting({ tagManually: !tagManually });
308
+ }}
309
+ />
310
+ <CheckboxField
311
+ width='50%'
312
+ label={copy.uploads.autoTagFilname}
313
+ value={tagByFileName}
314
+ onChange={() => {
315
+ this.uploadsSetting({ tagByFileName: !tagByFileName });
316
+ }}
317
+ />
318
+ <CheckboxField
319
+ width='50%'
320
+ label={copy.uploads.assignToProjectInput}
321
+ info={copy.uploads.assignToProjectInfo}
322
+ value={!assignToStory}
323
+ onChange={() =>
324
+ this.uploadsSetting({ assignToStory: !assignToStory })
325
+ }
326
+ />
327
+ </div>
328
+ {tagsColumn}
329
+ <div className='uploads-list'>{uploadsListInner}</div>
330
+ <div className='uploads-confirm'>
331
+ <CheckboxField
332
+ label={`Don't show again`}
333
+ value={!showUploadsMenu}
334
+ onChange={() =>
335
+ this.props.updateEditorConfig({
336
+ showUploadsMenu: !showUploadsMenu
337
+ })
338
+ }
339
+ />
340
+ <Button
341
+ key='cancel-upload'
342
+ onClick={() => this.cancelUploadHandler(disable)}
343
+ customStyles={{
344
+ color: 'black'
345
+ }}
346
+ style='bold'
347
+ color='secondary'
348
+ width='60px'
349
+ size='small'>
350
+ Cancel
351
+ </Button>
352
+ <Button
353
+ key='upload-file'
354
+ disabled={disable}
355
+ onClick={() => this.uploadFileHandler()}
356
+ style='bold'
357
+ color='primary'
358
+ width='80px'
359
+ size='small'>
360
+ Upload {ICON_UPLOAD}
361
+ </Button>
362
+ </div>
363
+ </div>
364
+ </div>
365
+ </AssetsTableDropzone>
177
366
  );
178
367
  }
179
368
  }
@@ -181,15 +370,10 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps> {
181
370
  const mapDispatchToProps = (dispatch): any => {
182
371
  return bindActionCreators(
183
372
  {
184
- toggleAssignToStory,
185
- toggleTagFileName,
186
373
  cancelAssetUpload,
187
- toggleTagDelimiter,
188
- setDelimiter,
189
- toggleManualTagging,
190
- addManualTag,
191
- deleteManualTag,
192
- deleteManualTags
374
+ cancelNonUploadedAssets,
375
+ uploadingAsset,
376
+ updateUploadTags
193
377
  },
194
378
  dispatch
195
379
  );
@@ -198,7 +382,8 @@ const mapDispatchToProps = (dispatch): any => {
198
382
  const mapStateToProps = (state): any => {
199
383
  return {
200
384
  assetUploads: state.assetUploads,
201
- assetTags: state.assetTags
385
+ assetTags: state.assetTags,
386
+ editor: state.editor
202
387
  };
203
388
  };
204
389
 
@@ -1,7 +1,7 @@
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;
@@ -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);
@@ -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
  ));
@@ -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;
@@ -1,6 +1,7 @@
1
1
  export const assets = {
2
2
  tooltipFilter: 'Filter by Asset type',
3
3
  previewNotAvailable: 'Preview Not Available for this Asset Type',
4
+ dropAsset: 'Drop file(s) here.',
4
5
  iconTypes: {
5
6
  filter: 'Filter By Type',
6
7
  lut: 'LUT',
@@ -17,15 +18,15 @@ export const assets = {
17
18
  after_effects: 'After Effects'
18
19
  },
19
20
  uploads: {
20
- noUploads: 'There are currently no assets uploading...',
21
+ noUploads: 'No files selected, drag and drop files here to begin.',
21
22
  preparePhase: 'Preparing asset...',
22
23
  autoTagFilname: 'Tag by file name',
23
24
  autoTagDelimiter: 'Tag by Delimiter',
24
25
  delimiterOptions: 'Delimiter Options',
25
26
  manualTagging: 'Tag Manually',
26
- assignToProjectInput: 'Assign to Project',
27
+ assignToProjectInput: 'Make Global',
27
28
  assignToProjectInfo:
28
- 'If selected, any assets uploaded will only be available to use with the currently selected project.',
29
+ 'If selected, any assets uploaded will be available to use with all projects on the current organization.',
29
30
  uploadButton: 'Upload',
30
31
  cancelButton: 'Cancel'
31
32
  },
package/src/index.ts CHANGED
@@ -46,6 +46,7 @@ import AssetsTableTagsFilter from './components/assets/AssetsTableTagsFilter';
46
46
  import AssetsTableTagsPivot from './components/assets/AssetsTableTagsPivot';
47
47
  import AssetsTableComplexTagCell from './components/assets/AssetsTableComplexTagCell';
48
48
  import AssetsTableTypeCell from './components/assets/AssetsTableTypeCell';
49
+ import AssetsTableGlobalCell from './components/assets/AssetsTableGlobalCell';
49
50
  import AssetsTableStatusCell from './components/assets/AssetsTableStatusCell';
50
51
  import AssetsTableTypeFilter from './components/assets/AssetsTableTypeFilter';
51
52
  import AssetsTypeIcon from './components/assets/AssetsTypeIcon';
@@ -103,12 +104,7 @@ import {
103
104
  updateAssetStory
104
105
  } from './redux/actions/asset-list';
105
106
  import { getAssetTagList, addAssetTagToList } from './redux/actions/asset-tags';
106
- import {
107
- cancelAssetUpload,
108
- toggleTagFileName,
109
- uploadAssets,
110
- replaceAsset
111
- } from './redux/actions/asset-uploads';
107
+ import { cancelAssetUpload, uploadAssets, replaceAsset } from './redux/actions/asset-uploads';
112
108
  import { selectAsset, deselectAsset, resetSelection } from './redux/actions/selected-assets';
113
109
  import assetFilters from './redux/reducers/asset-filters';
114
110
  import assetList from './redux/reducers/asset-list';
@@ -216,6 +212,7 @@ export {
216
212
  AssetsTableSelectCell,
217
213
  AssetsTableTypeFilter,
218
214
  AssetsTableTypeCell,
215
+ AssetsTableGlobalCell,
219
216
  AssetsTableStatusCell,
220
217
  AssetsTableNameFilter,
221
218
  AssetsTableNameCell,
@@ -251,7 +248,6 @@ export {
251
248
  updateAssetName,
252
249
  updateAssetData,
253
250
  doAssetTableHydration,
254
- toggleTagFileName,
255
251
  uploadAssets,
256
252
  replaceAsset,
257
253
  selectAsset,