@imposium-hub/components 2.2.46 → 2.3.1

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 (213) hide show
  1. package/dist/cjs/Util.js +3 -0
  2. package/dist/cjs/Util.js.map +1 -1
  3. package/dist/cjs/components/Tooltip.d.ts +2 -2
  4. package/dist/cjs/components/Tooltip.js +7 -4
  5. package/dist/cjs/components/Tooltip.js.map +1 -1
  6. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  7. package/dist/cjs/components/anchor-field/AnchorField.d.ts +1 -1
  8. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
  9. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js +243 -0
  10. package/dist/cjs/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
  11. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
  12. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js +255 -0
  13. package/dist/cjs/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
  14. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
  15. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js +243 -0
  16. package/dist/cjs/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
  17. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
  18. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js +251 -0
  19. package/dist/cjs/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
  20. package/dist/cjs/components/assets/AssetField.js +2 -2
  21. package/dist/cjs/components/assets/AssetField.js.map +1 -1
  22. package/dist/cjs/components/assets/AssetsTableGlobalCell.js +1 -1
  23. package/dist/cjs/components/assets/AssetsTableGlobalCell.js.map +1 -1
  24. package/dist/cjs/components/assets/AssetsTableNameCell.js +1 -2
  25. package/dist/cjs/components/assets/AssetsTableNameCell.js.map +1 -1
  26. package/dist/cjs/components/assets/AssetsTableRateCell.js +3 -9
  27. package/dist/cjs/components/assets/AssetsTableRateCell.js.map +1 -1
  28. package/dist/cjs/components/assets/AssetsTableTypeFilter.js +2 -2
  29. package/dist/cjs/components/assets/AssetsTableTypeFilter.js.map +1 -1
  30. package/dist/cjs/components/assets/AssetsUploadMenu.js +33 -157
  31. package/dist/cjs/components/assets/AssetsUploadMenu.js.map +1 -1
  32. package/dist/cjs/components/button-group-field/ButtonGroupField.d.ts +1 -1
  33. package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +1 -1
  34. package/dist/cjs/components/color-field/ColorField.d.ts +1 -1
  35. package/dist/cjs/components/color-field/ColorField.js +2 -2
  36. package/dist/cjs/components/color-field/ColorField.js.map +1 -1
  37. package/dist/cjs/components/context-menu/ContextMenu.js +4 -8
  38. package/dist/cjs/components/context-menu/ContextMenu.js.map +1 -1
  39. package/dist/cjs/components/data-table/DataTable.js +2 -2
  40. package/dist/cjs/components/data-table/DataTable.js.map +1 -1
  41. package/dist/cjs/components/dropdown/{Dropdown.stories.js → dropdown.stories.js} +1 -1
  42. package/dist/cjs/components/dropdown/{Dropdown.stories.js.map → dropdown.stories.js.map} +1 -1
  43. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
  44. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js +91 -0
  45. package/dist/cjs/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
  46. package/dist/cjs/components/header/Header_BACKUP_73021.d.ts +33 -0
  47. package/dist/cjs/components/header/Header_BACKUP_73021.js +393 -0
  48. package/dist/cjs/components/header/Header_BACKUP_73021.js.map +1 -0
  49. package/dist/cjs/components/header/Header_BASE_73021.d.ts +29 -0
  50. package/dist/cjs/components/header/Header_BASE_73021.js +376 -0
  51. package/dist/cjs/components/header/Header_BASE_73021.js.map +1 -0
  52. package/dist/cjs/components/header/Header_LOCAL_73021.d.ts +33 -0
  53. package/dist/cjs/components/header/Header_LOCAL_73021.js +382 -0
  54. package/dist/cjs/components/header/Header_LOCAL_73021.js.map +1 -0
  55. package/dist/cjs/components/header/Header_REMOTE_73021.d.ts +30 -0
  56. package/dist/cjs/components/header/Header_REMOTE_73021.js +386 -0
  57. package/dist/cjs/components/header/Header_REMOTE_73021.js.map +1 -0
  58. package/dist/cjs/components/list-field/ListField.d.ts +1 -1
  59. package/dist/cjs/components/number-field/NumberField.d.ts +1 -1
  60. package/dist/cjs/components/publish-wizard/PublishWizard.js +0 -4
  61. package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
  62. package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js +5 -28
  63. package/dist/cjs/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
  64. package/dist/cjs/components/select-field/SelectField.d.ts +1 -1
  65. package/dist/cjs/components/select-field/SelectField.js +0 -4
  66. package/dist/cjs/components/select-field/SelectField.js.map +1 -1
  67. package/dist/cjs/components/slider-field/SliderField.d.ts +1 -1
  68. package/dist/cjs/components/smpte-field/SMPTEField.d.ts +1 -1
  69. package/dist/cjs/components/story-previewer/StoryPreviewer.js +2 -7
  70. package/dist/cjs/components/story-previewer/StoryPreviewer.js.map +1 -1
  71. package/dist/cjs/components/text-area-field/TextAreaField.d.ts +1 -1
  72. package/dist/cjs/components/text-field/TextField.d.ts +1 -1
  73. package/dist/cjs/constants/copy.d.ts +0 -2
  74. package/dist/cjs/constants/copy.js +3 -5
  75. package/dist/cjs/constants/copy.js.map +1 -1
  76. package/dist/cjs/index.d.ts +2 -4
  77. package/dist/cjs/index.js +3 -6
  78. package/dist/cjs/index.js.map +1 -1
  79. package/dist/cjs/redux/actions/asset-uploads.d.ts +10 -5
  80. package/dist/cjs/redux/actions/asset-uploads.js +182 -262
  81. package/dist/cjs/redux/actions/asset-uploads.js.map +1 -1
  82. package/dist/cjs/redux/reducers/asset-uploads.js +24 -8
  83. package/dist/cjs/redux/reducers/asset-uploads.js.map +1 -1
  84. package/dist/esm/Util.js +3 -0
  85. package/dist/esm/Util.js.map +1 -1
  86. package/dist/esm/components/Tooltip.d.ts +2 -2
  87. package/dist/esm/components/Tooltip.js +4 -4
  88. package/dist/esm/components/Tooltip.js.map +1 -1
  89. package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +1 -1
  90. package/dist/esm/components/anchor-field/AnchorField.d.ts +1 -1
  91. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.d.ts +27 -0
  92. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js +194 -0
  93. package/dist/esm/components/app-wrapper/AppWrapper_BACKUP_73190.js.map +1 -0
  94. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.d.ts +28 -0
  95. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js +208 -0
  96. package/dist/esm/components/app-wrapper/AppWrapper_BASE_73190.js.map +1 -0
  97. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.d.ts +27 -0
  98. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js +194 -0
  99. package/dist/esm/components/app-wrapper/AppWrapper_LOCAL_73190.js.map +1 -0
  100. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.d.ts +28 -0
  101. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js +204 -0
  102. package/dist/esm/components/app-wrapper/AppWrapper_REMOTE_73190.js.map +1 -0
  103. package/dist/esm/components/assets/AssetField.js +2 -2
  104. package/dist/esm/components/assets/AssetField.js.map +1 -1
  105. package/dist/esm/components/assets/AssetsTableGlobalCell.js +1 -1
  106. package/dist/esm/components/assets/AssetsTableGlobalCell.js.map +1 -1
  107. package/dist/esm/components/assets/AssetsTableNameCell.js +1 -2
  108. package/dist/esm/components/assets/AssetsTableNameCell.js.map +1 -1
  109. package/dist/esm/components/assets/AssetsTableRateCell.js +3 -9
  110. package/dist/esm/components/assets/AssetsTableRateCell.js.map +1 -1
  111. package/dist/esm/components/assets/AssetsTableTypeFilter.js +2 -2
  112. package/dist/esm/components/assets/AssetsTableTypeFilter.js.map +1 -1
  113. package/dist/esm/components/assets/AssetsUploadMenu.js +33 -138
  114. package/dist/esm/components/assets/AssetsUploadMenu.js.map +1 -1
  115. package/dist/esm/components/button-group-field/ButtonGroupField.d.ts +1 -1
  116. package/dist/esm/components/checkbox-field/CheckboxField.d.ts +1 -1
  117. package/dist/esm/components/color-field/ColorField.d.ts +1 -1
  118. package/dist/esm/components/color-field/ColorField.js +2 -2
  119. package/dist/esm/components/color-field/ColorField.js.map +1 -1
  120. package/dist/esm/components/context-menu/ContextMenu.js +3 -7
  121. package/dist/esm/components/context-menu/ContextMenu.js.map +1 -1
  122. package/dist/esm/components/data-table/DataTable.js +2 -2
  123. package/dist/esm/components/data-table/DataTable.js.map +1 -1
  124. package/dist/esm/components/dropdown/{Dropdown.stories.js → dropdown.stories.js} +1 -1
  125. package/dist/esm/components/dropdown/{Dropdown.stories.js.map → dropdown.stories.js.map} +1 -1
  126. package/dist/esm/components/error-message-preview/ErrorMessagePreview.d.ts +15 -0
  127. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js +35 -0
  128. package/dist/esm/components/error-message-preview/ErrorMessagePreview.js.map +1 -0
  129. package/dist/esm/components/header/Header_BACKUP_73021.d.ts +33 -0
  130. package/dist/esm/components/header/Header_BACKUP_73021.js +336 -0
  131. package/dist/esm/components/header/Header_BACKUP_73021.js.map +1 -0
  132. package/dist/esm/components/header/Header_BASE_73021.d.ts +29 -0
  133. package/dist/esm/components/header/Header_BASE_73021.js +322 -0
  134. package/dist/esm/components/header/Header_BASE_73021.js.map +1 -0
  135. package/dist/esm/components/header/Header_LOCAL_73021.d.ts +33 -0
  136. package/dist/esm/components/header/Header_LOCAL_73021.js +328 -0
  137. package/dist/esm/components/header/Header_LOCAL_73021.js.map +1 -0
  138. package/dist/esm/components/header/Header_REMOTE_73021.d.ts +30 -0
  139. package/dist/esm/components/header/Header_REMOTE_73021.js +329 -0
  140. package/dist/esm/components/header/Header_REMOTE_73021.js.map +1 -0
  141. package/dist/esm/components/list-field/ListField.d.ts +1 -1
  142. package/dist/esm/components/number-field/NumberField.d.ts +1 -1
  143. package/dist/esm/components/publish-wizard/PublishWizard.js +0 -4
  144. package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
  145. package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js +5 -28
  146. package/dist/esm/components/publish-wizard/publish/EmailWorkflow.js.map +1 -1
  147. package/dist/esm/components/select-field/SelectField.d.ts +1 -1
  148. package/dist/esm/components/select-field/SelectField.js +0 -3
  149. package/dist/esm/components/select-field/SelectField.js.map +1 -1
  150. package/dist/esm/components/slider-field/SliderField.d.ts +1 -1
  151. package/dist/esm/components/smpte-field/SMPTEField.d.ts +1 -1
  152. package/dist/esm/components/story-previewer/StoryPreviewer.js +2 -7
  153. package/dist/esm/components/story-previewer/StoryPreviewer.js.map +1 -1
  154. package/dist/esm/components/text-area-field/TextAreaField.d.ts +1 -1
  155. package/dist/esm/components/text-field/TextField.d.ts +1 -1
  156. package/dist/esm/constants/copy.d.ts +0 -2
  157. package/dist/esm/constants/copy.js +3 -5
  158. package/dist/esm/constants/copy.js.map +1 -1
  159. package/dist/esm/index.d.ts +2 -4
  160. package/dist/esm/index.js +2 -4
  161. package/dist/esm/index.js.map +1 -1
  162. package/dist/esm/redux/actions/asset-uploads.d.ts +10 -5
  163. package/dist/esm/redux/actions/asset-uploads.js +167 -224
  164. package/dist/esm/redux/actions/asset-uploads.js.map +1 -1
  165. package/dist/esm/redux/reducers/asset-uploads.js +48 -11
  166. package/dist/esm/redux/reducers/asset-uploads.js.map +1 -1
  167. package/dist/styles.css +2 -151
  168. package/dist/styles.less +74 -280
  169. package/less/components/assets.less +63 -237
  170. package/less/components/button.less +1 -7
  171. package/less/components/data-table.less +11 -17
  172. package/less/components/publish-wizard.less +0 -20
  173. package/less/components/story-previewer.less +0 -1
  174. package/package.json +6 -6
  175. package/src/Util.ts +4 -0
  176. package/src/components/Tooltip.tsx +9 -9
  177. package/src/components/advanced-number-field/AdvancedNumberField.tsx +1 -1
  178. package/src/components/anchor-field/AnchorField.tsx +1 -1
  179. package/src/components/assets/AssetField.tsx +8 -3
  180. package/src/components/assets/AssetsTableNameCell.tsx +1 -2
  181. package/src/components/assets/AssetsTableRateCell.tsx +4 -11
  182. package/src/components/assets/AssetsTableTypeFilter.tsx +8 -7
  183. package/src/components/assets/AssetsUploadMenu.tsx +97 -275
  184. package/src/components/button-group-field/ButtonGroupField.tsx +1 -1
  185. package/src/components/checkbox-field/CheckboxField.tsx +1 -1
  186. package/src/components/color-field/ColorField.tsx +3 -3
  187. package/src/components/context-menu/ContextMenu.tsx +11 -16
  188. package/src/components/data-table/DataTable.tsx +2 -2
  189. package/src/components/list-field/ListField.tsx +1 -1
  190. package/src/components/number-field/NumberField.tsx +1 -1
  191. package/src/components/publish-wizard/PublishWizard.tsx +8 -15
  192. package/src/components/publish-wizard/publish/EmailWorkflow.tsx +10 -42
  193. package/src/components/select-field/SelectField.tsx +1 -4
  194. package/src/components/slider-field/SliderField.tsx +1 -1
  195. package/src/components/smpte-field/SMPTEField.tsx +1 -1
  196. package/src/components/story-previewer/StoryPreviewer.tsx +6 -10
  197. package/src/components/text-area-field/TextAreaField.tsx +1 -1
  198. package/src/components/text-field/TextField.tsx +1 -1
  199. package/src/constants/copy.ts +3 -5
  200. package/src/index.ts +8 -6
  201. package/src/redux/actions/asset-uploads.ts +205 -305
  202. package/src/redux/reducers/asset-uploads.ts +48 -13
  203. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.d.ts +0 -12
  204. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.js +0 -75
  205. package/dist/cjs/components/copy-prop-id-button/CopyPropIdButton.js.map +0 -1
  206. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.d.ts +0 -12
  207. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.js +0 -24
  208. package/dist/esm/components/copy-prop-id-button/CopyPropIdButton.js.map +0 -1
  209. package/src/components/assets/AssetsTableGlobalCell.tsx +0 -15
  210. package/src/components/copy-prop-id-button/CopyPropIdButton.tsx +0 -44
  211. /package/dist/cjs/components/dropdown/{Dropdown.stories.d.ts → dropdown.stories.d.ts} +0 -0
  212. /package/dist/esm/components/dropdown/{Dropdown.stories.d.ts → dropdown.stories.d.ts} +0 -0
  213. /package/src/components/dropdown/{Dropdown.stories.tsx → dropdown.stories.tsx} +0 -0
@@ -28,7 +28,12 @@ interface IAssetFieldProps {
28
28
  tooltip: string;
29
29
  onChange: (asset: any) => any;
30
30
  updateFilters: (filters: any) => any;
31
- uploadAssets: (api: any, files: File[], bindToOverlay?: (f: any) => any) => any;
31
+ uploadAssets: (
32
+ api: any,
33
+ files: File[],
34
+ storyId?: string,
35
+ bindToOverlay?: (f: any) => any
36
+ ) => any;
32
37
  accepts?: string | string[];
33
38
  labelPosition?: string;
34
39
  onError?: (message: string) => void;
@@ -103,14 +108,14 @@ class AssetField extends React.PureComponent<IAssetFieldProps, IAssetFieldState>
103
108
  }
104
109
 
105
110
  private onFileDrop = (i: any, monitor: any): void => {
106
- const { accepts, api } = this.props;
111
+ const { accepts, storyId, api } = this.props;
107
112
  if (monitor) {
108
113
  const { files } = monitor.getItem();
109
114
 
110
115
  if (mimetypeConformsToOverlay(accepts, files[0])) {
111
116
  this.setState({ assetUploading: true });
112
117
 
113
- this.props.uploadAssets(api, [files[0]], (f: any) => {
118
+ this.props.uploadAssets(api, [files[0]], storyId, (f: any) => {
114
119
  this.setState({ assetName: f.name, error: false }, () => {
115
120
  this.setState({ assetUploading: false });
116
121
  this.props.onChange(f);
@@ -6,7 +6,6 @@ import { connect } from 'react-redux';
6
6
  import { bindActionCreators } from 'redux';
7
7
  import { IImposiumAPI } from '../../services/API';
8
8
  import { DeterminateLoader } from '../determinate-loader/DeterminateLoader';
9
- import { assets as copy } from '../../constants/copy';
10
9
 
11
10
  interface IAssetsTableNameCell {
12
11
  cell: any;
@@ -51,7 +50,7 @@ const AssetsTableNameCell: React.FC<IAssetsTableNameCell> = (props: IAssetsTable
51
50
  text={name}
52
51
  />
53
52
  ) : (
54
- <span>{copy.uploads.preparePhase}</span>
53
+ <span>Preparing asset...</span>
55
54
  );
56
55
  return loader;
57
56
  } else {
@@ -1,27 +1,20 @@
1
1
  import * as React from 'react';
2
- import { ASSET_TYPES } from '../../constants/assets';
3
2
 
4
3
  interface IAssetsTableRateCell {
5
4
  cell: any;
6
5
  }
6
+
7
7
  const AssetsTableRateCell: React.FC<IAssetsTableRateCell> = (props: IAssetsTableRateCell) => {
8
8
  const {
9
9
  cell: {
10
10
  row: {
11
- original: { type, data, rate }
11
+ original: { rate }
12
12
  }
13
13
  }
14
14
  } = props;
15
15
 
16
- let framerate = rate !== null && rate !== undefined ? rate : '';
17
-
18
- if (type === ASSET_TYPES.VIDEO_COMPOSITION && data) {
19
- const { rate: frame_rate } = JSON.parse(data);
20
- framerate = frame_rate;
21
- }
22
-
23
- if (framerate !== null && framerate !== undefined && framerate !== '') {
24
- return <div className='asset-rate-cell'>{Number(framerate).toFixed(2)}</div>;
16
+ if (rate !== null && rate !== undefined) {
17
+ return <div className='asset-rate-cell'>{Number(rate).toFixed(2)}</div>;
25
18
  } else {
26
19
  return <div className='asset-rate-cell'></div>;
27
20
  }
@@ -62,14 +62,15 @@ class AssetsTableTypeFilter extends React.PureComponent<
62
62
  buttonRef={this.typeFilterRef}
63
63
  onClick={() => this.setState({ openMenu: !openMenu })}>
64
64
  <AssetsTypeIcon type={type || 'filter'} />
65
+
66
+ <ImposiumDropdown
67
+ show={openMenu}
68
+ position='bottomleft'
69
+ toggleRef={this.typeFilterRef}
70
+ onOutsideClick={() => this.setState({ openMenu: false })}>
71
+ {filterButtons}
72
+ </ImposiumDropdown>
65
73
  </Button>
66
- <ImposiumDropdown
67
- show={openMenu}
68
- position='bottomleft'
69
- toggleRef={this.typeFilterRef}
70
- onOutsideClick={() => this.setState({ openMenu: false })}>
71
- {filterButtons}
72
- </ImposiumDropdown>
73
74
  </div>
74
75
  );
75
76
  };
@@ -1,11 +1,17 @@
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';
4
5
  import {
6
+ toggleAssignToStory,
5
7
  cancelAssetUpload,
6
- uploadingAsset,
7
- updateUploadTags,
8
- cancelNonUploadedAssets
8
+ toggleTagFileName,
9
+ setDelimiter,
10
+ toggleTagDelimiter,
11
+ toggleManualTagging,
12
+ addManualTag,
13
+ deleteManualTag,
14
+ deleteManualTags
9
15
  } from '../../redux/actions/asset-uploads';
10
16
  import { bindActionCreators } from 'redux';
11
17
  import { connect } from 'react-redux';
@@ -18,58 +24,26 @@ import AssetsTableTagsPivot from './AssetsTableTagsPivot';
18
24
  import Tag from '../tag/Tag';
19
25
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
20
26
  import { faEraser } from '@fortawesome/free-solid-svg-icons';
21
- import { ICON_TIMES, ICON_UPLOAD } from '../../constants/icons';
22
- import AssetsTableDropzone from './AssetsTableDropzone';
23
27
 
24
28
  interface IAssetsUploadMenuProps {
25
- editor: any;
26
29
  assetUploads: any;
27
30
  assetTags: string[];
28
31
  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;
29
41
  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;
40
42
  }
41
43
 
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
-
44
+ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps> {
51
45
  constructor(props: IAssetsUploadMenuProps) {
52
46
  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);
73
47
  }
74
48
 
75
49
  private handleCancelAssetUpload(fileName: string) {
@@ -77,180 +51,81 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps, IAsse
77
51
  this.props.cancelAssetUpload(fileName, api);
78
52
  }
79
53
 
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
-
149
54
  public render() {
150
55
  const {
151
- assetUploads: { uploads },
152
- editor: {
153
- showUploadsMenu,
154
- assetUploads: {
155
- tagByDelimiter,
156
- delimiter,
157
- assignToStory,
158
- tagByFileName,
159
- tagManually,
160
- manualTags
161
- }
56
+ assetUploads: {
57
+ uploads,
58
+ assignToStory,
59
+ tagByFileName,
60
+ tagByDelimiter,
61
+ delimiter,
62
+ tagManually,
63
+ manualTags
162
64
  },
163
65
  assetTags
164
66
  } = this.props;
165
- const disable = uploads.length > 0 ? false : true;
166
-
167
67
  let uploadsListInner;
168
- const uploading = [];
169
68
  if (uploads.length > 0) {
170
69
  uploadsListInner = uploads.map((u: any) => {
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>
70
+ const { filename, percent } = u;
71
+ const loader =
72
+ percent < 100 ? (
73
+ <DeterminateLoader progress={u.percent} />
74
+ ) : (
75
+ <span>{copy.uploads.preparePhase}</span>
182
76
  );
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>
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}
204
94
  </div>
205
- );
206
- } else {
207
- uploading.push(true);
208
- }
95
+ {loader}
96
+ </div>
97
+ );
209
98
  });
210
99
  } else {
211
100
  uploadsListInner = <div className='no-ongoing-uploads'>{copy.uploads.noUploads}</div>;
212
101
  }
213
102
 
214
- if (uploading.length === uploads.length) {
215
- uploadsListInner = <div className='no-ongoing-uploads'>{copy.uploads.noUploads}</div>;
216
- }
217
-
218
103
  const delimiterSelector = tagByDelimiter && (
219
104
  <SelectField
220
105
  width='35%'
221
106
  options={DELIMITER_OPTIONS}
222
107
  value={delimiter}
223
- onChange={(c) => {
224
- this.uploadsSetting({ delimiter: c });
225
- }}
108
+ onChange={(c) => this.props.setDelimiter(c)}
226
109
  />
227
110
  );
228
-
229
111
  const tagsArray = [...new Set(manualTags)];
230
-
231
112
  const tagsMarkup = tagsArray.map((tag: string) => (
232
113
  <Tag
233
114
  key={tag}
234
115
  copy={tag}
235
116
  colorize={AssetsTableTagsPivot.COLORIZE_TAGS}
236
- removeHandler={() => {
237
- this.deleteManualTag(tag);
238
- }}
117
+ removeHandler={() => this.props.deleteManualTag(tag)}
239
118
  />
240
119
  ));
241
-
242
120
  const removeTagsBtn =
243
121
  tagsArray.length > 0 ? (
244
122
  <Button
245
123
  tooltip='Remove All Tags'
246
124
  style='sublte'
247
- onClick={() => {
248
- this.uploadsSetting({ manualTags: [] });
249
- }}>
125
+ onClick={() => this.props.deleteManualTags()}>
250
126
  <FontAwesomeIcon icon={faEraser} />
251
127
  </Button>
252
128
  ) : null;
253
-
254
129
  const tagsColumn = tagManually && (
255
130
  <div className='tags-column'>
256
131
  <TextField
@@ -259,103 +134,46 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps, IAsse
259
134
  suggestions={assetTags}
260
135
  label={copy.tags.add}
261
136
  width={AssetsTableTagsPivot.ADD_TAG_INPUT_WIDTH}
262
- doSubmit={(t) => {
263
- this.addManualTag(t);
264
- }}
137
+ doSubmit={(t) => this.props.addManualTag(t)}
265
138
  />
266
139
  {tagsMarkup}
267
140
  {removeTagsBtn}
268
141
  </div>
269
142
  );
270
143
 
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
-
276
144
  return (
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>
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
+ />
287
173
  </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>
174
+ {tagsColumn}
175
+ <div className='uploads-list'>{uploadsListInner}</div>
176
+ </div>
359
177
  );
360
178
  }
361
179
  }
@@ -363,10 +181,15 @@ class AssetsUploadMenu extends React.PureComponent<IAssetsUploadMenuProps, IAsse
363
181
  const mapDispatchToProps = (dispatch): any => {
364
182
  return bindActionCreators(
365
183
  {
184
+ toggleAssignToStory,
185
+ toggleTagFileName,
366
186
  cancelAssetUpload,
367
- cancelNonUploadedAssets,
368
- uploadingAsset,
369
- updateUploadTags
187
+ toggleTagDelimiter,
188
+ setDelimiter,
189
+ toggleManualTagging,
190
+ addManualTag,
191
+ deleteManualTag,
192
+ deleteManualTags
370
193
  },
371
194
  dispatch
372
195
  );
@@ -375,8 +198,7 @@ const mapDispatchToProps = (dispatch): any => {
375
198
  const mapStateToProps = (state): any => {
376
199
  return {
377
200
  assetUploads: state.assetUploads,
378
- assetTags: state.assetTags,
379
- editor: state.editor
201
+ assetTags: state.assetTags
380
202
  };
381
203
  };
382
204
 
@@ -12,7 +12,7 @@ interface IButtonGroupOption {
12
12
  }
13
13
 
14
14
  interface IButtonGroupFieldProps {
15
- label?: any;
15
+ label?: string;
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?: any;
7
+ label?: string;
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 '@imposium-hub/react-color';
4
+ import { SketchPicker } from 'react-color';
5
5
 
6
6
  interface IColorFieldProps {
7
7
  buttons?: any;
8
- label?: any;
8
+ label?: string;
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/9hAAAAAXNSR0IArs4c6QAAADBJREFUOE9jPHPmzH8GPMDY2BifNAPjqAHDIgz+//+PNx2cPXsWfzoYNYCBceiHAQD1OVMJc/dYeAAAAABJRU5ErkJggg==") left center`;
32
+ private transparentBg = `url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==") left center`;
33
33
 
34
34
  constructor(props) {
35
35
  super(props);
@@ -19,8 +19,6 @@ 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('');
24
22
  const [clientPosition, setClientPosition] = useState(null);
25
23
 
26
24
  const showMenu = (e) => {
@@ -109,8 +107,8 @@ const ContextMenu = ({
109
107
  if (windowInnerHeight < clientY + elemHeight) newClientY = clientY - elemHeight;
110
108
  if (windowInnerWidth < clientX + elemWidth) newClientX = clientX - elemWidth;
111
109
 
112
- setTop(`${newClientY + 2}px`);
113
- setLeft(`${newClientX + 2}px`);
110
+ contextMenuEl.current.style.top = `${newClientY + 2}px`;
111
+ contextMenuEl.current.style.left = `${newClientX + 2}px`;
114
112
 
115
113
  if (onShow) onShow();
116
114
  }
@@ -120,18 +118,15 @@ const ContextMenu = ({
120
118
  React.cloneElement(child, { id })
121
119
  );
122
120
 
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
- };
121
+ const ContextComponent = () => (
122
+ <div
123
+ className={`contextmenu`}
124
+ ref={contextMenuEl}
125
+ onMouseLeave={handleMouseLeave}
126
+ {...attributes}>
127
+ {childrenWithProps}
128
+ </div>
129
+ );
135
130
 
136
131
  const PortalContextComponent = () =>
137
132
  ReactDOM.createPortal(<ContextComponent />, document.querySelector(appendTo));