box-ui-elements 14.0.0 → 14.1.0-beta.11

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 (562) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/dist/explorer.css +1 -1
  3. package/dist/explorer.js +15 -15
  4. package/dist/openwith.css +1 -1
  5. package/dist/openwith.js +7 -7
  6. package/dist/picker.css +1 -1
  7. package/dist/picker.js +12 -12
  8. package/dist/preview.css +1 -1
  9. package/dist/preview.js +13 -13
  10. package/dist/sharing.css +1 -1
  11. package/dist/sharing.js +11 -11
  12. package/dist/sidebar.css +1 -1
  13. package/dist/sidebar.js +13 -13
  14. package/dist/uploader.css +1 -1
  15. package/dist/uploader.js +13 -13
  16. package/es/components/badge/Badge.scss +1 -1
  17. package/es/components/button/Button.js +13 -4
  18. package/es/components/button/Button.js.flow +4 -0
  19. package/es/components/button/Button.js.map +1 -1
  20. package/es/components/button/Button.stories.js +64 -4
  21. package/es/components/button/Button.stories.js.map +1 -1
  22. package/es/components/button-group/ButtonGroup.scss +5 -5
  23. package/es/components/button-group/ButtonGroup.stories.js +1 -1
  24. package/es/components/button-group/ButtonGroup.stories.js.map +1 -1
  25. package/es/components/date-picker/_pikaday.scss +2 -1
  26. package/es/components/draft-js-editor/DraftJSEditor.scss +1 -1
  27. package/es/components/error-mask/ErrorMask.scss +1 -1
  28. package/es/components/flyout/Flyout.scss +1 -1
  29. package/es/components/footer-indicator/FooterIndicator.scss +1 -1
  30. package/es/components/form-elements/draft-js-mention-selector/MentionSelector.scss +10 -1
  31. package/es/components/guide-tooltip/GuideTooltip.js +5 -2
  32. package/es/components/guide-tooltip/GuideTooltip.js.flow +3 -0
  33. package/es/components/guide-tooltip/GuideTooltip.js.map +1 -1
  34. package/es/components/guide-tooltip/GuideTooltip.scss +14 -1
  35. package/es/components/hotkeys/HotkeyHelpModal.scss +1 -1
  36. package/es/components/link/LinkButton.js +6 -2
  37. package/es/components/link/LinkButton.js.map +1 -1
  38. package/es/components/link/LinkPrimaryButton.js.map +1 -1
  39. package/es/components/link/stories/LinkButton.stories.js +12 -1
  40. package/es/components/link/stories/LinkButton.stories.js.map +1 -1
  41. package/es/components/link/stories/LinkPrimaryButton.stories.js +12 -1
  42. package/es/components/link/stories/LinkPrimaryButton.stories.js.map +1 -1
  43. package/es/components/loading-indicator/Crawler.scss +1 -1
  44. package/es/components/modal/Modal.scss +5 -2
  45. package/es/components/modal/ModalDialog.js +1 -1
  46. package/es/components/modal/ModalDialog.js.flow +1 -1
  47. package/es/components/modal/ModalDialog.js.map +1 -1
  48. package/es/components/notification/Notification.js +11 -16
  49. package/es/components/notification/Notification.js.flow +11 -13
  50. package/es/components/notification/Notification.js.map +1 -1
  51. package/es/components/notification/Notification.scss +17 -12
  52. package/es/components/pill-selector-dropdown/PillSelector.scss +1 -1
  53. package/es/components/plain-button/PlainButton.stories.js +32 -1
  54. package/es/components/plain-button/PlainButton.stories.js.map +1 -1
  55. package/es/components/primary-button/PrimaryButton.stories.js +1 -1
  56. package/es/components/primary-button/PrimaryButton.stories.js.map +1 -1
  57. package/es/components/select-field/SelectField.scss +3 -0
  58. package/es/components/selector-dropdown/SelectorDropdown.scss +5 -0
  59. package/es/components/selector-dropdown/SelectorDropdown.stories.js +15 -0
  60. package/es/components/selector-dropdown/SelectorDropdown.stories.js.flow +16 -0
  61. package/es/components/selector-dropdown/SelectorDropdown.stories.js.map +1 -0
  62. package/es/components/tab-view/Tabs.scss +1 -0
  63. package/es/components/text-area/TextArea.js +3 -1
  64. package/es/components/text-area/TextArea.js.flow +4 -0
  65. package/es/components/text-area/TextArea.js.map +1 -1
  66. package/es/components/text-input/TextInput.js +3 -1
  67. package/es/components/text-input/TextInput.js.flow +10 -1
  68. package/es/components/text-input/TextInput.js.map +1 -1
  69. package/es/components/thumbnail-card/ThumbnailCard.scss +1 -1
  70. package/es/components/tooltip/Tooltip.scss +3 -3
  71. package/es/elements/common/messages.js +8 -0
  72. package/es/elements/common/messages.js.flow +10 -0
  73. package/es/elements/common/messages.js.map +1 -1
  74. package/es/elements/common/modal.scss +4 -1
  75. package/es/elements/content-explorer/ShareDialog.scss +2 -2
  76. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js +2 -3
  77. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.flow +3 -2
  78. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.map +1 -1
  79. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.scss +0 -15
  80. package/es/elements/content-sidebar/activity-feed/version/Version.scss +1 -1
  81. package/es/elements/content-sidebar/additional-tabs/AdditionalTabsLoading.scss +1 -1
  82. package/es/elements/content-sidebar/skills/faces/Faces.scss +1 -1
  83. package/es/elements/content-sidebar/skills/keywords/Keywords.scss +1 -1
  84. package/es/elements/content-sidebar/skills/timeline/Timeline.scss +1 -1
  85. package/es/elements/content-sidebar/skills/timeline/Timeslice.scss +1 -1
  86. package/es/elements/content-sidebar/skills/transcript/Transcript.scss +1 -1
  87. package/es/elements/content-sidebar/versions/VersionsItemBadge.scss +1 -1
  88. package/es/elements/content-uploader/ContentUploader.js +11 -9
  89. package/es/elements/content-uploader/ContentUploader.js.flow +10 -7
  90. package/es/elements/content-uploader/ContentUploader.js.map +1 -1
  91. package/es/elements/content-uploader/Footer.scss +5 -0
  92. package/es/elements/content-uploader/ItemAction.js +19 -6
  93. package/es/elements/content-uploader/ItemAction.js.flow +34 -3
  94. package/es/elements/content-uploader/ItemAction.js.map +1 -1
  95. package/es/elements/content-uploader/ItemList.js +5 -4
  96. package/es/elements/content-uploader/ItemList.js.flow +11 -4
  97. package/es/elements/content-uploader/ItemList.js.map +1 -1
  98. package/es/elements/content-uploader/UploadsManager.js +8 -6
  99. package/es/elements/content-uploader/UploadsManager.js.flow +8 -5
  100. package/es/elements/content-uploader/UploadsManager.js.map +1 -1
  101. package/es/elements/content-uploader/actionCellRenderer.js +3 -2
  102. package/es/elements/content-uploader/actionCellRenderer.js.flow +9 -2
  103. package/es/elements/content-uploader/actionCellRenderer.js.map +1 -1
  104. package/es/elements/content-uploader/progressCellRenderer.js +7 -3
  105. package/es/elements/content-uploader/progressCellRenderer.js.flow +6 -3
  106. package/es/elements/content-uploader/progressCellRenderer.js.map +1 -1
  107. package/es/features/collaborator-avatars/CollaboratorList.scss +1 -1
  108. package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js +3 -3
  109. package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js.flow +3 -3
  110. package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js.map +1 -1
  111. package/es/features/content-explorer/content-explorer/ContentExplorer.scss +5 -0
  112. package/es/features/content-explorer/item-list/ItemList.scss +1 -1
  113. package/es/features/left-sidebar/styles/LeftSidebarDropWrapper.scss +1 -1
  114. package/es/features/left-sidebar/styles/LeftSidebarLinkCallout.scss +2 -2
  115. package/es/features/message-preview-content/styles/PreviewErrorNotification.scss +1 -1
  116. package/es/features/metadata-based-view/MetadataBasedItemList.scss +1 -1
  117. package/es/features/metadata-instance-editor/CascadePolicy.scss +2 -2
  118. package/es/features/metadata-instance-editor/CustomInstanceNewField.scss +1 -1
  119. package/es/features/metadata-instance-editor/Instance.scss +1 -1
  120. package/es/features/metadata-instance-editor/TemplateDropdown.scss +4 -4
  121. package/es/features/query-bar/styles/Condition.scss +4 -4
  122. package/es/features/query-bar/styles/QueryBarButtons.scss +1 -1
  123. package/es/features/quick-search/QuickSearch.scss +1 -4
  124. package/es/features/quick-search/QuickSearchMessage.scss +1 -0
  125. package/es/features/security/_mixins.scss +1 -1
  126. package/es/icon/fill/LightningBolt16.js +30 -0
  127. package/es/icon/fill/LightningBolt16.js.flow +28 -0
  128. package/es/icon/fill/LightningBolt16.js.map +1 -0
  129. package/es/icon/fill/LightningBolt16.stories.js +13 -0
  130. package/es/icon/fill/LightningBolt16.stories.js.map +1 -0
  131. package/es/icon/line/GenericCopy16.js +30 -0
  132. package/es/icon/line/GenericCopy16.js.flow +25 -0
  133. package/es/icon/line/GenericCopy16.js.map +1 -0
  134. package/es/icon/line/GenericCopy16.stories.js +13 -0
  135. package/es/icon/line/GenericCopy16.stories.js.map +1 -0
  136. package/es/src/components/button/Button.d.ts +4 -0
  137. package/es/src/components/button/Button.stories.d.ts +4 -0
  138. package/es/src/components/context-menu/__tests__/ContextMenu.stories.test.d.ts +0 -1
  139. package/es/src/components/date-picker/__tests__/DatePicker.stories.test.d.ts +0 -1
  140. package/es/src/components/footer-indicator/__tests__/FooterIndicator.stories.test.d.ts +0 -1
  141. package/es/src/components/guide-tooltip/GuideTooltip.d.ts +3 -1
  142. package/es/src/components/link/LinkButton.d.ts +2 -1
  143. package/es/src/components/link/LinkPrimaryButton.d.ts +2 -4
  144. package/es/src/components/link/stories/LinkButton.stories.d.ts +2 -1
  145. package/es/src/components/link/stories/LinkPrimaryButton.stories.d.ts +1 -0
  146. package/es/src/components/plain-button/PlainButton.stories.d.ts +1 -0
  147. package/es/src/icon/fill/LightningBolt16.d.ts +13 -0
  148. package/es/src/icon/fill/LightningBolt16.stories.d.ts +9 -0
  149. package/es/src/icon/line/GenericCopy16.d.ts +13 -0
  150. package/es/src/icon/line/GenericCopy16.stories.d.ts +9 -0
  151. package/es/src/styles/variables.d.ts +9 -1
  152. package/es/styles/_inputs.scss +1 -1
  153. package/es/styles/_variables.scss +2 -0
  154. package/es/styles/common/_buttons.scss +61 -11
  155. package/es/styles/common/_forms.scss +1 -1
  156. package/es/styles/common/_inline-notifications.scss +3 -1
  157. package/es/styles/common/_pills.scss +1 -1
  158. package/es/styles/constants/_buttons.scss +6 -0
  159. package/es/styles/constants/_layout.scss +3 -1
  160. package/es/styles/constants/_typography.scss +9 -1
  161. package/es/styles/mixins/_buttons.scss +15 -0
  162. package/es/styles/mixins/_overlay.scss +2 -2
  163. package/es/styles/variables.js +17 -1
  164. package/es/styles/variables.js.flow +9 -1
  165. package/es/styles/variables.js.map +1 -1
  166. package/es/utils/createTheme.stories.js +8 -8
  167. package/es/utils/createTheme.stories.js.flow +5 -5
  168. package/es/utils/createTheme.stories.js.map +1 -1
  169. package/i18n/bn-IN.js +2 -0
  170. package/i18n/bn-IN.properties +4 -0
  171. package/i18n/da-DK.js +2 -0
  172. package/i18n/da-DK.properties +4 -0
  173. package/i18n/de-DE.js +2 -0
  174. package/i18n/de-DE.properties +4 -0
  175. package/i18n/en-AU.js +2 -0
  176. package/i18n/en-AU.properties +4 -0
  177. package/i18n/en-CA.js +2 -0
  178. package/i18n/en-CA.properties +4 -0
  179. package/i18n/en-GB.js +2 -0
  180. package/i18n/en-GB.properties +4 -0
  181. package/i18n/en-US.js +2 -0
  182. package/i18n/en-US.properties +4 -0
  183. package/i18n/en-x-pseudo.js +2 -0
  184. package/i18n/es-419.js +2 -0
  185. package/i18n/es-419.properties +4 -0
  186. package/i18n/es-ES.js +2 -0
  187. package/i18n/es-ES.properties +4 -0
  188. package/i18n/fi-FI.js +2 -0
  189. package/i18n/fi-FI.properties +4 -0
  190. package/i18n/fr-CA.js +2 -0
  191. package/i18n/fr-CA.properties +4 -0
  192. package/i18n/fr-FR.js +2 -0
  193. package/i18n/fr-FR.properties +4 -0
  194. package/i18n/hi-IN.js +2 -0
  195. package/i18n/hi-IN.properties +4 -0
  196. package/i18n/it-IT.js +2 -0
  197. package/i18n/it-IT.properties +4 -0
  198. package/i18n/ja-JP.js +5 -3
  199. package/i18n/ja-JP.properties +7 -3
  200. package/i18n/ko-KR.js +2 -0
  201. package/i18n/ko-KR.properties +4 -0
  202. package/i18n/nb-NO.js +2 -0
  203. package/i18n/nb-NO.properties +4 -0
  204. package/i18n/nl-NL.js +2 -0
  205. package/i18n/nl-NL.properties +4 -0
  206. package/i18n/pl-PL.js +2 -0
  207. package/i18n/pl-PL.properties +4 -0
  208. package/i18n/pt-BR.js +2 -0
  209. package/i18n/pt-BR.properties +4 -0
  210. package/i18n/ru-RU.js +2 -0
  211. package/i18n/ru-RU.properties +4 -0
  212. package/i18n/sv-SE.js +2 -0
  213. package/i18n/sv-SE.properties +4 -0
  214. package/i18n/tr-TR.js +2 -0
  215. package/i18n/tr-TR.properties +4 -0
  216. package/i18n/zh-CN.js +2 -0
  217. package/i18n/zh-CN.properties +4 -0
  218. package/i18n/zh-TW.js +2 -0
  219. package/i18n/zh-TW.properties +4 -0
  220. package/package.json +1 -1
  221. package/src/components/avatar/__tests__/__image_snapshots__/avatar-stories-test-tsx-components-avatar-avatar-looks-visually-correct-when-using-story-components-avatar-large-1-snap.png +0 -0
  222. package/src/components/avatar/__tests__/__image_snapshots__/avatar-stories-test-tsx-components-avatar-avatar-looks-visually-correct-when-using-story-components-avatar-regular-1-snap.png +0 -0
  223. package/src/components/avatar/__tests__/__image_snapshots__/avatar-stories-test-tsx-components-avatar-avatar-looks-visually-correct-when-using-story-components-avatar-small-1-snap.png +0 -0
  224. package/src/components/avatar/__tests__/__image_snapshots__/avatar-stories-test-tsx-components-avatar-avatar-looks-visually-correct-when-using-story-components-avatar-with-multiple-avatars-1-snap.png +0 -0
  225. package/src/components/avatar/__tests__/__image_snapshots__/avatar-stories-test-tsx-components-avatar-avatar-looks-visually-correct-when-using-story-components-avatar-with-url-fallback-to-initials-1-snap.png +0 -0
  226. package/src/components/badge/Badge.scss +1 -1
  227. package/src/components/badge/__tests__/__image_snapshots__/badge-stories-test-tsx-components-badge-badge-looks-visually-correct-when-using-story-components-badge-alert-1-snap.png +0 -0
  228. package/src/components/badge/__tests__/__image_snapshots__/badge-stories-test-tsx-components-badge-badge-looks-visually-correct-when-using-story-components-badge-beta-badge-1-snap.png +0 -0
  229. package/src/components/badge/__tests__/__image_snapshots__/badge-stories-test-tsx-components-badge-badge-looks-visually-correct-when-using-story-components-badge-error-1-snap.png +0 -0
  230. package/src/components/badge/__tests__/__image_snapshots__/badge-stories-test-tsx-components-badge-badge-looks-visually-correct-when-using-story-components-badge-highlight-1-snap.png +0 -0
  231. package/src/components/badge/__tests__/__image_snapshots__/badge-stories-test-tsx-components-badge-badge-looks-visually-correct-when-using-story-components-badge-info-1-snap.png +0 -0
  232. package/src/components/badge/__tests__/__image_snapshots__/badge-stories-test-tsx-components-badge-badge-looks-visually-correct-when-using-story-components-badge-regular-1-snap.png +0 -0
  233. package/src/components/badge/__tests__/__image_snapshots__/badge-stories-test-tsx-components-badge-badge-looks-visually-correct-when-using-story-components-badge-success-1-snap.png +0 -0
  234. package/src/components/badge/__tests__/__image_snapshots__/badge-stories-test-tsx-components-badge-badge-looks-visually-correct-when-using-story-components-badge-trial-badge-1-snap.png +0 -0
  235. package/src/components/badge/__tests__/__image_snapshots__/badge-stories-test-tsx-components-badge-badge-looks-visually-correct-when-using-story-components-badge-upgrade-badge-1-snap.png +0 -0
  236. package/src/components/badge/__tests__/__image_snapshots__/badge-stories-test-tsx-components-badge-badge-looks-visually-correct-when-using-story-components-badge-warning-1-snap.png +0 -0
  237. package/src/components/breadcrumb/__tests__/__image_snapshots__/breadcrumb-stories-test-js-components-breadcrumb-breadcrumb-looks-visually-correct-when-using-story-components-breadcrumb-regular-1-snap.png +0 -0
  238. package/src/components/breadcrumb/__tests__/__image_snapshots__/breadcrumb-stories-test-js-components-breadcrumb-breadcrumb-looks-visually-correct-when-using-story-components-breadcrumb-with-multiple-crumbs-1-snap.png +0 -0
  239. package/src/components/button/Button.js.flow +4 -0
  240. package/src/components/button/Button.stories.tsx +72 -12
  241. package/src/components/button/Button.tsx +29 -2
  242. package/src/components/button/__tests__/Button.stories.test.tsx +10 -7
  243. package/src/components/button/__tests__/Button.test.tsx +31 -0
  244. package/src/components/button/__tests__/__image_snapshots__/button-stories-test-tsx-components-button-button-looks-visually-correct-when-using-story-components-buttons-button-disabled-1-snap.png +0 -0
  245. package/src/components/button/__tests__/__image_snapshots__/button-stories-test-tsx-components-button-button-looks-visually-correct-when-using-story-components-buttons-button-icon-and-text-button-1-snap.png +0 -0
  246. package/src/components/button/__tests__/__image_snapshots__/button-stories-test-tsx-components-button-button-looks-visually-correct-when-using-story-components-buttons-button-icon-button-1-snap.png +0 -0
  247. package/src/components/button/__tests__/__image_snapshots__/button-stories-test-tsx-components-button-button-looks-visually-correct-when-using-story-components-buttons-button-large-1-snap.png +0 -0
  248. package/src/components/button/__tests__/__image_snapshots__/button-stories-test-tsx-components-button-button-looks-visually-correct-when-using-story-components-buttons-button-regular-1-snap.png +0 -0
  249. package/src/components/button/__tests__/__snapshots__/Button.test.tsx.snap +22 -0
  250. package/src/components/button-group/ButtonGroup.scss +5 -5
  251. package/src/components/button-group/ButtonGroup.stories.tsx +1 -1
  252. package/src/components/category-selector/__tests__/__image_snapshots__/category-selector-stories-test-tsx-components-category-selector-category-selector-looks-visually-correct-when-using-story-components-categoryselector-basic-1-snap.png +0 -0
  253. package/src/components/category-selector/__tests__/__image_snapshots__/category-selector-stories-test-tsx-components-category-selector-category-selector-looks-visually-correct-when-using-story-components-categoryselector-with-dropdown-1-snap.png +0 -0
  254. package/src/components/checkbox/__tests__/__image_snapshots__/checkbox-stories-test-tsx-components-checkbox-checkbox-looks-visually-correct-when-using-story-components-checkbox-basic-1-snap.png +0 -0
  255. package/src/components/checkbox/__tests__/__image_snapshots__/checkbox-stories-test-tsx-components-checkbox-checkbox-looks-visually-correct-when-using-story-components-checkbox-controlled-1-snap.png +0 -0
  256. package/src/components/checkbox/__tests__/__image_snapshots__/checkbox-stories-test-tsx-components-checkbox-checkbox-looks-visually-correct-when-using-story-components-checkbox-disabled-1-snap.png +0 -0
  257. package/src/components/checkbox/__tests__/__image_snapshots__/checkbox-stories-test-tsx-components-checkbox-checkbox-looks-visually-correct-when-using-story-components-checkbox-with-subsection-1-snap.png +0 -0
  258. package/src/components/checkbox/__tests__/__image_snapshots__/checkbox-stories-test-tsx-components-checkbox-checkbox-looks-visually-correct-when-using-story-components-checkbox-with-tooltip-1-snap.png +0 -0
  259. package/src/components/collapsible/__tests__/__image_snapshots__/collapsible-stories-test-tsx-components-collapsible-collapsible-collapses-content-for-story-components-collapsible-with-border-1-snap.png +0 -0
  260. package/src/components/collapsible/__tests__/__image_snapshots__/collapsible-stories-test-tsx-components-collapsible-collapsible-collapses-content-for-story-components-collapsible-with-button-in-header-1-snap.png +0 -0
  261. package/src/components/collapsible/__tests__/__image_snapshots__/collapsible-stories-test-tsx-components-collapsible-collapsible-collapses-content-for-story-components-collapsible-without-border-1-snap.png +0 -0
  262. package/src/components/collapsible/__tests__/__image_snapshots__/collapsible-stories-test-tsx-components-collapsible-collapsible-looks-visually-correct-when-using-story-components-collapsible-with-border-1-snap.png +0 -0
  263. package/src/components/collapsible/__tests__/__image_snapshots__/collapsible-stories-test-tsx-components-collapsible-collapsible-looks-visually-correct-when-using-story-components-collapsible-with-button-in-header-1-snap.png +0 -0
  264. package/src/components/collapsible/__tests__/__image_snapshots__/collapsible-stories-test-tsx-components-collapsible-collapsible-looks-visually-correct-when-using-story-components-collapsible-without-border-1-snap.png +0 -0
  265. package/src/components/context-menu/__tests__/ContextMenu.stories.test.tsx +1 -6
  266. package/src/components/context-menu/__tests__/__image_snapshots__/context-menu-stories-test-tsx-components-context-menu-context-menu-looks-visually-correct-when-right-clicking-on-story-components-contextmenu-basic-1-snap.png +0 -0
  267. package/src/components/context-menu/__tests__/__image_snapshots__/context-menu-stories-test-tsx-components-context-menu-context-menu-looks-visually-correct-when-right-clicking-on-story-components-contextmenu-with-submenu-1-snap.png +0 -0
  268. package/src/components/context-menu/__tests__/__image_snapshots__/context-menu-stories-test-tsx-components-context-menu-context-menu-looks-visually-correct-when-using-story-components-contextmenu-basic-1-snap.png +0 -0
  269. package/src/components/context-menu/__tests__/__image_snapshots__/context-menu-stories-test-tsx-components-context-menu-context-menu-looks-visually-correct-when-using-story-components-contextmenu-with-submenu-1-snap.png +0 -0
  270. package/src/components/count-badge/__tests__/__image_snapshots__/count-badge-stories-test-tsx-components-count-badge-count-badge-looks-visually-correct-when-using-story-components-countbadge-with-html-symbol-1-1-snap.png +0 -0
  271. package/src/components/count-badge/__tests__/__image_snapshots__/count-badge-stories-test-tsx-components-count-badge-count-badge-looks-visually-correct-when-using-story-components-countbadge-with-html-symbol-2-1-snap.png +0 -0
  272. package/src/components/count-badge/__tests__/__image_snapshots__/count-badge-stories-test-tsx-components-count-badge-count-badge-looks-visually-correct-when-using-story-components-countbadge-without-animation-1-snap.png +0 -0
  273. package/src/components/date-picker/__tests__/DatePicker.stories.test.tsx +2 -10
  274. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-allows-editing-in-story-components-datepicker-manually-editable-1-snap.png +0 -0
  275. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-allows-keyboard-selection-in-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
  276. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-closes-calendar-and-clears-date-for-components-datepicker-basic-1-snap.png +0 -0
  277. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
  278. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-basic-1-snap.png +0 -0
  279. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-custom-error-tooltip-position-1-snap.png +0 -0
  280. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-disabled-with-error-message-1-snap.png +0 -0
  281. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-manually-editable-1-snap.png +0 -0
  282. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-description-1-snap.png +0 -0
  283. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-limited-date-range-1-snap.png +0 -0
  284. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-range-1-snap.png +0 -0
  285. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-reflects-changes-in-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
  286. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-shows-calendar-and-date-for-components-datepicker-basic-1-snap.png +0 -0
  287. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-shows-limited-range-in-components-datepicker-with-limited-date-range-1-snap.png +0 -0
  288. package/src/components/date-picker/_pikaday.scss +2 -1
  289. package/src/components/draft-js-editor/DraftJSEditor.scss +1 -1
  290. package/src/components/draft-js-editor/__tests__/__image_snapshots__/draft-js-editor-stories-test-js-components-draft-js-editor-draft-js-editor-looks-visually-correct-when-typing-1-snap.png +0 -0
  291. package/src/components/draft-js-editor/__tests__/__image_snapshots__/draft-js-editor-stories-test-js-components-draft-js-editor-draft-js-editor-looks-visually-correct-when-using-story-components-draftjseditor-basic-1-snap.png +0 -0
  292. package/src/components/draggable-list/__tests__/__image_snapshots__/draggable-list-stories-test-tsx-components-draggable-list-draggable-list-looks-correct-when-using-story-components-draggablelist-example-1-snap.png +0 -0
  293. package/src/components/dropdown-menu/__tests__/__image_snapshots__/dropdown-menu-stories-test-js-components-dropdown-menu-dropdown-menu-looks-visually-correct-when-button-is-clicked-in-story-components-dropdownmenu-basic-1-snap.png +0 -0
  294. package/src/components/dropdown-menu/__tests__/__image_snapshots__/dropdown-menu-stories-test-js-components-dropdown-menu-dropdown-menu-looks-visually-correct-when-button-is-clicked-in-story-components-dropdownmenu-with-link-menu-1-snap.png +0 -0
  295. package/src/components/dropdown-menu/__tests__/__image_snapshots__/dropdown-menu-stories-test-js-components-dropdown-menu-dropdown-menu-looks-visually-correct-when-using-story-components-dropdownmenu-with-link-menu-1-snap.png +0 -0
  296. package/src/components/error-mask/ErrorMask.scss +1 -1
  297. package/src/components/error-mask/__tests__/__image_snapshots__/error-mask-stories-test-tsx-components-error-mask-error-mask-looks-visually-correct-when-using-story-s-1-snap.png +0 -0
  298. package/src/components/fieldset/__tests__/__image_snapshots__/fieldset-stories-test-tsx-components-fieldset-fieldset-looks-visually-correct-when-using-story-components-fieldset-basic-1-snap.png +0 -0
  299. package/src/components/flyout/Flyout.scss +1 -1
  300. package/src/components/footer-indicator/FooterIndicator.scss +1 -1
  301. package/src/components/footer-indicator/__tests__/FooterIndicator.stories.test.tsx +1 -6
  302. package/src/components/footer-indicator/__tests__/__image_snapshots__/footer-indicator-stories-test-tsx-components-footer-indicator-footer-indicator-displays-tooltip-on-hover-for-story-components-footerindicator-regular-1-snap.png +0 -0
  303. package/src/components/footer-indicator/__tests__/__image_snapshots__/footer-indicator-stories-test-tsx-components-footer-indicator-footer-indicator-displays-tooltip-on-hover-for-story-components-footerindicator-with-truncated-text-1-snap.png +0 -0
  304. package/src/components/footer-indicator/__tests__/__image_snapshots__/footer-indicator-stories-test-tsx-components-footer-indicator-footer-indicator-looks-visually-correct-when-using-story-components-footerindicator-regular-1-snap.png +0 -0
  305. package/src/components/footer-indicator/__tests__/__image_snapshots__/footer-indicator-stories-test-tsx-components-footer-indicator-footer-indicator-looks-visually-correct-when-using-story-components-footerindicator-with-truncated-text-1-snap.png +0 -0
  306. package/src/components/form-elements/draft-js-mention-selector/MentionSelector.scss +10 -1
  307. package/src/components/form-elements/form/__tests__/__image_snapshots__/form-stories-test-js-components-form-elements-form-form-does-not-show-a-custom-validation-error-1-snap.png +0 -0
  308. package/src/components/form-elements/form/__tests__/__image_snapshots__/form-stories-test-js-components-form-elements-form-form-does-not-show-an-email-validation-error-1-snap.png +0 -0
  309. package/src/components/form-elements/form/__tests__/__image_snapshots__/form-stories-test-js-components-form-elements-form-form-looks-visually-correct-when-using-story-components-form-elements-form-basic-1-snap.png +0 -0
  310. package/src/components/form-elements/form/__tests__/__image_snapshots__/form-stories-test-js-components-form-elements-form-form-shows-a-custom-validation-error-1-snap.png +0 -0
  311. package/src/components/form-elements/form/__tests__/__image_snapshots__/form-stories-test-js-components-form-elements-form-form-shows-a-required-field-error-1-snap.png +0 -0
  312. package/src/components/form-elements/form/__tests__/__image_snapshots__/form-stories-test-js-components-form-elements-form-form-shows-an-email-validation-error-1-snap.png +0 -0
  313. package/src/components/form-elements/text-area/__tests__/__image_snapshots__/text-area-stories-test-js-components-form-elements-text-area-text-area-looks-visually-correct-when-using-story-components-form-elements-textarea-basic-1-snap.png +0 -0
  314. package/src/components/form-elements/text-area/__tests__/__image_snapshots__/text-area-stories-test-js-components-form-elements-text-area-text-area-looks-visually-correct-when-using-story-components-form-elements-textarea-with-validation-1-snap.png +0 -0
  315. package/src/components/form-elements/text-area/__tests__/__image_snapshots__/text-area-stories-test-js-components-form-elements-text-area-text-area-shows-text-after-typing-1-snap.png +0 -0
  316. package/src/components/form-elements/text-area/__tests__/__image_snapshots__/text-area-stories-test-js-components-form-elements-text-area-text-area-validates-text-when-given-input-abcde-1-snap.png +0 -0
  317. package/src/components/form-elements/text-area/__tests__/__image_snapshots__/text-area-stories-test-js-components-form-elements-text-area-text-area-validates-text-when-given-input-www-1-snap.png +0 -0
  318. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-displays-abcde-when-given-abcde-1-snap.png +0 -0
  319. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-displays-abcde-when-given-abcdef-1-snap.png +0 -0
  320. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-does-not-show-a-custom-validation-error-for-box-1-snap.png +0 -0
  321. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-does-not-show-a-url-validation-error-for-http-www-box-com-1-snap.png +0 -0
  322. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-does-not-show-a-url-validation-error-for-https-www-box-com-1-snap.png +0 -0
  323. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-looks-visually-correct-when-using-story-components-form-elements-textinput-basic-1-snap.png +0 -0
  324. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-looks-visually-correct-when-using-story-components-form-elements-textinput-disabled-input-1-snap.png +0 -0
  325. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-looks-visually-correct-when-using-story-components-form-elements-textinput-url-input-1-snap.png +0 -0
  326. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-looks-visually-correct-when-using-story-components-form-elements-textinput-with-custom-validation-1-snap.png +0 -0
  327. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-looks-visually-correct-when-using-story-components-form-elements-textinput-with-hidden-label-1-snap.png +0 -0
  328. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-looks-visually-correct-when-using-story-components-form-elements-textinput-with-maximum-length-1-snap.png +0 -0
  329. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-looks-visually-correct-when-using-story-components-form-elements-textinput-with-minimum-length-1-snap.png +0 -0
  330. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-looks-visually-correct-when-using-story-components-form-elements-textinput-with-tooltip-on-hover-1-snap.png +0 -0
  331. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-shows-a-custom-validation-error-for-notbox-1-snap.png +0 -0
  332. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-shows-a-url-validation-error-for-www-box-com-1-snap.png +0 -0
  333. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-shows-a-url-validation-error-for-zyxwv-1-snap.png +0 -0
  334. package/src/components/form-elements/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-form-elements-text-input-text-input-shows-min-length-error-for-a-1-snap.png +0 -0
  335. package/src/components/ghost/__tests__/__image_snapshots__/ghost-stories-test-tsx-components-ghost-ghost-looks-visually-correct-when-using-story-components-ghost-regular-1-snap.png +0 -0
  336. package/src/components/guide-tooltip/GuideTooltip.js.flow +3 -0
  337. package/src/components/guide-tooltip/GuideTooltip.scss +14 -1
  338. package/src/components/guide-tooltip/GuideTooltip.tsx +4 -0
  339. package/src/components/guide-tooltip/__tests__/GuideTooltip.test.js +61 -7
  340. package/src/components/header/__tests__/__image_snapshots__/header-stories-test-tsx-components-header-header-looks-visually-correct-when-using-story-components-header-regular-1-snap.png +0 -0
  341. package/src/components/hotkeys/HotkeyHelpModal.scss +1 -1
  342. package/src/components/image-tooltip/__tests__/__image_snapshots__/image-tooltip-stories-test-tsx-components-image-tooltip-image-tooltip-looks-visually-correct-when-using-story-components-imagetooltip-basic-1-snap.png +0 -0
  343. package/src/components/label/__tests__/__image_snapshots__/label-stories-test-tsx-components-label-label-looks-visually-correct-when-using-story-components-label-basic-1-snap.png +0 -0
  344. package/src/components/label/__tests__/__image_snapshots__/label-stories-test-tsx-components-label-label-looks-visually-correct-when-using-story-components-label-with-info-tooltip-1-snap.png +0 -0
  345. package/src/components/label/__tests__/__image_snapshots__/label-stories-test-tsx-components-label-label-looks-visually-correct-when-using-story-components-label-with-optional-text-1-snap.png +0 -0
  346. package/src/components/link/LinkButton.tsx +4 -2
  347. package/src/components/link/LinkPrimaryButton.tsx +2 -4
  348. package/src/components/link/__tests__/Link.test.tsx +15 -0
  349. package/src/components/link/__tests__/LinkButton.stories.test.tsx +8 -7
  350. package/src/components/link/__tests__/LinkPrimaryButton.stories.test.tsx +1 -0
  351. package/src/components/link/__tests__/__image_snapshots__/link-button-stories-test-tsx-components-link-link-button-looks-visually-correct-when-using-story-components-links-linkbutton-basic-1-snap.png +0 -0
  352. package/src/components/link/__tests__/__image_snapshots__/link-button-stories-test-tsx-components-link-link-button-looks-visually-correct-when-using-story-components-links-linkbutton-large-1-snap.png +0 -0
  353. package/src/components/link/__tests__/__image_snapshots__/link-button-stories-test-tsx-components-link-link-button-looks-visually-correct-when-using-story-components-links-linkbutton-with-custom-component-1-snap.png +0 -0
  354. package/src/components/link/__tests__/__image_snapshots__/link-group-stories-test-tsx-components-link-link-group-looks-visually-correct-when-using-story-components-links-linkgroup-basic-1-snap.png +0 -0
  355. package/src/components/link/__tests__/__image_snapshots__/link-primary-button-stories-test-tsx-components-link-link-primary-button-looks-visually-correct-when-using-story-components-links-linkprimarybutton-basic-1-snap.png +0 -0
  356. package/src/components/link/__tests__/__image_snapshots__/link-primary-button-stories-test-tsx-components-link-link-primary-button-looks-visually-correct-when-using-story-components-links-linkprimarybutton-large-1-snap.png +0 -0
  357. package/src/components/link/__tests__/__image_snapshots__/link-primary-button-stories-test-tsx-components-link-link-primary-button-looks-visually-correct-when-using-story-components-links-linkprimarybutton-with-custom-component-1-snap.png +0 -0
  358. package/src/components/link/__tests__/__image_snapshots__/link-stories-test-tsx-components-link-link-looks-visually-correct-when-using-story-components-links-link-basic-1-snap.png +0 -0
  359. package/src/components/link/__tests__/__image_snapshots__/link-stories-test-tsx-components-link-link-looks-visually-correct-when-using-story-components-links-link-with-custom-component-1-snap.png +0 -0
  360. package/src/components/link/stories/LinkButton.stories.tsx +15 -1
  361. package/src/components/link/stories/LinkPrimaryButton.stories.tsx +13 -1
  362. package/src/components/loading-indicator/Crawler.scss +1 -1
  363. package/src/components/media/__tests__/__image_snapshots__/media-stories-test-tsx-components-media-media-looks-visually-correct-when-using-story-components-media-media-example-1-snap.png +0 -0
  364. package/src/components/media/__tests__/__image_snapshots__/media-stories-test-tsx-components-media-media-looks-visually-correct-when-using-story-components-media-media-with-form-elements-1-snap.png +0 -0
  365. package/src/components/media/__tests__/__image_snapshots__/media-stories-test-tsx-components-media-media-looks-visually-correct-when-using-story-components-media-media-with-nested-components-1-snap.png +0 -0
  366. package/src/components/menu/__tests__/__image_snapshots__/menu-stories-test-tsx-components-menu-menu-displays-a-submenu-on-hover-in-story-components-menu-with-submenu-1-snap.png +0 -0
  367. package/src/components/menu/__tests__/__image_snapshots__/menu-stories-test-tsx-components-menu-menu-displays-a-submenu-on-hover-in-story-components-menu-with-submenu-flip-1-snap.png +0 -0
  368. package/src/components/menu/__tests__/__image_snapshots__/menu-stories-test-tsx-components-menu-menu-looks-visually-correct-when-using-story-components-menu-with-child-on-resize-1-snap.png +0 -0
  369. package/src/components/menu/__tests__/__image_snapshots__/menu-stories-test-tsx-components-menu-menu-looks-visually-correct-when-using-story-components-menu-with-select-menu-1-snap.png +0 -0
  370. package/src/components/menu/__tests__/__image_snapshots__/menu-stories-test-tsx-components-menu-menu-looks-visually-correct-when-using-story-components-menu-with-submenu-1-snap.png +0 -0
  371. package/src/components/menu/__tests__/__image_snapshots__/menu-stories-test-tsx-components-menu-menu-looks-visually-correct-when-using-story-components-menu-with-submenu-flip-1-snap.png +0 -0
  372. package/src/components/menu/__tests__/__image_snapshots__/select-menu-link-item-stories-test-tsx-components-menu-select-menu-link-item-looks-visually-correct-when-using-story-components-selectmenulinkitem-basic-1-snap.png +0 -0
  373. package/src/components/modal/Modal.scss +5 -2
  374. package/src/components/modal/ModalDialog.js +1 -1
  375. package/src/components/modal/__tests__/__image_snapshots__/modal-actions-stories-test-js-components-modal-modal-actions-looks-visually-correct-when-using-story-components-modalactions-basic-1-snap.png +0 -0
  376. package/src/components/modal/__tests__/__image_snapshots__/modal-dialog-stories-test-js-components-modal-modal-dialog-looks-visually-correct-when-using-story-components-modaldialog-basic-1-snap.png +0 -0
  377. package/src/components/modal/__tests__/__image_snapshots__/modal-stories-test-js-components-modal-modal-looks-visually-correct-when-button-is-clicked-in-story-components-modal-basic-1-snap.png +0 -0
  378. package/src/components/modal/__tests__/__image_snapshots__/modal-stories-test-js-components-modal-modal-looks-visually-correct-when-button-is-clicked-in-story-components-modal-with-custom-backdrop-click-handler-1-snap.png +0 -0
  379. package/src/components/modal/__tests__/__image_snapshots__/modal-stories-test-js-components-modal-modal-looks-visually-correct-when-using-story-components-modal-basic-1-snap.png +0 -0
  380. package/src/components/modal/__tests__/__image_snapshots__/modal-stories-test-js-components-modal-modal-looks-visually-correct-when-using-story-components-modal-with-custom-backdrop-click-handler-1-snap.png +0 -0
  381. package/src/components/notification/Notification.js +11 -13
  382. package/src/components/notification/Notification.scss +17 -12
  383. package/src/components/notification/__tests__/Notification.test.js +9 -9
  384. package/src/components/notification/__tests__/__image_snapshots__/notification-stories-test-js-components-notification-notification-looks-visually-correct-when-using-story-components-notifications-notification-basic-1-snap.png +0 -0
  385. package/src/components/notification/__tests__/__image_snapshots__/notification-stories-test-js-components-notification-notification-looks-visually-correct-when-using-story-components-notifications-notification-error-1-snap.png +0 -0
  386. package/src/components/notification/__tests__/__image_snapshots__/notification-stories-test-js-components-notification-notification-looks-visually-correct-when-using-story-components-notifications-notification-info-1-snap.png +0 -0
  387. package/src/components/notification/__tests__/__image_snapshots__/notification-stories-test-js-components-notification-notification-looks-visually-correct-when-using-story-components-notifications-notification-warn-1-snap.png +0 -0
  388. package/src/components/notification/__tests__/__image_snapshots__/notifications-wrapper-stories-test-js-components-notification-notifications-wrapper-looks-visually-correct-when-using-story-components-notifications-notificationswrapper-example-1-snap.png +0 -0
  389. package/src/components/notification/__tests__/__image_snapshots__/notifications-wrapper-stories-test-js-components-notification-notifications-wrapper-shows-a-persistent-notification-1-snap.png +0 -0
  390. package/src/components/notification/__tests__/__image_snapshots__/notifications-wrapper-stories-test-js-components-notification-notifications-wrapper-shows-a-timed-notification-1-snap.png +0 -0
  391. package/src/components/nudge/__tests__/__image_snapshots__/nudge-stories-test-tsx-components-nudge-nudge-looks-visually-correct-when-using-story-components-nudge-regular-1-snap.png +0 -0
  392. package/src/components/pill-selector-dropdown/PillSelector.scss +1 -1
  393. package/src/components/pill-selector-dropdown/__tests__/__image_snapshots__/pill-selector-dropdown-stories-test-js-components-pill-selector-dropdown-pill-selector-dropdown-looks-visually-correct-when-typing-1-snap.png +0 -0
  394. package/src/components/pill-selector-dropdown/__tests__/__image_snapshots__/pill-selector-dropdown-stories-test-js-components-pill-selector-dropdown-pill-selector-dropdown-looks-visually-correct-when-using-story-components-pillselectordropdown-custom-pill-styles-1-snap.png +0 -0
  395. package/src/components/pill-selector-dropdown/__tests__/__image_snapshots__/pill-selector-dropdown-stories-test-js-components-pill-selector-dropdown-pill-selector-dropdown-looks-visually-correct-when-using-story-components-pillselectordropdown-empty-1-snap.png +0 -0
  396. package/src/components/pill-selector-dropdown/__tests__/__image_snapshots__/pill-selector-dropdown-stories-test-js-components-pill-selector-dropdown-pill-selector-dropdown-looks-visually-correct-when-using-story-components-pillselectordropdown-show-avatars-1-snap.png +0 -0
  397. package/src/components/pill-selector-dropdown/__tests__/__image_snapshots__/pill-selector-dropdown-stories-test-js-components-pill-selector-dropdown-pill-selector-dropdown-looks-visually-correct-when-using-story-components-pillselectordropdown-show-rounded-pills-1-snap.png +0 -0
  398. package/src/components/pill-selector-dropdown/__tests__/__image_snapshots__/pill-selector-dropdown-stories-test-js-components-pill-selector-dropdown-pill-selector-dropdown-looks-visually-correct-when-using-story-components-pillselectordropdown-with-pills-1-snap.png +0 -0
  399. package/src/components/plain-button/PlainButton.stories.tsx +96 -1
  400. package/src/components/plain-button/__tests__/PlainButton.stories.test.tsx +1 -1
  401. package/src/components/{button/__tests__/__image_snapshots__/button-stories-test-tsx-components-button-button-looks-visually-correct-when-using-story-components-button-disabled-1-snap.png → plain-button/__tests__/__image_snapshots__/plain-button-stories-test-tsx-components-plain-button-plain-button-looks-visually-correct-when-using-story-components-buttons-plainbutton-disabled-1-snap.png} +0 -0
  402. package/src/components/{button/__tests__/__image_snapshots__/button-stories-test-tsx-components-button-button-looks-visually-correct-when-using-story-components-button-regular-1-snap.png → plain-button/__tests__/__image_snapshots__/plain-button-stories-test-tsx-components-plain-button-plain-button-looks-visually-correct-when-using-story-components-buttons-plainbutton-regular-1-snap.png} +0 -0
  403. package/src/components/primary-button/PrimaryButton.stories.tsx +1 -1
  404. package/src/components/primary-button/__tests__/PrimaryButton.stories.test.tsx +1 -1
  405. package/src/components/primary-button/__tests__/__image_snapshots__/primary-button-stories-test-tsx-components-primary-button-primary-button-looks-visually-correct-when-using-story-components-buttons-primarybutton-disabled-1-snap.png +0 -0
  406. package/src/components/primary-button/__tests__/__image_snapshots__/primary-button-stories-test-tsx-components-primary-button-primary-button-looks-visually-correct-when-using-story-components-buttons-primarybutton-regular-1-snap.png +0 -0
  407. package/src/components/radio/__tests__/RadioGroup.stories.test.tsx +1 -1
  408. package/src/components/radio/__tests__/__image_snapshots__/radio-button-stories-test-tsx-components-radio-radio-button-looks-visually-correct-when-using-story-components-radio-radiobutton-basic-1-snap.png +0 -0
  409. package/src/components/radio/__tests__/__image_snapshots__/radio-button-stories-test-tsx-components-radio-radio-button-looks-visually-correct-when-using-story-components-radio-radiobutton-disabled-1-snap.png +0 -0
  410. package/src/components/radio/__tests__/__image_snapshots__/radio-group-stories-test-tsx-components-radio-radio-button-looks-visually-correct-when-using-story-components-radio-radiogroup-basic-1-snap.png +0 -0
  411. package/src/components/radio/__tests__/__image_snapshots__/radio-group-stories-test-tsx-components-radio-radio-button-selects-a-radio-button-1-snap.png +0 -0
  412. package/src/components/section/__tests__/__image_snapshots__/section-stories-test-tsx-components-section-section-looks-visually-correct-when-using-story-components-section-basic-1-snap.png +0 -0
  413. package/src/components/select/__tests__/__image_snapshots__/select-stories-test-js-components-select-select-looks-visually-correct-when-using-story-components-select-basic-1-snap.png +0 -0
  414. package/src/components/select/__tests__/__image_snapshots__/select-stories-test-js-components-select-select-looks-visually-correct-when-using-story-components-select-disabled-1-snap.png +0 -0
  415. package/src/components/select/__tests__/__image_snapshots__/select-stories-test-js-components-select-select-looks-visually-correct-when-using-story-components-select-with-error-message-1-snap.png +0 -0
  416. package/src/components/select/__tests__/__image_snapshots__/select-stories-test-js-components-select-select-looks-visually-correct-when-using-story-components-select-with-error-outline-1-snap.png +0 -0
  417. package/src/components/select-button/__tests__/__image_snapshots__/select-button-stories-test-js-components-select-button-select-button-looks-visually-correct-when-using-story-components-selectbutton-disabled-1-snap.png +0 -0
  418. package/src/components/select-button/__tests__/__image_snapshots__/select-button-stories-test-js-components-select-button-select-button-looks-visually-correct-when-using-story-components-selectbutton-regular-1-snap.png +0 -0
  419. package/src/components/select-button/__tests__/__image_snapshots__/select-button-stories-test-js-components-select-button-select-button-looks-visually-correct-when-using-story-components-selectbutton-with-error-1-snap.png +0 -0
  420. package/src/components/select-field/SelectField.scss +3 -0
  421. package/src/components/select-field/SingleSelectField.md +31 -0
  422. package/src/components/selector-dropdown/SelectorDropdown.scss +5 -0
  423. package/src/components/selector-dropdown/SelectorDropdown.stories.js +16 -0
  424. package/src/components/selector-dropdown/{README.md → SelectorDropdown.stories.md} +0 -9
  425. package/src/components/selector-dropdown/__tests__/SelectorDropdown.stories.test.js +6 -0
  426. package/src/components/selector-dropdown/__tests__/__image_snapshots__/selector-dropdown-stories-test-js-components-select-select-looks-visually-correct-when-using-story-components-selectordropdown-basic-1-snap.png +0 -0
  427. package/src/components/sidebar-toggle-button/__tests__/__image_snapshots__/sidebar-toggle-button-stories-test-js-components-sidebar-toggle-button-sidebar-toggle-button-looks-visually-correct-when-using-story-components-sidebartogglebutton-closed-1-snap.png +0 -0
  428. package/src/components/tab-view/Tabs.scss +1 -0
  429. package/src/components/tab-view/__tests__/__image_snapshots__/tab-view-stories-test-js-components-tab-view-tab-view-looks-visually-correct-when-using-story-components-tabview-basic-1-snap.png +0 -0
  430. package/src/components/tab-view/__tests__/__image_snapshots__/tab-view-stories-test-js-components-tab-view-tab-view-looks-visually-correct-when-using-story-components-tabview-dynamic-1-snap.png +0 -0
  431. package/src/components/tab-view/__tests__/__image_snapshots__/tab-view-stories-test-js-components-tab-view-tab-view-looks-visually-correct-when-using-story-components-tabview-dynamic-with-links-1-snap.png +0 -0
  432. package/src/components/tab-view/__tests__/__image_snapshots__/tab-view-stories-test-js-components-tab-view-tab-view-looks-visually-correct-when-using-story-components-tabview-with-callback-1-snap.png +0 -0
  433. package/src/components/tab-view/__tests__/__image_snapshots__/tab-view-stories-test-js-components-tab-view-tab-view-looks-visually-correct-when-using-story-components-tabview-with-link-1-snap.png +0 -0
  434. package/src/components/tab-view/__tests__/__image_snapshots__/tab-view-stories-test-js-components-tab-view-tab-view-shows-new-content-after-clicking-on-a-new-tab-1-snap.png +0 -0
  435. package/src/components/text-area/TextArea.js +4 -0
  436. package/src/components/text-area/__tests__/TextArea.test.js +11 -0
  437. package/src/components/text-area/__tests__/__snapshots__/TextArea.test.js.snap +8 -8
  438. package/src/components/text-input/TextInput.js +10 -1
  439. package/src/components/text-input/__tests__/TextInput.test.js +11 -0
  440. package/src/components/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-text-input-text-input-clears-required-tooltip-after-entering-text-1-snap.png +0 -0
  441. package/src/components/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-text-input-text-input-looks-visually-correct-when-using-story-components-textinput-basic-1-snap.png +0 -0
  442. package/src/components/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-text-input-text-input-looks-visually-correct-when-using-story-components-textinput-error-1-snap.png +0 -0
  443. package/src/components/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-text-input-text-input-looks-visually-correct-when-using-story-components-textinput-required-with-on-change-1-snap.png +0 -0
  444. package/src/components/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-text-input-text-input-looks-visually-correct-when-using-story-components-textinput-valid-1-snap.png +0 -0
  445. package/src/components/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-text-input-text-input-looks-visually-correct-when-using-story-components-textinput-with-description-1-snap.png +0 -0
  446. package/src/components/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-text-input-text-input-looks-visually-correct-when-using-story-components-textinput-with-long-breakable-strings-1-snap.png +0 -0
  447. package/src/components/text-input/__tests__/__image_snapshots__/text-input-stories-test-js-components-text-input-text-input-looks-visually-correct-when-using-story-components-textinput-with-long-unbreakable-strings-1-snap.png +0 -0
  448. package/src/components/text-input-with-copy-button/__tests__/__image_snapshots__/text-input-with-copy-button-stories-test-js-components-text-input-with-copy-button-text-input-with-copy-button-looks-visually-correct-when-using-story-components-textinputwithcopybutton-example-1-snap.png +0 -0
  449. package/src/components/text-input-with-copy-button/__tests__/__image_snapshots__/text-input-with-copy-button-stories-test-js-components-text-input-with-copy-button-text-input-with-copy-button-updates-copy-button-on-click-1-snap.png +0 -0
  450. package/src/components/thumbnail-card/ThumbnailCard.scss +1 -1
  451. package/src/components/thumbnail-card/__tests__/__image_snapshots__/thumbnail-card-stories-test-js-components-thumbnail-card-thumbnail-card-looks-visually-correct-when-using-story-components-thumbnailcard-basic-1-snap.png +0 -0
  452. package/src/components/thumbnail-card/__tests__/__image_snapshots__/thumbnail-card-stories-test-js-components-thumbnail-card-thumbnail-card-looks-visually-correct-when-using-story-components-thumbnailcard-highlight-on-hover-1-snap.png +0 -0
  453. package/src/components/thumbnail-card/__tests__/__image_snapshots__/thumbnail-card-stories-test-js-components-thumbnail-card-thumbnail-card-should-show-a-blue-border-when-the-card-is-hovered-1-snap.png +0 -0
  454. package/src/components/thumbnail-card/__tests__/__image_snapshots__/thumbnail-card-stories-test-js-components-thumbnail-card-thumbnail-card-should-show-an-orange-border-when-the-card-is-hovered-and-focused-1-snap.png +0 -0
  455. package/src/components/time-input/__tests__/TimeInput.stories.test.tsx +7 -11
  456. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-looks-correct-when-using-story-components-timeinput-optional-1-snap.png +0 -0
  457. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-looks-correct-when-using-story-components-timeinput-required-1-snap.png +0 -0
  458. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-sets-a-valid-date-based-on-input-after-blur-for-story-components-timeinput-optional-1-snap.png +0 -0
  459. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-sets-a-valid-date-based-on-input-after-blur-for-story-components-timeinput-required-1-snap.png +0 -0
  460. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-sets-a-valid-date-based-on-input-after-change-for-story-components-timeinput-optional-1-snap.png +0 -0
  461. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-sets-a-valid-date-based-on-input-after-change-for-story-components-timeinput-required-1-snap.png +0 -0
  462. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-shows-an-error-for-empty-input-after-blur-for-story-components-timeinput-required-1-snap.png +0 -0
  463. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-shows-an-error-for-empty-input-after-change-for-story-components-timeinput-required-1-snap.png +0 -0
  464. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-shows-an-error-for-invalid-input-after-blur-for-story-components-timeinput-optional-1-snap.png +0 -0
  465. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-shows-an-error-for-invalid-input-after-blur-for-story-components-timeinput-required-1-snap.png +0 -0
  466. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-shows-an-error-for-invalid-input-after-change-for-story-components-timeinput-optional-1-snap.png +0 -0
  467. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-shows-an-error-for-invalid-input-after-change-for-story-components-timeinput-required-1-snap.png +0 -0
  468. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-shows-default-time-for-empty-input-after-blur-for-story-components-timeinput-optional-1-snap.png +0 -0
  469. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-shows-default-time-for-empty-input-after-change-for-story-components-timeinput-optional-1-snap.png +0 -0
  470. package/src/components/time-input/__tests__/__image_snapshots__/time-input-stories-test-tsx-components-time-input-time-input-shows-default-time-for-empty-input-after-change-for-story-components-timeinput-required-1-snap.png +0 -0
  471. package/src/components/toggle/__tests__/__image_snapshots__/toggle-stories-test-js-components-toggle-toggle-looks-visually-correct-when-using-story-components-toggle-basic-1-snap.png +0 -0
  472. package/src/components/toggle/__tests__/__image_snapshots__/toggle-stories-test-js-components-toggle-toggle-looks-visually-correct-when-using-story-components-toggle-controlled-1-snap.png +0 -0
  473. package/src/components/toggle/__tests__/__image_snapshots__/toggle-stories-test-js-components-toggle-toggle-looks-visually-correct-when-using-story-components-toggle-disabled-1-snap.png +0 -0
  474. package/src/components/toggle/__tests__/__image_snapshots__/toggle-stories-test-js-components-toggle-toggle-looks-visually-correct-when-using-story-components-toggle-right-aligned-1-snap.png +0 -0
  475. package/src/components/tooltip/Tooltip.scss +3 -3
  476. package/src/components/tooltip/__tests__/Tooltip.stories.test.tsx +1 -1
  477. package/src/components/tooltip/__tests__/__image_snapshots__/tooltip-stories-test-tsx-components-tooltip-tooltip-looks-visually-correct-when-using-story-components-tooltip-attached-to-disabled-button-1-snap.png +0 -0
  478. package/src/components/tooltip/__tests__/__image_snapshots__/tooltip-stories-test-tsx-components-tooltip-tooltip-looks-visually-correct-when-using-story-components-tooltip-is-shown-1-snap.png +0 -0
  479. package/src/components/tooltip/__tests__/__image_snapshots__/tooltip-stories-test-tsx-components-tooltip-tooltip-looks-visually-correct-when-using-story-components-tooltip-positioning-1-snap.png +0 -0
  480. package/src/components/tooltip/__tests__/__image_snapshots__/tooltip-stories-test-tsx-components-tooltip-tooltip-looks-visually-correct-when-using-story-components-tooltip-themes-1-snap.png +0 -0
  481. package/src/components/tooltip/__tests__/__image_snapshots__/tooltip-stories-test-tsx-components-tooltip-tooltip-looks-visually-correct-when-using-story-components-tooltip-with-close-button-1-snap.png +0 -0
  482. package/src/components/tooltip/__tests__/__image_snapshots__/tooltip-stories-test-tsx-components-tooltip-tooltip-looks-visually-correct-when-using-story-components-tooltip-with-disabled-1-snap.png +0 -0
  483. package/src/components/tooltip/__tests__/__image_snapshots__/tooltip-stories-test-tsx-components-tooltip-tooltip-looks-visually-correct-when-using-story-components-tooltip-with-long-text-1-snap.png +0 -0
  484. package/src/components/tooltip/__tests__/__image_snapshots__/tooltip-stories-test-tsx-components-tooltip-tooltip-looks-visually-correct-when-using-story-components-tooltip-with-offset-1-snap.png +0 -0
  485. package/src/elements/common/messages.js +10 -0
  486. package/src/elements/common/modal.scss +4 -1
  487. package/src/elements/content-explorer/ShareDialog.scss +2 -2
  488. package/src/elements/content-explorer/__tests__/__image_snapshots__/share-dialog-stories-test-js-elements-content-explorer-share-dialog-looks-visually-correct-when-using-story-elements-contentexplorer-sharedialog-share-dialog-1-snap.png +0 -0
  489. package/src/elements/content-sidebar/activity-feed/task-form/TaskForm.js +3 -2
  490. package/src/elements/content-sidebar/activity-feed/task-form/TaskForm.scss +0 -15
  491. package/src/elements/content-sidebar/activity-feed/task-form/__tests__/TaskForm.test.js +2 -2
  492. package/src/elements/content-sidebar/activity-feed/task-form/__tests__/__snapshots__/TaskForm.test.js.snap +1 -151
  493. package/src/elements/content-sidebar/activity-feed/version/Version.scss +1 -1
  494. package/src/elements/content-sidebar/additional-tabs/AdditionalTabsLoading.scss +1 -1
  495. package/src/elements/content-sidebar/skills/faces/Faces.scss +1 -1
  496. package/src/elements/content-sidebar/skills/keywords/Keywords.scss +1 -1
  497. package/src/elements/content-sidebar/skills/timeline/Timeline.scss +1 -1
  498. package/src/elements/content-sidebar/skills/timeline/Timeslice.scss +1 -1
  499. package/src/elements/content-sidebar/skills/transcript/Transcript.scss +1 -1
  500. package/src/elements/content-sidebar/versions/VersionsItemBadge.scss +1 -1
  501. package/src/elements/content-uploader/ContentUploader.js +10 -7
  502. package/src/elements/content-uploader/Footer.scss +5 -0
  503. package/src/elements/content-uploader/ItemAction.js +34 -3
  504. package/src/elements/content-uploader/ItemList.js +11 -4
  505. package/src/elements/content-uploader/UploadsManager.js +8 -5
  506. package/src/elements/content-uploader/__tests__/ItemAction.test.js +19 -1
  507. package/src/elements/content-uploader/__tests__/ItemList.test.js +45 -0
  508. package/src/elements/content-uploader/actionCellRenderer.js +9 -2
  509. package/src/elements/content-uploader/progressCellRenderer.js +6 -3
  510. package/src/features/collaborator-avatars/CollaboratorList.scss +1 -1
  511. package/src/features/collapsible-sidebar/CollapsibleSidebarLogo.js +3 -3
  512. package/src/features/collapsible-sidebar/__tests__/__snapshots__/CollapsibleSidebarLogo.test.js.snap +7 -7
  513. package/src/features/content-explorer/content-explorer/ContentExplorer.scss +5 -0
  514. package/src/features/content-explorer/item-list/ItemList.scss +1 -1
  515. package/src/features/left-sidebar/styles/LeftSidebarDropWrapper.scss +1 -1
  516. package/src/features/left-sidebar/styles/LeftSidebarLinkCallout.scss +2 -2
  517. package/src/features/message-preview-content/styles/PreviewErrorNotification.scss +1 -1
  518. package/src/features/metadata-based-view/MetadataBasedItemList.scss +1 -1
  519. package/src/features/metadata-instance-editor/CascadePolicy.scss +2 -2
  520. package/src/features/metadata-instance-editor/CustomInstanceNewField.scss +1 -1
  521. package/src/features/metadata-instance-editor/Instance.scss +1 -1
  522. package/src/features/metadata-instance-editor/TemplateDropdown.scss +4 -4
  523. package/src/features/query-bar/styles/Condition.scss +4 -4
  524. package/src/features/query-bar/styles/QueryBarButtons.scss +1 -1
  525. package/src/features/quick-search/QuickSearch.scss +1 -4
  526. package/src/features/quick-search/QuickSearchMessage.scss +1 -0
  527. package/src/features/sandbox-banner/__tests__/__image_snapshots__/sandbox-banner-stories-test-tsx-features-sandbox-banner-sandbox-banner-looks-visually-correct-when-using-story-features-sandboxbanner-basic-1-snap.png +0 -0
  528. package/src/features/sandbox-banner/__tests__/__image_snapshots__/sandbox-banner-stories-test-tsx-features-sandbox-banner-sandbox-banner-should-show-a-tooltip-when-the-banner-is-hovered-1-snap.png +0 -0
  529. package/src/features/security/_mixins.scss +1 -1
  530. package/src/features/shared-link-modal/__tests__/__image_snapshots__/shared-link-modal-stories-test-js-features-shared-link-modal-shared-link-modal-looks-visually-correct-when-button-is-clicked-1-snap.png +0 -0
  531. package/src/features/shared-link-modal/__tests__/__image_snapshots__/shared-link-modal-stories-test-js-features-shared-link-modal-shared-link-modal-looks-visually-correct-when-using-story-features-sharedlinkmodal-basic-1-snap.png +0 -0
  532. package/src/features/shared-link-modal/__tests__/__image_snapshots__/shared-link-stories-test-js-features-shared-link-modal-shared-link-looks-visually-correct-when-button-is-clicked-1-snap.png +0 -0
  533. package/src/features/shared-link-modal/__tests__/__image_snapshots__/shared-link-stories-test-js-features-shared-link-modal-shared-link-looks-visually-correct-when-using-story-features-sharedlink-basic-1-snap.png +0 -0
  534. package/src/features/shared-link-settings-modal/__tests__/__image_snapshots__/shared-link-settings-modal-stories-test-js-features-shared-link-settings-modal-shared-link-settings-modal-looks-visually-correct-when-button-is-clicked-1-snap.png +0 -0
  535. package/src/features/shared-link-settings-modal/__tests__/__image_snapshots__/shared-link-settings-modal-stories-test-js-features-shared-link-settings-modal-shared-link-settings-modal-looks-visually-correct-when-using-story-features-sharedlinksettingsmodal-basic-1-snap.png +0 -0
  536. package/src/features/unified-share-modal/__tests__/__image_snapshots__/unified-share-modal-stories-test-js-features-unified-share-modal-unified-share-modal-features-unifiedsharemodal-with-form-only-looks-visually-correct-1-snap.png +0 -0
  537. package/src/features/unified-share-modal/__tests__/__image_snapshots__/unified-share-modal-stories-test-js-features-unified-share-modal-unified-share-modal-features-unifiedsharemodal-with-form-only-looks-visually-correct-when-adding-emails-1-snap.png +0 -0
  538. package/src/features/unified-share-modal/__tests__/__image_snapshots__/unified-share-modal-stories-test-js-features-unified-share-modal-unified-share-modal-looks-visually-correct-when-button-is-clicked-in-story-features-unifiedsharemodal-basic-1-snap.png +0 -0
  539. package/src/features/unified-share-modal/__tests__/__image_snapshots__/unified-share-modal-stories-test-js-features-unified-share-modal-unified-share-modal-looks-visually-correct-when-button-is-clicked-in-story-features-unifiedsharemodal-with-autofocused-shared-link-1-snap.png +0 -0
  540. package/src/features/unified-share-modal/__tests__/__image_snapshots__/unified-share-modal-stories-test-js-features-unified-share-modal-unified-share-modal-looks-visually-correct-when-button-is-clicked-in-story-features-unifiedsharemodal-with-shared-link-1-snap.png +0 -0
  541. package/src/icon/fill/LightningBolt16.js.flow +28 -0
  542. package/src/icon/fill/LightningBolt16.stories.tsx +13 -0
  543. package/src/icon/fill/LightningBolt16.tsx +26 -0
  544. package/src/icon/line/GenericCopy16.js.flow +25 -0
  545. package/src/icon/line/GenericCopy16.stories.tsx +13 -0
  546. package/src/icon/line/GenericCopy16.tsx +23 -0
  547. package/src/styles/_inputs.scss +1 -1
  548. package/src/styles/_variables.scss +2 -0
  549. package/src/styles/common/_buttons.scss +61 -11
  550. package/src/styles/common/_forms.scss +1 -1
  551. package/src/styles/common/_inline-notifications.scss +3 -1
  552. package/src/styles/common/_pills.scss +1 -1
  553. package/src/styles/constants/_buttons.scss +6 -0
  554. package/src/styles/constants/_layout.scss +3 -1
  555. package/src/styles/constants/_typography.scss +9 -1
  556. package/src/styles/mixins/_buttons.scss +15 -0
  557. package/src/styles/mixins/_overlay.scss +2 -2
  558. package/src/styles/variables.js +9 -1
  559. package/src/styles/variables.json +9 -1
  560. package/src/styles/variables.ts +9 -1
  561. package/src/utils/createTheme.stories.js +5 -5
  562. package/src/components/guide-tooltip/__tests__/__snapshots__/GuideTooltip.test.js.snap +0 -142
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/content-uploader/ContentUploader.js"],"names":["React","Component","classNames","getProp","noop","uniqueid","cloneDeep","getTypedFileId","getTypedFolderId","Browser","makeResponsive","Internationalize","FolderUpload","API","getDataTransferItemId","getFileId","getFileFromDataTransferItem","getPackageFileFromDataTransferItem","getFile","getFileAPIOptions","getDataTransferItemAPIOptions","isDataTransferItemAFolder","isDataTransferItemAPackage","isMultiputSupported","DroppableContent","UploadsManager","Footer","DEFAULT_ROOT","CLIENT_NAME_CONTENT_UPLOADER","DEFAULT_HOSTNAME_UPLOAD","DEFAULT_HOSTNAME_API","VIEW_ERROR","VIEW_UPLOAD_EMPTY","VIEW_UPLOAD_IN_PROGRESS","VIEW_UPLOAD_SUCCESS","STATUS_PENDING","STATUS_IN_PROGRESS","STATUS_STAGED","STATUS_COMPLETE","STATUS_ERROR","ERROR_CODE_UPLOAD_FILE_LIMIT","CHUNKED_UPLOAD_MIN_SIZE_BYTES","FILE_LIMIT_DEFAULT","HIDE_UPLOAD_MANAGER_DELAY_MS_DEFAULT","EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD","UPLOAD_CONCURRENCY","ContentUploader","props","token","sharedLink","sharedLinkPassword","apiHost","uploadHost","clientName","requestInterceptor","responseInterceptor","files","rootFolderId","itemIds","state","Array","from","filter","file","items","item","itemUpdateCallback","isRelativePathIgnored","onBeforeUpload","length","newFiles","getNewFiles","newItemIds","forEach","clearTimeout","resetItemsTimeout","firstFile","setState","webkitRelativePath","addFilesWithRelativePathToQueue","addFilesWithoutRelativePathToQueue","droppedItems","addDataTransferItemsToUploadQueue","addFilesToUploadQueue","dataTransferItems","isFolderUploadEnabled","folderItems","fileItems","packageItems","isDirectory","isSafari","push","addFileDataTransferItemsToUploadQueue","addPackageDataTransferItemsToUploadQueue","addFolderDataTransferItemsToUploadQueue","newItems","getNewDataTransferItems","fileAPIOptions","folderId","folderUpload","getFolderUploadAPI","buildFolderTreeFromDataTransferItem","addFolderToUploadQueue","uploadBaseAPIOptions","getBaseAPIOptions","addToQueue","apiOptions","api","extension","isFolder","name","folder","options","progress","size","status","map","uploadFile","uploadAPIOptions","substr","lastIndexOf","getUploadAPI","uploadItem","fileLimit","useUploadsManager","isUploadsManagerExpanded","updatedItems","prevItemsNum","totalNumOfItems","concat","slice","errorCode","isAutoExpanded","expandUploadsManager","updateViewAndCollection","view","upload","onCancel","cancel","splice","indexOf","minimizeUploadsManager","entries","onUpload","error","boxFile","checkClearUploadItems","onError","index","findIndex","singleItem","errorData","event","total","Math","min","round","loaded","onProgress","chunked","isResumableUploadsEnabled","onClickCancel","onClickResume","onClickRetry","isChunkedUpload","isResumable","sessionId","removeFileFromUploadQueue","bytesUploadedOnLastResume","totalUploadedBytes","resumeFile","resetFile","onClick","onMinimize","resetUploadManagerExpandState","setTimeout","resetUploadsManagerItemsWhenUploadsComplete","id","rootElement","document","getElementById","appElement","hasFiles","isArray","hasItems","hasUploads","addFilesWithOptionsToUploadQueueAndStartUpload","fileId","itemFolderId","itemFileId","buildFolderTreeFromWebkitRelativePath","isUploadFallbackLogicEnabled","factory","createAPIFactory","chunkedUploadAPI","getChunkedUploadAPI","console","warn","plainUploadAPI","getPlainUploadAPI","overwrite","numItemsUploading","item_t","uploadOptions","errorCallback","handleUploadError","progressCallback","handleUploadProgress","successCallback","handleUploadSuccess","onResume","resumeOptions","resume","callback","onComplete","someUploadIsInProgress","some","someUploadHasFailed","allItemsArePending","noFileIsPendingOrInProgress","every","areAllItemsFinished","uploadItemsStatus","language","messages","onClose","className","measureRef","isTouch","isDraggingItemsToUploadsManager","isEmpty","isVisible","isLoading","isDone","styleClassName","be","clickAllWithStatus","toggleUploadsManager","addDroppedItemsToUploadQueue","ContentUploaderComponent"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Content Uploader component\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport uniqueid from 'lodash/uniqueId';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { getTypedFileId, getTypedFolderId } from '../../utils/file';\nimport Browser from '../../utils/Browser';\n\nimport makeResponsive from '../common/makeResponsive';\nimport Internationalize from '../common/Internationalize';\nimport FolderUpload from '../../api/uploads/FolderUpload';\nimport API from '../../api';\nimport {\n getDataTransferItemId,\n getFileId,\n getFileFromDataTransferItem,\n getPackageFileFromDataTransferItem,\n getFile,\n getFileAPIOptions,\n getDataTransferItemAPIOptions,\n isDataTransferItemAFolder,\n isDataTransferItemAPackage,\n isMultiputSupported,\n} from '../../utils/uploads';\nimport DroppableContent from './DroppableContent';\nimport UploadsManager from './UploadsManager';\nimport Footer from './Footer';\nimport {\n DEFAULT_ROOT,\n CLIENT_NAME_CONTENT_UPLOADER,\n DEFAULT_HOSTNAME_UPLOAD,\n DEFAULT_HOSTNAME_API,\n VIEW_ERROR,\n VIEW_UPLOAD_EMPTY,\n VIEW_UPLOAD_IN_PROGRESS,\n VIEW_UPLOAD_SUCCESS,\n STATUS_PENDING,\n STATUS_IN_PROGRESS,\n STATUS_STAGED,\n STATUS_COMPLETE,\n STATUS_ERROR,\n ERROR_CODE_UPLOAD_FILE_LIMIT,\n} from '../../constants';\nimport type {\n UploadItem,\n UploadDataTransferItemWithAPIOptions,\n UploadFileWithAPIOptions,\n UploadFile,\n UploadItemAPIOptions,\n UploadStatus,\n} from '../../common/types/upload';\nimport type { StringMap, Token, View, BoxItem } from '../../common/types/core';\nimport '../common/fonts.scss';\nimport '../common/base.scss';\n\ntype Props = {\n apiHost: string,\n chunked: boolean,\n className: string,\n clientName: string,\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n fileLimit: number,\n files?: Array<UploadFileWithAPIOptions | File>,\n isDraggingItemsToUploadsManager?: boolean,\n isFolderUploadEnabled: boolean,\n isLarge: boolean,\n isResumableUploadsEnabled: boolean,\n isSmall: boolean,\n isTouch: boolean,\n isUploadFallbackLogicEnabled: boolean,\n language?: string,\n measureRef: Function,\n messages?: StringMap,\n onBeforeUpload: (file: Array<UploadFileWithAPIOptions | File>) => void,\n onCancel: Function,\n onClickCancel: UploadItem => void,\n onClickResume: UploadItem => void,\n onClickRetry: UploadItem => void,\n onClose: Function,\n onComplete: Function,\n onError: Function,\n onMinimize?: Function,\n onProgress: Function,\n onResume: Function,\n onUpload: Function,\n overwrite: boolean,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n rootFolderId: string,\n sharedLink?: string,\n sharedLinkPassword?: string,\n token?: Token,\n uploadHost: string,\n useUploadsManager?: boolean,\n};\n\ntype State = {\n errorCode?: string,\n isUploadsManagerExpanded: boolean,\n itemIds: Object,\n items: UploadItem[],\n view: View,\n};\n\nconst CHUNKED_UPLOAD_MIN_SIZE_BYTES = 104857600; // 100MB\nconst FILE_LIMIT_DEFAULT = 100; // Upload at most 100 files at once by default\nconst HIDE_UPLOAD_MANAGER_DELAY_MS_DEFAULT = 8000;\nconst EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD = 5;\nconst UPLOAD_CONCURRENCY = 6;\n\nclass ContentUploader extends Component<Props, State> {\n id: string;\n\n state: State;\n\n props: Props;\n\n rootElement: HTMLElement;\n\n appElement: HTMLElement;\n\n resetItemsTimeout: TimeoutID;\n\n isAutoExpanded: boolean = false;\n\n static defaultProps = {\n rootFolderId: DEFAULT_ROOT,\n apiHost: DEFAULT_HOSTNAME_API,\n chunked: true,\n className: '',\n clientName: CLIENT_NAME_CONTENT_UPLOADER,\n fileLimit: FILE_LIMIT_DEFAULT,\n uploadHost: DEFAULT_HOSTNAME_UPLOAD,\n onBeforeUpload: noop,\n onClickCancel: noop,\n onClickResume: noop,\n onClickRetry: noop,\n onClose: noop,\n onComplete: noop,\n onError: noop,\n onResume: noop,\n onUpload: noop,\n onProgress: noop,\n overwrite: true,\n useUploadsManager: false,\n files: [],\n onMinimize: noop,\n onCancel: noop,\n isFolderUploadEnabled: false,\n isResumableUploadsEnabled: false,\n isUploadFallbackLogicEnabled: false,\n dataTransferItems: [],\n isDraggingItemsToUploadsManager: false,\n };\n\n /**\n * [constructor]\n *\n * @return {ContentUploader}\n */\n constructor(props: Props) {\n super(props);\n\n const { rootFolderId, token, useUploadsManager } = props;\n this.state = {\n view: (rootFolderId && token) || useUploadsManager ? VIEW_UPLOAD_EMPTY : VIEW_ERROR,\n items: [],\n errorCode: '',\n itemIds: {},\n isUploadsManagerExpanded: false,\n };\n this.id = uniqueid('bcu_');\n }\n\n /**\n * Fetches the root folder on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n this.rootElement = ((document.getElementById(this.id): any): HTMLElement);\n this.appElement = this.rootElement;\n }\n\n /**\n * Cancels pending uploads\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n this.cancel();\n }\n\n /**\n * Adds new items to the queue when files prop gets updated in window view\n *\n * @return {void}\n */\n componentDidUpdate(): void {\n const { files, dataTransferItems, useUploadsManager } = this.props;\n\n const hasFiles = Array.isArray(files) && files.length > 0;\n const hasItems = Array.isArray(dataTransferItems) && dataTransferItems.length > 0;\n const hasUploads = hasFiles || hasItems;\n\n if (!useUploadsManager || !hasUploads) {\n return;\n }\n\n // TODO: this gets called unnecessarily (upon each render regardless of the queue not changing)\n this.addFilesWithOptionsToUploadQueueAndStartUpload(files, dataTransferItems);\n }\n\n /**\n * Create and return new instance of API creator\n *\n * @param {UploadItemAPIOptions} [uploadAPIOptions]\n * @return {API}\n */\n createAPIFactory(uploadAPIOptions?: UploadItemAPIOptions): API {\n const { rootFolderId } = this.props;\n const folderId = getProp(uploadAPIOptions, 'folderId') || rootFolderId;\n const fileId = getProp(uploadAPIOptions, 'fileId');\n const itemFolderId = getTypedFolderId(folderId);\n const itemFileId = fileId ? getTypedFileId(fileId) : null;\n\n return new API({\n ...this.getBaseAPIOptions(),\n id: itemFileId || itemFolderId,\n ...uploadAPIOptions,\n });\n }\n\n /**\n * Return base API options from props\n *\n * @private\n * @returns {Object}\n */\n getBaseAPIOptions = (): Object => {\n const {\n token,\n sharedLink,\n sharedLinkPassword,\n apiHost,\n uploadHost,\n clientName,\n requestInterceptor,\n responseInterceptor,\n } = this.props;\n\n return {\n token,\n sharedLink,\n sharedLinkPassword,\n apiHost,\n uploadHost,\n clientName,\n requestInterceptor,\n responseInterceptor,\n };\n };\n\n /**\n * Given an array of files, return the files that are new to the Content Uploader\n *\n * @param {Array<UploadFileWithAPIOptions | File>} files\n */\n getNewFiles = (files: Array<UploadFileWithAPIOptions | File>): Array<UploadFileWithAPIOptions | File> => {\n const { rootFolderId } = this.props;\n const { itemIds } = this.state;\n\n return Array.from(files).filter(file => !itemIds[getFileId(file, rootFolderId)]);\n };\n\n /**\n * Given an array of files, return the files that are new to the Content Uploader\n *\n * @param {Array<UploadFileWithAPIOptions | File>} files\n */\n getNewDataTransferItems = (\n items: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n ): Array<DataTransferItem | UploadDataTransferItemWithAPIOptions> => {\n const { rootFolderId } = this.props;\n const { itemIds } = this.state;\n\n return Array.from(items).filter(item => !itemIds[getDataTransferItemId(item, rootFolderId)]);\n };\n\n /**\n * Converts File API to upload items and adds to upload queue.\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | UploadFile>} files - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @param {boolean} [isRelativePathIgnored] - if true webkitRelativePath property is ignored\n * @return {void}\n */\n addFilesToUploadQueue = (\n files?: Array<UploadFileWithAPIOptions | UploadFile>,\n itemUpdateCallback: Function,\n isRelativePathIgnored?: boolean = false,\n ) => {\n const { onBeforeUpload, rootFolderId } = this.props;\n if (!files || files.length === 0) {\n return;\n }\n\n const newFiles = this.getNewFiles(files);\n\n if (newFiles.length === 0) {\n return;\n }\n\n const newItemIds = {};\n\n newFiles.forEach(file => {\n newItemIds[getFileId(file, rootFolderId)] = true;\n });\n\n clearTimeout(this.resetItemsTimeout);\n\n const firstFile = getFile(newFiles[0]);\n\n this.setState(\n state => ({\n itemIds: {\n ...state.itemIds,\n ...newItemIds,\n },\n }),\n () => {\n onBeforeUpload(newFiles);\n if (firstFile.webkitRelativePath && !isRelativePathIgnored) {\n // webkitRelativePath should be ignored when the upload destination folder is known\n this.addFilesWithRelativePathToQueue(newFiles, itemUpdateCallback);\n } else {\n this.addFilesWithoutRelativePathToQueue(newFiles, itemUpdateCallback);\n }\n },\n );\n };\n\n /**\n * Add dropped items to the upload queue\n *\n * @private\n * @param {DataTransfer} droppedItems\n * @param {Function} itemUpdateCallback\n * @returns {Promise<any>}\n */\n addDroppedItemsToUploadQueue = (droppedItems: DataTransfer, itemUpdateCallback: Function): void => {\n if (droppedItems.items) {\n this.addDataTransferItemsToUploadQueue(droppedItems.items, itemUpdateCallback);\n } else {\n Array.from(droppedItems.files).forEach(file => {\n this.addFilesToUploadQueue([file], itemUpdateCallback);\n });\n }\n };\n\n /**\n * Add dataTransferItems to the upload queue\n *\n * @private\n * @param {DataTransferItemList} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {Promise<any>}\n */\n addDataTransferItemsToUploadQueue = (\n dataTransferItems: DataTransferItemList | Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): void => {\n const { isFolderUploadEnabled } = this.props;\n if (!dataTransferItems || dataTransferItems.length === 0) {\n return;\n }\n\n const folderItems = [];\n const fileItems = [];\n const packageItems = [];\n Array.from(dataTransferItems).forEach(item => {\n const isDirectory = isDataTransferItemAFolder(item);\n if (Browser.isSafari() && isDataTransferItemAPackage(item)) {\n packageItems.push(item);\n } else if (isDirectory && isFolderUploadEnabled) {\n folderItems.push(item);\n } else if (!isDirectory) {\n fileItems.push(item);\n }\n });\n\n this.addFileDataTransferItemsToUploadQueue(fileItems, itemUpdateCallback);\n this.addPackageDataTransferItemsToUploadQueue(packageItems, itemUpdateCallback);\n this.addFolderDataTransferItemsToUploadQueue(folderItems, itemUpdateCallback);\n };\n\n /**\n * Add dataTransferItem of file type to the upload queue\n *\n * @private\n * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {void}\n */\n addFileDataTransferItemsToUploadQueue = (\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): void => {\n dataTransferItems.forEach(async item => {\n const file = await getFileFromDataTransferItem(item);\n if (!file) {\n return;\n }\n\n this.addFilesToUploadQueue([file], itemUpdateCallback);\n });\n };\n\n /**\n * Add dataTransferItem of package type to the upload queue\n *\n * @private\n * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {void}\n */\n addPackageDataTransferItemsToUploadQueue = (\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): void => {\n dataTransferItems.forEach(item => {\n const file = getPackageFileFromDataTransferItem(item);\n\n if (!file) {\n return;\n }\n\n this.addFilesToUploadQueue([file], itemUpdateCallback);\n });\n };\n\n /**\n * Add dataTransferItem of folder type to the upload queue\n *\n * @private\n * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {Promise<any>}\n */\n addFolderDataTransferItemsToUploadQueue = async (\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): Promise<any> => {\n const { rootFolderId } = this.props;\n const { itemIds } = this.state;\n if (dataTransferItems.length === 0) {\n return;\n }\n\n const newItems = this.getNewDataTransferItems(dataTransferItems);\n newItems.forEach(item => {\n itemIds[getDataTransferItemId(item, rootFolderId)] = true;\n });\n\n if (newItems.length === 0) {\n return;\n }\n\n const fileAPIOptions: Object = getDataTransferItemAPIOptions(newItems[0]);\n const { folderId = rootFolderId } = fileAPIOptions;\n newItems.forEach(async item => {\n const folderUpload = this.getFolderUploadAPI(folderId);\n await folderUpload.buildFolderTreeFromDataTransferItem(item);\n this.addFolderToUploadQueue(folderUpload, itemUpdateCallback, fileAPIOptions);\n });\n };\n\n /**\n * Converts File API to upload items and adds to upload queue for files with webkitRelativePath.\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | File>} files - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @return {void}\n */\n addFilesWithRelativePathToQueue(files: Array<UploadFileWithAPIOptions | File>, itemUpdateCallback: Function) {\n if (files.length === 0) {\n return;\n }\n\n const { rootFolderId } = this.props;\n const fileAPIOptions: Object = getFileAPIOptions(files[0]);\n const { folderId = rootFolderId } = fileAPIOptions;\n const folderUpload = this.getFolderUploadAPI(folderId);\n\n // Only 1 folder tree can be built with files having webkitRelativePath properties\n folderUpload.buildFolderTreeFromWebkitRelativePath(files);\n\n this.addFolderToUploadQueue(folderUpload, itemUpdateCallback, fileAPIOptions);\n }\n\n /**\n * Get folder upload API instance\n *\n * @private\n * @param {string} folderId\n * @return {FolderUpload}\n */\n getFolderUploadAPI = (folderId: string): FolderUpload => {\n const uploadBaseAPIOptions = this.getBaseAPIOptions();\n\n return new FolderUpload(this.addFilesToUploadQueue, folderId, this.addToQueue, uploadBaseAPIOptions);\n };\n\n /**\n * Add folder to upload queue\n *\n * @private\n * @param {FolderUpload} folderUpload\n * @param {Function} itemUpdateCallback\n * @param {Object} apiOptions\n * @return {void}\n */\n addFolderToUploadQueue = (folderUpload: FolderUpload, itemUpdateCallback: Function, apiOptions: Object): void => {\n this.addToQueue(\n [\n // $FlowFixMe no file property\n {\n api: folderUpload,\n extension: '',\n isFolder: true,\n name: folderUpload.folder.name,\n options: apiOptions,\n progress: 0,\n size: 1,\n status: STATUS_PENDING,\n },\n ],\n itemUpdateCallback,\n );\n };\n\n /**\n * Converts File API to upload items and adds to upload queue for files with webkitRelativePath missing or ignored.\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | File>} files - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @return {void}\n */\n addFilesWithoutRelativePathToQueue = (\n files: Array<UploadFileWithAPIOptions | File>,\n itemUpdateCallback: Function,\n ) => {\n const { itemIds } = this.state;\n const { rootFolderId } = this.props;\n\n // Convert files from the file API to upload items\n const newItems = files.map(file => {\n const uploadFile = getFile(file);\n const uploadAPIOptions = getFileAPIOptions(file);\n const { name, size } = uploadFile;\n\n // Extract extension or use empty string if file has no extension\n let extension = name.substr(name.lastIndexOf('.') + 1);\n if (extension.length === name.length) {\n extension = '';\n }\n\n const api = this.getUploadAPI(uploadFile, uploadAPIOptions);\n const uploadItem: Object = {\n api,\n extension,\n file: uploadFile,\n name,\n progress: 0,\n size,\n status: STATUS_PENDING,\n };\n\n if (uploadAPIOptions) {\n uploadItem.options = uploadAPIOptions;\n }\n\n itemIds[getFileId(uploadItem, rootFolderId)] = true;\n\n return uploadItem;\n });\n\n if (newItems.length === 0) {\n return;\n }\n\n this.setState({\n itemIds,\n });\n this.addToQueue(newItems, itemUpdateCallback);\n };\n\n /**\n * Add new items to the upload queue\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | File>} newItems - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @return {void}\n */\n addToQueue = (newItems: UploadItem[], itemUpdateCallback: Function) => {\n const { fileLimit, useUploadsManager } = this.props;\n const { items, isUploadsManagerExpanded } = this.state;\n\n let updatedItems = [];\n const prevItemsNum = items.length;\n const totalNumOfItems = prevItemsNum + newItems.length;\n\n // Don't add more than fileLimit # of items\n if (totalNumOfItems > fileLimit) {\n updatedItems = items.concat(newItems.slice(0, fileLimit - items.length));\n this.setState({\n errorCode: ERROR_CODE_UPLOAD_FILE_LIMIT,\n });\n } else {\n updatedItems = items.concat(newItems);\n this.setState({ errorCode: '' });\n\n // If the number of items being uploaded passes the threshold, expand the upload manager\n if (\n prevItemsNum < EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD &&\n totalNumOfItems >= EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD &&\n useUploadsManager &&\n !isUploadsManagerExpanded\n ) {\n this.isAutoExpanded = true;\n this.expandUploadsManager();\n }\n }\n\n this.updateViewAndCollection(updatedItems, () => {\n if (itemUpdateCallback) {\n itemUpdateCallback();\n }\n\n const { view } = this.state;\n // Automatically start upload if other files are being uploaded\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n /**\n * Returns a new API instance for the given file.\n *\n * @private\n * @param {File} file - File to get a new API instance for\n * @param {UploadItemAPIOptions} [uploadAPIOptions]\n * @return {UploadAPI} - Instance of Upload API\n */\n getUploadAPI(file: File, uploadAPIOptions?: UploadItemAPIOptions) {\n const { chunked, isResumableUploadsEnabled, isUploadFallbackLogicEnabled } = this.props;\n const { size } = file;\n const factory = this.createAPIFactory(uploadAPIOptions);\n\n if (chunked && size > CHUNKED_UPLOAD_MIN_SIZE_BYTES) {\n if (isMultiputSupported()) {\n const chunkedUploadAPI = factory.getChunkedUploadAPI();\n if (isResumableUploadsEnabled) {\n chunkedUploadAPI.isResumableUploadsEnabled = true;\n }\n if (isUploadFallbackLogicEnabled) {\n chunkedUploadAPI.isUploadFallbackLogicEnabled = true;\n }\n return chunkedUploadAPI;\n }\n\n /* eslint-disable no-console */\n console.warn(\n 'Chunked uploading is enabled, but not supported by your browser. You may need to enable HTTPS.',\n );\n /* eslint-enable no-console */\n }\n\n const plainUploadAPI = factory.getPlainUploadAPI();\n if (isUploadFallbackLogicEnabled) {\n plainUploadAPI.isUploadFallbackLogicEnabled = true;\n }\n\n return plainUploadAPI;\n }\n\n /**\n * Removes an item from the upload queue. Cancels upload if in progress.\n *\n * @param {UploadItem} item - Item to remove\n * @return {void}\n */\n removeFileFromUploadQueue = (item: UploadItem) => {\n const { onCancel, useUploadsManager } = this.props;\n const { items } = this.state;\n // Clear any error errorCode in footer\n this.setState({ errorCode: '' });\n\n const { api } = item;\n api.cancel();\n\n items.splice(items.indexOf(item), 1);\n\n onCancel([item]);\n this.updateViewAndCollection(items, () => {\n // Minimize uploads manager if there are no more items\n if (useUploadsManager && !items.length) {\n this.minimizeUploadsManager();\n }\n\n const { view } = this.state;\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n /**\n * Aborts uploads in progress and clears upload list.\n *\n * @private\n * @return {void}\n */\n cancel = () => {\n const { items } = this.state;\n items.forEach(uploadItem => {\n const { api, status } = uploadItem;\n if (status === STATUS_IN_PROGRESS) {\n api.cancel();\n }\n });\n\n // Reset upload collection\n this.updateViewAndCollection([]);\n };\n\n /**\n * Uploads all items in the upload collection.\n *\n * @private\n * @return {void}\n */\n upload = () => {\n const { items } = this.state;\n items.forEach(uploadItem => {\n if (uploadItem.status === STATUS_PENDING) {\n this.uploadFile(uploadItem);\n }\n });\n };\n\n /**\n * Helper to upload a single file.\n *\n * @param {UploadItem} item - Upload item object\n * @return {void}\n */\n uploadFile(item: UploadItem) {\n const { overwrite, rootFolderId } = this.props;\n const { api, file, options } = item;\n const { items } = this.state;\n\n const numItemsUploading = items.filter(item_t => item_t.status === STATUS_IN_PROGRESS).length;\n\n if (numItemsUploading >= UPLOAD_CONCURRENCY) {\n return;\n }\n\n const uploadOptions: Object = {\n file,\n folderId: options && options.folderId ? options.folderId : rootFolderId,\n errorCallback: error => this.handleUploadError(item, error),\n progressCallback: event => this.handleUploadProgress(item, event),\n successCallback: entries => this.handleUploadSuccess(item, entries),\n overwrite,\n fileId: options && options.fileId ? options.fileId : null,\n };\n\n item.status = STATUS_IN_PROGRESS;\n items[items.indexOf(item)] = item;\n\n api.upload(uploadOptions);\n\n this.updateViewAndCollection(items);\n }\n\n /**\n * Helper to resume uploading a single file.\n *\n * @param {UploadItem} item - Upload item object\n * @return {void}\n */\n resumeFile(item: UploadItem) {\n const { overwrite, rootFolderId, onResume } = this.props;\n const { api, file, options } = item;\n const { items } = this.state;\n\n const numItemsUploading = items.filter(item_t => item_t.status === STATUS_IN_PROGRESS).length;\n\n if (numItemsUploading >= UPLOAD_CONCURRENCY) {\n return;\n }\n\n const resumeOptions: Object = {\n file,\n folderId: options && options.folderId ? options.folderId : rootFolderId,\n errorCallback: error => this.handleUploadError(item, error),\n progressCallback: event => this.handleUploadProgress(item, event),\n successCallback: entries => this.handleUploadSuccess(item, entries),\n overwrite,\n sessionId: api && api.sessionId ? api.sessionId : null,\n fileId: options && options.fileId ? options.fileId : null,\n };\n\n item.status = STATUS_IN_PROGRESS;\n delete item.error;\n items[items.indexOf(item)] = item;\n\n onResume(item);\n api.resume(resumeOptions);\n\n this.updateViewAndCollection(items);\n }\n\n /**\n * Helper to reset a file. Cancels any current upload and resets progress.\n *\n * @param {UploadItem} item - Upload item to reset\n * @return {void}\n */\n resetFile(item: UploadItem) {\n const { api, file, options } = item;\n if (api && typeof api.cancel === 'function') {\n api.cancel();\n }\n\n // Reset API, progress & status\n item.api = this.getUploadAPI(file, options);\n item.progress = 0;\n item.status = STATUS_PENDING;\n delete item.error;\n\n const { items } = this.state;\n items[items.indexOf(item)] = item;\n\n this.updateViewAndCollection(items);\n }\n\n /**\n * Handles a successful upload.\n *\n * @private\n * @param {UploadItem} item - Upload item corresponding to success event\n * @param {BoxItem[]} entries - Successfully uploaded Box File objects\n * @return {void}\n */\n handleUploadSuccess = (item: UploadItem, entries?: BoxItem[]) => {\n const { onUpload, useUploadsManager } = this.props;\n\n item.progress = 100;\n if (!item.error) {\n item.status = STATUS_COMPLETE;\n }\n\n // Cache Box File object of successfully uploaded item\n if (entries && entries.length === 1) {\n const [boxFile] = entries;\n item.boxFile = boxFile;\n }\n\n const { items } = this.state;\n items[items.indexOf(item)] = item;\n\n // Broadcast that a file has been uploaded\n if (useUploadsManager) {\n onUpload(item);\n this.checkClearUploadItems();\n } else {\n onUpload(item.boxFile);\n }\n\n this.updateViewAndCollection(items, () => {\n const { view } = this.state;\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n resetUploadManagerExpandState = () => {\n this.isAutoExpanded = false;\n this.setState({\n isUploadsManagerExpanded: false,\n });\n };\n\n /**\n * Updates view and internal upload collection with provided items.\n *\n * @private\n * @param {UploadItem[]} item - Items to update collection with\n * @param {Function} callback\n * @return {void}\n */\n updateViewAndCollection(items: UploadItem[], callback?: Function) {\n const { onComplete, useUploadsManager, isResumableUploadsEnabled }: Props = this.props;\n const someUploadIsInProgress = items.some(uploadItem => uploadItem.status !== STATUS_COMPLETE);\n const someUploadHasFailed = items.some(uploadItem => uploadItem.status === STATUS_ERROR);\n const allItemsArePending = !items.some(uploadItem => uploadItem.status !== STATUS_PENDING);\n const noFileIsPendingOrInProgress = items.every(\n uploadItem => uploadItem.status !== STATUS_PENDING && uploadItem.status !== STATUS_IN_PROGRESS,\n );\n const areAllItemsFinished = items.every(\n uploadItem => uploadItem.status === STATUS_COMPLETE || uploadItem.status === STATUS_ERROR,\n );\n const uploadItemsStatus = isResumableUploadsEnabled ? areAllItemsFinished : noFileIsPendingOrInProgress;\n\n let view = '';\n if ((items && items.length === 0) || allItemsArePending) {\n view = VIEW_UPLOAD_EMPTY;\n } else if (someUploadHasFailed && useUploadsManager) {\n view = VIEW_ERROR;\n } else if (someUploadIsInProgress) {\n view = VIEW_UPLOAD_IN_PROGRESS;\n } else {\n view = VIEW_UPLOAD_SUCCESS;\n\n if (!useUploadsManager) {\n onComplete(cloneDeep(items.map(item => item.boxFile)));\n // Reset item collection after successful upload\n items = [];\n }\n }\n\n if (uploadItemsStatus && useUploadsManager) {\n if (this.isAutoExpanded) {\n this.resetUploadManagerExpandState();\n } // Else manually expanded so don't close\n onComplete(items);\n }\n\n const state: Object = {\n items,\n view,\n };\n\n if (items.length === 0) {\n state.itemIds = {};\n state.errorCode = '';\n }\n\n this.setState(state, callback);\n }\n\n /**\n * Handles an upload error.\n *\n * @private\n * @param {UploadItem} item - Upload item corresponding to error\n * @param {Error} error - Upload error\n * @return {void}\n */\n handleUploadError = (item: UploadItem, error: Error) => {\n const { onError, useUploadsManager } = this.props;\n const { file } = item;\n const { items } = this.state;\n\n item.status = STATUS_ERROR;\n item.error = error;\n\n const newItems = [...items];\n const index = newItems.findIndex(singleItem => singleItem === item);\n if (index !== -1) {\n newItems[index] = item;\n }\n\n // Broadcast that there was an error uploading a file\n const errorData = useUploadsManager\n ? {\n item,\n error,\n }\n : {\n file,\n error,\n };\n\n onError(errorData);\n\n this.updateViewAndCollection(newItems, () => {\n if (useUploadsManager) {\n this.isAutoExpanded = true;\n this.expandUploadsManager();\n }\n const { view } = this.state;\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n /**\n * Handles an upload progress event.\n *\n * @private\n * @param {UploadItem} item - Upload item corresponding to progress event\n * @param {ProgressEvent} event - Progress event\n * @return {void}\n */\n handleUploadProgress = (item: UploadItem, event: any) => {\n if (!event.total || item.status === STATUS_COMPLETE || item.status === STATUS_STAGED) {\n return;\n }\n\n item.progress = Math.min(Math.round((event.loaded / event.total) * 100), 100);\n item.status = item.progress === 100 ? STATUS_STAGED : STATUS_IN_PROGRESS;\n\n const { onProgress } = this.props;\n onProgress(item);\n\n const { items } = this.state;\n items[items.indexOf(item)] = item;\n\n this.updateViewAndCollection(items);\n };\n\n /**\n * Updates item based on its status.\n *\n * @private\n * @param {UploadItem} item - The upload item to update\n * @return {void}\n */\n onClick = (item: UploadItem) => {\n const { chunked, isResumableUploadsEnabled, onClickCancel, onClickResume, onClickRetry } = this.props;\n const { status, file } = item;\n const isChunkedUpload =\n chunked && !item.isFolder && file.size > CHUNKED_UPLOAD_MIN_SIZE_BYTES && isMultiputSupported();\n const isResumable = isResumableUploadsEnabled && isChunkedUpload && item.api.sessionId;\n\n switch (status) {\n case STATUS_IN_PROGRESS:\n case STATUS_STAGED:\n case STATUS_COMPLETE:\n case STATUS_PENDING:\n this.removeFileFromUploadQueue(item);\n onClickCancel(item);\n break;\n case STATUS_ERROR:\n if (isResumable) {\n item.bytesUploadedOnLastResume = item.api.totalUploadedBytes;\n this.resumeFile(item);\n onClickResume(item);\n } else {\n this.resetFile(item);\n this.uploadFile(item);\n onClickRetry(item);\n }\n break;\n default:\n break;\n }\n };\n\n /**\n * Click action button for all uploads in the Uploads Manager with the given status.\n *\n * @private\n * @param {UploadStatus} - the status that items should have for their action button to be clicked\n * @return {void}\n */\n clickAllWithStatus = (status?: UploadStatus) => {\n const { items } = this.state;\n\n items.forEach(item => {\n if (!status || item.status === status) {\n this.onClick(item);\n }\n });\n };\n\n /**\n * Expands the upload manager\n *\n * @return {void}\n */\n expandUploadsManager = (): void => {\n const { useUploadsManager } = this.props;\n\n if (!useUploadsManager) {\n return;\n }\n\n clearTimeout(this.resetItemsTimeout);\n\n this.setState({ isUploadsManagerExpanded: true });\n };\n\n /**\n * Minimizes the upload manager\n *\n * @return {void}\n */\n minimizeUploadsManager = (): void => {\n const { useUploadsManager, onMinimize } = this.props;\n\n if (!useUploadsManager || !onMinimize) {\n return;\n }\n\n clearTimeout(this.resetItemsTimeout);\n\n onMinimize();\n this.resetUploadManagerExpandState();\n this.checkClearUploadItems();\n };\n\n /**\n * Checks if the upload items should be cleared after a timeout\n *\n * @return {void}\n */\n checkClearUploadItems = () => {\n this.resetItemsTimeout = setTimeout(\n this.resetUploadsManagerItemsWhenUploadsComplete,\n HIDE_UPLOAD_MANAGER_DELAY_MS_DEFAULT,\n );\n };\n\n /**\n * Toggles the upload manager\n *\n * @return {void}\n */\n toggleUploadsManager = (): void => {\n const { isUploadsManagerExpanded } = this.state;\n\n if (isUploadsManagerExpanded) {\n this.minimizeUploadsManager();\n } else {\n this.expandUploadsManager();\n }\n };\n\n /**\n * Empties the items queue\n *\n * @return {void}\n */\n resetUploadsManagerItemsWhenUploadsComplete = (): void => {\n const { view, items, isUploadsManagerExpanded } = this.state;\n const { useUploadsManager, onCancel } = this.props;\n\n // Do not reset items when upload manger is expanded or there're uploads in progress\n if ((isUploadsManagerExpanded && useUploadsManager && !!items.length) || view === VIEW_UPLOAD_IN_PROGRESS) {\n return;\n }\n\n onCancel(items);\n\n this.setState({\n items: [],\n itemIds: {},\n });\n };\n\n /**\n * Adds file to the upload queue and starts upload immediately\n *\n * @param {Array<UploadFileWithAPIOptions | File>} files - Files to be added to upload queue\n * @return {void}\n */\n addFilesWithOptionsToUploadQueueAndStartUpload = (\n files?: Array<UploadFileWithAPIOptions | File>,\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n ): void => {\n this.addFilesToUploadQueue(files, this.upload);\n this.addDataTransferItemsToUploadQueue(dataTransferItems, this.upload);\n };\n\n /**\n * Renders the content uploader\n *\n * @inheritdoc\n * @return {Component}\n */\n render() {\n const {\n language,\n messages,\n onClose,\n className,\n measureRef,\n isTouch,\n fileLimit,\n useUploadsManager,\n isResumableUploadsEnabled,\n isFolderUploadEnabled,\n isDraggingItemsToUploadsManager = false,\n }: Props = this.props;\n const { view, items, errorCode, isUploadsManagerExpanded }: State = this.state;\n const isEmpty = items.length === 0;\n const isVisible = !isEmpty || !!isDraggingItemsToUploadsManager;\n\n const hasFiles = items.length !== 0;\n const isLoading = items.some(item => item.status === STATUS_IN_PROGRESS);\n const isDone = items.every(item => item.status === STATUS_COMPLETE || item.status === STATUS_STAGED);\n\n const styleClassName = classNames('bcu', className, {\n 'be-app-element': !useUploadsManager,\n be: !useUploadsManager,\n });\n\n return (\n <Internationalize language={language} messages={messages}>\n {useUploadsManager ? (\n <div ref={measureRef} className={styleClassName} id={this.id}>\n <UploadsManager\n isDragging={isDraggingItemsToUploadsManager}\n isExpanded={isUploadsManagerExpanded}\n isResumableUploadsEnabled={isResumableUploadsEnabled}\n isVisible={isVisible}\n items={items}\n onItemActionClick={this.onClick}\n onRemoveActionClick={this.removeFileFromUploadQueue}\n onUploadsManagerActionClick={this.clickAllWithStatus}\n toggleUploadsManager={this.toggleUploadsManager}\n view={view}\n />\n </div>\n ) : (\n <div ref={measureRef} className={styleClassName} id={this.id}>\n <DroppableContent\n addDataTransferItemsToUploadQueue={this.addDroppedItemsToUploadQueue}\n addFiles={this.addFilesToUploadQueue}\n allowedTypes={['Files']}\n isFolderUploadEnabled={isFolderUploadEnabled}\n isTouch={isTouch}\n items={items}\n onClick={this.onClick}\n view={view}\n />\n <Footer\n errorCode={errorCode}\n fileLimit={fileLimit}\n hasFiles={hasFiles}\n isLoading={isLoading}\n onCancel={this.cancel}\n onClose={onClose}\n onUpload={this.upload}\n isDone={isDone}\n />\n </div>\n )}\n </Internationalize>\n );\n }\n}\n\nexport type ContentUploaderProps = Props;\nexport default makeResponsive(ContentUploader);\nexport { ContentUploader as ContentUploaderComponent, CHUNKED_UPLOAD_MIN_SIZE_BYTES };\n"],"file":"ContentUploader.js"}
1
+ {"version":3,"sources":["../../../src/elements/content-uploader/ContentUploader.js"],"names":["React","Component","classNames","getProp","noop","uniqueid","cloneDeep","getTypedFileId","getTypedFolderId","Browser","makeResponsive","Internationalize","FolderUpload","API","getDataTransferItemId","getFileId","getFileFromDataTransferItem","getPackageFileFromDataTransferItem","getFile","getFileAPIOptions","getDataTransferItemAPIOptions","isDataTransferItemAFolder","isDataTransferItemAPackage","isMultiputSupported","DroppableContent","UploadsManager","Footer","DEFAULT_ROOT","CLIENT_NAME_CONTENT_UPLOADER","DEFAULT_HOSTNAME_UPLOAD","DEFAULT_HOSTNAME_API","VIEW_ERROR","VIEW_UPLOAD_EMPTY","VIEW_UPLOAD_IN_PROGRESS","VIEW_UPLOAD_SUCCESS","STATUS_PENDING","STATUS_IN_PROGRESS","STATUS_STAGED","STATUS_COMPLETE","STATUS_ERROR","ERROR_CODE_UPLOAD_FILE_LIMIT","CHUNKED_UPLOAD_MIN_SIZE_BYTES","FILE_LIMIT_DEFAULT","HIDE_UPLOAD_MANAGER_DELAY_MS_DEFAULT","EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD","UPLOAD_CONCURRENCY","ContentUploader","props","token","sharedLink","sharedLinkPassword","apiHost","uploadHost","clientName","requestInterceptor","responseInterceptor","files","rootFolderId","itemIds","state","Array","from","filter","file","items","item","itemUpdateCallback","isRelativePathIgnored","onBeforeUpload","length","newFiles","getNewFiles","newItemIds","forEach","clearTimeout","resetItemsTimeout","firstFile","setState","webkitRelativePath","addFilesWithRelativePathToQueue","addFilesWithoutRelativePathToQueue","droppedItems","addDataTransferItemsToUploadQueue","addFilesToUploadQueue","dataTransferItems","isFolderUploadEnabled","folderItems","fileItems","packageItems","isDirectory","isSafari","push","addFileDataTransferItemsToUploadQueue","addPackageDataTransferItemsToUploadQueue","addFolderDataTransferItemsToUploadQueue","newItems","getNewDataTransferItems","fileAPIOptions","folderId","folderUpload","getFolderUploadAPI","buildFolderTreeFromDataTransferItem","addFolderToUploadQueue","uploadBaseAPIOptions","getBaseAPIOptions","addToQueue","apiOptions","api","extension","isFolder","name","folder","options","progress","size","status","map","uploadFile","uploadAPIOptions","substr","lastIndexOf","getUploadAPI","uploadItem","fileLimit","useUploadsManager","isUploadsManagerExpanded","updatedItems","prevItemsNum","totalNumOfItems","concat","slice","errorCode","isAutoExpanded","expandUploadsManager","updateViewAndCollection","view","upload","onCancel","cancel","splice","indexOf","minimizeUploadsManager","entries","onUpload","error","boxFile","checkClearUploadItems","onError","index","findIndex","singleItem","errorData","event","total","Math","min","round","loaded","onProgress","chunked","isResumableUploadsEnabled","onClickCancel","onClickResume","onClickRetry","isChunkedUpload","isResumable","sessionId","removeFileFromUploadQueue","bytesUploadedOnLastResume","totalUploadedBytes","resumeFile","resetFile","onClick","onMinimize","resetUploadManagerExpandState","setTimeout","resetUploadsManagerItemsWhenUploadsComplete","id","rootElement","document","getElementById","appElement","hasFiles","isArray","hasItems","hasUploads","addFilesWithOptionsToUploadQueueAndStartUpload","fileId","itemFolderId","itemFileId","buildFolderTreeFromWebkitRelativePath","isUploadFallbackLogicEnabled","factory","createAPIFactory","chunkedUploadAPI","getChunkedUploadAPI","console","warn","plainUploadAPI","getPlainUploadAPI","overwrite","numItemsUploading","item_t","uploadOptions","errorCallback","handleUploadError","progressCallback","handleUploadProgress","successCallback","handleUploadSuccess","onResume","resumeOptions","resume","callback","onComplete","someUploadIsInProgress","some","someUploadHasFailed","allItemsArePending","noFileIsPendingOrInProgress","every","areAllItemsFinished","uploadItemsStatus","className","isDraggingItemsToUploadsManager","isTouch","language","measureRef","messages","onClose","onUpgradeCTAClick","isEmpty","isVisible","isLoading","isDone","styleClassName","be","clickAllWithStatus","toggleUploadsManager","addDroppedItemsToUploadQueue","ContentUploaderComponent"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Content Uploader component\n * @author Box\n */\n\nimport 'regenerator-runtime/runtime';\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport uniqueid from 'lodash/uniqueId';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { getTypedFileId, getTypedFolderId } from '../../utils/file';\nimport Browser from '../../utils/Browser';\n\nimport makeResponsive from '../common/makeResponsive';\nimport Internationalize from '../common/Internationalize';\nimport FolderUpload from '../../api/uploads/FolderUpload';\nimport API from '../../api';\nimport {\n getDataTransferItemId,\n getFileId,\n getFileFromDataTransferItem,\n getPackageFileFromDataTransferItem,\n getFile,\n getFileAPIOptions,\n getDataTransferItemAPIOptions,\n isDataTransferItemAFolder,\n isDataTransferItemAPackage,\n isMultiputSupported,\n} from '../../utils/uploads';\nimport DroppableContent from './DroppableContent';\nimport UploadsManager from './UploadsManager';\nimport Footer from './Footer';\nimport {\n DEFAULT_ROOT,\n CLIENT_NAME_CONTENT_UPLOADER,\n DEFAULT_HOSTNAME_UPLOAD,\n DEFAULT_HOSTNAME_API,\n VIEW_ERROR,\n VIEW_UPLOAD_EMPTY,\n VIEW_UPLOAD_IN_PROGRESS,\n VIEW_UPLOAD_SUCCESS,\n STATUS_PENDING,\n STATUS_IN_PROGRESS,\n STATUS_STAGED,\n STATUS_COMPLETE,\n STATUS_ERROR,\n ERROR_CODE_UPLOAD_FILE_LIMIT,\n} from '../../constants';\nimport type {\n UploadItem,\n UploadDataTransferItemWithAPIOptions,\n UploadFileWithAPIOptions,\n UploadFile,\n UploadItemAPIOptions,\n UploadStatus,\n} from '../../common/types/upload';\nimport type { StringMap, Token, View, BoxItem } from '../../common/types/core';\nimport '../common/fonts.scss';\nimport '../common/base.scss';\n\ntype Props = {\n apiHost: string,\n chunked: boolean,\n className: string,\n clientName: string,\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n fileLimit: number,\n files?: Array<UploadFileWithAPIOptions | File>,\n isDraggingItemsToUploadsManager?: boolean,\n isFolderUploadEnabled: boolean,\n isLarge: boolean,\n isResumableUploadsEnabled: boolean,\n isSmall: boolean,\n isTouch: boolean,\n isUploadFallbackLogicEnabled: boolean,\n language?: string,\n measureRef: Function,\n messages?: StringMap,\n onBeforeUpload: (file: Array<UploadFileWithAPIOptions | File>) => void,\n onCancel: Function,\n onClickCancel: UploadItem => void,\n onClickResume: UploadItem => void,\n onClickRetry: UploadItem => void,\n onClose: Function,\n onComplete: Function,\n onError: Function,\n onMinimize?: Function,\n onProgress: Function,\n onResume: Function,\n onUpgradeCTAClick?: Function,\n onUpload: Function,\n overwrite: boolean,\n requestInterceptor?: Function,\n responseInterceptor?: Function,\n rootFolderId: string,\n sharedLink?: string,\n sharedLinkPassword?: string,\n token?: Token,\n uploadHost: string,\n useUploadsManager?: boolean,\n};\n\ntype State = {\n errorCode?: string,\n isUploadsManagerExpanded: boolean,\n itemIds: Object,\n items: UploadItem[],\n view: View,\n};\n\nconst CHUNKED_UPLOAD_MIN_SIZE_BYTES = 104857600; // 100MB\nconst FILE_LIMIT_DEFAULT = 100; // Upload at most 100 files at once by default\nconst HIDE_UPLOAD_MANAGER_DELAY_MS_DEFAULT = 8000;\nconst EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD = 5;\nconst UPLOAD_CONCURRENCY = 6;\n\nclass ContentUploader extends Component<Props, State> {\n id: string;\n\n state: State;\n\n props: Props;\n\n rootElement: HTMLElement;\n\n appElement: HTMLElement;\n\n resetItemsTimeout: TimeoutID;\n\n isAutoExpanded: boolean = false;\n\n static defaultProps = {\n rootFolderId: DEFAULT_ROOT,\n apiHost: DEFAULT_HOSTNAME_API,\n chunked: true,\n className: '',\n clientName: CLIENT_NAME_CONTENT_UPLOADER,\n fileLimit: FILE_LIMIT_DEFAULT,\n uploadHost: DEFAULT_HOSTNAME_UPLOAD,\n onBeforeUpload: noop,\n onClickCancel: noop,\n onClickResume: noop,\n onClickRetry: noop,\n onClose: noop,\n onComplete: noop,\n onError: noop,\n onResume: noop,\n onUpload: noop,\n onProgress: noop,\n overwrite: true,\n useUploadsManager: false,\n files: [],\n onMinimize: noop,\n onCancel: noop,\n isFolderUploadEnabled: false,\n isResumableUploadsEnabled: false,\n isUploadFallbackLogicEnabled: false,\n dataTransferItems: [],\n isDraggingItemsToUploadsManager: false,\n };\n\n /**\n * [constructor]\n *\n * @return {ContentUploader}\n */\n constructor(props: Props) {\n super(props);\n\n const { rootFolderId, token, useUploadsManager } = props;\n this.state = {\n view: (rootFolderId && token) || useUploadsManager ? VIEW_UPLOAD_EMPTY : VIEW_ERROR,\n items: [],\n errorCode: '',\n itemIds: {},\n isUploadsManagerExpanded: false,\n };\n this.id = uniqueid('bcu_');\n }\n\n /**\n * Fetches the root folder on load\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentDidMount() {\n this.rootElement = ((document.getElementById(this.id): any): HTMLElement);\n this.appElement = this.rootElement;\n }\n\n /**\n * Cancels pending uploads\n *\n * @private\n * @inheritdoc\n * @return {void}\n */\n componentWillUnmount() {\n this.cancel();\n }\n\n /**\n * Adds new items to the queue when files prop gets updated in window view\n *\n * @return {void}\n */\n componentDidUpdate(): void {\n const { files, dataTransferItems, useUploadsManager } = this.props;\n\n const hasFiles = Array.isArray(files) && files.length > 0;\n const hasItems = Array.isArray(dataTransferItems) && dataTransferItems.length > 0;\n const hasUploads = hasFiles || hasItems;\n\n if (!useUploadsManager || !hasUploads) {\n return;\n }\n\n // TODO: this gets called unnecessarily (upon each render regardless of the queue not changing)\n this.addFilesWithOptionsToUploadQueueAndStartUpload(files, dataTransferItems);\n }\n\n /**\n * Create and return new instance of API creator\n *\n * @param {UploadItemAPIOptions} [uploadAPIOptions]\n * @return {API}\n */\n createAPIFactory(uploadAPIOptions?: UploadItemAPIOptions): API {\n const { rootFolderId } = this.props;\n const folderId = getProp(uploadAPIOptions, 'folderId') || rootFolderId;\n const fileId = getProp(uploadAPIOptions, 'fileId');\n const itemFolderId = getTypedFolderId(folderId);\n const itemFileId = fileId ? getTypedFileId(fileId) : null;\n\n return new API({\n ...this.getBaseAPIOptions(),\n id: itemFileId || itemFolderId,\n ...uploadAPIOptions,\n });\n }\n\n /**\n * Return base API options from props\n *\n * @private\n * @returns {Object}\n */\n getBaseAPIOptions = (): Object => {\n const {\n token,\n sharedLink,\n sharedLinkPassword,\n apiHost,\n uploadHost,\n clientName,\n requestInterceptor,\n responseInterceptor,\n } = this.props;\n\n return {\n token,\n sharedLink,\n sharedLinkPassword,\n apiHost,\n uploadHost,\n clientName,\n requestInterceptor,\n responseInterceptor,\n };\n };\n\n /**\n * Given an array of files, return the files that are new to the Content Uploader\n *\n * @param {Array<UploadFileWithAPIOptions | File>} files\n */\n getNewFiles = (files: Array<UploadFileWithAPIOptions | File>): Array<UploadFileWithAPIOptions | File> => {\n const { rootFolderId } = this.props;\n const { itemIds } = this.state;\n\n return Array.from(files).filter(file => !itemIds[getFileId(file, rootFolderId)]);\n };\n\n /**\n * Given an array of files, return the files that are new to the Content Uploader\n *\n * @param {Array<UploadFileWithAPIOptions | File>} files\n */\n getNewDataTransferItems = (\n items: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n ): Array<DataTransferItem | UploadDataTransferItemWithAPIOptions> => {\n const { rootFolderId } = this.props;\n const { itemIds } = this.state;\n\n return Array.from(items).filter(item => !itemIds[getDataTransferItemId(item, rootFolderId)]);\n };\n\n /**\n * Converts File API to upload items and adds to upload queue.\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | UploadFile>} files - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @param {boolean} [isRelativePathIgnored] - if true webkitRelativePath property is ignored\n * @return {void}\n */\n addFilesToUploadQueue = (\n files?: Array<UploadFileWithAPIOptions | UploadFile>,\n itemUpdateCallback: Function,\n isRelativePathIgnored?: boolean = false,\n ) => {\n const { onBeforeUpload, rootFolderId } = this.props;\n if (!files || files.length === 0) {\n return;\n }\n\n const newFiles = this.getNewFiles(files);\n\n if (newFiles.length === 0) {\n return;\n }\n\n const newItemIds = {};\n\n newFiles.forEach(file => {\n newItemIds[getFileId(file, rootFolderId)] = true;\n });\n\n clearTimeout(this.resetItemsTimeout);\n\n const firstFile = getFile(newFiles[0]);\n\n this.setState(\n state => ({\n itemIds: {\n ...state.itemIds,\n ...newItemIds,\n },\n }),\n () => {\n onBeforeUpload(newFiles);\n if (firstFile.webkitRelativePath && !isRelativePathIgnored) {\n // webkitRelativePath should be ignored when the upload destination folder is known\n this.addFilesWithRelativePathToQueue(newFiles, itemUpdateCallback);\n } else {\n this.addFilesWithoutRelativePathToQueue(newFiles, itemUpdateCallback);\n }\n },\n );\n };\n\n /**\n * Add dropped items to the upload queue\n *\n * @private\n * @param {DataTransfer} droppedItems\n * @param {Function} itemUpdateCallback\n * @returns {Promise<any>}\n */\n addDroppedItemsToUploadQueue = (droppedItems: DataTransfer, itemUpdateCallback: Function): void => {\n if (droppedItems.items) {\n this.addDataTransferItemsToUploadQueue(droppedItems.items, itemUpdateCallback);\n } else {\n Array.from(droppedItems.files).forEach(file => {\n this.addFilesToUploadQueue([file], itemUpdateCallback);\n });\n }\n };\n\n /**\n * Add dataTransferItems to the upload queue\n *\n * @private\n * @param {DataTransferItemList} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {Promise<any>}\n */\n addDataTransferItemsToUploadQueue = (\n dataTransferItems: DataTransferItemList | Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): void => {\n const { isFolderUploadEnabled } = this.props;\n if (!dataTransferItems || dataTransferItems.length === 0) {\n return;\n }\n\n const folderItems = [];\n const fileItems = [];\n const packageItems = [];\n Array.from(dataTransferItems).forEach(item => {\n const isDirectory = isDataTransferItemAFolder(item);\n if (Browser.isSafari() && isDataTransferItemAPackage(item)) {\n packageItems.push(item);\n } else if (isDirectory && isFolderUploadEnabled) {\n folderItems.push(item);\n } else if (!isDirectory) {\n fileItems.push(item);\n }\n });\n\n this.addFileDataTransferItemsToUploadQueue(fileItems, itemUpdateCallback);\n this.addPackageDataTransferItemsToUploadQueue(packageItems, itemUpdateCallback);\n this.addFolderDataTransferItemsToUploadQueue(folderItems, itemUpdateCallback);\n };\n\n /**\n * Add dataTransferItem of file type to the upload queue\n *\n * @private\n * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {void}\n */\n addFileDataTransferItemsToUploadQueue = (\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): void => {\n dataTransferItems.forEach(async item => {\n const file = await getFileFromDataTransferItem(item);\n if (!file) {\n return;\n }\n\n this.addFilesToUploadQueue([file], itemUpdateCallback);\n });\n };\n\n /**\n * Add dataTransferItem of package type to the upload queue\n *\n * @private\n * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {void}\n */\n addPackageDataTransferItemsToUploadQueue = (\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): void => {\n dataTransferItems.forEach(item => {\n const file = getPackageFileFromDataTransferItem(item);\n\n if (!file) {\n return;\n }\n\n this.addFilesToUploadQueue([file], itemUpdateCallback);\n });\n };\n\n /**\n * Add dataTransferItem of folder type to the upload queue\n *\n * @private\n * @param {Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>} dataTransferItems\n * @param {Function} itemUpdateCallback\n * @returns {Promise<any>}\n */\n addFolderDataTransferItemsToUploadQueue = async (\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n itemUpdateCallback: Function,\n ): Promise<any> => {\n const { rootFolderId } = this.props;\n const { itemIds } = this.state;\n if (dataTransferItems.length === 0) {\n return;\n }\n\n const newItems = this.getNewDataTransferItems(dataTransferItems);\n newItems.forEach(item => {\n itemIds[getDataTransferItemId(item, rootFolderId)] = true;\n });\n\n if (newItems.length === 0) {\n return;\n }\n\n const fileAPIOptions: Object = getDataTransferItemAPIOptions(newItems[0]);\n const { folderId = rootFolderId } = fileAPIOptions;\n newItems.forEach(async item => {\n const folderUpload = this.getFolderUploadAPI(folderId);\n await folderUpload.buildFolderTreeFromDataTransferItem(item);\n this.addFolderToUploadQueue(folderUpload, itemUpdateCallback, fileAPIOptions);\n });\n };\n\n /**\n * Converts File API to upload items and adds to upload queue for files with webkitRelativePath.\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | File>} files - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @return {void}\n */\n addFilesWithRelativePathToQueue(files: Array<UploadFileWithAPIOptions | File>, itemUpdateCallback: Function) {\n if (files.length === 0) {\n return;\n }\n\n const { rootFolderId } = this.props;\n const fileAPIOptions: Object = getFileAPIOptions(files[0]);\n const { folderId = rootFolderId } = fileAPIOptions;\n const folderUpload = this.getFolderUploadAPI(folderId);\n\n // Only 1 folder tree can be built with files having webkitRelativePath properties\n folderUpload.buildFolderTreeFromWebkitRelativePath(files);\n\n this.addFolderToUploadQueue(folderUpload, itemUpdateCallback, fileAPIOptions);\n }\n\n /**\n * Get folder upload API instance\n *\n * @private\n * @param {string} folderId\n * @return {FolderUpload}\n */\n getFolderUploadAPI = (folderId: string): FolderUpload => {\n const uploadBaseAPIOptions = this.getBaseAPIOptions();\n\n return new FolderUpload(this.addFilesToUploadQueue, folderId, this.addToQueue, uploadBaseAPIOptions);\n };\n\n /**\n * Add folder to upload queue\n *\n * @private\n * @param {FolderUpload} folderUpload\n * @param {Function} itemUpdateCallback\n * @param {Object} apiOptions\n * @return {void}\n */\n addFolderToUploadQueue = (folderUpload: FolderUpload, itemUpdateCallback: Function, apiOptions: Object): void => {\n this.addToQueue(\n [\n // $FlowFixMe no file property\n {\n api: folderUpload,\n extension: '',\n isFolder: true,\n name: folderUpload.folder.name,\n options: apiOptions,\n progress: 0,\n size: 1,\n status: STATUS_PENDING,\n },\n ],\n itemUpdateCallback,\n );\n };\n\n /**\n * Converts File API to upload items and adds to upload queue for files with webkitRelativePath missing or ignored.\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | File>} files - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @return {void}\n */\n addFilesWithoutRelativePathToQueue = (\n files: Array<UploadFileWithAPIOptions | File>,\n itemUpdateCallback: Function,\n ) => {\n const { itemIds } = this.state;\n const { rootFolderId } = this.props;\n\n // Convert files from the file API to upload items\n const newItems = files.map(file => {\n const uploadFile = getFile(file);\n const uploadAPIOptions = getFileAPIOptions(file);\n const { name, size } = uploadFile;\n\n // Extract extension or use empty string if file has no extension\n let extension = name.substr(name.lastIndexOf('.') + 1);\n if (extension.length === name.length) {\n extension = '';\n }\n\n const api = this.getUploadAPI(uploadFile, uploadAPIOptions);\n const uploadItem: Object = {\n api,\n extension,\n file: uploadFile,\n name,\n progress: 0,\n size,\n status: STATUS_PENDING,\n };\n\n if (uploadAPIOptions) {\n uploadItem.options = uploadAPIOptions;\n }\n\n itemIds[getFileId(uploadItem, rootFolderId)] = true;\n\n return uploadItem;\n });\n\n if (newItems.length === 0) {\n return;\n }\n\n this.setState({\n itemIds,\n });\n this.addToQueue(newItems, itemUpdateCallback);\n };\n\n /**\n * Add new items to the upload queue\n *\n * @private\n * @param {Array<UploadFileWithAPIOptions | File>} newItems - Files to be added to upload queue\n * @param {Function} itemUpdateCallback - function to be invoked after items status are updated\n * @return {void}\n */\n addToQueue = (newItems: UploadItem[], itemUpdateCallback: Function) => {\n const { fileLimit, useUploadsManager } = this.props;\n const { items, isUploadsManagerExpanded } = this.state;\n\n let updatedItems = [];\n const prevItemsNum = items.length;\n const totalNumOfItems = prevItemsNum + newItems.length;\n\n // Don't add more than fileLimit # of items\n if (totalNumOfItems > fileLimit) {\n updatedItems = items.concat(newItems.slice(0, fileLimit - items.length));\n this.setState({\n errorCode: ERROR_CODE_UPLOAD_FILE_LIMIT,\n });\n } else {\n updatedItems = items.concat(newItems);\n this.setState({ errorCode: '' });\n\n // If the number of items being uploaded passes the threshold, expand the upload manager\n if (\n prevItemsNum < EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD &&\n totalNumOfItems >= EXPAND_UPLOADS_MANAGER_ITEMS_NUM_THRESHOLD &&\n useUploadsManager &&\n !isUploadsManagerExpanded\n ) {\n this.isAutoExpanded = true;\n this.expandUploadsManager();\n }\n }\n\n this.updateViewAndCollection(updatedItems, () => {\n if (itemUpdateCallback) {\n itemUpdateCallback();\n }\n\n const { view } = this.state;\n // Automatically start upload if other files are being uploaded\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n /**\n * Returns a new API instance for the given file.\n *\n * @private\n * @param {File} file - File to get a new API instance for\n * @param {UploadItemAPIOptions} [uploadAPIOptions]\n * @return {UploadAPI} - Instance of Upload API\n */\n getUploadAPI(file: File, uploadAPIOptions?: UploadItemAPIOptions) {\n const { chunked, isResumableUploadsEnabled, isUploadFallbackLogicEnabled } = this.props;\n const { size } = file;\n const factory = this.createAPIFactory(uploadAPIOptions);\n\n if (chunked && size > CHUNKED_UPLOAD_MIN_SIZE_BYTES) {\n if (isMultiputSupported()) {\n const chunkedUploadAPI = factory.getChunkedUploadAPI();\n if (isResumableUploadsEnabled) {\n chunkedUploadAPI.isResumableUploadsEnabled = true;\n }\n if (isUploadFallbackLogicEnabled) {\n chunkedUploadAPI.isUploadFallbackLogicEnabled = true;\n }\n return chunkedUploadAPI;\n }\n\n /* eslint-disable no-console */\n console.warn(\n 'Chunked uploading is enabled, but not supported by your browser. You may need to enable HTTPS.',\n );\n /* eslint-enable no-console */\n }\n\n const plainUploadAPI = factory.getPlainUploadAPI();\n if (isUploadFallbackLogicEnabled) {\n plainUploadAPI.isUploadFallbackLogicEnabled = true;\n }\n\n return plainUploadAPI;\n }\n\n /**\n * Removes an item from the upload queue. Cancels upload if in progress.\n *\n * @param {UploadItem} item - Item to remove\n * @return {void}\n */\n removeFileFromUploadQueue = (item: UploadItem) => {\n const { onCancel, useUploadsManager } = this.props;\n const { items } = this.state;\n // Clear any error errorCode in footer\n this.setState({ errorCode: '' });\n\n const { api } = item;\n api.cancel();\n\n items.splice(items.indexOf(item), 1);\n\n onCancel([item]);\n this.updateViewAndCollection(items, () => {\n // Minimize uploads manager if there are no more items\n if (useUploadsManager && !items.length) {\n this.minimizeUploadsManager();\n }\n\n const { view } = this.state;\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n /**\n * Aborts uploads in progress and clears upload list.\n *\n * @private\n * @return {void}\n */\n cancel = () => {\n const { items } = this.state;\n items.forEach(uploadItem => {\n const { api, status } = uploadItem;\n if (status === STATUS_IN_PROGRESS) {\n api.cancel();\n }\n });\n\n // Reset upload collection\n this.updateViewAndCollection([]);\n };\n\n /**\n * Uploads all items in the upload collection.\n *\n * @private\n * @return {void}\n */\n upload = () => {\n const { items } = this.state;\n items.forEach(uploadItem => {\n if (uploadItem.status === STATUS_PENDING) {\n this.uploadFile(uploadItem);\n }\n });\n };\n\n /**\n * Helper to upload a single file.\n *\n * @param {UploadItem} item - Upload item object\n * @return {void}\n */\n uploadFile(item: UploadItem) {\n const { overwrite, rootFolderId } = this.props;\n const { api, file, options } = item;\n const { items } = this.state;\n\n const numItemsUploading = items.filter(item_t => item_t.status === STATUS_IN_PROGRESS).length;\n\n if (numItemsUploading >= UPLOAD_CONCURRENCY) {\n return;\n }\n\n const uploadOptions: Object = {\n file,\n folderId: options && options.folderId ? options.folderId : rootFolderId,\n errorCallback: error => this.handleUploadError(item, error),\n progressCallback: event => this.handleUploadProgress(item, event),\n successCallback: entries => this.handleUploadSuccess(item, entries),\n overwrite,\n fileId: options && options.fileId ? options.fileId : null,\n };\n\n item.status = STATUS_IN_PROGRESS;\n items[items.indexOf(item)] = item;\n\n api.upload(uploadOptions);\n\n this.updateViewAndCollection(items);\n }\n\n /**\n * Helper to resume uploading a single file.\n *\n * @param {UploadItem} item - Upload item object\n * @return {void}\n */\n resumeFile(item: UploadItem) {\n const { overwrite, rootFolderId, onResume } = this.props;\n const { api, file, options } = item;\n const { items } = this.state;\n\n const numItemsUploading = items.filter(item_t => item_t.status === STATUS_IN_PROGRESS).length;\n\n if (numItemsUploading >= UPLOAD_CONCURRENCY) {\n return;\n }\n\n const resumeOptions: Object = {\n file,\n folderId: options && options.folderId ? options.folderId : rootFolderId,\n errorCallback: error => this.handleUploadError(item, error),\n progressCallback: event => this.handleUploadProgress(item, event),\n successCallback: entries => this.handleUploadSuccess(item, entries),\n overwrite,\n sessionId: api && api.sessionId ? api.sessionId : null,\n fileId: options && options.fileId ? options.fileId : null,\n };\n\n item.status = STATUS_IN_PROGRESS;\n delete item.error;\n items[items.indexOf(item)] = item;\n\n onResume(item);\n api.resume(resumeOptions);\n\n this.updateViewAndCollection(items);\n }\n\n /**\n * Helper to reset a file. Cancels any current upload and resets progress.\n *\n * @param {UploadItem} item - Upload item to reset\n * @return {void}\n */\n resetFile(item: UploadItem) {\n const { api, file, options } = item;\n if (api && typeof api.cancel === 'function') {\n api.cancel();\n }\n\n // Reset API, progress & status\n item.api = this.getUploadAPI(file, options);\n item.progress = 0;\n item.status = STATUS_PENDING;\n delete item.error;\n\n const { items } = this.state;\n items[items.indexOf(item)] = item;\n\n this.updateViewAndCollection(items);\n }\n\n /**\n * Handles a successful upload.\n *\n * @private\n * @param {UploadItem} item - Upload item corresponding to success event\n * @param {BoxItem[]} entries - Successfully uploaded Box File objects\n * @return {void}\n */\n handleUploadSuccess = (item: UploadItem, entries?: BoxItem[]) => {\n const { onUpload, useUploadsManager } = this.props;\n\n item.progress = 100;\n if (!item.error) {\n item.status = STATUS_COMPLETE;\n }\n\n // Cache Box File object of successfully uploaded item\n if (entries && entries.length === 1) {\n const [boxFile] = entries;\n item.boxFile = boxFile;\n }\n\n const { items } = this.state;\n items[items.indexOf(item)] = item;\n\n // Broadcast that a file has been uploaded\n if (useUploadsManager) {\n onUpload(item);\n this.checkClearUploadItems();\n } else {\n onUpload(item.boxFile);\n }\n\n this.updateViewAndCollection(items, () => {\n const { view } = this.state;\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n resetUploadManagerExpandState = () => {\n this.isAutoExpanded = false;\n this.setState({\n isUploadsManagerExpanded: false,\n });\n };\n\n /**\n * Updates view and internal upload collection with provided items.\n *\n * @private\n * @param {UploadItem[]} item - Items to update collection with\n * @param {Function} callback\n * @return {void}\n */\n updateViewAndCollection(items: UploadItem[], callback?: Function) {\n const { onComplete, useUploadsManager, isResumableUploadsEnabled }: Props = this.props;\n const someUploadIsInProgress = items.some(uploadItem => uploadItem.status !== STATUS_COMPLETE);\n const someUploadHasFailed = items.some(uploadItem => uploadItem.status === STATUS_ERROR);\n const allItemsArePending = !items.some(uploadItem => uploadItem.status !== STATUS_PENDING);\n const noFileIsPendingOrInProgress = items.every(\n uploadItem => uploadItem.status !== STATUS_PENDING && uploadItem.status !== STATUS_IN_PROGRESS,\n );\n const areAllItemsFinished = items.every(\n uploadItem => uploadItem.status === STATUS_COMPLETE || uploadItem.status === STATUS_ERROR,\n );\n const uploadItemsStatus = isResumableUploadsEnabled ? areAllItemsFinished : noFileIsPendingOrInProgress;\n\n let view = '';\n if ((items && items.length === 0) || allItemsArePending) {\n view = VIEW_UPLOAD_EMPTY;\n } else if (someUploadHasFailed && useUploadsManager) {\n view = VIEW_ERROR;\n } else if (someUploadIsInProgress) {\n view = VIEW_UPLOAD_IN_PROGRESS;\n } else {\n view = VIEW_UPLOAD_SUCCESS;\n\n if (!useUploadsManager) {\n onComplete(cloneDeep(items.map(item => item.boxFile)));\n // Reset item collection after successful upload\n items = [];\n }\n }\n\n if (uploadItemsStatus && useUploadsManager) {\n if (this.isAutoExpanded) {\n this.resetUploadManagerExpandState();\n } // Else manually expanded so don't close\n onComplete(items);\n }\n\n const state: Object = {\n items,\n view,\n };\n\n if (items.length === 0) {\n state.itemIds = {};\n state.errorCode = '';\n }\n\n this.setState(state, callback);\n }\n\n /**\n * Handles an upload error.\n *\n * @private\n * @param {UploadItem} item - Upload item corresponding to error\n * @param {Error} error - Upload error\n * @return {void}\n */\n handleUploadError = (item: UploadItem, error: Error) => {\n const { onError, useUploadsManager } = this.props;\n const { file } = item;\n const { items } = this.state;\n\n item.status = STATUS_ERROR;\n item.error = error;\n\n const newItems = [...items];\n const index = newItems.findIndex(singleItem => singleItem === item);\n if (index !== -1) {\n newItems[index] = item;\n }\n\n // Broadcast that there was an error uploading a file\n const errorData = useUploadsManager\n ? {\n item,\n error,\n }\n : {\n file,\n error,\n };\n\n onError(errorData);\n\n this.updateViewAndCollection(newItems, () => {\n if (useUploadsManager) {\n this.isAutoExpanded = true;\n this.expandUploadsManager();\n }\n const { view } = this.state;\n if (view === VIEW_UPLOAD_IN_PROGRESS) {\n this.upload();\n }\n });\n };\n\n /**\n * Handles an upload progress event.\n *\n * @private\n * @param {UploadItem} item - Upload item corresponding to progress event\n * @param {ProgressEvent} event - Progress event\n * @return {void}\n */\n handleUploadProgress = (item: UploadItem, event: any) => {\n if (!event.total || item.status === STATUS_COMPLETE || item.status === STATUS_STAGED) {\n return;\n }\n\n item.progress = Math.min(Math.round((event.loaded / event.total) * 100), 100);\n item.status = item.progress === 100 ? STATUS_STAGED : STATUS_IN_PROGRESS;\n\n const { onProgress } = this.props;\n onProgress(item);\n\n const { items } = this.state;\n items[items.indexOf(item)] = item;\n\n this.updateViewAndCollection(items);\n };\n\n /**\n * Updates item based on its status.\n *\n * @private\n * @param {UploadItem} item - The upload item to update\n * @return {void}\n */\n onClick = (item: UploadItem) => {\n const { chunked, isResumableUploadsEnabled, onClickCancel, onClickResume, onClickRetry } = this.props;\n const { status, file } = item;\n const isChunkedUpload =\n chunked && !item.isFolder && file.size > CHUNKED_UPLOAD_MIN_SIZE_BYTES && isMultiputSupported();\n const isResumable = isResumableUploadsEnabled && isChunkedUpload && item.api.sessionId;\n\n switch (status) {\n case STATUS_IN_PROGRESS:\n case STATUS_STAGED:\n case STATUS_COMPLETE:\n case STATUS_PENDING:\n this.removeFileFromUploadQueue(item);\n onClickCancel(item);\n break;\n case STATUS_ERROR:\n if (isResumable) {\n item.bytesUploadedOnLastResume = item.api.totalUploadedBytes;\n this.resumeFile(item);\n onClickResume(item);\n } else {\n this.resetFile(item);\n this.uploadFile(item);\n onClickRetry(item);\n }\n break;\n default:\n break;\n }\n };\n\n /**\n * Click action button for all uploads in the Uploads Manager with the given status.\n *\n * @private\n * @param {UploadStatus} - the status that items should have for their action button to be clicked\n * @return {void}\n */\n clickAllWithStatus = (status?: UploadStatus) => {\n const { items } = this.state;\n\n items.forEach(item => {\n if (!status || item.status === status) {\n this.onClick(item);\n }\n });\n };\n\n /**\n * Expands the upload manager\n *\n * @return {void}\n */\n expandUploadsManager = (): void => {\n const { useUploadsManager } = this.props;\n\n if (!useUploadsManager) {\n return;\n }\n\n clearTimeout(this.resetItemsTimeout);\n\n this.setState({ isUploadsManagerExpanded: true });\n };\n\n /**\n * Minimizes the upload manager\n *\n * @return {void}\n */\n minimizeUploadsManager = (): void => {\n const { useUploadsManager, onMinimize } = this.props;\n\n if (!useUploadsManager || !onMinimize) {\n return;\n }\n\n clearTimeout(this.resetItemsTimeout);\n\n onMinimize();\n this.resetUploadManagerExpandState();\n this.checkClearUploadItems();\n };\n\n /**\n * Checks if the upload items should be cleared after a timeout\n *\n * @return {void}\n */\n checkClearUploadItems = () => {\n this.resetItemsTimeout = setTimeout(\n this.resetUploadsManagerItemsWhenUploadsComplete,\n HIDE_UPLOAD_MANAGER_DELAY_MS_DEFAULT,\n );\n };\n\n /**\n * Toggles the upload manager\n *\n * @return {void}\n */\n toggleUploadsManager = (): void => {\n const { isUploadsManagerExpanded } = this.state;\n\n if (isUploadsManagerExpanded) {\n this.minimizeUploadsManager();\n } else {\n this.expandUploadsManager();\n }\n };\n\n /**\n * Empties the items queue\n *\n * @return {void}\n */\n resetUploadsManagerItemsWhenUploadsComplete = (): void => {\n const { view, items, isUploadsManagerExpanded } = this.state;\n const { useUploadsManager, onCancel } = this.props;\n\n // Do not reset items when upload manger is expanded or there're uploads in progress\n if ((isUploadsManagerExpanded && useUploadsManager && !!items.length) || view === VIEW_UPLOAD_IN_PROGRESS) {\n return;\n }\n\n onCancel(items);\n\n this.setState({\n items: [],\n itemIds: {},\n });\n };\n\n /**\n * Adds file to the upload queue and starts upload immediately\n *\n * @param {Array<UploadFileWithAPIOptions | File>} files - Files to be added to upload queue\n * @return {void}\n */\n addFilesWithOptionsToUploadQueueAndStartUpload = (\n files?: Array<UploadFileWithAPIOptions | File>,\n dataTransferItems: Array<DataTransferItem | UploadDataTransferItemWithAPIOptions>,\n ): void => {\n this.addFilesToUploadQueue(files, this.upload);\n this.addDataTransferItemsToUploadQueue(dataTransferItems, this.upload);\n };\n\n /**\n * Renders the content uploader\n *\n * @inheritdoc\n * @return {Component}\n */\n render() {\n const {\n className,\n fileLimit,\n isDraggingItemsToUploadsManager = false,\n isFolderUploadEnabled,\n isResumableUploadsEnabled,\n isTouch,\n language,\n measureRef,\n messages,\n onClose,\n onUpgradeCTAClick,\n useUploadsManager,\n }: Props = this.props;\n const { view, items, errorCode, isUploadsManagerExpanded }: State = this.state;\n const isEmpty = items.length === 0;\n const isVisible = !isEmpty || !!isDraggingItemsToUploadsManager;\n\n const hasFiles = items.length !== 0;\n const isLoading = items.some(item => item.status === STATUS_IN_PROGRESS);\n const isDone = items.every(item => item.status === STATUS_COMPLETE || item.status === STATUS_STAGED);\n\n const styleClassName = classNames('bcu', className, {\n 'be-app-element': !useUploadsManager,\n be: !useUploadsManager,\n });\n\n return (\n <Internationalize language={language} messages={messages}>\n {useUploadsManager ? (\n <div ref={measureRef} className={styleClassName} id={this.id}>\n <UploadsManager\n isDragging={isDraggingItemsToUploadsManager}\n isExpanded={isUploadsManagerExpanded}\n isResumableUploadsEnabled={isResumableUploadsEnabled}\n isVisible={isVisible}\n items={items}\n onItemActionClick={this.onClick}\n onRemoveActionClick={this.removeFileFromUploadQueue}\n onUpgradeCTAClick={onUpgradeCTAClick}\n onUploadsManagerActionClick={this.clickAllWithStatus}\n toggleUploadsManager={this.toggleUploadsManager}\n view={view}\n />\n </div>\n ) : (\n <div ref={measureRef} className={styleClassName} id={this.id}>\n <DroppableContent\n addDataTransferItemsToUploadQueue={this.addDroppedItemsToUploadQueue}\n addFiles={this.addFilesToUploadQueue}\n allowedTypes={['Files']}\n isFolderUploadEnabled={isFolderUploadEnabled}\n isTouch={isTouch}\n items={items}\n onClick={this.onClick}\n view={view}\n />\n <Footer\n errorCode={errorCode}\n fileLimit={fileLimit}\n hasFiles={hasFiles}\n isLoading={isLoading}\n onCancel={this.cancel}\n onClose={onClose}\n onUpload={this.upload}\n isDone={isDone}\n />\n </div>\n )}\n </Internationalize>\n );\n }\n}\n\nexport type ContentUploaderProps = Props;\nexport default makeResponsive(ContentUploader);\nexport { ContentUploader as ContentUploaderComponent, CHUNKED_UPLOAD_MIN_SIZE_BYTES };\n"],"file":"ContentUploader.js"}
@@ -1,4 +1,5 @@
1
1
  @import '../common/variables';
2
+ @import '../../styles/mixins/buttons';
2
3
 
3
4
  .bcu-footer {
4
5
  display: flex;
@@ -9,6 +10,10 @@
9
10
  background-color: $almost-white;
10
11
  border-top: 1px solid $bdl-gray-10;
11
12
 
13
+ .btn {
14
+ @include bdl-Button--large;
15
+ }
16
+
12
17
  .bcu-footer-message {
13
18
  padding: 0 10px;
14
19
  text-align: center;
@@ -3,28 +3,33 @@
3
3
  * @file Item action component
4
4
  */
5
5
  import React from 'react';
6
- import { injectIntl } from 'react-intl';
6
+ import { FormattedMessage, injectIntl } from 'react-intl';
7
7
  import IconCheck from '../../icons/general/IconCheck';
8
8
  import IconClose from '../../icons/general/IconClose';
9
9
  import IconInProgress from './IconInProgress';
10
10
  import IconRetry from '../../icons/general/IconRetry';
11
11
  import LoadingIndicator from '../../components/loading-indicator';
12
12
  import PlainButton from '../../components/plain-button/PlainButton';
13
+ import PrimaryButton from '../../components/primary-button/PrimaryButton';
13
14
  import Tooltip from '../../components/tooltip';
14
15
  import messages from '../common/messages';
15
- import { STATUS_PENDING, STATUS_IN_PROGRESS, STATUS_STAGED, STATUS_COMPLETE, STATUS_ERROR } from '../../constants';
16
+ import { ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED, STATUS_PENDING, STATUS_IN_PROGRESS, STATUS_STAGED, STATUS_COMPLETE, STATUS_ERROR } from '../../constants';
16
17
  import './ItemAction.scss';
17
18
  var ICON_CHECK_COLOR = '#26C281';
18
19
 
19
20
  var ItemAction = function ItemAction(_ref) {
20
- var status = _ref.status,
21
- onClick = _ref.onClick,
21
+ var _ref$error = _ref.error,
22
+ error = _ref$error === void 0 ? {} : _ref$error,
22
23
  intl = _ref.intl,
23
- isResumableUploadsEnabled = _ref.isResumableUploadsEnabled,
24
24
  _ref$isFolder = _ref.isFolder,
25
- isFolder = _ref$isFolder === void 0 ? false : _ref$isFolder;
25
+ isFolder = _ref$isFolder === void 0 ? false : _ref$isFolder,
26
+ isResumableUploadsEnabled = _ref.isResumableUploadsEnabled,
27
+ onClick = _ref.onClick,
28
+ onUpgradeCTAClick = _ref.onUpgradeCTAClick,
29
+ status = _ref.status;
26
30
  var icon = React.createElement(IconClose, null);
27
31
  var tooltip;
32
+ var code = error.code;
28
33
 
29
34
  if (isFolder && status !== STATUS_PENDING) {
30
35
  return null;
@@ -72,6 +77,14 @@ var ItemAction = function ItemAction(_ref) {
72
77
  break;
73
78
  }
74
79
 
80
+ if (status === STATUS_ERROR && code === ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED && !!onUpgradeCTAClick) {
81
+ return React.createElement(PrimaryButton, {
82
+ onClick: onUpgradeCTAClick,
83
+ "data-resin-target": "large_version_error_inline_upgrade_cta",
84
+ type: "button"
85
+ }, React.createElement(FormattedMessage, messages.uploadsFileSizeLimitExceededUpgradeMessageForUpgradeCta));
86
+ }
87
+
75
88
  return React.createElement("div", {
76
89
  className: "bcu-item-action"
77
90
  }, tooltip ? React.createElement(Tooltip, {
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import React from 'react';
7
- import { injectIntl } from 'react-intl';
7
+ import { FormattedMessage, injectIntl } from 'react-intl';
8
8
  import type { InjectIntlProvidedProps } from 'react-intl';
9
9
  import IconCheck from '../../icons/general/IconCheck';
10
10
  import IconClose from '../../icons/general/IconClose';
@@ -12,9 +12,17 @@ import IconInProgress from './IconInProgress';
12
12
  import IconRetry from '../../icons/general/IconRetry';
13
13
  import LoadingIndicator from '../../components/loading-indicator';
14
14
  import PlainButton from '../../components/plain-button/PlainButton';
15
+ import PrimaryButton from '../../components/primary-button/PrimaryButton';
15
16
  import Tooltip from '../../components/tooltip';
16
17
  import messages from '../common/messages';
17
- import { STATUS_PENDING, STATUS_IN_PROGRESS, STATUS_STAGED, STATUS_COMPLETE, STATUS_ERROR } from '../../constants';
18
+ import {
19
+ ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED,
20
+ STATUS_PENDING,
21
+ STATUS_IN_PROGRESS,
22
+ STATUS_STAGED,
23
+ STATUS_COMPLETE,
24
+ STATUS_ERROR,
25
+ } from '../../constants';
18
26
  import type { UploadStatus } from '../../common/types/upload';
19
27
 
20
28
  import './ItemAction.scss';
@@ -22,15 +30,26 @@ import './ItemAction.scss';
22
30
  const ICON_CHECK_COLOR = '#26C281';
23
31
 
24
32
  type Props = {
33
+ error?: Object,
25
34
  isFolder?: boolean,
26
35
  isResumableUploadsEnabled: boolean,
27
36
  onClick: Function,
37
+ onUpgradeCTAClick?: Function,
28
38
  status: UploadStatus,
29
39
  } & InjectIntlProvidedProps;
30
40
 
31
- const ItemAction = ({ status, onClick, intl, isResumableUploadsEnabled, isFolder = false }: Props) => {
41
+ const ItemAction = ({
42
+ error = {},
43
+ intl,
44
+ isFolder = false,
45
+ isResumableUploadsEnabled,
46
+ onClick,
47
+ onUpgradeCTAClick,
48
+ status,
49
+ }: Props) => {
32
50
  let icon = <IconClose />;
33
51
  let tooltip;
52
+ const { code } = error;
34
53
 
35
54
  if (isFolder && status !== STATUS_PENDING) {
36
55
  return null;
@@ -66,6 +85,18 @@ const ItemAction = ({ status, onClick, intl, isResumableUploadsEnabled, isFolder
66
85
  break;
67
86
  }
68
87
 
88
+ if (status === STATUS_ERROR && code === ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED && !!onUpgradeCTAClick) {
89
+ return (
90
+ <PrimaryButton
91
+ onClick={onUpgradeCTAClick}
92
+ data-resin-target="large_version_error_inline_upgrade_cta"
93
+ type="button"
94
+ >
95
+ <FormattedMessage {...messages.uploadsFileSizeLimitExceededUpgradeMessageForUpgradeCta} />
96
+ </PrimaryButton>
97
+ );
98
+ }
99
+
69
100
  return (
70
101
  <div className="bcu-item-action">
71
102
  {tooltip ? (
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/content-uploader/ItemAction.js"],"names":["React","injectIntl","IconCheck","IconClose","IconInProgress","IconRetry","LoadingIndicator","PlainButton","Tooltip","messages","STATUS_PENDING","STATUS_IN_PROGRESS","STATUS_STAGED","STATUS_COMPLETE","STATUS_ERROR","ICON_CHECK_COLOR","ItemAction","status","onClick","intl","isResumableUploadsEnabled","isFolder","icon","tooltip","remove","resume","retry","uploadsCancelButtonTooltip","formatMessage","ItemActionForTesting"],"mappings":"AAAA;;;;AAKA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,UAAT,QAA2B,YAA3B;AAEA,OAAOC,SAAP,MAAsB,+BAAtB;AACA,OAAOC,SAAP,MAAsB,+BAAtB;AACA,OAAOC,cAAP,MAA2B,kBAA3B;AACA,OAAOC,SAAP,MAAsB,+BAAtB;AACA,OAAOC,gBAAP,MAA6B,oCAA7B;AACA,OAAOC,WAAP,MAAwB,2CAAxB;AACA,OAAOC,OAAP,MAAoB,0BAApB;AACA,OAAOC,QAAP,MAAqB,oBAArB;AACA,SAASC,cAAT,EAAyBC,kBAAzB,EAA6CC,aAA7C,EAA4DC,eAA5D,EAA6EC,YAA7E,QAAiG,iBAAjG;AAGA,OAAO,mBAAP;AAEA,IAAMC,gBAAgB,GAAG,SAAzB;;AASA,IAAMC,UAAU,GAAG,SAAbA,UAAa,OAAmF;AAAA,MAAhFC,MAAgF,QAAhFA,MAAgF;AAAA,MAAxEC,OAAwE,QAAxEA,OAAwE;AAAA,MAA/DC,IAA+D,QAA/DA,IAA+D;AAAA,MAAzDC,yBAAyD,QAAzDA,yBAAyD;AAAA,2BAA9BC,QAA8B;AAAA,MAA9BA,QAA8B,8BAAnB,KAAmB;AAClG,MAAIC,IAAI,GAAG,oBAAC,SAAD,OAAX;AACA,MAAIC,OAAJ;;AAEA,MAAIF,QAAQ,IAAIJ,MAAM,KAAKP,cAA3B,EAA2C;AACvC,WAAO,IAAP;AACH;;AAED,UAAQO,MAAR;AACI,SAAKJ,eAAL;AACIS,MAAAA,IAAI,GAAG,oBAAC,SAAD;AAAW,QAAA,KAAK,EAAEP;AAAlB,QAAP;;AACA,UAAI,CAACK,yBAAL,EAAgC;AAC5BG,QAAAA,OAAO,GAAGd,QAAQ,CAACe,MAAnB;AACH;;AACD;;AACJ,SAAKV,YAAL;AACIQ,MAAAA,IAAI,GAAG,oBAAC,SAAD;AAAW,QAAA,MAAM,EAAE,EAAnB;AAAuB,QAAA,KAAK,EAAE;AAA9B,QAAP;AACAC,MAAAA,OAAO,GAAGH,yBAAyB,GAAGX,QAAQ,CAACgB,MAAZ,GAAqBhB,QAAQ,CAACiB,KAAjE;AACA;;AACJ,SAAKf,kBAAL;AACA,SAAKC,aAAL;AACI,UAAIQ,yBAAJ,EAA+B;AAC3BE,QAAAA,IAAI,GAAG,oBAAC,gBAAD,OAAP;AACH,OAFD,MAEO;AACHA,QAAAA,IAAI,GAAG,oBAAC,cAAD,OAAP;AACAC,QAAAA,OAAO,GAAGd,QAAQ,CAACkB,0BAAnB;AACH;;AACD;;AACJ,SAAKjB,cAAL;AACA;AACI,UAAIU,yBAAJ,EAA+B;AAC3BE,QAAAA,IAAI,GAAG,oBAAC,gBAAD,OAAP;AACH,OAFD,MAEO;AACHC,QAAAA,OAAO,GAAGd,QAAQ,CAACkB,0BAAnB;AACH;;AACD;AA3BR;;AA8BA,SACI;AAAK,IAAA,SAAS,EAAC;AAAf,KACKJ,OAAO,GACJ,oBAAC,OAAD;AAAS,IAAA,QAAQ,EAAC,UAAlB;AAA6B,IAAA,IAAI,EAAEJ,IAAI,CAACS,aAAL,CAAmBL,OAAnB;AAAnC,KACI,oBAAC,WAAD;AAAa,IAAA,OAAO,EAAEL,OAAtB;AAA+B,IAAA,IAAI,EAAC,QAApC;AAA6C,IAAA,UAAU,EAAED,MAAM,KAAKL;AAApE,KACKU,IADL,CADJ,CADI,GAOJA,IARR,CADJ;AAaH,CAnDD;;AAqDA,SAASN,UAAU,IAAIa,oBAAvB;AACA,eAAe5B,UAAU,CAACe,UAAD,CAAzB","sourcesContent":["/**\n * @flow\n * @file Item action component\n */\n\nimport React from 'react';\nimport { injectIntl } from 'react-intl';\nimport type { InjectIntlProvidedProps } from 'react-intl';\nimport IconCheck from '../../icons/general/IconCheck';\nimport IconClose from '../../icons/general/IconClose';\nimport IconInProgress from './IconInProgress';\nimport IconRetry from '../../icons/general/IconRetry';\nimport LoadingIndicator from '../../components/loading-indicator';\nimport PlainButton from '../../components/plain-button/PlainButton';\nimport Tooltip from '../../components/tooltip';\nimport messages from '../common/messages';\nimport { STATUS_PENDING, STATUS_IN_PROGRESS, STATUS_STAGED, STATUS_COMPLETE, STATUS_ERROR } from '../../constants';\nimport type { UploadStatus } from '../../common/types/upload';\n\nimport './ItemAction.scss';\n\nconst ICON_CHECK_COLOR = '#26C281';\n\ntype Props = {\n isFolder?: boolean,\n isResumableUploadsEnabled: boolean,\n onClick: Function,\n status: UploadStatus,\n} & InjectIntlProvidedProps;\n\nconst ItemAction = ({ status, onClick, intl, isResumableUploadsEnabled, isFolder = false }: Props) => {\n let icon = <IconClose />;\n let tooltip;\n\n if (isFolder && status !== STATUS_PENDING) {\n return null;\n }\n\n switch (status) {\n case STATUS_COMPLETE:\n icon = <IconCheck color={ICON_CHECK_COLOR} />;\n if (!isResumableUploadsEnabled) {\n tooltip = messages.remove;\n }\n break;\n case STATUS_ERROR:\n icon = <IconRetry height={24} width={24} />;\n tooltip = isResumableUploadsEnabled ? messages.resume : messages.retry;\n break;\n case STATUS_IN_PROGRESS:\n case STATUS_STAGED:\n if (isResumableUploadsEnabled) {\n icon = <LoadingIndicator />;\n } else {\n icon = <IconInProgress />;\n tooltip = messages.uploadsCancelButtonTooltip;\n }\n break;\n case STATUS_PENDING:\n default:\n if (isResumableUploadsEnabled) {\n icon = <LoadingIndicator />;\n } else {\n tooltip = messages.uploadsCancelButtonTooltip;\n }\n break;\n }\n\n return (\n <div className=\"bcu-item-action\">\n {tooltip ? (\n <Tooltip position=\"top-left\" text={intl.formatMessage(tooltip)}>\n <PlainButton onClick={onClick} type=\"button\" isDisabled={status === STATUS_STAGED}>\n {icon}\n </PlainButton>\n </Tooltip>\n ) : (\n icon\n )}\n </div>\n );\n};\n\nexport { ItemAction as ItemActionForTesting };\nexport default injectIntl(ItemAction);\n"],"file":"ItemAction.js"}
1
+ {"version":3,"sources":["../../../src/elements/content-uploader/ItemAction.js"],"names":["React","FormattedMessage","injectIntl","IconCheck","IconClose","IconInProgress","IconRetry","LoadingIndicator","PlainButton","PrimaryButton","Tooltip","messages","ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED","STATUS_PENDING","STATUS_IN_PROGRESS","STATUS_STAGED","STATUS_COMPLETE","STATUS_ERROR","ICON_CHECK_COLOR","ItemAction","error","intl","isFolder","isResumableUploadsEnabled","onClick","onUpgradeCTAClick","status","icon","tooltip","code","remove","resume","retry","uploadsCancelButtonTooltip","uploadsFileSizeLimitExceededUpgradeMessageForUpgradeCta","formatMessage","ItemActionForTesting"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Item action component\n */\n\nimport React from 'react';\nimport { FormattedMessage, injectIntl } from 'react-intl';\nimport type { InjectIntlProvidedProps } from 'react-intl';\nimport IconCheck from '../../icons/general/IconCheck';\nimport IconClose from '../../icons/general/IconClose';\nimport IconInProgress from './IconInProgress';\nimport IconRetry from '../../icons/general/IconRetry';\nimport LoadingIndicator from '../../components/loading-indicator';\nimport PlainButton from '../../components/plain-button/PlainButton';\nimport PrimaryButton from '../../components/primary-button/PrimaryButton';\nimport Tooltip from '../../components/tooltip';\nimport messages from '../common/messages';\nimport {\n ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED,\n STATUS_PENDING,\n STATUS_IN_PROGRESS,\n STATUS_STAGED,\n STATUS_COMPLETE,\n STATUS_ERROR,\n} from '../../constants';\nimport type { UploadStatus } from '../../common/types/upload';\n\nimport './ItemAction.scss';\n\nconst ICON_CHECK_COLOR = '#26C281';\n\ntype Props = {\n error?: Object,\n isFolder?: boolean,\n isResumableUploadsEnabled: boolean,\n onClick: Function,\n onUpgradeCTAClick?: Function,\n status: UploadStatus,\n} & InjectIntlProvidedProps;\n\nconst ItemAction = ({\n error = {},\n intl,\n isFolder = false,\n isResumableUploadsEnabled,\n onClick,\n onUpgradeCTAClick,\n status,\n}: Props) => {\n let icon = <IconClose />;\n let tooltip;\n const { code } = error;\n\n if (isFolder && status !== STATUS_PENDING) {\n return null;\n }\n\n switch (status) {\n case STATUS_COMPLETE:\n icon = <IconCheck color={ICON_CHECK_COLOR} />;\n if (!isResumableUploadsEnabled) {\n tooltip = messages.remove;\n }\n break;\n case STATUS_ERROR:\n icon = <IconRetry height={24} width={24} />;\n tooltip = isResumableUploadsEnabled ? messages.resume : messages.retry;\n break;\n case STATUS_IN_PROGRESS:\n case STATUS_STAGED:\n if (isResumableUploadsEnabled) {\n icon = <LoadingIndicator />;\n } else {\n icon = <IconInProgress />;\n tooltip = messages.uploadsCancelButtonTooltip;\n }\n break;\n case STATUS_PENDING:\n default:\n if (isResumableUploadsEnabled) {\n icon = <LoadingIndicator />;\n } else {\n tooltip = messages.uploadsCancelButtonTooltip;\n }\n break;\n }\n\n if (status === STATUS_ERROR && code === ERROR_CODE_UPLOAD_FILE_SIZE_LIMIT_EXCEEDED && !!onUpgradeCTAClick) {\n return (\n <PrimaryButton\n onClick={onUpgradeCTAClick}\n data-resin-target=\"large_version_error_inline_upgrade_cta\"\n type=\"button\"\n >\n <FormattedMessage {...messages.uploadsFileSizeLimitExceededUpgradeMessageForUpgradeCta} />\n </PrimaryButton>\n );\n }\n\n return (\n <div className=\"bcu-item-action\">\n {tooltip ? (\n <Tooltip position=\"top-left\" text={intl.formatMessage(tooltip)}>\n <PlainButton onClick={onClick} type=\"button\" isDisabled={status === STATUS_STAGED}>\n {icon}\n </PlainButton>\n </Tooltip>\n ) : (\n icon\n )}\n </div>\n );\n};\n\nexport { ItemAction as ItemActionForTesting };\nexport default injectIntl(ItemAction);\n"],"file":"ItemAction.js"}
@@ -19,13 +19,14 @@ var ItemList = function ItemList(_ref) {
19
19
  items = _ref.items,
20
20
  onClick = _ref.onClick,
21
21
  _ref$onRemoveClick = _ref.onRemoveClick,
22
- onRemoveClick = _ref$onRemoveClick === void 0 ? noop : _ref$onRemoveClick;
22
+ onRemoveClick = _ref$onRemoveClick === void 0 ? noop : _ref$onRemoveClick,
23
+ onUpgradeCTAClick = _ref.onUpgradeCTAClick;
23
24
  return React.createElement(AutoSizer, null, function (_ref2) {
24
25
  var width = _ref2.width,
25
26
  height = _ref2.height;
26
27
  var nameCell = nameCellRenderer(isResumableUploadsEnabled);
27
- var progressCell = progressCellRenderer();
28
- var actionCell = actionCellRenderer(isResumableUploadsEnabled, onClick);
28
+ var progressCell = progressCellRenderer(!!onUpgradeCTAClick);
29
+ var actionCell = actionCellRenderer(isResumableUploadsEnabled, onClick, onUpgradeCTAClick);
29
30
  var removeCell = removeCellRenderer(onRemoveClick);
30
31
  return React.createElement(Table, {
31
32
  className: "bcu-item-list",
@@ -60,7 +61,7 @@ var ItemList = function ItemList(_ref) {
60
61
  cellRenderer: actionCell,
61
62
  dataKey: "status",
62
63
  flexShrink: 0,
63
- width: 25
64
+ width: onUpgradeCTAClick ? 100 : 25
64
65
  }), isResumableUploadsEnabled && React.createElement(Column, {
65
66
  className: "bcu-item-list-action-column",
66
67
  cellRenderer: removeCell,
@@ -20,14 +20,21 @@ type Props = {
20
20
  items: UploadItem[],
21
21
  onClick: Function,
22
22
  onRemoveClick?: (item: UploadItem) => void,
23
+ onUpgradeCTAClick?: Function,
23
24
  };
24
25
 
25
- const ItemList = ({ isResumableUploadsEnabled = false, items, onClick, onRemoveClick = noop }: Props) => (
26
+ const ItemList = ({
27
+ isResumableUploadsEnabled = false,
28
+ items,
29
+ onClick,
30
+ onRemoveClick = noop,
31
+ onUpgradeCTAClick,
32
+ }: Props) => (
26
33
  <AutoSizer>
27
34
  {({ width, height }) => {
28
35
  const nameCell = nameCellRenderer(isResumableUploadsEnabled);
29
- const progressCell = progressCellRenderer();
30
- const actionCell = actionCellRenderer(isResumableUploadsEnabled, onClick);
36
+ const progressCell = progressCellRenderer(!!onUpgradeCTAClick);
37
+ const actionCell = actionCellRenderer(isResumableUploadsEnabled, onClick, onUpgradeCTAClick);
31
38
  const removeCell = removeCellRenderer(onRemoveClick);
32
39
 
33
40
  return (
@@ -56,7 +63,7 @@ const ItemList = ({ isResumableUploadsEnabled = false, items, onClick, onRemoveC
56
63
  cellRenderer={actionCell}
57
64
  dataKey="status"
58
65
  flexShrink={0}
59
- width={25}
66
+ width={onUpgradeCTAClick ? 100 : 25}
60
67
  />
61
68
  {isResumableUploadsEnabled && (
62
69
  <Column