box-ui-elements 15.0.0-beta.7 → 15.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 (508) hide show
  1. package/CONTRIBUTING.md +3 -1
  2. package/dist/explorer.css +1 -1
  3. package/dist/explorer.js +58 -26
  4. package/dist/openwith.css +1 -1
  5. package/dist/openwith.js +10 -17
  6. package/dist/picker.css +1 -1
  7. package/dist/picker.js +12 -19
  8. package/dist/preview.css +1 -1
  9. package/dist/preview.js +56 -24
  10. package/dist/sharing.css +1 -1
  11. package/dist/sharing.js +54 -22
  12. package/dist/sidebar.css +1 -1
  13. package/dist/sidebar.js +56 -24
  14. package/dist/uploader.css +1 -1
  15. package/dist/uploader.js +12 -19
  16. package/es/api/uploads/UploadsReachability.js.flow +2 -2
  17. package/es/api/uploads/UploadsReachability.js.map +1 -1
  18. package/es/common/messages.js +4 -0
  19. package/es/common/messages.js.flow +5 -0
  20. package/es/common/messages.js.map +1 -1
  21. package/es/common/types/core.js.flow +2 -0
  22. package/es/common/types/core.js.map +1 -1
  23. package/es/components/avatar/UnknownUserAvatar.js +6 -9
  24. package/es/components/avatar/UnknownUserAvatar.js.map +1 -1
  25. package/es/components/close-button/CloseButton.js +24 -0
  26. package/es/components/close-button/CloseButton.js.flow +26 -0
  27. package/es/components/close-button/CloseButton.js.map +1 -0
  28. package/es/components/close-button/CloseButton.scss +10 -0
  29. package/es/components/close-button/CloseButton.stories.js +14 -0
  30. package/es/components/close-button/CloseButton.stories.js.map +1 -0
  31. package/es/components/close-button/index.js +2 -0
  32. package/es/components/close-button/index.js.flow +2 -0
  33. package/es/components/close-button/index.js.map +1 -0
  34. package/es/components/date-picker/AccessiblePikaday.js +113 -0
  35. package/es/components/date-picker/AccessiblePikaday.js.map +1 -0
  36. package/es/components/date-picker/DatePicker.js +426 -106
  37. package/es/components/date-picker/DatePicker.js.map +1 -1
  38. package/es/components/date-picker/DatePicker.scss +32 -22
  39. package/es/components/date-picker/DatePicker.stories.js +10 -0
  40. package/es/components/date-picker/DatePicker.stories.js.map +1 -1
  41. package/es/components/date-picker/_pikaday.scss +8 -2
  42. package/es/components/flyout/Flyout.js +13 -3
  43. package/es/components/flyout/Flyout.js.flow +14 -3
  44. package/es/components/flyout/Flyout.js.map +1 -1
  45. package/es/components/flyout/Flyout.scss +40 -0
  46. package/es/components/flyout/FlyoutContext.js +6 -0
  47. package/es/components/flyout/FlyoutContext.js.flow +9 -0
  48. package/es/components/flyout/FlyoutContext.js.map +1 -0
  49. package/es/components/flyout/OverlayHeader.js +33 -0
  50. package/es/components/flyout/OverlayHeader.js.map +1 -0
  51. package/es/components/flyout/OverlayHeader.scss +9 -0
  52. package/es/components/flyout/_variables.scss +1 -0
  53. package/es/components/flyout/index.js +2 -0
  54. package/es/components/flyout/index.js.flow +2 -0
  55. package/es/components/flyout/index.js.map +1 -1
  56. package/es/components/image-tooltip/ImageTooltip.js +1 -2
  57. package/es/components/image-tooltip/ImageTooltip.js.map +1 -1
  58. package/es/components/media-query/constants.js +26 -0
  59. package/es/components/media-query/constants.js.flow +32 -0
  60. package/es/components/media-query/constants.js.map +1 -0
  61. package/es/components/media-query/index.js +3 -0
  62. package/es/components/media-query/index.js.flow +4 -0
  63. package/es/components/media-query/index.js.map +1 -0
  64. package/es/components/media-query/stories/MediaQuery.stories.js +37 -0
  65. package/es/components/media-query/stories/MediaQuery.stories.js.flow +80 -0
  66. package/es/components/media-query/stories/MediaQuery.stories.js.map +1 -0
  67. package/es/components/media-query/types.js +2 -0
  68. package/es/components/media-query/types.js.flow +29 -0
  69. package/es/components/media-query/types.js.map +1 -0
  70. package/es/components/media-query/useMediaQuery.js +91 -0
  71. package/es/components/media-query/useMediaQuery.js.flow +97 -0
  72. package/es/components/media-query/useMediaQuery.js.map +1 -0
  73. package/es/components/media-query/withMediaQuery.js +21 -0
  74. package/es/components/media-query/withMediaQuery.js.flow +23 -0
  75. package/es/components/media-query/withMediaQuery.js.map +1 -0
  76. package/es/components/modal/Modal.scss +27 -0
  77. package/es/components/preview/previewIcons.js +4 -0
  78. package/es/components/preview/previewIcons.js.map +1 -1
  79. package/es/components/search-form/SearchForm.scss +0 -5
  80. package/es/components/selector-dropdown/SelectorDropdown.js +5 -3
  81. package/es/components/selector-dropdown/SelectorDropdown.js.flow +3 -3
  82. package/es/components/selector-dropdown/SelectorDropdown.js.map +1 -1
  83. package/es/components/tab-view/Tabs.scss +0 -4
  84. package/es/components/tooltip/Tooltip.js +21 -4
  85. package/es/components/tooltip/Tooltip.js.map +1 -1
  86. package/es/constants.js +1 -0
  87. package/es/constants.js.flow +1 -0
  88. package/es/constants.js.map +1 -1
  89. package/es/elements/content-open-with/IconFileMap.js +0 -2
  90. package/es/elements/content-open-with/IconFileMap.js.flow +0 -2
  91. package/es/elements/content-open-with/IconFileMap.js.map +1 -1
  92. package/es/elements/content-sidebar/Sidebar.js +2 -1
  93. package/es/elements/content-sidebar/Sidebar.js.flow +1 -1
  94. package/es/elements/content-sidebar/Sidebar.js.map +1 -1
  95. package/es/elements/content-sidebar/activity-feed/common/delete-confirmation/DeleteConfirmation.scss +3 -3
  96. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js +14 -4
  97. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.flow +18 -5
  98. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.map +1 -1
  99. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js +78 -0
  100. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.flow +97 -0
  101. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.map +1 -0
  102. package/es/elements/content-sidebar/versions/StaticVersionsSidebar.scss +67 -0
  103. package/es/elements/content-sidebar/versions/VersionsSidebar.js +12 -4
  104. package/es/elements/content-sidebar/versions/VersionsSidebar.js.flow +16 -3
  105. package/es/elements/content-sidebar/versions/VersionsSidebar.js.map +1 -1
  106. package/es/elements/content-sidebar/versions/VersionsSidebar.scss +5 -0
  107. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js +42 -10
  108. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.flow +42 -7
  109. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.map +1 -1
  110. package/es/elements/content-sidebar/versions/flowTypes.js.flow +1 -0
  111. package/es/elements/content-sidebar/versions/messages.js +20 -0
  112. package/es/elements/content-sidebar/versions/messages.js.flow +28 -0
  113. package/es/elements/content-sidebar/versions/messages.js.map +1 -1
  114. package/es/features/classification/constants.js +2 -1
  115. package/es/features/classification/constants.js.flow +2 -0
  116. package/es/features/classification/constants.js.map +1 -1
  117. package/es/features/classification/flowTypes.js +1 -0
  118. package/es/features/classification/flowTypes.js.flow +7 -1
  119. package/es/features/classification/flowTypes.js.map +1 -1
  120. package/es/features/classification/security-controls/SecurityControls.js +3 -4
  121. package/es/features/classification/security-controls/SecurityControls.js.flow +3 -4
  122. package/es/features/classification/security-controls/SecurityControls.js.map +1 -1
  123. package/es/features/classification/security-controls/SecurityControlsItem.js +1 -1
  124. package/es/features/classification/security-controls/SecurityControlsItem.js.flow +20 -17
  125. package/es/features/classification/security-controls/SecurityControlsItem.js.map +1 -1
  126. package/es/features/classification/security-controls/SecurityControlsItem.scss +4 -0
  127. package/es/features/classification/security-controls/SecurityControlsModal.js +2 -2
  128. package/es/features/classification/security-controls/SecurityControlsModal.js.flow +2 -2
  129. package/es/features/classification/security-controls/SecurityControlsModal.js.map +1 -1
  130. package/es/features/classification/security-controls/messages.js +4 -0
  131. package/es/features/classification/security-controls/messages.js.flow +5 -0
  132. package/es/features/classification/security-controls/messages.js.map +1 -1
  133. package/es/features/classification/security-controls/utils.js +56 -35
  134. package/es/features/classification/security-controls/utils.js.flow +51 -27
  135. package/es/features/classification/security-controls/utils.js.map +1 -1
  136. package/es/features/collapsible-sidebar/CollapsibleSidebar.js +9 -3
  137. package/es/features/collapsible-sidebar/CollapsibleSidebar.js.flow +13 -5
  138. package/es/features/collapsible-sidebar/CollapsibleSidebar.js.map +1 -1
  139. package/es/features/collapsible-sidebar/CollapsibleSidebar.scss +35 -3
  140. package/es/features/content-explorer/content-explorer/ContentExplorer.scss +1 -1
  141. package/es/features/content-explorer/item-list/ItemList.js +1 -0
  142. package/es/features/content-explorer/item-list/ItemList.js.flow +1 -0
  143. package/es/features/content-explorer/item-list/ItemList.js.map +1 -1
  144. package/es/features/content-explorer/item-list/ItemListName.js +13 -2
  145. package/es/features/content-explorer/item-list/ItemListName.js.flow +3 -2
  146. package/es/features/content-explorer/item-list/ItemListName.js.map +1 -1
  147. package/es/features/header-flyout/HeaderFlyout.js +8 -10
  148. package/es/features/header-flyout/HeaderFlyout.js.flow +4 -8
  149. package/es/features/header-flyout/HeaderFlyout.js.map +1 -1
  150. package/es/features/header-flyout/styles/HeaderFlyout.scss +54 -15
  151. package/es/features/header-flyout/styles/_variables.scss +4 -0
  152. package/es/features/message-center/components/message-center-modal/MessageCenterModal.js +1 -0
  153. package/es/features/message-center/components/message-center-modal/MessageCenterModal.js.flow +1 -0
  154. package/es/features/message-center/components/message-center-modal/MessageCenterModal.js.map +1 -1
  155. package/es/features/presence/PresenceCollaborator.js +90 -0
  156. package/es/features/presence/PresenceCollaborator.js.flow +81 -0
  157. package/es/features/presence/PresenceCollaborator.js.map +1 -0
  158. package/es/features/presence/PresenceCollaborator.scss +28 -0
  159. package/es/features/presence/PresenceCollaboratorsList.js +9 -57
  160. package/es/features/presence/PresenceCollaboratorsList.js.flow +7 -58
  161. package/es/features/presence/PresenceCollaboratorsList.js.map +1 -1
  162. package/es/features/presence/PresenceCollaboratorsList.scss +8 -35
  163. package/es/features/quick-search/QuickSearch.js +4 -2
  164. package/es/features/quick-search/QuickSearch.js.flow +13 -1
  165. package/es/features/quick-search/QuickSearch.js.map +1 -1
  166. package/es/features/unified-share-modal/SharedLinkSection.js +9 -20
  167. package/es/features/unified-share-modal/SharedLinkSection.js.flow +6 -27
  168. package/es/features/unified-share-modal/SharedLinkSection.js.map +1 -1
  169. package/es/features/unified-share-modal/UnifiedShareForm.js +95 -53
  170. package/es/features/unified-share-modal/UnifiedShareForm.js.flow +70 -14
  171. package/es/features/unified-share-modal/UnifiedShareForm.js.map +1 -1
  172. package/es/features/unified-share-modal/UnifiedShareModal.scss +3 -0
  173. package/es/features/unified-share-modal/flowTypes.js.flow +6 -0
  174. package/es/features/unified-share-modal/flowTypes.js.map +1 -1
  175. package/es/features/unified-share-modal/messages.js +8 -0
  176. package/es/features/unified-share-modal/messages.js.flow +10 -0
  177. package/es/features/unified-share-modal/messages.js.map +1 -1
  178. package/es/features/unified-share-modal/utils/mergeContacts.js +13 -10
  179. package/es/features/unified-share-modal/utils/mergeContacts.js.flow +4 -2
  180. package/es/features/unified-share-modal/utils/mergeContacts.js.map +1 -1
  181. package/es/icon/content/FileXbd32.js +39 -0
  182. package/es/icon/content/FileXbd32.js.flow +38 -0
  183. package/es/icon/content/FileXbd32.js.map +1 -0
  184. package/es/icon/content/FileXbd32.stories.js +13 -0
  185. package/es/icon/content/FileXbd32.stories.js.map +1 -0
  186. package/es/icon/content/FileXdw32.js +39 -0
  187. package/es/icon/content/FileXdw32.js.flow +38 -0
  188. package/es/icon/content/FileXdw32.js.map +1 -0
  189. package/es/icon/content/FileXdw32.stories.js +13 -0
  190. package/es/icon/content/FileXdw32.stories.js.map +1 -0
  191. package/es/icon/content/RetentionPolicyModifiable32.js +36 -0
  192. package/es/icon/content/RetentionPolicyModifiable32.js.flow +31 -0
  193. package/es/icon/content/RetentionPolicyModifiable32.js.map +1 -0
  194. package/es/icon/content/RetentionPolicyModifiable32.stories.js +13 -0
  195. package/es/icon/content/RetentionPolicyModifiable32.stories.js.map +1 -0
  196. package/es/icon/content/RetentionPolicyNonModifiable32.js +36 -0
  197. package/es/icon/content/RetentionPolicyNonModifiable32.js.flow +31 -0
  198. package/es/icon/content/RetentionPolicyNonModifiable32.js.map +1 -0
  199. package/es/icon/content/RetentionPolicyNonModifiable32.stories.js +13 -0
  200. package/es/icon/content/RetentionPolicyNonModifiable32.stories.js.map +1 -0
  201. package/es/icons/avatars/UnknownUserAvatar.js +10 -34
  202. package/es/icons/avatars/UnknownUserAvatar.js.map +1 -1
  203. package/es/icons/file-icon/FileIcon.js +8 -2
  204. package/es/icons/file-icon/FileIcon.js.flow +2 -2
  205. package/es/icons/file-icon/FileIcon.js.map +1 -1
  206. package/es/icons/general/IconSearch.js +1 -1
  207. package/es/icons/general/IconSearch.js.flow +1 -1
  208. package/es/icons/general/IconSearch.js.map +1 -1
  209. package/es/icons/general/IconSearchJuicy.js +30 -0
  210. package/es/icons/general/IconSearchJuicy.js.flow +26 -0
  211. package/es/icons/general/IconSearchJuicy.js.map +1 -0
  212. package/es/icons/google-docs/IconGoogle.js +89 -0
  213. package/es/icons/google-docs/IconGoogle.js.flow +57 -0
  214. package/es/icons/google-docs/IconGoogle.js.map +1 -0
  215. package/es/icons/item-icon/ItemIcon.js +4 -0
  216. package/es/icons/item-icon/ItemIcon.js.map +1 -1
  217. package/es/icons/microsoft-office/IconOffice.js +80 -0
  218. package/es/icons/microsoft-office/IconOffice.js.flow +45 -0
  219. package/es/icons/microsoft-office/IconOffice.js.map +1 -0
  220. package/es/illustration/EmailVerification140.js +111 -0
  221. package/es/illustration/EmailVerification140.js.flow +102 -0
  222. package/es/illustration/EmailVerification140.js.map +1 -0
  223. package/es/illustration/EmailVerification140.stories.js +13 -0
  224. package/es/illustration/EmailVerification140.stories.js.map +1 -0
  225. package/es/src/components/close-button/CloseButton.d.ts +9 -0
  226. package/es/src/components/close-button/CloseButton.stories.d.ts +9 -0
  227. package/es/src/components/close-button/__tests__/CloseButton.stories.test.d.ts +0 -0
  228. package/es/src/components/close-button/__tests__/CloseButton.test.d.ts +1 -0
  229. package/es/src/components/close-button/index.d.ts +1 -0
  230. package/es/src/components/date-picker/AccessiblePikaday.d.ts +16 -0
  231. package/es/src/components/date-picker/DatePicker.d.ts +33 -6
  232. package/es/src/components/date-picker/DatePicker.stories.d.ts +2 -1
  233. package/es/src/components/flyout/OverlayHeader.d.ts +10 -0
  234. package/es/src/components/tooltip/Tooltip.d.ts +4 -3
  235. package/es/src/icon/content/FileXbd32.d.ts +13 -0
  236. package/es/src/icon/content/FileXbd32.stories.d.ts +9 -0
  237. package/es/src/icon/content/FileXdw32.d.ts +13 -0
  238. package/es/src/icon/content/FileXdw32.stories.d.ts +9 -0
  239. package/es/src/icon/content/RetentionPolicyModifiable32.d.ts +13 -0
  240. package/es/src/icon/content/RetentionPolicyModifiable32.stories.d.ts +9 -0
  241. package/es/src/icon/content/RetentionPolicyNonModifiable32.d.ts +13 -0
  242. package/es/src/icon/content/RetentionPolicyNonModifiable32.stories.d.ts +9 -0
  243. package/es/src/icons/avatars/UnknownUserAvatar.d.ts +0 -1
  244. package/es/src/icons/general/IconSearchJuicy.d.ts +3 -0
  245. package/es/src/icons/general/__tests__/IconSearchJuicy.test.d.ts +1 -0
  246. package/es/src/icons/google-docs/IconGoogle.d.ts +12 -0
  247. package/es/src/icons/google-docs/__tests__/IconGoogle.test.d.ts +1 -0
  248. package/es/src/icons/item-icon/ItemIcon.d.ts +2 -0
  249. package/es/src/icons/microsoft-office/IconOffice.d.ts +12 -0
  250. package/es/src/icons/microsoft-office/__tests__/IconOffice.test.d.ts +1 -0
  251. package/es/src/illustration/EmailVerification140.d.ts +13 -0
  252. package/es/src/illustration/EmailVerification140.stories.d.ts +9 -0
  253. package/es/src/styles/variables.d.ts +9 -0
  254. package/es/styles/_variables.scss +1 -0
  255. package/es/styles/common/_forms.scss +6 -0
  256. package/es/styles/constants/_layout.scss +3 -0
  257. package/es/styles/constants/_media-queries.scss +15 -0
  258. package/es/styles/variables.js +18 -0
  259. package/es/styles/variables.js.flow +10 -1
  260. package/es/styles/variables.js.map +1 -1
  261. package/es/utils/Browser.js +12 -0
  262. package/es/utils/Browser.js.flow +10 -0
  263. package/es/utils/Browser.js.map +1 -1
  264. package/es/utils/validators.js +26 -4
  265. package/es/utils/validators.js.flow +25 -3
  266. package/es/utils/validators.js.map +1 -1
  267. package/i18n/bn-IN.js +12 -0
  268. package/i18n/bn-IN.properties +24 -0
  269. package/i18n/da-DK.js +12 -0
  270. package/i18n/da-DK.properties +24 -0
  271. package/i18n/de-DE.js +12 -0
  272. package/i18n/de-DE.properties +24 -0
  273. package/i18n/en-AU.js +12 -0
  274. package/i18n/en-AU.properties +24 -0
  275. package/i18n/en-CA.js +12 -0
  276. package/i18n/en-CA.properties +24 -0
  277. package/i18n/en-GB.js +12 -0
  278. package/i18n/en-GB.properties +24 -0
  279. package/i18n/en-US.js +12 -0
  280. package/i18n/en-US.properties +24 -0
  281. package/i18n/en-x-pseudo.js +12 -0
  282. package/i18n/es-419.js +12 -0
  283. package/i18n/es-419.properties +24 -0
  284. package/i18n/es-ES.js +12 -0
  285. package/i18n/es-ES.properties +24 -0
  286. package/i18n/fi-FI.js +12 -0
  287. package/i18n/fi-FI.properties +24 -0
  288. package/i18n/fr-CA.js +12 -0
  289. package/i18n/fr-CA.properties +24 -0
  290. package/i18n/fr-FR.js +12 -0
  291. package/i18n/fr-FR.properties +24 -0
  292. package/i18n/hi-IN.js +12 -0
  293. package/i18n/hi-IN.properties +24 -0
  294. package/i18n/it-IT.js +12 -0
  295. package/i18n/it-IT.properties +24 -0
  296. package/i18n/ja-JP.js +25 -13
  297. package/i18n/ja-JP.properties +37 -13
  298. package/i18n/ko-KR.js +12 -0
  299. package/i18n/ko-KR.properties +24 -0
  300. package/i18n/nb-NO.js +12 -0
  301. package/i18n/nb-NO.properties +24 -0
  302. package/i18n/nl-NL.js +12 -0
  303. package/i18n/nl-NL.properties +24 -0
  304. package/i18n/pl-PL.js +12 -0
  305. package/i18n/pl-PL.properties +24 -0
  306. package/i18n/pt-BR.js +12 -0
  307. package/i18n/pt-BR.properties +24 -0
  308. package/i18n/ru-RU.js +12 -0
  309. package/i18n/ru-RU.properties +24 -0
  310. package/i18n/sv-SE.js +12 -0
  311. package/i18n/sv-SE.properties +24 -0
  312. package/i18n/tr-TR.js +12 -0
  313. package/i18n/tr-TR.properties +24 -0
  314. package/i18n/zh-CN.js +12 -0
  315. package/i18n/zh-CN.properties +24 -0
  316. package/i18n/zh-TW.js +12 -0
  317. package/i18n/zh-TW.properties +24 -0
  318. package/package.json +8 -5
  319. package/src/__mocks__/pikaday.js +1 -0
  320. package/src/api/__tests__/MockOpenWithData.json +2 -25
  321. package/src/api/uploads/UploadsReachability.js +2 -2
  322. package/src/common/messages.js +5 -0
  323. package/src/common/types/core.js +2 -0
  324. package/src/components/avatar/UnknownUserAvatar.tsx +5 -4
  325. package/src/components/close-button/CloseButton.js.flow +26 -0
  326. package/src/components/close-button/CloseButton.scss +10 -0
  327. package/src/components/close-button/CloseButton.stories.md +1 -0
  328. package/src/components/close-button/CloseButton.stories.tsx +14 -0
  329. package/src/components/close-button/CloseButton.tsx +30 -0
  330. package/src/components/close-button/__tests__/CloseButton.stories.test.tsx +6 -0
  331. package/src/components/close-button/__tests__/CloseButton.test.tsx +40 -0
  332. package/src/components/close-button/__tests__/__image_snapshots__/close-button-stories-test-tsx-components-close-button-close-button-looks-visually-correct-when-using-story-components-buttons-closebutton-regular-1-snap.png +0 -0
  333. package/src/components/close-button/index.js.flow +2 -0
  334. package/src/components/close-button/index.ts +1 -0
  335. package/src/components/date-picker/AccessiblePikaday.ts +79 -0
  336. package/src/components/date-picker/DatePicker.scss +32 -22
  337. package/src/components/date-picker/DatePicker.stories.tsx +6 -0
  338. package/src/components/date-picker/DatePicker.tsx +350 -64
  339. package/src/components/date-picker/__tests__/DatePicker.test.tsx +44 -2
  340. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-allows-editing-in-story-components-datepicker-manually-editable-1-snap.png +0 -0
  341. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-allows-keyboard-selection-in-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
  342. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-closes-calendar-and-clears-date-for-components-datepicker-basic-1-snap.png +0 -0
  343. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
  344. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-basic-1-snap.png +0 -0
  345. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-custom-error-tooltip-position-1-snap.png +0 -0
  346. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-disabled-with-error-message-1-snap.png +0 -0
  347. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-manually-editable-1-snap.png +0 -0
  348. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-description-1-snap.png +0 -0
  349. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-limited-date-range-1-snap.png +0 -0
  350. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-range-1-snap.png +0 -0
  351. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-reflects-changes-in-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
  352. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-shows-calendar-and-date-for-components-datepicker-basic-1-snap.png +0 -0
  353. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-shows-limited-range-in-components-datepicker-with-limited-date-range-1-snap.png +0 -0
  354. package/src/components/date-picker/_pikaday.scss +8 -2
  355. package/src/components/flyout/Flyout.js +14 -3
  356. package/src/components/flyout/Flyout.scss +40 -0
  357. package/src/components/flyout/FlyoutContext.js +9 -0
  358. package/src/components/flyout/OverlayHeader.scss +9 -0
  359. package/src/components/flyout/OverlayHeader.tsx +38 -0
  360. package/src/components/flyout/__tests__/Flyout.test.js +15 -0
  361. package/src/components/flyout/__tests__/OverlayHeader.test.js +56 -0
  362. package/src/components/flyout/_variables.scss +1 -0
  363. package/src/components/flyout/index.js +2 -0
  364. package/src/components/image-tooltip/ImageTooltip.tsx +1 -2
  365. package/src/components/media-query/__tests__/useMediaQuery.test.js +48 -0
  366. package/src/components/media-query/__tests__/withMediaQuery.test.js +29 -0
  367. package/src/components/media-query/constants.js +32 -0
  368. package/src/components/media-query/index.js +4 -0
  369. package/src/components/media-query/stories/MediaQuery.stories.js +80 -0
  370. package/src/components/media-query/stories/MediaQuery.stories.md +29 -0
  371. package/src/components/media-query/types.js +29 -0
  372. package/src/components/media-query/useMediaQuery.js +97 -0
  373. package/src/components/media-query/withMediaQuery.js +23 -0
  374. package/src/components/modal/Modal.scss +27 -0
  375. package/src/components/modal/__tests__/Modal.stories.test.js +10 -0
  376. package/src/components/modal/__tests__/__image_snapshots__/modal-stories-test-js-components-modal-modal-looks-visually-correct-for-small-screens-when-button-is-clicked-in-story-components-modal-basic-1-snap.png +0 -0
  377. package/src/components/modal/__tests__/__image_snapshots__/modal-stories-test-js-components-modal-modal-looks-visually-correct-for-small-screens-when-button-is-clicked-in-story-components-modal-with-custom-backdrop-click-handler-1-snap.png +0 -0
  378. package/src/components/preview/previewIcons.ts +4 -0
  379. package/src/components/search-form/SearchForm.scss +0 -5
  380. package/src/components/selector-dropdown/SelectorDropdown.js +3 -3
  381. package/src/components/selector-dropdown/__tests__/SelectorDropdown.test.js +5 -1
  382. package/src/components/sidebar-toggle-button/__tests__/__snapshots__/SidebarToggleButton.test.js.snap +0 -8
  383. package/src/components/tab-view/Tabs.scss +0 -4
  384. package/src/components/tooltip/Tooltip.tsx +20 -5
  385. package/src/components/tooltip/__tests__/Tooltip.test.tsx +17 -4
  386. package/src/components/tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +0 -2
  387. package/src/constants.js +1 -0
  388. package/src/elements/content-open-with/IconFileMap.js +0 -2
  389. package/src/elements/content-open-with/__tests__/ContentOpenWith.test.js +13 -13
  390. package/src/elements/content-open-with/__tests__/OpenWithButton.test.js +1 -1
  391. package/src/elements/content-open-with/__tests__/OpenWithDropdownMenu.test.js +1 -5
  392. package/src/elements/content-open-with/__tests__/OpenWithDropdownMenuItem.test.js +2 -2
  393. package/src/elements/content-open-with/__tests__/__snapshots__/ContentOpenWith.test.js.snap +5 -5
  394. package/src/elements/content-open-with/__tests__/__snapshots__/OpenWithButton.test.js.snap +1 -1
  395. package/src/elements/content-open-with/__tests__/__snapshots__/OpenWithDropdownMenu.test.js.snap +1 -11
  396. package/src/elements/content-open-with/__tests__/__snapshots__/OpenWithDropdownMenuItem.test.js.snap +4 -3
  397. package/src/elements/content-sidebar/Sidebar.js +1 -1
  398. package/src/elements/content-sidebar/__tests__/AddTaskButton.test.js +15 -0
  399. package/src/elements/content-sidebar/activity-feed/common/delete-confirmation/DeleteConfirmation.scss +3 -3
  400. package/src/elements/content-sidebar/activity-feed/task-form/TaskForm.js +18 -5
  401. package/src/elements/content-sidebar/versions/StaticVersionSidebar.js +97 -0
  402. package/src/elements/content-sidebar/versions/StaticVersionsSidebar.scss +67 -0
  403. package/src/elements/content-sidebar/versions/VersionsSidebar.js +16 -3
  404. package/src/elements/content-sidebar/versions/VersionsSidebar.scss +5 -0
  405. package/src/elements/content-sidebar/versions/VersionsSidebarContainer.js +42 -7
  406. package/src/elements/content-sidebar/versions/__tests__/VersionsSidebar.test.js +18 -1
  407. package/src/elements/content-sidebar/versions/__tests__/VersionsSidebarContainer.test.js +51 -2
  408. package/src/elements/content-sidebar/versions/__tests__/__snapshots__/VersionsSidebarContainer.test.js.snap +75 -0
  409. package/src/elements/content-sidebar/versions/flowTypes.js +1 -0
  410. package/src/elements/content-sidebar/versions/messages.js +28 -0
  411. package/src/features/classification/constants.js +2 -0
  412. package/src/features/classification/flowTypes.js +7 -1
  413. package/src/features/classification/security-controls/SecurityControls.js +3 -4
  414. package/src/features/classification/security-controls/SecurityControlsItem.js +20 -17
  415. package/src/features/classification/security-controls/SecurityControlsItem.scss +4 -0
  416. package/src/features/classification/security-controls/SecurityControlsModal.js +2 -2
  417. package/src/features/classification/security-controls/__tests__/SecurityControlsItem.test.js +10 -0
  418. package/src/features/classification/security-controls/__tests__/__snapshots__/SecurityControls.test.js.snap +6 -6
  419. package/src/features/classification/security-controls/__tests__/__snapshots__/SecurityControlsItem.test.js.snap +35 -0
  420. package/src/features/classification/security-controls/__tests__/__snapshots__/SecurityControlsModal.test.js.snap +2 -2
  421. package/src/features/classification/security-controls/__tests__/__snapshots__/utils.test.js.snap +20 -0
  422. package/src/features/classification/security-controls/__tests__/utils.test.js +38 -18
  423. package/src/features/classification/security-controls/messages.js +5 -0
  424. package/src/features/classification/security-controls/utils.js +51 -27
  425. package/src/features/collapsible-sidebar/CollapsibleSidebar.js +13 -5
  426. package/src/features/collapsible-sidebar/CollapsibleSidebar.scss +35 -3
  427. package/src/features/collapsible-sidebar/__tests__/CollapsibleSidebar.test.js +35 -0
  428. package/src/features/collapsible-sidebar/__tests__/__snapshots__/CollapsibleSidebar.test.js.snap +1 -0
  429. package/src/features/content-explorer/content-explorer/ContentExplorer.scss +1 -1
  430. package/src/features/content-explorer/item-list/ItemList.js +1 -0
  431. package/src/features/content-explorer/item-list/ItemListName.js +3 -2
  432. package/src/features/content-explorer/item-list/__tests__/ItemListName.test.js +16 -2
  433. package/src/features/header-flyout/HeaderFlyout.js +4 -8
  434. package/src/features/header-flyout/__tests__/__snapshots__/HeaderFlyout.test.js.snap +14 -11
  435. package/src/features/header-flyout/styles/HeaderFlyout.scss +54 -15
  436. package/src/features/header-flyout/styles/_variables.scss +4 -0
  437. package/src/features/message-center/components/message-center-modal/MessageCenterModal.js +1 -0
  438. package/src/features/metadata-instance-editor/__tests__/__snapshots__/TemplateDropdown.test.js.snap +7 -0
  439. package/src/features/pagination/__tests__/__snapshots__/MarkerBasedPagination.test.js.snap +0 -8
  440. package/src/features/pagination/__tests__/__snapshots__/OffsetBasedPagination.test.js.snap +0 -16
  441. package/src/features/presence/PresenceCollaborator.js +81 -0
  442. package/src/features/presence/PresenceCollaborator.scss +28 -0
  443. package/src/features/presence/PresenceCollaboratorsList.js +7 -58
  444. package/src/features/presence/PresenceCollaboratorsList.scss +8 -35
  445. package/src/features/presence/__tests__/PresenceCollaborator.test.js +36 -0
  446. package/src/features/presence/__tests__/PresenceCollaboratorsList.test.js +13 -57
  447. package/src/features/presence/__tests__/__snapshots__/Presence.test.js.snap +5 -0
  448. package/src/features/presence/__tests__/__snapshots__/PresenceLink.test.js.snap +3 -0
  449. package/src/features/query-bar/__tests__/__snapshots__/ColumnButton.test.js.snap +3 -0
  450. package/src/features/quick-search/QuickSearch.js +13 -1
  451. package/src/features/quick-search/__tests__/QuickSearch.test.js +17 -0
  452. package/src/features/unified-share-modal/SharedLinkSection.js +6 -27
  453. package/src/features/unified-share-modal/UnifiedShareForm.js +70 -14
  454. package/src/features/unified-share-modal/UnifiedShareModal.scss +3 -0
  455. package/src/features/unified-share-modal/__tests__/EmailForm.test.js +9 -0
  456. package/src/features/unified-share-modal/__tests__/SharedLinkSection.test.js +14 -4
  457. package/src/features/unified-share-modal/__tests__/UnifiedShareForm.test.js +53 -4
  458. package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkSection.test.js.snap +9 -0
  459. package/src/features/unified-share-modal/__tests__/__snapshots__/UnifiedShareForm.test.js.snap +0 -159
  460. package/src/features/unified-share-modal/flowTypes.js +6 -0
  461. package/src/features/unified-share-modal/messages.js +10 -0
  462. package/src/features/unified-share-modal/utils/__tests__/mergeContacts.test.js +23 -0
  463. package/src/features/unified-share-modal/utils/mergeContacts.js +4 -2
  464. package/src/icon/content/FileXbd32.js.flow +38 -0
  465. package/src/icon/content/FileXbd32.stories.tsx +13 -0
  466. package/src/icon/content/FileXbd32.tsx +37 -0
  467. package/src/icon/content/FileXdw32.js.flow +38 -0
  468. package/src/icon/content/FileXdw32.stories.tsx +13 -0
  469. package/src/icon/content/FileXdw32.tsx +37 -0
  470. package/src/icon/content/RetentionPolicyModifiable32.js.flow +31 -0
  471. package/src/icon/content/RetentionPolicyModifiable32.stories.tsx +14 -0
  472. package/src/icon/content/RetentionPolicyModifiable32.tsx +29 -0
  473. package/src/icon/content/RetentionPolicyNonModifiable32.js.flow +31 -0
  474. package/src/icon/content/RetentionPolicyNonModifiable32.stories.tsx +14 -0
  475. package/src/icon/content/RetentionPolicyNonModifiable32.tsx +29 -0
  476. package/src/icons/adobe-sign/README.md +1 -1
  477. package/src/icons/avatars/UnknownUserAvatar.tsx +7 -15
  478. package/src/icons/file-icon/FileIcon.js.flow +2 -2
  479. package/src/icons/file-icon/FileIcon.tsx +8 -2
  480. package/src/icons/file-icon/__tests__/FileIcon.test.tsx +28 -69
  481. package/src/icons/file-icon/__tests__/__snapshots__/FileIcon.test.tsx.snap +48 -34
  482. package/src/icons/general/IconSearch.js.flow +1 -1
  483. package/src/icons/general/IconSearch.tsx +1 -1
  484. package/src/icons/general/IconSearchJuicy.js.flow +26 -0
  485. package/src/icons/general/IconSearchJuicy.tsx +25 -0
  486. package/src/icons/general/README.md +5 -0
  487. package/src/icons/general/__tests__/IconSearchJuicy.test.tsx +38 -0
  488. package/src/icons/google-docs/IconGoogle.js.flow +57 -0
  489. package/src/icons/google-docs/IconGoogle.tsx +50 -0
  490. package/src/icons/google-docs/__tests__/IconGoogle.test.tsx +44 -0
  491. package/src/icons/item-icon/ItemIcon.tsx +4 -0
  492. package/src/icons/item-icon/__tests__/ItemIcon.test.tsx +47 -115
  493. package/src/icons/item-icon/__tests__/__snapshots__/ItemIcon.test.tsx.snap +229 -229
  494. package/src/icons/microsoft-office/IconOffice.js.flow +45 -0
  495. package/src/icons/microsoft-office/IconOffice.tsx +38 -0
  496. package/src/icons/microsoft-office/__tests__/IconOffice.test.tsx +44 -0
  497. package/src/illustration/EmailVerification140.js.flow +102 -0
  498. package/src/illustration/EmailVerification140.stories.tsx +13 -0
  499. package/src/illustration/EmailVerification140.tsx +100 -0
  500. package/src/styles/_variables.scss +1 -0
  501. package/src/styles/common/_forms.scss +6 -0
  502. package/src/styles/constants/_layout.scss +3 -0
  503. package/src/styles/constants/_media-queries.scss +15 -0
  504. package/src/styles/variables.js +10 -1
  505. package/src/styles/variables.json +10 -1
  506. package/src/styles/variables.ts +9 -0
  507. package/src/utils/Browser.js +10 -0
  508. package/src/utils/validators.js +25 -3
@@ -1,14 +1,13 @@
1
1
  import * as React from 'react';
2
2
  import classnames from 'classnames';
3
- import isEmpty from 'lodash/isEmpty';
4
3
  import PropTypes from 'prop-types';
5
4
  import throttle from 'lodash/throttle';
6
5
  import { FormattedMessage, injectIntl } from 'react-intl';
6
+
7
7
  import Button from '../../components/button';
8
- import Link from '../../components/link/LinkBase';
8
+ import PresenceCollaborator from './PresenceCollaborator';
9
9
  import messages from './messages';
10
- import PresenceAvatar from './PresenceAvatar';
11
- import { determineInteractionMessage } from './utils/presenceUtils';
10
+
12
11
  import './PresenceCollaboratorsList.scss';
13
12
 
14
13
  class PresenceCollaboratorsList extends React.Component<Props> {
@@ -96,57 +95,6 @@ class PresenceCollaboratorsList extends React.Component<Props> {
96
95
  </div>
97
96
  );
98
97
 
99
- renderTimestampMessage = (interactedAt, interactionType) => {
100
- const lastActionMessage = determineInteractionMessage(interactionType, interactedAt);
101
- const { intl } = this.props;
102
- const timeAgo = intl.formatRelativeTime
103
- ? intl.formatRelativeTime(interactedAt - Date.now())
104
- : intl.formatRelative(interactedAt);
105
-
106
- if (lastActionMessage) {
107
- return (
108
- <FormattedMessage
109
- {...lastActionMessage}
110
- values={{
111
- timeAgo,
112
- }}
113
- />
114
- );
115
- }
116
- return null;
117
- };
118
-
119
- renderCollabList = () => {
120
- const { collaborators } = this.props;
121
- return collaborators.map(collaborator => {
122
- const { avatarUrl, id, isActive, interactedAt, interactionType, name, profileUrl } = collaborator;
123
-
124
- return (
125
- <div key={id} className="bdl-PresenceCollaboratorsList-item" role="listitem">
126
- <PresenceAvatar avatarUrl={avatarUrl} id={id} isActive={isActive} isDropDownAvatar name={name} />
127
- <div className="bdl-PresenceCollaboratorsList-item-info-container">
128
- <div className="bdl-PresenceCollaboratorsList-item-info-name">
129
- {isEmpty(profileUrl) ? (
130
- <span>{name}</span>
131
- ) : (
132
- <Link href={profileUrl} target="_blank">
133
- {name}
134
- </Link>
135
- )}
136
- </div>
137
- <div className="bdl-PresenceCollaboratorsList-item-info-time">
138
- {isActive ? (
139
- <FormattedMessage {...messages.activeNowText} />
140
- ) : (
141
- this.renderTimestampMessage(interactedAt, interactionType)
142
- )}
143
- </div>
144
- </div>
145
- </div>
146
- );
147
- });
148
- };
149
-
150
98
  renderActions = () => {
151
99
  const { getLinkCallback, inviteCallback } = this.props;
152
100
 
@@ -172,7 +120,7 @@ class PresenceCollaboratorsList extends React.Component<Props> {
172
120
 
173
121
  render() {
174
122
  const { isScrollableAbove, isScrollableBelow } = this.state;
175
- const { getLinkCallback, inviteCallback } = this.props;
123
+ const { collaborators, getLinkCallback, inviteCallback } = this.props;
176
124
  const buttonsPresent = getLinkCallback || inviteCallback;
177
125
 
178
126
  const dropdownListClasses = classnames('bdl-PresenceCollaboratorsList-list', {
@@ -183,7 +131,6 @@ class PresenceCollaboratorsList extends React.Component<Props> {
183
131
  });
184
132
 
185
133
  const title = this.renderTitle();
186
- const collabList = this.renderCollabList();
187
134
  const actions = this.renderActions();
188
135
 
189
136
  return (
@@ -197,7 +144,9 @@ class PresenceCollaboratorsList extends React.Component<Props> {
197
144
  onScroll={this.throttledHandleScroll}
198
145
  role="list"
199
146
  >
200
- {collabList}
147
+ {collaborators.map(collaborator => (
148
+ <PresenceCollaborator collaborator={collaborator} key={collaborator.id} role="listitem" />
149
+ ))}
201
150
  </div>
202
151
  {actions}
203
152
  </div>
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/presence/PresenceCollaboratorsList.js"],"names":["React","classnames","isEmpty","PropTypes","throttle","FormattedMessage","injectIntl","Button","Link","messages","PresenceAvatar","determineInteractionMessage","PresenceCollaboratorsList","isScrollableAbove","isScrollableBelow","elem","scrollTop","scrollHeight","clientHeight","event","onScroll","props","elDropdownList","setState","calculateOverflow","handleScroll","leading","trailing","recentActivity","interactedAt","interactionType","lastActionMessage","intl","timeAgo","formatRelativeTime","Date","now","formatRelative","collaborators","map","collaborator","avatarUrl","id","isActive","name","profileUrl","activeNowText","renderTimestampMessage","getLinkCallback","inviteCallback","getLinkButtonText","inviteButtonText","overflow","state","buttonsPresent","dropdownListClasses","title","renderTitle","collabList","renderCollabList","actions","renderActions","list","throttledHandleScroll","Component","arrayOf","shape","string","oneOfType","number","bool","isRequired","func","any","PresenceCollaboratorsListComponent"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport isEmpty from 'lodash/isEmpty';\nimport PropTypes from 'prop-types';\nimport throttle from 'lodash/throttle';\nimport { FormattedMessage, injectIntl } from 'react-intl';\nimport Button from '../../components/button';\nimport Link from '../../components/link/LinkBase';\nimport messages from './messages';\nimport PresenceAvatar from './PresenceAvatar';\nimport { determineInteractionMessage } from './utils/presenceUtils';\nimport './PresenceCollaboratorsList.scss';\n\nclass PresenceCollaboratorsList extends React.Component<Props> {\n static propTypes = {\n collaborators: PropTypes.arrayOf(\n PropTypes.shape({\n /** Url to avatar image. If passed in, component will render the avatar image instead of the initials */\n avatarUrl: PropTypes.string,\n /** Users id */\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n isActive: PropTypes.bool,\n /** Unix timestamp of when the user last interacted with the document */\n interactedAt: PropTypes.number,\n /** The type of interaction by the user */\n interactionType: PropTypes.string,\n /** User's full name */\n name: PropTypes.string.isRequired,\n /** Custom Profile URL */\n profileUrl: PropTypes.string,\n }),\n ).isRequired,\n /* Get Link button callback. also controls visibility of button */\n getLinkCallback: PropTypes.func,\n /* Show Invite button callback. also controls visibility of button */\n inviteCallback: PropTypes.func,\n /* Callback for Dropdown onScroll event */\n onScroll: PropTypes.func,\n /* Intl object */\n intl: PropTypes.any,\n };\n\n state = {\n isScrollableAbove: false,\n isScrollableBelow: false,\n };\n\n componentDidMount() {\n const overflow = this.calculateOverflow(this.elDropdownList);\n // eslint-disable-next-line react/no-did-mount-set-state\n this.setState(overflow);\n }\n\n componentDidUpdate() {\n const overflow = this.calculateOverflow(this.elDropdownList);\n /**\n * recalculate overflow when dropdown is visible and new collabs are added\n * This will not go into an infinite loop because we check for changes in local component state\n */\n if (\n overflow.isScrollableAbove !== this.state.isScrollableAbove ||\n overflow.isScrollableBelow !== this.state.isScrollableBelow\n ) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(overflow);\n }\n }\n\n calculateOverflow = elem => {\n const isScrollableAbove = elem.scrollTop > 0;\n const isScrollableBelow = elem.scrollTop < elem.scrollHeight - elem.clientHeight;\n return {\n isScrollableAbove,\n isScrollableBelow,\n };\n };\n\n handleScroll = event => {\n const { onScroll } = this.props;\n if (this.elDropdownList) {\n this.setState(this.calculateOverflow(this.elDropdownList));\n if (onScroll) {\n onScroll(event);\n }\n }\n };\n\n throttledHandleScroll = throttle(this.handleScroll, 50, {\n leading: true,\n trailing: true,\n });\n\n renderTitle = () => (\n <div className=\"bdl-PresenceCollaboratorsList-title\">\n <FormattedMessage {...messages.recentActivity} />\n </div>\n );\n\n renderTimestampMessage = (interactedAt, interactionType) => {\n const lastActionMessage = determineInteractionMessage(interactionType, interactedAt);\n const { intl } = this.props;\n const timeAgo = intl.formatRelativeTime\n ? intl.formatRelativeTime(interactedAt - Date.now())\n : intl.formatRelative(interactedAt);\n\n if (lastActionMessage) {\n return (\n <FormattedMessage\n {...lastActionMessage}\n values={{\n timeAgo,\n }}\n />\n );\n }\n return null;\n };\n\n renderCollabList = () => {\n const { collaborators } = this.props;\n return collaborators.map(collaborator => {\n const { avatarUrl, id, isActive, interactedAt, interactionType, name, profileUrl } = collaborator;\n\n return (\n <div key={id} className=\"bdl-PresenceCollaboratorsList-item\" role=\"listitem\">\n <PresenceAvatar avatarUrl={avatarUrl} id={id} isActive={isActive} isDropDownAvatar name={name} />\n <div className=\"bdl-PresenceCollaboratorsList-item-info-container\">\n <div className=\"bdl-PresenceCollaboratorsList-item-info-name\">\n {isEmpty(profileUrl) ? (\n <span>{name}</span>\n ) : (\n <Link href={profileUrl} target=\"_blank\">\n {name}\n </Link>\n )}\n </div>\n <div className=\"bdl-PresenceCollaboratorsList-item-info-time\">\n {isActive ? (\n <FormattedMessage {...messages.activeNowText} />\n ) : (\n this.renderTimestampMessage(interactedAt, interactionType)\n )}\n </div>\n </div>\n </div>\n );\n });\n };\n\n renderActions = () => {\n const { getLinkCallback, inviteCallback } = this.props;\n\n return (\n (getLinkCallback || inviteCallback) && (\n <div className=\"bdl-PresenceCollaboratorsList-actions\">\n <div>\n {getLinkCallback && (\n <Button onClick={getLinkCallback}>\n <FormattedMessage {...messages.getLinkButtonText} />\n </Button>\n )}\n {inviteCallback && (\n <Button onClick={inviteCallback}>\n <FormattedMessage {...messages.inviteButtonText} />\n </Button>\n )}\n </div>\n </div>\n )\n );\n };\n\n render() {\n const { isScrollableAbove, isScrollableBelow } = this.state;\n const { getLinkCallback, inviteCallback } = this.props;\n const buttonsPresent = getLinkCallback || inviteCallback;\n\n const dropdownListClasses = classnames('bdl-PresenceCollaboratorsList-list', {\n 'dropshadow-list': !buttonsPresent,\n 'dropshadow-list-with-buttons': buttonsPresent,\n 'is-scrollable-above': isScrollableAbove,\n 'is-scrollable-below': isScrollableBelow,\n });\n\n const title = this.renderTitle();\n const collabList = this.renderCollabList();\n const actions = this.renderActions();\n\n return (\n <div className=\"bdl-PresenceCollaboratorsList\">\n {title}\n <div\n ref={list => {\n this.elDropdownList = list;\n }}\n className={dropdownListClasses}\n onScroll={this.throttledHandleScroll}\n role=\"list\"\n >\n {collabList}\n </div>\n {actions}\n </div>\n );\n }\n}\n\nexport { PresenceCollaboratorsList as PresenceCollaboratorsListComponent };\nexport default injectIntl(PresenceCollaboratorsList);\n"],"file":"PresenceCollaboratorsList.js"}
1
+ {"version":3,"sources":["../../../src/features/presence/PresenceCollaboratorsList.js"],"names":["React","classnames","PropTypes","throttle","FormattedMessage","injectIntl","Button","PresenceCollaborator","messages","PresenceCollaboratorsList","isScrollableAbove","isScrollableBelow","elem","scrollTop","scrollHeight","clientHeight","event","onScroll","props","elDropdownList","setState","calculateOverflow","handleScroll","leading","trailing","recentActivity","getLinkCallback","inviteCallback","getLinkButtonText","inviteButtonText","overflow","state","collaborators","buttonsPresent","dropdownListClasses","title","renderTitle","actions","renderActions","list","throttledHandleScroll","map","collaborator","id","Component","arrayOf","shape","avatarUrl","string","oneOfType","number","isActive","bool","interactedAt","interactionType","name","isRequired","profileUrl","func","intl","any","PresenceCollaboratorsListComponent"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport throttle from 'lodash/throttle';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nimport Button from '../../components/button';\nimport PresenceCollaborator from './PresenceCollaborator';\nimport messages from './messages';\n\nimport './PresenceCollaboratorsList.scss';\n\nclass PresenceCollaboratorsList extends React.Component<Props> {\n static propTypes = {\n collaborators: PropTypes.arrayOf(\n PropTypes.shape({\n /** Url to avatar image. If passed in, component will render the avatar image instead of the initials */\n avatarUrl: PropTypes.string,\n /** Users id */\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n isActive: PropTypes.bool,\n /** Unix timestamp of when the user last interacted with the document */\n interactedAt: PropTypes.number,\n /** The type of interaction by the user */\n interactionType: PropTypes.string,\n /** User's full name */\n name: PropTypes.string.isRequired,\n /** Custom Profile URL */\n profileUrl: PropTypes.string,\n }),\n ).isRequired,\n /* Get Link button callback. also controls visibility of button */\n getLinkCallback: PropTypes.func,\n /* Show Invite button callback. also controls visibility of button */\n inviteCallback: PropTypes.func,\n /* Callback for Dropdown onScroll event */\n onScroll: PropTypes.func,\n /* Intl object */\n intl: PropTypes.any,\n };\n\n state = {\n isScrollableAbove: false,\n isScrollableBelow: false,\n };\n\n componentDidMount() {\n const overflow = this.calculateOverflow(this.elDropdownList);\n // eslint-disable-next-line react/no-did-mount-set-state\n this.setState(overflow);\n }\n\n componentDidUpdate() {\n const overflow = this.calculateOverflow(this.elDropdownList);\n /**\n * recalculate overflow when dropdown is visible and new collabs are added\n * This will not go into an infinite loop because we check for changes in local component state\n */\n if (\n overflow.isScrollableAbove !== this.state.isScrollableAbove ||\n overflow.isScrollableBelow !== this.state.isScrollableBelow\n ) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState(overflow);\n }\n }\n\n calculateOverflow = elem => {\n const isScrollableAbove = elem.scrollTop > 0;\n const isScrollableBelow = elem.scrollTop < elem.scrollHeight - elem.clientHeight;\n return {\n isScrollableAbove,\n isScrollableBelow,\n };\n };\n\n handleScroll = event => {\n const { onScroll } = this.props;\n if (this.elDropdownList) {\n this.setState(this.calculateOverflow(this.elDropdownList));\n if (onScroll) {\n onScroll(event);\n }\n }\n };\n\n throttledHandleScroll = throttle(this.handleScroll, 50, {\n leading: true,\n trailing: true,\n });\n\n renderTitle = () => (\n <div className=\"bdl-PresenceCollaboratorsList-title\">\n <FormattedMessage {...messages.recentActivity} />\n </div>\n );\n\n renderActions = () => {\n const { getLinkCallback, inviteCallback } = this.props;\n\n return (\n (getLinkCallback || inviteCallback) && (\n <div className=\"bdl-PresenceCollaboratorsList-actions\">\n <div>\n {getLinkCallback && (\n <Button onClick={getLinkCallback}>\n <FormattedMessage {...messages.getLinkButtonText} />\n </Button>\n )}\n {inviteCallback && (\n <Button onClick={inviteCallback}>\n <FormattedMessage {...messages.inviteButtonText} />\n </Button>\n )}\n </div>\n </div>\n )\n );\n };\n\n render() {\n const { isScrollableAbove, isScrollableBelow } = this.state;\n const { collaborators, getLinkCallback, inviteCallback } = this.props;\n const buttonsPresent = getLinkCallback || inviteCallback;\n\n const dropdownListClasses = classnames('bdl-PresenceCollaboratorsList-list', {\n 'dropshadow-list': !buttonsPresent,\n 'dropshadow-list-with-buttons': buttonsPresent,\n 'is-scrollable-above': isScrollableAbove,\n 'is-scrollable-below': isScrollableBelow,\n });\n\n const title = this.renderTitle();\n const actions = this.renderActions();\n\n return (\n <div className=\"bdl-PresenceCollaboratorsList\">\n {title}\n <div\n ref={list => {\n this.elDropdownList = list;\n }}\n className={dropdownListClasses}\n onScroll={this.throttledHandleScroll}\n role=\"list\"\n >\n {collaborators.map(collaborator => (\n <PresenceCollaborator collaborator={collaborator} key={collaborator.id} role=\"listitem\" />\n ))}\n </div>\n {actions}\n </div>\n );\n }\n}\n\nexport { PresenceCollaboratorsList as PresenceCollaboratorsListComponent };\nexport default injectIntl(PresenceCollaboratorsList);\n"],"file":"PresenceCollaboratorsList.js"}
@@ -77,52 +77,25 @@
77
77
  /* end GROWTH-382 */
78
78
  }
79
79
 
80
- .bdl-PresenceCollaboratorsList-title {
81
- margin-top: 0;
82
- margin-bottom: 10px;
83
- color: $bdl-gray;
84
- font-size: 15px;
85
- }
86
-
87
- .bdl-PresenceCollaboratorsList-item {
80
+ .bdl-PresenceCollaborator {
88
81
  display: flex;
89
82
  align-items: center;
90
83
  margin-top: 10px;
91
84
  }
92
85
 
93
- .bdl-PresenceCollaboratorsList-item-info-container {
94
- display: inline-block;
95
- margin-left: 10px;
96
- }
97
-
98
- .bdl-PresenceCollaboratorsList-item-info-name {
99
- width: 180px;
100
- overflow: hidden;
101
- color: $bdl-gray;
102
- font-size: 13px;
103
- white-space: nowrap;
104
- text-overflow: ellipsis;
105
-
106
- a {
107
- color: $bdl-gray;
108
-
109
- &:hover {
110
- text-decoration: underline;
111
- }
112
- }
113
- }
114
-
115
- .bdl-PresenceCollaboratorsList-item-info-time {
116
- color: $bdl-gray-62;
117
- font-size: 12px;
118
- }
119
-
120
86
  .bdl-PresenceCollaboratorsList-list {
121
87
  max-height: 200px;
122
88
  overflow-x: hidden;
123
89
  overflow-y: auto;
124
90
  }
125
91
 
92
+ .bdl-PresenceCollaboratorsList-title {
93
+ margin-top: 0;
94
+ margin-bottom: 10px;
95
+ color: $bdl-gray;
96
+ font-size: 15px;
97
+ }
98
+
126
99
  .bdl-PresenceCollaboratorsList-actions {
127
100
  display: flex;
128
101
  justify-content: flex-end;
@@ -65,7 +65,8 @@ function (_React$Component) {
65
65
  errorMessage = _this$props.errorMessage,
66
66
  inputProps = _this$props.inputProps,
67
67
  noItemsMessage = _this$props.noItemsMessage,
68
- onSelect = _this$props.onSelect;
68
+ onSelect = _this$props.onSelect,
69
+ title = _this$props.title;
69
70
  var showMessage = this.state.showMessage;
70
71
  return React.createElement("div", {
71
72
  className: classNames('quick-search', className),
@@ -74,7 +75,8 @@ function (_React$Component) {
74
75
  }, React.createElement(SelectorDropdown, {
75
76
  dividerIndex: dividerIndex,
76
77
  onSelect: onSelect,
77
- selector: React.createElement(QuickSearchSelector, inputProps)
78
+ selector: React.createElement(QuickSearchSelector, inputProps),
79
+ title: title
78
80
  }, children), !!errorMessage && React.createElement(QuickSearchMessage, {
79
81
  isShown: showMessage
80
82
  }, errorMessage), !!noItemsMessage && React.createElement(QuickSearchMessage, {
@@ -24,6 +24,8 @@ type Props = {
24
24
  noItemsMessage?: React.Node,
25
25
  /** Function called with the index of the selected option and the event (selected by keyboard or click) */
26
26
  onSelect?: Function,
27
+ /** Optional title text that will be rendered above the list */
28
+ title?: React.Node,
27
29
  };
28
30
 
29
31
  type State = {
@@ -48,7 +50,16 @@ class QuickSearch extends React.Component<Props, State> {
48
50
  };
49
51
 
50
52
  render() {
51
- const { children, className, dividerIndex, errorMessage, inputProps, noItemsMessage, onSelect } = this.props;
53
+ const {
54
+ children,
55
+ className,
56
+ dividerIndex,
57
+ errorMessage,
58
+ inputProps,
59
+ noItemsMessage,
60
+ onSelect,
61
+ title,
62
+ } = this.props;
52
63
  const { showMessage } = this.state;
53
64
 
54
65
  return (
@@ -57,6 +68,7 @@ class QuickSearch extends React.Component<Props, State> {
57
68
  dividerIndex={dividerIndex}
58
69
  onSelect={onSelect}
59
70
  selector={<QuickSearchSelector {...inputProps} />}
71
+ title={title}
60
72
  >
61
73
  {children}
62
74
  </SelectorDropdown>
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/quick-search/QuickSearch.js"],"names":["React","classNames","SelectorDropdown","QuickSearchMessage","QuickSearchSelector","QuickSearch","props","setState","showMessage","state","children","className","dividerIndex","errorMessage","inputProps","noItemsMessage","onSelect","handleBlur","handleFocus","Component"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AAEA,OAAOC,gBAAP,MAA6B,oCAA7B;AAEA,OAAOC,kBAAP,MAA+B,sBAA/B;AACA,OAAOC,mBAAP,MAAgC,uBAAhC;AAEA,OAAO,oBAAP;;IAuBMC,W;;;;;AACF,uBAAYC,KAAZ,EAA0B;AAAA;;AAAA;;AACtB,qFAAMA,KAAN;;AADsB,kEAQZ,YAAM;AAChB,YAAKC,QAAL,CAAc;AAAEC,QAAAA,WAAW,EAAE;AAAf,OAAd;AACH,KAVyB;;AAAA,iEAYb,YAAM;AACf,YAAKD,QAAL,CAAc;AAAEC,QAAAA,WAAW,EAAE;AAAf,OAAd;AACH,KAdyB;;AAGtB,UAAKC,KAAL,GAAa;AACTD,MAAAA,WAAW,EAAE;AADJ,KAAb;AAHsB;AAMzB;;;;6BAUQ;AAAA,wBAC6F,KAAKF,KADlG;AAAA,UACGI,QADH,eACGA,QADH;AAAA,UACaC,SADb,eACaA,SADb;AAAA,UACwBC,YADxB,eACwBA,YADxB;AAAA,UACsCC,YADtC,eACsCA,YADtC;AAAA,UACoDC,UADpD,eACoDA,UADpD;AAAA,UACgEC,cADhE,eACgEA,cADhE;AAAA,UACgFC,QADhF,eACgFA,QADhF;AAAA,UAEGR,WAFH,GAEmB,KAAKC,KAFxB,CAEGD,WAFH;AAIL,aACI;AAAK,QAAA,SAAS,EAAEP,UAAU,CAAC,cAAD,EAAiBU,SAAjB,CAA1B;AAAuD,QAAA,MAAM,EAAE,KAAKM,UAApE;AAAgF,QAAA,OAAO,EAAE,KAAKC;AAA9F,SACI,oBAAC,gBAAD;AACI,QAAA,YAAY,EAAEN,YADlB;AAEI,QAAA,QAAQ,EAAEI,QAFd;AAGI,QAAA,QAAQ,EAAE,oBAAC,mBAAD,EAAyBF,UAAzB;AAHd,SAKKJ,QALL,CADJ,EAQK,CAAC,CAACG,YAAF,IAAkB,oBAAC,kBAAD;AAAoB,QAAA,OAAO,EAAEL;AAA7B,SAA2CK,YAA3C,CARvB,EASK,CAAC,CAACE,cAAF,IAAoB,oBAAC,kBAAD;AAAoB,QAAA,OAAO,EAAEP;AAA7B,SAA2CO,cAA3C,CATzB,CADJ;AAaH;;;;EAlCqBf,KAAK,CAACmB,S;;AAqChC,eAAed,WAAf","sourcesContent":["// @flow\nimport * as React from 'react';\nimport classNames from 'classnames';\n\nimport SelectorDropdown from '../../components/selector-dropdown';\n\nimport QuickSearchMessage from './QuickSearchMessage';\nimport QuickSearchSelector from './QuickSearchSelector';\n\nimport './QuickSearch.scss';\n\ntype Props = {\n /** Options to render in the quick search dropdown */\n children?: React.Node,\n /** CSS class for the wrapper div */\n className?: string,\n /** Index at which to insert the divider */\n dividerIndex?: number,\n /** Message to display for the error state */\n errorMessage?: React.Node,\n /** Props for the input element (search bar) */\n inputProps: Object,\n /** Message to display when no results are found */\n noItemsMessage?: React.Node,\n /** Function called with the index of the selected option and the event (selected by keyboard or click) */\n onSelect?: Function,\n};\n\ntype State = {\n showMessage: boolean,\n};\n\nclass QuickSearch extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n\n this.state = {\n showMessage: false,\n };\n }\n\n handleFocus = () => {\n this.setState({ showMessage: true });\n };\n\n handleBlur = () => {\n this.setState({ showMessage: false });\n };\n\n render() {\n const { children, className, dividerIndex, errorMessage, inputProps, noItemsMessage, onSelect } = this.props;\n const { showMessage } = this.state;\n\n return (\n <div className={classNames('quick-search', className)} onBlur={this.handleBlur} onFocus={this.handleFocus}>\n <SelectorDropdown\n dividerIndex={dividerIndex}\n onSelect={onSelect}\n selector={<QuickSearchSelector {...inputProps} />}\n >\n {children}\n </SelectorDropdown>\n {!!errorMessage && <QuickSearchMessage isShown={showMessage}>{errorMessage}</QuickSearchMessage>}\n {!!noItemsMessage && <QuickSearchMessage isShown={showMessage}>{noItemsMessage}</QuickSearchMessage>}\n </div>\n );\n }\n}\n\nexport default QuickSearch;\n"],"file":"QuickSearch.js"}
1
+ {"version":3,"sources":["../../../src/features/quick-search/QuickSearch.js"],"names":["React","classNames","SelectorDropdown","QuickSearchMessage","QuickSearchSelector","QuickSearch","props","setState","showMessage","state","children","className","dividerIndex","errorMessage","inputProps","noItemsMessage","onSelect","title","handleBlur","handleFocus","Component"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AAEA,OAAOC,gBAAP,MAA6B,oCAA7B;AAEA,OAAOC,kBAAP,MAA+B,sBAA/B;AACA,OAAOC,mBAAP,MAAgC,uBAAhC;AAEA,OAAO,oBAAP;;IAyBMC,W;;;;;AACF,uBAAYC,KAAZ,EAA0B;AAAA;;AAAA;;AACtB,qFAAMA,KAAN;;AADsB,kEAQZ,YAAM;AAChB,YAAKC,QAAL,CAAc;AAAEC,QAAAA,WAAW,EAAE;AAAf,OAAd;AACH,KAVyB;;AAAA,iEAYb,YAAM;AACf,YAAKD,QAAL,CAAc;AAAEC,QAAAA,WAAW,EAAE;AAAf,OAAd;AACH,KAdyB;;AAGtB,UAAKC,KAAL,GAAa;AACTD,MAAAA,WAAW,EAAE;AADJ,KAAb;AAHsB;AAMzB;;;;6BAUQ;AAAA,wBAUD,KAAKF,KAVJ;AAAA,UAEDI,QAFC,eAEDA,QAFC;AAAA,UAGDC,SAHC,eAGDA,SAHC;AAAA,UAIDC,YAJC,eAIDA,YAJC;AAAA,UAKDC,YALC,eAKDA,YALC;AAAA,UAMDC,UANC,eAMDA,UANC;AAAA,UAODC,cAPC,eAODA,cAPC;AAAA,UAQDC,QARC,eAQDA,QARC;AAAA,UASDC,KATC,eASDA,KATC;AAAA,UAWGT,WAXH,GAWmB,KAAKC,KAXxB,CAWGD,WAXH;AAaL,aACI;AAAK,QAAA,SAAS,EAAEP,UAAU,CAAC,cAAD,EAAiBU,SAAjB,CAA1B;AAAuD,QAAA,MAAM,EAAE,KAAKO,UAApE;AAAgF,QAAA,OAAO,EAAE,KAAKC;AAA9F,SACI,oBAAC,gBAAD;AACI,QAAA,YAAY,EAAEP,YADlB;AAEI,QAAA,QAAQ,EAAEI,QAFd;AAGI,QAAA,QAAQ,EAAE,oBAAC,mBAAD,EAAyBF,UAAzB,CAHd;AAII,QAAA,KAAK,EAAEG;AAJX,SAMKP,QANL,CADJ,EASK,CAAC,CAACG,YAAF,IAAkB,oBAAC,kBAAD;AAAoB,QAAA,OAAO,EAAEL;AAA7B,SAA2CK,YAA3C,CATvB,EAUK,CAAC,CAACE,cAAF,IAAoB,oBAAC,kBAAD;AAAoB,QAAA,OAAO,EAAEP;AAA7B,SAA2CO,cAA3C,CAVzB,CADJ;AAcH;;;;EA5CqBf,KAAK,CAACoB,S;;AA+ChC,eAAef,WAAf","sourcesContent":["// @flow\nimport * as React from 'react';\nimport classNames from 'classnames';\n\nimport SelectorDropdown from '../../components/selector-dropdown';\n\nimport QuickSearchMessage from './QuickSearchMessage';\nimport QuickSearchSelector from './QuickSearchSelector';\n\nimport './QuickSearch.scss';\n\ntype Props = {\n /** Options to render in the quick search dropdown */\n children?: React.Node,\n /** CSS class for the wrapper div */\n className?: string,\n /** Index at which to insert the divider */\n dividerIndex?: number,\n /** Message to display for the error state */\n errorMessage?: React.Node,\n /** Props for the input element (search bar) */\n inputProps: Object,\n /** Message to display when no results are found */\n noItemsMessage?: React.Node,\n /** Function called with the index of the selected option and the event (selected by keyboard or click) */\n onSelect?: Function,\n /** Optional title text that will be rendered above the list */\n title?: React.Node,\n};\n\ntype State = {\n showMessage: boolean,\n};\n\nclass QuickSearch extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n\n this.state = {\n showMessage: false,\n };\n }\n\n handleFocus = () => {\n this.setState({ showMessage: true });\n };\n\n handleBlur = () => {\n this.setState({ showMessage: false });\n };\n\n render() {\n const {\n children,\n className,\n dividerIndex,\n errorMessage,\n inputProps,\n noItemsMessage,\n onSelect,\n title,\n } = this.props;\n const { showMessage } = this.state;\n\n return (\n <div className={classNames('quick-search', className)} onBlur={this.handleBlur} onFocus={this.handleFocus}>\n <SelectorDropdown\n dividerIndex={dividerIndex}\n onSelect={onSelect}\n selector={<QuickSearchSelector {...inputProps} />}\n title={title}\n >\n {children}\n </SelectorDropdown>\n {!!errorMessage && <QuickSearchMessage isShown={showMessage}>{errorMessage}</QuickSearchMessage>}\n {!!noItemsMessage && <QuickSearchMessage isShown={showMessage}>{noItemsMessage}</QuickSearchMessage>}\n </div>\n );\n }\n}\n\nexport default QuickSearch;\n"],"file":"QuickSearch.js"}
@@ -21,6 +21,7 @@ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || func
21
21
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
22
22
 
23
23
  import * as React from 'react';
24
+ import noop from 'lodash/noop';
24
25
  import { FormattedMessage } from 'react-intl';
25
26
  import PlainButton from '../../components/plain-button';
26
27
  import Button from '../../components/button';
@@ -98,8 +99,7 @@ function (_React$Component) {
98
99
  _this.state = {
99
100
  isAutoCreatingSharedLink: false,
100
101
  isCopySuccessful: null,
101
- isSharedLinkEditTooltipShown: false,
102
- isPermissionElevatedToEdit: false
102
+ isSharedLinkEditTooltipShown: false
103
103
  };
104
104
  return _this;
105
105
  }
@@ -149,8 +149,7 @@ function (_React$Component) {
149
149
  var _this$state = this.state,
150
150
  isAutoCreatingSharedLink = _this$state.isAutoCreatingSharedLink,
151
151
  isCopySuccessful = _this$state.isCopySuccessful,
152
- isSharedLinkEditTooltipShown = _this$state.isSharedLinkEditTooltipShown,
153
- isPermissionElevatedToEdit = _this$state.isPermissionElevatedToEdit;
152
+ isSharedLinkEditTooltipShown = _this$state.isSharedLinkEditTooltipShown;
154
153
 
155
154
  if (autoCreateSharedLink && !isAutoCreatingSharedLink && !sharedLink.url && !submitting && !sharedLink.isNewSharedLink) {
156
155
  this.setState({
@@ -169,18 +168,6 @@ function (_React$Component) {
169
168
  }
170
169
  }
171
170
 
172
- if (prevProps.sharedLink.permissionLevel !== '' && prevProps.sharedLink.permissionLevel !== CAN_EDIT && sharedLink.permissionLevel === CAN_EDIT) {
173
- this.setState({
174
- isPermissionElevatedToEdit: true
175
- });
176
- }
177
-
178
- if (isPermissionElevatedToEdit && (sharedLink.permissionLevel !== CAN_EDIT || sharedLink.accessLevel !== ANYONE_IN_COMPANY)) {
179
- this.setState({
180
- isPermissionElevatedToEdit: false
181
- });
182
- }
183
-
184
171
  if (Browser.canWriteToClipboard() && triggerCopyOnLoad && !isAutoCreatingSharedLink && sharedLink.url && isCopySuccessful === null) {
185
172
  onCopyInit();
186
173
  navigator.clipboard.writeText(sharedLink.url).then(function () {
@@ -231,7 +218,6 @@ function (_React$Component) {
231
218
  tooltips = _this$props4.tooltips;
232
219
  var _this$state2 = this.state,
233
220
  isCopySuccessful = _this$state2.isCopySuccessful,
234
- isPermissionElevatedToEdit = _this$state2.isPermissionElevatedToEdit,
235
221
  isSharedLinkEditTooltipShown = _this$state2.isSharedLinkEditTooltipShown;
236
222
  var accessLevel = sharedLink.accessLevel,
237
223
  accessLevelsDisabledReason = sharedLink.accessLevelsDisabledReason,
@@ -245,7 +231,8 @@ function (_React$Component) {
245
231
  onChangeSharedLinkAccessLevel = trackingProps.onChangeSharedLinkAccessLevel,
246
232
  onChangeSharedLinkPermissionLevel = trackingProps.onChangeSharedLinkPermissionLevel,
247
233
  onSharedLinkAccessMenuOpen = trackingProps.onSharedLinkAccessMenuOpen,
248
- onSharedLinkCopy = trackingProps.onSharedLinkCopy,
234
+ _trackingProps$onShar = trackingProps.onSharedLinkCopy,
235
+ onSharedLinkCopy = _trackingProps$onShar === void 0 ? noop : _trackingProps$onShar,
249
236
  sendSharedLinkButtonProps = trackingProps.sendSharedLinkButtonProps,
250
237
  sharedLinkAccessMenuButtonProps = trackingProps.sharedLinkAccessMenuButtonProps,
251
238
  sharedLinkPermissionsMenuButtonProps = trackingProps.sharedLinkPermissionsMenuButtonProps;
@@ -277,7 +264,9 @@ function (_React$Component) {
277
264
  className: "shared-link-field-container",
278
265
  disabled: submitting,
279
266
  label: "",
280
- onCopySuccess: onSharedLinkCopy,
267
+ onCopySuccess: function onCopySuccess() {
268
+ return onSharedLinkCopy(permissionLevel);
269
+ },
281
270
  triggerCopyOnLoad: shouldTriggerCopyOnLoad,
282
271
  type: "url",
283
272
  value: url
@@ -349,7 +338,7 @@ function (_React$Component) {
349
338
  "data-testid": "shared-link-editable-publicly-available-message"
350
339
  }, messages.sharedLinkEditablePubliclyAvailable)) : React.createElement(FormattedMessage, _extends({
351
340
  "data-testid": "shared-link-publicly-available-message"
352
- }, messages.sharedLinkPubliclyAvailable))), accessLevel === ANYONE_IN_COMPANY && isPermissionElevatedToEdit && React.createElement("div", {
341
+ }, messages.sharedLinkPubliclyAvailable))), accessLevel === ANYONE_IN_COMPANY && permissionLevel === CAN_EDIT && React.createElement("div", {
353
342
  className: "security-indicator-note"
354
343
  }, React.createElement("span", {
355
344
  className: "security-indicator-icon-globe"
@@ -1,6 +1,7 @@
1
1
  // @flow
2
2
 
3
3
  import * as React from 'react';
4
+ import noop from 'lodash/noop';
4
5
  import { FormattedMessage } from 'react-intl';
5
6
 
6
7
  import PlainButton from '../../components/plain-button';
@@ -74,7 +75,6 @@ type Props = {
74
75
  type State = {
75
76
  isAutoCreatingSharedLink: boolean,
76
77
  isCopySuccessful: ?boolean,
77
- isPermissionElevatedToEdit: boolean,
78
78
  isSharedLinkEditTooltipShown: boolean,
79
79
  };
80
80
 
@@ -93,7 +93,6 @@ class SharedLinkSection extends React.Component<Props, State> {
93
93
  isAutoCreatingSharedLink: false,
94
94
  isCopySuccessful: null,
95
95
  isSharedLinkEditTooltipShown: false,
96
- isPermissionElevatedToEdit: false,
97
96
  };
98
97
  }
99
98
 
@@ -134,12 +133,7 @@ class SharedLinkSection extends React.Component<Props, State> {
134
133
  onCopyInit = () => {},
135
134
  } = this.props;
136
135
 
137
- const {
138
- isAutoCreatingSharedLink,
139
- isCopySuccessful,
140
- isSharedLinkEditTooltipShown,
141
- isPermissionElevatedToEdit,
142
- } = this.state;
136
+ const { isAutoCreatingSharedLink, isCopySuccessful, isSharedLinkEditTooltipShown } = this.state;
143
137
 
144
138
  if (
145
139
  autoCreateSharedLink &&
@@ -159,21 +153,6 @@ class SharedLinkSection extends React.Component<Props, State> {
159
153
  }
160
154
  }
161
155
 
162
- if (
163
- prevProps.sharedLink.permissionLevel !== '' &&
164
- prevProps.sharedLink.permissionLevel !== CAN_EDIT &&
165
- sharedLink.permissionLevel === CAN_EDIT
166
- ) {
167
- this.setState({ isPermissionElevatedToEdit: true });
168
- }
169
-
170
- if (
171
- isPermissionElevatedToEdit &&
172
- (sharedLink.permissionLevel !== CAN_EDIT || sharedLink.accessLevel !== ANYONE_IN_COMPANY)
173
- ) {
174
- this.setState({ isPermissionElevatedToEdit: false });
175
- }
176
-
177
156
  if (
178
157
  Browser.canWriteToClipboard() &&
179
158
  triggerCopyOnLoad &&
@@ -267,7 +246,7 @@ class SharedLinkSection extends React.Component<Props, State> {
267
246
  tooltips,
268
247
  } = this.props;
269
248
 
270
- const { isCopySuccessful, isPermissionElevatedToEdit, isSharedLinkEditTooltipShown } = this.state;
249
+ const { isCopySuccessful, isSharedLinkEditTooltipShown } = this.state;
271
250
 
272
251
  const {
273
252
  accessLevel,
@@ -285,7 +264,7 @@ class SharedLinkSection extends React.Component<Props, State> {
285
264
  onChangeSharedLinkAccessLevel,
286
265
  onChangeSharedLinkPermissionLevel,
287
266
  onSharedLinkAccessMenuOpen,
288
- onSharedLinkCopy,
267
+ onSharedLinkCopy = noop,
289
268
  sendSharedLinkButtonProps,
290
269
  sharedLinkAccessMenuButtonProps,
291
270
  sharedLinkPermissionsMenuButtonProps,
@@ -321,7 +300,7 @@ class SharedLinkSection extends React.Component<Props, State> {
321
300
  className="shared-link-field-container"
322
301
  disabled={submitting}
323
302
  label=""
324
- onCopySuccess={onSharedLinkCopy}
303
+ onCopySuccess={() => onSharedLinkCopy(permissionLevel)}
325
304
  triggerCopyOnLoad={shouldTriggerCopyOnLoad}
326
305
  type="url"
327
306
  value={url}
@@ -417,7 +396,7 @@ class SharedLinkSection extends React.Component<Props, State> {
417
396
  )}
418
397
  </div>
419
398
  )}
420
- {accessLevel === ANYONE_IN_COMPANY && isPermissionElevatedToEdit && (
399
+ {accessLevel === ANYONE_IN_COMPANY && permissionLevel === CAN_EDIT && (
421
400
  <div className="security-indicator-note">
422
401
  <span className="security-indicator-icon-globe">
423
402
  <IconGlobe height={12} width={12} />