box-ui-elements 16.0.0-beta.8 → 16.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 (798) hide show
  1. package/dist/explorer.css +1 -1
  2. package/dist/explorer.js +19 -58
  3. package/dist/openwith.css +1 -1
  4. package/dist/openwith.js +10 -10
  5. package/dist/picker.css +1 -1
  6. package/dist/picker.js +12 -12
  7. package/dist/preview.css +1 -1
  8. package/dist/preview.js +17 -56
  9. package/dist/sharing.css +1 -1
  10. package/dist/sharing.js +34 -34
  11. package/dist/sidebar.css +1 -1
  12. package/dist/sidebar.js +17 -56
  13. package/dist/uploader.css +1 -1
  14. package/dist/uploader.js +12 -12
  15. package/es/api/APIFactory.js +27 -0
  16. package/es/api/APIFactory.js.flow +26 -0
  17. package/es/api/APIFactory.js.map +1 -1
  18. package/es/api/Annotations.js +180 -27
  19. package/es/api/Annotations.js.flow +150 -14
  20. package/es/api/Annotations.js.map +1 -1
  21. package/es/api/Comments.js +2 -2
  22. package/es/api/Comments.js.flow +5 -4
  23. package/es/api/Comments.js.map +1 -1
  24. package/es/api/Feed.js +578 -69
  25. package/es/api/Feed.js.flow +677 -17
  26. package/es/api/Feed.js.map +1 -1
  27. package/es/api/FileCollaborators.js +29 -0
  28. package/es/api/FileCollaborators.js.flow +30 -0
  29. package/es/api/FileCollaborators.js.map +1 -1
  30. package/es/api/ThreadedComments.js +64 -27
  31. package/es/api/ThreadedComments.js.flow +54 -29
  32. package/es/api/ThreadedComments.js.map +1 -1
  33. package/es/api/fixtures.js +381 -0
  34. package/es/api/fixtures.js.flow +401 -0
  35. package/es/api/fixtures.js.map +1 -0
  36. package/es/api/messages.js +4 -0
  37. package/es/api/messages.js.flow +5 -0
  38. package/es/api/messages.js.map +1 -1
  39. package/es/api/utils.js +33 -0
  40. package/es/api/utils.js.flow +30 -0
  41. package/es/api/utils.js.map +1 -0
  42. package/es/common/types/annotations.js.flow +18 -10
  43. package/es/common/types/feed.js +1 -1
  44. package/es/common/types/feed.js.flow +40 -4
  45. package/es/common/types/feed.js.map +1 -1
  46. package/es/components/accessible-svg/AccessibleSVG.stories.js +20 -0
  47. package/es/components/accessible-svg/AccessibleSVG.stories.js.map +1 -0
  48. package/es/components/badge/Badge.stories.js +1 -13
  49. package/es/components/badge/Badge.stories.js.map +1 -1
  50. package/es/components/badge/BetaBadge.stories.js +10 -0
  51. package/es/components/badge/BetaBadge.stories.js.map +1 -0
  52. package/es/components/badge/TrialBadge.stories.js +10 -0
  53. package/es/components/badge/TrialBadge.stories.js.map +1 -0
  54. package/es/components/badge/UpgradeBadge.stories.js +10 -0
  55. package/es/components/badge/UpgradeBadge.stories.js.map +1 -0
  56. package/es/components/breadcrumb/Breadcrumb.js +48 -35
  57. package/es/components/breadcrumb/Breadcrumb.js.flow +68 -42
  58. package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
  59. package/es/components/breadcrumb/EllipsisCrumb.js +5 -3
  60. package/es/components/breadcrumb/EllipsisCrumb.js.flow +10 -6
  61. package/es/components/breadcrumb/EllipsisCrumb.js.map +1 -1
  62. package/es/components/count-badge/CountBadge.stories.js +1 -1
  63. package/es/components/count-badge/CountBadge.stories.js.map +1 -1
  64. package/es/components/draggable-list/DraggableList.stories.js +119 -5
  65. package/es/components/draggable-list/DraggableList.stories.js.map +1 -1
  66. package/es/components/dropdown-menu/DropdownMenu.js +9 -0
  67. package/es/components/dropdown-menu/DropdownMenu.js.flow +11 -0
  68. package/es/components/dropdown-menu/DropdownMenu.js.map +1 -1
  69. package/es/components/dropdown-menu/DropdownMenu.scss +3 -3
  70. package/es/components/infinite-scroll/InfiniteScroll.js +4 -2
  71. package/es/components/infinite-scroll/InfiniteScroll.js.map +1 -1
  72. package/es/components/modal/Modal.scss +5 -1
  73. package/es/components/search-form/SearchForm.js +1 -1
  74. package/es/components/search-form/SearchForm.js.flow +1 -1
  75. package/es/components/search-form/SearchForm.js.map +1 -1
  76. package/es/components/table/makeSelectable.js +304 -97
  77. package/es/components/table/makeSelectable.js.flow +299 -98
  78. package/es/components/table/makeSelectable.js.map +1 -1
  79. package/es/components/tooltip/Tooltip.js +3 -2
  80. package/es/components/tooltip/Tooltip.js.map +1 -1
  81. package/es/constants.js +11 -0
  82. package/es/constants.js.flow +11 -0
  83. package/es/constants.js.map +1 -1
  84. package/es/elements/common/annotator-context/index.js +1 -0
  85. package/es/elements/common/annotator-context/index.js.flow +4 -0
  86. package/es/elements/common/annotator-context/index.js.map +1 -1
  87. package/es/elements/common/annotator-context/types.js +12 -0
  88. package/es/elements/common/annotator-context/types.js.flow +77 -35
  89. package/es/elements/common/annotator-context/types.js.map +1 -1
  90. package/es/elements/common/annotator-context/useAnnotatorEvents.js +205 -0
  91. package/es/elements/common/annotator-context/useAnnotatorEvents.js.flow +52 -0
  92. package/es/elements/common/annotator-context/useAnnotatorEvents.js.map +1 -0
  93. package/es/elements/common/annotator-context/withAnnotations.js +224 -5
  94. package/es/elements/common/annotator-context/withAnnotations.js.flow +73 -36
  95. package/es/elements/common/annotator-context/withAnnotations.js.map +1 -1
  96. package/es/elements/common/annotator-context/withAnnotatorContext.js +12 -4
  97. package/es/elements/common/annotator-context/withAnnotatorContext.js.flow +29 -9
  98. package/es/elements/common/annotator-context/withAnnotatorContext.js.map +1 -1
  99. package/es/elements/common/current-user/index.js +3 -0
  100. package/es/elements/common/current-user/index.js.flow +8 -0
  101. package/es/elements/common/current-user/index.js.map +1 -0
  102. package/es/elements/common/current-user/withCurrentUser.js +139 -0
  103. package/es/elements/common/current-user/withCurrentUser.js.flow +40 -0
  104. package/es/elements/common/current-user/withCurrentUser.js.map +1 -0
  105. package/es/elements/common/flowTypes.js.flow +22 -4
  106. package/es/elements/common/flowTypes.js.map +1 -1
  107. package/es/elements/common/interactionTargets.js +2 -0
  108. package/es/elements/common/interactionTargets.js.flow +2 -0
  109. package/es/elements/common/interactionTargets.js.map +1 -1
  110. package/es/elements/common/logger/Logger.js +1 -1
  111. package/es/elements/common/logger/Logger.js.flow +1 -1
  112. package/es/elements/common/logger/Logger.js.map +1 -1
  113. package/es/elements/common/messages.js +4 -0
  114. package/es/elements/common/messages.js.flow +5 -0
  115. package/es/elements/common/messages.js.map +1 -1
  116. package/es/elements/content-explorer/DeleteConfirmationDialog.js +2 -1
  117. package/es/elements/content-explorer/DeleteConfirmationDialog.js.flow +3 -1
  118. package/es/elements/content-explorer/DeleteConfirmationDialog.js.map +1 -1
  119. package/es/elements/content-explorer/DeleteConfirmationDialog.scss +5 -0
  120. package/es/elements/content-explorer/stories/DeleteConfirmationDialog.stories.js +58 -0
  121. package/es/elements/content-explorer/stories/DeleteConfirmationDialog.stories.js.flow +60 -0
  122. package/es/elements/content-explorer/stories/DeleteConfirmationDialog.stories.js.map +1 -0
  123. package/es/elements/content-sidebar/ActivitySidebar.js +323 -197
  124. package/es/elements/content-sidebar/ActivitySidebar.js.flow +381 -154
  125. package/es/elements/content-sidebar/ActivitySidebar.js.map +1 -1
  126. package/es/elements/content-sidebar/ActivitySidebarFilter.js +52 -0
  127. package/es/elements/content-sidebar/ActivitySidebarFilter.js.flow +59 -0
  128. package/es/elements/content-sidebar/ActivitySidebarFilter.js.map +1 -0
  129. package/es/elements/content-sidebar/ActivitySidebarFilter.scss +4 -0
  130. package/es/elements/content-sidebar/DetailsSidebar.js +50 -25
  131. package/es/elements/content-sidebar/DetailsSidebar.js.flow +32 -4
  132. package/es/elements/content-sidebar/DetailsSidebar.js.map +1 -1
  133. package/es/elements/content-sidebar/Sidebar.js +4 -1
  134. package/es/elements/content-sidebar/Sidebar.js.flow +6 -1
  135. package/es/elements/content-sidebar/Sidebar.js.map +1 -1
  136. package/es/elements/content-sidebar/SidebarContentInsights.js +45 -0
  137. package/es/elements/content-sidebar/SidebarContentInsights.js.map +1 -0
  138. package/es/elements/content-sidebar/SidebarContentInsights.scss +6 -0
  139. package/es/elements/content-sidebar/SidebarPanels.js +2 -0
  140. package/es/elements/content-sidebar/SidebarPanels.js.flow +4 -0
  141. package/es/elements/content-sidebar/SidebarPanels.js.map +1 -1
  142. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +91 -10
  143. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.flow +122 -24
  144. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.map +1 -1
  145. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +27 -15
  146. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.flow +59 -18
  147. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.map +1 -1
  148. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js +101 -0
  149. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js.flow +126 -0
  150. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js.map +1 -0
  151. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.scss +17 -0
  152. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js +69 -0
  153. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js.flow +85 -0
  154. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js.map +1 -0
  155. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.scss +16 -0
  156. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +62 -0
  157. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.flow +59 -0
  158. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.map +1 -0
  159. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.scss +22 -0
  160. package/es/elements/content-sidebar/activity-feed/activity-feed/activityFeedUtils.js +2 -2
  161. package/es/elements/content-sidebar/activity-feed/activity-feed/activityFeedUtils.js.flow +2 -2
  162. package/es/elements/content-sidebar/activity-feed/activity-feed/activityFeedUtils.js.map +1 -1
  163. package/es/elements/content-sidebar/activity-feed/activity-feed/fixtures.js +55 -0
  164. package/es/elements/content-sidebar/activity-feed/activity-feed/fixtures.js.map +1 -0
  165. package/es/elements/content-sidebar/activity-feed/activity-feed/messages.js +16 -0
  166. package/es/elements/content-sidebar/activity-feed/activity-feed/messages.js.flow +20 -0
  167. package/es/elements/content-sidebar/activity-feed/activity-feed/messages.js.map +1 -1
  168. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js +121 -0
  169. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js.flow +117 -0
  170. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js.map +1 -0
  171. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.scss +7 -0
  172. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js +75 -0
  173. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js.flow +105 -0
  174. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js.map +1 -0
  175. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.scss +5 -0
  176. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js +77 -0
  177. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js.flow +86 -0
  178. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js.map +1 -0
  179. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.scss +3 -0
  180. package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js +11 -0
  181. package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js.flow +26 -0
  182. package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js.map +1 -0
  183. package/es/elements/content-sidebar/activity-feed/annotation-thread/index.js +2 -0
  184. package/es/elements/content-sidebar/activity-feed/annotation-thread/index.js.flow +1 -0
  185. package/es/elements/content-sidebar/activity-feed/annotation-thread/index.js.map +1 -0
  186. package/es/elements/content-sidebar/activity-feed/annotation-thread/messages.js +17 -0
  187. package/es/elements/content-sidebar/activity-feed/annotation-thread/messages.js.flow +21 -0
  188. package/es/elements/content-sidebar/activity-feed/annotation-thread/messages.js.map +1 -0
  189. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js +180 -0
  190. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js.flow +203 -0
  191. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js.map +1 -0
  192. package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js +124 -0
  193. package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js.flow +121 -0
  194. package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js.map +1 -0
  195. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js +19 -5
  196. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js.flow +24 -4
  197. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js.map +1 -1
  198. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js +25 -4
  199. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js.flow +36 -2
  200. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js.map +1 -1
  201. package/es/elements/content-sidebar/activity-feed/annotations/messages.js +8 -0
  202. package/es/elements/content-sidebar/activity-feed/annotations/messages.js.flow +10 -0
  203. package/es/elements/content-sidebar/activity-feed/annotations/messages.js.map +1 -1
  204. package/es/elements/content-sidebar/activity-feed/comment/Comment.js +61 -28
  205. package/es/elements/content-sidebar/activity-feed/comment/Comment.js.flow +54 -10
  206. package/es/elements/content-sidebar/activity-feed/comment/Comment.js.map +1 -1
  207. package/es/elements/content-sidebar/activity-feed/comment/messages.js +8 -0
  208. package/es/elements/content-sidebar/activity-feed/comment/messages.js.flow +10 -0
  209. package/es/elements/content-sidebar/activity-feed/comment/messages.js.map +1 -1
  210. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js +4 -2
  211. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.flow +3 -1
  212. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.map +1 -1
  213. package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.js +16 -5
  214. package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.js.flow +34 -4
  215. package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.js.map +1 -1
  216. package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.scss +40 -3
  217. package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessage.js +49 -0
  218. package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessage.js.flow +42 -0
  219. package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessage.js.map +1 -0
  220. package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessageToggle.js +21 -0
  221. package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessageToggle.js.flow +24 -0
  222. package/es/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessageToggle.js.map +1 -0
  223. package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js +12 -0
  224. package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js.flow +15 -0
  225. package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js.map +1 -1
  226. package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.js +24 -0
  227. package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.js.flow +30 -0
  228. package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.js.map +1 -0
  229. package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.scss +6 -0
  230. package/es/elements/content-sidebar/activity-feed/common/activity-status/index.js +2 -0
  231. package/es/elements/content-sidebar/activity-feed/common/activity-status/index.js.flow +2 -0
  232. package/es/elements/content-sidebar/activity-feed/common/activity-status/index.js.map +1 -0
  233. package/es/elements/content-sidebar/activity-feed/common/activity-status/messages.js +9 -0
  234. package/es/elements/content-sidebar/activity-feed/common/activity-status/messages.js.flow +13 -0
  235. package/es/elements/content-sidebar/activity-feed/common/activity-status/messages.js.map +1 -0
  236. package/es/elements/content-sidebar/activity-feed/common/activity-timestamp/ActivityTimestamp.scss +1 -1
  237. package/es/elements/content-sidebar/fixtures.js +181 -0
  238. package/es/elements/content-sidebar/fixtures.js.flow +185 -0
  239. package/es/elements/content-sidebar/fixtures.js.map +1 -0
  240. package/es/elements/content-sidebar/flowTypes.js.flow +9 -25
  241. package/es/elements/content-sidebar/messages.js +8 -0
  242. package/es/elements/content-sidebar/messages.js.flow +10 -0
  243. package/es/elements/content-sidebar/messages.js.map +1 -1
  244. package/es/elements/content-sidebar/withErrorHandling.js.flow +1 -1
  245. package/es/elements/content-sidebar/withErrorHandling.js.map +1 -1
  246. package/es/elements/content-sidebar/withSidebarAnnotations.js +215 -30
  247. package/es/elements/content-sidebar/withSidebarAnnotations.js.flow +162 -11
  248. package/es/elements/content-sidebar/withSidebarAnnotations.js.map +1 -1
  249. package/es/elements/content-uploader/OverallUploadsProgressBar.js +10 -8
  250. package/es/elements/content-uploader/OverallUploadsProgressBar.js.flow +11 -12
  251. package/es/elements/content-uploader/OverallUploadsProgressBar.js.map +1 -1
  252. package/es/features/classification/Classification.scss +1 -1
  253. package/es/features/classification/security-controls/SecurityControlsItem.scss +1 -0
  254. package/es/features/classification/security-controls/messages.js +8 -0
  255. package/es/features/classification/security-controls/messages.js.flow +10 -0
  256. package/es/features/classification/security-controls/messages.js.map +1 -1
  257. package/es/features/classification/security-controls/utils.js +4 -7
  258. package/es/features/classification/security-controls/utils.js.flow +8 -12
  259. package/es/features/classification/security-controls/utils.js.map +1 -1
  260. package/es/features/content-explorer/content-explorer/ContentExplorer.js +6 -1
  261. package/es/features/content-explorer/content-explorer/ContentExplorer.js.flow +4 -0
  262. package/es/features/content-explorer/content-explorer/ContentExplorer.js.map +1 -1
  263. package/es/features/content-explorer/content-explorer/ContentExplorer.scss +4 -0
  264. package/es/features/content-explorer/content-explorer/ContentExplorerBreadcrumbs.js +15 -9
  265. package/es/features/content-explorer/content-explorer/ContentExplorerBreadcrumbs.js.flow +14 -11
  266. package/es/features/content-explorer/content-explorer/ContentExplorerBreadcrumbs.js.map +1 -1
  267. package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js +4 -1
  268. package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js.flow +4 -1
  269. package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js.map +1 -1
  270. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +6 -3
  271. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.flow +5 -1
  272. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.map +1 -1
  273. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +6 -1
  274. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.flow +5 -1
  275. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.map +1 -1
  276. package/es/features/content-explorer/prop-types.js +7 -1
  277. package/es/features/content-explorer/prop-types.js.flow +8 -0
  278. package/es/features/content-explorer/prop-types.js.map +1 -1
  279. package/es/features/content-insights/CompactCount.js +24 -0
  280. package/es/features/content-insights/CompactCount.js.map +1 -0
  281. package/es/features/content-insights/ContentAnalyticsErrorState.js +35 -0
  282. package/es/features/content-insights/ContentAnalyticsErrorState.js.map +1 -0
  283. package/es/features/content-insights/ContentAnalyticsErrorState.scss +17 -0
  284. package/es/features/content-insights/ContentInsightsSummary.js +42 -0
  285. package/es/features/content-insights/ContentInsightsSummary.js.map +1 -0
  286. package/es/features/content-insights/ContentInsightsSummary.scss +12 -0
  287. package/es/features/content-insights/ContentInsightsSummaryGhostState.js +19 -0
  288. package/es/features/content-insights/ContentInsightsSummaryGhostState.js.map +1 -0
  289. package/es/features/content-insights/ContentInsightsSummaryGhostState.scss +9 -0
  290. package/es/features/content-insights/GraphCardGhostState.js +25 -0
  291. package/es/features/content-insights/GraphCardGhostState.js.map +1 -0
  292. package/es/features/content-insights/GraphCardGhostState.scss +18 -0
  293. package/es/features/content-insights/GraphCardPreviewsSummary.js +30 -0
  294. package/es/features/content-insights/GraphCardPreviewsSummary.js.map +1 -0
  295. package/es/features/content-insights/GraphCardPreviewsSummary.scss +10 -0
  296. package/es/features/content-insights/GraphGhostState.js +21 -0
  297. package/es/features/content-insights/GraphGhostState.js.map +1 -0
  298. package/es/features/content-insights/GraphGhostState.scss +11 -0
  299. package/es/features/content-insights/HeaderWithCount.js +23 -0
  300. package/es/features/content-insights/HeaderWithCount.js.map +1 -0
  301. package/es/features/content-insights/HeaderWithCount.scss +10 -0
  302. package/es/features/content-insights/MetricSummary.js +85 -0
  303. package/es/features/content-insights/MetricSummary.js.map +1 -0
  304. package/es/features/content-insights/MetricSummary.scss +14 -0
  305. package/es/features/content-insights/OpenContentInsightsButton.js +16 -0
  306. package/es/features/content-insights/OpenContentInsightsButton.js.map +1 -0
  307. package/es/features/content-insights/TrendPill.js +61 -0
  308. package/es/features/content-insights/TrendPill.js.map +1 -0
  309. package/es/features/content-insights/TrendPill.scss +33 -0
  310. package/es/features/content-insights/_mixins.scss +7 -0
  311. package/es/features/content-insights/_variables.scss +4 -0
  312. package/es/features/content-insights/charts/bar/Bar.js +57 -0
  313. package/es/features/content-insights/charts/bar/Bar.js.map +1 -0
  314. package/es/features/content-insights/charts/bar/Bar.scss +27 -0
  315. package/es/features/content-insights/charts/bar/BarChart.js +70 -0
  316. package/es/features/content-insights/charts/bar/BarChart.js.map +1 -0
  317. package/es/features/content-insights/charts/bar/BarChart.scss +56 -0
  318. package/es/features/content-insights/charts/types.js +2 -0
  319. package/es/{common/types/threadedComments.js.map → features/content-insights/charts/types.js.map} +1 -1
  320. package/es/features/content-insights/constants.js +54 -0
  321. package/es/features/content-insights/constants.js.map +1 -0
  322. package/es/features/content-insights/messages.js +69 -0
  323. package/es/features/content-insights/messages.js.map +1 -0
  324. package/es/features/content-insights/numberUtils.js +10 -0
  325. package/es/features/content-insights/numberUtils.js.map +1 -0
  326. package/es/features/content-insights/types.js +2 -0
  327. package/es/features/content-insights/types.js.map +1 -0
  328. package/es/features/item-details/ItemProperties.scss +1 -1
  329. package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js +5 -3
  330. package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js.flow +4 -2
  331. package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js.map +1 -1
  332. package/es/features/unified-share-modal/ContactRestrictionNotice.js +34 -8
  333. package/es/features/unified-share-modal/ContactRestrictionNotice.js.flow +36 -6
  334. package/es/features/unified-share-modal/ContactRestrictionNotice.js.map +1 -1
  335. package/es/features/unified-share-modal/EmailForm.js +59 -47
  336. package/es/features/unified-share-modal/EmailForm.js.flow +31 -13
  337. package/es/features/unified-share-modal/EmailForm.js.map +1 -1
  338. package/es/features/unified-share-modal/UnifiedShareForm.js +112 -103
  339. package/es/features/unified-share-modal/UnifiedShareForm.js.flow +25 -8
  340. package/es/features/unified-share-modal/UnifiedShareForm.js.map +1 -1
  341. package/es/features/unified-share-modal/UnifiedShareModal.js +1 -0
  342. package/es/features/unified-share-modal/UnifiedShareModal.js.flow +1 -0
  343. package/es/features/unified-share-modal/UnifiedShareModal.js.map +1 -1
  344. package/es/features/unified-share-modal/flowTypes.js.flow +4 -2
  345. package/es/features/unified-share-modal/flowTypes.js.map +1 -1
  346. package/es/features/unified-share-modal/messages.js +12 -8
  347. package/es/features/unified-share-modal/messages.js.flow +14 -8
  348. package/es/features/unified-share-modal/messages.js.map +1 -1
  349. package/es/features/unified-share-modal/utils/hasRestrictedContacts.js +9 -4
  350. package/es/features/unified-share-modal/utils/hasRestrictedContacts.js.flow +10 -3
  351. package/es/features/unified-share-modal/utils/hasRestrictedContacts.js.map +1 -1
  352. package/es/features/unified-share-modal/utils/isRestrictedContact.js +15 -0
  353. package/es/features/unified-share-modal/utils/isRestrictedContact.js.flow +21 -0
  354. package/es/features/unified-share-modal/utils/isRestrictedContact.js.map +1 -0
  355. package/es/icon/fill/Alert16.js +3 -2
  356. package/es/icon/fill/Alert16.js.flow +3 -2
  357. package/es/icon/fill/Alert16.js.map +1 -1
  358. package/es/icon/fill/AlertBadge16.js +31 -0
  359. package/es/icon/fill/AlertBadge16.js.flow +29 -0
  360. package/es/icon/fill/AlertBadge16.js.map +1 -0
  361. package/es/icon/fill/AlertBadge16.stories.js +13 -0
  362. package/es/icon/fill/AlertBadge16.stories.js.map +1 -0
  363. package/es/icon/fill/Info16.js +2 -2
  364. package/es/icon/fill/Info16.js.flow +1 -1
  365. package/es/icon/fill/Info16.js.map +1 -1
  366. package/es/icon/fill/InfoBadge16.js +30 -0
  367. package/es/icon/fill/InfoBadge16.js.flow +28 -0
  368. package/es/icon/fill/InfoBadge16.js.map +1 -0
  369. package/es/icon/fill/InfoBadge16.stories.js +13 -0
  370. package/es/icon/fill/InfoBadge16.stories.js.map +1 -0
  371. package/es/icon/fill/UserSettings16.js +38 -0
  372. package/es/icon/fill/UserSettings16.js.flow +38 -0
  373. package/es/icon/fill/UserSettings16.js.map +1 -0
  374. package/es/icon/fill/UserSettings16.stories.js +13 -0
  375. package/es/icon/fill/UserSettings16.stories.js.map +1 -0
  376. package/es/icon/line/AlertBubble16.js +31 -0
  377. package/es/icon/line/AlertBubble16.js.flow +29 -0
  378. package/es/icon/line/AlertBubble16.js.map +1 -0
  379. package/es/icon/line/AlertBubble16.stories.js +13 -0
  380. package/es/icon/line/AlertBubble16.stories.js.map +1 -0
  381. package/es/icon/line/AvatarXBadge16.js +45 -0
  382. package/es/icon/line/AvatarXBadge16.js.flow +39 -0
  383. package/es/icon/line/AvatarXBadge16.js.map +1 -0
  384. package/es/icon/line/AvatarXBadge16.stories.js +13 -0
  385. package/es/icon/line/AvatarXBadge16.stories.js.map +1 -0
  386. package/es/icon/line/CoEdit16.js +32 -0
  387. package/es/icon/line/CoEdit16.js.flow +30 -0
  388. package/es/icon/line/CoEdit16.js.map +1 -0
  389. package/es/icon/line/CoEdit16.stories.js +13 -0
  390. package/es/icon/line/CoEdit16.stories.js.map +1 -0
  391. package/es/icon/line/Collaborations16.js +32 -0
  392. package/es/icon/line/Collaborations16.js.flow +30 -0
  393. package/es/icon/line/Collaborations16.js.map +1 -0
  394. package/es/icon/line/Collaborations16.stories.js +13 -0
  395. package/es/icon/line/Collaborations16.stories.js.map +1 -0
  396. package/es/icon/line/CommentBubble16.js +35 -0
  397. package/es/icon/line/CommentBubble16.js.flow +34 -0
  398. package/es/icon/line/CommentBubble16.js.map +1 -0
  399. package/es/icon/line/CommentBubble16.stories.js +13 -0
  400. package/es/icon/line/CommentBubble16.stories.js.map +1 -0
  401. package/es/src/components/accessible-svg/AccessibleSVG.stories.d.ts +7 -0
  402. package/es/src/components/badge/Badge.stories.d.ts +0 -3
  403. package/es/src/components/badge/BetaBadge.stories.d.ts +6 -0
  404. package/es/src/components/badge/TrialBadge.stories.d.ts +6 -0
  405. package/es/src/components/badge/UpgradeBadge.stories.d.ts +6 -0
  406. package/es/src/components/draggable-list/DraggableList.stories.d.ts +3 -3
  407. package/es/src/components/infinite-scroll/InfiniteScroll.d.ts +1 -1
  408. package/es/src/components/tooltip/Tooltip.d.ts +2 -0
  409. package/es/src/elements/common/annotator-context/__tests__/useAnnotatorEvents.test.d.ts +1 -0
  410. package/es/src/elements/common/annotator-context/index.d.ts +1 -0
  411. package/es/src/elements/common/annotator-context/types.d.ts +28 -6
  412. package/es/src/elements/common/annotator-context/useAnnotatorEvents.d.ts +52 -0
  413. package/es/src/elements/common/annotator-context/withAnnotations.d.ts +11 -2
  414. package/es/src/elements/common/annotator-context/withAnnotatorContext.d.ts +6 -2
  415. package/es/src/elements/common/current-user/__tests__/withCurrentUser.test.d.ts +1 -0
  416. package/es/src/elements/common/current-user/index.d.ts +2 -0
  417. package/es/src/elements/common/current-user/withCurrentUser.d.ts +20 -0
  418. package/es/src/elements/content-sidebar/SidebarContentInsights.d.ts +15 -0
  419. package/es/src/elements/content-sidebar/__tests__/SidebarContentInsights.test.d.ts +1 -0
  420. package/es/src/elements/content-sidebar/activity-feed/activity-feed/fixtures.d.ts +55 -0
  421. package/es/src/features/content-insights/CompactCount.d.ts +15 -0
  422. package/es/src/features/content-insights/ContentAnalyticsErrorState.d.ts +7 -0
  423. package/es/src/features/content-insights/ContentInsightsSummary.d.ts +12 -0
  424. package/es/src/features/content-insights/ContentInsightsSummaryGhostState.d.ts +3 -0
  425. package/es/src/features/content-insights/GraphCardGhostState.d.ts +3 -0
  426. package/es/src/features/content-insights/GraphCardPreviewsSummary.d.ts +16 -0
  427. package/es/src/features/content-insights/GraphGhostState.d.ts +3 -0
  428. package/es/src/features/content-insights/HeaderWithCount.d.ts +7 -0
  429. package/es/src/features/content-insights/MetricSummary.d.ts +18 -0
  430. package/es/src/features/content-insights/OpenContentInsightsButton.d.ts +5 -0
  431. package/es/src/features/content-insights/TrendPill.d.ts +15 -0
  432. package/es/src/features/content-insights/__tests__/CompactCount.test.d.ts +1 -0
  433. package/es/src/features/content-insights/__tests__/ContentAnalyticsErrorState.test.d.ts +1 -0
  434. package/es/src/features/content-insights/__tests__/ContentInsightsSummary.test.d.ts +1 -0
  435. package/es/src/features/content-insights/__tests__/GraphCardPreviewsSummary.test.d.ts +1 -0
  436. package/es/src/features/content-insights/__tests__/HeaderWithCount.test.d.ts +1 -0
  437. package/es/src/features/content-insights/__tests__/MetricSummary.test.d.ts +1 -0
  438. package/es/src/features/content-insights/charts/bar/Bar.d.ts +11 -0
  439. package/es/src/features/content-insights/charts/bar/BarChart.d.ts +19 -0
  440. package/es/src/features/content-insights/charts/bar/__tests__/Bar.test.d.ts +1 -0
  441. package/es/src/features/content-insights/charts/bar/__tests__/BarChart.test.d.ts +1 -0
  442. package/es/src/features/content-insights/charts/types.d.ts +2 -0
  443. package/es/src/features/content-insights/constants.d.ts +27 -0
  444. package/es/src/features/content-insights/messages.d.ts +83 -0
  445. package/es/src/features/content-insights/numberUtils.d.ts +3 -0
  446. package/es/src/features/content-insights/types.d.ts +24 -0
  447. package/es/src/icon/fill/AlertBadge16.d.ts +13 -0
  448. package/es/src/icon/fill/AlertBadge16.stories.d.ts +9 -0
  449. package/es/src/icon/fill/InfoBadge16.d.ts +13 -0
  450. package/es/src/icon/fill/InfoBadge16.stories.d.ts +9 -0
  451. package/es/src/icon/fill/UserSettings16.d.ts +13 -0
  452. package/es/src/icon/fill/UserSettings16.stories.d.ts +9 -0
  453. package/es/src/icon/line/AlertBubble16.d.ts +13 -0
  454. package/es/src/icon/line/AlertBubble16.stories.d.ts +9 -0
  455. package/es/src/icon/line/AvatarXBadge16.d.ts +13 -0
  456. package/es/src/icon/line/AvatarXBadge16.stories.d.ts +9 -0
  457. package/es/src/icon/line/CoEdit16.d.ts +13 -0
  458. package/es/src/icon/line/CoEdit16.stories.d.ts +9 -0
  459. package/es/src/icon/line/Collaborations16.d.ts +13 -0
  460. package/es/src/icon/line/Collaborations16.stories.d.ts +9 -0
  461. package/es/src/icon/line/CommentBubble16.d.ts +13 -0
  462. package/es/src/icon/line/CommentBubble16.stories.d.ts +9 -0
  463. package/es/src/styles/variables.d.ts +3 -1
  464. package/es/styles/constants/_layout.scss +1 -1
  465. package/es/styles/constants/_media-queries.scss +2 -0
  466. package/es/styles/variables.js +6 -2
  467. package/es/styles/variables.js.flow +4 -2
  468. package/es/styles/variables.js.map +1 -1
  469. package/es/utils/error.js +5 -1
  470. package/es/utils/error.js.flow +5 -1
  471. package/es/utils/error.js.map +1 -1
  472. package/es/utils/fields.js +8 -3
  473. package/es/utils/fields.js.flow +21 -3
  474. package/es/utils/fields.js.map +1 -1
  475. package/es/utils/sorter.js.flow +2 -2
  476. package/es/utils/sorter.js.map +1 -1
  477. package/i18n/bn-IN.js +45 -7
  478. package/i18n/bn-IN.properties +83 -7
  479. package/i18n/da-DK.js +45 -7
  480. package/i18n/da-DK.properties +83 -7
  481. package/i18n/de-DE.js +45 -7
  482. package/i18n/de-DE.properties +83 -7
  483. package/i18n/en-AU.js +45 -7
  484. package/i18n/en-AU.properties +83 -7
  485. package/i18n/en-CA.js +45 -7
  486. package/i18n/en-CA.properties +83 -7
  487. package/i18n/en-GB.js +45 -7
  488. package/i18n/en-GB.properties +83 -7
  489. package/i18n/en-US.js +45 -7
  490. package/i18n/en-US.properties +83 -7
  491. package/i18n/en-x-pseudo.js +891 -854
  492. package/i18n/en-x-pseudo.properties +941 -843
  493. package/i18n/es-419.js +45 -7
  494. package/i18n/es-419.properties +83 -7
  495. package/i18n/es-ES.js +45 -7
  496. package/i18n/es-ES.properties +83 -7
  497. package/i18n/fi-FI.js +45 -7
  498. package/i18n/fi-FI.properties +83 -7
  499. package/i18n/fr-CA.js +45 -7
  500. package/i18n/fr-CA.properties +83 -7
  501. package/i18n/fr-FR.js +45 -7
  502. package/i18n/fr-FR.properties +83 -7
  503. package/i18n/hi-IN.js +45 -7
  504. package/i18n/hi-IN.properties +83 -7
  505. package/i18n/it-IT.js +45 -7
  506. package/i18n/it-IT.properties +83 -7
  507. package/i18n/ja-JP.js +47 -9
  508. package/i18n/ja-JP.properties +85 -9
  509. package/i18n/ko-KR.js +45 -7
  510. package/i18n/ko-KR.properties +83 -7
  511. package/i18n/nb-NO.js +45 -7
  512. package/i18n/nb-NO.properties +83 -7
  513. package/i18n/nl-NL.js +45 -7
  514. package/i18n/nl-NL.properties +83 -7
  515. package/i18n/pl-PL.js +45 -7
  516. package/i18n/pl-PL.properties +83 -7
  517. package/i18n/pt-BR.js +45 -7
  518. package/i18n/pt-BR.properties +83 -7
  519. package/i18n/ru-RU.js +45 -7
  520. package/i18n/ru-RU.properties +83 -7
  521. package/i18n/sv-SE.js +45 -7
  522. package/i18n/sv-SE.properties +83 -7
  523. package/i18n/tr-TR.js +45 -7
  524. package/i18n/tr-TR.properties +83 -7
  525. package/i18n/zh-CN.js +45 -7
  526. package/i18n/zh-CN.properties +83 -7
  527. package/i18n/zh-TW.js +45 -7
  528. package/i18n/zh-TW.properties +83 -7
  529. package/package.json +7 -8
  530. package/src/__mocks__/react-intl.js +4 -0
  531. package/src/api/APIFactory.js +26 -0
  532. package/src/api/Annotations.js +150 -14
  533. package/src/api/Comments.js +5 -4
  534. package/src/api/Feed.js +677 -17
  535. package/src/api/FileCollaborators.js +30 -0
  536. package/src/api/ThreadedComments.js +54 -29
  537. package/src/api/__tests__/Annotations.test.js +217 -11
  538. package/src/api/__tests__/Feed.test.js +699 -86
  539. package/src/api/__tests__/FileCollaborators.test.js +41 -0
  540. package/src/api/__tests__/ThreadedComments.test.js +47 -10
  541. package/src/api/__tests__/utils.test.js +11 -0
  542. package/src/api/fixtures.js +401 -0
  543. package/src/api/messages.js +5 -0
  544. package/src/api/utils.js +30 -0
  545. package/src/common/types/annotations.js +18 -10
  546. package/src/common/types/feed.js +40 -4
  547. package/src/components/accessible-svg/AccessibleSVG.stories.tsx +18 -0
  548. package/src/components/badge/Badge.stories.md +1 -7
  549. package/src/components/badge/Badge.stories.tsx +1 -10
  550. package/src/components/badge/BetaBadge.stories.tsx +9 -0
  551. package/src/components/badge/TrialBadge.stories.tsx +9 -0
  552. package/src/components/badge/UpgradeBadge.stories.tsx +9 -0
  553. package/src/components/breadcrumb/Breadcrumb.js +68 -42
  554. package/src/components/breadcrumb/EllipsisCrumb.js +10 -6
  555. package/src/components/count-badge/CountBadge.stories.tsx +1 -1
  556. package/src/components/draggable-list/DraggableList.stories.tsx +72 -5
  557. package/src/components/dropdown-menu/DropdownMenu.js +11 -0
  558. package/src/components/dropdown-menu/DropdownMenu.scss +3 -3
  559. package/src/components/dropdown-menu/__tests__/DropdownMenu.test.js +38 -0
  560. package/src/components/grid-view/__tests__/__snapshots__/GridViewSlider.test.js.snap +1 -0
  561. package/src/components/infinite-scroll/InfiniteScroll.md +1 -1
  562. package/src/components/infinite-scroll/InfiniteScroll.tsx +5 -2
  563. package/src/components/infinite-scroll/__tests__/InfiniteScroll.test.tsx +115 -127
  564. package/src/components/modal/Modal.scss +5 -1
  565. package/src/components/search-form/SearchForm.js +1 -1
  566. package/src/components/search-form/__tests__/SearchForm.test.js +25 -6
  567. package/src/components/sidebar-toggle-button/__tests__/__snapshots__/SidebarToggleButton.test.js.snap +4 -0
  568. package/src/components/table/__tests__/makeSelectable.test.js +654 -144
  569. package/src/components/table/makeSelectable.js +299 -98
  570. package/src/components/time/__tests__/ReadableTime.test.js +0 -1
  571. package/src/components/tooltip/Tooltip.tsx +5 -2
  572. package/src/components/tooltip/__tests__/Tooltip.test.tsx +10 -0
  573. package/src/components/tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +1 -1
  574. package/src/constants.js +11 -0
  575. package/src/elements/common/annotator-context/__tests__/useAnnotatorEvents.test.tsx +509 -0
  576. package/src/elements/common/annotator-context/__tests__/withAnnotations.test.tsx +275 -12
  577. package/src/elements/common/annotator-context/__tests__/withAnnotatorContext.test.tsx +18 -6
  578. package/src/elements/common/annotator-context/index.js.flow +4 -0
  579. package/src/elements/common/annotator-context/index.ts +1 -0
  580. package/src/elements/common/annotator-context/types.js.flow +77 -35
  581. package/src/elements/common/annotator-context/types.ts +28 -6
  582. package/src/elements/common/annotator-context/useAnnotatorEvents.js.flow +52 -0
  583. package/src/elements/common/annotator-context/useAnnotatorEvents.ts +190 -0
  584. package/src/elements/common/annotator-context/withAnnotations.js.flow +73 -36
  585. package/src/elements/common/annotator-context/withAnnotations.tsx +170 -7
  586. package/src/elements/common/annotator-context/withAnnotatorContext.js.flow +29 -9
  587. package/src/elements/common/annotator-context/withAnnotatorContext.tsx +28 -5
  588. package/src/elements/common/current-user/__tests__/withCurrentUser.test.tsx +108 -0
  589. package/src/elements/common/current-user/index.js.flow +8 -0
  590. package/src/elements/common/current-user/index.ts +2 -0
  591. package/src/elements/common/current-user/withCurrentUser.js.flow +40 -0
  592. package/src/elements/common/current-user/withCurrentUser.tsx +139 -0
  593. package/src/elements/common/flowTypes.js +22 -4
  594. package/src/elements/common/interactionTargets.js +2 -0
  595. package/src/elements/common/logger/Logger.js +1 -1
  596. package/src/elements/common/messages.js +5 -0
  597. package/src/elements/content-explorer/DeleteConfirmationDialog.js +3 -1
  598. package/src/elements/content-explorer/DeleteConfirmationDialog.scss +5 -0
  599. package/src/elements/content-explorer/stories/DeleteConfirmationDialog.stories.js +60 -0
  600. package/src/elements/content-explorer/stories/DeleteConfirmationDialog.stories.md +1 -0
  601. package/src/elements/content-sidebar/ActivitySidebar.js +381 -154
  602. package/src/elements/content-sidebar/ActivitySidebarFilter.js +59 -0
  603. package/src/elements/content-sidebar/ActivitySidebarFilter.scss +4 -0
  604. package/src/elements/content-sidebar/DetailsSidebar.js +32 -4
  605. package/src/elements/content-sidebar/Sidebar.js +6 -1
  606. package/src/elements/content-sidebar/SidebarContentInsights.scss +6 -0
  607. package/src/elements/content-sidebar/SidebarContentInsights.tsx +57 -0
  608. package/src/elements/content-sidebar/SidebarPanels.js +4 -0
  609. package/src/elements/content-sidebar/__tests__/ActivitySidebar.test.js +533 -243
  610. package/src/elements/content-sidebar/__tests__/ActivitySidebarFilter.test.js +54 -0
  611. package/src/elements/content-sidebar/__tests__/DetailsSidebar.test.js +45 -0
  612. package/src/elements/content-sidebar/__tests__/Sidebar.test.js +1 -1
  613. package/src/elements/content-sidebar/__tests__/SidebarContentInsights.test.tsx +56 -0
  614. package/src/elements/content-sidebar/__tests__/SidebarPanels.test.js +4 -3
  615. package/src/elements/content-sidebar/__tests__/__snapshots__/ActivitySidebar.test.js.snap +29 -15
  616. package/src/elements/content-sidebar/__tests__/__snapshots__/SidebarFileProperties.test.js.snap +1 -0
  617. package/src/elements/content-sidebar/__tests__/withSidebarAnnotations.test.js +325 -32
  618. package/src/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +122 -24
  619. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +59 -18
  620. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js +126 -0
  621. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.scss +17 -0
  622. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js +85 -0
  623. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.scss +16 -0
  624. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +59 -0
  625. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.scss +22 -0
  626. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActiveState.test.js +19 -5
  627. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityFeed.test.js +22 -16
  628. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThread.test.js +80 -0
  629. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThreadReplies.test.js +24 -0
  630. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThreadRepliesForm.test.js +47 -0
  631. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/__snapshots__/ActiveState.test.js.snap +74 -43
  632. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/activityFeedUtils.test.js +8 -8
  633. package/src/elements/content-sidebar/activity-feed/activity-feed/activityFeedUtils.js +2 -2
  634. package/src/elements/content-sidebar/activity-feed/activity-feed/fixtures.ts +56 -0
  635. package/src/elements/content-sidebar/activity-feed/activity-feed/messages.js +20 -0
  636. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js +117 -0
  637. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.scss +7 -0
  638. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js +105 -0
  639. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.scss +5 -0
  640. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js +86 -0
  641. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.scss +3 -0
  642. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThread.test.js +28 -0
  643. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThreadContent.test.js +89 -0
  644. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThreadCreate.test.js +103 -0
  645. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useAnnotationAPI.test.js +202 -0
  646. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useRepliesAPI.test.js +99 -0
  647. package/src/elements/content-sidebar/activity-feed/annotation-thread/errors.js +26 -0
  648. package/src/elements/content-sidebar/activity-feed/annotation-thread/index.js +1 -0
  649. package/src/elements/content-sidebar/activity-feed/annotation-thread/messages.js +21 -0
  650. package/src/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js +203 -0
  651. package/src/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js +121 -0
  652. package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js +24 -4
  653. package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js +36 -2
  654. package/src/elements/content-sidebar/activity-feed/annotations/__tests__/AnnotationActivity.test.js +14 -10
  655. package/src/elements/content-sidebar/activity-feed/annotations/__tests__/AnnotationActivityMenu.test.js +35 -1
  656. package/src/elements/content-sidebar/activity-feed/annotations/messages.js +10 -0
  657. package/src/elements/content-sidebar/activity-feed/comment/Comment.js +54 -10
  658. package/src/elements/content-sidebar/activity-feed/comment/__tests__/Comment.test.js +152 -7
  659. package/src/elements/content-sidebar/activity-feed/comment/__tests__/__snapshots__/Comment.test.js.snap +12 -7
  660. package/src/elements/content-sidebar/activity-feed/comment/messages.js +10 -0
  661. package/src/elements/content-sidebar/activity-feed/comment-form/CommentForm.js +3 -1
  662. package/src/elements/content-sidebar/activity-feed/comment-form/__tests__/CommentForm.test.js +11 -0
  663. package/src/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.js +34 -4
  664. package/src/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.scss +40 -3
  665. package/src/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessage.js +42 -0
  666. package/src/elements/content-sidebar/activity-feed/common/activity-message/CollapsableMessageToggle.js +24 -0
  667. package/src/elements/content-sidebar/activity-feed/common/activity-message/__tests__/ActivityMessage.test.js +48 -1
  668. package/src/elements/content-sidebar/activity-feed/common/activity-message/messages.js +15 -0
  669. package/src/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.js +30 -0
  670. package/src/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.scss +6 -0
  671. package/src/elements/content-sidebar/activity-feed/common/activity-status/__tests__/ActivityStatus.test.js +19 -0
  672. package/src/elements/content-sidebar/activity-feed/common/activity-status/index.js +2 -0
  673. package/src/elements/content-sidebar/activity-feed/common/activity-status/messages.js +13 -0
  674. package/src/elements/content-sidebar/activity-feed/common/activity-timestamp/ActivityTimestamp.scss +1 -1
  675. package/src/elements/content-sidebar/activity-feed/task-new/__tests__/Task.test.js +4 -3
  676. package/src/elements/content-sidebar/activity-feed/task-new/__tests__/__snapshots__/Task.test.js.snap +1 -2
  677. package/src/elements/content-sidebar/fixtures.js +185 -0
  678. package/src/elements/content-sidebar/flowTypes.js +9 -25
  679. package/src/elements/content-sidebar/messages.js +10 -0
  680. package/src/elements/content-sidebar/withErrorHandling.js +1 -1
  681. package/src/elements/content-sidebar/withSidebarAnnotations.js +162 -11
  682. package/src/elements/content-uploader/OverallUploadsProgressBar.js +11 -12
  683. package/src/features/classification/Classification.scss +1 -1
  684. package/src/features/classification/security-controls/SecurityControlsItem.scss +1 -0
  685. package/src/features/classification/security-controls/__tests__/__snapshots__/utils.test.js.snap +18 -16
  686. package/src/features/classification/security-controls/__tests__/utils.test.js +13 -5
  687. package/src/features/classification/security-controls/messages.js +10 -0
  688. package/src/features/classification/security-controls/utils.js +8 -12
  689. package/src/features/collapsible-sidebar/__tests__/__snapshots__/CollapsibleSidebarLogo.test.js.snap +2 -0
  690. package/src/features/content-explorer/content-explorer/ContentExplorer.js +4 -0
  691. package/src/features/content-explorer/content-explorer/ContentExplorer.scss +4 -0
  692. package/src/features/content-explorer/content-explorer/ContentExplorerBreadcrumbs.js +14 -11
  693. package/src/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js +4 -1
  694. package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerBreadcrumbs.test.js +2 -2
  695. package/src/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +5 -1
  696. package/src/features/content-explorer/content-explorer-modal/__tests__/__snapshots__/ContentExplorerModal.test.js.snap +1 -0
  697. package/src/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +5 -1
  698. package/src/features/content-explorer/prop-types.js +8 -0
  699. package/src/features/content-insights/CompactCount.tsx +23 -0
  700. package/src/features/content-insights/ContentAnalyticsErrorState.scss +17 -0
  701. package/src/features/content-insights/ContentAnalyticsErrorState.tsx +44 -0
  702. package/src/features/content-insights/ContentInsightsSummary.scss +12 -0
  703. package/src/features/content-insights/ContentInsightsSummary.tsx +45 -0
  704. package/src/features/content-insights/ContentInsightsSummaryGhostState.scss +9 -0
  705. package/src/features/content-insights/ContentInsightsSummaryGhostState.tsx +18 -0
  706. package/src/features/content-insights/GraphCardGhostState.scss +18 -0
  707. package/src/features/content-insights/GraphCardGhostState.tsx +18 -0
  708. package/src/features/content-insights/GraphCardPreviewsSummary.scss +10 -0
  709. package/src/features/content-insights/GraphCardPreviewsSummary.tsx +40 -0
  710. package/src/features/content-insights/GraphGhostState.scss +11 -0
  711. package/src/features/content-insights/GraphGhostState.tsx +17 -0
  712. package/src/features/content-insights/HeaderWithCount.scss +10 -0
  713. package/src/features/content-insights/HeaderWithCount.tsx +24 -0
  714. package/src/features/content-insights/MetricSummary.scss +14 -0
  715. package/src/features/content-insights/MetricSummary.tsx +65 -0
  716. package/src/features/content-insights/OpenContentInsightsButton.tsx +20 -0
  717. package/src/features/content-insights/TrendPill.scss +33 -0
  718. package/src/features/content-insights/TrendPill.tsx +70 -0
  719. package/src/features/content-insights/__tests__/CompactCount.test.tsx +57 -0
  720. package/src/features/content-insights/__tests__/ContentAnalyticsErrorState.test.tsx +33 -0
  721. package/src/features/content-insights/__tests__/ContentInsightsSummary.test.tsx +81 -0
  722. package/src/features/content-insights/__tests__/GraphCardPreviewsSummary.test.tsx +35 -0
  723. package/src/features/content-insights/__tests__/HeaderWithCount.test.tsx +26 -0
  724. package/src/features/content-insights/__tests__/MetricSummary.test.tsx +88 -0
  725. package/src/features/content-insights/_mixins.scss +7 -0
  726. package/src/features/content-insights/_variables.scss +4 -0
  727. package/src/features/content-insights/charts/bar/Bar.scss +27 -0
  728. package/src/features/content-insights/charts/bar/Bar.tsx +48 -0
  729. package/src/features/content-insights/charts/bar/BarChart.scss +56 -0
  730. package/src/features/content-insights/charts/bar/BarChart.tsx +78 -0
  731. package/src/features/content-insights/charts/bar/__tests__/Bar.test.tsx +74 -0
  732. package/src/features/content-insights/charts/bar/__tests__/BarChart.test.tsx +110 -0
  733. package/src/features/content-insights/charts/types.ts +3 -0
  734. package/src/features/content-insights/constants.ts +60 -0
  735. package/src/features/content-insights/messages.ts +90 -0
  736. package/src/features/content-insights/numberUtils.ts +9 -0
  737. package/src/features/content-insights/types.ts +33 -0
  738. package/src/features/item-details/ItemProperties.scss +1 -1
  739. package/src/features/shared-link-settings-modal/SharedLinkSettingsModal.js +4 -2
  740. package/src/features/shared-link-settings-modal/__tests__/SharedLinkSettingsModal.test.js +22 -3
  741. package/src/features/shared-link-settings-modal/__tests__/__snapshots__/SharedLinkSettingsModal.test.js.snap +2 -1
  742. package/src/features/unified-share-modal/ContactRestrictionNotice.js +36 -6
  743. package/src/features/unified-share-modal/EmailForm.js +31 -13
  744. package/src/features/unified-share-modal/UnifiedShareForm.js +25 -8
  745. package/src/features/unified-share-modal/UnifiedShareModal.js +1 -0
  746. package/src/features/unified-share-modal/__tests__/ContactRestrictionNotice.test.js +55 -6
  747. package/src/features/unified-share-modal/__tests__/EmailForm.test.js +131 -24
  748. package/src/features/unified-share-modal/__tests__/UnifiedShareForm.test.js +89 -35
  749. package/src/features/unified-share-modal/__tests__/__snapshots__/UnifiedShareForm.test.js.snap +16 -0
  750. package/src/features/unified-share-modal/__tests__/__snapshots__/UnifiedShareModal.test.js.snap +17 -0
  751. package/src/features/unified-share-modal/flowTypes.js +4 -2
  752. package/src/features/unified-share-modal/messages.js +14 -8
  753. package/src/features/unified-share-modal/utils/__tests__/hasRestrictedContacts.test.js +24 -10
  754. package/src/features/unified-share-modal/utils/__tests__/isRestrictedContact.test.js +33 -0
  755. package/src/features/unified-share-modal/utils/hasRestrictedContacts.js +10 -3
  756. package/src/features/unified-share-modal/utils/isRestrictedContact.js +21 -0
  757. package/src/features/virtualized-table/__tests__/__snapshots__/VirtualizedTable.test.js.snap +1 -0
  758. package/src/icon/fill/Alert16.js.flow +3 -2
  759. package/src/icon/fill/Alert16.tsx +3 -2
  760. package/src/icon/fill/AlertBadge16.js.flow +29 -0
  761. package/src/icon/fill/AlertBadge16.stories.tsx +13 -0
  762. package/src/icon/fill/AlertBadge16.tsx +27 -0
  763. package/src/icon/fill/Info16.js.flow +1 -1
  764. package/src/icon/fill/Info16.tsx +1 -1
  765. package/src/icon/fill/InfoBadge16.js.flow +28 -0
  766. package/src/icon/fill/InfoBadge16.stories.tsx +13 -0
  767. package/src/icon/fill/InfoBadge16.tsx +26 -0
  768. package/src/icon/fill/UserSettings16.js.flow +38 -0
  769. package/src/icon/fill/UserSettings16.stories.tsx +13 -0
  770. package/src/icon/fill/UserSettings16.tsx +36 -0
  771. package/src/icon/line/AlertBubble16.js.flow +29 -0
  772. package/src/icon/line/AlertBubble16.stories.tsx +13 -0
  773. package/src/icon/line/AlertBubble16.tsx +27 -0
  774. package/src/icon/line/AvatarXBadge16.js.flow +39 -0
  775. package/src/icon/line/AvatarXBadge16.stories.tsx +13 -0
  776. package/src/icon/line/AvatarXBadge16.tsx +37 -0
  777. package/src/icon/line/CoEdit16.js.flow +30 -0
  778. package/src/icon/line/CoEdit16.stories.tsx +13 -0
  779. package/src/icon/line/CoEdit16.tsx +28 -0
  780. package/src/icon/line/Collaborations16.js.flow +30 -0
  781. package/src/icon/line/Collaborations16.stories.tsx +13 -0
  782. package/src/icon/line/Collaborations16.tsx +28 -0
  783. package/src/icon/line/CommentBubble16.js.flow +34 -0
  784. package/src/icon/line/CommentBubble16.stories.tsx +13 -0
  785. package/src/icon/line/CommentBubble16.tsx +32 -0
  786. package/src/styles/constants/_layout.scss +1 -1
  787. package/src/styles/constants/_media-queries.scss +2 -0
  788. package/src/styles/variables.js +4 -2
  789. package/src/styles/variables.json +4 -2
  790. package/src/styles/variables.ts +3 -1
  791. package/src/utils/__tests__/fields.test.js +23 -4
  792. package/src/utils/__tests__/sorter.test.js +3 -3
  793. package/src/utils/error.js +5 -1
  794. package/src/utils/fields.js +21 -3
  795. package/src/utils/sorter.js +2 -2
  796. package/es/common/types/threadedComments.js +0 -2
  797. package/es/common/types/threadedComments.js.flow +0 -9
  798. package/src/common/types/threadedComments.js +0 -9
@@ -1,10 +1,124 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
+
3
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4
+
5
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6
+
7
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
8
+
9
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
10
+
11
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
12
+
13
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
14
+
15
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
16
+
17
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
18
+
19
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
+
1
21
  import * as React from 'react';
2
- import DraggableList from '../../../examples/src/DraggableListExamples';
22
+ import uniqueId from 'lodash/uniqueId';
23
+ import Checkbox from '../checkbox/Checkbox';
24
+ import DraggableList from './DraggableList';
25
+ import DraggableListItem from './DraggableListItem';
26
+ import reorder from './draggable-list-utils/reorder';
3
27
  import notes from './DraggableList.stories.md';
4
- export var example = function example() {
5
- var isDraggableViaHandle = true;
6
- return React.createElement(DraggableList, {
7
- isDraggableViaHandle: isDraggableViaHandle
28
+
29
+ var DraggableListExamples =
30
+ /*#__PURE__*/
31
+ function (_React$Component) {
32
+ _inherits(DraggableListExamples, _React$Component);
33
+
34
+ function DraggableListExamples() {
35
+ var _getPrototypeOf2;
36
+
37
+ var _this;
38
+
39
+ _classCallCheck(this, DraggableListExamples);
40
+
41
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
42
+ args[_key] = arguments[_key];
43
+ }
44
+
45
+ _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(DraggableListExamples)).call.apply(_getPrototypeOf2, [this].concat(args)));
46
+
47
+ _defineProperty(_assertThisInitialized(_this), "state", {
48
+ items: [],
49
+ listId: ''
50
+ });
51
+
52
+ _defineProperty(_assertThisInitialized(_this), "getItems", function (count) {
53
+ return Array.from({
54
+ length: count
55
+ }, function (v, k) {
56
+ return k;
57
+ }).map(function (k) {
58
+ return {
59
+ id: uniqueId('item_'),
60
+ label: "item ".concat(k)
61
+ };
62
+ });
63
+ });
64
+
65
+ _defineProperty(_assertThisInitialized(_this), "onDragEnd", function (sourceIndex, destinationIndex) {
66
+ if (!destinationIndex) {
67
+ return;
68
+ }
69
+
70
+ var items = reorder(_this.state.items, sourceIndex, destinationIndex);
71
+
72
+ _this.setState({
73
+ items: items
74
+ });
75
+ });
76
+
77
+ return _this;
78
+ }
79
+
80
+ _createClass(DraggableListExamples, [{
81
+ key: "componentDidMount",
82
+ value: function componentDidMount() {
83
+ this.setState({
84
+ items: this.getItems(10),
85
+ listId: uniqueId()
86
+ });
87
+ }
88
+ }, {
89
+ key: "render",
90
+ value: function render() {
91
+ var isDraggableViaHandle = this.props.isDraggableViaHandle;
92
+ var _this$state = this.state,
93
+ items = _this$state.items,
94
+ listId = _this$state.listId;
95
+ return React.createElement(DraggableList, {
96
+ className: "draggable-list-example-container",
97
+ listId: listId,
98
+ onDragEnd: this.onDragEnd
99
+ }, items.map(function (item, index) {
100
+ return React.createElement(DraggableListItem, {
101
+ key: "draggable-".concat(index),
102
+ id: item.id,
103
+ index: index,
104
+ isDraggableViaHandle: isDraggableViaHandle
105
+ }, React.createElement(Checkbox, {
106
+ label: item.label,
107
+ name: item.label
108
+ }));
109
+ }));
110
+ }
111
+ }]);
112
+
113
+ return DraggableListExamples;
114
+ }(React.Component);
115
+
116
+ export var Example = function Example() {
117
+ return React.createElement(DraggableListExamples, null);
118
+ };
119
+ export var ExampleIsDraggableViaHandle = function ExampleIsDraggableViaHandle() {
120
+ return React.createElement(DraggableListExamples, {
121
+ isDraggableViaHandle: true
8
122
  });
9
123
  };
10
124
  export default {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/draggable-list/DraggableList.stories.tsx"],"names":["React","DraggableList","notes","example","isDraggableViaHandle","title","component","parameters"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,aAAP,MAA0B,6CAA1B;AACA,OAAOC,KAAP,MAAkB,4BAAlB;AAEA,OAAO,IAAMC,OAAO,GAAG,SAAVA,OAAU,GAAM;AACzB,MAAMC,oBAAoB,GAAG,IAA7B;AACA,SAAO,oBAAC,aAAD;AAAe,IAAA,oBAAoB,EAAEA;AAArC,IAAP;AACH,CAHM;AAKP,eAAe;AACXC,EAAAA,KAAK,EAAE,0BADI;AAEXC,EAAAA,SAAS,EAAEL,aAFA;AAGXM,EAAAA,UAAU,EAAE;AACRL,IAAAA,KAAK,EAALA;AADQ;AAHD,CAAf","sourcesContent":["import * as React from 'react';\nimport DraggableList from '../../../examples/src/DraggableListExamples';\nimport notes from './DraggableList.stories.md';\n\nexport const example = () => {\n const isDraggableViaHandle = true;\n return <DraggableList isDraggableViaHandle={isDraggableViaHandle} />;\n};\n\nexport default {\n title: 'Components|DraggableList',\n component: DraggableList,\n parameters: {\n notes,\n },\n};\n"],"file":"DraggableList.stories.js"}
1
+ {"version":3,"sources":["../../../src/components/draggable-list/DraggableList.stories.tsx"],"names":["React","uniqueId","Checkbox","DraggableList","DraggableListItem","reorder","notes","DraggableListExamples","items","listId","count","Array","from","length","v","k","map","id","label","sourceIndex","destinationIndex","state","setState","getItems","isDraggableViaHandle","props","onDragEnd","item","index","Component","Example","ExampleIsDraggableViaHandle","title","component","parameters"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AAEA,OAAOC,QAAP,MAAqB,sBAArB;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AACA,OAAOC,iBAAP,MAA8B,qBAA9B;AACA,OAAOC,OAAP,MAAyC,gCAAzC;AAEA,OAAOC,KAAP,MAAkB,4BAAlB;;IAWMC,qB;;;;;;;;;;;;;;;;;;4DACM;AACJC,MAAAA,KAAK,EAAE,EADH;AAEJC,MAAAA,MAAM,EAAE;AAFJ,K;;+DAYG,UAACC,KAAD,EAA2C;AAClD,aAAOC,KAAK,CAACC,IAAN,CAAW;AAAEC,QAAAA,MAAM,EAAEH;AAAV,OAAX,EAA8B,UAACI,CAAD,EAAIC,CAAJ;AAAA,eAAUA,CAAV;AAAA,OAA9B,EAA2CC,GAA3C,CAA+C,UAAAD,CAAC;AAAA,eAAK;AACxDE,UAAAA,EAAE,EAAEhB,QAAQ,CAAC,OAAD,CAD4C;AAExDiB,UAAAA,KAAK,iBAAUH,CAAV;AAFmD,SAAL;AAAA,OAAhD,CAAP;AAIH,K;;gEAEW,UAACI,WAAD,EAAsBC,gBAAtB,EAAmD;AAC3D,UAAI,CAACA,gBAAL,EAAuB;AACnB;AACH;;AAED,UAAMZ,KAAK,GAAGH,OAAO,CAAC,MAAKgB,KAAL,CAAWb,KAAZ,EAAmBW,WAAnB,EAAgCC,gBAAhC,CAArB;;AAEA,YAAKE,QAAL,CAAc;AACVd,QAAAA,KAAK,EAALA;AADU,OAAd;AAGH,K;;;;;;;wCAxBmB;AAChB,WAAKc,QAAL,CAAc;AACVd,QAAAA,KAAK,EAAE,KAAKe,QAAL,CAAc,EAAd,CADG;AAEVd,QAAAA,MAAM,EAAER,QAAQ;AAFN,OAAd;AAIH;;;6BAqBQ;AAAA,UACGuB,oBADH,GAC4B,KAAKC,KADjC,CACGD,oBADH;AAAA,wBAEqB,KAAKH,KAF1B;AAAA,UAEGb,KAFH,eAEGA,KAFH;AAAA,UAEUC,MAFV,eAEUA,MAFV;AAIL,aACI,oBAAC,aAAD;AAAe,QAAA,SAAS,EAAC,kCAAzB;AAA4D,QAAA,MAAM,EAAEA,MAApE;AAA4E,QAAA,SAAS,EAAE,KAAKiB;AAA5F,SACKlB,KAAK,CAACQ,GAAN,CAAU,UAACW,IAAD,EAAwBC,KAAxB;AAAA,eACP,oBAAC,iBAAD;AACI,UAAA,GAAG,sBAAeA,KAAf,CADP;AAEI,UAAA,EAAE,EAAED,IAAI,CAACV,EAFb;AAGI,UAAA,KAAK,EAAEW,KAHX;AAII,UAAA,oBAAoB,EAAEJ;AAJ1B,WAMI,oBAAC,QAAD;AAAU,UAAA,KAAK,EAAEG,IAAI,CAACT,KAAtB;AAA6B,UAAA,IAAI,EAAES,IAAI,CAACT;AAAxC,UANJ,CADO;AAAA,OAAV,CADL,CADJ;AAcH;;;;EAlD+BlB,KAAK,CAAC6B,S;;AAqD1C,OAAO,IAAMC,OAAO,GAAG,SAAVA,OAAU;AAAA,SAAM,oBAAC,qBAAD,OAAN;AAAA,CAAhB;AAEP,OAAO,IAAMC,2BAA2B,GAAG,SAA9BA,2BAA8B;AAAA,SAAM,oBAAC,qBAAD;AAAuB,IAAA,oBAAoB;AAA3C,IAAN;AAAA,CAApC;AAEP,eAAe;AACXC,EAAAA,KAAK,EAAE,0BADI;AAEXC,EAAAA,SAAS,EAAE9B,aAFA;AAGX+B,EAAAA,UAAU,EAAE;AACR5B,IAAAA,KAAK,EAALA;AADQ;AAHD,CAAf","sourcesContent":["import * as React from 'react';\nimport uniqueId from 'lodash/uniqueId';\n\nimport Checkbox from '../checkbox/Checkbox';\nimport DraggableList from './DraggableList';\nimport DraggableListItem from './DraggableListItem';\nimport reorder, { ReorderListItem } from './draggable-list-utils/reorder';\n\nimport notes from './DraggableList.stories.md';\n\ninterface Props {\n isDraggableViaHandle?: boolean;\n}\n\ninterface State {\n items: Array<ReorderListItem>;\n listId: string;\n}\n\nclass DraggableListExamples extends React.Component<Props, State> {\n state = {\n items: [],\n listId: '',\n };\n\n componentDidMount() {\n this.setState({\n items: this.getItems(10),\n listId: uniqueId(),\n });\n }\n\n getItems = (count: number): Array<ReorderListItem> => {\n return Array.from({ length: count }, (v, k) => k).map(k => ({\n id: uniqueId('item_'),\n label: `item ${k}`,\n }));\n };\n\n onDragEnd = (sourceIndex: number, destinationIndex: number) => {\n if (!destinationIndex) {\n return;\n }\n\n const items = reorder(this.state.items, sourceIndex, destinationIndex);\n\n this.setState({\n items,\n });\n };\n\n render() {\n const { isDraggableViaHandle } = this.props;\n const { items, listId } = this.state;\n\n return (\n <DraggableList className=\"draggable-list-example-container\" listId={listId} onDragEnd={this.onDragEnd}>\n {items.map((item: ReorderListItem, index) => (\n <DraggableListItem\n key={`draggable-${index}`}\n id={item.id}\n index={index}\n isDraggableViaHandle={isDraggableViaHandle}\n >\n <Checkbox label={item.label} name={item.label} />\n </DraggableListItem>\n ))}\n </DraggableList>\n );\n }\n}\n\nexport const Example = () => <DraggableListExamples />;\n\nexport const ExampleIsDraggableViaHandle = () => <DraggableListExamples isDraggableViaHandle />;\n\nexport default {\n title: 'Components|DraggableList',\n component: DraggableList,\n parameters: {\n notes,\n },\n};\n"],"file":"DraggableList.stories.js"}
@@ -188,6 +188,7 @@ function (_React$Component) {
188
188
  className = _this$props.className,
189
189
  constrainToScrollParent = _this$props.constrainToScrollParent,
190
190
  constrainToWindow = _this$props.constrainToWindow,
191
+ constrainToWindowWithPin = _this$props.constrainToWindowWithPin,
191
192
  isResponsive = _this$props.isResponsive,
192
193
  isRightAligned = _this$props.isRightAligned;
193
194
  var _this$state = this.state,
@@ -251,6 +252,14 @@ function (_React$Component) {
251
252
  });
252
253
  }
253
254
 
255
+ if (constrainToWindowWithPin) {
256
+ constraints.push({
257
+ to: 'window',
258
+ attachment: 'together',
259
+ pin: true
260
+ });
261
+ }
262
+
254
263
  var bodyEl = bodyElement instanceof HTMLElement ? bodyElement : document.body;
255
264
  return React.createElement(TetherComponent, {
256
265
  attachment: attachment,
@@ -17,6 +17,8 @@ type Props = {
17
17
  constrainToScrollParent: boolean,
18
18
  /** Right aligns menu to button */
19
19
  constrainToWindow: boolean,
20
+ /** Forces menu to render within the visible window and pins the dropdown if scrolled */
21
+ constrainToWindowWithPin?: boolean,
20
22
  /** Enables responsive behaviors for this component */
21
23
  isResponsive?: boolean,
22
24
  /** Function called when menu is opened */
@@ -182,6 +184,7 @@ class DropdownMenu extends React.Component<Props, State> {
182
184
  className,
183
185
  constrainToScrollParent,
184
186
  constrainToWindow,
187
+ constrainToWindowWithPin,
185
188
  isResponsive,
186
189
  isRightAligned,
187
190
  } = this.props;
@@ -246,6 +249,14 @@ class DropdownMenu extends React.Component<Props, State> {
246
249
  });
247
250
  }
248
251
 
252
+ if (constrainToWindowWithPin) {
253
+ constraints.push({
254
+ to: 'window',
255
+ attachment: 'together',
256
+ pin: true,
257
+ });
258
+ }
259
+
249
260
  const bodyEl = bodyElement instanceof HTMLElement ? bodyElement : document.body;
250
261
 
251
262
  return (
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/dropdown-menu/DropdownMenu.js"],"names":["React","TetherComponent","classNames","noop","uniqueId","KEYS","DropdownMenu","initialFocusIndex","isOpen","setState","event","props","onMenuClose","menuButtonEl","document","getElementById","menuButtonID","focus","state","stopPropagation","preventDefault","closeMenu","openMenuAndSetFocusIndex","key","space","enter","arrowDown","arrowUp","escape","isKeyboardEvent","focusButton","menuEl","menuID","target","Node","contains","prevProps","prevState","useBubble","addEventListener","handleDocumentClick","onMenuOpen","removeEventListener","bodyElement","children","className","constrainToScrollParent","constrainToWindow","isResponsive","isRightAligned","elements","Children","toArray","length","Error","menuButton","menu","menuButtonProps","id","onClick","handleButtonClick","onKeyDown","handleButtonKeyDown","undefined","menuProps","onClose","handleMenuClose","attachment","targetAttachment","constraints","push","to","bodyEl","HTMLElement","body","cloneElement","Component"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,eAAP,MAA4B,cAA5B;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,IAAP,MAAiB,aAAjB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AAEA,SAASC,IAAT,QAAqB,iBAArB;AACA,OAAO,qBAAP;;IA4BMC,Y;;;;;;;;;;;;;;;;;;6DAQOF,QAAQ,CAAC,MAAD,C;;mEAEFA,QAAQ,CAAC,YAAD,C;;4DAEf;AACJG,MAAAA,iBAAiB,EAAE,IADf;AAEJC,MAAAA,MAAM,EAAE;AAFJ,K;;+EAoCmB,UAACD,iBAAD,EAAgC;AACvD,YAAKE,QAAL,CAAc;AACVF,QAAAA,iBAAiB,EAAjBA,iBADU;AAEVC,QAAAA,MAAM,EAAE;AAFE,OAAd;AAIH,K;;gEAEW,UAACE,KAAD,EAA0C;AAAA,kCACnB,MAAKC,KADc,CAC1CC,WAD0C;AAAA,UAC1CA,WAD0C,sCAC5BT,IAD4B;;AAElD,YAAKM,QAAL,CACI;AACID,QAAAA,MAAM,EAAE;AADZ,OADJ,EAII;AAAA,eAAMI,WAAW,CAACF,KAAD,CAAjB;AAAA,OAJJ;AAMH,K;;kEAEa,YAAM;AAChB;AACA,UAAMG,YAAY,GAAGC,QAAQ,CAACC,cAAT,CAAwB,MAAKC,YAA7B,CAArB;;AACA,UAAIH,YAAJ,EAAkB;AACdA,QAAAA,YAAY,CAACI,KAAb;AACH;AACJ,K;;wEAEmB,UAACP,KAAD,EAA6B;AAAA,UACrCF,MADqC,GAC1B,MAAKU,KADqB,CACrCV,MADqC;AAG7CE,MAAAA,KAAK,CAACS,eAAN;AACAT,MAAAA,KAAK,CAACU,cAAN;;AAEA,UAAIZ,MAAJ,EAAY;AACR,cAAKa,SAAL,CAAeX,KAAf;AACH,OAFD,MAEO;AACH,cAAKY,wBAAL,CAA8B,IAA9B;AACH;AACJ,K;;0EAEqB,UAACZ,KAAD,EAAqC;AAAA,UAC/CF,MAD+C,GACpC,MAAKU,KAD+B,CAC/CV,MAD+C;;AAGvD,cAAQE,KAAK,CAACa,GAAd;AACI,aAAKlB,IAAI,CAACmB,KAAV;AACA,aAAKnB,IAAI,CAACoB,KAAV;AACA,aAAKpB,IAAI,CAACqB,SAAV;AACIhB,UAAAA,KAAK,CAACS,eAAN;AACAT,UAAAA,KAAK,CAACU,cAAN;;AAEA,gBAAKE,wBAAL,CAA8B,CAA9B;;AACA;;AAEJ,aAAKjB,IAAI,CAACsB,OAAV;AACIjB,UAAAA,KAAK,CAACS,eAAN;AACAT,UAAAA,KAAK,CAACU,cAAN;;AAEA,gBAAKE,wBAAL,CAA8B,CAAC,CAA/B;;AACA;;AAEJ,aAAKjB,IAAI,CAACuB,MAAV;AACI,cAAIpB,MAAJ,EAAY;AACRE,YAAAA,KAAK,CAACS,eAAN;AACH;;AAEDT,UAAAA,KAAK,CAACU,cAAN;;AACA,gBAAKC,SAAL,CAAeX,KAAf;;AACA;;AAEJ;AACI;AA3BR;AA6BH,K;;sEAEiB,UAACmB,eAAD,EAA2BnB,KAA3B,EAAoE;AAClF,YAAKW,SAAL,CAAeX,KAAf;;AACA,YAAKoB,WAAL;AACH,K;;0EAEqB,UAACpB,KAAD,EAAuB;AACzC,UAAMqB,MAAM,GAAGjB,QAAQ,CAACC,cAAT,CAAwB,MAAKiB,MAA7B,CAAf;AACA,UAAMnB,YAAY,GAAGC,QAAQ,CAACC,cAAT,CAAwB,MAAKC,YAA7B,CAArB,CAFyC,CAIzC;;AACA,UACIe,MAAM,IACNlB,YADA,IAEAH,KAAK,CAACuB,MAAN,YAAwBC,IAFxB,IAGA,CAACH,MAAM,CAACI,QAAP,CAAgBzB,KAAK,CAACuB,MAAtB,CAHD,IAIA,CAACpB,YAAY,CAACsB,QAAb,CAAsBzB,KAAK,CAACuB,MAA5B,CALL,EAME;AACE,cAAKZ,SAAL,CAAeX,KAAf;AACH;AACJ,K;;;;;;;uCA1HkB0B,S,EAAkBC,S,EAAkB;AAAA,UAC3CC,SAD2C,GAC7B,KAAK3B,KADwB,CAC3C2B,SAD2C;;AAEnD,UAAI,CAACD,SAAS,CAAC7B,MAAX,IAAqB,KAAKU,KAAL,CAAWV,MAApC,EAA4C;AACxC;AACAM,QAAAA,QAAQ,CAACyB,gBAAT,CAA0B,OAA1B,EAAmC,KAAKC,mBAAxC,EAA6D,CAACF,SAA9D;AACAxB,QAAAA,QAAQ,CAACyB,gBAAT,CAA0B,aAA1B,EAAyC,KAAKC,mBAA9C,EAAmE,CAACF,SAApE;AAHwC,YAKhCG,UALgC,GAKjB,KAAK9B,KALY,CAKhC8B,UALgC;;AAMxC,YAAIA,UAAJ,EAAgB;AACZA,UAAAA,UAAU;AACb;AACJ,OATD,MASO,IAAIJ,SAAS,CAAC7B,MAAV,IAAoB,CAAC,KAAKU,KAAL,CAAWV,MAApC,EAA4C;AAC/C;AACAM,QAAAA,QAAQ,CAAC4B,mBAAT,CAA6B,aAA7B,EAA4C,KAAKF,mBAAjD,EAAsE,CAACF,SAAvE;AACAxB,QAAAA,QAAQ,CAAC4B,mBAAT,CAA6B,OAA7B,EAAsC,KAAKF,mBAA3C,EAAgE,CAACF,SAAjE;AACH;AACJ;;;2CAEsB;AAAA,UACXA,SADW,GACG,KAAK3B,KADR,CACX2B,SADW;;AAEnB,UAAI,KAAKpB,KAAL,CAAWV,MAAf,EAAuB;AACnB;AACAM,QAAAA,QAAQ,CAAC4B,mBAAT,CAA6B,aAA7B,EAA4C,KAAKF,mBAAjD,EAAsE,CAACF,SAAvE;AACAxB,QAAAA,QAAQ,CAAC4B,mBAAT,CAA6B,OAA7B,EAAsC,KAAKF,mBAA3C,EAAgE,CAACF,SAAjE;AACH;AACJ;;;6BAmGQ;AAAA,wBASD,KAAK3B,KATJ;AAAA,UAEDgC,WAFC,eAEDA,WAFC;AAAA,UAGDC,QAHC,eAGDA,QAHC;AAAA,UAIDC,SAJC,eAIDA,SAJC;AAAA,UAKDC,uBALC,eAKDA,uBALC;AAAA,UAMDC,iBANC,eAMDA,iBANC;AAAA,UAODC,YAPC,eAODA,YAPC;AAAA,UAQDC,cARC,eAQDA,cARC;AAAA,wBAWiC,KAAK/B,KAXtC;AAAA,UAWGV,MAXH,eAWGA,MAXH;AAAA,UAWWD,iBAXX,eAWWA,iBAXX;AAaL,UAAM2C,QAAQ,GAAGlD,KAAK,CAACmD,QAAN,CAAeC,OAAf,CAAuBR,QAAvB,CAAjB;;AAEA,UAAIM,QAAQ,CAACG,MAAT,KAAoB,CAAxB,EAA2B;AACvB,cAAM,IAAIC,KAAJ,CAAU,8EAAV,CAAN;AACH;;AAED,UAAMC,UAAU,GAAGL,QAAQ,CAAC,CAAD,CAA3B;AACA,UAAMM,IAAI,GAAGN,QAAQ,CAAC,CAAD,CAArB;AAEA,UAAMO,eAAuB,GAAG;AAC5BC,QAAAA,EAAE,EAAE,KAAK1C,YADmB;AAE5BO,QAAAA,GAAG,EAAE,KAAKP,YAFkB;AAG5B2C,QAAAA,OAAO,EAAE,KAAKC,iBAHc;AAGK;AACjCC,QAAAA,SAAS,EAAE,KAAKC,mBAJY;AAIS;AACrC,yBAAiBtD,MAAM,GAAG,MAAH,GAAY;AALP,OAAhC;;AAQA,UAAI+C,UAAU,CAAC5C,KAAX,CAAiB,eAAjB,MAAsCoD,SAA1C,EAAqD;AACjDN,QAAAA,eAAe,CAAC,eAAD,CAAf,GAAmC,MAAnC;AACH,OAhCI,CAkCL;;;AACA,UAAIjD,MAAJ,EAAY;AACRiD,QAAAA,eAAe,CAAC,eAAD,CAAf,GAAmC,KAAKzB,MAAxC;AACH;;AAED,UAAMgC,SAAS,GAAG;AACdN,QAAAA,EAAE,EAAE,KAAK1B,MADK;AAEdT,QAAAA,GAAG,EAAE,KAAKS,MAFI;AAGdzB,QAAAA,iBAAiB,EAAjBA,iBAHc;AAId0D,QAAAA,OAAO,EAAE,KAAKC,eAJA;AAKd,2BAAmB,KAAKlD;AALV,OAAlB;AAQA,UAAImD,UAAU,GAAG,UAAjB;AACA,UAAIC,gBAAgB,GAAG,aAAvB;;AAEA,UAAInB,cAAJ,EAAoB;AAChBkB,QAAAA,UAAU,GAAG,WAAb;AACAC,QAAAA,gBAAgB,GAAG,cAAnB;AACH;;AAED,UAAMC,WAAW,GAAG,EAApB;;AAEA,UAAIvB,uBAAJ,EAA6B;AACzBuB,QAAAA,WAAW,CAACC,IAAZ,CAAiB;AACbC,UAAAA,EAAE,EAAE,cADS;AAEbJ,UAAAA,UAAU,EAAE;AAFC,SAAjB;AAIH;;AAED,UAAIpB,iBAAJ,EAAuB;AACnBsB,QAAAA,WAAW,CAACC,IAAZ,CAAiB;AACbC,UAAAA,EAAE,EAAE,QADS;AAEbJ,UAAAA,UAAU,EAAE;AAFC,SAAjB;AAIH;;AAED,UAAMK,MAAM,GAAG7B,WAAW,YAAY8B,WAAvB,GAAqC9B,WAArC,GAAmD7B,QAAQ,CAAC4D,IAA3E;AAEA,aACI,oBAAC,eAAD;AACI,QAAA,UAAU,EAAEP,UADhB;AAEI,QAAA,WAAW,EAAEK,MAFjB;AAGI,QAAA,SAAS,EAAEtE,UAAU,CAAC;AAAE,0CAAgC8C;AAAlC,SAAD,EAAmDH,SAAnD,CAHzB;AAII,QAAA,WAAW,EAAC,eAJhB;AAKI,QAAA,WAAW,EAAEwB,WALjB;AAMI,QAAA,OAAO,EAAE7D,MANb;AAOI,QAAA,gBAAgB,EAAE4D;AAPtB,SASKpE,KAAK,CAAC2E,YAAN,CAAmBpB,UAAnB,EAA+BE,eAA/B,CATL,EAUKjD,MAAM,IAAIR,KAAK,CAAC2E,YAAN,CAAmBnB,IAAnB,EAAyBQ,SAAzB,CAVf,CADJ;AAcH;;;;EApOsBhE,KAAK,CAAC4E,S;;gBAA3BtE,Y,kBACoB;AAClBwC,EAAAA,uBAAuB,EAAE,KADP;AAElBC,EAAAA,iBAAiB,EAAE,KAFD;AAGlBC,EAAAA,YAAY,EAAE,KAHI;AAIlBC,EAAAA,cAAc,EAAE;AAJE,C;;AAsO1B,eAAe3C,YAAf","sourcesContent":["// @flow\nimport * as React from 'react';\nimport TetherComponent from 'react-tether';\nimport classNames from 'classnames';\nimport noop from 'lodash/noop';\nimport uniqueId from 'lodash/uniqueId';\n\nimport { KEYS } from '../../constants';\nimport './DropdownMenu.scss';\n\ntype Props = {\n bodyElement?: HTMLElement,\n children: React.Node,\n /** Forces menu to render within the scroll parent */\n className?: string,\n /** Forces menu to render within the visible window */\n constrainToScrollParent: boolean,\n /** Right aligns menu to button */\n constrainToWindow: boolean,\n /** Enables responsive behaviors for this component */\n isResponsive?: boolean,\n /** Function called when menu is opened */\n isRightAligned: boolean,\n /** Handler for dropdown menu close events */\n onMenuClose?: (event: SyntheticEvent<> | MouseEvent) => void,\n /** Handler for dropdown menu open events */\n onMenuOpen?: () => void,\n /** Set true to close dropdown menu on event bubble instead of event capture */\n useBubble?: boolean,\n};\n\ntype State = {\n initialFocusIndex: ?number,\n isOpen: boolean,\n};\n\nclass DropdownMenu extends React.Component<Props, State> {\n static defaultProps = {\n constrainToScrollParent: false,\n constrainToWindow: false,\n isResponsive: false,\n isRightAligned: false,\n };\n\n menuID = uniqueId('menu');\n\n menuButtonID = uniqueId('menubutton');\n\n state = {\n initialFocusIndex: null,\n isOpen: false,\n };\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n const { useBubble } = this.props;\n if (!prevState.isOpen && this.state.isOpen) {\n // When menu is being opened\n document.addEventListener('click', this.handleDocumentClick, !useBubble);\n document.addEventListener('contextmenu', this.handleDocumentClick, !useBubble);\n\n const { onMenuOpen } = this.props;\n if (onMenuOpen) {\n onMenuOpen();\n }\n } else if (prevState.isOpen && !this.state.isOpen) {\n // When menu is being closed\n document.removeEventListener('contextmenu', this.handleDocumentClick, !useBubble);\n document.removeEventListener('click', this.handleDocumentClick, !useBubble);\n }\n }\n\n componentWillUnmount() {\n const { useBubble } = this.props;\n if (this.state.isOpen) {\n // Clean-up global click handlers\n document.removeEventListener('contextmenu', this.handleDocumentClick, !useBubble);\n document.removeEventListener('click', this.handleDocumentClick, !useBubble);\n }\n }\n\n menuID: string;\n\n menuButtonID: string;\n\n openMenuAndSetFocusIndex = (initialFocusIndex: ?number) => {\n this.setState({\n initialFocusIndex,\n isOpen: true,\n });\n };\n\n closeMenu = (event: SyntheticEvent<> | MouseEvent) => {\n const { onMenuClose = noop } = this.props;\n this.setState(\n {\n isOpen: false,\n },\n () => onMenuClose(event),\n );\n };\n\n focusButton = () => {\n // @NOTE: This breaks encapsulation a bit, but the only other way is passing ref functions to unknown children components\n const menuButtonEl = document.getElementById(this.menuButtonID);\n if (menuButtonEl) {\n menuButtonEl.focus();\n }\n };\n\n handleButtonClick = (event: SyntheticEvent<>) => {\n const { isOpen } = this.state;\n\n event.stopPropagation();\n event.preventDefault();\n\n if (isOpen) {\n this.closeMenu(event);\n } else {\n this.openMenuAndSetFocusIndex(null);\n }\n };\n\n handleButtonKeyDown = (event: SyntheticKeyboardEvent<>) => {\n const { isOpen } = this.state;\n\n switch (event.key) {\n case KEYS.space:\n case KEYS.enter:\n case KEYS.arrowDown:\n event.stopPropagation();\n event.preventDefault();\n\n this.openMenuAndSetFocusIndex(0);\n break;\n\n case KEYS.arrowUp:\n event.stopPropagation();\n event.preventDefault();\n\n this.openMenuAndSetFocusIndex(-1);\n break;\n\n case KEYS.escape:\n if (isOpen) {\n event.stopPropagation();\n }\n\n event.preventDefault();\n this.closeMenu(event);\n break;\n\n default:\n break;\n }\n };\n\n handleMenuClose = (isKeyboardEvent: boolean, event: SyntheticEvent<> | MouseEvent) => {\n this.closeMenu(event);\n this.focusButton();\n };\n\n handleDocumentClick = (event: MouseEvent) => {\n const menuEl = document.getElementById(this.menuID);\n const menuButtonEl = document.getElementById(this.menuButtonID);\n\n // Some DOM magic to get global click handlers to close menu when not interacting with menu or associated button\n if (\n menuEl &&\n menuButtonEl &&\n event.target instanceof Node &&\n !menuEl.contains(event.target) &&\n !menuButtonEl.contains(event.target)\n ) {\n this.closeMenu(event);\n }\n };\n\n render() {\n const {\n bodyElement,\n children,\n className,\n constrainToScrollParent,\n constrainToWindow,\n isResponsive,\n isRightAligned,\n } = this.props;\n\n const { isOpen, initialFocusIndex } = this.state;\n\n const elements = React.Children.toArray(children);\n\n if (elements.length !== 2) {\n throw new Error('DropdownMenu must have exactly two children: A button component and a <Menu>');\n }\n\n const menuButton = elements[0];\n const menu = elements[1];\n\n const menuButtonProps: Object = {\n id: this.menuButtonID,\n key: this.menuButtonID,\n onClick: this.handleButtonClick, // NOTE: Overrides button's handler\n onKeyDown: this.handleButtonKeyDown, // NOTE: Overrides button's handler\n 'aria-expanded': isOpen ? 'true' : 'false',\n };\n\n if (menuButton.props['aria-haspopup'] === undefined) {\n menuButtonProps['aria-haspopup'] = 'true';\n }\n\n // Add this only when its open, otherwise the menuID element isn't rendered\n if (isOpen) {\n menuButtonProps['aria-controls'] = this.menuID;\n }\n\n const menuProps = {\n id: this.menuID,\n key: this.menuID,\n initialFocusIndex,\n onClose: this.handleMenuClose,\n 'aria-labelledby': this.menuButtonID,\n };\n\n let attachment = 'top left';\n let targetAttachment = 'bottom left';\n\n if (isRightAligned) {\n attachment = 'top right';\n targetAttachment = 'bottom right';\n }\n\n const constraints = [];\n\n if (constrainToScrollParent) {\n constraints.push({\n to: 'scrollParent',\n attachment: 'together',\n });\n }\n\n if (constrainToWindow) {\n constraints.push({\n to: 'window',\n attachment: 'together',\n });\n }\n\n const bodyEl = bodyElement instanceof HTMLElement ? bodyElement : document.body;\n\n return (\n <TetherComponent\n attachment={attachment}\n bodyElement={bodyEl}\n className={classNames({ 'bdl-DropdownMenu--responsive': isResponsive }, className)}\n classPrefix=\"dropdown-menu\"\n constraints={constraints}\n enabled={isOpen}\n targetAttachment={targetAttachment}\n >\n {React.cloneElement(menuButton, menuButtonProps)}\n {isOpen && React.cloneElement(menu, menuProps)}\n </TetherComponent>\n );\n }\n}\n\nexport default DropdownMenu;\n"],"file":"DropdownMenu.js"}
1
+ {"version":3,"sources":["../../../src/components/dropdown-menu/DropdownMenu.js"],"names":["React","TetherComponent","classNames","noop","uniqueId","KEYS","DropdownMenu","initialFocusIndex","isOpen","setState","event","props","onMenuClose","menuButtonEl","document","getElementById","menuButtonID","focus","state","stopPropagation","preventDefault","closeMenu","openMenuAndSetFocusIndex","key","space","enter","arrowDown","arrowUp","escape","isKeyboardEvent","focusButton","menuEl","menuID","target","Node","contains","prevProps","prevState","useBubble","addEventListener","handleDocumentClick","onMenuOpen","removeEventListener","bodyElement","children","className","constrainToScrollParent","constrainToWindow","constrainToWindowWithPin","isResponsive","isRightAligned","elements","Children","toArray","length","Error","menuButton","menu","menuButtonProps","id","onClick","handleButtonClick","onKeyDown","handleButtonKeyDown","undefined","menuProps","onClose","handleMenuClose","attachment","targetAttachment","constraints","push","to","pin","bodyEl","HTMLElement","body","cloneElement","Component"],"mappings":"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","sourcesContent":["// @flow\nimport * as React from 'react';\nimport TetherComponent from 'react-tether';\nimport classNames from 'classnames';\nimport noop from 'lodash/noop';\nimport uniqueId from 'lodash/uniqueId';\n\nimport { KEYS } from '../../constants';\nimport './DropdownMenu.scss';\n\ntype Props = {\n bodyElement?: HTMLElement,\n children: React.Node,\n /** Forces menu to render within the scroll parent */\n className?: string,\n /** Forces menu to render within the visible window */\n constrainToScrollParent: boolean,\n /** Right aligns menu to button */\n constrainToWindow: boolean,\n /** Forces menu to render within the visible window and pins the dropdown if scrolled */\n constrainToWindowWithPin?: boolean,\n /** Enables responsive behaviors for this component */\n isResponsive?: boolean,\n /** Function called when menu is opened */\n isRightAligned: boolean,\n /** Handler for dropdown menu close events */\n onMenuClose?: (event: SyntheticEvent<> | MouseEvent) => void,\n /** Handler for dropdown menu open events */\n onMenuOpen?: () => void,\n /** Set true to close dropdown menu on event bubble instead of event capture */\n useBubble?: boolean,\n};\n\ntype State = {\n initialFocusIndex: ?number,\n isOpen: boolean,\n};\n\nclass DropdownMenu extends React.Component<Props, State> {\n static defaultProps = {\n constrainToScrollParent: false,\n constrainToWindow: false,\n isResponsive: false,\n isRightAligned: false,\n };\n\n menuID = uniqueId('menu');\n\n menuButtonID = uniqueId('menubutton');\n\n state = {\n initialFocusIndex: null,\n isOpen: false,\n };\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n const { useBubble } = this.props;\n if (!prevState.isOpen && this.state.isOpen) {\n // When menu is being opened\n document.addEventListener('click', this.handleDocumentClick, !useBubble);\n document.addEventListener('contextmenu', this.handleDocumentClick, !useBubble);\n\n const { onMenuOpen } = this.props;\n if (onMenuOpen) {\n onMenuOpen();\n }\n } else if (prevState.isOpen && !this.state.isOpen) {\n // When menu is being closed\n document.removeEventListener('contextmenu', this.handleDocumentClick, !useBubble);\n document.removeEventListener('click', this.handleDocumentClick, !useBubble);\n }\n }\n\n componentWillUnmount() {\n const { useBubble } = this.props;\n if (this.state.isOpen) {\n // Clean-up global click handlers\n document.removeEventListener('contextmenu', this.handleDocumentClick, !useBubble);\n document.removeEventListener('click', this.handleDocumentClick, !useBubble);\n }\n }\n\n menuID: string;\n\n menuButtonID: string;\n\n openMenuAndSetFocusIndex = (initialFocusIndex: ?number) => {\n this.setState({\n initialFocusIndex,\n isOpen: true,\n });\n };\n\n closeMenu = (event: SyntheticEvent<> | MouseEvent) => {\n const { onMenuClose = noop } = this.props;\n this.setState(\n {\n isOpen: false,\n },\n () => onMenuClose(event),\n );\n };\n\n focusButton = () => {\n // @NOTE: This breaks encapsulation a bit, but the only other way is passing ref functions to unknown children components\n const menuButtonEl = document.getElementById(this.menuButtonID);\n if (menuButtonEl) {\n menuButtonEl.focus();\n }\n };\n\n handleButtonClick = (event: SyntheticEvent<>) => {\n const { isOpen } = this.state;\n\n event.stopPropagation();\n event.preventDefault();\n\n if (isOpen) {\n this.closeMenu(event);\n } else {\n this.openMenuAndSetFocusIndex(null);\n }\n };\n\n handleButtonKeyDown = (event: SyntheticKeyboardEvent<>) => {\n const { isOpen } = this.state;\n\n switch (event.key) {\n case KEYS.space:\n case KEYS.enter:\n case KEYS.arrowDown:\n event.stopPropagation();\n event.preventDefault();\n\n this.openMenuAndSetFocusIndex(0);\n break;\n\n case KEYS.arrowUp:\n event.stopPropagation();\n event.preventDefault();\n\n this.openMenuAndSetFocusIndex(-1);\n break;\n\n case KEYS.escape:\n if (isOpen) {\n event.stopPropagation();\n }\n\n event.preventDefault();\n this.closeMenu(event);\n break;\n\n default:\n break;\n }\n };\n\n handleMenuClose = (isKeyboardEvent: boolean, event: SyntheticEvent<> | MouseEvent) => {\n this.closeMenu(event);\n this.focusButton();\n };\n\n handleDocumentClick = (event: MouseEvent) => {\n const menuEl = document.getElementById(this.menuID);\n const menuButtonEl = document.getElementById(this.menuButtonID);\n\n // Some DOM magic to get global click handlers to close menu when not interacting with menu or associated button\n if (\n menuEl &&\n menuButtonEl &&\n event.target instanceof Node &&\n !menuEl.contains(event.target) &&\n !menuButtonEl.contains(event.target)\n ) {\n this.closeMenu(event);\n }\n };\n\n render() {\n const {\n bodyElement,\n children,\n className,\n constrainToScrollParent,\n constrainToWindow,\n constrainToWindowWithPin,\n isResponsive,\n isRightAligned,\n } = this.props;\n\n const { isOpen, initialFocusIndex } = this.state;\n\n const elements = React.Children.toArray(children);\n\n if (elements.length !== 2) {\n throw new Error('DropdownMenu must have exactly two children: A button component and a <Menu>');\n }\n\n const menuButton = elements[0];\n const menu = elements[1];\n\n const menuButtonProps: Object = {\n id: this.menuButtonID,\n key: this.menuButtonID,\n onClick: this.handleButtonClick, // NOTE: Overrides button's handler\n onKeyDown: this.handleButtonKeyDown, // NOTE: Overrides button's handler\n 'aria-expanded': isOpen ? 'true' : 'false',\n };\n\n if (menuButton.props['aria-haspopup'] === undefined) {\n menuButtonProps['aria-haspopup'] = 'true';\n }\n\n // Add this only when its open, otherwise the menuID element isn't rendered\n if (isOpen) {\n menuButtonProps['aria-controls'] = this.menuID;\n }\n\n const menuProps = {\n id: this.menuID,\n key: this.menuID,\n initialFocusIndex,\n onClose: this.handleMenuClose,\n 'aria-labelledby': this.menuButtonID,\n };\n\n let attachment = 'top left';\n let targetAttachment = 'bottom left';\n\n if (isRightAligned) {\n attachment = 'top right';\n targetAttachment = 'bottom right';\n }\n\n const constraints = [];\n\n if (constrainToScrollParent) {\n constraints.push({\n to: 'scrollParent',\n attachment: 'together',\n });\n }\n\n if (constrainToWindow) {\n constraints.push({\n to: 'window',\n attachment: 'together',\n });\n }\n\n if (constrainToWindowWithPin) {\n constraints.push({\n to: 'window',\n attachment: 'together',\n pin: true,\n });\n }\n\n const bodyEl = bodyElement instanceof HTMLElement ? bodyElement : document.body;\n\n return (\n <TetherComponent\n attachment={attachment}\n bodyElement={bodyEl}\n className={classNames({ 'bdl-DropdownMenu--responsive': isResponsive }, className)}\n classPrefix=\"dropdown-menu\"\n constraints={constraints}\n enabled={isOpen}\n targetAttachment={targetAttachment}\n >\n {React.cloneElement(menuButton, menuButtonProps)}\n {isOpen && React.cloneElement(menu, menuProps)}\n </TetherComponent>\n );\n }\n}\n\nexport default DropdownMenu;\n"],"file":"DropdownMenu.js"}
@@ -28,15 +28,15 @@
28
28
  bottom: 0;
29
29
  left: 0;
30
30
  margin-top: 0;
31
+ margin-bottom: $bdl-header-height;
31
32
  // cancels out the tether inline styling without having to set enabled=false
32
33
  transform: none !important;
33
34
  }
34
35
 
35
36
  .aria-menu:not(.submenu) {
36
- position: relative;
37
37
  height: 100%;
38
- margin: 0;
39
- padding-top: $bdl-header-height + $bdl-grid-unit * 3;
38
+ margin-top: $bdl-header-height;
39
+ overflow: scroll;
40
40
  background-color: $bdl-gray-02;
41
41
  border: none;
42
42
  border-radius: 0;
@@ -47,7 +47,7 @@ function InfiniteScroll(_ref2) {
47
47
  throttle = _ref2$throttle === void 0 ? 64 : _ref2$throttle,
48
48
  _ref2$useWindow = _ref2.useWindow,
49
49
  useWindow = _ref2$useWindow === void 0 ? false : _ref2$useWindow;
50
- var sentinelRef = React.createRef();
50
+ var sentinelRef = React.useRef(null);
51
51
  React.useEffect(function () {
52
52
  var params = {
53
53
  hasMore: hasMore,
@@ -69,8 +69,10 @@ function InfiniteScroll(_ref2) {
69
69
  if (container) {
70
70
  container.addEventListener('scroll', scrollHandler);
71
71
  container.addEventListener('resize', resizeHandler);
72
- }
72
+ } // loads more content until page becomes scrollable, or until there is no more data to fetch
73
+
73
74
 
75
+ onContainerScroll(params);
74
76
  return function removeEventListeners() {
75
77
  if (container) {
76
78
  container.removeEventListener('scroll', scrollHandler);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/infinite-scroll/InfiniteScroll.tsx"],"names":["React","throttleFn","onContainerScroll","hasMore","isLoading","onLoadMore","scrollContainerNode","sentinelRef","threshold","useWindow","current","getBoundingClientRect","sentinelTop","top","window","innerHeight","containerBottom","bottom","InfiniteScroll","children","throttle","createRef","useEffect","params","scrollHandler","resizeHandler","container","addEventListener","removeEventListeners","removeEventListener"],"mappings":"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","sourcesContent":["/**\n * From https://github.com/jaredpalmer/react-simple-infinite-scroll\n * Updated to accept a scroll container React ref as the \"window\"\n */\nimport * as React from 'react';\nimport throttleFn from 'lodash/throttle';\n\nexport interface InfiniteScrollProps {\n /** Components to render, should include entities/loading states/end message */\n children: React.ReactNode;\n /** Does the resource have more entities */\n hasMore: boolean;\n /** Are more entities being loaded */\n isLoading: boolean;\n /** Callback to load more entities */\n onLoadMore: () => void;\n /** React ref of the scroll container.\n * Used to listen to scroll events and calculate onLoadMore calls.\n * Set useWindow to true to use the window as scroll container.\n */\n scrollContainerNode?: HTMLElement;\n /** Scroll threshold */\n threshold?: number;\n /** Throttle rate */\n throttle?: number;\n /** Set useWindow to true to use the window as scroll container. If set to true, will ignore scrollContainerRef. */\n useWindow?: boolean;\n}\n\ntype OnContainerScrollParams = Pick<Required<InfiniteScrollProps>, 'threshold' | 'useWindow'> &\n Pick<InfiniteScrollProps, 'isLoading' | 'hasMore' | 'scrollContainerNode' | 'onLoadMore'> & {\n sentinelRef: React.RefObject<HTMLDivElement>;\n };\n\nfunction onContainerScroll({\n hasMore,\n isLoading,\n onLoadMore,\n scrollContainerNode,\n sentinelRef,\n threshold,\n useWindow,\n}: OnContainerScrollParams) {\n if (isLoading || !hasMore) return;\n\n if (sentinelRef.current === null) return;\n const { top: sentinelTop } = sentinelRef.current.getBoundingClientRect();\n\n if (useWindow) {\n if (sentinelTop - window.innerHeight < threshold) {\n onLoadMore();\n }\n } else {\n if (!scrollContainerNode) return;\n\n const { bottom: containerBottom } = scrollContainerNode.getBoundingClientRect();\n if (sentinelTop - containerBottom < threshold) {\n onLoadMore();\n }\n }\n}\n\nfunction InfiniteScroll({\n children,\n hasMore,\n isLoading,\n onLoadMore,\n scrollContainerNode,\n threshold = 100,\n throttle = 64,\n useWindow = false,\n}: InfiniteScrollProps) {\n const sentinelRef = React.createRef<HTMLDivElement>();\n\n React.useEffect(() => {\n const params = {\n hasMore,\n isLoading,\n onLoadMore,\n scrollContainerNode,\n sentinelRef,\n threshold,\n useWindow,\n };\n\n const scrollHandler = throttleFn(() => onContainerScroll(params), throttle);\n const resizeHandler = throttleFn(() => onContainerScroll(params), throttle);\n\n const container = useWindow ? window : scrollContainerNode;\n\n if (container) {\n container.addEventListener('scroll', scrollHandler);\n container.addEventListener('resize', resizeHandler);\n }\n\n return function removeEventListeners() {\n if (container) {\n container.removeEventListener('scroll', scrollHandler);\n container.removeEventListener('resize', resizeHandler);\n }\n };\n }, [hasMore, isLoading, onLoadMore, scrollContainerNode, sentinelRef, threshold, throttle, useWindow]);\n\n return (\n <div>\n {children}\n <div ref={sentinelRef} data-testid=\"sentinel\" />\n </div>\n );\n}\n\nexport default InfiniteScroll;\n"],"file":"InfiniteScroll.js"}
1
+ {"version":3,"sources":["../../../src/components/infinite-scroll/InfiniteScroll.tsx"],"names":["React","throttleFn","onContainerScroll","hasMore","isLoading","onLoadMore","scrollContainerNode","sentinelRef","threshold","useWindow","current","getBoundingClientRect","sentinelTop","top","window","innerHeight","containerBottom","bottom","InfiniteScroll","children","throttle","useRef","useEffect","params","scrollHandler","resizeHandler","container","addEventListener","removeEventListeners","removeEventListener"],"mappings":"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","sourcesContent":["/**\n * From https://github.com/jaredpalmer/react-simple-infinite-scroll\n * Updated to accept a scroll container React ref as the \"window\"\n */\nimport * as React from 'react';\nimport throttleFn from 'lodash/throttle';\n\nexport interface InfiniteScrollProps {\n /** Components to render, should include entities/loading states/end message */\n children: React.ReactNode;\n /** Does the resource have more entities */\n hasMore: boolean;\n /** Are more entities being loaded */\n isLoading: boolean;\n /** Callback to load more entities */\n onLoadMore: () => void;\n /** React ref of the scroll container.\n * Used to listen to scroll events and calculate onLoadMore calls.\n * Set useWindow to true to use the window as scroll container.\n */\n scrollContainerNode?: HTMLElement;\n /** Scroll threshold */\n threshold?: number;\n /** Throttle rate */\n throttle?: number;\n /** Set useWindow to true to use the window as scroll container. If set to true, will ignore scrollContainerNode. */\n useWindow?: boolean;\n}\n\ntype OnContainerScrollParams = Pick<Required<InfiniteScrollProps>, 'threshold' | 'useWindow'> &\n Pick<InfiniteScrollProps, 'isLoading' | 'hasMore' | 'scrollContainerNode' | 'onLoadMore'> & {\n sentinelRef: React.RefObject<HTMLDivElement>;\n };\n\nfunction onContainerScroll({\n hasMore,\n isLoading,\n onLoadMore,\n scrollContainerNode,\n sentinelRef,\n threshold,\n useWindow,\n}: OnContainerScrollParams) {\n if (isLoading || !hasMore) return;\n\n if (sentinelRef.current === null) return;\n const { top: sentinelTop } = sentinelRef.current.getBoundingClientRect();\n\n if (useWindow) {\n if (sentinelTop - window.innerHeight < threshold) {\n onLoadMore();\n }\n } else {\n if (!scrollContainerNode) return;\n\n const { bottom: containerBottom } = scrollContainerNode.getBoundingClientRect();\n if (sentinelTop - containerBottom < threshold) {\n onLoadMore();\n }\n }\n}\n\nfunction InfiniteScroll({\n children,\n hasMore,\n isLoading,\n onLoadMore,\n scrollContainerNode,\n threshold = 100,\n throttle = 64,\n useWindow = false,\n}: InfiniteScrollProps) {\n const sentinelRef = React.useRef<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n const params = {\n hasMore,\n isLoading,\n onLoadMore,\n scrollContainerNode,\n sentinelRef,\n threshold,\n useWindow,\n };\n\n const scrollHandler = throttleFn(() => onContainerScroll(params), throttle);\n const resizeHandler = throttleFn(() => onContainerScroll(params), throttle);\n\n const container = useWindow ? window : scrollContainerNode;\n\n if (container) {\n container.addEventListener('scroll', scrollHandler);\n container.addEventListener('resize', resizeHandler);\n }\n\n // loads more content until page becomes scrollable, or until there is no more data to fetch\n onContainerScroll(params);\n\n return function removeEventListeners() {\n if (container) {\n container.removeEventListener('scroll', scrollHandler);\n container.removeEventListener('resize', resizeHandler);\n }\n };\n }, [hasMore, isLoading, onLoadMore, scrollContainerNode, sentinelRef, threshold, throttle, useWindow]);\n\n return (\n <div>\n {children}\n <div ref={sentinelRef} data-testid=\"sentinel\" />\n </div>\n );\n}\n\nexport default InfiniteScroll;\n"],"file":"InfiniteScroll.js"}
@@ -163,6 +163,7 @@
163
163
  }
164
164
 
165
165
  .modal-content {
166
+ flex-basis: 100%;
166
167
  margin-top: $responsive-modal-header-height;
167
168
  margin-bottom: $responsive-modal-actions-height;
168
169
  padding: 24px 16px 12px 16px;
@@ -193,11 +194,14 @@
193
194
  padding: 10px 16px;
194
195
  background-color: $white;
195
196
  }
197
+
198
+ .modal-dialog-container {
199
+ overflow: hidden;
200
+ }
196
201
  }
197
202
 
198
203
  .modal-dialog-container {
199
204
  flex-basis: 100%;
200
205
  width: 100%;
201
- overflow: hidden;
202
206
  }
203
207
  }
@@ -163,7 +163,7 @@ function (_React$Component) {
163
163
  return React.createElement("div", {
164
164
  className: "action-buttons"
165
165
  }, onSubmit ? React.createElement("button", {
166
- type: "button",
166
+ type: "submit",
167
167
  className: "action-button search-button",
168
168
  title: formatMessage(messages.searchButtonTitle)
169
169
  }, React.createElement(Search16, null)) : React.createElement("div", {
@@ -165,7 +165,7 @@ class SearchForm extends React.Component<Props, State> {
165
165
  <div className="action-buttons">
166
166
  {onSubmit ? (
167
167
  <button
168
- type="button"
168
+ type="submit"
169
169
  className="action-button search-button"
170
170
  title={formatMessage(messages.searchButtonTitle)}
171
171
  >
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/search-form/SearchForm.js"],"names":["React","defineMessages","injectIntl","classNames","omit","ClearBadge16","Search16","makeLoadable","messages","clearButtonTitle","searchButtonTitle","searchLabel","SearchForm","isEmpty","event","props","onChange","shouldPreventClearEventPropagation","stopPropagation","searchInput","value","setState","target","trim","length","elements","onSubmit","element","getSearchInput","action","className","intl","isLoading","method","name","queryParams","useClearButton","rest","state","inputProps","formatMessage","classes","formClassNames","hiddenInputs","Object","keys","map","param","index","SearchActions","onClearHandler","LoadableSearchActions","onChangeStub","onChangeHandler","onSubmitHandler","setInputRef","Component","undefined"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,cAAT,EAAyBC,UAAzB,QAA2C,YAA3C;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,IAAP,MAAiB,aAAjB;AAEA,OAAOC,YAAP,MAAyB,8BAAzB;AACA,OAAOC,QAAP,MAAqB,0BAArB;AAEA,OAAOC,YAAP,MAAyB,mCAAzB;AAEA,OAAO,mBAAP;AAEA,IAAMC,QAAQ,GAAGP,cAAc,CAAC;AAC5BQ,EAAAA,gBAAgB;AAAA;AAAA;AAAA,GADY;AAM5BC,EAAAA,iBAAiB;AAAA;AAAA;AAAA,GANW;AAW5BC,EAAAA,WAAW;AAAA;AAAA;AAAA;AAXiB,CAAD,CAA/B;;IA+CMC,U;;;;;;;;;;;;;;;;;;4DASM;AACJC,MAAAA,OAAO,EAAE;AADL,K;;qEAgBS,UAACC,KAAD,EAA6B;AAAA,wBACe,MAAKC,KADpB;AAAA,UAClCC,QADkC,eAClCA,QADkC;AAAA,UACxBC,kCADwB,eACxBA,kCADwB;;AAE1C,UAAIA,kCAAJ,EAAwC;AACpCH,QAAAA,KAAK,CAACI,eAAN;AACH;;AAED,UAAI,MAAKC,WAAT,EAAsB;AAClB,cAAKA,WAAL,CAAiBC,KAAjB,GAAyB,EAAzB;AACH;;AACD,YAAKC,QAAL,CAAc;AAAER,QAAAA,OAAO,EAAE;AAAX,OAAd;;AAEA,UAAIG,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAAC,EAAD,CAAR;AACH;AACJ,K;;sEAEiB,gBAAgB;AAAA,UAAbM,MAAa,QAAbA,MAAa;AAAA,UACtBF,KADsB,GACZE,MADY,CACtBF,KADsB;AAAA,UAEtBJ,QAFsB,GAET,MAAKD,KAFI,CAEtBC,QAFsB;;AAG9B,YAAKK,QAAL,CAAc;AAAER,QAAAA,OAAO,EAAE,CAACO,KAAD,IAAU,CAACA,KAAK,CAACG,IAAN,GAAaC;AAAnC,OAAd;;AAEA,UAAIR,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAACI,KAAD,CAAR;AACH;AACJ,K;;sEAEiB,UAAAN,KAAK,EAAI;AAAA,UACfM,KADe,GACLN,KAAK,CAACQ,MAAN,CAAaG,QAAb,CAAsB,CAAtB,CADK,CACfL,KADe;AAAA,UAEfM,QAFe,GAEF,MAAKX,KAFH,CAEfW,QAFe;;AAIvB,UAAIA,QAAJ,EAAc;AACVA,QAAAA,QAAQ,CAACN,KAAD,EAAQN,KAAR,CAAR;AACH;AACJ,K;;kEAEa,UAAAa,OAAO,EAAI;AACrB,YAAKR,WAAL,GAAmBQ,OAAnB;;AAEA,UAAI,MAAKZ,KAAL,CAAWa,cAAf,EAA+B;AAC3B,cAAKb,KAAL,CAAWa,cAAX,CAA0B,MAAKT,WAA/B;AACH;AACJ,K;;;;;;;6BAIQ;AAAA;;AAAA,yBAYD,KAAKJ,KAZJ;AAAA,UAEDc,MAFC,gBAEDA,MAFC;AAAA,UAGDC,SAHC,gBAGDA,SAHC;AAAA,UAIDC,IAJC,gBAIDA,IAJC;AAAA,UAKDC,SALC,gBAKDA,SALC;AAAA,UAMDC,MANC,gBAMDA,MANC;AAAA,UAODC,IAPC,gBAODA,IAPC;AAAA,UAQDC,WARC,gBAQDA,WARC;AAAA,UASDT,QATC,gBASDA,QATC;AAAA,UAUDU,cAVC,gBAUDA,cAVC;AAAA,UAWEC,IAXF;;AAAA,UAaGxB,OAbH,GAae,KAAKyB,KAbpB,CAaGzB,OAbH;AAeL,UAAM0B,UAAU,GAAGnC,IAAI,CAACiC,IAAD,EAAO,CAC1B,gBAD0B,EAE1B,UAF0B,EAG1B,UAH0B,EAI1B,UAJ0B,EAK1B,oCAL0B,CAAP,CAAvB;AAfK,UAuBGG,aAvBH,GAuBqBT,IAvBrB,CAuBGS,aAvBH;AAwBL,UAAMC,OAAO,GAAGtC,UAAU,CAAC2B,SAAD,EAAY,wBAAZ,CAA1B;AACA,UAAMY,cAAc,GAAGvC,UAAU,CAAC,aAAD,EAAgB;AAC7C,oBAAYU,OADiC;AAE7C,4BAAoBuB;AAFyB,OAAhB,CAAjC;AAIA,UAAMO,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAYV,WAAZ,EAAyBW,GAAzB,CAA6B,UAACC,KAAD,EAAQC,KAAR;AAAA,eAC9C;AAAO,UAAA,GAAG,EAAEA,KAAZ;AAAmB,UAAA,IAAI,EAAED,KAAzB;AAAgC,UAAA,IAAI,EAAC,QAArC;AAA8C,UAAA,KAAK,EAAEZ,WAAW,CAACY,KAAD;AAAhE,UAD8C;AAAA,OAA7B,CAArB;;AAIA,UAAME,aAAa,GAAG,SAAhBA,aAAgB;AAAA,eAClB;AAAK,UAAA,SAAS,EAAC;AAAf,WACKvB,QAAQ,GACL;AACI,UAAA,IAAI,EAAC,QADT;AAEI,UAAA,SAAS,EAAC,6BAFd;AAGI,UAAA,KAAK,EAAEc,aAAa,CAAChC,QAAQ,CAACE,iBAAV;AAHxB,WAKI,oBAAC,QAAD,OALJ,CADK,GASL;AAAK,UAAA,SAAS,EAAC;AAAf,WACI,oBAAC,QAAD,OADJ,CAVR,EAeI;AACI,UAAA,SAAS,EAAC,4BADd;AAEI,UAAA,OAAO,EAAE,MAAI,CAACwC,cAFlB;AAGI,UAAA,KAAK,EAAEV,aAAa,CAAChC,QAAQ,CAACC,gBAAV,CAHxB;AAII,UAAA,IAAI,EAAC;AAJT,WAMI,oBAAC,YAAD,OANJ,CAfJ,CADkB;AAAA,OAAtB;;AA2BA,UAAM0C,qBAAqB,GAAG5C,YAAY,CAAC0C,aAAD,CAA1C,CA5DK,CA8DL;;AACA,UAAMG,YAAY,GAAG,SAAfA,YAAe,GAAM,CAAE,CAA7B;;AAEA,aACI;AAAK,QAAA,SAAS,EAAEX;AAAhB,SACI;AACI,QAAA,MAAM,EAAEZ,MADZ;AAEI,QAAA,SAAS,EAAEa,cAFf;AAGI,QAAA,MAAM,EAAET,MAHZ;AAII,QAAA,QAAQ,EAAE,KAAKoB,eAJnB;AAKI,QAAA,QAAQ,EAAE,KAAKC,eALnB;AAMI,QAAA,IAAI,EAAC;AANT,SAQI;AACI,QAAA,GAAG,EAAE,KAAKC,WADd;AAEI,sBAAYf,aAAa,CAAChC,QAAQ,CAACG,WAAV,CAF7B;AAGI,QAAA,YAAY,EAAC,KAHjB;AAII,QAAA,SAAS,EAAC,cAJd;AAKI,QAAA,IAAI,EAAEuB,IALV;AAMI,QAAA,QAAQ,EAAEkB,YANd;AAOI,QAAA,IAAI,EAAC;AAPT,SAQQb,UARR,EARJ,EAkBI,oBAAC,qBAAD;AACI,QAAA,SAAS,EAAEP,SADf;AAEI,QAAA,qBAAqB,EAAE;AACnBF,UAAAA,SAAS,EAAE;AADQ;AAF3B,QAlBJ,EAwBKa,YAxBL,CADJ,CADJ;AA8BH;;;6CAxJ+B5B,K,EAAmB;AAAA,UACvCK,KADuC,GAC7BL,KAD6B,CACvCK,KADuC;;AAG/C,UAAIA,KAAK,IAAI,CAAC,CAACA,KAAK,CAACG,IAAN,EAAf,EAA6B;AACzB,eAAO;AACHV,UAAAA,OAAO,EAAE;AADN,SAAP;AAGH;;AAED,aAAO,IAAP;AACH;;;;EAvBoBb,KAAK,CAACwD,S;;gBAAzB5C,U,kBACoB;AAClBiB,EAAAA,MAAM,EAAE4B,SADU;AAElBxB,EAAAA,MAAM,EAAE,KAFU;AAGlBC,EAAAA,IAAI,EAAE,QAHY;AAIlBC,EAAAA,WAAW,EAAE,EAJK;AAKlBC,EAAAA,cAAc,EAAE;AALE,C;;AAuK1B,eAAelC,UAAU,CAACU,UAAD,CAAzB","sourcesContent":["// @flow\nimport * as React from 'react';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport classNames from 'classnames';\nimport omit from 'lodash/omit';\n\nimport ClearBadge16 from '../../icon/fill/ClearBadge16';\nimport Search16 from '../../icon/fill/Search16';\n\nimport makeLoadable from '../loading-indicator/makeLoadable';\n\nimport './SearchForm.scss';\n\nconst messages = defineMessages({\n clearButtonTitle: {\n defaultMessage: 'Clear',\n description: 'Title for a clear button',\n id: 'boxui.searchForm.clearButtonTitle',\n },\n searchButtonTitle: {\n defaultMessage: 'Search',\n description: 'Title for a search button',\n id: 'boxui.searchForm.searchButtonTitle',\n },\n searchLabel: {\n defaultMessage: 'Search query',\n description: 'Label for a search input',\n id: 'boxui.searchForm.searchLabel',\n },\n});\n\ntype Props = {\n /** Form submit action */\n action?: string,\n className?: string,\n getSearchInput?: Function,\n intl: Object,\n isLoading?: boolean,\n /** The way to send the form data, get or post */\n method?: 'get' | 'post',\n /** Name of the text input */\n name?: string,\n /** On change handler for the search input, debounced by 250ms */\n onChange?: Function,\n /** On submit handler for the search input */\n onSubmit?: Function,\n /** Extra query parameters in addition to the form data */\n queryParams: Object,\n /** Boolean to prevent propogation of search clear action */\n shouldPreventClearEventPropagation?: boolean,\n /** If the clear button is shown when input field is not empty */\n useClearButton?: boolean,\n /** The value of the input if controlled */\n value?: string,\n};\n\ntype State = {\n isEmpty: boolean,\n};\n\nclass SearchForm extends React.Component<Props, State> {\n static defaultProps = {\n action: undefined,\n method: 'get',\n name: 'search',\n queryParams: {},\n useClearButton: false,\n };\n\n state = {\n isEmpty: true,\n };\n\n static getDerivedStateFromProps(props: Props): any {\n const { value } = props;\n\n if (value && !!value.trim()) {\n return {\n isEmpty: true,\n };\n }\n\n return null;\n }\n\n onClearHandler = (event: SyntheticEvent<>) => {\n const { onChange, shouldPreventClearEventPropagation } = this.props;\n if (shouldPreventClearEventPropagation) {\n event.stopPropagation();\n }\n\n if (this.searchInput) {\n this.searchInput.value = '';\n }\n this.setState({ isEmpty: true });\n\n if (onChange) {\n onChange('');\n }\n };\n\n onChangeHandler = ({ target }) => {\n const { value } = target;\n const { onChange } = this.props;\n this.setState({ isEmpty: !value || !value.trim().length });\n\n if (onChange) {\n onChange(value);\n }\n };\n\n onSubmitHandler = event => {\n const { value } = event.target.elements[0];\n const { onSubmit } = this.props;\n\n if (onSubmit) {\n onSubmit(value, event);\n }\n };\n\n setInputRef = element => {\n this.searchInput = element;\n\n if (this.props.getSearchInput) {\n this.props.getSearchInput(this.searchInput);\n }\n };\n\n searchInput: ?HTMLInputElement;\n\n render() {\n const {\n action,\n className,\n intl,\n isLoading,\n method,\n name,\n queryParams,\n onSubmit,\n useClearButton,\n ...rest\n } = this.props;\n const { isEmpty } = this.state;\n\n const inputProps = omit(rest, [\n 'getSearchInput',\n 'onChange',\n 'onSubmit',\n 'required',\n 'shouldPreventClearEventPropagation',\n ]);\n\n const { formatMessage } = intl;\n const classes = classNames(className, 'search-input-container');\n const formClassNames = classNames('search-form', {\n 'is-empty': isEmpty,\n 'use-clear-button': useClearButton,\n });\n const hiddenInputs = Object.keys(queryParams).map((param, index) => (\n <input key={index} name={param} type=\"hidden\" value={queryParams[param]} />\n ));\n\n const SearchActions = () => (\n <div className=\"action-buttons\">\n {onSubmit ? (\n <button\n type=\"button\"\n className=\"action-button search-button\"\n title={formatMessage(messages.searchButtonTitle)}\n >\n <Search16 />\n </button>\n ) : (\n <div className=\"action-button search-button\">\n <Search16 />\n </div>\n )}\n\n <button\n className=\"action-button clear-button\"\n onClick={this.onClearHandler}\n title={formatMessage(messages.clearButtonTitle)}\n type=\"button\"\n >\n <ClearBadge16 />\n </button>\n </div>\n );\n\n const LoadableSearchActions = makeLoadable(SearchActions);\n\n // @NOTE Prevent errors from React about controlled inputs\n const onChangeStub = () => {};\n\n return (\n <div className={classes}>\n <form\n action={action}\n className={formClassNames}\n method={method}\n onChange={this.onChangeHandler}\n onSubmit={this.onSubmitHandler}\n role=\"search\"\n >\n <input\n ref={this.setInputRef}\n aria-label={formatMessage(messages.searchLabel)}\n autoComplete=\"off\"\n className=\"search-input\"\n name={name}\n onChange={onChangeStub}\n type=\"search\"\n {...inputProps}\n />\n <LoadableSearchActions\n isLoading={isLoading}\n loadingIndicatorProps={{\n className: 'search-form-loading-indicator',\n }}\n />\n {hiddenInputs}\n </form>\n </div>\n );\n }\n}\n\nexport default injectIntl(SearchForm);\n"],"file":"SearchForm.js"}
1
+ {"version":3,"sources":["../../../src/components/search-form/SearchForm.js"],"names":["React","defineMessages","injectIntl","classNames","omit","ClearBadge16","Search16","makeLoadable","messages","clearButtonTitle","searchButtonTitle","searchLabel","SearchForm","isEmpty","event","props","onChange","shouldPreventClearEventPropagation","stopPropagation","searchInput","value","setState","target","trim","length","elements","onSubmit","element","getSearchInput","action","className","intl","isLoading","method","name","queryParams","useClearButton","rest","state","inputProps","formatMessage","classes","formClassNames","hiddenInputs","Object","keys","map","param","index","SearchActions","onClearHandler","LoadableSearchActions","onChangeStub","onChangeHandler","onSubmitHandler","setInputRef","Component","undefined"],"mappings":"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","sourcesContent":["// @flow\nimport * as React from 'react';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport classNames from 'classnames';\nimport omit from 'lodash/omit';\n\nimport ClearBadge16 from '../../icon/fill/ClearBadge16';\nimport Search16 from '../../icon/fill/Search16';\n\nimport makeLoadable from '../loading-indicator/makeLoadable';\n\nimport './SearchForm.scss';\n\nconst messages = defineMessages({\n clearButtonTitle: {\n defaultMessage: 'Clear',\n description: 'Title for a clear button',\n id: 'boxui.searchForm.clearButtonTitle',\n },\n searchButtonTitle: {\n defaultMessage: 'Search',\n description: 'Title for a search button',\n id: 'boxui.searchForm.searchButtonTitle',\n },\n searchLabel: {\n defaultMessage: 'Search query',\n description: 'Label for a search input',\n id: 'boxui.searchForm.searchLabel',\n },\n});\n\ntype Props = {\n /** Form submit action */\n action?: string,\n className?: string,\n getSearchInput?: Function,\n intl: Object,\n isLoading?: boolean,\n /** The way to send the form data, get or post */\n method?: 'get' | 'post',\n /** Name of the text input */\n name?: string,\n /** On change handler for the search input, debounced by 250ms */\n onChange?: Function,\n /** On submit handler for the search input */\n onSubmit?: Function,\n /** Extra query parameters in addition to the form data */\n queryParams: Object,\n /** Boolean to prevent propogation of search clear action */\n shouldPreventClearEventPropagation?: boolean,\n /** If the clear button is shown when input field is not empty */\n useClearButton?: boolean,\n /** The value of the input if controlled */\n value?: string,\n};\n\ntype State = {\n isEmpty: boolean,\n};\n\nclass SearchForm extends React.Component<Props, State> {\n static defaultProps = {\n action: undefined,\n method: 'get',\n name: 'search',\n queryParams: {},\n useClearButton: false,\n };\n\n state = {\n isEmpty: true,\n };\n\n static getDerivedStateFromProps(props: Props): any {\n const { value } = props;\n\n if (value && !!value.trim()) {\n return {\n isEmpty: true,\n };\n }\n\n return null;\n }\n\n onClearHandler = (event: SyntheticEvent<>) => {\n const { onChange, shouldPreventClearEventPropagation } = this.props;\n if (shouldPreventClearEventPropagation) {\n event.stopPropagation();\n }\n\n if (this.searchInput) {\n this.searchInput.value = '';\n }\n this.setState({ isEmpty: true });\n\n if (onChange) {\n onChange('');\n }\n };\n\n onChangeHandler = ({ target }) => {\n const { value } = target;\n const { onChange } = this.props;\n this.setState({ isEmpty: !value || !value.trim().length });\n\n if (onChange) {\n onChange(value);\n }\n };\n\n onSubmitHandler = event => {\n const { value } = event.target.elements[0];\n const { onSubmit } = this.props;\n\n if (onSubmit) {\n onSubmit(value, event);\n }\n };\n\n setInputRef = element => {\n this.searchInput = element;\n\n if (this.props.getSearchInput) {\n this.props.getSearchInput(this.searchInput);\n }\n };\n\n searchInput: ?HTMLInputElement;\n\n render() {\n const {\n action,\n className,\n intl,\n isLoading,\n method,\n name,\n queryParams,\n onSubmit,\n useClearButton,\n ...rest\n } = this.props;\n const { isEmpty } = this.state;\n\n const inputProps = omit(rest, [\n 'getSearchInput',\n 'onChange',\n 'onSubmit',\n 'required',\n 'shouldPreventClearEventPropagation',\n ]);\n\n const { formatMessage } = intl;\n const classes = classNames(className, 'search-input-container');\n const formClassNames = classNames('search-form', {\n 'is-empty': isEmpty,\n 'use-clear-button': useClearButton,\n });\n const hiddenInputs = Object.keys(queryParams).map((param, index) => (\n <input key={index} name={param} type=\"hidden\" value={queryParams[param]} />\n ));\n\n const SearchActions = () => (\n <div className=\"action-buttons\">\n {onSubmit ? (\n <button\n type=\"submit\"\n className=\"action-button search-button\"\n title={formatMessage(messages.searchButtonTitle)}\n >\n <Search16 />\n </button>\n ) : (\n <div className=\"action-button search-button\">\n <Search16 />\n </div>\n )}\n\n <button\n className=\"action-button clear-button\"\n onClick={this.onClearHandler}\n title={formatMessage(messages.clearButtonTitle)}\n type=\"button\"\n >\n <ClearBadge16 />\n </button>\n </div>\n );\n\n const LoadableSearchActions = makeLoadable(SearchActions);\n\n // @NOTE Prevent errors from React about controlled inputs\n const onChangeStub = () => {};\n\n return (\n <div className={classes}>\n <form\n action={action}\n className={formClassNames}\n method={method}\n onChange={this.onChangeHandler}\n onSubmit={this.onSubmitHandler}\n role=\"search\"\n >\n <input\n ref={this.setInputRef}\n aria-label={formatMessage(messages.searchLabel)}\n autoComplete=\"off\"\n className=\"search-input\"\n name={name}\n onChange={onChangeStub}\n type=\"search\"\n {...inputProps}\n />\n <LoadableSearchActions\n isLoading={isLoading}\n loadingIndicatorProps={{\n className: 'search-form-loading-indicator',\n }}\n />\n {hiddenInputs}\n </form>\n </div>\n );\n }\n}\n\nexport default injectIntl(SearchForm);\n"],"file":"SearchForm.js"}