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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (987) hide show
  1. package/CONTRIBUTING.md +4 -0
  2. package/README.md +7 -1
  3. package/dist/explorer.css +1 -1
  4. package/dist/explorer.js +19 -19
  5. package/dist/openwith.css +1 -1
  6. package/dist/openwith.js +10 -10
  7. package/dist/picker.css +1 -1
  8. package/dist/picker.js +12 -12
  9. package/dist/preview.css +1 -1
  10. package/dist/preview.js +17 -17
  11. package/dist/sharing.css +1 -1
  12. package/dist/sharing.js +16 -55
  13. package/dist/sidebar.css +1 -1
  14. package/dist/sidebar.js +17 -17
  15. package/dist/uploader.css +1 -1
  16. package/dist/uploader.js +12 -12
  17. package/es/api/Feed.js +85 -38
  18. package/es/api/Feed.js.flow +46 -1
  19. package/es/api/Feed.js.map +1 -1
  20. package/es/api/Item.js +16 -10
  21. package/es/api/Item.js.flow +7 -4
  22. package/es/api/Item.js.map +1 -1
  23. package/es/api/ThreadedComments.js +58 -23
  24. package/es/api/ThreadedComments.js.flow +40 -0
  25. package/es/api/ThreadedComments.js.map +1 -1
  26. package/es/common/types/feed.js +1 -1
  27. package/es/common/types/feed.js.flow +34 -0
  28. package/es/common/types/feed.js.map +1 -1
  29. package/es/components/avatar/Avatar.js +22 -5
  30. package/es/components/avatar/Avatar.js.flow +24 -7
  31. package/es/components/avatar/Avatar.js.map +1 -1
  32. package/es/components/avatar/Avatar.scss +42 -0
  33. package/es/components/avatar/Avatar.stories.js +58 -0
  34. package/es/components/avatar/Avatar.stories.js.map +1 -1
  35. package/es/components/avatar/messages.js +9 -0
  36. package/es/components/avatar/messages.js.map +1 -0
  37. package/es/components/badgeable/Badgeable.scss +1 -1
  38. package/es/components/breadcrumb/Breadcrumb.js +1 -1
  39. package/es/components/breadcrumb/Breadcrumb.js.flow +1 -1
  40. package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
  41. package/es/components/button-group/ButtonGroup.scss +2 -2
  42. package/es/components/checkbox/Checkbox.js +5 -1
  43. package/es/components/checkbox/Checkbox.js.flow +7 -0
  44. package/es/components/checkbox/Checkbox.js.map +1 -1
  45. package/es/components/checkbox/Checkbox.scss +2 -2
  46. package/es/components/close-button/CloseButton.js +2 -2
  47. package/es/components/close-button/CloseButton.js.flow +2 -2
  48. package/es/components/close-button/CloseButton.js.map +1 -1
  49. package/es/components/contact-datalist-item/ContactDatalistItem.scss +1 -1
  50. package/es/components/date-picker/DatePicker.js +2 -2
  51. package/es/components/date-picker/DatePicker.js.map +1 -1
  52. package/es/components/date-picker/DatePicker.scss +1 -1
  53. package/es/components/draft-js-editor/DraftJSEditor.scss +1 -1
  54. package/es/components/dropdown-menu/DropdownMenu.js +5 -3
  55. package/es/components/dropdown-menu/DropdownMenu.js.flow +8 -2
  56. package/es/components/dropdown-menu/DropdownMenu.js.map +1 -1
  57. package/es/components/dropdown-menu/DropdownMenu.scss +6 -4
  58. package/es/components/error-mask/ErrorMask.scss +1 -1
  59. package/es/components/flyout/Flyout.js +9 -0
  60. package/es/components/flyout/Flyout.js.flow +13 -0
  61. package/es/components/flyout/Flyout.js.map +1 -1
  62. package/es/components/flyout/Flyout.scss +1 -1
  63. package/es/components/flyout/Overlay.js +2 -1
  64. package/es/components/flyout/Overlay.js.flow +2 -1
  65. package/es/components/flyout/Overlay.js.map +1 -1
  66. package/es/components/grid-view/GridView.js +3 -1
  67. package/es/components/grid-view/GridView.js.flow +3 -2
  68. package/es/components/grid-view/GridView.js.map +1 -1
  69. package/es/components/grid-view/GridViewSlider.js +5 -2
  70. package/es/components/grid-view/GridViewSlider.js.flow +5 -2
  71. package/es/components/grid-view/GridViewSlider.js.map +1 -1
  72. package/es/components/grid-view/GridViewSlider.scss +0 -10
  73. package/es/components/inline-error/InlineError.stories.js +12 -0
  74. package/es/components/inline-error/InlineError.stories.js.flow +9 -0
  75. package/es/components/inline-error/InlineError.stories.js.map +1 -0
  76. package/es/components/inline-notice/InlineNotice.stories.js +42 -0
  77. package/es/components/inline-notice/InlineNotice.stories.js.flow +59 -0
  78. package/es/components/inline-notice/InlineNotice.stories.js.map +1 -0
  79. package/es/components/label/InfoIconWithTooltip.js +2 -2
  80. package/es/components/label/InfoIconWithTooltip.js.map +1 -1
  81. package/es/components/label/Label.scss +1 -1
  82. package/es/components/media-query/stories/MediaQuery.stories.js +4 -2
  83. package/es/components/media-query/stories/MediaQuery.stories.js.flow +11 -2
  84. package/es/components/media-query/stories/MediaQuery.stories.js.map +1 -1
  85. package/es/components/media-query/types.js.flow +1 -0
  86. package/es/components/media-query/types.js.map +1 -1
  87. package/es/components/media-query/useMediaQuery.js +3 -1
  88. package/es/components/media-query/useMediaQuery.js.flow +3 -0
  89. package/es/components/media-query/useMediaQuery.js.map +1 -1
  90. package/es/components/menu/MenuHeader.scss +1 -1
  91. package/es/components/menu/SubmenuItem.js +3 -1
  92. package/es/components/menu/SubmenuItem.js.map +1 -1
  93. package/es/components/modal/Modal.scss +15 -0
  94. package/es/components/modal/ModalDialog.js +40 -10
  95. package/es/components/modal/ModalDialog.js.flow +44 -5
  96. package/es/components/modal/ModalDialog.js.map +1 -1
  97. package/es/components/nav-sidebar/NavSidebar.scss +1 -1
  98. package/es/components/nav-sidebar/NavSidebar.stories.js +37 -0
  99. package/es/components/nav-sidebar/NavSidebar.stories.js.flow +54 -0
  100. package/es/components/nav-sidebar/NavSidebar.stories.js.map +1 -0
  101. package/es/components/pill-cloud/PillCloud.stories.js +88 -0
  102. package/es/components/pill-cloud/PillCloud.stories.js.flow +48 -0
  103. package/es/components/pill-cloud/PillCloud.stories.js.map +1 -0
  104. package/es/components/pill-selector-dropdown/PillSelector.js +20 -11
  105. package/es/components/pill-selector-dropdown/PillSelector.js.flow +26 -4
  106. package/es/components/pill-selector-dropdown/PillSelector.js.map +1 -1
  107. package/es/components/pill-selector-dropdown/PillSelector.scss +4 -0
  108. package/es/components/pill-selector-dropdown/PillSelectorDropdown.js +1 -0
  109. package/es/components/pill-selector-dropdown/PillSelectorDropdown.js.flow +1 -0
  110. package/es/components/pill-selector-dropdown/PillSelectorDropdown.js.map +1 -1
  111. package/es/components/pill-selector-dropdown/_mixins.scss +1 -1
  112. package/es/components/popper/PopperComponent.js +3 -1
  113. package/es/components/popper/PopperComponent.js.flow +3 -2
  114. package/es/components/popper/PopperComponent.js.map +1 -1
  115. package/es/components/radio/RadioButton.scss +1 -1
  116. package/es/components/search-form/SearchForm.js +21 -11
  117. package/es/components/search-form/SearchForm.js.flow +30 -6
  118. package/es/components/search-form/SearchForm.js.map +1 -1
  119. package/es/components/select-button/SelectButton.js +6 -2
  120. package/es/components/select-button/SelectButton.js.flow +23 -2
  121. package/es/components/select-button/SelectButton.js.map +1 -1
  122. package/es/components/select-field/BaseSelectField.js +6 -2
  123. package/es/components/select-field/BaseSelectField.js.flow +19 -2
  124. package/es/components/select-field/BaseSelectField.js.map +1 -1
  125. package/es/components/select-field/SelectField.scss +8 -1
  126. package/es/components/selector-dropdown/SelectorDropdown.js +11 -3
  127. package/es/components/selector-dropdown/SelectorDropdown.js.flow +22 -5
  128. package/es/components/selector-dropdown/SelectorDropdown.js.map +1 -1
  129. package/es/components/selector-dropdown/SelectorDropdown.scss +2 -2
  130. package/es/components/table/makeSelectable.js +38 -7
  131. package/es/components/table/makeSelectable.js.flow +33 -6
  132. package/es/components/table/makeSelectable.js.map +1 -1
  133. package/es/components/text-area/TextArea.scss +1 -1
  134. package/es/components/text-input/TextInput.scss +1 -1
  135. package/es/components/text-input-with-copy-button/TextInputWithCopyButton.js +3 -2
  136. package/es/components/text-input-with-copy-button/TextInputWithCopyButton.js.flow +4 -1
  137. package/es/components/text-input-with-copy-button/TextInputWithCopyButton.js.map +1 -1
  138. package/es/components/text-input-with-copy-button/TextInputWithCopyButton.scss +11 -7
  139. package/es/components/thumbnail-card/ThumbnailCard.scss +1 -1
  140. package/es/components/time/ReadableTime.stories.js +46 -0
  141. package/es/components/time/ReadableTime.stories.js.flow +56 -0
  142. package/es/components/time/ReadableTime.stories.js.map +1 -0
  143. package/es/components/toggle/Toggle.js +11 -4
  144. package/es/components/toggle/Toggle.js.flow +16 -5
  145. package/es/components/toggle/Toggle.js.map +1 -1
  146. package/es/components/toggle/Toggle.scss +3 -3
  147. package/es/components/tooltip/CloseButton.js +24 -0
  148. package/es/components/tooltip/CloseButton.js.map +1 -0
  149. package/es/components/tooltip/Tooltip.js +4 -10
  150. package/es/components/tooltip/Tooltip.js.map +1 -1
  151. package/es/constants.js +7 -0
  152. package/es/constants.js.flow +7 -0
  153. package/es/constants.js.map +1 -1
  154. package/es/elements/common/_variables.scss +7 -2
  155. package/es/elements/common/base.scss +14 -0
  156. package/es/elements/common/breadcrumbs/Breadcrumb.scss +1 -1
  157. package/es/elements/common/breadcrumbs/BreadcrumbDropdown.scss +1 -1
  158. package/es/elements/common/breadcrumbs/InlineBreadcrumbs.scss +2 -2
  159. package/es/elements/common/header/Header.js +6 -2
  160. package/es/elements/common/header/Header.js.flow +7 -2
  161. package/es/elements/common/header/Header.js.map +1 -1
  162. package/es/elements/common/header/Logo.js +2 -1
  163. package/es/elements/common/header/Logo.js.flow +5 -1
  164. package/es/elements/common/header/Logo.js.map +1 -1
  165. package/es/elements/common/item/IconCell.js +68 -0
  166. package/es/elements/common/item/IconCell.js.flow +55 -0
  167. package/es/elements/common/item/IconCell.js.map +1 -0
  168. package/es/elements/common/item/ItemDetails.scss +1 -1
  169. package/es/elements/common/item/iconCellRenderer.js +5 -36
  170. package/es/elements/common/item/iconCellRenderer.js.flow +6 -22
  171. package/es/elements/common/item/iconCellRenderer.js.map +1 -1
  172. package/es/elements/common/messages.js +28 -0
  173. package/es/elements/common/messages.js.flow +35 -0
  174. package/es/elements/common/messages.js.map +1 -1
  175. package/es/elements/common/modal.scss +0 -2
  176. package/es/elements/common/share-access-select/ShareAccessSelect.scss +1 -1
  177. package/es/elements/common/sub-header/AddButton.js +4 -1
  178. package/es/elements/common/sub-header/AddButton.js.flow +2 -1
  179. package/es/elements/common/sub-header/AddButton.js.map +1 -1
  180. package/es/elements/common/sub-header/Sort.js +4 -10
  181. package/es/elements/common/sub-header/Sort.js.flow +7 -6
  182. package/es/elements/common/sub-header/Sort.js.map +1 -1
  183. package/es/elements/common/sub-header/SortButton.js +19 -6
  184. package/es/elements/common/sub-header/SortButton.js.flow +23 -10
  185. package/es/elements/common/sub-header/SortButton.js.map +1 -1
  186. package/es/elements/common/sub-header/ViewModeChangeButton.js +3 -3
  187. package/es/elements/common/sub-header/ViewModeChangeButton.js.flow +3 -3
  188. package/es/elements/common/sub-header/ViewModeChangeButton.js.map +1 -1
  189. package/es/elements/content-explorer/Content.js.flow +2 -1
  190. package/es/elements/content-explorer/Content.js.map +1 -1
  191. package/es/elements/content-explorer/ContentExplorer.js +63 -20
  192. package/es/elements/content-explorer/ContentExplorer.js.flow +50 -13
  193. package/es/elements/content-explorer/ContentExplorer.js.map +1 -1
  194. package/es/elements/content-explorer/ItemGrid.js +55 -7
  195. package/es/elements/content-explorer/ItemGrid.js.flow +60 -9
  196. package/es/elements/content-explorer/ItemGrid.js.map +1 -1
  197. package/es/elements/content-explorer/ItemGridThumbnail.js +5 -2
  198. package/es/elements/content-explorer/ItemGridThumbnail.js.flow +5 -2
  199. package/es/elements/content-explorer/ItemGridThumbnail.js.map +1 -1
  200. package/es/elements/content-explorer/ItemList.js +4 -2
  201. package/es/elements/content-explorer/ItemList.js.flow +4 -2
  202. package/es/elements/content-explorer/ItemList.js.map +1 -1
  203. package/es/elements/content-explorer/ItemList.scss +16 -8
  204. package/es/elements/content-explorer/MoreOptions.js +6 -4
  205. package/es/elements/content-explorer/MoreOptions.js.flow +11 -4
  206. package/es/elements/content-explorer/MoreOptions.js.map +1 -1
  207. package/es/elements/content-open-with/ContentOpenWith.scss +1 -1
  208. package/es/elements/content-picker/Footer.js +15 -6
  209. package/es/elements/content-picker/Footer.js.flow +62 -51
  210. package/es/elements/content-picker/Footer.js.map +1 -1
  211. package/es/elements/content-picker/ItemList.scss +1 -1
  212. package/es/elements/content-preview/ContentPreview.js +44 -12
  213. package/es/elements/content-preview/ContentPreview.js.flow +43 -6
  214. package/es/elements/content-preview/ContentPreview.js.map +1 -1
  215. package/es/elements/content-preview/preview-header/PreviewHeader.scss +1 -1
  216. package/es/elements/content-sharing/ContentSharing.js +2 -2
  217. package/es/elements/content-sharing/ContentSharing.js.flow +2 -2
  218. package/es/elements/content-sharing/ContentSharing.js.map +1 -1
  219. package/es/elements/content-sidebar/ActivitySidebar.js +291 -62
  220. package/es/elements/content-sidebar/ActivitySidebar.js.flow +262 -17
  221. package/es/elements/content-sidebar/ActivitySidebar.js.map +1 -1
  222. package/es/elements/content-sidebar/ActivitySidebar.scss +7 -0
  223. package/es/elements/content-sidebar/ActivitySidebarFilter.js +36 -18
  224. package/es/elements/content-sidebar/ActivitySidebarFilter.js.flow +64 -23
  225. package/es/elements/content-sidebar/ActivitySidebarFilter.js.map +1 -1
  226. package/es/elements/content-sidebar/AddTaskMenu.scss +1 -1
  227. package/es/elements/content-sidebar/SidebarContent.js +2 -2
  228. package/es/elements/content-sidebar/SidebarContent.js.flow +1 -1
  229. package/es/elements/content-sidebar/SidebarContent.js.map +1 -1
  230. package/es/elements/content-sidebar/SidebarContent.scss +3 -3
  231. package/es/elements/content-sidebar/SidebarNav.js +3 -17
  232. package/es/elements/content-sidebar/SidebarNav.js.flow +3 -15
  233. package/es/elements/content-sidebar/SidebarNav.js.map +1 -1
  234. package/es/elements/content-sidebar/SidebarNavSign.js +48 -69
  235. package/es/elements/content-sidebar/SidebarNavSign.js.map +1 -1
  236. package/es/elements/content-sidebar/SidebarNavSign.scss +3 -25
  237. package/es/elements/content-sidebar/SidebarNavSignButton.js +79 -0
  238. package/es/elements/content-sidebar/SidebarNavSignButton.js.map +1 -0
  239. package/es/elements/content-sidebar/SidebarNavSignButton.scss +27 -0
  240. package/es/elements/content-sidebar/activity-feed/Avatar.js +4 -2
  241. package/es/elements/content-sidebar/activity-feed/Avatar.js.flow +5 -2
  242. package/es/elements/content-sidebar/activity-feed/Avatar.js.map +1 -1
  243. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +61 -15
  244. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.flow +73 -28
  245. package/es/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js.map +1 -1
  246. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +122 -53
  247. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.flow +80 -13
  248. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js.map +1 -1
  249. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.scss +11 -0
  250. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.js +9 -2
  251. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.js.map +1 -1
  252. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.scss +28 -0
  253. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js +27 -7
  254. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js.flow +48 -29
  255. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js.map +1 -1
  256. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.scss +69 -6
  257. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js +35 -4
  258. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js.flow +42 -5
  259. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js.map +1 -1
  260. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.scss +15 -0
  261. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +21 -8
  262. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.flow +30 -5
  263. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js.map +1 -1
  264. package/es/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.scss +4 -7
  265. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js +45 -15
  266. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js.flow +43 -13
  267. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js.map +1 -1
  268. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.scss +26 -3
  269. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js +29 -48
  270. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js.flow +67 -56
  271. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js.map +1 -1
  272. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.scss +1 -1
  273. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js +14 -53
  274. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js.flow +16 -51
  275. package/es/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js.map +1 -1
  276. package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js +3 -2
  277. package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js.flow +5 -4
  278. package/es/elements/content-sidebar/activity-feed/annotation-thread/errors.js.map +1 -1
  279. package/es/elements/content-sidebar/activity-feed/annotation-thread/types.js +2 -0
  280. package/es/elements/content-sidebar/activity-feed/annotation-thread/types.js.flow +7 -0
  281. package/es/elements/content-sidebar/activity-feed/annotation-thread/types.js.map +1 -0
  282. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js +29 -17
  283. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js.flow +32 -10
  284. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js.map +1 -1
  285. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js +317 -63
  286. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js.flow +249 -55
  287. package/es/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js.map +1 -1
  288. package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js +27 -93
  289. package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js.flow +42 -83
  290. package/es/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js.map +1 -1
  291. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js +15 -6
  292. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js.flow +27 -12
  293. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js.map +1 -1
  294. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.scss +11 -8
  295. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityLink.scss +1 -1
  296. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js +3 -1
  297. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js.flow +3 -1
  298. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js.map +1 -1
  299. package/es/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.scss +5 -0
  300. package/es/elements/content-sidebar/activity-feed/comment/BaseComment.js +385 -0
  301. package/es/elements/content-sidebar/activity-feed/comment/BaseComment.js.flow +456 -0
  302. package/es/elements/content-sidebar/activity-feed/comment/BaseComment.js.map +1 -0
  303. package/es/elements/content-sidebar/activity-feed/comment/BaseComment.scss +30 -0
  304. package/es/elements/content-sidebar/activity-feed/comment/Comment.js +53 -9
  305. package/es/elements/content-sidebar/activity-feed/comment/Comment.js.flow +42 -5
  306. package/es/elements/content-sidebar/activity-feed/comment/Comment.js.map +1 -1
  307. package/es/elements/content-sidebar/activity-feed/comment/Comment.scss +10 -0
  308. package/es/elements/content-sidebar/activity-feed/comment/CreateReply.js +54 -0
  309. package/es/elements/content-sidebar/activity-feed/comment/CreateReply.js.flow +72 -0
  310. package/es/elements/content-sidebar/activity-feed/comment/CreateReply.js.map +1 -0
  311. package/es/elements/content-sidebar/activity-feed/comment/CreateReply.scss +21 -0
  312. package/es/elements/content-sidebar/activity-feed/comment/Replies.scss +41 -0
  313. package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.js +44 -0
  314. package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.js.flow +41 -0
  315. package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.js.map +1 -0
  316. package/es/elements/content-sidebar/activity-feed/comment/RepliesToggle.scss +6 -0
  317. package/es/elements/content-sidebar/activity-feed/comment/messages.js +16 -0
  318. package/es/elements/content-sidebar/activity-feed/comment/messages.js.flow +20 -0
  319. package/es/elements/content-sidebar/activity-feed/comment/messages.js.map +1 -1
  320. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js +1 -1
  321. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.flow +3 -3
  322. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.js.map +1 -1
  323. package/es/elements/content-sidebar/activity-feed/comment-form/CommentForm.scss +1 -1
  324. package/es/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.scss +1 -1
  325. package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js +1 -1
  326. package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js.flow +2 -2
  327. package/es/elements/content-sidebar/activity-feed/common/activity-message/messages.js.map +1 -1
  328. package/es/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.scss +1 -1
  329. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js +1 -0
  330. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.flow +1 -0
  331. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.map +1 -1
  332. package/es/elements/content-sidebar/activity-feed/task-new/AssigneeDetails.scss +1 -1
  333. package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js +7 -8
  334. package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js.flow +11 -7
  335. package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js.map +1 -1
  336. package/es/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.scss +1 -5
  337. package/es/elements/content-sidebar/activity-feed/task-new/Task.js +2 -5
  338. package/es/elements/content-sidebar/activity-feed/task-new/Task.js.flow +1 -2
  339. package/es/elements/content-sidebar/activity-feed/task-new/Task.js.map +1 -1
  340. package/es/elements/content-sidebar/activity-feed/task-new/Task.scss +1 -8
  341. package/es/elements/content-sidebar/messages.js +22 -2
  342. package/es/elements/content-sidebar/messages.js.flow +29 -4
  343. package/es/elements/content-sidebar/messages.js.map +1 -1
  344. package/es/elements/content-sidebar/skills/timeline/Timeline.scss +1 -1
  345. package/es/elements/content-sidebar/skills/transcript/Transcript.scss +1 -1
  346. package/es/elements/content-sidebar/versions/VersionsGroup.scss +1 -1
  347. package/es/elements/content-sidebar/versions/VersionsItem.scss +3 -3
  348. package/es/elements/content-uploader/Footer.js +9 -3
  349. package/es/elements/content-uploader/Footer.js.flow +23 -3
  350. package/es/elements/content-uploader/Footer.js.map +1 -1
  351. package/es/elements/content-uploader/Footer.scss +0 -1
  352. package/es/elements/content-uploader/ItemAction.js +8 -4
  353. package/es/elements/content-uploader/ItemAction.js.flow +6 -3
  354. package/es/elements/content-uploader/ItemAction.js.map +1 -1
  355. package/es/elements/content-uploader/ItemRemove.js +11 -6
  356. package/es/elements/content-uploader/ItemRemove.js.flow +18 -6
  357. package/es/elements/content-uploader/ItemRemove.js.map +1 -1
  358. package/es/elements/content-uploader/UploadInput.js +21 -9
  359. package/es/elements/content-uploader/UploadInput.js.flow +19 -9
  360. package/es/elements/content-uploader/UploadInput.js.map +1 -1
  361. package/es/features/advanced-content-insights/AdvancedContentInsightsToggle.js +44 -0
  362. package/es/features/advanced-content-insights/AdvancedContentInsightsToggle.js.map +1 -0
  363. package/es/features/advanced-content-insights/AdvancedContentInsightsToggle.scss +19 -0
  364. package/es/features/advanced-content-insights/messages.js +17 -0
  365. package/es/features/advanced-content-insights/messages.js.map +1 -0
  366. package/es/features/classification/classificationColorsMap.js +1 -1
  367. package/es/features/classification/classificationColorsMap.js.flow +1 -1
  368. package/es/features/classification/classificationColorsMap.js.map +1 -1
  369. package/es/features/collaborator-avatars/CollaboratorAvatarItem.js +13 -9
  370. package/es/features/collaborator-avatars/CollaboratorAvatarItem.js.flow +11 -8
  371. package/es/features/collaborator-avatars/CollaboratorAvatarItem.js.map +1 -1
  372. package/es/features/collaborator-avatars/CollaboratorAvatars.scss +1 -1
  373. package/es/features/collaborator-avatars/CollaboratorList.js +4 -5
  374. package/es/features/collaborator-avatars/CollaboratorList.js.flow +3 -4
  375. package/es/features/collaborator-avatars/CollaboratorList.js.map +1 -1
  376. package/es/features/collaborator-avatars/CollaboratorListItem.js +7 -9
  377. package/es/features/collaborator-avatars/CollaboratorListItem.js.flow +7 -13
  378. package/es/features/collaborator-avatars/CollaboratorListItem.js.map +1 -1
  379. package/es/features/collaborator-avatars/CollaboratorListItem.scss +7 -3
  380. package/es/features/collapsible-sidebar/CollapsibleSidebar.js +3 -2
  381. package/es/features/collapsible-sidebar/CollapsibleSidebar.js.flow +5 -2
  382. package/es/features/collapsible-sidebar/CollapsibleSidebar.js.map +1 -1
  383. package/es/features/collapsible-sidebar/CollapsibleSidebar.scss +4 -7
  384. package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js +3 -1
  385. package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js.flow +15 -11
  386. package/es/features/collapsible-sidebar/CollapsibleSidebarLogo.js.map +1 -1
  387. package/es/features/content-explorer/content-explorer/ContentExplorer.js +146 -58
  388. package/es/features/content-explorer/content-explorer/ContentExplorer.js.flow +97 -20
  389. package/es/features/content-explorer/content-explorer/ContentExplorer.js.map +1 -1
  390. package/es/features/content-explorer/content-explorer/ContentExplorer.scss +67 -8
  391. package/es/features/content-explorer/content-explorer/ContentExplorerActionButtons.js +58 -11
  392. package/es/features/content-explorer/content-explorer/ContentExplorerActionButtons.js.flow +53 -13
  393. package/es/features/content-explorer/content-explorer/ContentExplorerActionButtons.js.map +1 -1
  394. package/es/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js +68 -0
  395. package/es/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js.flow +82 -0
  396. package/es/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js.map +1 -0
  397. package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js +13 -2
  398. package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js.flow +22 -7
  399. package/es/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js.map +1 -1
  400. package/es/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js +33 -0
  401. package/es/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js.flow +30 -0
  402. package/es/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js.map +1 -0
  403. package/es/features/content-explorer/content-explorer/ContentExplorerSelectAll.js +16 -10
  404. package/es/features/content-explorer/content-explorer/ContentExplorerSelectAll.js.flow +34 -20
  405. package/es/features/content-explorer/content-explorer/ContentExplorerSelectAll.js.map +1 -1
  406. package/es/features/content-explorer/content-explorer/constants.js +7 -0
  407. package/es/features/content-explorer/content-explorer/constants.js.flow +6 -0
  408. package/es/features/content-explorer/content-explorer/constants.js.map +1 -0
  409. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +1 -0
  410. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.flow +13 -0
  411. package/es/features/content-explorer/content-explorer-modal/ContentExplorerModal.js.map +1 -1
  412. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +42 -0
  413. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.flow +31 -0
  414. package/es/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js.map +1 -1
  415. package/es/features/content-explorer/item-list/ItemList.js +20 -5
  416. package/es/features/content-explorer/item-list/ItemList.js.flow +17 -1
  417. package/es/features/content-explorer/item-list/ItemList.js.map +1 -1
  418. package/es/features/content-explorer/item-list/ItemList.scss +1 -1
  419. package/es/features/content-explorer/item-list/ItemListButton.js +4 -1
  420. package/es/features/content-explorer/item-list/ItemListButton.js.flow +10 -2
  421. package/es/features/content-explorer/item-list/ItemListButton.js.map +1 -1
  422. package/es/features/content-explorer/item-list/ItemListIcon.js +12 -45
  423. package/es/features/content-explorer/item-list/ItemListIcon.js.flow +5 -33
  424. package/es/features/content-explorer/item-list/ItemListIcon.js.map +1 -1
  425. package/es/features/content-explorer/item-list/ItemListName.js +2 -2
  426. package/es/features/content-explorer/item-list/ItemListName.js.flow +3 -2
  427. package/es/features/content-explorer/item-list/ItemListName.js.map +1 -1
  428. package/es/features/content-explorer/messages.js +23 -19
  429. package/es/features/content-explorer/messages.js.flow +41 -24
  430. package/es/features/content-explorer/messages.js.map +1 -1
  431. package/es/features/content-explorer/prop-types.js +2 -2
  432. package/es/features/content-explorer/prop-types.js.flow +2 -2
  433. package/es/features/content-explorer/prop-types.js.map +1 -1
  434. package/es/features/content-insights/_mixins.scss +1 -1
  435. package/es/features/content-insights/charts/bar/Bar.js +21 -2
  436. package/es/features/content-insights/charts/bar/Bar.js.map +1 -1
  437. package/es/features/content-insights/charts/bar/BarChart.js +6 -3
  438. package/es/features/content-insights/charts/bar/BarChart.js.map +1 -1
  439. package/es/features/invite-collaborators-modal/InviteCollaboratorsModal.scss +1 -1
  440. package/es/features/message-center/components/templates/common/styles/MessageFooter.scss +1 -1
  441. package/es/features/metadata-based-view/IconWithTooltip.js +4 -4
  442. package/es/features/metadata-based-view/IconWithTooltip.js.flow +4 -4
  443. package/es/features/metadata-based-view/IconWithTooltip.js.map +1 -1
  444. package/es/features/metadata-based-view/MetadataBasedItemList.scss +1 -1
  445. package/es/features/metadata-instance-editor/CascadePolicy.scss +1 -1
  446. package/es/features/metadata-instance-editor/TemplateDropdown.js +9 -21
  447. package/es/features/metadata-instance-editor/TemplateDropdown.js.flow +4 -10
  448. package/es/features/metadata-instance-editor/TemplateDropdown.js.map +1 -1
  449. package/es/features/metadata-instance-editor/TemplateDropdown.scss +2 -2
  450. package/es/features/metadata-instance-fields/EnumMetadataField.scss +2 -2
  451. package/es/features/metadata-instance-fields/MultiSelectMetadataField.scss +1 -1
  452. package/es/features/metadata-instance-fields/ReadOnlyMetadataField.scss +2 -2
  453. package/es/features/presence/PresenceAvatarList.scss +1 -1
  454. package/es/features/presence/PresenceCollaborator.scss +1 -1
  455. package/es/features/query-bar/styles/Condition.scss +2 -2
  456. package/es/features/quick-search/QuickSearchItem.js +4 -3
  457. package/es/features/quick-search/QuickSearchItem.js.flow +4 -3
  458. package/es/features/quick-search/QuickSearchItem.js.map +1 -1
  459. package/es/features/shared-link-settings-modal/ExpirationSection.js +5 -0
  460. package/es/features/shared-link-settings-modal/ExpirationSection.js.flow +4 -0
  461. package/es/features/shared-link-settings-modal/ExpirationSection.js.map +1 -1
  462. package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js +9 -3
  463. package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js.flow +9 -5
  464. package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.js.map +1 -1
  465. package/es/features/shared-link-settings-modal/SharedLinkSettingsModal.scss +3 -3
  466. package/es/features/shared-link-settings-modal/VanityNameSection.js +2 -2
  467. package/es/features/shared-link-settings-modal/VanityNameSection.js.flow +2 -2
  468. package/es/features/shared-link-settings-modal/VanityNameSection.js.map +1 -1
  469. package/es/features/unified-share-modal/InviteePermissionsMenu.js +2 -1
  470. package/es/features/unified-share-modal/InviteePermissionsMenu.js.flow +1 -0
  471. package/es/features/unified-share-modal/InviteePermissionsMenu.js.map +1 -1
  472. package/es/features/unified-share-modal/SharedLinkAccessMenu.js +2 -1
  473. package/es/features/unified-share-modal/SharedLinkAccessMenu.js.flow +1 -0
  474. package/es/features/unified-share-modal/SharedLinkAccessMenu.js.map +1 -1
  475. package/es/features/unified-share-modal/SharedLinkPermissionMenu.js +2 -1
  476. package/es/features/unified-share-modal/SharedLinkPermissionMenu.js.flow +1 -0
  477. package/es/features/unified-share-modal/SharedLinkPermissionMenu.js.map +1 -1
  478. package/es/features/unified-share-modal/SharedLinkSection.js +18 -18
  479. package/es/features/unified-share-modal/SharedLinkSection.js.flow +30 -38
  480. package/es/features/unified-share-modal/SharedLinkSection.js.map +1 -1
  481. package/es/features/unified-share-modal/UnifiedShareForm.js +27 -16
  482. package/es/features/unified-share-modal/UnifiedShareForm.js.flow +38 -25
  483. package/es/features/unified-share-modal/UnifiedShareForm.js.map +1 -1
  484. package/es/features/unified-share-modal/UnifiedShareModal.js +10 -1
  485. package/es/features/unified-share-modal/UnifiedShareModal.js.flow +9 -1
  486. package/es/features/unified-share-modal/UnifiedShareModal.js.map +1 -1
  487. package/es/features/unified-share-modal/UnifiedShareModal.scss +24 -13
  488. package/es/features/unified-share-modal/flowTypes.js.flow +10 -2
  489. package/es/features/unified-share-modal/flowTypes.js.map +1 -1
  490. package/es/features/unified-share-modal/messages.js +12 -4
  491. package/es/features/unified-share-modal/messages.js.flow +17 -5
  492. package/es/features/unified-share-modal/messages.js.map +1 -1
  493. package/es/features/virtualized-table/VirtualizedTable.scss +1 -1
  494. package/es/features/virtualized-table-renderers/_mixins.scss +1 -1
  495. package/es/icons/badges/MetadataDefaultBadge.js +3 -3
  496. package/es/icons/badges/MetadataDefaultBadge.js.flow +3 -3
  497. package/es/icons/badges/MetadataDefaultBadge.js.map +1 -1
  498. package/es/icons/general/IconAnyTask.js +2 -2
  499. package/es/icons/general/IconAnyTask.js.flow +2 -2
  500. package/es/icons/general/IconAnyTask.js.map +1 -1
  501. package/es/icons/general/IconEdit.js +2 -1
  502. package/es/icons/general/IconEdit.js.flow +2 -1
  503. package/es/icons/general/IconEdit.js.map +1 -1
  504. package/es/icons/metadata-view/IconMetadataView.js +2 -1
  505. package/es/icons/metadata-view/IconMetadataView.js.flow +2 -1
  506. package/es/icons/metadata-view/IconMetadataView.js.map +1 -1
  507. package/es/icons/two-toned/IconAnnotation.js +36 -0
  508. package/es/icons/two-toned/IconAnnotation.js.flow +27 -0
  509. package/es/icons/two-toned/IconAnnotation.js.map +1 -0
  510. package/es/icons/two-toned/_IconAnnotation.mixins.scss +9 -0
  511. package/es/src/components/avatar/Avatar.d.ts +18 -2
  512. package/es/src/components/avatar/Avatar.stories.d.ts +7 -2
  513. package/es/src/components/avatar/messages.d.ts +8 -0
  514. package/es/src/components/checkbox/Checkbox.d.ts +4 -1
  515. package/es/src/components/checkbox/Checkbox.stories.d.ts +1 -1
  516. package/es/src/components/tooltip/CloseButton.d.ts +14 -0
  517. package/es/src/components/tooltip/__tests__/CloseButton.test.d.ts +1 -0
  518. package/es/src/elements/content-sidebar/SidebarNavSign.d.ts +2 -24
  519. package/es/src/elements/content-sidebar/SidebarNavSignButton.d.ts +25 -0
  520. package/es/src/elements/content-sidebar/__tests__/SidebarNavSignButton.test.d.ts +1 -0
  521. package/es/src/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.d.ts +3 -0
  522. package/es/src/features/advanced-content-insights/AdvancedContentInsightsToggle.d.ts +10 -0
  523. package/es/src/features/advanced-content-insights/__tests__/AdvancedContentInsightsToggle.test.d.ts +1 -0
  524. package/es/src/features/advanced-content-insights/messages.d.ts +18 -0
  525. package/es/src/features/content-insights/charts/bar/Bar.d.ts +6 -2
  526. package/es/src/features/content-insights/charts/bar/BarChart.d.ts +7 -2
  527. package/es/src/icons/two-toned/IconAnnotation.d.ts +3 -0
  528. package/es/src/icons/two-toned/__tests__/IconAnnotation.test.d.ts +1 -0
  529. package/es/src/styles/typography.stories.d.ts +8 -0
  530. package/es/src/styles/variables.d.ts +1 -1
  531. package/es/styles/_deprecated.scss +1 -0
  532. package/es/styles/_inputs.scss +2 -3
  533. package/es/styles/common/_buttons.scss +2 -2
  534. package/es/styles/common/_forms.scss +2 -0
  535. package/es/styles/common/_links.scss +1 -1
  536. package/es/styles/constants/_colors.scss +1 -1
  537. package/es/styles/constants/_themes.scss +1 -1
  538. package/es/styles/typography.stories.js +55 -0
  539. package/es/styles/typography.stories.js.map +1 -0
  540. package/es/styles/typography.stories.scss +60 -0
  541. package/es/styles/variables.js +2 -2
  542. package/es/styles/variables.js.flow +2 -2
  543. package/es/styles/variables.js.map +1 -1
  544. package/es/utils/createTheme.js +2 -2
  545. package/es/utils/createTheme.js.flow +2 -2
  546. package/es/utils/createTheme.js.map +1 -1
  547. package/i18n/bn-IN.js +46 -22
  548. package/i18n/bn-IN.properties +79 -31
  549. package/i18n/da-DK.js +46 -22
  550. package/i18n/da-DK.properties +79 -31
  551. package/i18n/de-DE.js +45 -21
  552. package/i18n/de-DE.properties +78 -30
  553. package/i18n/en-AU.js +33 -9
  554. package/i18n/en-AU.properties +66 -18
  555. package/i18n/en-CA.js +32 -8
  556. package/i18n/en-CA.properties +65 -17
  557. package/i18n/en-GB.js +33 -9
  558. package/i18n/en-GB.properties +66 -18
  559. package/i18n/en-US.js +32 -8
  560. package/i18n/en-US.properties +65 -17
  561. package/i18n/en-x-pseudo.js +39 -8
  562. package/i18n/es-419.js +46 -22
  563. package/i18n/es-419.properties +79 -31
  564. package/i18n/es-ES.js +46 -22
  565. package/i18n/es-ES.properties +79 -31
  566. package/i18n/fi-FI.js +45 -21
  567. package/i18n/fi-FI.properties +78 -30
  568. package/i18n/fr-CA.js +44 -20
  569. package/i18n/fr-CA.properties +78 -30
  570. package/i18n/fr-FR.js +44 -20
  571. package/i18n/fr-FR.properties +78 -30
  572. package/i18n/hi-IN.js +46 -22
  573. package/i18n/hi-IN.properties +79 -31
  574. package/i18n/it-IT.js +45 -21
  575. package/i18n/it-IT.properties +78 -30
  576. package/i18n/ja-JP.js +55 -31
  577. package/i18n/ja-JP.properties +88 -40
  578. package/i18n/ko-KR.js +44 -20
  579. package/i18n/ko-KR.properties +78 -30
  580. package/i18n/nb-NO.js +45 -21
  581. package/i18n/nb-NO.properties +78 -30
  582. package/i18n/nl-NL.js +46 -22
  583. package/i18n/nl-NL.properties +79 -31
  584. package/i18n/pl-PL.js +45 -21
  585. package/i18n/pl-PL.properties +78 -30
  586. package/i18n/pt-BR.js +45 -21
  587. package/i18n/pt-BR.properties +78 -30
  588. package/i18n/ru-RU.js +45 -21
  589. package/i18n/ru-RU.properties +78 -30
  590. package/i18n/sv-SE.js +46 -22
  591. package/i18n/sv-SE.properties +79 -31
  592. package/i18n/tr-TR.js +45 -21
  593. package/i18n/tr-TR.properties +78 -30
  594. package/i18n/zh-CN.js +45 -21
  595. package/i18n/zh-CN.properties +78 -30
  596. package/i18n/zh-TW.js +45 -21
  597. package/i18n/zh-TW.properties +78 -30
  598. package/package.json +3 -3
  599. package/src/api/Feed.js +46 -1
  600. package/src/api/Item.js +7 -4
  601. package/src/api/ThreadedComments.js +40 -0
  602. package/src/api/__tests__/Feed.test.js +48 -0
  603. package/src/api/__tests__/Item.test.js +14 -0
  604. package/src/api/__tests__/ThreadedComments.test.js +46 -0
  605. package/src/common/types/feed.js +34 -0
  606. package/src/components/avatar/Avatar.js.flow +24 -7
  607. package/src/components/avatar/Avatar.scss +42 -0
  608. package/src/components/avatar/Avatar.stories.tsx +45 -0
  609. package/src/components/avatar/Avatar.tsx +39 -9
  610. package/src/components/avatar/__tests__/Avatar.test.tsx +39 -29
  611. package/src/components/avatar/messages.ts +11 -0
  612. package/src/components/badgeable/Badgeable.scss +1 -1
  613. package/src/components/breadcrumb/Breadcrumb.js +1 -1
  614. package/src/components/breadcrumb/__tests__/Breadcrumb.test.js +1 -1
  615. package/src/components/button-group/ButtonGroup.scss +2 -2
  616. package/src/components/checkbox/Checkbox.js.flow +7 -0
  617. package/src/components/checkbox/Checkbox.scss +2 -2
  618. package/src/components/checkbox/Checkbox.tsx +7 -0
  619. package/src/components/checkbox/__tests__/Checkbox.test.tsx +19 -2
  620. package/src/components/close-button/CloseButton.js.flow +2 -2
  621. package/src/components/close-button/CloseButton.tsx +2 -2
  622. package/src/components/contact-datalist-item/ContactDatalistItem.scss +1 -1
  623. package/src/components/date-picker/DatePicker.scss +1 -1
  624. package/src/components/date-picker/DatePicker.tsx +2 -2
  625. package/src/components/date-picker/__tests__/DatePicker.test.tsx +4 -4
  626. package/src/components/draft-js-editor/DraftJSEditor.scss +1 -1
  627. package/src/components/dropdown-menu/DropdownMenu.js +8 -2
  628. package/src/components/dropdown-menu/DropdownMenu.scss +6 -4
  629. package/src/components/dropdown-menu/__tests__/DropdownMenu.test.js +18 -0
  630. package/src/components/error-mask/ErrorMask.scss +1 -1
  631. package/src/components/flyout/Flyout.js +13 -0
  632. package/src/components/flyout/Flyout.scss +1 -1
  633. package/src/components/flyout/Overlay.js +2 -1
  634. package/src/components/flyout/__tests__/Flyout.test.js +22 -1
  635. package/src/components/flyout/__tests__/Overlay.test.js +1 -1
  636. package/src/components/grid-view/GridView.js +3 -2
  637. package/src/components/grid-view/GridViewSlider.js +5 -2
  638. package/src/components/grid-view/GridViewSlider.scss +0 -10
  639. package/src/components/grid-view/__tests__/GridViewSlider.test.js +35 -2
  640. package/src/components/grid-view/__tests__/__snapshots__/GridView.test.js.snap +2 -0
  641. package/src/components/grid-view/__tests__/__snapshots__/GridViewSlider.test.js.snap +38 -13
  642. package/src/components/inline-error/InlineError.stories.js +9 -0
  643. package/src/components/inline-error/InlineError.stories.md +3 -0
  644. package/src/components/inline-notice/InlineNotice.stories.js +59 -0
  645. package/src/components/inline-notice/InlineNotice.stories.md +1 -0
  646. package/src/components/label/InfoIconWithTooltip.tsx +2 -2
  647. package/src/components/label/Label.scss +1 -1
  648. package/src/components/label/__tests__/__snapshots__/InfoIconWithTooltip.test.tsx.snap +1 -1
  649. package/src/components/media-query/__tests__/withMediaQuery.test.js +1 -0
  650. package/src/components/media-query/stories/MediaQuery.stories.js +11 -2
  651. package/src/components/media-query/stories/MediaQuery.stories.md +10 -9
  652. package/src/components/media-query/types.js +1 -0
  653. package/src/components/media-query/useMediaQuery.js +3 -0
  654. package/src/components/menu/MenuHeader.scss +1 -1
  655. package/src/components/menu/SubmenuItem.tsx +4 -1
  656. package/src/components/modal/Modal.scss +15 -0
  657. package/src/components/modal/ModalDialog.js +44 -5
  658. package/src/components/modal/__tests__/ModalDialog.test.js +22 -1
  659. package/src/components/nav-sidebar/NavSidebar.scss +1 -1
  660. package/src/components/nav-sidebar/NavSidebar.stories.js +54 -0
  661. package/src/components/nav-sidebar/NavSidebar.stories.md +1 -0
  662. package/src/components/pill-cloud/PillCloud.stories.js +48 -0
  663. package/src/components/pill-cloud/PillCloud.stories.md +1 -0
  664. package/src/components/pill-selector-dropdown/PillSelector.js +26 -4
  665. package/src/components/pill-selector-dropdown/PillSelector.scss +4 -0
  666. package/src/components/pill-selector-dropdown/PillSelectorDropdown.js +1 -0
  667. package/src/components/pill-selector-dropdown/__tests__/PillSelector.test.js +1 -1
  668. package/src/components/pill-selector-dropdown/__tests__/PillSelectorDropdown.test.js +4 -4
  669. package/src/components/pill-selector-dropdown/__tests__/__snapshots__/PillSelector.test.js.snap +1 -1
  670. package/src/components/pill-selector-dropdown/__tests__/__snapshots__/PillSelectorDropdown.test.js.snap +1 -1
  671. package/src/components/pill-selector-dropdown/_mixins.scss +1 -1
  672. package/src/components/popper/PopperComponent.js +3 -2
  673. package/src/components/radio/RadioButton.scss +1 -1
  674. package/src/components/search-form/SearchForm.js +30 -6
  675. package/src/components/search-form/__tests__/SearchForm.test.js +1 -1
  676. package/src/components/select-button/SelectButton.js +23 -2
  677. package/src/components/select-button/__tests__/SelectButton.test.js +8 -0
  678. package/src/components/select-field/BaseSelectField.js +19 -2
  679. package/src/components/select-field/SelectField.scss +8 -1
  680. package/src/components/select-field/__tests__/BaseSelectField.test.js +9 -0
  681. package/src/components/selector-dropdown/SelectorDropdown.js +22 -5
  682. package/src/components/selector-dropdown/SelectorDropdown.scss +2 -2
  683. package/src/components/selector-dropdown/__tests__/SelectorDropdown.test.js +2 -1
  684. package/src/components/table/__tests__/makeSelectable.test.js +65 -3
  685. package/src/components/table/makeSelectable.js +33 -6
  686. package/src/components/text-area/TextArea.scss +1 -1
  687. package/src/components/text-input/TextInput.scss +1 -1
  688. package/src/components/text-input-with-copy-button/TextInputWithCopyButton.js +4 -1
  689. package/src/components/text-input-with-copy-button/TextInputWithCopyButton.scss +11 -7
  690. package/src/components/thumbnail-card/ThumbnailCard.scss +1 -1
  691. package/src/components/time/ReadableTime.stories.js +56 -0
  692. package/src/components/time/ReadableTime.stories.md +1 -0
  693. package/src/components/toggle/Toggle.js +16 -5
  694. package/src/components/toggle/Toggle.scss +3 -3
  695. package/src/components/toggle/__tests__/__snapshots__/Toggle.test.js.snap +2 -0
  696. package/src/components/tooltip/CloseButton.tsx +22 -0
  697. package/src/components/tooltip/Tooltip.tsx +3 -8
  698. package/src/components/tooltip/__tests__/CloseButton.test.tsx +32 -0
  699. package/src/components/tooltip/__tests__/Tooltip.test.tsx +21 -0
  700. package/src/components/tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +3 -10
  701. package/src/constants.js +7 -0
  702. package/src/elements/common/_variables.scss +7 -2
  703. package/src/elements/common/base.scss +14 -0
  704. package/src/elements/common/breadcrumbs/Breadcrumb.scss +1 -1
  705. package/src/elements/common/breadcrumbs/BreadcrumbDropdown.scss +1 -1
  706. package/src/elements/common/breadcrumbs/InlineBreadcrumbs.scss +2 -2
  707. package/src/elements/common/header/Header.js +7 -2
  708. package/src/elements/common/header/Logo.js +5 -1
  709. package/src/elements/common/header/__tests__/Header.test.js +40 -0
  710. package/src/elements/common/item/IconCell.js +55 -0
  711. package/src/elements/common/item/ItemDetails.scss +1 -1
  712. package/src/elements/common/item/__tests__/IconCell.test.js +88 -0
  713. package/src/elements/common/item/iconCellRenderer.js +6 -22
  714. package/src/elements/common/messages.js +35 -0
  715. package/src/elements/common/modal.scss +0 -2
  716. package/src/elements/common/share-access-select/ShareAccessSelect.scss +1 -1
  717. package/src/elements/common/sub-header/AddButton.js +2 -1
  718. package/src/elements/common/sub-header/Sort.js +7 -6
  719. package/src/elements/common/sub-header/SortButton.js +23 -10
  720. package/src/elements/common/sub-header/ViewModeChangeButton.js +3 -3
  721. package/src/elements/common/sub-header/__tests__/Sort.test.js +12 -62
  722. package/src/elements/common/sub-header/__tests__/SortButton.test.js +24 -0
  723. package/src/elements/common/sub-header/__tests__/SubHeaderRight.test.js +1 -1
  724. package/src/elements/content-explorer/Content.js +2 -1
  725. package/src/elements/content-explorer/ContentExplorer.js +50 -13
  726. package/src/elements/content-explorer/ItemGrid.js +60 -9
  727. package/src/elements/content-explorer/ItemGridThumbnail.js +5 -2
  728. package/src/elements/content-explorer/ItemList.js +4 -2
  729. package/src/elements/content-explorer/ItemList.scss +16 -8
  730. package/src/elements/content-explorer/MoreOptions.js +11 -4
  731. package/src/elements/content-explorer/__tests__/ContentExplorer.test.js +44 -0
  732. package/src/elements/content-explorer/__tests__/MoreOptions.test.js +30 -0
  733. package/src/elements/content-open-with/ContentOpenWith.scss +1 -1
  734. package/src/elements/content-picker/Footer.js +62 -51
  735. package/src/elements/content-picker/ItemList.scss +1 -1
  736. package/src/elements/content-picker/__tests__/Footer.test.js +17 -0
  737. package/src/elements/content-preview/ContentPreview.js +43 -6
  738. package/src/elements/content-preview/__tests__/ContentPreview.test.js +96 -0
  739. package/src/elements/content-preview/preview-header/PreviewHeader.scss +1 -1
  740. package/src/elements/content-sharing/ContentSharing.js +2 -2
  741. package/src/elements/content-sidebar/ActivitySidebar.js +262 -17
  742. package/src/elements/content-sidebar/ActivitySidebar.scss +7 -0
  743. package/src/elements/content-sidebar/ActivitySidebarFilter.js +64 -23
  744. package/src/elements/content-sidebar/AddTaskMenu.scss +1 -1
  745. package/src/elements/content-sidebar/SidebarContent.js +1 -1
  746. package/src/elements/content-sidebar/SidebarContent.scss +3 -3
  747. package/src/elements/content-sidebar/SidebarNav.js +3 -15
  748. package/src/elements/content-sidebar/SidebarNavSign.scss +3 -25
  749. package/src/elements/content-sidebar/SidebarNavSign.tsx +53 -55
  750. package/src/elements/content-sidebar/SidebarNavSignButton.scss +27 -0
  751. package/src/elements/content-sidebar/SidebarNavSignButton.tsx +73 -0
  752. package/src/elements/content-sidebar/__tests__/ActivitySidebar.test.js +545 -16
  753. package/src/elements/content-sidebar/__tests__/ActivitySidebarFilter.test.js +47 -18
  754. package/src/elements/content-sidebar/__tests__/SidebarNav.test.js +3 -3
  755. package/src/elements/content-sidebar/__tests__/SidebarNavSign.test.tsx +72 -52
  756. package/src/elements/content-sidebar/__tests__/SidebarNavSignButton.test.tsx +60 -0
  757. package/src/elements/content-sidebar/__tests__/__snapshots__/ActivitySidebar.test.js.snap +2 -0
  758. package/src/elements/content-sidebar/activity-feed/Avatar.js +5 -2
  759. package/src/elements/content-sidebar/activity-feed/__tests__/Avatar.test.js +0 -10
  760. package/src/elements/content-sidebar/activity-feed/__tests__/__snapshots__/Avatar.test.js.snap +13 -10
  761. package/src/elements/content-sidebar/activity-feed/activity-feed/ActiveState.js +73 -28
  762. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.js +80 -13
  763. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityFeed.scss +11 -0
  764. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.scss +28 -0
  765. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityItem.tsx +16 -2
  766. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.js +48 -29
  767. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThread.scss +69 -6
  768. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.js +42 -5
  769. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplies.scss +15 -0
  770. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.js +30 -5
  771. package/src/elements/content-sidebar/activity-feed/activity-feed/ActivityThreadReplyForm.scss +4 -7
  772. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActiveState.test.js +11 -0
  773. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityFeed.test.js +74 -0
  774. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityItem.test.tsx +20 -0
  775. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThread.test.js +8 -3
  776. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThreadReplies.test.js +12 -0
  777. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/ActivityThreadRepliesForm.test.js +20 -5
  778. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/__snapshots__/ActiveState.test.js.snap +7 -0
  779. package/src/elements/content-sidebar/activity-feed/activity-feed/__tests__/__snapshots__/ActivityFeed.test.js.snap +3 -0
  780. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.js +43 -13
  781. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThread.scss +26 -3
  782. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.js +67 -56
  783. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadContent.scss +1 -1
  784. package/src/elements/content-sidebar/activity-feed/annotation-thread/AnnotationThreadCreate.js +16 -51
  785. package/src/elements/content-sidebar/activity-feed/annotation-thread/__mocks__/useAnnotationThread.js +19 -0
  786. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThread.test.js +12 -1
  787. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThreadContent.test.js +18 -52
  788. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/AnnotationThreadCreate.test.js +23 -54
  789. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useAnnotationAPI.test.js +40 -3
  790. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useAnnotationThread.test.js +429 -25
  791. package/src/elements/content-sidebar/activity-feed/annotation-thread/__tests__/useRepliesAPI.test.js +15 -13
  792. package/src/elements/content-sidebar/activity-feed/annotation-thread/errors.js +5 -4
  793. package/src/elements/content-sidebar/activity-feed/annotation-thread/types.js +7 -0
  794. package/src/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationAPI.js +32 -10
  795. package/src/elements/content-sidebar/activity-feed/annotation-thread/useAnnotationThread.js +249 -55
  796. package/src/elements/content-sidebar/activity-feed/annotation-thread/useRepliesAPI.js +42 -83
  797. package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.js +27 -12
  798. package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivity.scss +11 -8
  799. package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityLink.scss +1 -1
  800. package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.js +3 -1
  801. package/src/elements/content-sidebar/activity-feed/annotations/AnnotationActivityMenu.scss +5 -0
  802. package/src/elements/content-sidebar/activity-feed/annotations/__tests__/AnnotationActivity.test.js +26 -0
  803. package/src/elements/content-sidebar/activity-feed/comment/BaseComment.js +456 -0
  804. package/src/elements/content-sidebar/activity-feed/comment/BaseComment.scss +30 -0
  805. package/src/elements/content-sidebar/activity-feed/comment/Comment.js +42 -5
  806. package/src/elements/content-sidebar/activity-feed/comment/Comment.scss +10 -0
  807. package/src/elements/content-sidebar/activity-feed/comment/CreateReply.js +72 -0
  808. package/src/elements/content-sidebar/activity-feed/comment/CreateReply.scss +21 -0
  809. package/src/elements/content-sidebar/activity-feed/comment/Replies.scss +41 -0
  810. package/src/elements/content-sidebar/activity-feed/comment/RepliesToggle.js +41 -0
  811. package/src/elements/content-sidebar/activity-feed/comment/RepliesToggle.scss +6 -0
  812. package/src/elements/content-sidebar/activity-feed/comment/__tests__/BaseComment.test.js +373 -0
  813. package/src/elements/content-sidebar/activity-feed/comment/__tests__/Comment.test.js +14 -6
  814. package/src/elements/content-sidebar/activity-feed/comment/__tests__/CreateReply.test.js +127 -0
  815. package/src/elements/content-sidebar/activity-feed/comment/__tests__/Replies.test.js +219 -0
  816. package/src/elements/content-sidebar/activity-feed/comment/__tests__/RepliesToggle.test.js +82 -0
  817. package/src/elements/content-sidebar/activity-feed/comment/__tests__/__snapshots__/Comment.test.js.snap +18 -4
  818. package/src/elements/content-sidebar/activity-feed/comment/messages.js +20 -0
  819. package/src/elements/content-sidebar/activity-feed/comment-form/CommentForm.js +3 -3
  820. package/src/elements/content-sidebar/activity-feed/comment-form/CommentForm.scss +1 -1
  821. package/src/elements/content-sidebar/activity-feed/common/activity-message/ActivityMessage.scss +1 -1
  822. package/src/elements/content-sidebar/activity-feed/common/activity-message/messages.js +2 -2
  823. package/src/elements/content-sidebar/activity-feed/common/activity-status/ActivityStatus.scss +1 -1
  824. package/src/elements/content-sidebar/activity-feed/task-form/TaskForm.js +1 -0
  825. package/src/elements/content-sidebar/activity-feed/task-new/AssigneeDetails.scss +1 -1
  826. package/src/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.js +11 -7
  827. package/src/elements/content-sidebar/activity-feed/task-new/AvatarGroupAvatar.scss +1 -5
  828. package/src/elements/content-sidebar/activity-feed/task-new/Task.js +1 -2
  829. package/src/elements/content-sidebar/activity-feed/task-new/Task.scss +1 -8
  830. package/src/elements/content-sidebar/activity-feed/task-new/__tests__/__snapshots__/Task.test.js.snap +1 -5
  831. package/src/elements/content-sidebar/messages.js +29 -4
  832. package/src/elements/content-sidebar/skills/keywords/__tests__/__snapshots__/EditableKeywords.test.js.snap +0 -6
  833. package/src/elements/content-sidebar/skills/timeline/Timeline.scss +1 -1
  834. package/src/elements/content-sidebar/skills/transcript/Transcript.scss +1 -1
  835. package/src/elements/content-sidebar/versions/VersionsGroup.scss +1 -1
  836. package/src/elements/content-sidebar/versions/VersionsItem.scss +3 -3
  837. package/src/elements/content-uploader/Footer.js +23 -3
  838. package/src/elements/content-uploader/Footer.scss +0 -1
  839. package/src/elements/content-uploader/ItemAction.js +6 -3
  840. package/src/elements/content-uploader/ItemRemove.js +18 -6
  841. package/src/elements/content-uploader/UploadInput.js +19 -9
  842. package/src/elements/content-uploader/__tests__/Footer.test.js +59 -0
  843. package/src/elements/content-uploader/__tests__/ItemAction.test.js +11 -1
  844. package/src/elements/content-uploader/__tests__/ItemRemove.test.js +22 -0
  845. package/src/elements/content-uploader/__tests__/__snapshots__/ItemAction.test.js.snap +36 -0
  846. package/src/elements/content-uploader/__tests__/__snapshots__/UploadInput.test.js.snap +4 -0
  847. package/src/features/advanced-content-insights/AdvancedContentInsightsToggle.scss +19 -0
  848. package/src/features/advanced-content-insights/AdvancedContentInsightsToggle.tsx +59 -0
  849. package/src/features/advanced-content-insights/__tests__/AdvancedContentInsightsToggle.test.tsx +33 -0
  850. package/src/features/advanced-content-insights/__tests__/__snapshots__/AdvancedContentInsightsToggle.test.tsx.snap +42 -0
  851. package/src/features/advanced-content-insights/messages.ts +22 -0
  852. package/src/features/classification/classificationColorsMap.js +1 -1
  853. package/src/features/collaborator-avatars/CollaboratorAvatarItem.js +11 -8
  854. package/src/features/collaborator-avatars/CollaboratorAvatars.scss +1 -1
  855. package/src/features/collaborator-avatars/CollaboratorList.js +3 -4
  856. package/src/features/collaborator-avatars/CollaboratorListItem.js +7 -13
  857. package/src/features/collaborator-avatars/CollaboratorListItem.scss +7 -3
  858. package/src/features/collaborator-avatars/__tests__/CollaboratorAvatarItem.test.js +6 -2
  859. package/src/features/collaborator-avatars/__tests__/__snapshots__/CollaboratorAvatarItem.test.js.snap +5 -12
  860. package/src/features/collaborator-avatars/__tests__/__snapshots__/CollaboratorList.test.js.snap +6 -8
  861. package/src/features/collaborator-avatars/__tests__/__snapshots__/CollaboratorListItem.test.js.snap +36 -40
  862. package/src/features/collapsible-sidebar/CollapsibleSidebar.js +5 -2
  863. package/src/features/collapsible-sidebar/CollapsibleSidebar.scss +4 -7
  864. package/src/features/collapsible-sidebar/CollapsibleSidebarLogo.js +15 -11
  865. package/src/features/collapsible-sidebar/__tests__/CollapsibleSidebar.test.js +1 -0
  866. package/src/features/collapsible-sidebar/__tests__/CollapsibleSidebarLogo.test.js +14 -0
  867. package/src/features/collapsible-sidebar/__tests__/__snapshots__/CollapsibleSidebar.test.js.snap +1 -1
  868. package/src/features/content-explorer/content-explorer/ContentExplorer.js +97 -20
  869. package/src/features/content-explorer/content-explorer/ContentExplorer.scss +67 -8
  870. package/src/features/content-explorer/content-explorer/ContentExplorerActionButtons.js +53 -13
  871. package/src/features/content-explorer/content-explorer/ContentExplorerFolderTreeBreadcrumbs.js +82 -0
  872. package/src/features/content-explorer/content-explorer/ContentExplorerHeaderActions.js +22 -7
  873. package/src/features/content-explorer/content-explorer/ContentExplorerIncludeSubfolders.js +30 -0
  874. package/src/features/content-explorer/content-explorer/ContentExplorerSelectAll.js +34 -20
  875. package/src/features/content-explorer/content-explorer/__tests__/ContentExplorer.test.js +28 -0
  876. package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerActionButtons.test.js +96 -8
  877. package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerFolderTreeBreadcrumbs.test.js +91 -0
  878. package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerHeaderActions.test.js +8 -0
  879. package/src/features/content-explorer/content-explorer/__tests__/ContentExplorerIncludeSubfolders.test.js +50 -0
  880. package/src/features/content-explorer/content-explorer/__tests__/__snapshots__/ContentExplorer.test.js.snap +4 -0
  881. package/src/features/content-explorer/content-explorer/constants.js +6 -0
  882. package/src/features/content-explorer/content-explorer-modal/ContentExplorerModal.js +13 -0
  883. package/src/features/content-explorer/content-explorer-modal-container/ContentExplorerModalContainer.js +31 -0
  884. package/src/features/content-explorer/item-list/ItemList.js +17 -1
  885. package/src/features/content-explorer/item-list/ItemList.scss +1 -1
  886. package/src/features/content-explorer/item-list/ItemListButton.js +10 -2
  887. package/src/features/content-explorer/item-list/ItemListIcon.js +5 -33
  888. package/src/features/content-explorer/item-list/ItemListName.js +3 -2
  889. package/src/features/content-explorer/item-list/__tests__/ItemList.test.js +72 -0
  890. package/src/features/content-explorer/item-list/__tests__/ItemListButton.test.js +8 -0
  891. package/src/features/content-explorer/item-list/__tests__/ItemListIcon.test.js +24 -18
  892. package/src/features/content-explorer/item-list/__tests__/__snapshots__/ItemListIcon.test.js.snap +37 -24
  893. package/src/features/content-explorer/messages.js +41 -24
  894. package/src/features/content-explorer/prop-types.js +2 -2
  895. package/src/features/content-insights/_mixins.scss +1 -1
  896. package/src/features/content-insights/charts/bar/Bar.tsx +24 -3
  897. package/src/features/content-insights/charts/bar/BarChart.tsx +10 -3
  898. package/src/features/content-insights/charts/bar/__tests__/Bar.test.tsx +51 -0
  899. package/src/features/content-insights/charts/bar/__tests__/BarChart.test.tsx +7 -1
  900. package/src/features/invite-collaborators-modal/InviteCollaboratorsModal.scss +1 -1
  901. package/src/features/message-center/components/templates/common/styles/MessageFooter.scss +1 -1
  902. package/src/features/metadata-based-view/IconWithTooltip.js +4 -4
  903. package/src/features/metadata-based-view/MetadataBasedItemList.scss +1 -1
  904. package/src/features/metadata-based-view/__tests__/__snapshots__/IconWithTooltip.test.js.snap +3 -3
  905. package/src/features/metadata-instance-editor/CascadePolicy.scss +1 -1
  906. package/src/features/metadata-instance-editor/TemplateDropdown.js +4 -10
  907. package/src/features/metadata-instance-editor/TemplateDropdown.scss +2 -2
  908. package/src/features/metadata-instance-editor/__tests__/__snapshots__/TemplateDropdown.test.js.snap +28 -7
  909. package/src/features/metadata-instance-fields/EnumMetadataField.scss +2 -2
  910. package/src/features/metadata-instance-fields/MultiSelectMetadataField.scss +1 -1
  911. package/src/features/metadata-instance-fields/ReadOnlyMetadataField.scss +2 -2
  912. package/src/features/presence/PresenceAvatarList.scss +1 -1
  913. package/src/features/presence/PresenceCollaborator.scss +1 -1
  914. package/src/features/query-bar/styles/Condition.scss +2 -2
  915. package/src/features/quick-search/QuickSearchItem.js +4 -3
  916. package/src/features/shared-link-settings-modal/ExpirationSection.js +4 -0
  917. package/src/features/shared-link-settings-modal/SharedLinkSettingsModal.js +9 -5
  918. package/src/features/shared-link-settings-modal/SharedLinkSettingsModal.scss +3 -3
  919. package/src/features/shared-link-settings-modal/VanityNameSection.js +2 -2
  920. package/src/features/shared-link-settings-modal/__tests__/ExpirationSection.test.js +9 -0
  921. package/src/features/shared-link-settings-modal/__tests__/SharedLinkSettingsModal.test.js +9 -4
  922. package/src/features/unified-share-modal/InviteePermissionsMenu.js +1 -0
  923. package/src/features/unified-share-modal/SharedLinkAccessMenu.js +1 -0
  924. package/src/features/unified-share-modal/SharedLinkPermissionMenu.js +1 -0
  925. package/src/features/unified-share-modal/SharedLinkSection.js +30 -38
  926. package/src/features/unified-share-modal/UnifiedShareForm.js +38 -25
  927. package/src/features/unified-share-modal/UnifiedShareModal.js +9 -1
  928. package/src/features/unified-share-modal/UnifiedShareModal.scss +24 -13
  929. package/src/features/unified-share-modal/__tests__/SharedLinkSection.test.js +19 -3
  930. package/src/features/unified-share-modal/__tests__/UnifiedShareForm.test.js +10 -0
  931. package/src/features/unified-share-modal/__tests__/UnifiedShareModal.test.js +9 -0
  932. package/src/features/unified-share-modal/__tests__/__snapshots__/InviteePermissionsMenu.test.js.snap +16 -0
  933. package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkAccessMenu.test.js.snap +6 -0
  934. package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkPermissionMenu.test.js.snap +6 -0
  935. package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkSection.test.js.snap +211 -313
  936. package/src/features/unified-share-modal/flowTypes.js +10 -2
  937. package/src/features/unified-share-modal/messages.js +17 -5
  938. package/src/features/virtualized-table/VirtualizedTable.scss +1 -1
  939. package/src/features/virtualized-table/__tests__/__snapshots__/BaseVirtualizedTable.test.js.snap +3 -0
  940. package/src/features/virtualized-table/__tests__/__snapshots__/DraggableVirtualizedTable.test.js.snap +3 -0
  941. package/src/features/virtualized-table/__tests__/__snapshots__/VirtualizedTable.test.js.snap +8 -0
  942. package/src/features/virtualized-table-renderers/_mixins.scss +1 -1
  943. package/src/icons/badges/MetadataDefaultBadge.js.flow +3 -3
  944. package/src/icons/badges/MetadataDefaultBadge.tsx +3 -3
  945. package/src/icons/badges/__tests__/__snapshots__/MetadataDefaultBadge.test.tsx.snap +2 -2
  946. package/src/icons/general/IconAnyTask.js.flow +2 -2
  947. package/src/icons/general/IconAnyTask.tsx +2 -2
  948. package/src/icons/general/IconEdit.js.flow +2 -1
  949. package/src/icons/general/IconEdit.tsx +2 -1
  950. package/src/icons/general/__tests__/__snapshots__/IconAnyTask.test.tsx.snap +1 -1
  951. package/src/icons/general/__tests__/__snapshots__/IconEdit.test.tsx.snap +2 -2
  952. package/src/icons/metadata-view/IconMetadataView.js.flow +2 -1
  953. package/src/icons/metadata-view/IconMetadataView.tsx +3 -1
  954. package/src/icons/metadata-view/__tests__/__snapshots__/IconMetadataView.test.tsx.snap +1 -1
  955. package/src/icons/two-toned/IconAnnotation.js.flow +27 -0
  956. package/src/icons/two-toned/IconAnnotation.tsx +26 -0
  957. package/src/icons/two-toned/_IconAnnotation.mixins.scss +9 -0
  958. package/src/icons/two-toned/__tests__/IconAnnotation.test.tsx +28 -0
  959. package/src/icons/two-toned/__tests__/__snapshots__/IconAnnotation.test.tsx.snap +28 -0
  960. package/src/styles/_deprecated.scss +1 -0
  961. package/src/styles/_inputs.scss +2 -3
  962. package/src/styles/colors.md +1 -1
  963. package/src/styles/common/_buttons.scss +2 -2
  964. package/src/styles/common/_forms.scss +2 -0
  965. package/src/styles/common/_links.scss +1 -1
  966. package/src/styles/constants/_colors.scss +1 -1
  967. package/src/styles/constants/_themes.scss +1 -1
  968. package/src/styles/typography.stories.scss +60 -0
  969. package/src/styles/typography.stories.tsx +70 -0
  970. package/src/styles/variables.js +2 -2
  971. package/src/styles/variables.json +2 -2
  972. package/src/styles/variables.ts +2 -2
  973. package/src/utils/__tests__/__snapshots__/createTheme.test.js.snap +4 -4
  974. package/src/utils/createTheme.js +2 -2
  975. package/es/elements/common/sub-header/Sort.scss +0 -8
  976. package/es/elements/content-sidebar/activity-feed/task-new/_mixins.scss +0 -10
  977. package/es/features/content-explorer/item-types.js +0 -6
  978. package/es/features/content-explorer/item-types.js.flow +0 -5
  979. package/es/features/content-explorer/item-types.js.map +0 -1
  980. package/src/components/inline-error/README.md +0 -10
  981. package/src/components/inline-notice/README.md +0 -57
  982. package/src/components/nav-sidebar/README.md +0 -57
  983. package/src/components/pill-cloud/README.md +0 -39
  984. package/src/components/time/README.md +0 -58
  985. package/src/elements/common/sub-header/Sort.scss +0 -8
  986. package/src/elements/content-sidebar/activity-feed/task-new/_mixins.scss +0 -10
  987. package/src/features/content-explorer/item-types.js +0 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/table/makeSelectable.js"],"names":["PropTypes","React","Component","Set","ImmutablePropTypes","classNames","FormattedMessage","Hotkeys","HotkeyRecord","messages","shiftSelect","SEARCH_TIMER_DURATION","makeSelectable","BaseTable","originalDisplayName","displayName","name","props","focusedIndex","undefined","selectedItems","newFocusedIndex","onSelect","previousIndex","state","setState","isSet","toJS","hotkeyType","key","description","shiftXDescription","handler","selectToggle","type","selectAllDescription","event","data","preventDefault","deselectAllDescription","downDescription","Math","min","length","upDescription","max","shiftDownDescription","handleShiftKeyDown","shiftUpDescription","gridColumnCount","handleShiftKeyDownForGrid","enableHotkeys","isGridView","hotkeys","viewSpecificHotKeyConfigs","getGridViewHotKeyConfigs","getListViewHotKeyConfigs","getSharedHotkeyConfigs","loadedData","rowIndex","getProcessedProps","has","delete","add","anchorIndex","selectedRows","reduce","rows","item","i","push","newSelectedRows","newSelectedItems","map","size","index","metaKey","ctrlKey","shiftKey","selectRange","selectOne","blurTimerID","setTimeout","clearFocus","clearTimeout","boundary","selectedItemIndecies","sourceIndex","targetIndex","dataSize","isSourceSelected","isTargetSelected","selectedItemIndices","isContiguousSelection","newSelectedItemIndices","searchStrings","target","hasAttribute","nodeName","which","searchTimeout","searchString","findIndex","string","trim","toLowerCase","indexOf","nativeEvent","document","addEventListener","handleKeyboardSearch","prevProps","prevState","onFocus","removeEventListener","className","focusedItem","getHotkeyConfigs","handleCheckboxClick","handleRowClick","handleRowFocus","handleTableBlur","handleTableFocus","array","isRequired","number","bool","func","oneOfType","set"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { Set } from 'immutable';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport classNames from 'classnames';\nimport { FormattedMessage } from 'react-intl';\n\nimport { Hotkeys, HotkeyRecord } from '../hotkeys';\nimport messages from './messages';\nimport shiftSelect from './shiftSelect';\n\nconst SEARCH_TIMER_DURATION = 1000;\n\nfunction makeSelectable(BaseTable) {\n const originalDisplayName = BaseTable.displayName || BaseTable.name || 'Table';\n\n return class SelectableTable extends Component {\n static displayName = `Selectable(${originalDisplayName})`;\n\n static propTypes = {\n className: PropTypes.string,\n /** Array of unique IDs of the items in the table. Each item should be a string or number, in the order they appear in the table. */\n data: PropTypes.array.isRequired,\n gridColumnCount: PropTypes.number,\n isGridView: PropTypes.bool,\n /** Called when focus changes. `(focusedIndex: number) => void` */\n onFocus: PropTypes.func,\n /** Called when selection changes. `(selectedItems: Array<string> | Array<number> | Set<string> | Set<number>) => void` */\n onSelect: PropTypes.func.isRequired,\n /**\n * Array of strings for keyboard search corresponding to the data prop. If not provided, keyboard search won't work.\n * Example: data = ['f_123', 'f_456'], and corresponding searchStrings = ['file.png', 'another file.pdf']\n */\n searchStrings: PropTypes.array,\n /**\n * Array of IDs that are currently selected, in any order.\n * If you pass a native JS array, then your onSelect function will be called with a native JS array;\n * likewise, if you pass an ImmutableJS Set, then your onSelect function will be called\n * with an ImmutableJS Set.\n */\n selectedItems: PropTypes.oneOfType([PropTypes.array, ImmutablePropTypes.set]),\n /** Array of unique IDs of the items in the table that are loaded and accessible. If not provided, this will default to all data */\n loadedData: PropTypes.array,\n enableHotkeys: PropTypes.bool,\n /** Translated type for hotkeys. If not provided, then the hotkeys will not appear in the help modal. */\n hotkeyType: PropTypes.string,\n };\n\n static defaultProps = {\n selectedItems: new Set(),\n };\n\n constructor(props) {\n super(props);\n\n this.anchorIndex = 0;\n\n this.searchString = '';\n this.searchTimeout = null;\n\n // we have to store the previously focused index because a focus event\n // will be fired before the click event; thus, in the click handler,\n // the focusedItem will already be the new item\n this.previousIndex = 0;\n\n this.blurTimerID = null;\n }\n\n state = {\n focusedIndex: undefined,\n };\n\n componentDidMount() {\n document.addEventListener('keypress', this.handleKeyboardSearch);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.focusedIndex !== this.state.focusedIndex && this.props.onFocus) {\n this.props.onFocus(this.state.focusedIndex);\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('keypress', this.handleKeyboardSearch);\n clearTimeout(this.blurTimerID);\n }\n\n onSelect = (selectedItems, newFocusedIndex) => {\n const { onSelect } = this.props;\n\n this.previousIndex = this.state.focusedIndex || 0;\n\n this.setState({\n focusedIndex: newFocusedIndex,\n });\n\n if (onSelect) {\n // If selectedItems were given as an Immutable Set, they should also be returned as one,\n // and vice versa if they were given as a native JS array\n onSelect(Set.isSet(this.props.selectedItems) ? selectedItems : selectedItems.toJS());\n }\n };\n\n getSharedHotkeyConfigs = () => {\n const { hotkeyType } = this.props;\n return [\n new HotkeyRecord({\n key: 'shift+x',\n description: <FormattedMessage {...messages.shiftXDescription} />,\n handler: () => {\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n this.selectToggle(focusedIndex);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: ['meta+a', 'ctrl+a'],\n description: <FormattedMessage {...messages.selectAllDescription} />,\n handler: event => {\n const { data } = this.props;\n\n event.preventDefault();\n\n this.onSelect(new Set(data), this.state.focusedIndex);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'esc',\n description: <FormattedMessage {...messages.deselectAllDescription} />,\n handler: () => {\n this.onSelect(new Set(), this.state.focusedIndex);\n },\n type: hotkeyType,\n }),\n ];\n };\n\n getListViewHotKeyConfigs = () => {\n const { hotkeyType } = this.props;\n return [\n new HotkeyRecord({\n key: 'down',\n description: <FormattedMessage {...messages.downDescription} />,\n handler: event => {\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex =\n focusedIndex !== undefined ? Math.min(focusedIndex + 1, data.length - 1) : 0;\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'up',\n description: <FormattedMessage {...messages.upDescription} />,\n handler: event => {\n const { focusedIndex = 0 } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+down',\n description: <FormattedMessage {...messages.shiftDownDescription} />,\n handler: () => {\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.min(focusedIndex + 1, data.length - 1);\n this.handleShiftKeyDown(newFocusedIndex, data.length - 1);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+up',\n description: <FormattedMessage {...messages.shiftUpDescription} />,\n handler: () => {\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.handleShiftKeyDown(newFocusedIndex, 0);\n },\n type: hotkeyType,\n }),\n ];\n };\n\n getGridViewHotKeyConfigs = () => {\n const { hotkeyType } = this.props;\n return [\n new HotkeyRecord({\n key: 'right',\n description: <FormattedMessage {...messages.downDescription} />,\n handler: event => {\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex =\n focusedIndex !== undefined ? Math.min(focusedIndex + 1, data.length - 1) : 0;\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'left',\n description: <FormattedMessage {...messages.upDescription} />,\n handler: event => {\n const { focusedIndex = 0 } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'down',\n description: <FormattedMessage {...messages.downDescription} />,\n handler: event => {\n const { data, gridColumnCount } = this.props;\n const { focusedIndex } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex =\n focusedIndex !== undefined ? Math.min(focusedIndex + gridColumnCount, data.length - 1) : 0;\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'up',\n description: <FormattedMessage {...messages.upDescription} />,\n handler: event => {\n const { gridColumnCount } = this.props;\n const { focusedIndex = 0 } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex = Math.max(focusedIndex - gridColumnCount, 0);\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+right',\n description: <FormattedMessage {...messages.shiftDownDescription} />,\n handler: () => {\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.min(focusedIndex + 1, data.length - 1);\n this.handleShiftKeyDownForGrid(newFocusedIndex, data.length - 1);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+left',\n description: <FormattedMessage {...messages.shiftUpDescription} />,\n handler: () => {\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.handleShiftKeyDownForGrid(newFocusedIndex, 0);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+down',\n description: <FormattedMessage {...messages.shiftDownDescription} />,\n handler: () => {\n const { data, gridColumnCount } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.min(focusedIndex + gridColumnCount, data.length - 1);\n this.handleShiftKeyDownForGrid(newFocusedIndex, data.length - 1);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+up',\n description: <FormattedMessage {...messages.shiftUpDescription} />,\n handler: () => {\n const { gridColumnCount } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.max(focusedIndex - gridColumnCount, 0);\n this.handleShiftKeyDownForGrid(newFocusedIndex, 0);\n },\n type: hotkeyType,\n }),\n ];\n };\n\n getHotkeyConfigs = () => {\n const { enableHotkeys, isGridView, gridColumnCount } = this.props;\n\n if (!enableHotkeys && !this.hotkeys) {\n this.hotkeys = [];\n }\n\n if (!this.hotkeys) {\n const viewSpecificHotKeyConfigs =\n isGridView && gridColumnCount !== undefined\n ? this.getGridViewHotKeyConfigs()\n : this.getListViewHotKeyConfigs();\n\n this.hotkeys = [...this.getSharedHotkeyConfigs(), ...viewSpecificHotKeyConfigs];\n }\n\n return this.hotkeys;\n };\n\n getProcessedProps = () => {\n const { data, loadedData, selectedItems } = this.props;\n return {\n ...this.props,\n loadedData: loadedData ? Set(loadedData) : Set(data),\n selectedItems: Set.isSet(selectedItems) ? selectedItems : new Set(selectedItems),\n };\n };\n\n hotkeys = null;\n\n selectToggle = rowIndex => {\n const { data, selectedItems } = this.getProcessedProps();\n\n if (selectedItems.has(data[rowIndex])) {\n this.onSelect(selectedItems.delete(data[rowIndex]), rowIndex);\n } else {\n this.onSelect(selectedItems.add(data[rowIndex]), rowIndex);\n }\n\n this.anchorIndex = rowIndex;\n };\n\n selectRange = rowIndex => {\n const { data, selectedItems } = this.getProcessedProps();\n\n // Don't change selection if we're shift-clicking the same row\n if (rowIndex === this.previousIndex) {\n return;\n }\n\n // Converts set of items to set of indices to do some slicing magic\n const selectedRows = new Set(\n data.reduce((rows, item, i) => {\n if (selectedItems.has(item)) {\n rows.push(i);\n }\n return rows;\n }, []),\n );\n\n const newSelectedRows = shiftSelect(selectedRows, this.previousIndex, rowIndex, this.anchorIndex);\n\n // Converts set back to set of items\n const newSelectedItems = newSelectedRows.map(i => data[i]);\n\n this.onSelect(newSelectedItems, rowIndex);\n };\n\n selectOne = rowIndex => {\n const { data, selectedItems } = this.getProcessedProps();\n\n // Don't change selection if we're clicking on a row that we've already selected\n // This allows us to use the native onDoubleClick handler because we're referencing the\n // same DOM node on double-click.\n if (selectedItems.has(data[rowIndex]) && selectedItems.size === 1) {\n return;\n }\n\n this.onSelect(new Set([data[rowIndex]]), rowIndex);\n this.anchorIndex = rowIndex;\n };\n\n clearFocus = () => {\n this.setState({\n focusedIndex: undefined,\n });\n };\n\n handleRowClick = (event, index) => {\n if (event.metaKey || event.ctrlKey) {\n this.selectToggle(index);\n } else if (event.shiftKey) {\n this.selectRange(index);\n } else {\n this.selectOne(index);\n }\n };\n\n handleRowFocus = (event, index) => {\n const { selectedItems } = this.getProcessedProps();\n this.onSelect(selectedItems, index);\n };\n\n handleTableBlur = () => {\n const { focusedIndex } = this.state;\n if (focusedIndex !== undefined) {\n // table may get focus back right away in the same tick, in which case we shouldn't clear focus\n this.blurTimerID = setTimeout(this.clearFocus);\n }\n };\n\n handleTableFocus = () => {\n clearTimeout(this.blurTimerID);\n };\n\n handleShiftKeyDown = (newFocusedIndex, boundary) => {\n const { data, selectedItems } = this.getProcessedProps();\n const { focusedIndex } = this.state;\n\n // if we're at a boundary of the table and the row is selected, no-op\n if (focusedIndex === boundary && selectedItems.has(data[focusedIndex])) {\n return;\n }\n\n // if target is not selected, select it\n if (!selectedItems.has(data[newFocusedIndex])) {\n this.onSelect(selectedItems.add(data[newFocusedIndex]), newFocusedIndex);\n return;\n }\n\n // if both source and target are selected, deselect source\n if (selectedItems.has(data[newFocusedIndex]) && selectedItems.has(data[focusedIndex])) {\n this.onSelect(selectedItems.delete(data[focusedIndex]), newFocusedIndex);\n return;\n }\n\n // if target is selected and source is not, select source\n this.onSelect(selectedItems.add(data[focusedIndex]), newFocusedIndex);\n };\n\n isContiguousSelection = (selectedItemIndecies, sourceIndex, targetIndex) => {\n if (sourceIndex < targetIndex && selectedItemIndecies.has(sourceIndex - 1)) {\n return true;\n }\n if (targetIndex < sourceIndex && selectedItemIndecies.has(sourceIndex + 1)) {\n return true;\n }\n return false;\n };\n\n handleShiftKeyDownForGrid = newFocusedIndex => {\n const { data, loadedData, selectedItems } = this.getProcessedProps();\n const { focusedIndex } = this.state;\n\n const dataSize = data.length;\n const targetIndex = newFocusedIndex < 0 ? 0 : Math.min(newFocusedIndex, dataSize - 1);\n const isSourceSelected = selectedItems.has(data[focusedIndex]);\n const isTargetSelected = selectedItems.has(data[targetIndex]);\n\n // if data is not loaded, we don't want it to be able to be selected\n if (!loadedData.has(data[targetIndex])) {\n return;\n }\n\n const selectedItemIndices = new Set(\n data.reduce((rows, item, i) => {\n if (selectedItems.has(item)) {\n rows.push(i);\n }\n return rows;\n }, []),\n );\n\n // reset the anchor on a new selection block\n if (\n !isSourceSelected &&\n !isTargetSelected &&\n // if we are starting a new mass selection adjacent selected block, we want to connect them\n !this.isContiguousSelection(selectedItemIndices, focusedIndex, targetIndex)\n ) {\n this.anchorIndex = focusedIndex;\n }\n\n const newSelectedItemIndices = shiftSelect(\n selectedItemIndices,\n focusedIndex,\n targetIndex,\n this.anchorIndex,\n );\n\n const newSelectedItems = newSelectedItemIndices.map(i => data[i]);\n\n this.onSelect(newSelectedItems, targetIndex);\n };\n\n handleKeyboardSearch = event => {\n const { searchStrings } = this.props;\n\n if (!searchStrings) {\n return;\n }\n\n if (\n event.target.hasAttribute('contenteditable') ||\n event.target.nodeName === 'INPUT' ||\n event.target.nodeName === 'TEXTAREA'\n ) {\n return;\n }\n\n // character keys have a value for event.which\n if (event.which === 0) {\n return;\n }\n\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n\n this.searchString += event.key;\n this.searchTimeout = setTimeout(() => {\n this.searchString = '';\n }, SEARCH_TIMER_DURATION);\n\n const index = searchStrings.findIndex(\n string =>\n string\n .trim()\n .toLowerCase()\n .indexOf(this.searchString) === 0,\n );\n\n if (index !== -1) {\n this.setState({ focusedIndex: index });\n }\n };\n\n handleCheckboxClick = (event, index) => {\n if (event.nativeEvent.shiftKey) {\n this.selectRange(index);\n } else {\n this.selectToggle(index);\n }\n };\n\n render() {\n const { className, data } = this.props;\n const { focusedIndex } = this.state;\n const focusedItem = data[focusedIndex];\n\n return (\n <Hotkeys configs={this.getHotkeyConfigs()}>\n <BaseTable\n {...this.props}\n className={classNames(className, 'is-selectable')}\n focusedIndex={focusedIndex}\n focusedItem={focusedItem}\n onCheckboxClick={this.handleCheckboxClick}\n onRowClick={this.handleRowClick}\n onRowFocus={this.handleRowFocus}\n onTableBlur={this.handleTableBlur}\n onTableFocus={this.handleTableFocus}\n />\n </Hotkeys>\n );\n }\n };\n}\n\nexport default makeSelectable;\n"],"file":"makeSelectable.js"}
1
+ {"version":3,"sources":["../../../src/components/table/makeSelectable.js"],"names":["PropTypes","React","Component","Set","ImmutablePropTypes","classNames","FormattedMessage","Hotkeys","HotkeyRecord","messages","shiftSelect","SEARCH_TIMER_DURATION","makeSelectable","BaseTable","originalDisplayName","displayName","name","props","focusedIndex","undefined","selectedItems","newFocusedIndex","onSelect","previousIndex","state","setState","isSet","toJS","hotkeyType","key","description","shiftXDescription","handler","selectToggle","type","selectAllDescription","event","data","preventDefault","deselectAllDescription","downDescription","Math","min","length","upDescription","max","shiftDownDescription","handleShiftKeyDown","shiftUpDescription","isTargetSlider","gridColumnCount","handleShiftKeyDownForGrid","enableHotkeys","isGridView","hotkeys","viewSpecificHotKeyConfigs","getGridViewHotKeyConfigs","getListViewHotKeyConfigs","getSharedHotkeyConfigs","loadedData","rowIndex","getProcessedProps","has","delete","add","anchorIndex","selectedRows","reduce","rows","item","i","push","newSelectedRows","newSelectedItems","map","size","index","metaKey","ctrlKey","shiftKey","selectRange","selectOne","blurTimerID","setTimeout","clearFocus","clearTimeout","boundary","focusedIndexData","newFocusedIndexData","union","selectedItemIndecies","sourceIndex","targetIndex","dataSize","isSourceSelected","isTargetSelected","selectedItemIndices","isContiguousSelection","newSelectedItemIndices","searchStrings","target","hasAttribute","nodeName","which","searchTimeout","searchString","findIndex","string","trim","toLowerCase","indexOf","nativeEvent","role","document","addEventListener","handleKeyboardSearch","prevProps","prevState","onFocus","removeEventListener","className","focusedItem","getHotkeyConfigs","handleCheckboxClick","handleRowClick","handleRowFocus","handleTableBlur","handleTableFocus","array","isRequired","number","bool","func","oneOfType","set"],"mappings":"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","sourcesContent":["import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { Set } from 'immutable';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport classNames from 'classnames';\nimport { FormattedMessage } from 'react-intl';\n\nimport { Hotkeys, HotkeyRecord } from '../hotkeys';\nimport messages from './messages';\nimport shiftSelect from './shiftSelect';\n\nconst SEARCH_TIMER_DURATION = 1000;\n\nfunction makeSelectable(BaseTable) {\n const originalDisplayName = BaseTable.displayName || BaseTable.name || 'Table';\n\n return class SelectableTable extends Component {\n static displayName = `Selectable(${originalDisplayName})`;\n\n static propTypes = {\n className: PropTypes.string,\n /** Array of unique IDs of the items in the table. Each item should be a string or number, in the order they appear in the table. */\n data: PropTypes.array.isRequired,\n gridColumnCount: PropTypes.number,\n isGridView: PropTypes.bool,\n /** Called when focus changes. `(focusedIndex: number) => void` */\n onFocus: PropTypes.func,\n /** Called when selection changes. `(selectedItems: Array<string> | Array<number> | Set<string> | Set<number>) => void` */\n onSelect: PropTypes.func.isRequired,\n /**\n * Array of strings for keyboard search corresponding to the data prop. If not provided, keyboard search won't work.\n * Example: data = ['f_123', 'f_456'], and corresponding searchStrings = ['file.png', 'another file.pdf']\n */\n searchStrings: PropTypes.array,\n /**\n * Array of IDs that are currently selected, in any order.\n * If you pass a native JS array, then your onSelect function will be called with a native JS array;\n * likewise, if you pass an ImmutableJS Set, then your onSelect function will be called\n * with an ImmutableJS Set.\n */\n selectedItems: PropTypes.oneOfType([PropTypes.array, ImmutablePropTypes.set]),\n /** Array of unique IDs of the items in the table that are loaded and accessible. If not provided, this will default to all data */\n loadedData: PropTypes.array,\n enableHotkeys: PropTypes.bool,\n /** Translated type for hotkeys. If not provided, then the hotkeys will not appear in the help modal. */\n hotkeyType: PropTypes.string,\n };\n\n static defaultProps = {\n selectedItems: new Set(),\n };\n\n constructor(props) {\n super(props);\n\n this.anchorIndex = 0;\n\n this.searchString = '';\n this.searchTimeout = null;\n\n // we have to store the previously focused index because a focus event\n // will be fired before the click event; thus, in the click handler,\n // the focusedItem will already be the new item\n this.previousIndex = 0;\n\n this.blurTimerID = null;\n }\n\n state = {\n focusedIndex: undefined,\n };\n\n componentDidMount() {\n document.addEventListener('keypress', this.handleKeyboardSearch);\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.focusedIndex !== this.state.focusedIndex && this.props.onFocus) {\n this.props.onFocus(this.state.focusedIndex);\n }\n }\n\n componentWillUnmount() {\n document.removeEventListener('keypress', this.handleKeyboardSearch);\n clearTimeout(this.blurTimerID);\n }\n\n onSelect = (selectedItems, newFocusedIndex) => {\n const { onSelect } = this.props;\n\n this.previousIndex = this.state.focusedIndex || 0;\n\n this.setState({\n focusedIndex: newFocusedIndex,\n });\n\n if (onSelect) {\n // If selectedItems were given as an Immutable Set, they should also be returned as one,\n // and vice versa if they were given as a native JS array\n onSelect(Set.isSet(this.props.selectedItems) ? selectedItems : selectedItems.toJS());\n }\n };\n\n getSharedHotkeyConfigs = () => {\n const { hotkeyType } = this.props;\n return [\n new HotkeyRecord({\n key: 'shift+x',\n description: <FormattedMessage {...messages.shiftXDescription} />,\n handler: () => {\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n this.selectToggle(focusedIndex);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: ['meta+a', 'ctrl+a'],\n description: <FormattedMessage {...messages.selectAllDescription} />,\n handler: event => {\n const { data } = this.props;\n\n event.preventDefault();\n\n this.onSelect(new Set(data), this.state.focusedIndex);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'esc',\n description: <FormattedMessage {...messages.deselectAllDescription} />,\n handler: () => {\n this.onSelect(new Set(), this.state.focusedIndex);\n },\n type: hotkeyType,\n }),\n ];\n };\n\n getListViewHotKeyConfigs = () => {\n const { hotkeyType } = this.props;\n return [\n new HotkeyRecord({\n key: 'down',\n description: <FormattedMessage {...messages.downDescription} />,\n handler: event => {\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex =\n focusedIndex !== undefined ? Math.min(focusedIndex + 1, data.length - 1) : 0;\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'up',\n description: <FormattedMessage {...messages.upDescription} />,\n handler: event => {\n const { focusedIndex = 0 } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+down',\n description: <FormattedMessage {...messages.shiftDownDescription} />,\n handler: () => {\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.min(focusedIndex + 1, data.length - 1);\n this.handleShiftKeyDown(newFocusedIndex, data.length - 1);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+up',\n description: <FormattedMessage {...messages.shiftUpDescription} />,\n handler: () => {\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.handleShiftKeyDown(newFocusedIndex, 0);\n },\n type: hotkeyType,\n }),\n ];\n };\n\n getGridViewHotKeyConfigs = () => {\n const { hotkeyType } = this.props;\n return [\n new HotkeyRecord({\n key: 'right',\n description: <FormattedMessage {...messages.downDescription} />,\n handler: event => {\n if (this.isTargetSlider(event)) {\n return;\n }\n\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex =\n focusedIndex !== undefined ? Math.min(focusedIndex + 1, data.length - 1) : 0;\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'left',\n description: <FormattedMessage {...messages.upDescription} />,\n handler: event => {\n if (this.isTargetSlider(event)) {\n return;\n }\n\n const { focusedIndex = 0 } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'down',\n description: <FormattedMessage {...messages.downDescription} />,\n handler: event => {\n if (this.isTargetSlider(event)) {\n return;\n }\n\n const { data, gridColumnCount } = this.props;\n const { focusedIndex } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex =\n focusedIndex !== undefined ? Math.min(focusedIndex + gridColumnCount, data.length - 1) : 0;\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'up',\n description: <FormattedMessage {...messages.upDescription} />,\n handler: event => {\n if (this.isTargetSlider(event)) {\n return;\n }\n\n const { gridColumnCount } = this.props;\n const { focusedIndex = 0 } = this.state;\n\n event.preventDefault();\n\n const newFocusedIndex = Math.max(focusedIndex - gridColumnCount, 0);\n this.setState({ focusedIndex: newFocusedIndex });\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+right',\n description: <FormattedMessage {...messages.shiftDownDescription} />,\n handler: () => {\n const { data } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.min(focusedIndex + 1, data.length - 1);\n this.handleShiftKeyDownForGrid(newFocusedIndex, data.length - 1);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+left',\n description: <FormattedMessage {...messages.shiftUpDescription} />,\n handler: () => {\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.max(focusedIndex - 1, 0);\n this.handleShiftKeyDownForGrid(newFocusedIndex, 0);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+down',\n description: <FormattedMessage {...messages.shiftDownDescription} />,\n handler: () => {\n const { data, gridColumnCount } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.min(focusedIndex + gridColumnCount, data.length - 1);\n this.handleShiftKeyDownForGrid(newFocusedIndex, data.length - 1);\n },\n type: hotkeyType,\n }),\n new HotkeyRecord({\n key: 'shift+up',\n description: <FormattedMessage {...messages.shiftUpDescription} />,\n handler: () => {\n const { gridColumnCount } = this.props;\n const { focusedIndex } = this.state;\n\n if (focusedIndex === undefined) {\n return;\n }\n\n const newFocusedIndex = Math.max(focusedIndex - gridColumnCount, 0);\n this.handleShiftKeyDownForGrid(newFocusedIndex, 0);\n },\n type: hotkeyType,\n }),\n ];\n };\n\n getHotkeyConfigs = () => {\n const { enableHotkeys, isGridView, gridColumnCount } = this.props;\n\n if (!enableHotkeys && !this.hotkeys) {\n this.hotkeys = [];\n }\n\n if (!this.hotkeys) {\n const viewSpecificHotKeyConfigs =\n isGridView && gridColumnCount !== undefined\n ? this.getGridViewHotKeyConfigs()\n : this.getListViewHotKeyConfigs();\n\n this.hotkeys = [...this.getSharedHotkeyConfigs(), ...viewSpecificHotKeyConfigs];\n }\n\n return this.hotkeys;\n };\n\n getProcessedProps = () => {\n const { data, loadedData, selectedItems } = this.props;\n return {\n ...this.props,\n loadedData: loadedData ? Set(loadedData) : Set(data),\n selectedItems: Set.isSet(selectedItems) ? selectedItems : new Set(selectedItems),\n };\n };\n\n hotkeys = null;\n\n selectToggle = rowIndex => {\n const { data, selectedItems } = this.getProcessedProps();\n\n if (selectedItems.has(data[rowIndex])) {\n this.onSelect(selectedItems.delete(data[rowIndex]), rowIndex);\n } else {\n this.onSelect(selectedItems.add(data[rowIndex]), rowIndex);\n }\n\n this.anchorIndex = rowIndex;\n };\n\n selectRange = rowIndex => {\n const { data, selectedItems } = this.getProcessedProps();\n\n // Don't change selection if we're shift-clicking the same row\n if (rowIndex === this.previousIndex) {\n return;\n }\n\n // Converts set of items to set of indices to do some slicing magic\n const selectedRows = new Set(\n data.reduce((rows, item, i) => {\n if (selectedItems.has(item)) {\n rows.push(i);\n }\n return rows;\n }, []),\n );\n\n const newSelectedRows = shiftSelect(selectedRows, this.previousIndex, rowIndex, this.anchorIndex);\n\n // Converts set back to set of items\n const newSelectedItems = newSelectedRows.map(i => data[i]);\n\n this.onSelect(newSelectedItems, rowIndex);\n };\n\n selectOne = rowIndex => {\n const { data, selectedItems } = this.getProcessedProps();\n\n // Don't change selection if we're clicking on a row that we've already selected\n // This allows us to use the native onDoubleClick handler because we're referencing the\n // same DOM node on double-click.\n if (selectedItems.has(data[rowIndex]) && selectedItems.size === 1) {\n return;\n }\n\n this.onSelect(new Set([data[rowIndex]]), rowIndex);\n this.anchorIndex = rowIndex;\n };\n\n clearFocus = () => {\n this.setState({\n focusedIndex: undefined,\n });\n };\n\n handleRowClick = (event, index) => {\n if (event.metaKey || event.ctrlKey) {\n this.selectToggle(index);\n } else if (event.shiftKey) {\n this.selectRange(index);\n } else {\n this.selectOne(index);\n }\n };\n\n handleRowFocus = (event, index) => {\n const { selectedItems } = this.getProcessedProps();\n this.onSelect(selectedItems, index);\n };\n\n handleTableBlur = () => {\n const { focusedIndex } = this.state;\n if (focusedIndex !== undefined) {\n // table may get focus back right away in the same tick, in which case we shouldn't clear focus\n this.blurTimerID = setTimeout(this.clearFocus);\n }\n };\n\n handleTableFocus = () => {\n clearTimeout(this.blurTimerID);\n };\n\n handleShiftKeyDown = (newFocusedIndex, boundary) => {\n const { data, selectedItems } = this.getProcessedProps();\n const { focusedIndex } = this.state;\n\n const focusedIndexData = data[focusedIndex];\n const newFocusedIndexData = data[newFocusedIndex];\n\n // if we're at a boundary of the table and the row is selected, no-op\n if (focusedIndex === boundary && selectedItems.has(focusedIndexData)) {\n return;\n }\n\n // if both the target and source are not selected, select them both\n if (!selectedItems.has(focusedIndexData) && !selectedItems.has(newFocusedIndexData)) {\n this.onSelect(selectedItems.union([focusedIndexData, newFocusedIndexData]), newFocusedIndex);\n return;\n }\n\n // if target is not selected, select it\n if (!selectedItems.has(newFocusedIndexData)) {\n this.onSelect(selectedItems.add(newFocusedIndexData), newFocusedIndex);\n return;\n }\n\n // if both source and target are selected, deselect source\n if (selectedItems.has(newFocusedIndexData) && selectedItems.has(focusedIndexData)) {\n this.onSelect(selectedItems.delete(focusedIndexData), newFocusedIndex);\n return;\n }\n\n // if target is selected and source is not, select source\n this.onSelect(selectedItems.add(focusedIndexData), newFocusedIndex);\n };\n\n isContiguousSelection = (selectedItemIndecies, sourceIndex, targetIndex) => {\n if (sourceIndex < targetIndex && selectedItemIndecies.has(sourceIndex - 1)) {\n return true;\n }\n if (targetIndex < sourceIndex && selectedItemIndecies.has(sourceIndex + 1)) {\n return true;\n }\n return false;\n };\n\n handleShiftKeyDownForGrid = newFocusedIndex => {\n const { data, loadedData, selectedItems } = this.getProcessedProps();\n const { focusedIndex } = this.state;\n\n const dataSize = data.length;\n const targetIndex = newFocusedIndex < 0 ? 0 : Math.min(newFocusedIndex, dataSize - 1);\n const isSourceSelected = selectedItems.has(data[focusedIndex]);\n const isTargetSelected = selectedItems.has(data[targetIndex]);\n\n // if data is not loaded, we don't want it to be able to be selected\n if (!loadedData.has(data[targetIndex])) {\n return;\n }\n\n const selectedItemIndices = new Set(\n data.reduce((rows, item, i) => {\n if (selectedItems.has(item)) {\n rows.push(i);\n }\n return rows;\n }, []),\n );\n\n // reset the anchor on a new selection block\n if (\n !isSourceSelected &&\n !isTargetSelected &&\n // if we are starting a new mass selection adjacent selected block, we want to connect them\n !this.isContiguousSelection(selectedItemIndices, focusedIndex, targetIndex)\n ) {\n this.anchorIndex = focusedIndex;\n }\n\n const newSelectedItemIndices = shiftSelect(\n selectedItemIndices,\n focusedIndex,\n targetIndex,\n this.anchorIndex,\n );\n\n const newSelectedItems = newSelectedItemIndices.map(i => data[i]);\n\n this.onSelect(newSelectedItems, targetIndex);\n };\n\n handleKeyboardSearch = event => {\n const { searchStrings } = this.props;\n\n if (!searchStrings) {\n return;\n }\n\n if (\n event.target.hasAttribute('contenteditable') ||\n event.target.nodeName === 'INPUT' ||\n event.target.nodeName === 'TEXTAREA'\n ) {\n return;\n }\n\n // character keys have a value for event.which\n if (event.which === 0) {\n return;\n }\n\n if (this.searchTimeout) {\n clearTimeout(this.searchTimeout);\n }\n\n this.searchString += event.key;\n this.searchTimeout = setTimeout(() => {\n this.searchString = '';\n }, SEARCH_TIMER_DURATION);\n\n const index = searchStrings.findIndex(\n string =>\n string\n .trim()\n .toLowerCase()\n .indexOf(this.searchString) === 0,\n );\n\n if (index !== -1) {\n this.setState({ focusedIndex: index });\n }\n };\n\n handleCheckboxClick = (event, index) => {\n if (event.nativeEvent.shiftKey) {\n this.selectRange(index);\n } else {\n this.selectToggle(index);\n }\n };\n\n isTargetSlider = event => event.target?.role === 'slider';\n\n render() {\n const { className, data } = this.props;\n const { focusedIndex } = this.state;\n const focusedItem = data[focusedIndex];\n\n return (\n <Hotkeys configs={this.getHotkeyConfigs()}>\n <BaseTable\n {...this.props}\n className={classNames(className, 'is-selectable')}\n focusedIndex={focusedIndex}\n focusedItem={focusedItem}\n onCheckboxClick={this.handleCheckboxClick}\n onRowClick={this.handleRowClick}\n onRowFocus={this.handleRowFocus}\n onTableBlur={this.handleTableBlur}\n onTableFocus={this.handleTableFocus}\n />\n </Hotkeys>\n );\n }\n };\n}\n\nexport default makeSelectable;\n"],"file":"makeSelectable.js"}
@@ -13,7 +13,7 @@
13
13
  }
14
14
 
15
15
  .text-area-description {
16
- color: $bdl-gray-62;
16
+ color: $bdl-gray-65;
17
17
  word-wrap: break-word;
18
18
  }
19
19
 
@@ -25,7 +25,7 @@
25
25
  }
26
26
 
27
27
  .text-input-description {
28
- color: $bdl-gray-62;
28
+ color: $bdl-gray-65;
29
29
  word-wrap: break-word;
30
30
  }
31
31
 
@@ -185,8 +185,9 @@ function (_React$PureComponent) {
185
185
  var _this3 = this;
186
186
 
187
187
  var _this$props4 = this.props,
188
+ additionalButtons = _this$props4.additionalButtons,
188
189
  className = _this$props4.className,
189
- rest = _objectWithoutProperties(_this$props4, ["className"]);
190
+ rest = _objectWithoutProperties(_this$props4, ["additionalButtons", "className"]);
190
191
 
191
192
  var copySuccess = this.state.copySuccess;
192
193
  var isCopyCommandSupported = this.isCopyCommandSupported;
@@ -209,7 +210,7 @@ function (_React$PureComponent) {
209
210
  className: wrapperClasses
210
211
  }, copyEvent), React.createElement(TextInput, _extends({}, inputProps, {
211
212
  onFocus: this.handleFocus
212
- })), this.renderCopyButton());
213
+ })), additionalButtons, this.renderCopyButton());
213
214
  }
214
215
  }]);
215
216
 
@@ -16,6 +16,8 @@ const defaultCopyText = <FormattedMessage {...messages.copy} />;
16
16
  const defaultCopiedText = <FormattedMessage {...messages.copied} />;
17
17
 
18
18
  type Props = {
19
+ /** Array of nodes for additional buttons */
20
+ additionalButtons?: Array<React.Node>,
19
21
  /** Set the focus to input when component loads */
20
22
  autofocus?: boolean,
21
23
  /** Default copy button text */
@@ -186,7 +188,7 @@ class TextInputWithCopyButton extends React.PureComponent<Props, State> {
186
188
  ) : null;
187
189
 
188
190
  render() {
189
- const { className, ...rest } = this.props;
191
+ const { additionalButtons, className, ...rest } = this.props;
190
192
  const { copySuccess } = this.state;
191
193
  const { isCopyCommandSupported } = this;
192
194
 
@@ -216,6 +218,7 @@ class TextInputWithCopyButton extends React.PureComponent<Props, State> {
216
218
  return (
217
219
  <div className={wrapperClasses} {...copyEvent}>
218
220
  <TextInput {...inputProps} onFocus={this.handleFocus} />
221
+ {additionalButtons}
219
222
  {this.renderCopyButton()}
220
223
  </div>
221
224
  );
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/text-input-with-copy-button/TextInputWithCopyButton.js"],"names":["React","classNames","omit","FormattedMessage","messages","TextInput","Button","DEFAULT_SUCCESS_STATE_DURATION","defaultCopyText","copy","defaultCopiedText","copied","TextInputWithCopyButton","props","document","execCommand","setState","copySuccess","buttonText","buttonDefaultText","performAutofocus","copySelectedText","animateCopyButton","event","copyInputRef","onFocus","onCopySuccess","select","scrollLeft","isCopyCommandSupported","disabled","handleCopyButtonClick","buttonProps","state","queryCommandSupported","hasFocused","autofocus","value","triggerCopyOnLoad","clearCopySuccessTimeout","successStateDuration","buttonSuccessText","copySuccessTimeout","setTimeout","restoreCopyButton","clearTimeout","className","rest","inputProps","inputRef","ref","wrapperClasses","copyEvent","onCopy","handleCopyEvent","handleFocus","renderCopyButton","PureComponent","hideOptionalLabel","readOnly","type"],"mappings":"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","sourcesContent":["// @flow\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from 'lodash/omit';\nimport { FormattedMessage } from 'react-intl';\n\nimport messages from '../../common/messages';\nimport TextInput from '../text-input';\nimport Button from '../button';\n\nimport './TextInputWithCopyButton.scss';\n\nconst DEFAULT_SUCCESS_STATE_DURATION = 3000;\n\nconst defaultCopyText = <FormattedMessage {...messages.copy} />;\nconst defaultCopiedText = <FormattedMessage {...messages.copied} />;\n\ntype Props = {\n /** Set the focus to input when component loads */\n autofocus?: boolean,\n /** Default copy button text */\n buttonDefaultText: string | React.Node,\n /** Copy button text when copy is successful */\n buttonProps?: Object,\n buttonSuccessText?: string | React.Node,\n className: string,\n disabled?: boolean,\n /** Label displayed for the text input */\n // TODO: Make label required\n label?: React.Node,\n /** onFocus handler for the input el */\n onCopySuccess?: Function,\n /** Function called when link is copied by keyboard or button */\n onFocus?: Function,\n /** Duration (milliseconds) in which to show the copy success state */\n successStateDuration: number,\n /** trigger the copy animation when the component loads (used to simulate a click on copy button) */\n triggerCopyOnLoad?: boolean,\n /** html input types (email, url, text, number), defaults to 'text' */\n type: string,\n /** Value of the text input */\n value: React.Node,\n};\n\ntype State = {\n buttonText: string | React.Node,\n copySuccess: boolean,\n hasFocused: boolean,\n};\n\nclass TextInputWithCopyButton extends React.PureComponent<Props, State> {\n static defaultProps = {\n buttonDefaultText: defaultCopyText,\n buttonProps: {},\n buttonSuccessText: defaultCopiedText,\n className: '',\n hideOptionalLabel: true,\n readOnly: true,\n successStateDuration: DEFAULT_SUCCESS_STATE_DURATION,\n type: 'text',\n };\n\n constructor(props: Props) {\n super(props);\n\n this.isCopyCommandSupported = document.queryCommandSupported('copy');\n\n this.state = {\n copySuccess: false,\n buttonText: props.buttonDefaultText,\n hasFocused: false,\n };\n }\n\n componentDidMount() {\n const { autofocus, value } = this.props;\n\n if (autofocus && value) {\n this.performAutofocus();\n }\n }\n\n componentDidUpdate() {\n const { autofocus, value, triggerCopyOnLoad } = this.props;\n const { copySuccess, hasFocused } = this.state;\n\n // if we've set focus before, and should auto focus on update, make sure to\n // focus after component update\n if (autofocus && value) {\n this.performAutofocus();\n }\n\n if (triggerCopyOnLoad && !copySuccess && !hasFocused) {\n this.animateCopyButton();\n }\n }\n\n componentWillUnmount() {\n this.clearCopySuccessTimeout();\n }\n\n copyInputRef: ?HTMLInputElement;\n\n copySuccessTimeout: ?TimeoutID;\n\n isCopyCommandSupported: boolean;\n\n animateCopyButton() {\n const { successStateDuration, buttonSuccessText } = this.props;\n this.clearCopySuccessTimeout();\n\n this.setState(\n {\n copySuccess: true,\n buttonText: buttonSuccessText,\n hasFocused: true,\n },\n () => {\n this.copySuccessTimeout = setTimeout(() => {\n this.restoreCopyButton();\n }, successStateDuration);\n },\n );\n }\n\n clearCopySuccessTimeout() {\n if (!this.copySuccessTimeout) {\n return;\n }\n clearTimeout(this.copySuccessTimeout);\n this.copySuccessTimeout = null;\n }\n\n copySelectedText = () => document.execCommand('copy');\n\n restoreCopyButton = () => {\n this.setState({\n copySuccess: false,\n buttonText: this.props.buttonDefaultText,\n });\n };\n\n handleCopyButtonClick = () => {\n this.performAutofocus();\n this.copySelectedText();\n this.animateCopyButton();\n };\n\n handleFocus = (event: SyntheticEvent<>) => {\n if (this.copyInputRef) {\n this.performAutofocus();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n handleCopyEvent = (event: SyntheticEvent<>) => {\n this.animateCopyButton();\n\n const { onCopySuccess } = this.props;\n if (onCopySuccess) {\n onCopySuccess(event);\n }\n };\n\n performAutofocus = () => {\n const { copyInputRef } = this;\n if (copyInputRef) {\n copyInputRef.select();\n copyInputRef.scrollLeft = 0;\n }\n };\n\n renderCopyButton = () =>\n this.isCopyCommandSupported ? (\n <Button\n isDisabled={this.props.disabled}\n onClick={this.handleCopyButtonClick}\n type=\"button\"\n {...this.props.buttonProps}\n >\n {this.state.buttonText}\n </Button>\n ) : null;\n\n render() {\n const { className, ...rest } = this.props;\n const { copySuccess } = this.state;\n const { isCopyCommandSupported } = this;\n\n const inputProps = omit(rest, [\n 'autofocus',\n 'buttonDefaultText',\n 'buttonSuccessText',\n 'buttonProps',\n 'onCopySuccess',\n 'successStateDuration',\n 'triggerCopyOnLoad',\n ]);\n\n if (isCopyCommandSupported) {\n inputProps.inputRef = ref => {\n this.copyInputRef = ref;\n };\n }\n\n const wrapperClasses = classNames(className, {\n 'copy-success': copySuccess,\n 'text-input-with-copy-button-container': isCopyCommandSupported,\n });\n\n const copyEvent = isCopyCommandSupported ? { onCopy: this.handleCopyEvent } : {};\n\n return (\n <div className={wrapperClasses} {...copyEvent}>\n <TextInput {...inputProps} onFocus={this.handleFocus} />\n {this.renderCopyButton()}\n </div>\n );\n }\n}\n\nexport default TextInputWithCopyButton;\n"],"file":"TextInputWithCopyButton.js"}
1
+ {"version":3,"sources":["../../../src/components/text-input-with-copy-button/TextInputWithCopyButton.js"],"names":["React","classNames","omit","FormattedMessage","messages","TextInput","Button","DEFAULT_SUCCESS_STATE_DURATION","defaultCopyText","copy","defaultCopiedText","copied","TextInputWithCopyButton","props","document","execCommand","setState","copySuccess","buttonText","buttonDefaultText","performAutofocus","copySelectedText","animateCopyButton","event","copyInputRef","onFocus","onCopySuccess","select","scrollLeft","isCopyCommandSupported","disabled","handleCopyButtonClick","buttonProps","state","queryCommandSupported","hasFocused","autofocus","value","triggerCopyOnLoad","clearCopySuccessTimeout","successStateDuration","buttonSuccessText","copySuccessTimeout","setTimeout","restoreCopyButton","clearTimeout","additionalButtons","className","rest","inputProps","inputRef","ref","wrapperClasses","copyEvent","onCopy","handleCopyEvent","handleFocus","renderCopyButton","PureComponent","hideOptionalLabel","readOnly","type"],"mappings":"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","sourcesContent":["// @flow\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport omit from 'lodash/omit';\nimport { FormattedMessage } from 'react-intl';\n\nimport messages from '../../common/messages';\nimport TextInput from '../text-input';\nimport Button from '../button';\n\nimport './TextInputWithCopyButton.scss';\n\nconst DEFAULT_SUCCESS_STATE_DURATION = 3000;\n\nconst defaultCopyText = <FormattedMessage {...messages.copy} />;\nconst defaultCopiedText = <FormattedMessage {...messages.copied} />;\n\ntype Props = {\n /** Array of nodes for additional buttons */\n additionalButtons?: Array<React.Node>,\n /** Set the focus to input when component loads */\n autofocus?: boolean,\n /** Default copy button text */\n buttonDefaultText: string | React.Node,\n /** Copy button text when copy is successful */\n buttonProps?: Object,\n buttonSuccessText?: string | React.Node,\n className: string,\n disabled?: boolean,\n /** Label displayed for the text input */\n // TODO: Make label required\n label?: React.Node,\n /** onFocus handler for the input el */\n onCopySuccess?: Function,\n /** Function called when link is copied by keyboard or button */\n onFocus?: Function,\n /** Duration (milliseconds) in which to show the copy success state */\n successStateDuration: number,\n /** trigger the copy animation when the component loads (used to simulate a click on copy button) */\n triggerCopyOnLoad?: boolean,\n /** html input types (email, url, text, number), defaults to 'text' */\n type: string,\n /** Value of the text input */\n value: React.Node,\n};\n\ntype State = {\n buttonText: string | React.Node,\n copySuccess: boolean,\n hasFocused: boolean,\n};\n\nclass TextInputWithCopyButton extends React.PureComponent<Props, State> {\n static defaultProps = {\n buttonDefaultText: defaultCopyText,\n buttonProps: {},\n buttonSuccessText: defaultCopiedText,\n className: '',\n hideOptionalLabel: true,\n readOnly: true,\n successStateDuration: DEFAULT_SUCCESS_STATE_DURATION,\n type: 'text',\n };\n\n constructor(props: Props) {\n super(props);\n\n this.isCopyCommandSupported = document.queryCommandSupported('copy');\n\n this.state = {\n copySuccess: false,\n buttonText: props.buttonDefaultText,\n hasFocused: false,\n };\n }\n\n componentDidMount() {\n const { autofocus, value } = this.props;\n\n if (autofocus && value) {\n this.performAutofocus();\n }\n }\n\n componentDidUpdate() {\n const { autofocus, value, triggerCopyOnLoad } = this.props;\n const { copySuccess, hasFocused } = this.state;\n\n // if we've set focus before, and should auto focus on update, make sure to\n // focus after component update\n if (autofocus && value) {\n this.performAutofocus();\n }\n\n if (triggerCopyOnLoad && !copySuccess && !hasFocused) {\n this.animateCopyButton();\n }\n }\n\n componentWillUnmount() {\n this.clearCopySuccessTimeout();\n }\n\n copyInputRef: ?HTMLInputElement;\n\n copySuccessTimeout: ?TimeoutID;\n\n isCopyCommandSupported: boolean;\n\n animateCopyButton() {\n const { successStateDuration, buttonSuccessText } = this.props;\n this.clearCopySuccessTimeout();\n\n this.setState(\n {\n copySuccess: true,\n buttonText: buttonSuccessText,\n hasFocused: true,\n },\n () => {\n this.copySuccessTimeout = setTimeout(() => {\n this.restoreCopyButton();\n }, successStateDuration);\n },\n );\n }\n\n clearCopySuccessTimeout() {\n if (!this.copySuccessTimeout) {\n return;\n }\n clearTimeout(this.copySuccessTimeout);\n this.copySuccessTimeout = null;\n }\n\n copySelectedText = () => document.execCommand('copy');\n\n restoreCopyButton = () => {\n this.setState({\n copySuccess: false,\n buttonText: this.props.buttonDefaultText,\n });\n };\n\n handleCopyButtonClick = () => {\n this.performAutofocus();\n this.copySelectedText();\n this.animateCopyButton();\n };\n\n handleFocus = (event: SyntheticEvent<>) => {\n if (this.copyInputRef) {\n this.performAutofocus();\n }\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n handleCopyEvent = (event: SyntheticEvent<>) => {\n this.animateCopyButton();\n\n const { onCopySuccess } = this.props;\n if (onCopySuccess) {\n onCopySuccess(event);\n }\n };\n\n performAutofocus = () => {\n const { copyInputRef } = this;\n if (copyInputRef) {\n copyInputRef.select();\n copyInputRef.scrollLeft = 0;\n }\n };\n\n renderCopyButton = () =>\n this.isCopyCommandSupported ? (\n <Button\n isDisabled={this.props.disabled}\n onClick={this.handleCopyButtonClick}\n type=\"button\"\n {...this.props.buttonProps}\n >\n {this.state.buttonText}\n </Button>\n ) : null;\n\n render() {\n const { additionalButtons, className, ...rest } = this.props;\n const { copySuccess } = this.state;\n const { isCopyCommandSupported } = this;\n\n const inputProps = omit(rest, [\n 'autofocus',\n 'buttonDefaultText',\n 'buttonSuccessText',\n 'buttonProps',\n 'onCopySuccess',\n 'successStateDuration',\n 'triggerCopyOnLoad',\n ]);\n\n if (isCopyCommandSupported) {\n inputProps.inputRef = ref => {\n this.copyInputRef = ref;\n };\n }\n\n const wrapperClasses = classNames(className, {\n 'copy-success': copySuccess,\n 'text-input-with-copy-button-container': isCopyCommandSupported,\n });\n\n const copyEvent = isCopyCommandSupported ? { onCopy: this.handleCopyEvent } : {};\n\n return (\n <div className={wrapperClasses} {...copyEvent}>\n <TextInput {...inputProps} onFocus={this.handleFocus} />\n {additionalButtons}\n {this.renderCopyButton()}\n </div>\n );\n }\n}\n\nexport default TextInputWithCopyButton;\n"],"file":"TextInputWithCopyButton.js"}
@@ -19,19 +19,23 @@
19
19
 
20
20
  .bdl-Button,
21
21
  .btn {
22
- min-width: 80px;
23
22
  margin: 0;
24
23
  border-left: 0;
25
- border-top-left-radius: 0;
26
- border-bottom-left-radius: 0;
24
+ border-radius: 0;
25
+ }
26
+
27
+ .bdl-Button:last-child,
28
+ .btn:last-child {
29
+ min-width: 80px;
30
+ border-top-right-radius: $bdl-border-radius-size-med;
31
+ border-bottom-right-radius: $bdl-border-radius-size-med;
27
32
  transition: background-color .5s ease, border-color .5s ease;
28
33
  }
29
34
 
30
35
  &.copy-success {
31
- .btn,
32
- .btn:hover,
33
- .btn:active,
34
- .btn:active:hover {
36
+ .btn:last-child,
37
+ .btn:last-child:hover,
38
+ .btn:last-child:active {
35
39
  color: $white;
36
40
  background-color: $bdl-green-light;
37
41
  border-color: $bdl-green-light;
@@ -51,7 +51,7 @@
51
51
  }
52
52
 
53
53
  .thumbnail-card-subtitle {
54
- color: $bdl-gray-62;
54
+ color: $bdl-gray-65;
55
55
  }
56
56
  }
57
57
 
@@ -0,0 +1,46 @@
1
+ import * as React from 'react';
2
+ import ReadableTime from './ReadableTime';
3
+ import notes from './ReadableTime.stories.md';
4
+ var MILLISECONDS_PER_HOUR = 60 * 60 * 1000;
5
+ var MILLISECONDS_PER_DAY = MILLISECONDS_PER_HOUR * 24;
6
+ var MILLISECONDS_PER_WEEK = MILLISECONDS_PER_DAY * 7;
7
+ export var relativeTimestamps = function relativeTimestamps() {
8
+ return React.createElement("div", null, React.createElement("div", null, React.createElement(ReadableTime, {
9
+ timestamp: Date.now() - MILLISECONDS_PER_HOUR + 30 * 60 * 1000,
10
+ relativeThreshold: MILLISECONDS_PER_HOUR
11
+ })), React.createElement("div", null, React.createElement(ReadableTime, {
12
+ timestamp: Date.now() - 2 * MILLISECONDS_PER_HOUR,
13
+ relativeThreshold: MILLISECONDS_PER_HOUR
14
+ })), React.createElement("div", null, React.createElement(ReadableTime, {
15
+ timestamp: Date.now() - MILLISECONDS_PER_DAY,
16
+ relativeThreshold: MILLISECONDS_PER_HOUR
17
+ })));
18
+ };
19
+ export var dateWithoutTime = function dateWithoutTime() {
20
+ return React.createElement(ReadableTime, {
21
+ timestamp: Date.now() - MILLISECONDS_PER_WEEK,
22
+ relativeThreshold: MILLISECONDS_PER_HOUR
23
+ });
24
+ };
25
+ export var dateWithTime = function dateWithTime() {
26
+ return React.createElement(ReadableTime, {
27
+ timestamp: Date.now() - MILLISECONDS_PER_WEEK,
28
+ relativeThreshold: MILLISECONDS_PER_HOUR,
29
+ alwaysShowTime: true
30
+ });
31
+ };
32
+ export var dateInTheFutureWhenNotAllowed = function dateInTheFutureWhenNotAllowed() {
33
+ return React.createElement(ReadableTime, {
34
+ timestamp: Date.now() + 70 * MILLISECONDS_PER_DAY,
35
+ relativeThreshold: MILLISECONDS_PER_HOUR,
36
+ allowFutureTimestamps: false
37
+ });
38
+ };
39
+ export default {
40
+ title: 'Components|ReadableTime',
41
+ component: ReadableTime,
42
+ parameters: {
43
+ notes: notes
44
+ }
45
+ };
46
+ //# sourceMappingURL=ReadableTime.stories.js.map
@@ -0,0 +1,56 @@
1
+ import * as React from 'react';
2
+
3
+ import ReadableTime from './ReadableTime';
4
+ import notes from './ReadableTime.stories.md';
5
+
6
+ const MILLISECONDS_PER_HOUR = 60 * 60 * 1000;
7
+ const MILLISECONDS_PER_DAY = MILLISECONDS_PER_HOUR * 24;
8
+ const MILLISECONDS_PER_WEEK = MILLISECONDS_PER_DAY * 7;
9
+
10
+ export const relativeTimestamps = () => (
11
+ <div>
12
+ <div>
13
+ <ReadableTime
14
+ timestamp={Date.now() - MILLISECONDS_PER_HOUR + 30 * 60 * 1000}
15
+ relativeThreshold={MILLISECONDS_PER_HOUR}
16
+ />
17
+ </div>
18
+ <div>
19
+ <ReadableTime
20
+ timestamp={Date.now() - 2 * MILLISECONDS_PER_HOUR}
21
+ relativeThreshold={MILLISECONDS_PER_HOUR}
22
+ />
23
+ </div>
24
+ <div>
25
+ <ReadableTime timestamp={Date.now() - MILLISECONDS_PER_DAY} relativeThreshold={MILLISECONDS_PER_HOUR} />
26
+ </div>
27
+ </div>
28
+ );
29
+
30
+ export const dateWithoutTime = () => (
31
+ <ReadableTime timestamp={Date.now() - MILLISECONDS_PER_WEEK} relativeThreshold={MILLISECONDS_PER_HOUR} />
32
+ );
33
+
34
+ export const dateWithTime = () => (
35
+ <ReadableTime
36
+ timestamp={Date.now() - MILLISECONDS_PER_WEEK}
37
+ relativeThreshold={MILLISECONDS_PER_HOUR}
38
+ alwaysShowTime
39
+ />
40
+ );
41
+
42
+ export const dateInTheFutureWhenNotAllowed = () => (
43
+ <ReadableTime
44
+ timestamp={Date.now() + 70 * MILLISECONDS_PER_DAY}
45
+ relativeThreshold={MILLISECONDS_PER_HOUR}
46
+ allowFutureTimestamps={false}
47
+ />
48
+ );
49
+
50
+ export default {
51
+ title: 'Components|ReadableTime',
52
+ component: ReadableTime,
53
+ parameters: {
54
+ notes,
55
+ },
56
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/time/ReadableTime.stories.js"],"names":["React","ReadableTime","notes","MILLISECONDS_PER_HOUR","MILLISECONDS_PER_DAY","MILLISECONDS_PER_WEEK","relativeTimestamps","Date","now","dateWithoutTime","dateWithTime","dateInTheFutureWhenNotAllowed","title","component","parameters"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,OAAOC,YAAP,MAAyB,gBAAzB;AACA,OAAOC,KAAP,MAAkB,2BAAlB;AAEA,IAAMC,qBAAqB,GAAG,KAAK,EAAL,GAAU,IAAxC;AACA,IAAMC,oBAAoB,GAAGD,qBAAqB,GAAG,EAArD;AACA,IAAME,qBAAqB,GAAGD,oBAAoB,GAAG,CAArD;AAEA,OAAO,IAAME,kBAAkB,GAAG,SAArBA,kBAAqB;AAAA,SAC9B,iCACI,iCACI,oBAAC,YAAD;AACI,IAAA,SAAS,EAAEC,IAAI,CAACC,GAAL,KAAaL,qBAAb,GAAqC,KAAK,EAAL,GAAU,IAD9D;AAEI,IAAA,iBAAiB,EAAEA;AAFvB,IADJ,CADJ,EAOI,iCACI,oBAAC,YAAD;AACI,IAAA,SAAS,EAAEI,IAAI,CAACC,GAAL,KAAa,IAAIL,qBADhC;AAEI,IAAA,iBAAiB,EAAEA;AAFvB,IADJ,CAPJ,EAaI,iCACI,oBAAC,YAAD;AAAc,IAAA,SAAS,EAAEI,IAAI,CAACC,GAAL,KAAaJ,oBAAtC;AAA4D,IAAA,iBAAiB,EAAED;AAA/E,IADJ,CAbJ,CAD8B;AAAA,CAA3B;AAoBP,OAAO,IAAMM,eAAe,GAAG,SAAlBA,eAAkB;AAAA,SAC3B,oBAAC,YAAD;AAAc,IAAA,SAAS,EAAEF,IAAI,CAACC,GAAL,KAAaH,qBAAtC;AAA6D,IAAA,iBAAiB,EAAEF;AAAhF,IAD2B;AAAA,CAAxB;AAIP,OAAO,IAAMO,YAAY,GAAG,SAAfA,YAAe;AAAA,SACxB,oBAAC,YAAD;AACI,IAAA,SAAS,EAAEH,IAAI,CAACC,GAAL,KAAaH,qBAD5B;AAEI,IAAA,iBAAiB,EAAEF,qBAFvB;AAGI,IAAA,cAAc;AAHlB,IADwB;AAAA,CAArB;AAQP,OAAO,IAAMQ,6BAA6B,GAAG,SAAhCA,6BAAgC;AAAA,SACzC,oBAAC,YAAD;AACI,IAAA,SAAS,EAAEJ,IAAI,CAACC,GAAL,KAAa,KAAKJ,oBADjC;AAEI,IAAA,iBAAiB,EAAED,qBAFvB;AAGI,IAAA,qBAAqB,EAAE;AAH3B,IADyC;AAAA,CAAtC;AAQP,eAAe;AACXS,EAAAA,KAAK,EAAE,yBADI;AAEXC,EAAAA,SAAS,EAAEZ,YAFA;AAGXa,EAAAA,UAAU,EAAE;AACRZ,IAAAA,KAAK,EAALA;AADQ;AAHD,CAAf","sourcesContent":["import * as React from 'react';\n\nimport ReadableTime from './ReadableTime';\nimport notes from './ReadableTime.stories.md';\n\nconst MILLISECONDS_PER_HOUR = 60 * 60 * 1000;\nconst MILLISECONDS_PER_DAY = MILLISECONDS_PER_HOUR * 24;\nconst MILLISECONDS_PER_WEEK = MILLISECONDS_PER_DAY * 7;\n\nexport const relativeTimestamps = () => (\n <div>\n <div>\n <ReadableTime\n timestamp={Date.now() - MILLISECONDS_PER_HOUR + 30 * 60 * 1000}\n relativeThreshold={MILLISECONDS_PER_HOUR}\n />\n </div>\n <div>\n <ReadableTime\n timestamp={Date.now() - 2 * MILLISECONDS_PER_HOUR}\n relativeThreshold={MILLISECONDS_PER_HOUR}\n />\n </div>\n <div>\n <ReadableTime timestamp={Date.now() - MILLISECONDS_PER_DAY} relativeThreshold={MILLISECONDS_PER_HOUR} />\n </div>\n </div>\n);\n\nexport const dateWithoutTime = () => (\n <ReadableTime timestamp={Date.now() - MILLISECONDS_PER_WEEK} relativeThreshold={MILLISECONDS_PER_HOUR} />\n);\n\nexport const dateWithTime = () => (\n <ReadableTime\n timestamp={Date.now() - MILLISECONDS_PER_WEEK}\n relativeThreshold={MILLISECONDS_PER_HOUR}\n alwaysShowTime\n />\n);\n\nexport const dateInTheFutureWhenNotAllowed = () => (\n <ReadableTime\n timestamp={Date.now() + 70 * MILLISECONDS_PER_DAY}\n relativeThreshold={MILLISECONDS_PER_HOUR}\n allowFutureTimestamps={false}\n />\n);\n\nexport default {\n title: 'Components|ReadableTime',\n component: ReadableTime,\n parameters: {\n notes,\n },\n};\n"],"file":"ReadableTime.stories.js"}
@@ -19,7 +19,10 @@ var Toggle = React.forwardRef(function (_ref, ref) {
19
19
  name = _ref.name,
20
20
  onBlur = _ref.onBlur,
21
21
  onChange = _ref.onChange,
22
- rest = _objectWithoutProperties(_ref, ["className", "description", "isDisabled", "isOn", "isToggleRightAligned", "label", "name", "onBlur", "onChange"]);
22
+ onFocus = _ref.onFocus,
23
+ onMouseEnter = _ref.onMouseEnter,
24
+ onMouseLeave = _ref.onMouseLeave,
25
+ rest = _objectWithoutProperties(_ref, ["className", "description", "isDisabled", "isOn", "isToggleRightAligned", "label", "name", "onBlur", "onChange", "onFocus", "onMouseEnter", "onMouseLeave"]);
23
26
 
24
27
  var classes = classNames('toggle-container', className, {
25
28
  'is-toggle-right-aligned': isToggleRightAligned
@@ -33,21 +36,25 @@ var Toggle = React.forwardRef(function (_ref, ref) {
33
36
  }, label)];
34
37
 
35
38
  if (isToggleRightAligned) {
36
- toggleElements = toggleElements.reverse();
39
+ toggleElements.reverse();
37
40
  }
38
41
 
39
42
  return React.createElement("div", {
40
- className: classes
43
+ className: classes,
44
+ onMouseEnter: onMouseEnter,
45
+ onMouseLeave: onMouseLeave
41
46
  }, React.createElement("label", {
42
47
  className: "toggle-simple"
43
48
  }, React.createElement("input", _extends({
44
49
  checked: isOn,
45
50
  className: "toggle-simple-input",
46
51
  disabled: isDisabled,
47
- ref: ref,
48
52
  name: name,
49
53
  onBlur: onBlur,
50
54
  onChange: onChange,
55
+ onFocus: onFocus,
56
+ ref: ref,
57
+ role: "switch",
51
58
  type: "checkbox"
52
59
  }, rest)), toggleElements), description ? React.createElement("div", {
53
60
  className: "toggle-simple-description"
@@ -21,6 +21,12 @@ type Props = {
21
21
  onBlur?: (e: SyntheticInputEvent<HTMLInputElement>) => any,
22
22
  /** change callback function called with event as the argument */
23
23
  onChange?: (e: SyntheticInputEvent<HTMLInputElement>) => any,
24
+ /** focus callback function called with event as the argument */
25
+ onFocus?: (e: SyntheticInputEvent<HTMLInputElement>) => any,
26
+ /** mouse enter callback function called with event as the argument */
27
+ onMouseEnter?: (e: SyntheticInputEvent<HTMLDivElement>) => any,
28
+ /** mouse leave callback function called with event as the argument */
29
+ onMouseLeave?: (e: SyntheticInputEvent<HTMLDivElement>) => any,
24
30
  /** optional value for the toggles checkbox */
25
31
  value?: any,
26
32
  };
@@ -37,6 +43,9 @@ const Toggle = React.forwardRef<Props, HTMLInputElement>(
37
43
  name,
38
44
  onBlur,
39
45
  onChange,
46
+ onFocus,
47
+ onMouseEnter,
48
+ onMouseLeave,
40
49
  ...rest
41
50
  }: Props,
42
51
  ref,
@@ -44,29 +53,31 @@ const Toggle = React.forwardRef<Props, HTMLInputElement>(
44
53
  const classes = classNames('toggle-container', className, {
45
54
  'is-toggle-right-aligned': isToggleRightAligned,
46
55
  });
47
- let toggleElements = [
56
+
57
+ const toggleElements = [
48
58
  <div key="toggle-simple-switch" className="toggle-simple-switch" />,
49
59
  <div key="toggle-simple-label" className="toggle-simple-label">
50
60
  {label}
51
61
  </div>,
52
62
  ];
53
-
54
63
  if (isToggleRightAligned) {
55
- toggleElements = toggleElements.reverse();
64
+ toggleElements.reverse();
56
65
  }
57
66
 
58
67
  return (
59
- <div className={classes}>
68
+ <div className={classes} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>
60
69
  {/* eslint-disable-next-line jsx-a11y/label-has-for */}
61
70
  <label className="toggle-simple">
62
71
  <input
63
72
  checked={isOn}
64
73
  className="toggle-simple-input"
65
74
  disabled={isDisabled}
66
- ref={ref}
67
75
  name={name}
68
76
  onBlur={onBlur}
69
77
  onChange={onChange}
78
+ onFocus={onFocus}
79
+ ref={ref}
80
+ role="switch"
70
81
  type="checkbox"
71
82
  {...rest}
72
83
  />