box-ui-elements 16.1.0-beta.9 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (987) hide show
  1. package/CONTRIBUTING.md +4 -0
  2. package/README.md +7 -1
  3. package/dist/explorer.css +1 -1
  4. package/dist/explorer.js +19 -19
  5. package/dist/openwith.css +1 -1
  6. package/dist/openwith.js +10 -10
  7. package/dist/picker.css +1 -1
  8. package/dist/picker.js +12 -12
  9. package/dist/preview.css +1 -1
  10. package/dist/preview.js +17 -17
  11. package/dist/sharing.css +1 -1
  12. package/dist/sharing.js +16 -55
  13. package/dist/sidebar.css +1 -1
  14. package/dist/sidebar.js +17 -17
  15. package/dist/uploader.css +1 -1
  16. package/dist/uploader.js +12 -12
  17. package/es/api/Feed.js +85 -38
  18. package/es/api/Feed.js.flow +46 -1
  19. package/es/api/Feed.js.map +1 -1
  20. package/es/api/Item.js +16 -10
  21. package/es/api/Item.js.flow +7 -4
  22. package/es/api/Item.js.map +1 -1
  23. package/es/api/ThreadedComments.js +58 -23
  24. package/es/api/ThreadedComments.js.flow +40 -0
  25. package/es/api/ThreadedComments.js.map +1 -1
  26. package/es/common/types/feed.js +1 -1
  27. package/es/common/types/feed.js.flow +34 -0
  28. package/es/common/types/feed.js.map +1 -1
  29. package/es/components/avatar/Avatar.js +22 -5
  30. package/es/components/avatar/Avatar.js.flow +24 -7
  31. package/es/components/avatar/Avatar.js.map +1 -1
  32. package/es/components/avatar/Avatar.scss +42 -0
  33. package/es/components/avatar/Avatar.stories.js +58 -0
  34. package/es/components/avatar/Avatar.stories.js.map +1 -1
  35. package/es/components/avatar/messages.js +9 -0
  36. package/es/components/avatar/messages.js.map +1 -0
  37. package/es/components/badgeable/Badgeable.scss +1 -1
  38. package/es/components/breadcrumb/Breadcrumb.js +1 -1
  39. package/es/components/breadcrumb/Breadcrumb.js.flow +1 -1
  40. package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
  41. package/es/components/button-group/ButtonGroup.scss +2 -2
  42. package/es/components/checkbox/Checkbox.js +5 -1
  43. package/es/components/checkbox/Checkbox.js.flow +7 -0
  44. package/es/components/checkbox/Checkbox.js.map +1 -1
  45. package/es/components/checkbox/Checkbox.scss +2 -2
  46. package/es/components/close-button/CloseButton.js +2 -2
  47. package/es/components/close-button/CloseButton.js.flow +2 -2
  48. package/es/components/close-button/CloseButton.js.map +1 -1
  49. package/es/components/contact-datalist-item/ContactDatalistItem.scss +1 -1
  50. package/es/components/date-picker/DatePicker.js +2 -2
  51. package/es/components/date-picker/DatePicker.js.map +1 -1
  52. package/es/components/date-picker/DatePicker.scss +1 -1
  53. package/es/components/draft-js-editor/DraftJSEditor.scss +1 -1
  54. package/es/components/dropdown-menu/DropdownMenu.js +5 -3
  55. package/es/components/dropdown-menu/DropdownMenu.js.flow +8 -2
  56. package/es/components/dropdown-menu/DropdownMenu.js.map +1 -1
  57. package/es/components/dropdown-menu/DropdownMenu.scss +6 -4
  58. package/es/components/error-mask/ErrorMask.scss +1 -1
  59. package/es/components/flyout/Flyout.js +9 -0
  60. package/es/components/flyout/Flyout.js.flow +13 -0
  61. package/es/components/flyout/Flyout.js.map +1 -1
  62. package/es/components/flyout/Flyout.scss +1 -1
  63. package/es/components/flyout/Overlay.js +2 -1
  64. package/es/components/flyout/Overlay.js.flow +2 -1
  65. package/es/components/flyout/Overlay.js.map +1 -1
  66. package/es/components/grid-view/GridView.js +3 -1
  67. package/es/components/grid-view/GridView.js.flow +3 -2
  68. package/es/components/grid-view/GridView.js.map +1 -1
  69. package/es/components/grid-view/GridViewSlider.js +5 -2
  70. package/es/components/grid-view/GridViewSlider.js.flow +5 -2
  71. package/es/components/grid-view/GridViewSlider.js.map +1 -1
  72. package/es/components/grid-view/GridViewSlider.scss +0 -10
  73. package/es/components/inline-error/InlineError.stories.js +12 -0
  74. package/es/components/inline-error/InlineError.stories.js.flow +9 -0
  75. package/es/components/inline-error/InlineError.stories.js.map +1 -0
  76. package/es/components/inline-notice/InlineNotice.stories.js +42 -0
  77. package/es/components/inline-notice/InlineNotice.stories.js.flow +59 -0
  78. package/es/components/inline-notice/InlineNotice.stories.js.map +1 -0
  79. package/es/components/label/InfoIconWithTooltip.js +2 -2
  80. package/es/components/label/InfoIconWithTooltip.js.map +1 -1
  81. package/es/components/label/Label.scss +1 -1
  82. package/es/components/media-query/stories/MediaQuery.stories.js +4 -2
  83. package/es/components/media-query/stories/MediaQuery.stories.js.flow +11 -2
  84. package/es/components/media-query/stories/MediaQuery.stories.js.map +1 -1
  85. package/es/components/media-query/types.js.flow +1 -0
  86. package/es/components/media-query/types.js.map +1 -1
  87. package/es/components/media-query/useMediaQuery.js +3 -1
  88. package/es/components/media-query/useMediaQuery.js.flow +3 -0
  89. package/es/components/media-query/useMediaQuery.js.map +1 -1
  90. package/es/components/menu/MenuHeader.scss +1 -1
  91. package/es/components/menu/SubmenuItem.js +3 -1
  92. package/es/components/menu/SubmenuItem.js.map +1 -1
  93. package/es/components/modal/Modal.scss +15 -0
  94. package/es/components/modal/ModalDialog.js +40 -10
  95. package/es/components/modal/ModalDialog.js.flow +44 -5
  96. package/es/components/modal/ModalDialog.js.map +1 -1
  97. package/es/components/nav-sidebar/NavSidebar.scss +1 -1
  98. package/es/components/nav-sidebar/NavSidebar.stories.js +37 -0
  99. package/es/components/nav-sidebar/NavSidebar.stories.js.flow +54 -0
  100. package/es/components/nav-sidebar/NavSidebar.stories.js.map +1 -0
  101. package/es/components/pill-cloud/PillCloud.stories.js +88 -0
  102. package/es/components/pill-cloud/PillCloud.stories.js.flow +48 -0
  103. package/es/components/pill-cloud/PillCloud.stories.js.map +1 -0
  104. package/es/components/pill-selector-dropdown/PillSelector.js +20 -11
  105. package/es/components/pill-selector-dropdown/PillSelector.js.flow +26 -4
  106. package/es/components/pill-selector-dropdown/PillSelector.js.map +1 -1
  107. package/es/components/pill-selector-dropdown/PillSelector.scss +4 -0
  108. package/es/components/pill-selector-dropdown/PillSelectorDropdown.js +1 -0
  109. package/es/components/pill-selector-dropdown/PillSelectorDropdown.js.flow +1 -0
  110. package/es/components/pill-selector-dropdown/PillSelectorDropdown.js.map +1 -1
  111. package/es/components/pill-selector-dropdown/_mixins.scss +1 -1
  112. package/es/components/popper/PopperComponent.js +3 -1
  113. package/es/components/popper/PopperComponent.js.flow +3 -2
  114. package/es/components/popper/PopperComponent.js.map +1 -1
  115. package/es/components/radio/RadioButton.scss +1 -1
  116. package/es/components/search-form/SearchForm.js +21 -11
  117. package/es/components/search-form/SearchForm.js.flow +30 -6
  118. package/es/components/search-form/SearchForm.js.map +1 -1
  119. package/es/components/select-button/SelectButton.js +6 -2
  120. package/es/components/select-button/SelectButton.js.flow +23 -2
  121. package/es/components/select-button/SelectButton.js.map +1 -1
  122. package/es/components/select-field/BaseSelectField.js +6 -2
  123. package/es/components/select-field/BaseSelectField.js.flow +19 -2
  124. package/es/components/select-field/BaseSelectField.js.map +1 -1
  125. package/es/components/select-field/SelectField.scss +8 -1
  126. package/es/components/selector-dropdown/SelectorDropdown.js +11 -3
  127. package/es/components/selector-dropdown/SelectorDropdown.js.flow +22 -5
  128. package/es/components/selector-dropdown/SelectorDropdown.js.map +1 -1
  129. package/es/components/selector-dropdown/SelectorDropdown.scss +2 -2
  130. package/es/components/table/makeSelectable.js +38 -7
  131. package/es/components/table/makeSelectable.js.flow +33 -6
  132. package/es/components/table/makeSelectable.js.map +1 -1
  133. package/es/components/text-area/TextArea.scss +1 -1
  134. package/es/components/text-input/TextInput.scss +1 -1
  135. package/es/components/text-input-with-copy-button/TextInputWithCopyButton.js +3 -2
  136. package/es/components/text-input-with-copy-button/TextInputWithCopyButton.js.flow +4 -1
  137. package/es/components/text-input-with-copy-button/TextInputWithCopyButton.js.map +1 -1
  138. package/es/components/text-input-with-copy-button/TextInputWithCopyButton.scss +11 -7
  139. package/es/components/thumbnail-card/ThumbnailCard.scss +1 -1
  140. package/es/components/time/ReadableTime.stories.js +46 -0
  141. package/es/components/time/ReadableTime.stories.js.flow +56 -0
  142. package/es/components/time/ReadableTime.stories.js.map +1 -0
  143. package/es/components/toggle/Toggle.js +11 -4
  144. package/es/components/toggle/Toggle.js.flow +16 -5
  145. package/es/components/toggle/Toggle.js.map +1 -1
  146. package/es/components/toggle/Toggle.scss +3 -3
  147. package/es/components/tooltip/CloseButton.js +24 -0
  148. package/es/components/tooltip/CloseButton.js.map +1 -0
  149. package/es/components/tooltip/Tooltip.js +4 -10
  150. package/es/components/tooltip/Tooltip.js.map +1 -1
  151. package/es/constants.js +7 -0
  152. package/es/constants.js.flow +7 -0
  153. package/es/constants.js.map +1 -1
  154. package/es/elements/common/_variables.scss +7 -2
  155. package/es/elements/common/base.scss +14 -0
  156. package/es/elements/common/breadcrumbs/Breadcrumb.scss +1 -1
  157. package/es/elements/common/breadcrumbs/BreadcrumbDropdown.scss +1 -1
  158. package/es/elements/common/breadcrumbs/InlineBreadcrumbs.scss +2 -2
  159. package/es/elements/common/header/Header.js +6 -2
  160. package/es/elements/common/header/Header.js.flow +7 -2
  161. package/es/elements/common/header/Header.js.map +1 -1
  162. package/es/elements/common/header/Logo.js +2 -1
  163. package/es/elements/common/header/Logo.js.flow +5 -1
  164. package/es/elements/common/header/Logo.js.map +1 -1
  165. package/es/elements/common/item/IconCell.js +68 -0
  166. package/es/elements/common/item/IconCell.js.flow +55 -0
  167. package/es/elements/common/item/IconCell.js.map +1 -0
  168. package/es/elements/common/item/ItemDetails.scss +1 -1
  169. package/es/elements/common/item/iconCellRenderer.js +5 -36
  170. package/es/elements/common/item/iconCellRenderer.js.flow +6 -22
  171. package/es/elements/common/item/iconCellRenderer.js.map +1 -1
  172. package/es/elements/common/messages.js +28 -0
  173. package/es/elements/common/messages.js.flow +35 -0
  174. package/es/elements/common/messages.js.map +1 -1
  175. package/es/elements/common/modal.scss +0 -2
  176. package/es/elements/common/share-access-select/ShareAccessSelect.scss +1 -1
  177. package/es/elements/common/sub-header/AddButton.js +4 -1
  178. package/es/elements/common/sub-header/AddButton.js.flow +2 -1
  179. package/es/elements/common/sub-header/AddButton.js.map +1 -1
  180. package/es/elements/common/sub-header/Sort.js +4 -10
  181. package/es/elements/common/sub-header/Sort.js.flow +7 -6
  182. package/es/elements/common/sub-header/Sort.js.map +1 -1
  183. package/es/elements/common/sub-header/SortButton.js +19 -6
  184. package/es/elements/common/sub-header/SortButton.js.flow +23 -10
  185. package/es/elements/common/sub-header/SortButton.js.map +1 -1
  186. package/es/elements/common/sub-header/ViewModeChangeButton.js +3 -3
  187. package/es/elements/common/sub-header/ViewModeChangeButton.js.flow +3 -3
  188. package/es/elements/common/sub-header/ViewModeChangeButton.js.map +1 -1
  189. package/es/elements/content-explorer/Content.js.flow +2 -1
  190. package/es/elements/content-explorer/Content.js.map +1 -1
  191. package/es/elements/content-explorer/ContentExplorer.js +63 -20
  192. package/es/elements/content-explorer/ContentExplorer.js.flow +50 -13
  193. package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
  194. package/es/elements/content-explorer/ItemGrid.js +55 -7
  195. package/es/elements/content-explorer/ItemGrid.js.flow +60 -9
  196. package/es/elements/content-explorer/ItemGrid.js.map +1 -1
  197. package/es/elements/content-explorer/ItemGridThumbnail.js +5 -2
  198. package/es/elements/content-explorer/ItemGridThumbnail.js.flow +5 -2
  199. package/es/elements/content-explorer/ItemGridThumbnail.js.map +1 -1
  200. package/es/elements/content-explorer/ItemList.js +4 -2
  201. package/es/elements/content-explorer/ItemList.js.flow +4 -2
  202. package/es/elements/content-explorer/ItemList.js.map +1 -1
  203. package/es/elements/content-explorer/ItemList.scss +16 -8
  204. package/es/elements/content-explorer/MoreOptions.js +6 -4
  205. package/es/elements/content-explorer/MoreOptions.js.flow +11 -4
  206. package/es/elements/content-explorer/MoreOptions.js.map +1 -1
  207. package/es/elements/content-open-with/ContentOpenWith.scss +1 -1
  208. package/es/elements/content-picker/Footer.js +15 -6
  209. package/es/elements/content-picker/Footer.js.flow +62 -51
  210. package/es/elements/content-picker/Footer.js.map +1 -1
  211. package/es/elements/content-picker/ItemList.scss +1 -1
  212. package/es/elements/content-preview/ContentPreview.js +44 -12
  213. package/es/elements/content-preview/ContentPreview.js.flow +43 -6
  214. package/es/elements/content-preview/ContentPreview.js.map +1 -1
  215. package/es/elements/content-preview/preview-header/PreviewHeader.scss +1 -1
  216. package/es/elements/content-sharing/ContentSharing.js +2 -2
  217. package/es/elements/content-sharing/ContentSharing.js.flow +2 -2
  218. package/es/elements/content-sharing/ContentSharing.js.map +1 -1
  219. package/es/elements/content-sidebar/ActivitySidebar.js +291 -62
  220. package/es/elements/content-sidebar/ActivitySidebar.js.flow +262 -17
  221. package/es/elements/content-sidebar/ActivitySidebar.js.map +1 -1
  222. package/es/elements/content-sidebar/ActivitySidebar.scss +7 -0
  223. package/es/elements/content-sidebar/ActivitySidebarFilter.js +36 -18
  224. package/es/elements/content-sidebar/ActivitySidebarFilter.js.flow +64 -23
  225. package/es/elements/content-sidebar/ActivitySidebarFilter.js.map +1 -1
  226. package/es/elements/content-sidebar/AddTaskMenu.scss +1 -1
  227. package/es/elements/content-sidebar/SidebarContent.js +2 -2
  228. package/es/elements/content-sidebar/SidebarContent.js.flow +1 -1
  229. package/es/elements/content-sidebar/SidebarContent.js.map +1 -1
  230. package/es/elements/content-sidebar/SidebarContent.scss +3 -3
  231. package/es/elements/content-sidebar/SidebarNav.js +3 -17
  232. package/es/elements/content-sidebar/SidebarNav.js.flow +3 -15
  233. package/es/elements/content-sidebar/SidebarNav.js.map +1 -1
  234. package/es/elements/content-sidebar/SidebarNavSign.js +48 -69
  235. package/es/elements/content-sidebar/SidebarNavSign.js.map +1 -1
  236. package/es/elements/content-sidebar/SidebarNavSign.scss +3 -25
  237. package/es/elements/content-sidebar/SidebarNavSignButton.js +79 -0
  238. package/es/elements/content-sidebar/SidebarNavSignButton.js.map +1 -0
  239. package/es/elements/content-sidebar/SidebarNavSignButton.scss +27 -0
  240. package/es/elements/content-sidebar/activity-feed/Avatar.js +4 -2
  241. package/es/elements/content-sidebar/activity-feed/Avatar.js.flow +5 -2
  242. package/es/elements/content-sidebar/activity-feed/Avatar.js.map +1 -1
  243. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +61 -15
  244. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.flow +73 -28
  245. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.map +1 -1
  246. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +122 -53
  247. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.flow +80 -13
  248. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.map +1 -1
  249. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.scss +11 -0
  250. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.js +9 -2
  251. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.js.map +1 -1
  252. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.scss +28 -0
  253. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js +27 -7
  254. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js.flow +48 -29
  255. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js.map +1 -1
  256. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.scss +69 -6
  257. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js +35 -4
  258. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js.flow +42 -5
  259. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js.map +1 -1
  260. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.scss +15 -0
  261. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +21 -8
  262. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.flow +30 -5
  263. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.map +1 -1
  264. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.scss +4 -7
  265. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js +45 -15
  266. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js.flow +43 -13
  267. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js.map +1 -1
  268. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.scss +26 -3
  269. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js +29 -48
  270. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js.flow +67 -56
  271. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js.map +1 -1
  272. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.scss +1 -1
  273. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js +14 -53
  274. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js.flow +16 -51
  275. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js.map +1 -1
  276. package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js +3 -2
  277. package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js.flow +5 -4
  278. package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js.map +1 -1
  279. package/es/elements/content-sidebar/activity-feed/annotation-thread/types.js +2 -0
  280. package/es/elements/content-sidebar/activity-feed/annotation-thread/types.js.flow +7 -0
  281. package/es/elements/content-sidebar/activity-feed/annotation-thread/types.js.map +1 -0
  282. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js +29 -17
  283. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js.flow +32 -10
  284. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js.map +1 -1
  285. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js +317 -63
  286. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js.flow +249 -55
  287. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js.map +1 -1
  288. package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js +27 -93
  289. package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js.flow +42 -83
  290. package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js.map +1 -1
  291. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js +15 -6
  292. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js.flow +27 -12
  293. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js.map +1 -1
  294. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.scss +11 -8
  295. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityLink.scss +1 -1
  296. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js +3 -1
  297. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js.flow +3 -1
  298. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js.map +1 -1
  299. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.scss +5 -0
  300. package/es/elements/content-sidebar/activity-feed/comment/BaseComment.js +385 -0
  301. package/es/elements/content-sidebar/activity-feed/comment/BaseComment.js.flow +456 -0
  302. package/es/elements/content-sidebar/activity-feed/comment/BaseComment.js.map +1 -0
  303. package/es/elements/content-sidebar/activity-feed/comment/BaseComment.scss +30 -0
  304. package/es/elements/content-sidebar/activity-feed/comment/Comment.js +53 -9
  305. package/es/elements/content-sidebar/activity-feed/comment/Comment.js.flow +42 -5
  306. package/es/elements/content-sidebar/activity-feed/comment/Comment.js.map +1 -1
  307. package/es/elements/content-sidebar/activity-feed/comment/Comment.scss +10 -0
  308. package/es/elements/content-sidebar/activity-feed/comment/CreateReply.js +54 -0
  309. package/es/elements/content-sidebar/activity-feed/comment/CreateReply.js.flow +72 -0
  310. package/es/elements/content-sidebar/activity-feed/comment/CreateReply.js.map +1 -0
  311. package/es/elements/content-sidebar/activity-feed/comment/CreateReply.scss +21 -0
  312. package/es/elements/content-sidebar/activity-feed/comment/Replies.scss +41 -0
  313. package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.js +44 -0
  314. package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.js.flow +41 -0
  315. package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.js.map +1 -0
  316. package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.scss +6 -0
  317. package/es/elements/content-sidebar/activity-feed/comment/messages.js +16 -0
  318. package/es/elements/content-sidebar/activity-feed/comment/messages.js.flow +20 -0
  319. package/es/elements/content-sidebar/activity-feed/comment/messages.js.map +1 -1
  320. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js +1 -1
  321. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.flow +3 -3
  322. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.map +1 -1
  323. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.scss +1 -1
  324. package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.scss +1 -1
  325. package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js +1 -1
  326. package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js.flow +2 -2
  327. package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js.map +1 -1
  328. package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.scss +1 -1
  329. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js +1 -0
  330. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.flow +1 -0
  331. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.map +1 -1
  332. package/es/elements/content-sidebar/activity-feed/task-new/AssigneeDetails.scss +1 -1
  333. package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js +7 -8
  334. package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js.flow +11 -7
  335. package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js.map +1 -1
  336. package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.scss +1 -5
  337. package/es/elements/content-sidebar/activity-feed/task-new/Task.js +2 -5
  338. package/es/elements/content-sidebar/activity-feed/task-new/Task.js.flow +1 -2
  339. package/es/elements/content-sidebar/activity-feed/task-new/Task.js.map +1 -1
  340. package/es/elements/content-sidebar/activity-feed/task-new/Task.scss +1 -8
  341. package/es/elements/content-sidebar/messages.js +22 -2
  342. package/es/elements/content-sidebar/messages.js.flow +29 -4
  343. package/es/elements/content-sidebar/messages.js.map +1 -1
  344. package/es/elements/content-sidebar/skills/timeline/Timeline.scss +1 -1
  345. package/es/elements/content-sidebar/skills/transcript/Transcript.scss +1 -1
  346. package/es/elements/content-sidebar/versions/VersionsGroup.scss +1 -1
  347. package/es/elements/content-sidebar/versions/VersionsItem.scss +3 -3
  348. package/es/elements/content-uploader/Footer.js +9 -3
  349. package/es/elements/content-uploader/Footer.js.flow +23 -3
  350. package/es/elements/content-uploader/Footer.js.map +1 -1
  351. package/es/elements/content-uploader/Footer.scss +0 -1
  352. package/es/elements/content-uploader/ItemAction.js +8 -4
  353. package/es/elements/content-uploader/ItemAction.js.flow +6 -3
  354. package/es/elements/content-uploader/ItemAction.js.map +1 -1
  355. package/es/elements/content-uploader/ItemRemove.js +11 -6
  356. package/es/elements/content-uploader/ItemRemove.js.flow +18 -6
  357. package/es/elements/content-uploader/ItemRemove.js.map +1 -1
  358. package/es/elements/content-uploader/UploadInput.js +21 -9
  359. package/es/elements/content-uploader/UploadInput.js.flow +19 -9
  360. package/es/elements/content-uploader/UploadInput.js.map +1 -1
  361. package/es/features/advanced-content-insights/AdvancedContentInsightsToggle.js +44 -0
  362. package/es/features/advanced-content-insights/AdvancedContentInsightsToggle.js.map +1 -0
  363. package/es/features/advanced-content-insights/AdvancedContentInsightsToggle.scss +19 -0
  364. package/es/features/advanced-content-insights/messages.js +17 -0
  365. package/es/features/advanced-content-insights/messages.js.map +1 -0
  366. package/es/features/classification/classificationColorsMap.js +1 -1
  367. package/es/features/classification/classificationColorsMap.js.flow +1 -1
  368. package/es/features/classification/classificationColorsMap.js.map +1 -1
  369. package/es/features/collaborator-avatars/CollaboratorAvatarItem.js +13 -9
  370. package/es/features/collaborator-avatars/CollaboratorAvatarItem.js.flow +11 -8
  371. package/es/features/collaborator-avatars/CollaboratorAvatarItem.js.map +1 -1
  372. package/es/features/collaborator-avatars/CollaboratorAvatars.scss +1 -1
  373. package/es/features/collaborator-avatars/CollaboratorList.js +4 -5
  374. package/es/features/collaborator-avatars/CollaboratorList.js.flow +3 -4
  375. package/es/features/collaborator-avatars/CollaboratorList.js.map +1 -1
  376. package/es/features/collaborator-avatars/CollaboratorListItem.js +7 -9
  377. package/es/features/collaborator-avatars/CollaboratorListItem.js.flow +7 -13
  378. package/es/features/collaborator-avatars/CollaboratorListItem.js.map +1 -1
  379. package/es/features/collaborator-avatars/CollaboratorListItem.scss +7 -3
  380. package/es/features/collapsible-sidebar/CollapsibleSidebar.js +3 -2
  381. package/es/features/collapsible-sidebar/CollapsibleSidebar.js.flow +5 -2
  382. package/es/features/collapsible-sidebar/CollapsibleSidebar.js.map +1 -1
  383. package/es/features/collapsible-sidebar/CollapsibleSidebar.scss +4 -7
  384. package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js +3 -1
  385. package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js.flow +15 -11
  386. package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js.map +1 -1
  387. package/es/features/content-explorer/content-explorer/ContentExplorer.js +146 -58
  388. package/es/features/content-explorer/content-explorer/ContentExplorer.js.flow +97 -20
  389. package/es/features/content-explorer/content-explorer/ContentExplorer.js.map +1 -1
  390. package/es/features/content-explorer/content-explorer/ContentExplorer.scss +67 -8
  391. package/es/features/content-explorer/content-explorer/ContentExplorerActionButtons.js +58 -11
  392. package/es/features/content-explorer/content-explorer/ContentExplorerActionButtons.js.flow +53 -13
  393. package/es/features/content-explorer/content-explorer/ContentExplorerActionButtons.js.map +1 -1
  394. package/es/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js +68 -0
  395. package/es/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js.flow +82 -0
  396. package/es/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js.map +1 -0
  397. package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js +13 -2
  398. package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js.flow +22 -7
  399. package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js.map +1 -1
  400. package/es/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js +33 -0
  401. package/es/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js.flow +30 -0
  402. package/es/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js.map +1 -0
  403. package/es/features/content-explorer/content-explorer/ContentExplorerSelectAll.js +16 -10
  404. package/es/features/content-explorer/content-explorer/ContentExplorerSelectAll.js.flow +34 -20
  405. package/es/features/content-explorer/content-explorer/ContentExplorerSelectAll.js.map +1 -1
  406. package/es/features/content-explorer/content-explorer/constants.js +7 -0
  407. package/es/features/content-explorer/content-explorer/constants.js.flow +6 -0
  408. package/es/features/content-explorer/content-explorer/constants.js.map +1 -0
  409. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +1 -0
  410. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.flow +13 -0
  411. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.map +1 -1
  412. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +42 -0
  413. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.flow +31 -0
  414. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.map +1 -1
  415. package/es/features/content-explorer/item-list/ItemList.js +20 -5
  416. package/es/features/content-explorer/item-list/ItemList.js.flow +17 -1
  417. package/es/features/content-explorer/item-list/ItemList.js.map +1 -1
  418. package/es/features/content-explorer/item-list/ItemList.scss +1 -1
  419. package/es/features/content-explorer/item-list/ItemListButton.js +4 -1
  420. package/es/features/content-explorer/item-list/ItemListButton.js.flow +10 -2
  421. package/es/features/content-explorer/item-list/ItemListButton.js.map +1 -1
  422. package/es/features/content-explorer/item-list/ItemListIcon.js +12 -45
  423. package/es/features/content-explorer/item-list/ItemListIcon.js.flow +5 -33
  424. package/es/features/content-explorer/item-list/ItemListIcon.js.map +1 -1
  425. package/es/features/content-explorer/item-list/ItemListName.js +2 -2
  426. package/es/features/content-explorer/item-list/ItemListName.js.flow +3 -2
  427. package/es/features/content-explorer/item-list/ItemListName.js.map +1 -1
  428. package/es/features/content-explorer/messages.js +23 -19
  429. package/es/features/content-explorer/messages.js.flow +41 -24
  430. package/es/features/content-explorer/messages.js.map +1 -1
  431. package/es/features/content-explorer/prop-types.js +2 -2
  432. package/es/features/content-explorer/prop-types.js.flow +2 -2
  433. package/es/features/content-explorer/prop-types.js.map +1 -1
  434. package/es/features/content-insights/_mixins.scss +1 -1
  435. package/es/features/content-insights/charts/bar/Bar.js +21 -2
  436. package/es/features/content-insights/charts/bar/Bar.js.map +1 -1
  437. package/es/features/content-insights/charts/bar/BarChart.js +6 -3
  438. package/es/features/content-insights/charts/bar/BarChart.js.map +1 -1
  439. package/es/features/invite-collaborators-modal/InviteCollaboratorsModal.scss +1 -1
  440. package/es/features/message-center/components/templates/common/styles/MessageFooter.scss +1 -1
  441. package/es/features/metadata-based-view/IconWithTooltip.js +4 -4
  442. package/es/features/metadata-based-view/IconWithTooltip.js.flow +4 -4
  443. package/es/features/metadata-based-view/IconWithTooltip.js.map +1 -1
  444. package/es/features/metadata-based-view/MetadataBasedItemList.scss +1 -1
  445. package/es/features/metadata-instance-editor/CascadePolicy.scss +1 -1
  446. package/es/features/metadata-instance-editor/TemplateDropdown.js +9 -21
  447. package/es/features/metadata-instance-editor/TemplateDropdown.js.flow +4 -10
  448. package/es/features/metadata-instance-editor/TemplateDropdown.js.map +1 -1
  449. package/es/features/metadata-instance-editor/TemplateDropdown.scss +2 -2
  450. package/es/features/metadata-instance-fields/EnumMetadataField.scss +2 -2
  451. package/es/features/metadata-instance-fields/MultiSelectMetadataField.scss +1 -1
  452. package/es/features/metadata-instance-fields/ReadOnlyMetadataField.scss +2 -2
  453. package/es/features/presence/PresenceAvatarList.scss +1 -1
  454. package/es/features/presence/PresenceCollaborator.scss +1 -1
  455. package/es/features/query-bar/styles/Condition.scss +2 -2
  456. package/es/features/quick-search/QuickSearchItem.js +4 -3
  457. package/es/features/quick-search/QuickSearchItem.js.flow +4 -3
  458. package/es/features/quick-search/QuickSearchItem.js.map +1 -1
  459. package/es/features/shared-link-settings-modal/ExpirationSection.js +5 -0
  460. package/es/features/shared-link-settings-modal/ExpirationSection.js.flow +4 -0
  461. package/es/features/shared-link-settings-modal/ExpirationSection.js.map +1 -1
  462. package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js +9 -3
  463. package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js.flow +9 -5
  464. package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js.map +1 -1
  465. package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.scss +3 -3
  466. package/es/features/shared-link-settings-modal/VanityNameSection.js +2 -2
  467. package/es/features/shared-link-settings-modal/VanityNameSection.js.flow +2 -2
  468. package/es/features/shared-link-settings-modal/VanityNameSection.js.map +1 -1
  469. package/es/features/unified-share-modal/InviteePermissionsMenu.js +2 -1
  470. package/es/features/unified-share-modal/InviteePermissionsMenu.js.flow +1 -0
  471. package/es/features/unified-share-modal/InviteePermissionsMenu.js.map +1 -1
  472. package/es/features/unified-share-modal/SharedLinkAccessMenu.js +2 -1
  473. package/es/features/unified-share-modal/SharedLinkAccessMenu.js.flow +1 -0
  474. package/es/features/unified-share-modal/SharedLinkAccessMenu.js.map +1 -1
  475. package/es/features/unified-share-modal/SharedLinkPermissionMenu.js +2 -1
  476. package/es/features/unified-share-modal/SharedLinkPermissionMenu.js.flow +1 -0
  477. package/es/features/unified-share-modal/SharedLinkPermissionMenu.js.map +1 -1
  478. package/es/features/unified-share-modal/SharedLinkSection.js +18 -18
  479. package/es/features/unified-share-modal/SharedLinkSection.js.flow +30 -38
  480. package/es/features/unified-share-modal/SharedLinkSection.js.map +1 -1
  481. package/es/features/unified-share-modal/UnifiedShareForm.js +27 -16
  482. package/es/features/unified-share-modal/UnifiedShareForm.js.flow +38 -25
  483. package/es/features/unified-share-modal/UnifiedShareForm.js.map +1 -1
  484. package/es/features/unified-share-modal/UnifiedShareModal.js +10 -1
  485. package/es/features/unified-share-modal/UnifiedShareModal.js.flow +9 -1
  486. package/es/features/unified-share-modal/UnifiedShareModal.js.map +1 -1
  487. package/es/features/unified-share-modal/UnifiedShareModal.scss +24 -13
  488. package/es/features/unified-share-modal/flowTypes.js.flow +10 -2
  489. package/es/features/unified-share-modal/flowTypes.js.map +1 -1
  490. package/es/features/unified-share-modal/messages.js +12 -4
  491. package/es/features/unified-share-modal/messages.js.flow +17 -5
  492. package/es/features/unified-share-modal/messages.js.map +1 -1
  493. package/es/features/virtualized-table/VirtualizedTable.scss +1 -1
  494. package/es/features/virtualized-table-renderers/_mixins.scss +1 -1
  495. package/es/icons/badges/MetadataDefaultBadge.js +3 -3
  496. package/es/icons/badges/MetadataDefaultBadge.js.flow +3 -3
  497. package/es/icons/badges/MetadataDefaultBadge.js.map +1 -1
  498. package/es/icons/general/IconAnyTask.js +2 -2
  499. package/es/icons/general/IconAnyTask.js.flow +2 -2
  500. package/es/icons/general/IconAnyTask.js.map +1 -1
  501. package/es/icons/general/IconEdit.js +2 -1
  502. package/es/icons/general/IconEdit.js.flow +2 -1
  503. package/es/icons/general/IconEdit.js.map +1 -1
  504. package/es/icons/metadata-view/IconMetadataView.js +2 -1
  505. package/es/icons/metadata-view/IconMetadataView.js.flow +2 -1
  506. package/es/icons/metadata-view/IconMetadataView.js.map +1 -1
  507. package/es/icons/two-toned/IconAnnotation.js +36 -0
  508. package/es/icons/two-toned/IconAnnotation.js.flow +27 -0
  509. package/es/icons/two-toned/IconAnnotation.js.map +1 -0
  510. package/es/icons/two-toned/_IconAnnotation.mixins.scss +9 -0
  511. package/es/src/components/avatar/Avatar.d.ts +18 -2
  512. package/es/src/components/avatar/Avatar.stories.d.ts +7 -2
  513. package/es/src/components/avatar/messages.d.ts +8 -0
  514. package/es/src/components/checkbox/Checkbox.d.ts +4 -1
  515. package/es/src/components/checkbox/Checkbox.stories.d.ts +1 -1
  516. package/es/src/components/tooltip/CloseButton.d.ts +14 -0
  517. package/es/src/components/tooltip/__tests__/CloseButton.test.d.ts +1 -0
  518. package/es/src/elements/content-sidebar/SidebarNavSign.d.ts +2 -24
  519. package/es/src/elements/content-sidebar/SidebarNavSignButton.d.ts +25 -0
  520. package/es/src/elements/content-sidebar/__tests__/SidebarNavSignButton.test.d.ts +1 -0
  521. package/es/src/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.d.ts +3 -0
  522. package/es/src/features/advanced-content-insights/AdvancedContentInsightsToggle.d.ts +10 -0
  523. package/es/src/features/advanced-content-insights/__tests__/AdvancedContentInsightsToggle.test.d.ts +1 -0
  524. package/es/src/features/advanced-content-insights/messages.d.ts +18 -0
  525. package/es/src/features/content-insights/charts/bar/Bar.d.ts +6 -2
  526. package/es/src/features/content-insights/charts/bar/BarChart.d.ts +7 -2
  527. package/es/src/icons/two-toned/IconAnnotation.d.ts +3 -0
  528. package/es/src/icons/two-toned/__tests__/IconAnnotation.test.d.ts +1 -0
  529. package/es/src/styles/typography.stories.d.ts +8 -0
  530. package/es/src/styles/variables.d.ts +1 -1
  531. package/es/styles/_deprecated.scss +1 -0
  532. package/es/styles/_inputs.scss +2 -3
  533. package/es/styles/common/_buttons.scss +2 -2
  534. package/es/styles/common/_forms.scss +2 -0
  535. package/es/styles/common/_links.scss +1 -1
  536. package/es/styles/constants/_colors.scss +1 -1
  537. package/es/styles/constants/_themes.scss +1 -1
  538. package/es/styles/typography.stories.js +55 -0
  539. package/es/styles/typography.stories.js.map +1 -0
  540. package/es/styles/typography.stories.scss +60 -0
  541. package/es/styles/variables.js +2 -2
  542. package/es/styles/variables.js.flow +2 -2
  543. package/es/styles/variables.js.map +1 -1
  544. package/es/utils/createTheme.js +2 -2
  545. package/es/utils/createTheme.js.flow +2 -2
  546. package/es/utils/createTheme.js.map +1 -1
  547. package/i18n/bn-IN.js +46 -22
  548. package/i18n/bn-IN.properties +79 -31
  549. package/i18n/da-DK.js +46 -22
  550. package/i18n/da-DK.properties +79 -31
  551. package/i18n/de-DE.js +45 -21
  552. package/i18n/de-DE.properties +78 -30
  553. package/i18n/en-AU.js +33 -9
  554. package/i18n/en-AU.properties +66 -18
  555. package/i18n/en-CA.js +32 -8
  556. package/i18n/en-CA.properties +65 -17
  557. package/i18n/en-GB.js +33 -9
  558. package/i18n/en-GB.properties +66 -18
  559. package/i18n/en-US.js +32 -8
  560. package/i18n/en-US.properties +65 -17
  561. package/i18n/en-x-pseudo.js +39 -8
  562. package/i18n/es-419.js +46 -22
  563. package/i18n/es-419.properties +79 -31
  564. package/i18n/es-ES.js +46 -22
  565. package/i18n/es-ES.properties +79 -31
  566. package/i18n/fi-FI.js +45 -21
  567. package/i18n/fi-FI.properties +78 -30
  568. package/i18n/fr-CA.js +44 -20
  569. package/i18n/fr-CA.properties +78 -30
  570. package/i18n/fr-FR.js +44 -20
  571. package/i18n/fr-FR.properties +78 -30
  572. package/i18n/hi-IN.js +46 -22
  573. package/i18n/hi-IN.properties +79 -31
  574. package/i18n/it-IT.js +45 -21
  575. package/i18n/it-IT.properties +78 -30
  576. package/i18n/ja-JP.js +55 -31
  577. package/i18n/ja-JP.properties +88 -40
  578. package/i18n/ko-KR.js +44 -20
  579. package/i18n/ko-KR.properties +78 -30
  580. package/i18n/nb-NO.js +45 -21
  581. package/i18n/nb-NO.properties +78 -30
  582. package/i18n/nl-NL.js +46 -22
  583. package/i18n/nl-NL.properties +79 -31
  584. package/i18n/pl-PL.js +45 -21
  585. package/i18n/pl-PL.properties +78 -30
  586. package/i18n/pt-BR.js +45 -21
  587. package/i18n/pt-BR.properties +78 -30
  588. package/i18n/ru-RU.js +45 -21
  589. package/i18n/ru-RU.properties +78 -30
  590. package/i18n/sv-SE.js +46 -22
  591. package/i18n/sv-SE.properties +79 -31
  592. package/i18n/tr-TR.js +45 -21
  593. package/i18n/tr-TR.properties +78 -30
  594. package/i18n/zh-CN.js +45 -21
  595. package/i18n/zh-CN.properties +78 -30
  596. package/i18n/zh-TW.js +45 -21
  597. package/i18n/zh-TW.properties +78 -30
  598. package/package.json +3 -3
  599. package/src/api/Feed.js +46 -1
  600. package/src/api/Item.js +7 -4
  601. package/src/api/ThreadedComments.js +40 -0
  602. package/src/api/__tests__/Feed.test.js +48 -0
  603. package/src/api/__tests__/Item.test.js +14 -0
  604. package/src/api/__tests__/ThreadedComments.test.js +46 -0
  605. package/src/common/types/feed.js +34 -0
  606. package/src/components/avatar/Avatar.js.flow +24 -7
  607. package/src/components/avatar/Avatar.scss +42 -0
  608. package/src/components/avatar/Avatar.stories.tsx +45 -0
  609. package/src/components/avatar/Avatar.tsx +39 -9
  610. package/src/components/avatar/__tests__/Avatar.test.tsx +39 -29
  611. package/src/components/avatar/messages.ts +11 -0
  612. package/src/components/badgeable/Badgeable.scss +1 -1
  613. package/src/components/breadcrumb/Breadcrumb.js +1 -1
  614. package/src/components/breadcrumb/__tests__/Breadcrumb.test.js +1 -1
  615. package/src/components/button-group/ButtonGroup.scss +2 -2
  616. package/src/components/checkbox/Checkbox.js.flow +7 -0
  617. package/src/components/checkbox/Checkbox.scss +2 -2
  618. package/src/components/checkbox/Checkbox.tsx +7 -0
  619. package/src/components/checkbox/__tests__/Checkbox.test.tsx +19 -2
  620. package/src/components/close-button/CloseButton.js.flow +2 -2
  621. package/src/components/close-button/CloseButton.tsx +2 -2
  622. package/src/components/contact-datalist-item/ContactDatalistItem.scss +1 -1
  623. package/src/components/date-picker/DatePicker.scss +1 -1
  624. package/src/components/date-picker/DatePicker.tsx +2 -2
  625. package/src/components/date-picker/__tests__/DatePicker.test.tsx +4 -4
  626. package/src/components/draft-js-editor/DraftJSEditor.scss +1 -1
  627. package/src/components/dropdown-menu/DropdownMenu.js +8 -2
  628. package/src/components/dropdown-menu/DropdownMenu.scss +6 -4
  629. package/src/components/dropdown-menu/__tests__/DropdownMenu.test.js +18 -0
  630. package/src/components/error-mask/ErrorMask.scss +1 -1
  631. package/src/components/flyout/Flyout.js +13 -0
  632. package/src/components/flyout/Flyout.scss +1 -1
  633. package/src/components/flyout/Overlay.js +2 -1
  634. package/src/components/flyout/__tests__/Flyout.test.js +22 -1
  635. package/src/components/flyout/__tests__/Overlay.test.js +1 -1
  636. package/src/components/grid-view/GridView.js +3 -2
  637. package/src/components/grid-view/GridViewSlider.js +5 -2
  638. package/src/components/grid-view/GridViewSlider.scss +0 -10
  639. package/src/components/grid-view/__tests__/GridViewSlider.test.js +35 -2
  640. package/src/components/grid-view/__tests__/__snapshots__/GridView.test.js.snap +2 -0
  641. package/src/components/grid-view/__tests__/__snapshots__/GridViewSlider.test.js.snap +38 -13
  642. package/src/components/inline-error/InlineError.stories.js +9 -0
  643. package/src/components/inline-error/InlineError.stories.md +3 -0
  644. package/src/components/inline-notice/InlineNotice.stories.js +59 -0
  645. package/src/components/inline-notice/InlineNotice.stories.md +1 -0
  646. package/src/components/label/InfoIconWithTooltip.tsx +2 -2
  647. package/src/components/label/Label.scss +1 -1
  648. package/src/components/label/__tests__/__snapshots__/InfoIconWithTooltip.test.tsx.snap +1 -1
  649. package/src/components/media-query/__tests__/withMediaQuery.test.js +1 -0
  650. package/src/components/media-query/stories/MediaQuery.stories.js +11 -2
  651. package/src/components/media-query/stories/MediaQuery.stories.md +10 -9
  652. package/src/components/media-query/types.js +1 -0
  653. package/src/components/media-query/useMediaQuery.js +3 -0
  654. package/src/components/menu/MenuHeader.scss +1 -1
  655. package/src/components/menu/SubmenuItem.tsx +4 -1
  656. package/src/components/modal/Modal.scss +15 -0
  657. package/src/components/modal/ModalDialog.js +44 -5
  658. package/src/components/modal/__tests__/ModalDialog.test.js +22 -1
  659. package/src/components/nav-sidebar/NavSidebar.scss +1 -1
  660. package/src/components/nav-sidebar/NavSidebar.stories.js +54 -0
  661. package/src/components/nav-sidebar/NavSidebar.stories.md +1 -0
  662. package/src/components/pill-cloud/PillCloud.stories.js +48 -0
  663. package/src/components/pill-cloud/PillCloud.stories.md +1 -0
  664. package/src/components/pill-selector-dropdown/PillSelector.js +26 -4
  665. package/src/components/pill-selector-dropdown/PillSelector.scss +4 -0
  666. package/src/components/pill-selector-dropdown/PillSelectorDropdown.js +1 -0
  667. package/src/components/pill-selector-dropdown/__tests__/PillSelector.test.js +1 -1
  668. package/src/components/pill-selector-dropdown/__tests__/PillSelectorDropdown.test.js +4 -4
  669. package/src/components/pill-selector-dropdown/__tests__/__snapshots__/PillSelector.test.js.snap +1 -1
  670. package/src/components/pill-selector-dropdown/__tests__/__snapshots__/PillSelectorDropdown.test.js.snap +1 -1
  671. package/src/components/pill-selector-dropdown/_mixins.scss +1 -1
  672. package/src/components/popper/PopperComponent.js +3 -2
  673. package/src/components/radio/RadioButton.scss +1 -1
  674. package/src/components/search-form/SearchForm.js +30 -6
  675. package/src/components/search-form/__tests__/SearchForm.test.js +1 -1
  676. package/src/components/select-button/SelectButton.js +23 -2
  677. package/src/components/select-button/__tests__/SelectButton.test.js +8 -0
  678. package/src/components/select-field/BaseSelectField.js +19 -2
  679. package/src/components/select-field/SelectField.scss +8 -1
  680. package/src/components/select-field/__tests__/BaseSelectField.test.js +9 -0
  681. package/src/components/selector-dropdown/SelectorDropdown.js +22 -5
  682. package/src/components/selector-dropdown/SelectorDropdown.scss +2 -2
  683. package/src/components/selector-dropdown/__tests__/SelectorDropdown.test.js +2 -1
  684. package/src/components/table/__tests__/makeSelectable.test.js +65 -3
  685. package/src/components/table/makeSelectable.js +33 -6
  686. package/src/components/text-area/TextArea.scss +1 -1
  687. package/src/components/text-input/TextInput.scss +1 -1
  688. package/src/components/text-input-with-copy-button/TextInputWithCopyButton.js +4 -1
  689. package/src/components/text-input-with-copy-button/TextInputWithCopyButton.scss +11 -7
  690. package/src/components/thumbnail-card/ThumbnailCard.scss +1 -1
  691. package/src/components/time/ReadableTime.stories.js +56 -0
  692. package/src/components/time/ReadableTime.stories.md +1 -0
  693. package/src/components/toggle/Toggle.js +16 -5
  694. package/src/components/toggle/Toggle.scss +3 -3
  695. package/src/components/toggle/__tests__/__snapshots__/Toggle.test.js.snap +2 -0
  696. package/src/components/tooltip/CloseButton.tsx +22 -0
  697. package/src/components/tooltip/Tooltip.tsx +3 -8
  698. package/src/components/tooltip/__tests__/CloseButton.test.tsx +32 -0
  699. package/src/components/tooltip/__tests__/Tooltip.test.tsx +21 -0
  700. package/src/components/tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +3 -10
  701. package/src/constants.js +7 -0
  702. package/src/elements/common/_variables.scss +7 -2
  703. package/src/elements/common/base.scss +14 -0
  704. package/src/elements/common/breadcrumbs/Breadcrumb.scss +1 -1
  705. package/src/elements/common/breadcrumbs/BreadcrumbDropdown.scss +1 -1
  706. package/src/elements/common/breadcrumbs/InlineBreadcrumbs.scss +2 -2
  707. package/src/elements/common/header/Header.js +7 -2
  708. package/src/elements/common/header/Logo.js +5 -1
  709. package/src/elements/common/header/__tests__/Header.test.js +40 -0
  710. package/src/elements/common/item/IconCell.js +55 -0
  711. package/src/elements/common/item/ItemDetails.scss +1 -1
  712. package/src/elements/common/item/__tests__/IconCell.test.js +88 -0
  713. package/src/elements/common/item/iconCellRenderer.js +6 -22
  714. package/src/elements/common/messages.js +35 -0
  715. package/src/elements/common/modal.scss +0 -2
  716. package/src/elements/common/share-access-select/ShareAccessSelect.scss +1 -1
  717. package/src/elements/common/sub-header/AddButton.js +2 -1
  718. package/src/elements/common/sub-header/Sort.js +7 -6
  719. package/src/elements/common/sub-header/SortButton.js +23 -10
  720. package/src/elements/common/sub-header/ViewModeChangeButton.js +3 -3
  721. package/src/elements/common/sub-header/__tests__/Sort.test.js +12 -62
  722. package/src/elements/common/sub-header/__tests__/SortButton.test.js +24 -0
  723. package/src/elements/common/sub-header/__tests__/SubHeaderRight.test.js +1 -1
  724. package/src/elements/content-explorer/Content.js +2 -1
  725. package/src/elements/content-explorer/ContentExplorer.js +50 -13
  726. package/src/elements/content-explorer/ItemGrid.js +60 -9
  727. package/src/elements/content-explorer/ItemGridThumbnail.js +5 -2
  728. package/src/elements/content-explorer/ItemList.js +4 -2
  729. package/src/elements/content-explorer/ItemList.scss +16 -8
  730. package/src/elements/content-explorer/MoreOptions.js +11 -4
  731. package/src/elements/content-explorer/__tests__/ContentExplorer.test.js +44 -0
  732. package/src/elements/content-explorer/__tests__/MoreOptions.test.js +30 -0
  733. package/src/elements/content-open-with/ContentOpenWith.scss +1 -1
  734. package/src/elements/content-picker/Footer.js +62 -51
  735. package/src/elements/content-picker/ItemList.scss +1 -1
  736. package/src/elements/content-picker/__tests__/Footer.test.js +17 -0
  737. package/src/elements/content-preview/ContentPreview.js +43 -6
  738. package/src/elements/content-preview/__tests__/ContentPreview.test.js +96 -0
  739. package/src/elements/content-preview/preview-header/PreviewHeader.scss +1 -1
  740. package/src/elements/content-sharing/ContentSharing.js +2 -2
  741. package/src/elements/content-sidebar/ActivitySidebar.js +262 -17
  742. package/src/elements/content-sidebar/ActivitySidebar.scss +7 -0
  743. package/src/elements/content-sidebar/ActivitySidebarFilter.js +64 -23
  744. package/src/elements/content-sidebar/AddTaskMenu.scss +1 -1
  745. package/src/elements/content-sidebar/SidebarContent.js +1 -1
  746. package/src/elements/content-sidebar/SidebarContent.scss +3 -3
  747. package/src/elements/content-sidebar/SidebarNav.js +3 -15
  748. package/src/elements/content-sidebar/SidebarNavSign.scss +3 -25
  749. package/src/elements/content-sidebar/SidebarNavSign.tsx +53 -55
  750. package/src/elements/content-sidebar/SidebarNavSignButton.scss +27 -0
  751. package/src/elements/content-sidebar/SidebarNavSignButton.tsx +73 -0
  752. package/src/elements/content-sidebar/__tests__/ActivitySidebar.test.js +545 -16
  753. package/src/elements/content-sidebar/__tests__/ActivitySidebarFilter.test.js +47 -18
  754. package/src/elements/content-sidebar/__tests__/SidebarNav.test.js +3 -3
  755. package/src/elements/content-sidebar/__tests__/SidebarNavSign.test.tsx +72 -52
  756. package/src/elements/content-sidebar/__tests__/SidebarNavSignButton.test.tsx +60 -0
  757. package/src/elements/content-sidebar/__tests__/__snapshots__/ActivitySidebar.test.js.snap +2 -0
  758. package/src/elements/content-sidebar/activity-feed/Avatar.js +5 -2
  759. package/src/elements/content-sidebar/activity-feed/__tests__/Avatar.test.js +0 -10
  760. package/src/elements/content-sidebar/activity-feed/__tests__/__snapshots__/Avatar.test.js.snap +13 -10
  761. package/src/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +73 -28
  762. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +80 -13
  763. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.scss +11 -0
  764. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.scss +28 -0
  765. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.tsx +16 -2
  766. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js +48 -29
  767. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.scss +69 -6
  768. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js +42 -5
  769. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.scss +15 -0
  770. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +30 -5
  771. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.scss +4 -7
  772. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActiveState.test.js +11 -0
  773. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityFeed.test.js +74 -0
  774. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityItem.test.tsx +20 -0
  775. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThread.test.js +8 -3
  776. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThreadReplies.test.js +12 -0
  777. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThreadRepliesForm.test.js +20 -5
  778. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/__snapshots__/ActiveState.test.js.snap +7 -0
  779. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/__snapshots__/ActivityFeed.test.js.snap +3 -0
  780. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js +43 -13
  781. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.scss +26 -3
  782. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js +67 -56
  783. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.scss +1 -1
  784. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js +16 -51
  785. package/src/elements/content-sidebar/activity-feed/annotation-thread/__mocks__/useAnnotationThread.js +19 -0
  786. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThread.test.js +12 -1
  787. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThreadContent.test.js +18 -52
  788. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThreadCreate.test.js +23 -54
  789. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useAnnotationAPI.test.js +40 -3
  790. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useAnnotationThread.test.js +429 -25
  791. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useRepliesAPI.test.js +15 -13
  792. package/src/elements/content-sidebar/activity-feed/annotation-thread/errors.js +5 -4
  793. package/src/elements/content-sidebar/activity-feed/annotation-thread/types.js +7 -0
  794. package/src/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js +32 -10
  795. package/src/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js +249 -55
  796. package/src/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js +42 -83
  797. package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js +27 -12
  798. package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.scss +11 -8
  799. package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityLink.scss +1 -1
  800. package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js +3 -1
  801. package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.scss +5 -0
  802. package/src/elements/content-sidebar/activity-feed/annotations/__tests__/AnnotationActivity.test.js +26 -0
  803. package/src/elements/content-sidebar/activity-feed/comment/BaseComment.js +456 -0
  804. package/src/elements/content-sidebar/activity-feed/comment/BaseComment.scss +30 -0
  805. package/src/elements/content-sidebar/activity-feed/comment/Comment.js +42 -5
  806. package/src/elements/content-sidebar/activity-feed/comment/Comment.scss +10 -0
  807. package/src/elements/content-sidebar/activity-feed/comment/CreateReply.js +72 -0
  808. package/src/elements/content-sidebar/activity-feed/comment/CreateReply.scss +21 -0
  809. package/src/elements/content-sidebar/activity-feed/comment/Replies.scss +41 -0
  810. package/src/elements/content-sidebar/activity-feed/comment/RepliesToggle.js +41 -0
  811. package/src/elements/content-sidebar/activity-feed/comment/RepliesToggle.scss +6 -0
  812. package/src/elements/content-sidebar/activity-feed/comment/__tests__/BaseComment.test.js +373 -0
  813. package/src/elements/content-sidebar/activity-feed/comment/__tests__/Comment.test.js +14 -6
  814. package/src/elements/content-sidebar/activity-feed/comment/__tests__/CreateReply.test.js +127 -0
  815. package/src/elements/content-sidebar/activity-feed/comment/__tests__/Replies.test.js +219 -0
  816. package/src/elements/content-sidebar/activity-feed/comment/__tests__/RepliesToggle.test.js +82 -0
  817. package/src/elements/content-sidebar/activity-feed/comment/__tests__/__snapshots__/Comment.test.js.snap +18 -4
  818. package/src/elements/content-sidebar/activity-feed/comment/messages.js +20 -0
  819. package/src/elements/content-sidebar/activity-feed/comment-form/CommentForm.js +3 -3
  820. package/src/elements/content-sidebar/activity-feed/comment-form/CommentForm.scss +1 -1
  821. package/src/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.scss +1 -1
  822. package/src/elements/content-sidebar/activity-feed/common/activity-message/messages.js +2 -2
  823. package/src/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.scss +1 -1
  824. package/src/elements/content-sidebar/activity-feed/task-form/TaskForm.js +1 -0
  825. package/src/elements/content-sidebar/activity-feed/task-new/AssigneeDetails.scss +1 -1
  826. package/src/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js +11 -7
  827. package/src/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.scss +1 -5
  828. package/src/elements/content-sidebar/activity-feed/task-new/Task.js +1 -2
  829. package/src/elements/content-sidebar/activity-feed/task-new/Task.scss +1 -8
  830. package/src/elements/content-sidebar/activity-feed/task-new/__tests__/__snapshots__/Task.test.js.snap +1 -5
  831. package/src/elements/content-sidebar/messages.js +29 -4
  832. package/src/elements/content-sidebar/skills/keywords/__tests__/__snapshots__/EditableKeywords.test.js.snap +0 -6
  833. package/src/elements/content-sidebar/skills/timeline/Timeline.scss +1 -1
  834. package/src/elements/content-sidebar/skills/transcript/Transcript.scss +1 -1
  835. package/src/elements/content-sidebar/versions/VersionsGroup.scss +1 -1
  836. package/src/elements/content-sidebar/versions/VersionsItem.scss +3 -3
  837. package/src/elements/content-uploader/Footer.js +23 -3
  838. package/src/elements/content-uploader/Footer.scss +0 -1
  839. package/src/elements/content-uploader/ItemAction.js +6 -3
  840. package/src/elements/content-uploader/ItemRemove.js +18 -6
  841. package/src/elements/content-uploader/UploadInput.js +19 -9
  842. package/src/elements/content-uploader/__tests__/Footer.test.js +59 -0
  843. package/src/elements/content-uploader/__tests__/ItemAction.test.js +11 -1
  844. package/src/elements/content-uploader/__tests__/ItemRemove.test.js +22 -0
  845. package/src/elements/content-uploader/__tests__/__snapshots__/ItemAction.test.js.snap +36 -0
  846. package/src/elements/content-uploader/__tests__/__snapshots__/UploadInput.test.js.snap +4 -0
  847. package/src/features/advanced-content-insights/AdvancedContentInsightsToggle.scss +19 -0
  848. package/src/features/advanced-content-insights/AdvancedContentInsightsToggle.tsx +59 -0
  849. package/src/features/advanced-content-insights/__tests__/AdvancedContentInsightsToggle.test.tsx +33 -0
  850. package/src/features/advanced-content-insights/__tests__/__snapshots__/AdvancedContentInsightsToggle.test.tsx.snap +42 -0
  851. package/src/features/advanced-content-insights/messages.ts +22 -0
  852. package/src/features/classification/classificationColorsMap.js +1 -1
  853. package/src/features/collaborator-avatars/CollaboratorAvatarItem.js +11 -8
  854. package/src/features/collaborator-avatars/CollaboratorAvatars.scss +1 -1
  855. package/src/features/collaborator-avatars/CollaboratorList.js +3 -4
  856. package/src/features/collaborator-avatars/CollaboratorListItem.js +7 -13
  857. package/src/features/collaborator-avatars/CollaboratorListItem.scss +7 -3
  858. package/src/features/collaborator-avatars/__tests__/CollaboratorAvatarItem.test.js +6 -2
  859. package/src/features/collaborator-avatars/__tests__/__snapshots__/CollaboratorAvatarItem.test.js.snap +5 -12
  860. package/src/features/collaborator-avatars/__tests__/__snapshots__/CollaboratorList.test.js.snap +6 -8
  861. package/src/features/collaborator-avatars/__tests__/__snapshots__/CollaboratorListItem.test.js.snap +36 -40
  862. package/src/features/collapsible-sidebar/CollapsibleSidebar.js +5 -2
  863. package/src/features/collapsible-sidebar/CollapsibleSidebar.scss +4 -7
  864. package/src/features/collapsible-sidebar/CollapsibleSidebarLogo.js +15 -11
  865. package/src/features/collapsible-sidebar/__tests__/CollapsibleSidebar.test.js +1 -0
  866. package/src/features/collapsible-sidebar/__tests__/CollapsibleSidebarLogo.test.js +14 -0
  867. package/src/features/collapsible-sidebar/__tests__/__snapshots__/CollapsibleSidebar.test.js.snap +1 -1
  868. package/src/features/content-explorer/content-explorer/ContentExplorer.js +97 -20
  869. package/src/features/content-explorer/content-explorer/ContentExplorer.scss +67 -8
  870. package/src/features/content-explorer/content-explorer/ContentExplorerActionButtons.js +53 -13
  871. package/src/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js +82 -0
  872. package/src/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js +22 -7
  873. package/src/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js +30 -0
  874. package/src/features/content-explorer/content-explorer/ContentExplorerSelectAll.js +34 -20
  875. package/src/features/content-explorer/content-explorer/__tests__/ContentExplorer.test.js +28 -0
  876. package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerActionButtons.test.js +96 -8
  877. package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerFolderTreeBreadcrumbs.test.js +91 -0
  878. package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerHeaderActions.test.js +8 -0
  879. package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerIncludeSubfolders.test.js +50 -0
  880. package/src/features/content-explorer/content-explorer/__tests__/__snapshots__/ContentExplorer.test.js.snap +4 -0
  881. package/src/features/content-explorer/content-explorer/constants.js +6 -0
  882. package/src/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +13 -0
  883. package/src/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +31 -0
  884. package/src/features/content-explorer/item-list/ItemList.js +17 -1
  885. package/src/features/content-explorer/item-list/ItemList.scss +1 -1
  886. package/src/features/content-explorer/item-list/ItemListButton.js +10 -2
  887. package/src/features/content-explorer/item-list/ItemListIcon.js +5 -33
  888. package/src/features/content-explorer/item-list/ItemListName.js +3 -2
  889. package/src/features/content-explorer/item-list/__tests__/ItemList.test.js +72 -0
  890. package/src/features/content-explorer/item-list/__tests__/ItemListButton.test.js +8 -0
  891. package/src/features/content-explorer/item-list/__tests__/ItemListIcon.test.js +24 -18
  892. package/src/features/content-explorer/item-list/__tests__/__snapshots__/ItemListIcon.test.js.snap +37 -24
  893. package/src/features/content-explorer/messages.js +41 -24
  894. package/src/features/content-explorer/prop-types.js +2 -2
  895. package/src/features/content-insights/_mixins.scss +1 -1
  896. package/src/features/content-insights/charts/bar/Bar.tsx +24 -3
  897. package/src/features/content-insights/charts/bar/BarChart.tsx +10 -3
  898. package/src/features/content-insights/charts/bar/__tests__/Bar.test.tsx +51 -0
  899. package/src/features/content-insights/charts/bar/__tests__/BarChart.test.tsx +7 -1
  900. package/src/features/invite-collaborators-modal/InviteCollaboratorsModal.scss +1 -1
  901. package/src/features/message-center/components/templates/common/styles/MessageFooter.scss +1 -1
  902. package/src/features/metadata-based-view/IconWithTooltip.js +4 -4
  903. package/src/features/metadata-based-view/MetadataBasedItemList.scss +1 -1
  904. package/src/features/metadata-based-view/__tests__/__snapshots__/IconWithTooltip.test.js.snap +3 -3
  905. package/src/features/metadata-instance-editor/CascadePolicy.scss +1 -1
  906. package/src/features/metadata-instance-editor/TemplateDropdown.js +4 -10
  907. package/src/features/metadata-instance-editor/TemplateDropdown.scss +2 -2
  908. package/src/features/metadata-instance-editor/__tests__/__snapshots__/TemplateDropdown.test.js.snap +28 -7
  909. package/src/features/metadata-instance-fields/EnumMetadataField.scss +2 -2
  910. package/src/features/metadata-instance-fields/MultiSelectMetadataField.scss +1 -1
  911. package/src/features/metadata-instance-fields/ReadOnlyMetadataField.scss +2 -2
  912. package/src/features/presence/PresenceAvatarList.scss +1 -1
  913. package/src/features/presence/PresenceCollaborator.scss +1 -1
  914. package/src/features/query-bar/styles/Condition.scss +2 -2
  915. package/src/features/quick-search/QuickSearchItem.js +4 -3
  916. package/src/features/shared-link-settings-modal/ExpirationSection.js +4 -0
  917. package/src/features/shared-link-settings-modal/SharedLinkSettingsModal.js +9 -5
  918. package/src/features/shared-link-settings-modal/SharedLinkSettingsModal.scss +3 -3
  919. package/src/features/shared-link-settings-modal/VanityNameSection.js +2 -2
  920. package/src/features/shared-link-settings-modal/__tests__/ExpirationSection.test.js +9 -0
  921. package/src/features/shared-link-settings-modal/__tests__/SharedLinkSettingsModal.test.js +9 -4
  922. package/src/features/unified-share-modal/InviteePermissionsMenu.js +1 -0
  923. package/src/features/unified-share-modal/SharedLinkAccessMenu.js +1 -0
  924. package/src/features/unified-share-modal/SharedLinkPermissionMenu.js +1 -0
  925. package/src/features/unified-share-modal/SharedLinkSection.js +30 -38
  926. package/src/features/unified-share-modal/UnifiedShareForm.js +38 -25
  927. package/src/features/unified-share-modal/UnifiedShareModal.js +9 -1
  928. package/src/features/unified-share-modal/UnifiedShareModal.scss +24 -13
  929. package/src/features/unified-share-modal/__tests__/SharedLinkSection.test.js +19 -3
  930. package/src/features/unified-share-modal/__tests__/UnifiedShareForm.test.js +10 -0
  931. package/src/features/unified-share-modal/__tests__/UnifiedShareModal.test.js +9 -0
  932. package/src/features/unified-share-modal/__tests__/__snapshots__/InviteePermissionsMenu.test.js.snap +16 -0
  933. package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkAccessMenu.test.js.snap +6 -0
  934. package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkPermissionMenu.test.js.snap +6 -0
  935. package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkSection.test.js.snap +211 -313
  936. package/src/features/unified-share-modal/flowTypes.js +10 -2
  937. package/src/features/unified-share-modal/messages.js +17 -5
  938. package/src/features/virtualized-table/VirtualizedTable.scss +1 -1
  939. package/src/features/virtualized-table/__tests__/__snapshots__/BaseVirtualizedTable.test.js.snap +3 -0
  940. package/src/features/virtualized-table/__tests__/__snapshots__/DraggableVirtualizedTable.test.js.snap +3 -0
  941. package/src/features/virtualized-table/__tests__/__snapshots__/VirtualizedTable.test.js.snap +8 -0
  942. package/src/features/virtualized-table-renderers/_mixins.scss +1 -1
  943. package/src/icons/badges/MetadataDefaultBadge.js.flow +3 -3
  944. package/src/icons/badges/MetadataDefaultBadge.tsx +3 -3
  945. package/src/icons/badges/__tests__/__snapshots__/MetadataDefaultBadge.test.tsx.snap +2 -2
  946. package/src/icons/general/IconAnyTask.js.flow +2 -2
  947. package/src/icons/general/IconAnyTask.tsx +2 -2
  948. package/src/icons/general/IconEdit.js.flow +2 -1
  949. package/src/icons/general/IconEdit.tsx +2 -1
  950. package/src/icons/general/__tests__/__snapshots__/IconAnyTask.test.tsx.snap +1 -1
  951. package/src/icons/general/__tests__/__snapshots__/IconEdit.test.tsx.snap +2 -2
  952. package/src/icons/metadata-view/IconMetadataView.js.flow +2 -1
  953. package/src/icons/metadata-view/IconMetadataView.tsx +3 -1
  954. package/src/icons/metadata-view/__tests__/__snapshots__/IconMetadataView.test.tsx.snap +1 -1
  955. package/src/icons/two-toned/IconAnnotation.js.flow +27 -0
  956. package/src/icons/two-toned/IconAnnotation.tsx +26 -0
  957. package/src/icons/two-toned/_IconAnnotation.mixins.scss +9 -0
  958. package/src/icons/two-toned/__tests__/IconAnnotation.test.tsx +28 -0
  959. package/src/icons/two-toned/__tests__/__snapshots__/IconAnnotation.test.tsx.snap +28 -0
  960. package/src/styles/_deprecated.scss +1 -0
  961. package/src/styles/_inputs.scss +2 -3
  962. package/src/styles/colors.md +1 -1
  963. package/src/styles/common/_buttons.scss +2 -2
  964. package/src/styles/common/_forms.scss +2 -0
  965. package/src/styles/common/_links.scss +1 -1
  966. package/src/styles/constants/_colors.scss +1 -1
  967. package/src/styles/constants/_themes.scss +1 -1
  968. package/src/styles/typography.stories.scss +60 -0
  969. package/src/styles/typography.stories.tsx +70 -0
  970. package/src/styles/variables.js +2 -2
  971. package/src/styles/variables.json +2 -2
  972. package/src/styles/variables.ts +2 -2
  973. package/src/utils/__tests__/__snapshots__/createTheme.test.js.snap +4 -4
  974. package/src/utils/createTheme.js +2 -2
  975. package/es/elements/common/sub-header/Sort.scss +0 -8
  976. package/es/elements/content-sidebar/activity-feed/task-new/_mixins.scss +0 -10
  977. package/es/features/content-explorer/item-types.js +0 -6
  978. package/es/features/content-explorer/item-types.js.flow +0 -5
  979. package/es/features/content-explorer/item-types.js.map +0 -1
  980. package/src/components/inline-error/README.md +0 -10
  981. package/src/components/inline-notice/README.md +0 -57
  982. package/src/components/nav-sidebar/README.md +0 -57
  983. package/src/components/pill-cloud/README.md +0 -39
  984. package/src/components/time/README.md +0 -58
  985. package/src/elements/common/sub-header/Sort.scss +0 -8
  986. package/src/elements/content-sidebar/activity-feed/task-new/_mixins.scss +0 -10
  987. package/src/features/content-explorer/item-types.js +0 -5
@@ -27,6 +27,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
27
27
  import * as React from 'react';
28
28
  import getProp from 'lodash/get';
29
29
  import noop from 'lodash/noop';
30
+ import throttle from 'lodash/throttle';
30
31
  import { FormattedMessage } from 'react-intl';
31
32
  import classNames from 'classnames';
32
33
  import ActiveState from './ActiveState';
@@ -36,7 +37,7 @@ import InlineError from '../../../../components/inline-error/InlineError';
36
37
  import LoadingIndicator from '../../../../components/loading-indicator/LoadingIndicator';
37
38
  import messages from './messages';
38
39
  import { collapseFeedState, ItemTypes } from './activityFeedUtils';
39
- import { PERMISSION_CAN_CREATE_ANNOTATIONS } from '../../../../constants';
40
+ import { FEED_ITEM_TYPE_ANNOTATION, FEED_ITEM_TYPE_COMMENT, FEED_ITEM_TYPE_TASK, PERMISSION_CAN_CREATE_ANNOTATIONS } from '../../../../constants';
40
41
  import { scrollIntoView } from '../../../../utils/dom';
41
42
  import './ActivityFeed.scss';
42
43
 
@@ -59,7 +60,9 @@ function (_React$Component) {
59
60
  _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ActivityFeed)).call.apply(_getPrototypeOf2, [this].concat(args)));
60
61
 
61
62
  _defineProperty(_assertThisInitialized(_this), "state", {
62
- isInputOpen: false
63
+ isScrolled: false,
64
+ isInputOpen: false,
65
+ selectedItemId: null
63
66
  });
64
67
 
65
68
  _defineProperty(_assertThisInitialized(_this), "activeFeedItemRef", React.createRef());
@@ -88,6 +91,20 @@ function (_React$Component) {
88
91
  }
89
92
  });
90
93
 
94
+ _defineProperty(_assertThisInitialized(_this), "handleFeedScroll", function (event) {
95
+ var target = event.target;
96
+
97
+ if (target instanceof Element) {
98
+ var scrollTop = target.scrollTop;
99
+
100
+ _this.setState({
101
+ isScrolled: scrollTop > 0
102
+ });
103
+ }
104
+ });
105
+
106
+ _defineProperty(_assertThisInitialized(_this), "throttledFeedScroll", throttle(_this.handleFeedScroll, 100));
107
+
91
108
  _defineProperty(_assertThisInitialized(_this), "onKeyDown", function (event) {
92
109
  var nativeEvent = event.nativeEvent;
93
110
  nativeEvent.stopImmediatePropagation();
@@ -139,6 +156,40 @@ function (_React$Component) {
139
156
  versionInfoHandler(data);
140
157
  });
141
158
 
159
+ _defineProperty(_assertThisInitialized(_this), "setSelectedItem", function (itemId) {
160
+ var hasReplies = _this.props.hasReplies;
161
+
162
+ if (!hasReplies) {
163
+ return;
164
+ }
165
+
166
+ _this.setState({
167
+ selectedItemId: itemId
168
+ });
169
+ });
170
+
171
+ _defineProperty(_assertThisInitialized(_this), "isFeedItemActive", function (_ref4) {
172
+ var id = _ref4.id,
173
+ type = _ref4.type;
174
+ var _this$props2 = _this.props,
175
+ activeFeedEntryId = _this$props2.activeFeedEntryId,
176
+ activeFeedEntryType = _this$props2.activeFeedEntryType;
177
+ var selectedItemId = _this.state.selectedItemId;
178
+ var isSelected = selectedItemId === id;
179
+ return selectedItemId ? isSelected : id === activeFeedEntryId && type === activeFeedEntryType;
180
+ });
181
+
182
+ _defineProperty(_assertThisInitialized(_this), "isCommentFeedItemActive", function (item) {
183
+ var activeFeedEntryId = _this.props.activeFeedEntryId;
184
+ var replies = item.replies;
185
+
186
+ var isActive = _this.isFeedItemActive(item);
187
+
188
+ return isActive || !!replies && replies.some(function (reply) {
189
+ return reply.id === activeFeedEntryId;
190
+ });
191
+ });
192
+
142
193
  return _this;
143
194
  }
144
195
 
@@ -153,9 +204,9 @@ function (_React$Component) {
153
204
  var prevActiveFeedEntryId = prevProps.activeFeedEntryId,
154
205
  prevCurrentUser = prevProps.currentUser,
155
206
  prevFeedItems = prevProps.feedItems;
156
- var _this$props2 = this.props,
157
- currFeedItems = _this$props2.feedItems,
158
- activeFeedEntryId = _this$props2.activeFeedEntryId;
207
+ var _this$props3 = this.props,
208
+ currFeedItems = _this$props3.feedItems,
209
+ activeFeedEntryId = _this$props3.activeFeedEntryId;
159
210
  var prevIsInputOpen = prevState.isInputOpen;
160
211
  var currIsInputOpen = this.state.isInputOpen;
161
212
  var hasLoaded = this.hasLoaded(prevCurrentUser, prevFeedItems);
@@ -202,52 +253,66 @@ function (_React$Component) {
202
253
  value: function render() {
203
254
  var _this2 = this;
204
255
 
205
- var _this$props3 = this.props,
206
- activeFeedEntryId = _this$props3.activeFeedEntryId,
207
- activeFeedEntryType = _this$props3.activeFeedEntryType,
208
- activityFeedError = _this$props3.activityFeedError,
209
- approverSelectorContacts = _this$props3.approverSelectorContacts,
210
- currentUser = _this$props3.currentUser,
211
- feedItems = _this$props3.feedItems,
212
- file = _this$props3.file,
213
- getApproverWithQuery = _this$props3.getApproverWithQuery,
214
- getAvatarUrl = _this$props3.getAvatarUrl,
215
- getMentionWithQuery = _this$props3.getMentionWithQuery,
216
- getUserProfileUrl = _this$props3.getUserProfileUrl,
217
- hasReplies = _this$props3.hasReplies,
218
- isDisabled = _this$props3.isDisabled,
219
- mentionSelectorContacts = _this$props3.mentionSelectorContacts,
220
- contactsLoaded = _this$props3.contactsLoaded,
221
- onAnnotationDelete = _this$props3.onAnnotationDelete,
222
- onAnnotationEdit = _this$props3.onAnnotationEdit,
223
- onAnnotationSelect = _this$props3.onAnnotationSelect,
224
- onAnnotationStatusChange = _this$props3.onAnnotationStatusChange,
225
- onAppActivityDelete = _this$props3.onAppActivityDelete,
226
- onCommentCreate = _this$props3.onCommentCreate,
227
- onCommentDelete = _this$props3.onCommentDelete,
228
- onCommentUpdate = _this$props3.onCommentUpdate,
229
- onHideReplies = _this$props3.onHideReplies,
230
- onReplyCreate = _this$props3.onReplyCreate,
231
- onReplyDelete = _this$props3.onReplyDelete,
232
- onReplyUpdate = _this$props3.onReplyUpdate,
233
- onShowReplies = _this$props3.onShowReplies,
234
- onTaskAssignmentUpdate = _this$props3.onTaskAssignmentUpdate,
235
- onTaskDelete = _this$props3.onTaskDelete,
236
- onTaskModalClose = _this$props3.onTaskModalClose,
237
- onTaskUpdate = _this$props3.onTaskUpdate,
238
- onTaskView = _this$props3.onTaskView,
239
- onVersionHistoryClick = _this$props3.onVersionHistoryClick,
240
- translations = _this$props3.translations;
241
- var isInputOpen = this.state.isInputOpen;
256
+ var _this$props4 = this.props,
257
+ activeFeedEntryType = _this$props4.activeFeedEntryType,
258
+ activityFeedError = _this$props4.activityFeedError,
259
+ approverSelectorContacts = _this$props4.approverSelectorContacts,
260
+ currentUser = _this$props4.currentUser,
261
+ feedItems = _this$props4.feedItems,
262
+ file = _this$props4.file,
263
+ getApproverWithQuery = _this$props4.getApproverWithQuery,
264
+ getAvatarUrl = _this$props4.getAvatarUrl,
265
+ getMentionWithQuery = _this$props4.getMentionWithQuery,
266
+ getUserProfileUrl = _this$props4.getUserProfileUrl,
267
+ hasNewThreadedReplies = _this$props4.hasNewThreadedReplies,
268
+ hasReplies = _this$props4.hasReplies,
269
+ hasVersions = _this$props4.hasVersions,
270
+ isDisabled = _this$props4.isDisabled,
271
+ mentionSelectorContacts = _this$props4.mentionSelectorContacts,
272
+ contactsLoaded = _this$props4.contactsLoaded,
273
+ onAnnotationDelete = _this$props4.onAnnotationDelete,
274
+ onAnnotationEdit = _this$props4.onAnnotationEdit,
275
+ onAnnotationSelect = _this$props4.onAnnotationSelect,
276
+ onAnnotationStatusChange = _this$props4.onAnnotationStatusChange,
277
+ onAppActivityDelete = _this$props4.onAppActivityDelete,
278
+ onCommentCreate = _this$props4.onCommentCreate,
279
+ onCommentDelete = _this$props4.onCommentDelete,
280
+ onCommentUpdate = _this$props4.onCommentUpdate,
281
+ onHideReplies = _this$props4.onHideReplies,
282
+ onReplyCreate = _this$props4.onReplyCreate,
283
+ onReplyDelete = _this$props4.onReplyDelete,
284
+ onReplyUpdate = _this$props4.onReplyUpdate,
285
+ onShowReplies = _this$props4.onShowReplies,
286
+ onTaskAssignmentUpdate = _this$props4.onTaskAssignmentUpdate,
287
+ onTaskDelete = _this$props4.onTaskDelete,
288
+ onTaskModalClose = _this$props4.onTaskModalClose,
289
+ onTaskUpdate = _this$props4.onTaskUpdate,
290
+ onTaskView = _this$props4.onTaskView,
291
+ onVersionHistoryClick = _this$props4.onVersionHistoryClick,
292
+ translations = _this$props4.translations;
293
+ var _this$state = this.state,
294
+ isInputOpen = _this$state.isInputOpen,
295
+ isScrolled = _this$state.isScrolled;
296
+ var currentFileVersionId = getProp(file, 'file_version.id');
242
297
  var hasAnnotationCreatePermission = getProp(file, ['permissions', PERMISSION_CAN_CREATE_ANNOTATIONS], false);
243
298
  var hasCommentPermission = getProp(file, 'permissions.can_comment', false);
244
299
  var showCommentForm = !!(currentUser && hasCommentPermission && onCommentCreate && feedItems);
245
300
  var isEmpty = this.isEmpty(this.props);
246
301
  var isLoading = !this.hasLoaded();
247
- var activeEntry = Array.isArray(feedItems) && feedItems.find(function (_ref4) {
248
- var id = _ref4.id,
249
- type = _ref4.type;
250
- return id === activeFeedEntryId && type === activeFeedEntryType;
302
+ var activeFeedItem = Array.isArray(feedItems) && feedItems.find(function (item) {
303
+ switch (item.type) {
304
+ case FEED_ITEM_TYPE_ANNOTATION:
305
+ return _this2.isCommentFeedItemActive(item);
306
+
307
+ case FEED_ITEM_TYPE_COMMENT:
308
+ return _this2.isCommentFeedItemActive(item);
309
+
310
+ case FEED_ITEM_TYPE_TASK:
311
+ return _this2.isFeedItemActive(item);
312
+
313
+ default:
314
+ return false;
315
+ }
251
316
  });
252
317
  var errorMessageByEntryType = {
253
318
  annotation: messages.annotationMissingError,
@@ -255,26 +320,27 @@ function (_React$Component) {
255
320
  task: messages.taskMissingError
256
321
  };
257
322
  var inlineFeedItemErrorMessage = activeFeedEntryType ? errorMessageByEntryType[activeFeedEntryType] : undefined;
258
- var isInlineFeedItemErrorVisible = !isLoading && activeFeedEntryType && !activeEntry;
259
- var currentFileVersionId = getProp(file, 'file_version.id');
260
- return (// eslint-disable-next-line
323
+ var isInlineFeedItemErrorVisible = !isLoading && activeFeedEntryType && !activeFeedItem;
324
+ return (// eslint-disable-next-line jsx-a11y/no-static-element-interactions
261
325
  React.createElement("div", {
262
- className: "bcs-activity-feed",
326
+ className: classNames('bcs-activity-feed', {
327
+ 'bcs-is-scrolled': isScrolled
328
+ }),
263
329
  "data-testid": "activityfeed",
264
330
  onKeyDown: this.onKeyDown
265
331
  }, React.createElement("div", {
266
332
  ref: function ref(_ref5) {
267
333
  _this2.feedContainer = _ref5;
268
334
  },
269
- className: "bcs-activity-feed-items-container"
335
+ className: "bcs-activity-feed-items-container",
336
+ onScroll: this.throttledFeedScroll
270
337
  }, isLoading && React.createElement("div", {
271
338
  className: "bcs-activity-feed-loading-state"
272
339
  }, React.createElement(LoadingIndicator, null)), isEmpty && !isLoading && React.createElement(EmptyState, {
273
340
  showAnnotationMessage: hasAnnotationCreatePermission,
274
341
  showCommentMessage: showCommentForm
275
342
  }), !isEmpty && !isLoading && React.createElement(ActiveState, _extends({}, activityFeedError, {
276
- activeFeedEntryId: activeFeedEntryId,
277
- activeFeedEntryType: activeFeedEntryType,
343
+ activeFeedItem: activeFeedItem,
278
344
  activeFeedItemRef: this.activeFeedItemRef,
279
345
  approverSelectorContacts: approverSelectorContacts,
280
346
  currentFileVersionId: currentFileVersionId,
@@ -283,7 +349,9 @@ function (_React$Component) {
283
349
  getAvatarUrl: getAvatarUrl,
284
350
  getMentionWithQuery: getMentionWithQuery,
285
351
  getUserProfileUrl: getUserProfileUrl,
352
+ hasNewThreadedReplies: hasNewThreadedReplies,
286
353
  hasReplies: hasReplies,
354
+ hasVersions: hasVersions,
287
355
  isDisabled: isDisabled,
288
356
  items: collapseFeedState(feedItems),
289
357
  mentionSelectorContacts: mentionSelectorContacts,
@@ -294,6 +362,7 @@ function (_React$Component) {
294
362
  onAppActivityDelete: onAppActivityDelete,
295
363
  onCommentDelete: hasCommentPermission ? onCommentDelete : noop,
296
364
  onCommentEdit: hasCommentPermission ? onCommentUpdate : noop,
365
+ onCommentSelect: this.setSelectedItem,
297
366
  onHideReplies: onHideReplies,
298
367
  onReplyCreate: hasCommentPermission ? onReplyCreate : noop,
299
368
  onReplyDelete: hasCommentPermission ? onReplyDelete : noop,
@@ -6,6 +6,7 @@
6
6
  import * as React from 'react';
7
7
  import getProp from 'lodash/get';
8
8
  import noop from 'lodash/noop';
9
+ import throttle from 'lodash/throttle';
9
10
  import { FormattedMessage } from 'react-intl';
10
11
  import classNames from 'classnames';
11
12
  import ActiveState from './ActiveState';
@@ -15,7 +16,12 @@ import InlineError from '../../../../components/inline-error/InlineError';
15
16
  import LoadingIndicator from '../../../../components/loading-indicator/LoadingIndicator';
16
17
  import messages from './messages';
17
18
  import { collapseFeedState, ItemTypes } from './activityFeedUtils';
18
- import { PERMISSION_CAN_CREATE_ANNOTATIONS } from '../../../../constants';
19
+ import {
20
+ FEED_ITEM_TYPE_ANNOTATION,
21
+ FEED_ITEM_TYPE_COMMENT,
22
+ FEED_ITEM_TYPE_TASK,
23
+ PERMISSION_CAN_CREATE_ANNOTATIONS,
24
+ } from '../../../../constants';
19
25
  import { scrollIntoView } from '../../../../utils/dom';
20
26
  import type {
21
27
  Annotation,
@@ -23,9 +29,10 @@ import type {
23
29
  BoxCommentPermission,
24
30
  Comment,
25
31
  CommentFeedItemType,
26
- FocusableFeedItemType,
27
- FeedItems,
28
32
  FeedItemStatus,
33
+ FeedItems,
34
+ FocusableFeedItemType,
35
+ Task,
29
36
  } from '../../../../common/types/feed';
30
37
  import type { SelectorItems, User, GroupMini, BoxItem } from '../../../../common/types/core';
31
38
  import type { Errors, GetAvatarUrlCallback, GetProfileUrlCallback } from '../../../common/flowTypes';
@@ -45,7 +52,9 @@ type Props = {
45
52
  getAvatarUrl: GetAvatarUrlCallback,
46
53
  getMentionWithQuery?: Function,
47
54
  getUserProfileUrl?: GetProfileUrlCallback,
55
+ hasNewThreadedReplies?: boolean,
48
56
  hasReplies?: boolean,
57
+ hasVersions?: boolean,
49
58
  isDisabled?: boolean,
50
59
  mentionSelectorContacts?: SelectorItems<User>,
51
60
  onAnnotationDelete?: ({ id: string, permissions: AnnotationPermission }) => void,
@@ -88,11 +97,15 @@ type Props = {
88
97
 
89
98
  type State = {
90
99
  isInputOpen: boolean,
100
+ isScrolled: boolean,
101
+ selectedItemId: string | null,
91
102
  };
92
103
 
93
104
  class ActivityFeed extends React.Component<Props, State> {
94
105
  state = {
106
+ isScrolled: false,
95
107
  isInputOpen: false,
108
+ selectedItemId: null,
96
109
  };
97
110
 
98
111
  activeFeedItemRef = React.createRef<null | HTMLElement>();
@@ -179,6 +192,16 @@ class ActivityFeed extends React.Component<Props, State> {
179
192
  }
180
193
  };
181
194
 
195
+ handleFeedScroll = (event: UIEvent): void => {
196
+ const { target } = event;
197
+ if (target instanceof Element) {
198
+ const { scrollTop } = target;
199
+ this.setState({ isScrolled: scrollTop > 0 });
200
+ }
201
+ };
202
+
203
+ throttledFeedScroll = throttle(this.handleFeedScroll, 100);
204
+
182
205
  onKeyDown = (event: SyntheticKeyboardEvent<>): void => {
183
206
  const { nativeEvent } = event;
184
207
  nativeEvent.stopImmediatePropagation();
@@ -224,9 +247,33 @@ class ActivityFeed extends React.Component<Props, State> {
224
247
  versionInfoHandler(data);
225
248
  };
226
249
 
250
+ setSelectedItem = (itemId: string | null) => {
251
+ const { hasReplies } = this.props;
252
+ if (!hasReplies) {
253
+ return;
254
+ }
255
+ this.setState({ selectedItemId: itemId });
256
+ };
257
+
258
+ isFeedItemActive = <T, U: { id: string, type: T }>({ id, type }: U): boolean => {
259
+ const { activeFeedEntryId, activeFeedEntryType } = this.props;
260
+ const { selectedItemId } = this.state;
261
+
262
+ const isSelected = selectedItemId === id;
263
+
264
+ return selectedItemId ? isSelected : id === activeFeedEntryId && type === activeFeedEntryType;
265
+ };
266
+
267
+ isCommentFeedItemActive = <T, U: { id: string, replies?: Array<Comment>, type: T }>(item: U): boolean => {
268
+ const { activeFeedEntryId } = this.props;
269
+ const { replies } = item;
270
+
271
+ const isActive = this.isFeedItemActive<T, U>(item);
272
+ return isActive || (!!replies && replies.some(reply => reply.id === activeFeedEntryId));
273
+ };
274
+
227
275
  render(): React.Node {
228
276
  const {
229
- activeFeedEntryId,
230
277
  activeFeedEntryType,
231
278
  activityFeedError,
232
279
  approverSelectorContacts,
@@ -237,7 +284,9 @@ class ActivityFeed extends React.Component<Props, State> {
237
284
  getAvatarUrl,
238
285
  getMentionWithQuery,
239
286
  getUserProfileUrl,
287
+ hasNewThreadedReplies,
240
288
  hasReplies,
289
+ hasVersions,
241
290
  isDisabled,
242
291
  mentionSelectorContacts,
243
292
  contactsLoaded,
@@ -262,7 +311,8 @@ class ActivityFeed extends React.Component<Props, State> {
262
311
  onVersionHistoryClick,
263
312
  translations,
264
313
  } = this.props;
265
- const { isInputOpen } = this.state;
314
+ const { isInputOpen, isScrolled } = this.state;
315
+ const currentFileVersionId = getProp(file, 'file_version.id');
266
316
  const hasAnnotationCreatePermission = getProp(file, ['permissions', PERMISSION_CAN_CREATE_ANNOTATIONS], false);
267
317
  const hasCommentPermission = getProp(file, 'permissions.can_comment', false);
268
318
  const showCommentForm = !!(currentUser && hasCommentPermission && onCommentCreate && feedItems);
@@ -270,9 +320,20 @@ class ActivityFeed extends React.Component<Props, State> {
270
320
  const isEmpty = this.isEmpty(this.props);
271
321
  const isLoading = !this.hasLoaded();
272
322
 
273
- const activeEntry =
323
+ const activeFeedItem =
274
324
  Array.isArray(feedItems) &&
275
- feedItems.find(({ id, type }) => id === activeFeedEntryId && type === activeFeedEntryType);
325
+ feedItems.find(item => {
326
+ switch (item.type) {
327
+ case FEED_ITEM_TYPE_ANNOTATION:
328
+ return this.isCommentFeedItemActive<typeof FEED_ITEM_TYPE_ANNOTATION, Annotation>(item);
329
+ case FEED_ITEM_TYPE_COMMENT:
330
+ return this.isCommentFeedItemActive<typeof FEED_ITEM_TYPE_COMMENT, Comment>(item);
331
+ case FEED_ITEM_TYPE_TASK:
332
+ return this.isFeedItemActive<typeof FEED_ITEM_TYPE_TASK, Task>(item);
333
+ default:
334
+ return false;
335
+ }
336
+ });
276
337
 
277
338
  const errorMessageByEntryType = {
278
339
  annotation: messages.annotationMissingError,
@@ -284,17 +345,21 @@ class ActivityFeed extends React.Component<Props, State> {
284
345
  ? errorMessageByEntryType[activeFeedEntryType]
285
346
  : undefined;
286
347
 
287
- const isInlineFeedItemErrorVisible = !isLoading && activeFeedEntryType && !activeEntry;
288
- const currentFileVersionId = getProp(file, 'file_version.id');
348
+ const isInlineFeedItemErrorVisible = !isLoading && activeFeedEntryType && !activeFeedItem;
289
349
 
290
350
  return (
291
- // eslint-disable-next-line
292
- <div className="bcs-activity-feed" data-testid="activityfeed" onKeyDown={this.onKeyDown}>
351
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions
352
+ <div
353
+ className={classNames('bcs-activity-feed', { 'bcs-is-scrolled': isScrolled })}
354
+ data-testid="activityfeed"
355
+ onKeyDown={this.onKeyDown}
356
+ >
293
357
  <div
294
358
  ref={ref => {
295
359
  this.feedContainer = ref;
296
360
  }}
297
361
  className="bcs-activity-feed-items-container"
362
+ onScroll={this.throttledFeedScroll}
298
363
  >
299
364
  {isLoading && (
300
365
  <div className="bcs-activity-feed-loading-state">
@@ -311,8 +376,7 @@ class ActivityFeed extends React.Component<Props, State> {
311
376
  {!isEmpty && !isLoading && (
312
377
  <ActiveState
313
378
  {...activityFeedError}
314
- activeFeedEntryId={activeFeedEntryId}
315
- activeFeedEntryType={activeFeedEntryType}
379
+ activeFeedItem={activeFeedItem}
316
380
  activeFeedItemRef={this.activeFeedItemRef}
317
381
  approverSelectorContacts={approverSelectorContacts}
318
382
  currentFileVersionId={currentFileVersionId}
@@ -321,7 +385,9 @@ class ActivityFeed extends React.Component<Props, State> {
321
385
  getAvatarUrl={getAvatarUrl}
322
386
  getMentionWithQuery={getMentionWithQuery}
323
387
  getUserProfileUrl={getUserProfileUrl}
388
+ hasNewThreadedReplies={hasNewThreadedReplies}
324
389
  hasReplies={hasReplies}
390
+ hasVersions={hasVersions}
325
391
  isDisabled={isDisabled}
326
392
  items={collapseFeedState(feedItems)}
327
393
  mentionSelectorContacts={mentionSelectorContacts}
@@ -332,6 +398,7 @@ class ActivityFeed extends React.Component<Props, State> {
332
398
  onAppActivityDelete={onAppActivityDelete}
333
399
  onCommentDelete={hasCommentPermission ? onCommentDelete : noop}
334
400
  onCommentEdit={hasCommentPermission ? onCommentUpdate : noop}
401
+ onCommentSelect={this.setSelectedItem}
335
402
  onHideReplies={onHideReplies}
336
403
  onReplyCreate={hasCommentPermission ? onReplyCreate : noop}
337
404
  onReplyDelete={hasCommentPermission ? onReplyDelete : noop}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js"],"names":["React","getProp","noop","FormattedMessage","classNames","ActiveState","CommentForm","EmptyState","InlineError","LoadingIndicator","messages","collapseFeedState","ItemTypes","PERMISSION_CAN_CREATE_ANNOTATIONS","scrollIntoView","ActivityFeed","isInputOpen","createRef","props","feedItems","undefined","length","type","fileVersion","prevCurrentUser","prevFeedItems","currentUser","feedContainer","scrollTop","scrollHeight","event","nativeEvent","stopImmediatePropagation","resetFeedScroll","setState","text","hasMention","onCommentCreate","commentFormSubmitHandler","assignees","dueAt","onTaskCreate","data","versionInfoHandler","onVersionHistoryClick","prevProps","prevState","prevActiveFeedEntryId","activeFeedEntryId","currFeedItems","prevIsInputOpen","currIsInputOpen","state","hasLoaded","hasMoreItems","didLoadFeedItems","hasInputOpened","hasActiveFeedEntryIdChanged","scrollToActiveFeedItemOrErrorMessage","activeFeedItemRef","current","activeFeedEntryType","activityFeedError","approverSelectorContacts","file","getApproverWithQuery","getAvatarUrl","getMentionWithQuery","getUserProfileUrl","hasReplies","isDisabled","mentionSelectorContacts","contactsLoaded","onAnnotationDelete","onAnnotationEdit","onAnnotationSelect","onAnnotationStatusChange","onAppActivityDelete","onCommentDelete","onCommentUpdate","onHideReplies","onReplyCreate","onReplyDelete","onReplyUpdate","onShowReplies","onTaskAssignmentUpdate","onTaskDelete","onTaskModalClose","onTaskUpdate","onTaskView","translations","hasAnnotationCreatePermission","hasCommentPermission","showCommentForm","isEmpty","isLoading","activeEntry","Array","isArray","find","id","errorMessageByEntryType","annotation","annotationMissingError","comment","commentMissingError","task","taskMissingError","inlineFeedItemErrorMessage","isInlineFeedItemErrorVisible","currentFileVersionId","onKeyDown","ref","openVersionHistoryPopup","feedInlineErrorTitle","commentFormCancelHandler","commentFormFocusHandler","Component"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Component for Activity feed\n */\n\nimport * as React from 'react';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport { FormattedMessage } from 'react-intl';\nimport classNames from 'classnames';\nimport ActiveState from './ActiveState';\nimport CommentForm from '../comment-form';\nimport EmptyState from './EmptyState';\nimport InlineError from '../../../../components/inline-error/InlineError';\nimport LoadingIndicator from '../../../../components/loading-indicator/LoadingIndicator';\nimport messages from './messages';\nimport { collapseFeedState, ItemTypes } from './activityFeedUtils';\nimport { PERMISSION_CAN_CREATE_ANNOTATIONS } from '../../../../constants';\nimport { scrollIntoView } from '../../../../utils/dom';\nimport type {\n Annotation,\n AnnotationPermission,\n BoxCommentPermission,\n Comment,\n CommentFeedItemType,\n FocusableFeedItemType,\n FeedItems,\n FeedItemStatus,\n} from '../../../../common/types/feed';\nimport type { SelectorItems, User, GroupMini, BoxItem } from '../../../../common/types/core';\nimport type { Errors, GetAvatarUrlCallback, GetProfileUrlCallback } from '../../../common/flowTypes';\nimport type { Translations } from '../../flowTypes';\nimport './ActivityFeed.scss';\n\ntype Props = {\n activeFeedEntryId?: string,\n activeFeedEntryType?: FocusableFeedItemType,\n activityFeedError: ?Errors,\n approverSelectorContacts?: SelectorItems<User | GroupMini>,\n contactsLoaded?: boolean,\n currentUser?: User,\n feedItems?: FeedItems,\n file: BoxItem,\n getApproverWithQuery?: Function,\n getAvatarUrl: GetAvatarUrlCallback,\n getMentionWithQuery?: Function,\n getUserProfileUrl?: GetProfileUrlCallback,\n hasReplies?: boolean,\n isDisabled?: boolean,\n mentionSelectorContacts?: SelectorItems<User>,\n onAnnotationDelete?: ({ id: string, permissions: AnnotationPermission }) => void,\n onAnnotationEdit?: (id: string, text: string, permissions: AnnotationPermission) => void,\n onAnnotationSelect?: (annotation: Annotation) => void,\n onAnnotationStatusChange?: (id: string, status: FeedItemStatus, permissions: AnnotationPermission) => void,\n onAppActivityDelete?: Function,\n onCommentCreate?: Function,\n onCommentDelete?: Function,\n onCommentUpdate?: (\n id: string,\n text?: string,\n status?: FeedItemStatus,\n hasMention: boolean,\n permissions: BoxCommentPermission,\n onSuccess: ?Function,\n onError: ?Function,\n ) => void,\n onHideReplies?: (id: string, replies: Array<Comment>) => void,\n onReplyCreate?: (parentId: string, parentType: CommentFeedItemType, text: string) => void,\n onReplyDelete?: ({ id: string, parentId: string, permissions: BoxCommentPermission }) => void,\n onReplyUpdate?: (\n id: string,\n parentId: string,\n text: string,\n permissions: BoxCommentPermission,\n onSuccess: ?Function,\n onError: ?Function,\n ) => void,\n onShowReplies?: (id: string, type: CommentFeedItemType) => void,\n onTaskAssignmentUpdate?: Function,\n onTaskCreate?: Function,\n onTaskDelete?: Function,\n onTaskModalClose?: Function,\n onTaskUpdate?: Function,\n onTaskView?: Function,\n onVersionHistoryClick?: Function,\n translations?: Translations,\n};\n\ntype State = {\n isInputOpen: boolean,\n};\n\nclass ActivityFeed extends React.Component<Props, State> {\n state = {\n isInputOpen: false,\n };\n\n activeFeedItemRef = React.createRef<null | HTMLElement>();\n\n feedContainer: null | HTMLElement;\n\n componentDidMount() {\n this.resetFeedScroll();\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n const {\n activeFeedEntryId: prevActiveFeedEntryId,\n currentUser: prevCurrentUser,\n feedItems: prevFeedItems,\n } = prevProps;\n const { feedItems: currFeedItems, activeFeedEntryId } = this.props;\n const { isInputOpen: prevIsInputOpen } = prevState;\n const { isInputOpen: currIsInputOpen } = this.state;\n\n const hasLoaded = this.hasLoaded(prevCurrentUser, prevFeedItems);\n const hasMoreItems = prevFeedItems && currFeedItems && prevFeedItems.length < currFeedItems.length;\n const didLoadFeedItems = prevFeedItems === undefined && currFeedItems !== undefined;\n const hasInputOpened = currIsInputOpen !== prevIsInputOpen;\n const hasActiveFeedEntryIdChanged = activeFeedEntryId !== prevActiveFeedEntryId;\n\n if ((hasLoaded || hasMoreItems || didLoadFeedItems || hasInputOpened) && activeFeedEntryId === undefined) {\n this.resetFeedScroll();\n }\n\n if (didLoadFeedItems || hasActiveFeedEntryIdChanged) {\n this.scrollToActiveFeedItemOrErrorMessage();\n }\n }\n\n scrollToActiveFeedItemOrErrorMessage() {\n const { current: activeFeedItemRef } = this.activeFeedItemRef;\n const { activeFeedEntryId } = this.props;\n\n // if there is no active item, do not scroll\n if (!activeFeedEntryId) {\n return;\n }\n\n // if there was supposed to be an active feed item but the feed item does not exist\n // scroll to the bottom to show the inline error message\n if (activeFeedItemRef === null) {\n this.resetFeedScroll();\n return;\n }\n\n scrollIntoView(activeFeedItemRef);\n }\n\n /**\n * Detects whether or not the empty state should be shown.\n * @param {object} currentUser - The user that is logged into the account\n * @param {object} feedItems - Items in the activity feed\n */\n isEmpty = ({ feedItems }: Props = this.props): boolean => {\n if (feedItems === undefined) {\n return false;\n }\n return feedItems.length === 0 || (feedItems.length === 1 && feedItems[0].type === ItemTypes.fileVersion);\n };\n\n /**\n * Determines whether currentUser and feedItems have loaded.\n * @param prevCurrentUser - The previous value of the currentUser prop\n * @param prevFeedItems - The previous value of the feedItems prop\n * @returns {boolean}\n */\n hasLoaded = (prevCurrentUser?: User, prevFeedItems?: FeedItems): boolean => {\n const { currentUser, feedItems } = this.props;\n return currentUser !== undefined && feedItems !== undefined && (!prevCurrentUser || !prevFeedItems);\n };\n\n /**\n * Scrolls the container to the bottom\n */\n resetFeedScroll = () => {\n if (this.feedContainer) {\n this.feedContainer.scrollTop = this.feedContainer.scrollHeight;\n }\n };\n\n onKeyDown = (event: SyntheticKeyboardEvent<>): void => {\n const { nativeEvent } = event;\n nativeEvent.stopImmediatePropagation();\n };\n\n commentFormFocusHandler = (): void => {\n this.resetFeedScroll();\n this.setState({ isInputOpen: true });\n };\n\n commentFormCancelHandler = (): void => this.setState({ isInputOpen: false });\n\n commentFormSubmitHandler = (): void => this.setState({ isInputOpen: false });\n\n onCommentCreate = ({ text, hasMention }: { hasMention: boolean, text: string }) => {\n const { onCommentCreate = noop } = this.props;\n onCommentCreate(text, hasMention);\n this.commentFormSubmitHandler();\n };\n\n /**\n * Creates a task.\n *\n * @param {string} text - Task text\n * @param {Array} assignees - List of assignees\n * @param {number} dueAt - Task's due date\n * @return {void}\n */\n onTaskCreate = ({ text, assignees, dueAt }: { assignees: SelectorItems<>, dueAt: string, text: string }): void => {\n const { onTaskCreate = noop } = this.props;\n onTaskCreate(text, assignees, dueAt);\n this.commentFormSubmitHandler();\n };\n\n /**\n * Invokes version history popup handler.\n *\n * @param {Object} data - Version history data\n * @return {void}\n */\n openVersionHistoryPopup = (data: any): void => {\n const versionInfoHandler = this.props.onVersionHistoryClick || noop;\n versionInfoHandler(data);\n };\n\n render(): React.Node {\n const {\n activeFeedEntryId,\n activeFeedEntryType,\n activityFeedError,\n approverSelectorContacts,\n currentUser,\n feedItems,\n file,\n getApproverWithQuery,\n getAvatarUrl,\n getMentionWithQuery,\n getUserProfileUrl,\n hasReplies,\n isDisabled,\n mentionSelectorContacts,\n contactsLoaded,\n onAnnotationDelete,\n onAnnotationEdit,\n onAnnotationSelect,\n onAnnotationStatusChange,\n onAppActivityDelete,\n onCommentCreate,\n onCommentDelete,\n onCommentUpdate,\n onHideReplies,\n onReplyCreate,\n onReplyDelete,\n onReplyUpdate,\n onShowReplies,\n onTaskAssignmentUpdate,\n onTaskDelete,\n onTaskModalClose,\n onTaskUpdate,\n onTaskView,\n onVersionHistoryClick,\n translations,\n } = this.props;\n const { isInputOpen } = this.state;\n const hasAnnotationCreatePermission = getProp(file, ['permissions', PERMISSION_CAN_CREATE_ANNOTATIONS], false);\n const hasCommentPermission = getProp(file, 'permissions.can_comment', false);\n const showCommentForm = !!(currentUser && hasCommentPermission && onCommentCreate && feedItems);\n\n const isEmpty = this.isEmpty(this.props);\n const isLoading = !this.hasLoaded();\n\n const activeEntry =\n Array.isArray(feedItems) &&\n feedItems.find(({ id, type }) => id === activeFeedEntryId && type === activeFeedEntryType);\n\n const errorMessageByEntryType = {\n annotation: messages.annotationMissingError,\n comment: messages.commentMissingError,\n task: messages.taskMissingError,\n };\n\n const inlineFeedItemErrorMessage = activeFeedEntryType\n ? errorMessageByEntryType[activeFeedEntryType]\n : undefined;\n\n const isInlineFeedItemErrorVisible = !isLoading && activeFeedEntryType && !activeEntry;\n const currentFileVersionId = getProp(file, 'file_version.id');\n\n return (\n // eslint-disable-next-line\n <div className=\"bcs-activity-feed\" data-testid=\"activityfeed\" onKeyDown={this.onKeyDown}>\n <div\n ref={ref => {\n this.feedContainer = ref;\n }}\n className=\"bcs-activity-feed-items-container\"\n >\n {isLoading && (\n <div className=\"bcs-activity-feed-loading-state\">\n <LoadingIndicator />\n </div>\n )}\n\n {isEmpty && !isLoading && (\n <EmptyState\n showAnnotationMessage={hasAnnotationCreatePermission}\n showCommentMessage={showCommentForm}\n />\n )}\n {!isEmpty && !isLoading && (\n <ActiveState\n {...activityFeedError}\n activeFeedEntryId={activeFeedEntryId}\n activeFeedEntryType={activeFeedEntryType}\n activeFeedItemRef={this.activeFeedItemRef}\n approverSelectorContacts={approverSelectorContacts}\n currentFileVersionId={currentFileVersionId}\n currentUser={currentUser}\n getApproverWithQuery={getApproverWithQuery}\n getAvatarUrl={getAvatarUrl}\n getMentionWithQuery={getMentionWithQuery}\n getUserProfileUrl={getUserProfileUrl}\n hasReplies={hasReplies}\n isDisabled={isDisabled}\n items={collapseFeedState(feedItems)}\n mentionSelectorContacts={mentionSelectorContacts}\n onAnnotationDelete={onAnnotationDelete}\n onAnnotationEdit={onAnnotationEdit}\n onAnnotationSelect={onAnnotationSelect}\n onAnnotationStatusChange={onAnnotationStatusChange}\n onAppActivityDelete={onAppActivityDelete}\n onCommentDelete={hasCommentPermission ? onCommentDelete : noop}\n onCommentEdit={hasCommentPermission ? onCommentUpdate : noop}\n onHideReplies={onHideReplies}\n onReplyCreate={hasCommentPermission ? onReplyCreate : noop}\n onReplyDelete={hasCommentPermission ? onReplyDelete : noop}\n onReplyUpdate={hasCommentPermission ? onReplyUpdate : noop}\n onShowReplies={onShowReplies}\n onTaskAssignmentUpdate={onTaskAssignmentUpdate}\n onTaskDelete={onTaskDelete}\n onTaskEdit={onTaskUpdate}\n onTaskModalClose={onTaskModalClose}\n onTaskView={onTaskView}\n onVersionInfo={onVersionHistoryClick ? this.openVersionHistoryPopup : null}\n translations={translations}\n />\n )}\n {isInlineFeedItemErrorVisible && inlineFeedItemErrorMessage && (\n <InlineError\n title={<FormattedMessage {...messages.feedInlineErrorTitle} />}\n className=\"bcs-feedItemInlineError\"\n >\n <FormattedMessage {...inlineFeedItemErrorMessage} />\n </InlineError>\n )}\n </div>\n\n {showCommentForm ? (\n <CommentForm\n onSubmit={this.resetFeedScroll}\n isDisabled={isDisabled}\n mentionSelectorContacts={mentionSelectorContacts}\n contactsLoaded={contactsLoaded}\n className={classNames('bcs-activity-feed-comment-input', {\n 'bcs-is-disabled': isDisabled,\n })}\n createComment={hasCommentPermission ? this.onCommentCreate : noop}\n getMentionWithQuery={getMentionWithQuery}\n isOpen={isInputOpen}\n // $FlowFixMe\n user={currentUser}\n onCancel={this.commentFormCancelHandler}\n onFocus={this.commentFormFocusHandler}\n getAvatarUrl={getAvatarUrl}\n />\n ) : null}\n </div>\n );\n }\n}\n\nexport default ActivityFeed;\n"],"file":"ActivityFeed.js"}
1
+ {"version":3,"sources":["../../../../../src/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js"],"names":["React","getProp","noop","throttle","FormattedMessage","classNames","ActiveState","CommentForm","EmptyState","InlineError","LoadingIndicator","messages","collapseFeedState","ItemTypes","FEED_ITEM_TYPE_ANNOTATION","FEED_ITEM_TYPE_COMMENT","FEED_ITEM_TYPE_TASK","PERMISSION_CAN_CREATE_ANNOTATIONS","scrollIntoView","ActivityFeed","isScrolled","isInputOpen","selectedItemId","createRef","props","feedItems","undefined","length","type","fileVersion","prevCurrentUser","prevFeedItems","currentUser","feedContainer","scrollTop","scrollHeight","event","target","Element","setState","handleFeedScroll","nativeEvent","stopImmediatePropagation","resetFeedScroll","text","hasMention","onCommentCreate","commentFormSubmitHandler","assignees","dueAt","onTaskCreate","data","versionInfoHandler","onVersionHistoryClick","itemId","hasReplies","id","activeFeedEntryId","activeFeedEntryType","state","isSelected","item","replies","isActive","isFeedItemActive","some","reply","prevProps","prevState","prevActiveFeedEntryId","currFeedItems","prevIsInputOpen","currIsInputOpen","hasLoaded","hasMoreItems","didLoadFeedItems","hasInputOpened","hasActiveFeedEntryIdChanged","scrollToActiveFeedItemOrErrorMessage","activeFeedItemRef","current","activityFeedError","approverSelectorContacts","file","getApproverWithQuery","getAvatarUrl","getMentionWithQuery","getUserProfileUrl","hasNewThreadedReplies","hasVersions","isDisabled","mentionSelectorContacts","contactsLoaded","onAnnotationDelete","onAnnotationEdit","onAnnotationSelect","onAnnotationStatusChange","onAppActivityDelete","onCommentDelete","onCommentUpdate","onHideReplies","onReplyCreate","onReplyDelete","onReplyUpdate","onShowReplies","onTaskAssignmentUpdate","onTaskDelete","onTaskModalClose","onTaskUpdate","onTaskView","translations","currentFileVersionId","hasAnnotationCreatePermission","hasCommentPermission","showCommentForm","isEmpty","isLoading","activeFeedItem","Array","isArray","find","isCommentFeedItemActive","errorMessageByEntryType","annotation","annotationMissingError","comment","commentMissingError","task","taskMissingError","inlineFeedItemErrorMessage","isInlineFeedItemErrorVisible","onKeyDown","ref","throttledFeedScroll","setSelectedItem","openVersionHistoryPopup","feedInlineErrorTitle","commentFormCancelHandler","commentFormFocusHandler","Component"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Component for Activity feed\n */\n\nimport * as React from 'react';\nimport getProp from 'lodash/get';\nimport noop from 'lodash/noop';\nimport throttle from 'lodash/throttle';\nimport { FormattedMessage } from 'react-intl';\nimport classNames from 'classnames';\nimport ActiveState from './ActiveState';\nimport CommentForm from '../comment-form';\nimport EmptyState from './EmptyState';\nimport InlineError from '../../../../components/inline-error/InlineError';\nimport LoadingIndicator from '../../../../components/loading-indicator/LoadingIndicator';\nimport messages from './messages';\nimport { collapseFeedState, ItemTypes } from './activityFeedUtils';\nimport {\n FEED_ITEM_TYPE_ANNOTATION,\n FEED_ITEM_TYPE_COMMENT,\n FEED_ITEM_TYPE_TASK,\n PERMISSION_CAN_CREATE_ANNOTATIONS,\n} from '../../../../constants';\nimport { scrollIntoView } from '../../../../utils/dom';\nimport type {\n Annotation,\n AnnotationPermission,\n BoxCommentPermission,\n Comment,\n CommentFeedItemType,\n FeedItemStatus,\n FeedItems,\n FocusableFeedItemType,\n Task,\n} from '../../../../common/types/feed';\nimport type { SelectorItems, User, GroupMini, BoxItem } from '../../../../common/types/core';\nimport type { Errors, GetAvatarUrlCallback, GetProfileUrlCallback } from '../../../common/flowTypes';\nimport type { Translations } from '../../flowTypes';\nimport './ActivityFeed.scss';\n\ntype Props = {\n activeFeedEntryId?: string,\n activeFeedEntryType?: FocusableFeedItemType,\n activityFeedError: ?Errors,\n approverSelectorContacts?: SelectorItems<User | GroupMini>,\n contactsLoaded?: boolean,\n currentUser?: User,\n feedItems?: FeedItems,\n file: BoxItem,\n getApproverWithQuery?: Function,\n getAvatarUrl: GetAvatarUrlCallback,\n getMentionWithQuery?: Function,\n getUserProfileUrl?: GetProfileUrlCallback,\n hasNewThreadedReplies?: boolean,\n hasReplies?: boolean,\n hasVersions?: boolean,\n isDisabled?: boolean,\n mentionSelectorContacts?: SelectorItems<User>,\n onAnnotationDelete?: ({ id: string, permissions: AnnotationPermission }) => void,\n onAnnotationEdit?: (id: string, text: string, permissions: AnnotationPermission) => void,\n onAnnotationSelect?: (annotation: Annotation) => void,\n onAnnotationStatusChange?: (id: string, status: FeedItemStatus, permissions: AnnotationPermission) => void,\n onAppActivityDelete?: Function,\n onCommentCreate?: Function,\n onCommentDelete?: Function,\n onCommentUpdate?: (\n id: string,\n text?: string,\n status?: FeedItemStatus,\n hasMention: boolean,\n permissions: BoxCommentPermission,\n onSuccess: ?Function,\n onError: ?Function,\n ) => void,\n onHideReplies?: (id: string, replies: Array<Comment>) => void,\n onReplyCreate?: (parentId: string, parentType: CommentFeedItemType, text: string) => void,\n onReplyDelete?: ({ id: string, parentId: string, permissions: BoxCommentPermission }) => void,\n onReplyUpdate?: (\n id: string,\n parentId: string,\n text: string,\n permissions: BoxCommentPermission,\n onSuccess: ?Function,\n onError: ?Function,\n ) => void,\n onShowReplies?: (id: string, type: CommentFeedItemType) => void,\n onTaskAssignmentUpdate?: Function,\n onTaskCreate?: Function,\n onTaskDelete?: Function,\n onTaskModalClose?: Function,\n onTaskUpdate?: Function,\n onTaskView?: Function,\n onVersionHistoryClick?: Function,\n translations?: Translations,\n};\n\ntype State = {\n isInputOpen: boolean,\n isScrolled: boolean,\n selectedItemId: string | null,\n};\n\nclass ActivityFeed extends React.Component<Props, State> {\n state = {\n isScrolled: false,\n isInputOpen: false,\n selectedItemId: null,\n };\n\n activeFeedItemRef = React.createRef<null | HTMLElement>();\n\n feedContainer: null | HTMLElement;\n\n componentDidMount() {\n this.resetFeedScroll();\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n const {\n activeFeedEntryId: prevActiveFeedEntryId,\n currentUser: prevCurrentUser,\n feedItems: prevFeedItems,\n } = prevProps;\n const { feedItems: currFeedItems, activeFeedEntryId } = this.props;\n const { isInputOpen: prevIsInputOpen } = prevState;\n const { isInputOpen: currIsInputOpen } = this.state;\n\n const hasLoaded = this.hasLoaded(prevCurrentUser, prevFeedItems);\n const hasMoreItems = prevFeedItems && currFeedItems && prevFeedItems.length < currFeedItems.length;\n const didLoadFeedItems = prevFeedItems === undefined && currFeedItems !== undefined;\n const hasInputOpened = currIsInputOpen !== prevIsInputOpen;\n const hasActiveFeedEntryIdChanged = activeFeedEntryId !== prevActiveFeedEntryId;\n\n if ((hasLoaded || hasMoreItems || didLoadFeedItems || hasInputOpened) && activeFeedEntryId === undefined) {\n this.resetFeedScroll();\n }\n\n if (didLoadFeedItems || hasActiveFeedEntryIdChanged) {\n this.scrollToActiveFeedItemOrErrorMessage();\n }\n }\n\n scrollToActiveFeedItemOrErrorMessage() {\n const { current: activeFeedItemRef } = this.activeFeedItemRef;\n const { activeFeedEntryId } = this.props;\n\n // if there is no active item, do not scroll\n if (!activeFeedEntryId) {\n return;\n }\n\n // if there was supposed to be an active feed item but the feed item does not exist\n // scroll to the bottom to show the inline error message\n if (activeFeedItemRef === null) {\n this.resetFeedScroll();\n return;\n }\n\n scrollIntoView(activeFeedItemRef);\n }\n\n /**\n * Detects whether or not the empty state should be shown.\n * @param {object} currentUser - The user that is logged into the account\n * @param {object} feedItems - Items in the activity feed\n */\n isEmpty = ({ feedItems }: Props = this.props): boolean => {\n if (feedItems === undefined) {\n return false;\n }\n return feedItems.length === 0 || (feedItems.length === 1 && feedItems[0].type === ItemTypes.fileVersion);\n };\n\n /**\n * Determines whether currentUser and feedItems have loaded.\n * @param prevCurrentUser - The previous value of the currentUser prop\n * @param prevFeedItems - The previous value of the feedItems prop\n * @returns {boolean}\n */\n hasLoaded = (prevCurrentUser?: User, prevFeedItems?: FeedItems): boolean => {\n const { currentUser, feedItems } = this.props;\n return currentUser !== undefined && feedItems !== undefined && (!prevCurrentUser || !prevFeedItems);\n };\n\n /**\n * Scrolls the container to the bottom\n */\n resetFeedScroll = () => {\n if (this.feedContainer) {\n this.feedContainer.scrollTop = this.feedContainer.scrollHeight;\n }\n };\n\n handleFeedScroll = (event: UIEvent): void => {\n const { target } = event;\n if (target instanceof Element) {\n const { scrollTop } = target;\n this.setState({ isScrolled: scrollTop > 0 });\n }\n };\n\n throttledFeedScroll = throttle(this.handleFeedScroll, 100);\n\n onKeyDown = (event: SyntheticKeyboardEvent<>): void => {\n const { nativeEvent } = event;\n nativeEvent.stopImmediatePropagation();\n };\n\n commentFormFocusHandler = (): void => {\n this.resetFeedScroll();\n this.setState({ isInputOpen: true });\n };\n\n commentFormCancelHandler = (): void => this.setState({ isInputOpen: false });\n\n commentFormSubmitHandler = (): void => this.setState({ isInputOpen: false });\n\n onCommentCreate = ({ text, hasMention }: { hasMention: boolean, text: string }) => {\n const { onCommentCreate = noop } = this.props;\n onCommentCreate(text, hasMention);\n this.commentFormSubmitHandler();\n };\n\n /**\n * Creates a task.\n *\n * @param {string} text - Task text\n * @param {Array} assignees - List of assignees\n * @param {number} dueAt - Task's due date\n * @return {void}\n */\n onTaskCreate = ({ text, assignees, dueAt }: { assignees: SelectorItems<>, dueAt: string, text: string }): void => {\n const { onTaskCreate = noop } = this.props;\n onTaskCreate(text, assignees, dueAt);\n this.commentFormSubmitHandler();\n };\n\n /**\n * Invokes version history popup handler.\n *\n * @param {Object} data - Version history data\n * @return {void}\n */\n openVersionHistoryPopup = (data: any): void => {\n const versionInfoHandler = this.props.onVersionHistoryClick || noop;\n versionInfoHandler(data);\n };\n\n setSelectedItem = (itemId: string | null) => {\n const { hasReplies } = this.props;\n if (!hasReplies) {\n return;\n }\n this.setState({ selectedItemId: itemId });\n };\n\n isFeedItemActive = <T, U: { id: string, type: T }>({ id, type }: U): boolean => {\n const { activeFeedEntryId, activeFeedEntryType } = this.props;\n const { selectedItemId } = this.state;\n\n const isSelected = selectedItemId === id;\n\n return selectedItemId ? isSelected : id === activeFeedEntryId && type === activeFeedEntryType;\n };\n\n isCommentFeedItemActive = <T, U: { id: string, replies?: Array<Comment>, type: T }>(item: U): boolean => {\n const { activeFeedEntryId } = this.props;\n const { replies } = item;\n\n const isActive = this.isFeedItemActive<T, U>(item);\n return isActive || (!!replies && replies.some(reply => reply.id === activeFeedEntryId));\n };\n\n render(): React.Node {\n const {\n activeFeedEntryType,\n activityFeedError,\n approverSelectorContacts,\n currentUser,\n feedItems,\n file,\n getApproverWithQuery,\n getAvatarUrl,\n getMentionWithQuery,\n getUserProfileUrl,\n hasNewThreadedReplies,\n hasReplies,\n hasVersions,\n isDisabled,\n mentionSelectorContacts,\n contactsLoaded,\n onAnnotationDelete,\n onAnnotationEdit,\n onAnnotationSelect,\n onAnnotationStatusChange,\n onAppActivityDelete,\n onCommentCreate,\n onCommentDelete,\n onCommentUpdate,\n onHideReplies,\n onReplyCreate,\n onReplyDelete,\n onReplyUpdate,\n onShowReplies,\n onTaskAssignmentUpdate,\n onTaskDelete,\n onTaskModalClose,\n onTaskUpdate,\n onTaskView,\n onVersionHistoryClick,\n translations,\n } = this.props;\n const { isInputOpen, isScrolled } = this.state;\n const currentFileVersionId = getProp(file, 'file_version.id');\n const hasAnnotationCreatePermission = getProp(file, ['permissions', PERMISSION_CAN_CREATE_ANNOTATIONS], false);\n const hasCommentPermission = getProp(file, 'permissions.can_comment', false);\n const showCommentForm = !!(currentUser && hasCommentPermission && onCommentCreate && feedItems);\n\n const isEmpty = this.isEmpty(this.props);\n const isLoading = !this.hasLoaded();\n\n const activeFeedItem =\n Array.isArray(feedItems) &&\n feedItems.find(item => {\n switch (item.type) {\n case FEED_ITEM_TYPE_ANNOTATION:\n return this.isCommentFeedItemActive<typeof FEED_ITEM_TYPE_ANNOTATION, Annotation>(item);\n case FEED_ITEM_TYPE_COMMENT:\n return this.isCommentFeedItemActive<typeof FEED_ITEM_TYPE_COMMENT, Comment>(item);\n case FEED_ITEM_TYPE_TASK:\n return this.isFeedItemActive<typeof FEED_ITEM_TYPE_TASK, Task>(item);\n default:\n return false;\n }\n });\n\n const errorMessageByEntryType = {\n annotation: messages.annotationMissingError,\n comment: messages.commentMissingError,\n task: messages.taskMissingError,\n };\n\n const inlineFeedItemErrorMessage = activeFeedEntryType\n ? errorMessageByEntryType[activeFeedEntryType]\n : undefined;\n\n const isInlineFeedItemErrorVisible = !isLoading && activeFeedEntryType && !activeFeedItem;\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n className={classNames('bcs-activity-feed', { 'bcs-is-scrolled': isScrolled })}\n data-testid=\"activityfeed\"\n onKeyDown={this.onKeyDown}\n >\n <div\n ref={ref => {\n this.feedContainer = ref;\n }}\n className=\"bcs-activity-feed-items-container\"\n onScroll={this.throttledFeedScroll}\n >\n {isLoading && (\n <div className=\"bcs-activity-feed-loading-state\">\n <LoadingIndicator />\n </div>\n )}\n\n {isEmpty && !isLoading && (\n <EmptyState\n showAnnotationMessage={hasAnnotationCreatePermission}\n showCommentMessage={showCommentForm}\n />\n )}\n {!isEmpty && !isLoading && (\n <ActiveState\n {...activityFeedError}\n activeFeedItem={activeFeedItem}\n activeFeedItemRef={this.activeFeedItemRef}\n approverSelectorContacts={approverSelectorContacts}\n currentFileVersionId={currentFileVersionId}\n currentUser={currentUser}\n getApproverWithQuery={getApproverWithQuery}\n getAvatarUrl={getAvatarUrl}\n getMentionWithQuery={getMentionWithQuery}\n getUserProfileUrl={getUserProfileUrl}\n hasNewThreadedReplies={hasNewThreadedReplies}\n hasReplies={hasReplies}\n hasVersions={hasVersions}\n isDisabled={isDisabled}\n items={collapseFeedState(feedItems)}\n mentionSelectorContacts={mentionSelectorContacts}\n onAnnotationDelete={onAnnotationDelete}\n onAnnotationEdit={onAnnotationEdit}\n onAnnotationSelect={onAnnotationSelect}\n onAnnotationStatusChange={onAnnotationStatusChange}\n onAppActivityDelete={onAppActivityDelete}\n onCommentDelete={hasCommentPermission ? onCommentDelete : noop}\n onCommentEdit={hasCommentPermission ? onCommentUpdate : noop}\n onCommentSelect={this.setSelectedItem}\n onHideReplies={onHideReplies}\n onReplyCreate={hasCommentPermission ? onReplyCreate : noop}\n onReplyDelete={hasCommentPermission ? onReplyDelete : noop}\n onReplyUpdate={hasCommentPermission ? onReplyUpdate : noop}\n onShowReplies={onShowReplies}\n onTaskAssignmentUpdate={onTaskAssignmentUpdate}\n onTaskDelete={onTaskDelete}\n onTaskEdit={onTaskUpdate}\n onTaskModalClose={onTaskModalClose}\n onTaskView={onTaskView}\n onVersionInfo={onVersionHistoryClick ? this.openVersionHistoryPopup : null}\n translations={translations}\n />\n )}\n {isInlineFeedItemErrorVisible && inlineFeedItemErrorMessage && (\n <InlineError\n title={<FormattedMessage {...messages.feedInlineErrorTitle} />}\n className=\"bcs-feedItemInlineError\"\n >\n <FormattedMessage {...inlineFeedItemErrorMessage} />\n </InlineError>\n )}\n </div>\n\n {showCommentForm ? (\n <CommentForm\n onSubmit={this.resetFeedScroll}\n isDisabled={isDisabled}\n mentionSelectorContacts={mentionSelectorContacts}\n contactsLoaded={contactsLoaded}\n className={classNames('bcs-activity-feed-comment-input', {\n 'bcs-is-disabled': isDisabled,\n })}\n createComment={hasCommentPermission ? this.onCommentCreate : noop}\n getMentionWithQuery={getMentionWithQuery}\n isOpen={isInputOpen}\n // $FlowFixMe\n user={currentUser}\n onCancel={this.commentFormCancelHandler}\n onFocus={this.commentFormFocusHandler}\n getAvatarUrl={getAvatarUrl}\n />\n ) : null}\n </div>\n );\n }\n}\n\nexport default ActivityFeed;\n"],"file":"ActivityFeed.js"}
@@ -28,6 +28,17 @@
28
28
  line-height: 20px;
29
29
  }
30
30
 
31
+ &.bcs-is-scrolled::before {
32
+ position: absolute;
33
+ // position it behind bcs-content-header
34
+ top: -$sidebarHeaderHeight;
35
+ right: $sidebarActivityFeedSpacingHorizontal;
36
+ left: $sidebarActivityFeedSpacingHorizontal;
37
+ height: $sidebarHeaderHeight;
38
+ box-shadow: 0 $bdl-grid-unit $bdl-grid-unit * 3 $bdl-gray-10;
39
+ content: ' ';
40
+ }
41
+
31
42
  .bcs-activity-feed-items-container {
32
43
  $container-padding: 25px;
33
44
  $container-transition-delay: 25ms;