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
@@ -32,7 +32,7 @@ import range from 'lodash/range';
32
32
  import uniqueId from 'lodash/uniqueId'; // @ts-ignore flow import
33
33
 
34
34
  import { RESIN_TAG_TARGET } from '../../common/variables';
35
- import Alert16 from '../../icon/fill/Alert16';
35
+ import AlertBadge16 from '../../icon/fill/AlertBadge16';
36
36
  import Calendar16 from '../../icon/fill/Calendar16';
37
37
  import ClearBadge16 from '../../icon/fill/ClearBadge16';
38
38
  import AccessiblePikaday from './AccessiblePikaday';
@@ -815,7 +815,7 @@ function (_React$Component) {
815
815
  className: "date-picker-clear-btn",
816
816
  onClick: this.clearDate,
817
817
  type: ButtonType.BUTTON
818
- }, React.createElement(ClearBadge16, null)) : null, hasError ? React.createElement(Alert16, {
818
+ }, React.createElement(ClearBadge16, null)) : null, hasError ? React.createElement(AlertBadge16, {
819
819
  className: "date-picker-icon-alert",
820
820
  title: React.createElement(FormattedMessage, messages.iconAlertText)
821
821
  }) : null, this.renderCalendarButton(), React.createElement("input", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/date-picker/DatePicker.tsx"],"names":["React","defineMessages","injectIntl","FormattedMessage","classNames","noop","range","uniqueId","RESIN_TAG_TARGET","Alert16","Calendar16","ClearBadge16","AccessiblePikaday","ButtonType","Label","PlainButton","Tooltip","TooltipPosition","TooltipTheme","convertDateToUnixMidnightTime","messages","previousMonth","nextMonth","iconAlertText","dateClearButton","chooseDate","dateInputRangeError","dateInputMaxError","dateInputMinError","TOGGLE_DELAY_MS","ENTER_KEY","ESCAPE_KEY","TAB_KEY","ISO_DATE_FORMAT_PATTERN","DateFormat","convertUTCToLocal","date","dateString","toUTCString","dateStringWithoutTimeZone","slice","Date","getFormattedDate","format","utcDate","ISO_STRING_DATE_FORMAT","toISOString","LOCALE_DATE_STRING_DATE_FORMAT","toLocaleDateString","UTC_TIME_DATE_FORMAT","UTC_ISO_STRING_DATE_FORMAT","getTime","localesWhereWeekStartsOnSunday","DatePicker","isDateInputInvalid","showDateInputError","props","onChange","isAccessible","state","formattedDate","formatValue","dateInputEl","datePicker","value","toString","isVisible","hide","focusDatePicker","setState","focus","intl","maxDate","minDate","formatMessage","dateInputError","maxLocaleDate","minLocaleDate","event","isKeyboardInputAllowed","isTextInputAllowed","stopPropagation","key","preventDefault","canUseDateInputType","target","parsedDate","parseDisplayDateType","setDate","onBlur","nextActiveElement","relatedTarget","document","activeElement","datePickerButtonEl","shouldStayClosed","setTimeout","inputDate","dateInputElVal","getDate","onSelectHandler","isDisabled","show","displayFormat","formatDate","test","dateFormat","createElement","type","e","isAlwaysVisible","accessibleAttrs","tabIndex","ref","handleButtonClick","BUTTON","customInput","yearRange","defaultValue","shouldUseAccessibleFallback","year","getFullYear","timeZone","i18n","months","map","month","weekdays","weekday","weekdaysShort","datePickerConfig","bound","blurFieldOnSelect","setDefaultDate","defaultDate","undefined","field","firstDay","includes","locale","position","showDaysInNextAndPreviousMonths","onSelect","formatDisplay","trigger","accessibleFieldEl","parse","formatDisplayDateType","keyboardInput","updateDateInputValue","nextProps","nextValue","nextMinDate","nextMaxDate","selectedDate","setMinDate","gotoDate","setMaxDate","destroy","className","description","error","errorTooltipPosition","hideLabel","hideOptionalLabel","inputProps","isClearable","isRequired","label","name","onFocus","placeholder","resinTarget","errorMessage","getDateInputError","hasError","hasValue","classes","ariaAttrs","errorMessageID","descriptionID","resinTargetAttr","valueAttr","onChangeAttr","handleOnChange","additionalAttrs","max","min","pattern","source","title","ERROR","cloneElement","disabled","required","handleInputBlur","handleOnClick","handleInputKeyDown","clearDate","renderCalendarButton","Component","UNIX_TIME_DATE_FORMAT","BOTTOM_LEFT","DatePickerBase"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { defineMessages, injectIntl, FormattedMessage, WrappedComponentProps } from 'react-intl';\n\nimport classNames from 'classnames';\nimport noop from 'lodash/noop';\nimport range from 'lodash/range';\nimport uniqueId from 'lodash/uniqueId';\n\n// @ts-ignore flow import\nimport { RESIN_TAG_TARGET } from '../../common/variables';\nimport Alert16 from '../../icon/fill/Alert16';\nimport Calendar16 from '../../icon/fill/Calendar16';\nimport ClearBadge16 from '../../icon/fill/ClearBadge16';\n\nimport AccessiblePikaday, { AccessiblePikadayOptions } from './AccessiblePikaday';\nimport { ButtonType } from '../button';\nimport Label from '../label';\nimport PlainButton from '../plain-button';\nimport Tooltip, { TooltipPosition, TooltipTheme } from '../tooltip';\n\n// @ts-ignore flow import\nimport { convertDateToUnixMidnightTime } from '../../utils/datetime';\n\nimport './DatePicker.scss';\n\nconst messages = defineMessages({\n previousMonth: {\n defaultMessage: 'Previous Month',\n description: 'Previous month button for a date picker calendar',\n id: 'boxui.base.previousMonth',\n },\n nextMonth: {\n defaultMessage: 'Next Month',\n description: 'Next month button for a date picker calendar',\n id: 'boxui.base.nextMonth',\n },\n iconAlertText: {\n defaultMessage: 'Invalid Date',\n description: 'Date entered is invalid',\n id: 'boxui.datePicker.iconAlertText',\n },\n dateClearButton: {\n defaultMessage: 'Clear Date',\n description: 'Button for clearing date picker',\n id: 'boxui.datePicker.dateClearButton',\n },\n chooseDate: {\n defaultMessage: 'Choose Date',\n description: 'Button for opening date picker',\n id: 'boxui.datePicker.chooseDate',\n },\n dateInputRangeError: {\n defaultMessage: 'Please enter a date between {minLocaleDate} and {maxLocaleDate}',\n description: 'Error message when date is out of the minimum and maximum range',\n id: 'boxui.datePicker.dateInputRangeError',\n },\n dateInputMaxError: {\n defaultMessage: 'Please enter a date before {maxLocaleDate}',\n description: 'Error message when date is later than the maximum date',\n id: 'boxui.datePicker.dateInputMaxError',\n },\n dateInputMinError: {\n defaultMessage: 'Please enter a date after {minLocaleDate}',\n description: 'Error message when date is earlier than the minimum date',\n id: 'boxui.datePicker.dateInputMinError',\n },\n});\n\nconst TOGGLE_DELAY_MS = 300;\nconst ENTER_KEY = 'Enter';\nconst ESCAPE_KEY = 'Escape';\nconst TAB_KEY = 'Tab';\n\nconst ISO_DATE_FORMAT_PATTERN = /^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;\n\nexport enum DateFormat {\n ISO_STRING_DATE_FORMAT = 'isoString',\n LOCALE_DATE_STRING_DATE_FORMAT = 'localeDateString',\n UTC_TIME_DATE_FORMAT = 'utcTime',\n UNIX_TIME_DATE_FORMAT = 'unixTime',\n UTC_ISO_STRING_DATE_FORMAT = 'utcISOString',\n}\n\n/**\n * Converts date from being relative to GMT, to being relative to browser\n * timezone. E.g., Thu Jun 29 2017 00:00:00 GMT =>\n * Thu Jun 29 2017 00:00:00 GMT-0700 (PDT)\n * @param {Date} date UTC date\n * @returns {Date} date Local date\n */\nfunction convertUTCToLocal(date: Date) {\n const dateString = date.toUTCString();\n // Remove ` GMT` from the timestamp string\n const dateStringWithoutTimeZone = dateString.slice(0, -4);\n return new Date(dateStringWithoutTimeZone);\n}\n\nfunction getFormattedDate(date: Date | null, format: DateFormat) {\n if (!date) {\n return '';\n }\n\n let utcDate;\n\n switch (format) {\n case DateFormat.ISO_STRING_DATE_FORMAT:\n return date.toISOString();\n case DateFormat.LOCALE_DATE_STRING_DATE_FORMAT:\n return date.toLocaleDateString();\n case DateFormat.UTC_TIME_DATE_FORMAT:\n return convertDateToUnixMidnightTime(date);\n case DateFormat.UTC_ISO_STRING_DATE_FORMAT:\n utcDate = new Date(convertDateToUnixMidnightTime(date));\n return utcDate.toISOString();\n default:\n return date.getTime();\n }\n}\n\nconst localesWhereWeekStartsOnSunday = ['en-US', 'en-CA', 'jp-JP'];\n\nexport interface DatePickerProps extends WrappedComponentProps {\n /** Add a css class to the component */\n className?: string;\n /** Custom input field */\n customInput?: React.ReactElement;\n /** The format of the date value for form submit */\n dateFormat?: DateFormat;\n /** Some optional description */\n description?: React.ReactNode;\n /**\n * The format of the date displayed in the input field\n * @deprecated, will no longer be supported with accessible mode enabled (isAccessible = true)\n */\n displayFormat?: {\n [key: string]: string;\n };\n /** Error message */\n error?: React.ReactNode;\n /** Position of error message tooltip */\n errorTooltipPosition?: TooltipPosition;\n /** Whether to show or hide the field's label */\n hideLabel?: boolean;\n /** Whether show or hide the 'Optional' label */\n hideOptionalLabel?: boolean;\n /** Props that will be applied on the input element */\n inputProps?: Object;\n /** Does the date input meet accessibility standards */\n isAccessible?: boolean;\n /** Is the calendar always visible */\n isAlwaysVisible?: boolean;\n /** Is input clearable */\n isClearable?: boolean;\n /** Is input disabled */\n isDisabled?: boolean;\n /** Is input required */\n isRequired?: boolean;\n /** Enables pikaday's default keyboard input support */\n isKeyboardInputAllowed?: boolean;\n /** Is user allowed to manually input a value (WARNING: this doesn't work with internationalization) */\n isTextInputAllowed?: boolean;\n /** Label displayed for the text input */\n label: React.ReactNode;\n /** The maximum date allowed to be selected */\n maxDate?: Date;\n /** The minimum date allowed to be selected */\n minDate?: Date;\n /** Name of the text input */\n name?: string;\n /** Called when input loses focus */\n onBlur?: ((event: React.FocusEvent<HTMLInputElement>) => void) | undefined;\n /** Called when input is changed, passed the selected Date */\n onChange?: Function;\n /** Called when input receives focus */\n onFocus?: ((event: React.FocusEvent<HTMLInputElement>) => void) | undefined;\n /** Placeholder for the text input */\n placeholder?: string;\n /** Resin tag */\n resinTarget?: string;\n /** Date to set the input */\n value?: Date | null;\n /** Number of years, or an array containing an upper and lower range */\n yearRange?: number | Array<number>;\n}\n\ninterface DatePickerState {\n /** Is the date input invalid */\n isDateInputInvalid: boolean;\n /** Shows error message tooltip for invalid date input */\n showDateInputError: boolean;\n}\n\nclass DatePicker extends React.Component<DatePickerProps, DatePickerState> {\n static defaultProps = {\n className: '',\n dateFormat: DateFormat.UNIX_TIME_DATE_FORMAT,\n displayFormat: {},\n error: '',\n errorTooltipPosition: TooltipPosition.BOTTOM_LEFT,\n inputProps: {},\n isClearable: true,\n isKeyboardInputAllowed: false,\n isTextInputAllowed: false,\n yearRange: 10,\n };\n\n state = {\n isDateInputInvalid: false,\n showDateInputError: false,\n };\n\n errorMessageID = uniqueId('errorMessage');\n\n descriptionID = uniqueId('description');\n\n componentDidMount() {\n const {\n customInput,\n dateFormat,\n displayFormat,\n intl,\n isAccessible,\n isAlwaysVisible,\n isTextInputAllowed,\n maxDate,\n minDate,\n onChange,\n value,\n yearRange,\n } = this.props;\n const { formatDate, formatMessage } = intl;\n const { nextMonth, previousMonth } = messages;\n let defaultValue = value;\n\n if (isAccessible && this.shouldUseAccessibleFallback()) {\n this.canUseDateInputType = false;\n }\n\n // When date format is utcTime, initial date needs to be converted from being relative to GMT to being\n // relative to browser timezone\n if (dateFormat === DateFormat.UTC_TIME_DATE_FORMAT && value) {\n defaultValue = convertUTCToLocal(value);\n\n if (onChange) {\n const formattedDate = this.formatValue(defaultValue);\n onChange(defaultValue, formattedDate);\n }\n }\n // Make sure the DST detection algorithm in browsers is up-to-date\n const year = new Date().getFullYear();\n const { timeZone } = displayFormat || {};\n const i18n = {\n previousMonth: formatMessage(previousMonth),\n nextMonth: formatMessage(nextMonth),\n months: range(12).map(month =>\n formatDate(new Date(year, month, 15), {\n month: 'long',\n timeZone,\n }),\n ),\n // weekdays must start with Sunday, so array of dates below is May 1st-8th, 2016\n weekdays: range(1, 8).map(date =>\n formatDate(new Date(2016, 4, date), {\n weekday: 'long',\n timeZone,\n }),\n ),\n weekdaysShort: range(1, 8).map(date =>\n formatDate(new Date(2016, 4, date), {\n weekday: 'narrow',\n timeZone,\n }),\n ),\n };\n\n // If \"bound\" is true (default), the DatePicker will be appended at the end of the document, with absolute positioning\n // If \"bound\" is false, the DatePicker will be appended to the DOM right after the input, with relative positioning\n const datePickerConfig: AccessiblePikadayOptions = {\n bound: !customInput,\n blurFieldOnSelect: false, // Available in pikaday > 1.5.1\n setDefaultDate: true,\n defaultDate: defaultValue === null ? undefined : defaultValue,\n field: this.dateInputEl,\n firstDay: localesWhereWeekStartsOnSunday.includes(intl.locale) ? 0 : 1,\n maxDate,\n minDate,\n position: 'bottom left',\n i18n,\n showDaysInNextAndPreviousMonths: true,\n onSelect: this.onSelectHandler,\n yearRange,\n toString: this.formatDisplay,\n };\n\n if (isAccessible) {\n if (this.canUseDateInputType) {\n delete datePickerConfig.field;\n datePickerConfig.trigger = this.dateInputEl;\n datePickerConfig.accessibleFieldEl = this.dateInputEl;\n datePickerConfig.datePickerButtonEl = this.datePickerButtonEl;\n }\n\n datePickerConfig.parse = this.parseDisplayDateType;\n datePickerConfig.toString = this.formatDisplayDateType;\n datePickerConfig.keyboardInput = false;\n }\n\n this.datePicker = new AccessiblePikaday(datePickerConfig);\n\n if (isTextInputAllowed) {\n this.updateDateInputValue(this.formatDisplay(defaultValue));\n }\n\n if (isAlwaysVisible) {\n this.datePicker.show();\n this.datePicker.hide = noop;\n }\n }\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillReceiveProps(nextProps: DatePickerProps) {\n if (!this.datePicker) return;\n\n const { value: nextValue = null, minDate: nextMinDate = null, maxDate: nextMaxDate = null } = nextProps;\n const { value, minDate, maxDate, isTextInputAllowed } = this.props;\n const selectedDate = this.datePicker && this.datePicker.getDate();\n\n // only set date when props change\n if (\n (nextValue && !value) ||\n (!nextValue && value) ||\n (nextValue && value && nextValue.getTime() !== value.getTime())\n ) {\n this.datePicker.setDate(nextValue);\n }\n // If text input is allowed the dateInputEl will act as an uncontrolled input and\n // we need to set formatted value manually.\n if (isTextInputAllowed) {\n this.updateDateInputValue(this.formatDisplay(nextValue));\n }\n if (\n (nextMinDate && !minDate) ||\n (nextMinDate && minDate) ||\n (nextMinDate && minDate && nextMinDate.getTime() !== minDate.getTime())\n ) {\n this.datePicker.setMinDate(nextMinDate);\n\n if (selectedDate && selectedDate < nextMinDate) {\n this.datePicker.gotoDate(nextMinDate);\n }\n }\n if (\n (nextMaxDate && !maxDate) ||\n (!nextMaxDate && maxDate) ||\n (nextMaxDate && maxDate && nextMaxDate.getTime() !== maxDate.getTime())\n ) {\n this.datePicker.setMaxDate(nextMaxDate);\n\n if (selectedDate && nextMaxDate && selectedDate > nextMaxDate) {\n this.datePicker.gotoDate(nextMaxDate);\n }\n }\n }\n\n componentWillUnmount() {\n if (this.datePicker) {\n this.datePicker.destroy();\n }\n }\n\n onSelectHandler = (date: Date | null = null) => {\n const { onChange, isAccessible } = this.props;\n const { isDateInputInvalid } = this.state;\n\n if (onChange) {\n const formattedDate = this.formatValue(date);\n onChange(date, formattedDate);\n }\n\n if (isAccessible) {\n if (this.dateInputEl && this.datePicker) {\n // Required because Pikaday instance is unbound\n // See https://github.com/Pikaday/Pikaday#usage\n this.dateInputEl.value = this.datePicker.toString();\n }\n if (this.datePicker && this.datePicker.isVisible()) {\n this.datePicker.hide();\n this.focusDatePicker();\n }\n }\n\n if (isDateInputInvalid) {\n this.setState({ isDateInputInvalid: false, showDateInputError: false });\n }\n };\n\n updateDateInputValue(value: string) {\n if (this.dateInputEl) {\n this.dateInputEl.value = value;\n }\n }\n\n dateInputEl: HTMLInputElement | null | undefined;\n\n datePicker: Pikaday | null = null;\n\n datePickerButtonEl: HTMLButtonElement | HTMLDivElement | null | undefined;\n\n // Used to detect when a fallback is necessary when isAccessible is enabled\n canUseDateInputType = true;\n\n // Used to prevent bad sequences of hide/show when toggling the datepicker button\n shouldStayClosed = false;\n\n focusDatePicker = () => {\n // This also opens the date picker when isAccessible is disabled\n if (this.dateInputEl) {\n this.dateInputEl.focus();\n }\n };\n\n getDateInputError = () => {\n const { intl, maxDate = null, minDate = null } = this.props;\n const { showDateInputError } = this.state;\n const { formatMessage } = intl;\n\n if (!showDateInputError) return '';\n\n let dateInputError = '';\n const maxLocaleDate = getFormattedDate(maxDate, DateFormat.LOCALE_DATE_STRING_DATE_FORMAT);\n const minLocaleDate = getFormattedDate(minDate, DateFormat.LOCALE_DATE_STRING_DATE_FORMAT);\n\n if (maxLocaleDate && minLocaleDate) {\n dateInputError = formatMessage(messages.dateInputRangeError, { maxLocaleDate, minLocaleDate });\n } else if (maxLocaleDate) {\n dateInputError = formatMessage(messages.dateInputMaxError, { maxLocaleDate });\n } else if (minLocaleDate) {\n dateInputError = formatMessage(messages.dateInputMinError, { minLocaleDate });\n }\n\n return dateInputError;\n };\n\n handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const { isKeyboardInputAllowed, isTextInputAllowed, isAccessible } = this.props;\n\n if (!isKeyboardInputAllowed && this.datePicker && this.datePicker.isVisible()) {\n event.stopPropagation();\n }\n\n // Stops up/down arrow & spacebar from moving page scroll position since pikaday does not preventDefault correctly\n if (!(isTextInputAllowed || isAccessible) && event.key !== TAB_KEY) {\n event.preventDefault();\n }\n\n if ((isTextInputAllowed || (isAccessible && !this.canUseDateInputType)) && event.key === ENTER_KEY) {\n event.preventDefault();\n }\n\n // Stops enter & spacebar from opening up the browser's default date picker\n if (isAccessible && (event.key === ENTER_KEY || event.key === ' ')) {\n event.preventDefault();\n }\n\n if (event.key === ENTER_KEY || event.key === ESCAPE_KEY || event.key === ' ') {\n // Since pikaday auto-selects when you move the select box, enter/space don't do anything but close the date picker\n if (this.datePicker && this.datePicker.isVisible()) {\n this.datePicker.hide();\n }\n }\n };\n\n handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { isAccessible, maxDate, minDate, onChange } = this.props;\n const { isDateInputInvalid } = this.state;\n\n if (!isAccessible || !this.canUseDateInputType) {\n return;\n }\n\n if (this.datePicker && this.datePicker.isVisible()) {\n event.stopPropagation();\n }\n\n const { value } = event.target;\n if (this.datePicker && value) {\n const parsedDate = this.parseDisplayDateType(value);\n\n if (parsedDate) {\n if ((minDate && parsedDate < minDate) || (maxDate && parsedDate > maxDate)) {\n this.datePicker.setDate(null);\n this.setState({ isDateInputInvalid: true });\n return;\n }\n // Reset the error styling on valid date input\n if (isDateInputInvalid) {\n this.setState({ isDateInputInvalid: false, showDateInputError: false });\n }\n } else {\n this.setState({ isDateInputInvalid: true });\n }\n\n // Set date so Pikaday date picker value stays in sync with input\n this.datePicker.setDate(parsedDate, true);\n\n if (onChange) {\n const formattedDate = this.formatValue(parsedDate);\n onChange(parsedDate, formattedDate);\n }\n } else if (isDateInputInvalid) {\n this.setState({ isDateInputInvalid: false, showDateInputError: false });\n }\n };\n\n handleInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const { isAccessible, isTextInputAllowed, onBlur } = this.props;\n const { isDateInputInvalid } = this.state;\n const nextActiveElement = event.relatedTarget || document.activeElement;\n\n // This is mostly here to cancel out the pikaday hide() on blur\n if (\n this.datePicker &&\n this.datePicker.isVisible() &&\n nextActiveElement &&\n nextActiveElement === this.datePickerButtonEl\n ) {\n this.shouldStayClosed = true;\n setTimeout(() => {\n this.shouldStayClosed = false;\n }, TOGGLE_DELAY_MS);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n\n // Since we fire parent onChange event if isTextInputAllowed,\n // fire it on blur if the user typed a correct date format\n let inputDate: Date | null | undefined = null;\n\n if (this.dateInputEl) {\n let dateInputElVal = null;\n if (isAccessible && !this.canUseDateInputType) {\n dateInputElVal = this.parseDisplayDateType(this.dateInputEl.value);\n }\n inputDate = new Date(dateInputElVal || this.dateInputEl.value);\n }\n\n if ((isTextInputAllowed || (isAccessible && !this.canUseDateInputType)) && inputDate && inputDate.getDate()) {\n this.onSelectHandler(inputDate);\n }\n\n if (isAccessible && isDateInputInvalid) this.setState({ showDateInputError: true });\n };\n\n handleButtonClick = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n const { isAccessible, isDisabled } = this.props;\n\n if (isAccessible) {\n if (isDisabled || !this.datePicker) {\n return;\n }\n\n if (this.datePicker.isVisible()) {\n this.datePicker.hide();\n this.focusDatePicker();\n } else {\n this.datePicker.show();\n }\n return;\n }\n\n if (!this.shouldStayClosed) {\n this.focusDatePicker();\n }\n };\n\n handleOnClick = (event: React.SyntheticEvent<HTMLInputElement>) => {\n const { isAccessible } = this.props;\n\n if (isAccessible) {\n // Suppress Firefox default behavior: clicking on input type \"date\"\n // opens the browser date picker.\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n formatDisplay = (date?: Date | null): string => {\n const { displayFormat, intl } = this.props;\n return date ? intl.formatDate(date, displayFormat) : '';\n };\n\n formatDisplayDateType = (date?: Date | null): string => {\n // Input type \"date\" only accepts the format YYYY-MM-DD\n return date ? getFormattedDate(date, DateFormat.UTC_ISO_STRING_DATE_FORMAT).slice(0, 10) : '';\n };\n\n parseDisplayDateType = (dateString?: string | null): Date | null => {\n if (dateString && ISO_DATE_FORMAT_PATTERN.test(dateString)) {\n // Calling new Date('YYYY-MM-DD') without 'T00:00:00' yields undesired results:\n // E.g. new Date('2017-06-01') => May 31 2017\n // E.g. new Date('2017-06-01T00:00:00') => June 01 2017\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date#parameters\n return new Date(`${dateString}T00:00:00`);\n }\n return null;\n };\n\n formatValue = (date: Date | null): string | number => {\n const { dateFormat } = this.props;\n return dateFormat ? getFormattedDate(date, dateFormat) : '';\n };\n\n clearDate = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n // Prevents the date picker from opening after clearing\n event.preventDefault();\n const { isAccessible } = this.props;\n\n if (this.datePicker) {\n this.datePicker.setDate(null);\n }\n this.onSelectHandler(null);\n\n if (isAccessible) {\n this.focusDatePicker();\n }\n };\n\n /** Determines whether a new date input falls back to a text input or not */\n shouldUseAccessibleFallback = (): boolean => {\n const test = document.createElement('input');\n\n try {\n test.type = 'date';\n } catch (e) {\n // no-op\n }\n\n // If date input falls back to text input, show the fallback\n return test.type === 'text';\n };\n\n renderCalendarButton = () => {\n const { intl, isAccessible, isAlwaysVisible, isDisabled } = this.props;\n const { formatMessage } = intl;\n\n if (isAlwaysVisible) {\n return null;\n }\n\n // De-emphasizing the Pikaday date picker because it does not meet accessibility standards\n // Screenreaders & navigating via keyboard will no longer pick up on this element\n const accessibleAttrs = isAccessible ? { 'aria-hidden': true, tabIndex: -1 } : {};\n\n return (\n <PlainButton\n aria-label={formatMessage(messages.chooseDate)}\n className=\"date-picker-open-btn\"\n getDOMRef={ref => {\n this.datePickerButtonEl = ref;\n }}\n isDisabled={isDisabled}\n onClick={this.handleButtonClick}\n type={ButtonType.BUTTON}\n {...accessibleAttrs}\n >\n <Calendar16 />\n </PlainButton>\n );\n };\n\n render() {\n const {\n className,\n customInput,\n description,\n error,\n errorTooltipPosition,\n hideLabel,\n hideOptionalLabel,\n inputProps,\n intl,\n isAccessible,\n isClearable,\n isDisabled,\n isRequired,\n isTextInputAllowed,\n label,\n maxDate,\n minDate,\n name,\n onFocus,\n placeholder,\n resinTarget,\n value,\n } = this.props;\n const { isDateInputInvalid } = this.state;\n const { formatMessage } = intl;\n\n const errorMessage = error || this.getDateInputError();\n const hasError = !!errorMessage || isDateInputInvalid;\n const hasValue = !!value || isDateInputInvalid;\n\n const classes = classNames(className, 'date-picker-wrapper', {\n 'show-clear-btn': isClearable && hasValue && !isDisabled,\n 'show-error': hasError,\n });\n\n const ariaAttrs = {\n 'aria-invalid': hasError,\n 'aria-required': isRequired,\n 'aria-errormessage': this.errorMessageID,\n 'aria-describedby': description ? this.descriptionID : undefined,\n };\n\n const resinTargetAttr = resinTarget ? { [RESIN_TAG_TARGET]: resinTarget } : {};\n\n let valueAttr;\n if (isAccessible) {\n valueAttr = { defaultValue: this.formatDisplayDateType(value) };\n } else if (isTextInputAllowed) {\n valueAttr = { defaultValue: this.formatDisplay(value) };\n } else {\n valueAttr = { value: this.formatDisplay(value) };\n }\n\n let onChangeAttr;\n if (isAccessible && this.canUseDateInputType) {\n onChangeAttr = { onChange: this.handleOnChange };\n } else if (isTextInputAllowed || (isAccessible && !this.canUseDateInputType)) {\n onChangeAttr = {};\n } else {\n // Fixes prop type error about read-only field\n // Not adding readOnly so constraint validation works\n onChangeAttr = { onChange: noop };\n }\n\n let additionalAttrs;\n if (isAccessible && this.canUseDateInputType) {\n additionalAttrs = {\n max: this.formatDisplayDateType(maxDate) || '9999-12-31',\n min: this.formatDisplayDateType(minDate) || '0001-01-01',\n };\n } else if (isAccessible && !this.canUseDateInputType) {\n // \"name\" prop is required for pattern validation to be surfaced on form submit. See components/form-elements/form/Form.js\n // \"title\" prop is shown during constraint validation as a description of the pattern\n // See https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern#usability\n additionalAttrs = { name, pattern: ISO_DATE_FORMAT_PATTERN.source, title: 'YYYY-MM-DD' };\n } else {\n additionalAttrs = {};\n }\n\n return (\n <div className={classes}>\n <span className=\"date-picker-icon-holder\">\n <Label hideLabel={hideLabel} showOptionalText={!hideOptionalLabel && !isRequired} text={label}>\n <>\n {!!description && (\n <div id={this.descriptionID} className=\"date-picker-description\">\n {description}\n </div>\n )}\n <Tooltip\n className=\"date-picker-error-tooltip\"\n isShown={!!errorMessage}\n position={errorTooltipPosition}\n text={errorMessage || ''}\n theme={TooltipTheme.ERROR}\n >\n {customInput ? (\n React.cloneElement(customInput, {\n disabled: isDisabled,\n ref: (ref: HTMLInputElement) => {\n this.dateInputEl = ref;\n },\n required: isRequired,\n ...resinTargetAttr,\n ...ariaAttrs,\n })\n ) : (\n <input\n ref={ref => {\n this.dateInputEl = ref;\n }}\n className=\"date-picker-input\"\n disabled={isDisabled}\n onBlur={this.handleInputBlur}\n onClick={this.handleOnClick}\n placeholder={placeholder || formatMessage(messages.chooseDate)}\n required={isRequired}\n type={isAccessible && this.canUseDateInputType ? 'date' : 'text'}\n {...onChangeAttr}\n onFocus={onFocus}\n onKeyDown={this.handleInputKeyDown}\n {...resinTargetAttr}\n {...ariaAttrs}\n {...inputProps}\n {...valueAttr}\n {...additionalAttrs}\n />\n )}\n </Tooltip>\n <span id={this.errorMessageID} className=\"accessibility-hidden\" role=\"alert\">\n {errorMessage}\n </span>\n </>\n </Label>\n {isClearable && hasValue && !isDisabled ? (\n <PlainButton\n aria-label={formatMessage(messages.dateClearButton)}\n className=\"date-picker-clear-btn\"\n onClick={this.clearDate}\n type={ButtonType.BUTTON}\n >\n <ClearBadge16 />\n </PlainButton>\n ) : null}\n {hasError ? (\n <Alert16\n className=\"date-picker-icon-alert\"\n title={<FormattedMessage {...messages.iconAlertText} />}\n />\n ) : null}\n {this.renderCalendarButton()}\n <input\n className=\"date-picker-unix-time-input\"\n name={name}\n readOnly\n type=\"hidden\"\n value={value ? this.formatValue(value) : ''}\n />\n </span>\n </div>\n );\n }\n}\n\nexport { DatePicker as DatePickerBase };\nexport default injectIntl(DatePicker);\n"],"file":"DatePicker.js"}
1
+ {"version":3,"sources":["../../../src/components/date-picker/DatePicker.tsx"],"names":["React","defineMessages","injectIntl","FormattedMessage","classNames","noop","range","uniqueId","RESIN_TAG_TARGET","AlertBadge16","Calendar16","ClearBadge16","AccessiblePikaday","ButtonType","Label","PlainButton","Tooltip","TooltipPosition","TooltipTheme","convertDateToUnixMidnightTime","messages","previousMonth","nextMonth","iconAlertText","dateClearButton","chooseDate","dateInputRangeError","dateInputMaxError","dateInputMinError","TOGGLE_DELAY_MS","ENTER_KEY","ESCAPE_KEY","TAB_KEY","ISO_DATE_FORMAT_PATTERN","DateFormat","convertUTCToLocal","date","dateString","toUTCString","dateStringWithoutTimeZone","slice","Date","getFormattedDate","format","utcDate","ISO_STRING_DATE_FORMAT","toISOString","LOCALE_DATE_STRING_DATE_FORMAT","toLocaleDateString","UTC_TIME_DATE_FORMAT","UTC_ISO_STRING_DATE_FORMAT","getTime","localesWhereWeekStartsOnSunday","DatePicker","isDateInputInvalid","showDateInputError","props","onChange","isAccessible","state","formattedDate","formatValue","dateInputEl","datePicker","value","toString","isVisible","hide","focusDatePicker","setState","focus","intl","maxDate","minDate","formatMessage","dateInputError","maxLocaleDate","minLocaleDate","event","isKeyboardInputAllowed","isTextInputAllowed","stopPropagation","key","preventDefault","canUseDateInputType","target","parsedDate","parseDisplayDateType","setDate","onBlur","nextActiveElement","relatedTarget","document","activeElement","datePickerButtonEl","shouldStayClosed","setTimeout","inputDate","dateInputElVal","getDate","onSelectHandler","isDisabled","show","displayFormat","formatDate","test","dateFormat","createElement","type","e","isAlwaysVisible","accessibleAttrs","tabIndex","ref","handleButtonClick","BUTTON","customInput","yearRange","defaultValue","shouldUseAccessibleFallback","year","getFullYear","timeZone","i18n","months","map","month","weekdays","weekday","weekdaysShort","datePickerConfig","bound","blurFieldOnSelect","setDefaultDate","defaultDate","undefined","field","firstDay","includes","locale","position","showDaysInNextAndPreviousMonths","onSelect","formatDisplay","trigger","accessibleFieldEl","parse","formatDisplayDateType","keyboardInput","updateDateInputValue","nextProps","nextValue","nextMinDate","nextMaxDate","selectedDate","setMinDate","gotoDate","setMaxDate","destroy","className","description","error","errorTooltipPosition","hideLabel","hideOptionalLabel","inputProps","isClearable","isRequired","label","name","onFocus","placeholder","resinTarget","errorMessage","getDateInputError","hasError","hasValue","classes","ariaAttrs","errorMessageID","descriptionID","resinTargetAttr","valueAttr","onChangeAttr","handleOnChange","additionalAttrs","max","min","pattern","source","title","ERROR","cloneElement","disabled","required","handleInputBlur","handleOnClick","handleInputKeyDown","clearDate","renderCalendarButton","Component","UNIX_TIME_DATE_FORMAT","BOTTOM_LEFT","DatePickerBase"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { defineMessages, injectIntl, FormattedMessage, WrappedComponentProps } from 'react-intl';\n\nimport classNames from 'classnames';\nimport noop from 'lodash/noop';\nimport range from 'lodash/range';\nimport uniqueId from 'lodash/uniqueId';\n\n// @ts-ignore flow import\nimport { RESIN_TAG_TARGET } from '../../common/variables';\nimport AlertBadge16 from '../../icon/fill/AlertBadge16';\nimport Calendar16 from '../../icon/fill/Calendar16';\nimport ClearBadge16 from '../../icon/fill/ClearBadge16';\n\nimport AccessiblePikaday, { AccessiblePikadayOptions } from './AccessiblePikaday';\nimport { ButtonType } from '../button';\nimport Label from '../label';\nimport PlainButton from '../plain-button';\nimport Tooltip, { TooltipPosition, TooltipTheme } from '../tooltip';\n\n// @ts-ignore flow import\nimport { convertDateToUnixMidnightTime } from '../../utils/datetime';\n\nimport './DatePicker.scss';\n\nconst messages = defineMessages({\n previousMonth: {\n defaultMessage: 'Previous Month',\n description: 'Previous month button for a date picker calendar',\n id: 'boxui.base.previousMonth',\n },\n nextMonth: {\n defaultMessage: 'Next Month',\n description: 'Next month button for a date picker calendar',\n id: 'boxui.base.nextMonth',\n },\n iconAlertText: {\n defaultMessage: 'Invalid Date',\n description: 'Date entered is invalid',\n id: 'boxui.datePicker.iconAlertText',\n },\n dateClearButton: {\n defaultMessage: 'Clear Date',\n description: 'Button for clearing date picker',\n id: 'boxui.datePicker.dateClearButton',\n },\n chooseDate: {\n defaultMessage: 'Choose Date',\n description: 'Button for opening date picker',\n id: 'boxui.datePicker.chooseDate',\n },\n dateInputRangeError: {\n defaultMessage: 'Please enter a date between {minLocaleDate} and {maxLocaleDate}',\n description: 'Error message when date is out of the minimum and maximum range',\n id: 'boxui.datePicker.dateInputRangeError',\n },\n dateInputMaxError: {\n defaultMessage: 'Please enter a date before {maxLocaleDate}',\n description: 'Error message when date is later than the maximum date',\n id: 'boxui.datePicker.dateInputMaxError',\n },\n dateInputMinError: {\n defaultMessage: 'Please enter a date after {minLocaleDate}',\n description: 'Error message when date is earlier than the minimum date',\n id: 'boxui.datePicker.dateInputMinError',\n },\n});\n\nconst TOGGLE_DELAY_MS = 300;\nconst ENTER_KEY = 'Enter';\nconst ESCAPE_KEY = 'Escape';\nconst TAB_KEY = 'Tab';\n\nconst ISO_DATE_FORMAT_PATTERN = /^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;\n\nexport enum DateFormat {\n ISO_STRING_DATE_FORMAT = 'isoString',\n LOCALE_DATE_STRING_DATE_FORMAT = 'localeDateString',\n UTC_TIME_DATE_FORMAT = 'utcTime',\n UNIX_TIME_DATE_FORMAT = 'unixTime',\n UTC_ISO_STRING_DATE_FORMAT = 'utcISOString',\n}\n\n/**\n * Converts date from being relative to GMT, to being relative to browser\n * timezone. E.g., Thu Jun 29 2017 00:00:00 GMT =>\n * Thu Jun 29 2017 00:00:00 GMT-0700 (PDT)\n * @param {Date} date UTC date\n * @returns {Date} date Local date\n */\nfunction convertUTCToLocal(date: Date) {\n const dateString = date.toUTCString();\n // Remove ` GMT` from the timestamp string\n const dateStringWithoutTimeZone = dateString.slice(0, -4);\n return new Date(dateStringWithoutTimeZone);\n}\n\nfunction getFormattedDate(date: Date | null, format: DateFormat) {\n if (!date) {\n return '';\n }\n\n let utcDate;\n\n switch (format) {\n case DateFormat.ISO_STRING_DATE_FORMAT:\n return date.toISOString();\n case DateFormat.LOCALE_DATE_STRING_DATE_FORMAT:\n return date.toLocaleDateString();\n case DateFormat.UTC_TIME_DATE_FORMAT:\n return convertDateToUnixMidnightTime(date);\n case DateFormat.UTC_ISO_STRING_DATE_FORMAT:\n utcDate = new Date(convertDateToUnixMidnightTime(date));\n return utcDate.toISOString();\n default:\n return date.getTime();\n }\n}\n\nconst localesWhereWeekStartsOnSunday = ['en-US', 'en-CA', 'jp-JP'];\n\nexport interface DatePickerProps extends WrappedComponentProps {\n /** Add a css class to the component */\n className?: string;\n /** Custom input field */\n customInput?: React.ReactElement;\n /** The format of the date value for form submit */\n dateFormat?: DateFormat;\n /** Some optional description */\n description?: React.ReactNode;\n /**\n * The format of the date displayed in the input field\n * @deprecated, will no longer be supported with accessible mode enabled (isAccessible = true)\n */\n displayFormat?: {\n [key: string]: string;\n };\n /** Error message */\n error?: React.ReactNode;\n /** Position of error message tooltip */\n errorTooltipPosition?: TooltipPosition;\n /** Whether to show or hide the field's label */\n hideLabel?: boolean;\n /** Whether show or hide the 'Optional' label */\n hideOptionalLabel?: boolean;\n /** Props that will be applied on the input element */\n inputProps?: Object;\n /** Does the date input meet accessibility standards */\n isAccessible?: boolean;\n /** Is the calendar always visible */\n isAlwaysVisible?: boolean;\n /** Is input clearable */\n isClearable?: boolean;\n /** Is input disabled */\n isDisabled?: boolean;\n /** Is input required */\n isRequired?: boolean;\n /** Enables pikaday's default keyboard input support */\n isKeyboardInputAllowed?: boolean;\n /** Is user allowed to manually input a value (WARNING: this doesn't work with internationalization) */\n isTextInputAllowed?: boolean;\n /** Label displayed for the text input */\n label: React.ReactNode;\n /** The maximum date allowed to be selected */\n maxDate?: Date;\n /** The minimum date allowed to be selected */\n minDate?: Date;\n /** Name of the text input */\n name?: string;\n /** Called when input loses focus */\n onBlur?: ((event: React.FocusEvent<HTMLInputElement>) => void) | undefined;\n /** Called when input is changed, passed the selected Date */\n onChange?: Function;\n /** Called when input receives focus */\n onFocus?: ((event: React.FocusEvent<HTMLInputElement>) => void) | undefined;\n /** Placeholder for the text input */\n placeholder?: string;\n /** Resin tag */\n resinTarget?: string;\n /** Date to set the input */\n value?: Date | null;\n /** Number of years, or an array containing an upper and lower range */\n yearRange?: number | Array<number>;\n}\n\ninterface DatePickerState {\n /** Is the date input invalid */\n isDateInputInvalid: boolean;\n /** Shows error message tooltip for invalid date input */\n showDateInputError: boolean;\n}\n\nclass DatePicker extends React.Component<DatePickerProps, DatePickerState> {\n static defaultProps = {\n className: '',\n dateFormat: DateFormat.UNIX_TIME_DATE_FORMAT,\n displayFormat: {},\n error: '',\n errorTooltipPosition: TooltipPosition.BOTTOM_LEFT,\n inputProps: {},\n isClearable: true,\n isKeyboardInputAllowed: false,\n isTextInputAllowed: false,\n yearRange: 10,\n };\n\n state = {\n isDateInputInvalid: false,\n showDateInputError: false,\n };\n\n errorMessageID = uniqueId('errorMessage');\n\n descriptionID = uniqueId('description');\n\n componentDidMount() {\n const {\n customInput,\n dateFormat,\n displayFormat,\n intl,\n isAccessible,\n isAlwaysVisible,\n isTextInputAllowed,\n maxDate,\n minDate,\n onChange,\n value,\n yearRange,\n } = this.props;\n const { formatDate, formatMessage } = intl;\n const { nextMonth, previousMonth } = messages;\n let defaultValue = value;\n\n if (isAccessible && this.shouldUseAccessibleFallback()) {\n this.canUseDateInputType = false;\n }\n\n // When date format is utcTime, initial date needs to be converted from being relative to GMT to being\n // relative to browser timezone\n if (dateFormat === DateFormat.UTC_TIME_DATE_FORMAT && value) {\n defaultValue = convertUTCToLocal(value);\n\n if (onChange) {\n const formattedDate = this.formatValue(defaultValue);\n onChange(defaultValue, formattedDate);\n }\n }\n // Make sure the DST detection algorithm in browsers is up-to-date\n const year = new Date().getFullYear();\n const { timeZone } = displayFormat || {};\n const i18n = {\n previousMonth: formatMessage(previousMonth),\n nextMonth: formatMessage(nextMonth),\n months: range(12).map(month =>\n formatDate(new Date(year, month, 15), {\n month: 'long',\n timeZone,\n }),\n ),\n // weekdays must start with Sunday, so array of dates below is May 1st-8th, 2016\n weekdays: range(1, 8).map(date =>\n formatDate(new Date(2016, 4, date), {\n weekday: 'long',\n timeZone,\n }),\n ),\n weekdaysShort: range(1, 8).map(date =>\n formatDate(new Date(2016, 4, date), {\n weekday: 'narrow',\n timeZone,\n }),\n ),\n };\n\n // If \"bound\" is true (default), the DatePicker will be appended at the end of the document, with absolute positioning\n // If \"bound\" is false, the DatePicker will be appended to the DOM right after the input, with relative positioning\n const datePickerConfig: AccessiblePikadayOptions = {\n bound: !customInput,\n blurFieldOnSelect: false, // Available in pikaday > 1.5.1\n setDefaultDate: true,\n defaultDate: defaultValue === null ? undefined : defaultValue,\n field: this.dateInputEl,\n firstDay: localesWhereWeekStartsOnSunday.includes(intl.locale) ? 0 : 1,\n maxDate,\n minDate,\n position: 'bottom left',\n i18n,\n showDaysInNextAndPreviousMonths: true,\n onSelect: this.onSelectHandler,\n yearRange,\n toString: this.formatDisplay,\n };\n\n if (isAccessible) {\n if (this.canUseDateInputType) {\n delete datePickerConfig.field;\n datePickerConfig.trigger = this.dateInputEl;\n datePickerConfig.accessibleFieldEl = this.dateInputEl;\n datePickerConfig.datePickerButtonEl = this.datePickerButtonEl;\n }\n\n datePickerConfig.parse = this.parseDisplayDateType;\n datePickerConfig.toString = this.formatDisplayDateType;\n datePickerConfig.keyboardInput = false;\n }\n\n this.datePicker = new AccessiblePikaday(datePickerConfig);\n\n if (isTextInputAllowed) {\n this.updateDateInputValue(this.formatDisplay(defaultValue));\n }\n\n if (isAlwaysVisible) {\n this.datePicker.show();\n this.datePicker.hide = noop;\n }\n }\n\n // eslint-disable-next-line camelcase\n UNSAFE_componentWillReceiveProps(nextProps: DatePickerProps) {\n if (!this.datePicker) return;\n\n const { value: nextValue = null, minDate: nextMinDate = null, maxDate: nextMaxDate = null } = nextProps;\n const { value, minDate, maxDate, isTextInputAllowed } = this.props;\n const selectedDate = this.datePicker && this.datePicker.getDate();\n\n // only set date when props change\n if (\n (nextValue && !value) ||\n (!nextValue && value) ||\n (nextValue && value && nextValue.getTime() !== value.getTime())\n ) {\n this.datePicker.setDate(nextValue);\n }\n // If text input is allowed the dateInputEl will act as an uncontrolled input and\n // we need to set formatted value manually.\n if (isTextInputAllowed) {\n this.updateDateInputValue(this.formatDisplay(nextValue));\n }\n if (\n (nextMinDate && !minDate) ||\n (nextMinDate && minDate) ||\n (nextMinDate && minDate && nextMinDate.getTime() !== minDate.getTime())\n ) {\n this.datePicker.setMinDate(nextMinDate);\n\n if (selectedDate && selectedDate < nextMinDate) {\n this.datePicker.gotoDate(nextMinDate);\n }\n }\n if (\n (nextMaxDate && !maxDate) ||\n (!nextMaxDate && maxDate) ||\n (nextMaxDate && maxDate && nextMaxDate.getTime() !== maxDate.getTime())\n ) {\n this.datePicker.setMaxDate(nextMaxDate);\n\n if (selectedDate && nextMaxDate && selectedDate > nextMaxDate) {\n this.datePicker.gotoDate(nextMaxDate);\n }\n }\n }\n\n componentWillUnmount() {\n if (this.datePicker) {\n this.datePicker.destroy();\n }\n }\n\n onSelectHandler = (date: Date | null = null) => {\n const { onChange, isAccessible } = this.props;\n const { isDateInputInvalid } = this.state;\n\n if (onChange) {\n const formattedDate = this.formatValue(date);\n onChange(date, formattedDate);\n }\n\n if (isAccessible) {\n if (this.dateInputEl && this.datePicker) {\n // Required because Pikaday instance is unbound\n // See https://github.com/Pikaday/Pikaday#usage\n this.dateInputEl.value = this.datePicker.toString();\n }\n if (this.datePicker && this.datePicker.isVisible()) {\n this.datePicker.hide();\n this.focusDatePicker();\n }\n }\n\n if (isDateInputInvalid) {\n this.setState({ isDateInputInvalid: false, showDateInputError: false });\n }\n };\n\n updateDateInputValue(value: string) {\n if (this.dateInputEl) {\n this.dateInputEl.value = value;\n }\n }\n\n dateInputEl: HTMLInputElement | null | undefined;\n\n datePicker: Pikaday | null = null;\n\n datePickerButtonEl: HTMLButtonElement | HTMLDivElement | null | undefined;\n\n // Used to detect when a fallback is necessary when isAccessible is enabled\n canUseDateInputType = true;\n\n // Used to prevent bad sequences of hide/show when toggling the datepicker button\n shouldStayClosed = false;\n\n focusDatePicker = () => {\n // This also opens the date picker when isAccessible is disabled\n if (this.dateInputEl) {\n this.dateInputEl.focus();\n }\n };\n\n getDateInputError = () => {\n const { intl, maxDate = null, minDate = null } = this.props;\n const { showDateInputError } = this.state;\n const { formatMessage } = intl;\n\n if (!showDateInputError) return '';\n\n let dateInputError = '';\n const maxLocaleDate = getFormattedDate(maxDate, DateFormat.LOCALE_DATE_STRING_DATE_FORMAT);\n const minLocaleDate = getFormattedDate(minDate, DateFormat.LOCALE_DATE_STRING_DATE_FORMAT);\n\n if (maxLocaleDate && minLocaleDate) {\n dateInputError = formatMessage(messages.dateInputRangeError, { maxLocaleDate, minLocaleDate });\n } else if (maxLocaleDate) {\n dateInputError = formatMessage(messages.dateInputMaxError, { maxLocaleDate });\n } else if (minLocaleDate) {\n dateInputError = formatMessage(messages.dateInputMinError, { minLocaleDate });\n }\n\n return dateInputError;\n };\n\n handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n const { isKeyboardInputAllowed, isTextInputAllowed, isAccessible } = this.props;\n\n if (!isKeyboardInputAllowed && this.datePicker && this.datePicker.isVisible()) {\n event.stopPropagation();\n }\n\n // Stops up/down arrow & spacebar from moving page scroll position since pikaday does not preventDefault correctly\n if (!(isTextInputAllowed || isAccessible) && event.key !== TAB_KEY) {\n event.preventDefault();\n }\n\n if ((isTextInputAllowed || (isAccessible && !this.canUseDateInputType)) && event.key === ENTER_KEY) {\n event.preventDefault();\n }\n\n // Stops enter & spacebar from opening up the browser's default date picker\n if (isAccessible && (event.key === ENTER_KEY || event.key === ' ')) {\n event.preventDefault();\n }\n\n if (event.key === ENTER_KEY || event.key === ESCAPE_KEY || event.key === ' ') {\n // Since pikaday auto-selects when you move the select box, enter/space don't do anything but close the date picker\n if (this.datePicker && this.datePicker.isVisible()) {\n this.datePicker.hide();\n }\n }\n };\n\n handleOnChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { isAccessible, maxDate, minDate, onChange } = this.props;\n const { isDateInputInvalid } = this.state;\n\n if (!isAccessible || !this.canUseDateInputType) {\n return;\n }\n\n if (this.datePicker && this.datePicker.isVisible()) {\n event.stopPropagation();\n }\n\n const { value } = event.target;\n if (this.datePicker && value) {\n const parsedDate = this.parseDisplayDateType(value);\n\n if (parsedDate) {\n if ((minDate && parsedDate < minDate) || (maxDate && parsedDate > maxDate)) {\n this.datePicker.setDate(null);\n this.setState({ isDateInputInvalid: true });\n return;\n }\n // Reset the error styling on valid date input\n if (isDateInputInvalid) {\n this.setState({ isDateInputInvalid: false, showDateInputError: false });\n }\n } else {\n this.setState({ isDateInputInvalid: true });\n }\n\n // Set date so Pikaday date picker value stays in sync with input\n this.datePicker.setDate(parsedDate, true);\n\n if (onChange) {\n const formattedDate = this.formatValue(parsedDate);\n onChange(parsedDate, formattedDate);\n }\n } else if (isDateInputInvalid) {\n this.setState({ isDateInputInvalid: false, showDateInputError: false });\n }\n };\n\n handleInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const { isAccessible, isTextInputAllowed, onBlur } = this.props;\n const { isDateInputInvalid } = this.state;\n const nextActiveElement = event.relatedTarget || document.activeElement;\n\n // This is mostly here to cancel out the pikaday hide() on blur\n if (\n this.datePicker &&\n this.datePicker.isVisible() &&\n nextActiveElement &&\n nextActiveElement === this.datePickerButtonEl\n ) {\n this.shouldStayClosed = true;\n setTimeout(() => {\n this.shouldStayClosed = false;\n }, TOGGLE_DELAY_MS);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n\n // Since we fire parent onChange event if isTextInputAllowed,\n // fire it on blur if the user typed a correct date format\n let inputDate: Date | null | undefined = null;\n\n if (this.dateInputEl) {\n let dateInputElVal = null;\n if (isAccessible && !this.canUseDateInputType) {\n dateInputElVal = this.parseDisplayDateType(this.dateInputEl.value);\n }\n inputDate = new Date(dateInputElVal || this.dateInputEl.value);\n }\n\n if ((isTextInputAllowed || (isAccessible && !this.canUseDateInputType)) && inputDate && inputDate.getDate()) {\n this.onSelectHandler(inputDate);\n }\n\n if (isAccessible && isDateInputInvalid) this.setState({ showDateInputError: true });\n };\n\n handleButtonClick = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n const { isAccessible, isDisabled } = this.props;\n\n if (isAccessible) {\n if (isDisabled || !this.datePicker) {\n return;\n }\n\n if (this.datePicker.isVisible()) {\n this.datePicker.hide();\n this.focusDatePicker();\n } else {\n this.datePicker.show();\n }\n return;\n }\n\n if (!this.shouldStayClosed) {\n this.focusDatePicker();\n }\n };\n\n handleOnClick = (event: React.SyntheticEvent<HTMLInputElement>) => {\n const { isAccessible } = this.props;\n\n if (isAccessible) {\n // Suppress Firefox default behavior: clicking on input type \"date\"\n // opens the browser date picker.\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n formatDisplay = (date?: Date | null): string => {\n const { displayFormat, intl } = this.props;\n return date ? intl.formatDate(date, displayFormat) : '';\n };\n\n formatDisplayDateType = (date?: Date | null): string => {\n // Input type \"date\" only accepts the format YYYY-MM-DD\n return date ? getFormattedDate(date, DateFormat.UTC_ISO_STRING_DATE_FORMAT).slice(0, 10) : '';\n };\n\n parseDisplayDateType = (dateString?: string | null): Date | null => {\n if (dateString && ISO_DATE_FORMAT_PATTERN.test(dateString)) {\n // Calling new Date('YYYY-MM-DD') without 'T00:00:00' yields undesired results:\n // E.g. new Date('2017-06-01') => May 31 2017\n // E.g. new Date('2017-06-01T00:00:00') => June 01 2017\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date#parameters\n return new Date(`${dateString}T00:00:00`);\n }\n return null;\n };\n\n formatValue = (date: Date | null): string | number => {\n const { dateFormat } = this.props;\n return dateFormat ? getFormattedDate(date, dateFormat) : '';\n };\n\n clearDate = (event: React.SyntheticEvent<HTMLButtonElement>) => {\n // Prevents the date picker from opening after clearing\n event.preventDefault();\n const { isAccessible } = this.props;\n\n if (this.datePicker) {\n this.datePicker.setDate(null);\n }\n this.onSelectHandler(null);\n\n if (isAccessible) {\n this.focusDatePicker();\n }\n };\n\n /** Determines whether a new date input falls back to a text input or not */\n shouldUseAccessibleFallback = (): boolean => {\n const test = document.createElement('input');\n\n try {\n test.type = 'date';\n } catch (e) {\n // no-op\n }\n\n // If date input falls back to text input, show the fallback\n return test.type === 'text';\n };\n\n renderCalendarButton = () => {\n const { intl, isAccessible, isAlwaysVisible, isDisabled } = this.props;\n const { formatMessage } = intl;\n\n if (isAlwaysVisible) {\n return null;\n }\n\n // De-emphasizing the Pikaday date picker because it does not meet accessibility standards\n // Screenreaders & navigating via keyboard will no longer pick up on this element\n const accessibleAttrs = isAccessible ? { 'aria-hidden': true, tabIndex: -1 } : {};\n\n return (\n <PlainButton\n aria-label={formatMessage(messages.chooseDate)}\n className=\"date-picker-open-btn\"\n getDOMRef={ref => {\n this.datePickerButtonEl = ref;\n }}\n isDisabled={isDisabled}\n onClick={this.handleButtonClick}\n type={ButtonType.BUTTON}\n {...accessibleAttrs}\n >\n <Calendar16 />\n </PlainButton>\n );\n };\n\n render() {\n const {\n className,\n customInput,\n description,\n error,\n errorTooltipPosition,\n hideLabel,\n hideOptionalLabel,\n inputProps,\n intl,\n isAccessible,\n isClearable,\n isDisabled,\n isRequired,\n isTextInputAllowed,\n label,\n maxDate,\n minDate,\n name,\n onFocus,\n placeholder,\n resinTarget,\n value,\n } = this.props;\n const { isDateInputInvalid } = this.state;\n const { formatMessage } = intl;\n\n const errorMessage = error || this.getDateInputError();\n const hasError = !!errorMessage || isDateInputInvalid;\n const hasValue = !!value || isDateInputInvalid;\n\n const classes = classNames(className, 'date-picker-wrapper', {\n 'show-clear-btn': isClearable && hasValue && !isDisabled,\n 'show-error': hasError,\n });\n\n const ariaAttrs = {\n 'aria-invalid': hasError,\n 'aria-required': isRequired,\n 'aria-errormessage': this.errorMessageID,\n 'aria-describedby': description ? this.descriptionID : undefined,\n };\n\n const resinTargetAttr = resinTarget ? { [RESIN_TAG_TARGET]: resinTarget } : {};\n\n let valueAttr;\n if (isAccessible) {\n valueAttr = { defaultValue: this.formatDisplayDateType(value) };\n } else if (isTextInputAllowed) {\n valueAttr = { defaultValue: this.formatDisplay(value) };\n } else {\n valueAttr = { value: this.formatDisplay(value) };\n }\n\n let onChangeAttr;\n if (isAccessible && this.canUseDateInputType) {\n onChangeAttr = { onChange: this.handleOnChange };\n } else if (isTextInputAllowed || (isAccessible && !this.canUseDateInputType)) {\n onChangeAttr = {};\n } else {\n // Fixes prop type error about read-only field\n // Not adding readOnly so constraint validation works\n onChangeAttr = { onChange: noop };\n }\n\n let additionalAttrs;\n if (isAccessible && this.canUseDateInputType) {\n additionalAttrs = {\n max: this.formatDisplayDateType(maxDate) || '9999-12-31',\n min: this.formatDisplayDateType(minDate) || '0001-01-01',\n };\n } else if (isAccessible && !this.canUseDateInputType) {\n // \"name\" prop is required for pattern validation to be surfaced on form submit. See components/form-elements/form/Form.js\n // \"title\" prop is shown during constraint validation as a description of the pattern\n // See https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern#usability\n additionalAttrs = { name, pattern: ISO_DATE_FORMAT_PATTERN.source, title: 'YYYY-MM-DD' };\n } else {\n additionalAttrs = {};\n }\n\n return (\n <div className={classes}>\n <span className=\"date-picker-icon-holder\">\n <Label hideLabel={hideLabel} showOptionalText={!hideOptionalLabel && !isRequired} text={label}>\n <>\n {!!description && (\n <div id={this.descriptionID} className=\"date-picker-description\">\n {description}\n </div>\n )}\n <Tooltip\n className=\"date-picker-error-tooltip\"\n isShown={!!errorMessage}\n position={errorTooltipPosition}\n text={errorMessage || ''}\n theme={TooltipTheme.ERROR}\n >\n {customInput ? (\n React.cloneElement(customInput, {\n disabled: isDisabled,\n ref: (ref: HTMLInputElement) => {\n this.dateInputEl = ref;\n },\n required: isRequired,\n ...resinTargetAttr,\n ...ariaAttrs,\n })\n ) : (\n <input\n ref={ref => {\n this.dateInputEl = ref;\n }}\n className=\"date-picker-input\"\n disabled={isDisabled}\n onBlur={this.handleInputBlur}\n onClick={this.handleOnClick}\n placeholder={placeholder || formatMessage(messages.chooseDate)}\n required={isRequired}\n type={isAccessible && this.canUseDateInputType ? 'date' : 'text'}\n {...onChangeAttr}\n onFocus={onFocus}\n onKeyDown={this.handleInputKeyDown}\n {...resinTargetAttr}\n {...ariaAttrs}\n {...inputProps}\n {...valueAttr}\n {...additionalAttrs}\n />\n )}\n </Tooltip>\n <span id={this.errorMessageID} className=\"accessibility-hidden\" role=\"alert\">\n {errorMessage}\n </span>\n </>\n </Label>\n {isClearable && hasValue && !isDisabled ? (\n <PlainButton\n aria-label={formatMessage(messages.dateClearButton)}\n className=\"date-picker-clear-btn\"\n onClick={this.clearDate}\n type={ButtonType.BUTTON}\n >\n <ClearBadge16 />\n </PlainButton>\n ) : null}\n {hasError ? (\n <AlertBadge16\n className=\"date-picker-icon-alert\"\n title={<FormattedMessage {...messages.iconAlertText} />}\n />\n ) : null}\n {this.renderCalendarButton()}\n <input\n className=\"date-picker-unix-time-input\"\n name={name}\n readOnly\n type=\"hidden\"\n value={value ? this.formatValue(value) : ''}\n />\n </span>\n </div>\n );\n }\n}\n\nexport { DatePicker as DatePickerBase };\nexport default injectIntl(DatePicker);\n"],"file":"DatePicker.js"}
@@ -19,7 +19,7 @@
19
19
  }
20
20
 
21
21
  .date-picker-description {
22
- color: $bdl-gray-62;
22
+ color: $bdl-gray-65;
23
23
  }
24
24
 
25
25
  .date-picker-input {
@@ -2,7 +2,7 @@
2
2
 
3
3
  .public-DraftEditorPlaceholder-root {
4
4
  margin: 8px 10px;
5
- color: $bdl-gray-62;
5
+ color: $bdl-gray-65;
6
6
  }
7
7
 
8
8
  .bdl-is-disabled .public-DraftStyleDefault-block,
@@ -190,7 +190,9 @@ function (_React$Component) {
190
190
  constrainToWindow = _this$props.constrainToWindow,
191
191
  constrainToWindowWithPin = _this$props.constrainToWindowWithPin,
192
192
  isResponsive = _this$props.isResponsive,
193
- isRightAligned = _this$props.isRightAligned;
193
+ isRightAligned = _this$props.isRightAligned,
194
+ tetherAttachment = _this$props.tetherAttachment,
195
+ tetherTargetAttachment = _this$props.tetherTargetAttachment;
194
196
  var _this$state = this.state,
195
197
  isOpen = _this$state.isOpen,
196
198
  initialFocusIndex = _this$state.initialFocusIndex;
@@ -262,7 +264,7 @@ function (_React$Component) {
262
264
 
263
265
  var bodyEl = bodyElement instanceof HTMLElement ? bodyElement : document.body;
264
266
  return React.createElement(TetherComponent, {
265
- attachment: attachment,
267
+ attachment: tetherAttachment || attachment,
266
268
  bodyElement: bodyEl,
267
269
  className: classNames({
268
270
  'bdl-DropdownMenu--responsive': isResponsive
@@ -270,7 +272,7 @@ function (_React$Component) {
270
272
  classPrefix: "dropdown-menu",
271
273
  constraints: constraints,
272
274
  enabled: isOpen,
273
- targetAttachment: targetAttachment
275
+ targetAttachment: tetherTargetAttachment || targetAttachment
274
276
  }, React.cloneElement(menuButton, menuButtonProps), isOpen && React.cloneElement(menu, menuProps));
275
277
  }
276
278
  }]);
@@ -27,6 +27,10 @@ type Props = {
27
27
  onMenuClose?: (event: SyntheticEvent<> | MouseEvent) => void,
28
28
  /** Handler for dropdown menu open events */
29
29
  onMenuOpen?: () => void,
30
+ /** "attachment" prop for the TetherComponent, will overwrite the default settings and ignore isRightAligned option */
31
+ tetherAttachment?: string,
32
+ /** "targetAttachment" prop for the TetherComponent, will overwrite the default settings and ignore isRightAligned option */
33
+ tetherTargetAttachment?: string,
30
34
  /** Set true to close dropdown menu on event bubble instead of event capture */
31
35
  useBubble?: boolean,
32
36
  };
@@ -187,6 +191,8 @@ class DropdownMenu extends React.Component<Props, State> {
187
191
  constrainToWindowWithPin,
188
192
  isResponsive,
189
193
  isRightAligned,
194
+ tetherAttachment,
195
+ tetherTargetAttachment,
190
196
  } = this.props;
191
197
 
192
198
  const { isOpen, initialFocusIndex } = this.state;
@@ -261,13 +267,13 @@ class DropdownMenu extends React.Component<Props, State> {
261
267
 
262
268
  return (
263
269
  <TetherComponent
264
- attachment={attachment}
270
+ attachment={tetherAttachment || attachment}
265
271
  bodyElement={bodyEl}
266
272
  className={classNames({ 'bdl-DropdownMenu--responsive': isResponsive }, className)}
267
273
  classPrefix="dropdown-menu"
268
274
  constraints={constraints}
269
275
  enabled={isOpen}
270
- targetAttachment={targetAttachment}
276
+ targetAttachment={tetherTargetAttachment || targetAttachment}
271
277
  >
272
278
  {React.cloneElement(menuButton, menuButtonProps)}
273
279
  {isOpen && React.cloneElement(menu, menuProps)}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/dropdown-menu/DropdownMenu.js"],"names":["React","TetherComponent","classNames","noop","uniqueId","KEYS","DropdownMenu","initialFocusIndex","isOpen","setState","event","props","onMenuClose","menuButtonEl","document","getElementById","menuButtonID","focus","state","stopPropagation","preventDefault","closeMenu","openMenuAndSetFocusIndex","key","space","enter","arrowDown","arrowUp","escape","isKeyboardEvent","focusButton","menuEl","menuID","target","Node","contains","prevProps","prevState","useBubble","addEventListener","handleDocumentClick","onMenuOpen","removeEventListener","bodyElement","children","className","constrainToScrollParent","constrainToWindow","constrainToWindowWithPin","isResponsive","isRightAligned","elements","Children","toArray","length","Error","menuButton","menu","menuButtonProps","id","onClick","handleButtonClick","onKeyDown","handleButtonKeyDown","undefined","menuProps","onClose","handleMenuClose","attachment","targetAttachment","constraints","push","to","pin","bodyEl","HTMLElement","body","cloneElement","Component"],"mappings":"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","sourcesContent":["// @flow\nimport * as React from 'react';\nimport TetherComponent from 'react-tether';\nimport classNames from 'classnames';\nimport noop from 'lodash/noop';\nimport uniqueId from 'lodash/uniqueId';\n\nimport { KEYS } from '../../constants';\nimport './DropdownMenu.scss';\n\ntype Props = {\n bodyElement?: HTMLElement,\n children: React.Node,\n /** Forces menu to render within the scroll parent */\n className?: string,\n /** Forces menu to render within the visible window */\n constrainToScrollParent: boolean,\n /** Right aligns menu to button */\n constrainToWindow: boolean,\n /** Forces menu to render within the visible window and pins the dropdown if scrolled */\n constrainToWindowWithPin?: boolean,\n /** Enables responsive behaviors for this component */\n isResponsive?: boolean,\n /** Function called when menu is opened */\n isRightAligned: boolean,\n /** Handler for dropdown menu close events */\n onMenuClose?: (event: SyntheticEvent<> | MouseEvent) => void,\n /** Handler for dropdown menu open events */\n onMenuOpen?: () => void,\n /** Set true to close dropdown menu on event bubble instead of event capture */\n useBubble?: boolean,\n};\n\ntype State = {\n initialFocusIndex: ?number,\n isOpen: boolean,\n};\n\nclass DropdownMenu extends React.Component<Props, State> {\n static defaultProps = {\n constrainToScrollParent: false,\n constrainToWindow: false,\n isResponsive: false,\n isRightAligned: false,\n };\n\n menuID = uniqueId('menu');\n\n menuButtonID = uniqueId('menubutton');\n\n state = {\n initialFocusIndex: null,\n isOpen: false,\n };\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n const { useBubble } = this.props;\n if (!prevState.isOpen && this.state.isOpen) {\n // When menu is being opened\n document.addEventListener('click', this.handleDocumentClick, !useBubble);\n document.addEventListener('contextmenu', this.handleDocumentClick, !useBubble);\n\n const { onMenuOpen } = this.props;\n if (onMenuOpen) {\n onMenuOpen();\n }\n } else if (prevState.isOpen && !this.state.isOpen) {\n // When menu is being closed\n document.removeEventListener('contextmenu', this.handleDocumentClick, !useBubble);\n document.removeEventListener('click', this.handleDocumentClick, !useBubble);\n }\n }\n\n componentWillUnmount() {\n const { useBubble } = this.props;\n if (this.state.isOpen) {\n // Clean-up global click handlers\n document.removeEventListener('contextmenu', this.handleDocumentClick, !useBubble);\n document.removeEventListener('click', this.handleDocumentClick, !useBubble);\n }\n }\n\n menuID: string;\n\n menuButtonID: string;\n\n openMenuAndSetFocusIndex = (initialFocusIndex: ?number) => {\n this.setState({\n initialFocusIndex,\n isOpen: true,\n });\n };\n\n closeMenu = (event: SyntheticEvent<> | MouseEvent) => {\n const { onMenuClose = noop } = this.props;\n this.setState(\n {\n isOpen: false,\n },\n () => onMenuClose(event),\n );\n };\n\n focusButton = () => {\n // @NOTE: This breaks encapsulation a bit, but the only other way is passing ref functions to unknown children components\n const menuButtonEl = document.getElementById(this.menuButtonID);\n if (menuButtonEl) {\n menuButtonEl.focus();\n }\n };\n\n handleButtonClick = (event: SyntheticEvent<>) => {\n const { isOpen } = this.state;\n\n event.stopPropagation();\n event.preventDefault();\n\n if (isOpen) {\n this.closeMenu(event);\n } else {\n this.openMenuAndSetFocusIndex(null);\n }\n };\n\n handleButtonKeyDown = (event: SyntheticKeyboardEvent<>) => {\n const { isOpen } = this.state;\n\n switch (event.key) {\n case KEYS.space:\n case KEYS.enter:\n case KEYS.arrowDown:\n event.stopPropagation();\n event.preventDefault();\n\n this.openMenuAndSetFocusIndex(0);\n break;\n\n case KEYS.arrowUp:\n event.stopPropagation();\n event.preventDefault();\n\n this.openMenuAndSetFocusIndex(-1);\n break;\n\n case KEYS.escape:\n if (isOpen) {\n event.stopPropagation();\n }\n\n event.preventDefault();\n this.closeMenu(event);\n break;\n\n default:\n break;\n }\n };\n\n handleMenuClose = (isKeyboardEvent: boolean, event: SyntheticEvent<> | MouseEvent) => {\n this.closeMenu(event);\n this.focusButton();\n };\n\n handleDocumentClick = (event: MouseEvent) => {\n const menuEl = document.getElementById(this.menuID);\n const menuButtonEl = document.getElementById(this.menuButtonID);\n\n // Some DOM magic to get global click handlers to close menu when not interacting with menu or associated button\n if (\n menuEl &&\n menuButtonEl &&\n event.target instanceof Node &&\n !menuEl.contains(event.target) &&\n !menuButtonEl.contains(event.target)\n ) {\n this.closeMenu(event);\n }\n };\n\n render() {\n const {\n bodyElement,\n children,\n className,\n constrainToScrollParent,\n constrainToWindow,\n constrainToWindowWithPin,\n isResponsive,\n isRightAligned,\n } = this.props;\n\n const { isOpen, initialFocusIndex } = this.state;\n\n const elements = React.Children.toArray(children);\n\n if (elements.length !== 2) {\n throw new Error('DropdownMenu must have exactly two children: A button component and a <Menu>');\n }\n\n const menuButton = elements[0];\n const menu = elements[1];\n\n const menuButtonProps: Object = {\n id: this.menuButtonID,\n key: this.menuButtonID,\n onClick: this.handleButtonClick, // NOTE: Overrides button's handler\n onKeyDown: this.handleButtonKeyDown, // NOTE: Overrides button's handler\n 'aria-expanded': isOpen ? 'true' : 'false',\n };\n\n if (menuButton.props['aria-haspopup'] === undefined) {\n menuButtonProps['aria-haspopup'] = 'true';\n }\n\n // Add this only when its open, otherwise the menuID element isn't rendered\n if (isOpen) {\n menuButtonProps['aria-controls'] = this.menuID;\n }\n\n const menuProps = {\n id: this.menuID,\n key: this.menuID,\n initialFocusIndex,\n onClose: this.handleMenuClose,\n 'aria-labelledby': this.menuButtonID,\n };\n\n let attachment = 'top left';\n let targetAttachment = 'bottom left';\n\n if (isRightAligned) {\n attachment = 'top right';\n targetAttachment = 'bottom right';\n }\n\n const constraints = [];\n\n if (constrainToScrollParent) {\n constraints.push({\n to: 'scrollParent',\n attachment: 'together',\n });\n }\n\n if (constrainToWindow) {\n constraints.push({\n to: 'window',\n attachment: 'together',\n });\n }\n\n if (constrainToWindowWithPin) {\n constraints.push({\n to: 'window',\n attachment: 'together',\n pin: true,\n });\n }\n\n const bodyEl = bodyElement instanceof HTMLElement ? bodyElement : document.body;\n\n return (\n <TetherComponent\n attachment={attachment}\n bodyElement={bodyEl}\n className={classNames({ 'bdl-DropdownMenu--responsive': isResponsive }, className)}\n classPrefix=\"dropdown-menu\"\n constraints={constraints}\n enabled={isOpen}\n targetAttachment={targetAttachment}\n >\n {React.cloneElement(menuButton, menuButtonProps)}\n {isOpen && React.cloneElement(menu, menuProps)}\n </TetherComponent>\n );\n }\n}\n\nexport default DropdownMenu;\n"],"file":"DropdownMenu.js"}
1
+ {"version":3,"sources":["../../../src/components/dropdown-menu/DropdownMenu.js"],"names":["React","TetherComponent","classNames","noop","uniqueId","KEYS","DropdownMenu","initialFocusIndex","isOpen","setState","event","props","onMenuClose","menuButtonEl","document","getElementById","menuButtonID","focus","state","stopPropagation","preventDefault","closeMenu","openMenuAndSetFocusIndex","key","space","enter","arrowDown","arrowUp","escape","isKeyboardEvent","focusButton","menuEl","menuID","target","Node","contains","prevProps","prevState","useBubble","addEventListener","handleDocumentClick","onMenuOpen","removeEventListener","bodyElement","children","className","constrainToScrollParent","constrainToWindow","constrainToWindowWithPin","isResponsive","isRightAligned","tetherAttachment","tetherTargetAttachment","elements","Children","toArray","length","Error","menuButton","menu","menuButtonProps","id","onClick","handleButtonClick","onKeyDown","handleButtonKeyDown","undefined","menuProps","onClose","handleMenuClose","attachment","targetAttachment","constraints","push","to","pin","bodyEl","HTMLElement","body","cloneElement","Component"],"mappings":"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","sourcesContent":["// @flow\nimport * as React from 'react';\nimport TetherComponent from 'react-tether';\nimport classNames from 'classnames';\nimport noop from 'lodash/noop';\nimport uniqueId from 'lodash/uniqueId';\n\nimport { KEYS } from '../../constants';\nimport './DropdownMenu.scss';\n\ntype Props = {\n bodyElement?: HTMLElement,\n children: React.Node,\n /** Forces menu to render within the scroll parent */\n className?: string,\n /** Forces menu to render within the visible window */\n constrainToScrollParent: boolean,\n /** Right aligns menu to button */\n constrainToWindow: boolean,\n /** Forces menu to render within the visible window and pins the dropdown if scrolled */\n constrainToWindowWithPin?: boolean,\n /** Enables responsive behaviors for this component */\n isResponsive?: boolean,\n /** Function called when menu is opened */\n isRightAligned: boolean,\n /** Handler for dropdown menu close events */\n onMenuClose?: (event: SyntheticEvent<> | MouseEvent) => void,\n /** Handler for dropdown menu open events */\n onMenuOpen?: () => void,\n /** \"attachment\" prop for the TetherComponent, will overwrite the default settings and ignore isRightAligned option */\n tetherAttachment?: string,\n /** \"targetAttachment\" prop for the TetherComponent, will overwrite the default settings and ignore isRightAligned option */\n tetherTargetAttachment?: string,\n /** Set true to close dropdown menu on event bubble instead of event capture */\n useBubble?: boolean,\n};\n\ntype State = {\n initialFocusIndex: ?number,\n isOpen: boolean,\n};\n\nclass DropdownMenu extends React.Component<Props, State> {\n static defaultProps = {\n constrainToScrollParent: false,\n constrainToWindow: false,\n isResponsive: false,\n isRightAligned: false,\n };\n\n menuID = uniqueId('menu');\n\n menuButtonID = uniqueId('menubutton');\n\n state = {\n initialFocusIndex: null,\n isOpen: false,\n };\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n const { useBubble } = this.props;\n if (!prevState.isOpen && this.state.isOpen) {\n // When menu is being opened\n document.addEventListener('click', this.handleDocumentClick, !useBubble);\n document.addEventListener('contextmenu', this.handleDocumentClick, !useBubble);\n\n const { onMenuOpen } = this.props;\n if (onMenuOpen) {\n onMenuOpen();\n }\n } else if (prevState.isOpen && !this.state.isOpen) {\n // When menu is being closed\n document.removeEventListener('contextmenu', this.handleDocumentClick, !useBubble);\n document.removeEventListener('click', this.handleDocumentClick, !useBubble);\n }\n }\n\n componentWillUnmount() {\n const { useBubble } = this.props;\n if (this.state.isOpen) {\n // Clean-up global click handlers\n document.removeEventListener('contextmenu', this.handleDocumentClick, !useBubble);\n document.removeEventListener('click', this.handleDocumentClick, !useBubble);\n }\n }\n\n menuID: string;\n\n menuButtonID: string;\n\n openMenuAndSetFocusIndex = (initialFocusIndex: ?number) => {\n this.setState({\n initialFocusIndex,\n isOpen: true,\n });\n };\n\n closeMenu = (event: SyntheticEvent<> | MouseEvent) => {\n const { onMenuClose = noop } = this.props;\n this.setState(\n {\n isOpen: false,\n },\n () => onMenuClose(event),\n );\n };\n\n focusButton = () => {\n // @NOTE: This breaks encapsulation a bit, but the only other way is passing ref functions to unknown children components\n const menuButtonEl = document.getElementById(this.menuButtonID);\n if (menuButtonEl) {\n menuButtonEl.focus();\n }\n };\n\n handleButtonClick = (event: SyntheticEvent<>) => {\n const { isOpen } = this.state;\n\n event.stopPropagation();\n event.preventDefault();\n\n if (isOpen) {\n this.closeMenu(event);\n } else {\n this.openMenuAndSetFocusIndex(null);\n }\n };\n\n handleButtonKeyDown = (event: SyntheticKeyboardEvent<>) => {\n const { isOpen } = this.state;\n\n switch (event.key) {\n case KEYS.space:\n case KEYS.enter:\n case KEYS.arrowDown:\n event.stopPropagation();\n event.preventDefault();\n\n this.openMenuAndSetFocusIndex(0);\n break;\n\n case KEYS.arrowUp:\n event.stopPropagation();\n event.preventDefault();\n\n this.openMenuAndSetFocusIndex(-1);\n break;\n\n case KEYS.escape:\n if (isOpen) {\n event.stopPropagation();\n }\n\n event.preventDefault();\n this.closeMenu(event);\n break;\n\n default:\n break;\n }\n };\n\n handleMenuClose = (isKeyboardEvent: boolean, event: SyntheticEvent<> | MouseEvent) => {\n this.closeMenu(event);\n this.focusButton();\n };\n\n handleDocumentClick = (event: MouseEvent) => {\n const menuEl = document.getElementById(this.menuID);\n const menuButtonEl = document.getElementById(this.menuButtonID);\n\n // Some DOM magic to get global click handlers to close menu when not interacting with menu or associated button\n if (\n menuEl &&\n menuButtonEl &&\n event.target instanceof Node &&\n !menuEl.contains(event.target) &&\n !menuButtonEl.contains(event.target)\n ) {\n this.closeMenu(event);\n }\n };\n\n render() {\n const {\n bodyElement,\n children,\n className,\n constrainToScrollParent,\n constrainToWindow,\n constrainToWindowWithPin,\n isResponsive,\n isRightAligned,\n tetherAttachment,\n tetherTargetAttachment,\n } = this.props;\n\n const { isOpen, initialFocusIndex } = this.state;\n\n const elements = React.Children.toArray(children);\n\n if (elements.length !== 2) {\n throw new Error('DropdownMenu must have exactly two children: A button component and a <Menu>');\n }\n\n const menuButton = elements[0];\n const menu = elements[1];\n\n const menuButtonProps: Object = {\n id: this.menuButtonID,\n key: this.menuButtonID,\n onClick: this.handleButtonClick, // NOTE: Overrides button's handler\n onKeyDown: this.handleButtonKeyDown, // NOTE: Overrides button's handler\n 'aria-expanded': isOpen ? 'true' : 'false',\n };\n\n if (menuButton.props['aria-haspopup'] === undefined) {\n menuButtonProps['aria-haspopup'] = 'true';\n }\n\n // Add this only when its open, otherwise the menuID element isn't rendered\n if (isOpen) {\n menuButtonProps['aria-controls'] = this.menuID;\n }\n\n const menuProps = {\n id: this.menuID,\n key: this.menuID,\n initialFocusIndex,\n onClose: this.handleMenuClose,\n 'aria-labelledby': this.menuButtonID,\n };\n\n let attachment = 'top left';\n let targetAttachment = 'bottom left';\n\n if (isRightAligned) {\n attachment = 'top right';\n targetAttachment = 'bottom right';\n }\n\n const constraints = [];\n\n if (constrainToScrollParent) {\n constraints.push({\n to: 'scrollParent',\n attachment: 'together',\n });\n }\n\n if (constrainToWindow) {\n constraints.push({\n to: 'window',\n attachment: 'together',\n });\n }\n\n if (constrainToWindowWithPin) {\n constraints.push({\n to: 'window',\n attachment: 'together',\n pin: true,\n });\n }\n\n const bodyEl = bodyElement instanceof HTMLElement ? bodyElement : document.body;\n\n return (\n <TetherComponent\n attachment={tetherAttachment || attachment}\n bodyElement={bodyEl}\n className={classNames({ 'bdl-DropdownMenu--responsive': isResponsive }, className)}\n classPrefix=\"dropdown-menu\"\n constraints={constraints}\n enabled={isOpen}\n targetAttachment={tetherTargetAttachment || targetAttachment}\n >\n {React.cloneElement(menuButton, menuButtonProps)}\n {isOpen && React.cloneElement(menu, menuProps)}\n </TetherComponent>\n );\n }\n}\n\nexport default DropdownMenu;\n"],"file":"DropdownMenu.js"}
@@ -36,7 +36,7 @@
36
36
  .aria-menu:not(.submenu) {
37
37
  height: 100%;
38
38
  margin-top: $bdl-header-height;
39
- overflow: scroll;
39
+ overflow-x: auto;
40
40
  background-color: $bdl-gray-02;
41
41
  border: none;
42
42
  border-radius: 0;
@@ -54,13 +54,15 @@
54
54
  box-shadow: $bdl-header-box-shadow;
55
55
  }
56
56
 
57
- .submenu {
57
+ .submenu:not(.is-hidden) {
58
58
  top: 100%;
59
59
  right: 0;
60
+ bottom: auto;
60
61
  left: auto;
61
62
 
62
- &.is-hidden {
63
- display: none;
63
+ &.is-right-bottom-aligned {
64
+ top: auto;
65
+ bottom: 100%;
64
66
  }
65
67
  }
66
68
  }
@@ -25,7 +25,7 @@
25
25
  h5 {
26
26
  width: 100%; // IE11 Bug with flexbox
27
27
  margin-bottom: 0;
28
- color: $bdl-gray-62;
28
+ color: $bdl-gray-65;
29
29
  text-align: center;
30
30
  }
31
31
  }
@@ -315,6 +315,7 @@ function (_React$Component) {
315
315
  className = _this$props6$classNam === void 0 ? '' : _this$props6$classNam,
316
316
  constrainToScrollParent = _this$props6.constrainToScrollParent,
317
317
  constrainToWindow = _this$props6.constrainToWindow,
318
+ constrainToWindowWithPin = _this$props6.constrainToWindowWithPin,
318
319
  isResponsive = _this$props6.isResponsive,
319
320
  offset = _this$props6.offset,
320
321
  openOnHover = _this$props6.openOnHover,
@@ -376,6 +377,14 @@ function (_React$Component) {
376
377
  });
377
378
  }
378
379
 
380
+ if (constrainToWindowWithPin) {
381
+ constraints.push({
382
+ to: 'window',
383
+ attachment: 'together',
384
+ pin: true
385
+ });
386
+ }
387
+
379
388
  var tetherProps = {
380
389
  classPrefix: 'flyout-overlay',
381
390
  attachment: tetherPosition.attachment,
@@ -119,6 +119,10 @@ export type FlyoutProps = {
119
119
  * Sets tether constrain to window
120
120
  */
121
121
  constrainToWindow?: boolean,
122
+ /**
123
+ * Sets tether constrain to window with pin
124
+ */
125
+ constrainToWindowWithPin?: boolean,
122
126
  /**
123
127
  * Toggles responsive behavior
124
128
  */
@@ -373,6 +377,7 @@ class Flyout extends React.Component<Props, State> {
373
377
  className = '',
374
378
  constrainToScrollParent,
375
379
  constrainToWindow,
380
+ constrainToWindowWithPin,
376
381
  isResponsive,
377
382
  offset,
378
383
  openOnHover,
@@ -435,6 +440,14 @@ class Flyout extends React.Component<Props, State> {
435
440
  });
436
441
  }
437
442
 
443
+ if (constrainToWindowWithPin) {
444
+ constraints.push({
445
+ to: 'window',
446
+ attachment: 'together',
447
+ pin: true,
448
+ });
449
+ }
450
+
438
451
  const tetherProps: Object = {
439
452
  classPrefix: 'flyout-overlay',
440
453
  attachment: tetherPosition.attachment,