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 +1 @@
1
- {"version":3,"sources":["../../../src/features/unified-share-modal/SharedLinkSection.js"],"names":["React","FormattedMessage","PlainButton","Button","GuideTooltip","TextInputWithCopyButton","Toggle","Tooltip","convertToMs","IconMail","IconClock","IconGlobe","bdlWatermelonRed","isBoxNote","Browser","convertToBoxItem","SharedLinkAccessMenu","SharedLinkPermissionMenu","messages","ANYONE_IN_COMPANY","ANYONE_WITH_LINK","CAN_EDIT","CAN_VIEW_DOWNLOAD","CAN_VIEW_ONLY","PEOPLE_IN_ITEM","SharedLinkSection","props","isSharedLinkEnabled","canAddLink","canRemoveLink","isAllowEditSharedLinkForFileEnabled","sharedLink","canChangeAccessLevel","isEditSettingAvailable","isDownloadSettingAvailable","permissionLevel","allowedPermissionLevels","filter","level","state","isAutoCreatingSharedLink","isCopySuccessful","isSharedLinkEditTooltipShown","isPermissionElevatedToEdit","autoCreateSharedLink","addSharedLink","submitting","url","isNewSharedLink","setState","prevProps","sharedLinkEditTooltipTargetingApi","triggerCopyOnLoad","onCopyError","onCopySuccess","onCopyInit","toggleRef","focus","accessLevel","canWriteToClipboard","navigator","clipboard","writeText","then","catch","getAllowedPermissionLevels","includes","canShow","onShow","autofocusSharedLink","changeSharedLinkAccessLevel","changeSharedLinkPermissionLevel","config","item","itemType","intl","onDismissTooltip","onEmailSharedLinkClick","sharedLinkEditTagTargetingApi","trackingProps","tooltips","accessLevelsDisabledReason","allowedAccessLevels","enterpriseName","isEditAllowed","copyButtonProps","onChangeSharedLinkAccessLevel","onChangeSharedLinkPermissionLevel","onSharedLinkAccessMenuOpen","onSharedLinkCopy","sendSharedLinkButtonProps","sharedLinkAccessMenuButtonProps","sharedLinkPermissionsMenuButtonProps","shouldTriggerCopyOnLoad","hideEmailButton","showEmailSharedLinkForm","isEditableBoxNote","formatMessage","sharedLinkURLLabel","sendSharedLink","ftuxEditPermissionTooltipTitle","ftuxEditPermissionTooltipBody","onClose","sharedLinkPermissionsEditTooltip","sharedLinkPermissionsEdit","sharedLinkEditablePubliclyAvailable","sharedLinkPubliclyAvailable","sharedLinkElevatedEditableCompanyAvailable","onSettingsClick","showSharedLinkSettingsCallout","sharedLinkSettingsButtonProps","sharedLinkSettingsCalloutText","settingsButtonLabel","sharedLinkSettings","onToggleSharedLink","expirationTimestamp","canAddSharedLink","grantedPermissions","itemShare","canRemoveSharedLink","isToggleEnabled","linkText","linkShareOn","sharedLinkExpirationTooltip","expiration","linkShareOff","toggleComponent","ref","sharedLinkToggleTooltip","sharedLinkDisabledTooltipCopy","tooltipDisabledMessage","removeLinkTooltip","disabledCreateLinkTooltip","sharedLinkSectionLabel","renderToggle","renderSharedLinkSettingsLink","renderSharedLink","Component"],"mappings":"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","sourcesContent":["// @flow\n\nimport * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport PlainButton from '../../components/plain-button';\nimport Button from '../../components/button';\nimport GuideTooltip from '../../components/guide-tooltip';\nimport TextInputWithCopyButton from '../../components/text-input-with-copy-button';\nimport Toggle from '../../components/toggle/Toggle';\nimport Tooltip from '../../components/tooltip';\nimport { convertToMs } from '../../utils/datetime';\nimport IconMail from '../../icons/general/IconMail';\nimport IconClock from '../../icons/general/IconClock';\nimport IconGlobe from '../../icons/general/IconGlobe';\nimport { bdlWatermelonRed } from '../../styles/variables';\nimport type { ItemType } from '../../common/types/core';\nimport type { TargetingApi } from '../targeting/types';\nimport { isBoxNote } from '../../utils/file';\nimport Browser from '../../utils/Browser';\n\nimport convertToBoxItem from './utils/item';\nimport SharedLinkAccessMenu from './SharedLinkAccessMenu';\nimport SharedLinkPermissionMenu from './SharedLinkPermissionMenu';\nimport messages from './messages';\nimport type {\n accessLevelType,\n item as itemtype,\n permissionLevelType,\n sharedLinkType,\n sharedLinkTrackingType,\n tooltipComponentIdentifierType,\n USMConfig,\n} from './flowTypes';\nimport {\n ANYONE_IN_COMPANY,\n ANYONE_WITH_LINK,\n CAN_EDIT,\n CAN_VIEW_DOWNLOAD,\n CAN_VIEW_ONLY,\n PEOPLE_IN_ITEM,\n} from './constants';\n\ntype Props = {\n addSharedLink: () => void,\n autoCreateSharedLink?: boolean,\n autofocusSharedLink?: boolean,\n changeSharedLinkAccessLevel: (newAccessLevel: accessLevelType) => Promise<{ accessLevel: accessLevelType }>,\n changeSharedLinkPermissionLevel: (\n newPermissionLevel: permissionLevelType,\n ) => Promise<{ permissionLevel: permissionLevelType }>,\n config?: USMConfig,\n intl: any,\n isAllowEditSharedLinkForFileEnabled: boolean,\n item: itemtype,\n itemType: ItemType,\n onCopyError?: () => void,\n onCopyInit?: () => void,\n onCopySuccess?: () => void,\n onDismissTooltip: (componentIdentifier: tooltipComponentIdentifierType) => void,\n onEmailSharedLinkClick: Function,\n onSettingsClick?: Function,\n onToggleSharedLink: Function,\n sharedLink: sharedLinkType,\n sharedLinkEditTagTargetingApi?: TargetingApi,\n sharedLinkEditTooltipTargetingApi?: TargetingApi,\n showSharedLinkSettingsCallout: boolean,\n submitting: boolean,\n tooltips: { [componentIdentifier: tooltipComponentIdentifierType]: React.Node },\n trackingProps: sharedLinkTrackingType,\n triggerCopyOnLoad?: boolean,\n};\n\ntype State = {\n isAutoCreatingSharedLink: boolean,\n isCopySuccessful: ?boolean,\n isPermissionElevatedToEdit: boolean,\n isSharedLinkEditTooltipShown: boolean,\n};\n\nclass SharedLinkSection extends React.Component<Props, State> {\n static defaultProps = {\n trackingProps: {},\n autoCreateSharedLink: false,\n };\n\n toggleRef: HTMLInputElement | null;\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n isAutoCreatingSharedLink: false,\n isCopySuccessful: null,\n isSharedLinkEditTooltipShown: false,\n isPermissionElevatedToEdit: false,\n };\n }\n\n componentDidMount() {\n const { sharedLink, autoCreateSharedLink, addSharedLink, submitting } = this.props;\n\n if (\n autoCreateSharedLink &&\n !this.state.isAutoCreatingSharedLink &&\n sharedLink &&\n !sharedLink.url &&\n !submitting &&\n !sharedLink.isNewSharedLink\n ) {\n this.setState({ isAutoCreatingSharedLink: true });\n addSharedLink();\n }\n }\n\n // We handle didUpdate but not didMount because\n // the component initially renders with empty data\n // in order to start showing UI components.\n // When getInitialData completes in the parent we\n // rerender with correct sharedLink data and can\n // check whether to auto create a new one.\n // Note: we are assuming the 2nd render is safe\n // to start doing this check.\n componentDidUpdate(prevProps: Props) {\n const {\n sharedLink,\n autoCreateSharedLink,\n addSharedLink,\n sharedLinkEditTooltipTargetingApi,\n submitting,\n triggerCopyOnLoad,\n onCopyError = () => {},\n onCopySuccess = () => {},\n onCopyInit = () => {},\n } = this.props;\n\n const {\n isAutoCreatingSharedLink,\n isCopySuccessful,\n isSharedLinkEditTooltipShown,\n isPermissionElevatedToEdit,\n } = this.state;\n\n if (\n autoCreateSharedLink &&\n !isAutoCreatingSharedLink &&\n !sharedLink.url &&\n !submitting &&\n !sharedLink.isNewSharedLink\n ) {\n this.setState({ isAutoCreatingSharedLink: true });\n addSharedLink();\n }\n\n if (!prevProps.sharedLink.url && sharedLink.url) {\n this.setState({ isAutoCreatingSharedLink: false });\n if (this.toggleRef) {\n this.toggleRef.focus();\n }\n }\n\n if (\n prevProps.sharedLink.permissionLevel !== '' &&\n prevProps.sharedLink.permissionLevel !== CAN_EDIT &&\n sharedLink.permissionLevel === CAN_EDIT\n ) {\n this.setState({ isPermissionElevatedToEdit: true });\n }\n\n if (\n isPermissionElevatedToEdit &&\n (sharedLink.permissionLevel !== CAN_EDIT || sharedLink.accessLevel !== ANYONE_IN_COMPANY)\n ) {\n this.setState({ isPermissionElevatedToEdit: false });\n }\n\n if (\n Browser.canWriteToClipboard() &&\n triggerCopyOnLoad &&\n !isAutoCreatingSharedLink &&\n sharedLink.url &&\n isCopySuccessful === null\n ) {\n onCopyInit();\n navigator.clipboard\n .writeText(sharedLink.url)\n .then(() => {\n this.setState({ isCopySuccessful: true });\n onCopySuccess();\n })\n .catch(() => {\n this.setState({ isCopySuccessful: false });\n onCopyError();\n });\n }\n\n // if ESL ftux tooltip is showing on initial mount, we call onShow\n const allowedPermissionLevels = this.getAllowedPermissionLevels();\n\n if (\n allowedPermissionLevels.includes(CAN_EDIT) &&\n sharedLinkEditTooltipTargetingApi &&\n sharedLinkEditTooltipTargetingApi.canShow &&\n !isSharedLinkEditTooltipShown\n ) {\n const { onShow } = sharedLinkEditTooltipTargetingApi;\n onShow();\n this.setState({ isSharedLinkEditTooltipShown: true });\n }\n }\n\n canAddSharedLink = (isSharedLinkEnabled: boolean, canAddLink: boolean) => {\n return !isSharedLinkEnabled && canAddLink;\n };\n\n canRemoveSharedLink = (isSharedLinkEnabled: boolean, canRemoveLink: boolean) => {\n return isSharedLinkEnabled && canRemoveLink;\n };\n\n getAllowedPermissionLevels = (): Array<permissionLevelType> => {\n const { isAllowEditSharedLinkForFileEnabled, sharedLink } = this.props;\n\n const {\n canChangeAccessLevel,\n isEditSettingAvailable,\n isDownloadSettingAvailable,\n permissionLevel,\n } = sharedLink;\n\n let allowedPermissionLevels = [CAN_EDIT, CAN_VIEW_DOWNLOAD, CAN_VIEW_ONLY];\n\n if (!canChangeAccessLevel) {\n // remove all but current level\n allowedPermissionLevels = allowedPermissionLevels.filter(level => level === permissionLevel);\n }\n\n // if we cannot set the download value, we remove this option from the dropdown\n if (!isDownloadSettingAvailable) {\n allowedPermissionLevels = allowedPermissionLevels.filter(level => level !== CAN_VIEW_DOWNLOAD);\n }\n\n // if the user cannot edit, we remove this option from the dropdown\n if (!isEditSettingAvailable || !isAllowEditSharedLinkForFileEnabled) {\n allowedPermissionLevels = allowedPermissionLevels.filter(level => level !== CAN_EDIT);\n }\n\n return allowedPermissionLevels;\n };\n\n renderSharedLink() {\n const {\n autofocusSharedLink,\n changeSharedLinkAccessLevel,\n changeSharedLinkPermissionLevel,\n config,\n item,\n itemType,\n intl,\n onDismissTooltip,\n onEmailSharedLinkClick,\n sharedLink,\n sharedLinkEditTagTargetingApi,\n sharedLinkEditTooltipTargetingApi,\n submitting,\n trackingProps,\n triggerCopyOnLoad,\n tooltips,\n } = this.props;\n\n const { isCopySuccessful, isPermissionElevatedToEdit, isSharedLinkEditTooltipShown } = this.state;\n\n const {\n accessLevel,\n accessLevelsDisabledReason,\n allowedAccessLevels,\n canChangeAccessLevel,\n enterpriseName,\n isEditAllowed,\n permissionLevel,\n url,\n } = sharedLink;\n\n const {\n copyButtonProps,\n onChangeSharedLinkAccessLevel,\n onChangeSharedLinkPermissionLevel,\n onSharedLinkAccessMenuOpen,\n onSharedLinkCopy,\n sendSharedLinkButtonProps,\n sharedLinkAccessMenuButtonProps,\n sharedLinkPermissionsMenuButtonProps,\n } = trackingProps;\n\n const shouldTriggerCopyOnLoad = !!triggerCopyOnLoad && !!isCopySuccessful;\n\n /**\n * The email button should be rendered by default.\n * Only hide the button if there is a config prop that declares showEmailSharedLinkForm to be false.\n */\n const hideEmailButton = config && config.showEmailSharedLinkForm === false;\n\n const isEditableBoxNote = isBoxNote(convertToBoxItem(item)) && isEditAllowed;\n const allowedPermissionLevels = this.getAllowedPermissionLevels();\n\n return (\n <>\n <div className=\"shared-link-field-row\">\n <Tooltip\n className=\"usm-ftux-tooltip\"\n isShown={!!tooltips['shared-link-copy-button']}\n onDismiss={() => onDismissTooltip('shared-link-copy-button')}\n position=\"middle-right\"\n showCloseButton\n text={tooltips['shared-link-copy-button']}\n theme=\"callout\"\n >\n <TextInputWithCopyButton\n aria-label={intl.formatMessage(messages.sharedLinkURLLabel)}\n autofocus={autofocusSharedLink}\n buttonProps={copyButtonProps}\n className=\"shared-link-field-container\"\n disabled={submitting}\n label=\"\"\n onCopySuccess={onSharedLinkCopy}\n triggerCopyOnLoad={shouldTriggerCopyOnLoad}\n type=\"url\"\n value={url}\n />\n </Tooltip>\n {!hideEmailButton && (\n <Tooltip position=\"top-left\" text={<FormattedMessage {...messages.sendSharedLink} />}>\n <Button\n aria-label={intl.formatMessage(messages.sendSharedLink)}\n className=\"email-shared-link-btn\"\n isDisabled={submitting}\n onClick={onEmailSharedLinkClick}\n type=\"button\"\n {...sendSharedLinkButtonProps}\n >\n <IconMail />\n </Button>\n </Tooltip>\n )}\n </div>\n\n <div className=\"shared-link-access-row\">\n <SharedLinkAccessMenu\n accessLevel={accessLevel}\n accessLevelsDisabledReason={accessLevelsDisabledReason}\n allowedAccessLevels={allowedAccessLevels}\n changeAccessLevel={changeSharedLinkAccessLevel}\n enterpriseName={enterpriseName}\n itemType={itemType}\n onDismissTooltip={() => onDismissTooltip('shared-link-access-menu')}\n tooltipContent={tooltips['shared-link-access-menu'] || null}\n submitting={submitting}\n trackingProps={{\n onChangeSharedLinkAccessLevel,\n onSharedLinkAccessMenuOpen,\n sharedLinkAccessMenuButtonProps,\n }}\n />\n {!isEditableBoxNote && accessLevel !== PEOPLE_IN_ITEM && (\n <GuideTooltip\n isShown={\n allowedPermissionLevels.includes(CAN_EDIT) && sharedLinkEditTooltipTargetingApi?.canShow\n }\n title={intl.formatMessage(messages.ftuxEditPermissionTooltipTitle)}\n body={intl.formatMessage(messages.ftuxEditPermissionTooltipBody)}\n onDismiss={() => {\n if (sharedLinkEditTooltipTargetingApi) {\n const { onClose } = sharedLinkEditTooltipTargetingApi;\n onClose();\n }\n }}\n position=\"bottom-center\"\n >\n <SharedLinkPermissionMenu\n allowedPermissionLevels={allowedPermissionLevels}\n canChangePermissionLevel={canChangeAccessLevel}\n changePermissionLevel={changeSharedLinkPermissionLevel}\n isSharedLinkEditTooltipShown={isSharedLinkEditTooltipShown}\n permissionLevel={permissionLevel}\n sharedLinkEditTagTargetingApi={sharedLinkEditTagTargetingApi}\n sharedLinkEditTooltipTargetingApi={sharedLinkEditTooltipTargetingApi}\n submitting={submitting}\n trackingProps={{\n onChangeSharedLinkPermissionLevel,\n sharedLinkPermissionsMenuButtonProps,\n }}\n />\n </GuideTooltip>\n )}\n {isEditableBoxNote && (\n <Tooltip text={<FormattedMessage {...messages.sharedLinkPermissionsEditTooltip} />}>\n <PlainButton isDisabled className=\"can-edit-btn\">\n <FormattedMessage {...messages.sharedLinkPermissionsEdit} />\n </PlainButton>\n </Tooltip>\n )}\n </div>\n {accessLevel === ANYONE_WITH_LINK && (\n <div className=\"security-indicator-note\">\n <span className=\"security-indicator-icon-globe\">\n <IconGlobe height={12} width={12} />\n </span>\n {permissionLevel === CAN_EDIT ? (\n <FormattedMessage\n data-testid=\"shared-link-editable-publicly-available-message\"\n {...messages.sharedLinkEditablePubliclyAvailable}\n />\n ) : (\n <FormattedMessage\n data-testid=\"shared-link-publicly-available-message\"\n {...messages.sharedLinkPubliclyAvailable}\n />\n )}\n </div>\n )}\n {accessLevel === ANYONE_IN_COMPANY && isPermissionElevatedToEdit && (\n <div className=\"security-indicator-note\">\n <span className=\"security-indicator-icon-globe\">\n <IconGlobe height={12} width={12} />\n </span>\n <FormattedMessage\n data-testid=\"shared-link-elevated-editable-company-available-message\"\n {...messages.sharedLinkElevatedEditableCompanyAvailable}\n />\n </div>\n )}\n </>\n );\n }\n\n renderSharedLinkSettingsLink() {\n const {\n intl,\n onDismissTooltip,\n onSettingsClick,\n showSharedLinkSettingsCallout,\n trackingProps,\n tooltips,\n } = this.props;\n const { sharedLinkSettingsButtonProps } = trackingProps;\n\n return (\n <div className=\"shared-link-settings-btn-container\">\n <Tooltip\n className=\"usm-ftux-tooltip\"\n isShown={!!tooltips['shared-link-settings'] || showSharedLinkSettingsCallout}\n onDismiss={() => onDismissTooltip('shared-link-settings')}\n position=\"middle-right\"\n showCloseButton\n text={\n tooltips['shared-link-settings'] || (\n <FormattedMessage {...messages.sharedLinkSettingsCalloutText} />\n )\n }\n theme=\"callout\"\n >\n <PlainButton\n {...sharedLinkSettingsButtonProps}\n aria-label={intl.formatMessage(messages.settingsButtonLabel)}\n className=\"shared-link-settings-btn\"\n onClick={onSettingsClick}\n type=\"button\"\n >\n <FormattedMessage {...messages.sharedLinkSettings} />\n </PlainButton>\n </Tooltip>\n </div>\n );\n }\n\n renderToggle() {\n const { item, onDismissTooltip, onToggleSharedLink, sharedLink, submitting, tooltips } = this.props;\n const { canChangeAccessLevel, expirationTimestamp, url } = sharedLink;\n const isSharedLinkEnabled = !!url;\n const canAddSharedLink = this.canAddSharedLink(isSharedLinkEnabled, item.grantedPermissions.itemShare);\n const canRemoveSharedLink = this.canRemoveSharedLink(isSharedLinkEnabled, canChangeAccessLevel);\n const isToggleEnabled = (canAddSharedLink || canRemoveSharedLink) && !submitting;\n\n let linkText;\n\n if (isSharedLinkEnabled) {\n linkText = <FormattedMessage {...messages.linkShareOn} />;\n if (expirationTimestamp && expirationTimestamp !== 0) {\n linkText = (\n <span>\n <FormattedMessage {...messages.linkShareOn} />\n <Tooltip\n position=\"top-center\"\n text={\n <FormattedMessage\n {...messages.sharedLinkExpirationTooltip}\n values={{\n expiration: convertToMs(expirationTimestamp),\n }}\n />\n }\n >\n <span className=\"shared-link-expiration-badge\">\n <IconClock color={bdlWatermelonRed} />\n </span>\n </Tooltip>\n </span>\n );\n }\n } else {\n linkText = <FormattedMessage {...messages.linkShareOff} />;\n }\n\n const toggleComponent = (\n <div className=\"share-toggle-container\">\n <Toggle\n isDisabled={!isToggleEnabled}\n isOn={isSharedLinkEnabled}\n label={linkText}\n name=\"toggle\"\n onChange={onToggleSharedLink}\n ref={ref => {\n this.toggleRef = ref;\n }}\n />\n </div>\n );\n\n if (!submitting) {\n if (canAddSharedLink) {\n const sharedLinkToggleTooltip = tooltips['shared-link-toggle'];\n if (sharedLinkToggleTooltip) {\n return (\n <Tooltip\n className=\"usm-ftux-tooltip\"\n isShown\n onDismiss={() => onDismissTooltip('shared-link-toggle')}\n position=\"middle-left\"\n showCloseButton\n text={sharedLinkToggleTooltip}\n theme=\"callout\"\n >\n {toggleComponent}\n </Tooltip>\n );\n }\n return (\n <Tooltip\n position=\"top-right\"\n text={<FormattedMessage {...messages.sharedLinkDisabledTooltipCopy} />}\n >\n {toggleComponent}\n </Tooltip>\n );\n }\n\n if (!isToggleEnabled) {\n const tooltipDisabledMessage = isSharedLinkEnabled\n ? messages.removeLinkTooltip\n : messages.disabledCreateLinkTooltip;\n\n return (\n <Tooltip\n className=\"usm-disabled-message-tooltip\"\n position=\"top-right\"\n text={<FormattedMessage {...tooltipDisabledMessage} />}\n >\n {toggleComponent}\n </Tooltip>\n );\n }\n }\n\n return toggleComponent;\n }\n\n render() {\n const { sharedLink, onSettingsClick } = this.props;\n const isSharedLinkEnabled = !!sharedLink.url;\n\n return (\n <div className=\"be\">\n <hr className=\"bdl-SharedLinkSection-separator\" />\n {/* eslint-disable-next-line jsx-a11y/label-has-for */}\n <label>\n <span className=\"label bdl-Label\">\n <FormattedMessage {...messages.sharedLinkSectionLabel} />\n </span>\n </label>\n <div className=\"shared-link-toggle-row\">\n {this.renderToggle()}\n {isSharedLinkEnabled && onSettingsClick && this.renderSharedLinkSettingsLink()}\n </div>\n {isSharedLinkEnabled && this.renderSharedLink()}\n </div>\n );\n }\n}\n\nexport default SharedLinkSection;\n"],"file":"SharedLinkSection.js"}
1
+ {"version":3,"sources":["../../../src/features/unified-share-modal/SharedLinkSection.js"],"names":["React","noop","FormattedMessage","PlainButton","Button","GuideTooltip","TextInputWithCopyButton","Toggle","Tooltip","convertToMs","IconMail","IconClock","IconGlobe","bdlWatermelonRed","isBoxNote","Browser","convertToBoxItem","SharedLinkAccessMenu","SharedLinkPermissionMenu","messages","ANYONE_IN_COMPANY","ANYONE_WITH_LINK","CAN_EDIT","CAN_VIEW_DOWNLOAD","CAN_VIEW_ONLY","PEOPLE_IN_ITEM","SharedLinkSection","props","isSharedLinkEnabled","canAddLink","canRemoveLink","isAllowEditSharedLinkForFileEnabled","sharedLink","canChangeAccessLevel","isEditSettingAvailable","isDownloadSettingAvailable","permissionLevel","allowedPermissionLevels","filter","level","state","isAutoCreatingSharedLink","isCopySuccessful","isSharedLinkEditTooltipShown","autoCreateSharedLink","addSharedLink","submitting","url","isNewSharedLink","setState","prevProps","sharedLinkEditTooltipTargetingApi","triggerCopyOnLoad","onCopyError","onCopySuccess","onCopyInit","toggleRef","focus","canWriteToClipboard","navigator","clipboard","writeText","then","catch","getAllowedPermissionLevels","includes","canShow","onShow","autofocusSharedLink","changeSharedLinkAccessLevel","changeSharedLinkPermissionLevel","config","item","itemType","intl","onDismissTooltip","onEmailSharedLinkClick","sharedLinkEditTagTargetingApi","trackingProps","tooltips","accessLevel","accessLevelsDisabledReason","allowedAccessLevels","enterpriseName","isEditAllowed","copyButtonProps","onChangeSharedLinkAccessLevel","onChangeSharedLinkPermissionLevel","onSharedLinkAccessMenuOpen","onSharedLinkCopy","sendSharedLinkButtonProps","sharedLinkAccessMenuButtonProps","sharedLinkPermissionsMenuButtonProps","shouldTriggerCopyOnLoad","hideEmailButton","showEmailSharedLinkForm","isEditableBoxNote","formatMessage","sharedLinkURLLabel","sendSharedLink","ftuxEditPermissionTooltipTitle","ftuxEditPermissionTooltipBody","onClose","sharedLinkPermissionsEditTooltip","sharedLinkPermissionsEdit","sharedLinkEditablePubliclyAvailable","sharedLinkPubliclyAvailable","sharedLinkElevatedEditableCompanyAvailable","onSettingsClick","showSharedLinkSettingsCallout","sharedLinkSettingsButtonProps","sharedLinkSettingsCalloutText","settingsButtonLabel","sharedLinkSettings","onToggleSharedLink","expirationTimestamp","canAddSharedLink","grantedPermissions","itemShare","canRemoveSharedLink","isToggleEnabled","linkText","linkShareOn","sharedLinkExpirationTooltip","expiration","linkShareOff","toggleComponent","ref","sharedLinkToggleTooltip","sharedLinkDisabledTooltipCopy","tooltipDisabledMessage","removeLinkTooltip","disabledCreateLinkTooltip","sharedLinkSectionLabel","renderToggle","renderSharedLinkSettingsLink","renderSharedLink","Component"],"mappings":"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","sourcesContent":["// @flow\n\nimport * as React from 'react';\nimport noop from 'lodash/noop';\nimport { FormattedMessage } from 'react-intl';\n\nimport PlainButton from '../../components/plain-button';\nimport Button from '../../components/button';\nimport GuideTooltip from '../../components/guide-tooltip';\nimport TextInputWithCopyButton from '../../components/text-input-with-copy-button';\nimport Toggle from '../../components/toggle/Toggle';\nimport Tooltip from '../../components/tooltip';\nimport { convertToMs } from '../../utils/datetime';\nimport IconMail from '../../icons/general/IconMail';\nimport IconClock from '../../icons/general/IconClock';\nimport IconGlobe from '../../icons/general/IconGlobe';\nimport { bdlWatermelonRed } from '../../styles/variables';\nimport type { ItemType } from '../../common/types/core';\nimport type { TargetingApi } from '../targeting/types';\nimport { isBoxNote } from '../../utils/file';\nimport Browser from '../../utils/Browser';\n\nimport convertToBoxItem from './utils/item';\nimport SharedLinkAccessMenu from './SharedLinkAccessMenu';\nimport SharedLinkPermissionMenu from './SharedLinkPermissionMenu';\nimport messages from './messages';\nimport type {\n accessLevelType,\n item as itemtype,\n permissionLevelType,\n sharedLinkType,\n sharedLinkTrackingType,\n tooltipComponentIdentifierType,\n USMConfig,\n} from './flowTypes';\nimport {\n ANYONE_IN_COMPANY,\n ANYONE_WITH_LINK,\n CAN_EDIT,\n CAN_VIEW_DOWNLOAD,\n CAN_VIEW_ONLY,\n PEOPLE_IN_ITEM,\n} from './constants';\n\ntype Props = {\n addSharedLink: () => void,\n autoCreateSharedLink?: boolean,\n autofocusSharedLink?: boolean,\n changeSharedLinkAccessLevel: (newAccessLevel: accessLevelType) => Promise<{ accessLevel: accessLevelType }>,\n changeSharedLinkPermissionLevel: (\n newPermissionLevel: permissionLevelType,\n ) => Promise<{ permissionLevel: permissionLevelType }>,\n config?: USMConfig,\n intl: any,\n isAllowEditSharedLinkForFileEnabled: boolean,\n item: itemtype,\n itemType: ItemType,\n onCopyError?: () => void,\n onCopyInit?: () => void,\n onCopySuccess?: () => void,\n onDismissTooltip: (componentIdentifier: tooltipComponentIdentifierType) => void,\n onEmailSharedLinkClick: Function,\n onSettingsClick?: Function,\n onToggleSharedLink: Function,\n sharedLink: sharedLinkType,\n sharedLinkEditTagTargetingApi?: TargetingApi,\n sharedLinkEditTooltipTargetingApi?: TargetingApi,\n showSharedLinkSettingsCallout: boolean,\n submitting: boolean,\n tooltips: { [componentIdentifier: tooltipComponentIdentifierType]: React.Node },\n trackingProps: sharedLinkTrackingType,\n triggerCopyOnLoad?: boolean,\n};\n\ntype State = {\n isAutoCreatingSharedLink: boolean,\n isCopySuccessful: ?boolean,\n isSharedLinkEditTooltipShown: boolean,\n};\n\nclass SharedLinkSection extends React.Component<Props, State> {\n static defaultProps = {\n trackingProps: {},\n autoCreateSharedLink: false,\n };\n\n toggleRef: HTMLInputElement | null;\n\n constructor(props: Props) {\n super(props);\n\n this.state = {\n isAutoCreatingSharedLink: false,\n isCopySuccessful: null,\n isSharedLinkEditTooltipShown: false,\n };\n }\n\n componentDidMount() {\n const { sharedLink, autoCreateSharedLink, addSharedLink, submitting } = this.props;\n\n if (\n autoCreateSharedLink &&\n !this.state.isAutoCreatingSharedLink &&\n sharedLink &&\n !sharedLink.url &&\n !submitting &&\n !sharedLink.isNewSharedLink\n ) {\n this.setState({ isAutoCreatingSharedLink: true });\n addSharedLink();\n }\n }\n\n // We handle didUpdate but not didMount because\n // the component initially renders with empty data\n // in order to start showing UI components.\n // When getInitialData completes in the parent we\n // rerender with correct sharedLink data and can\n // check whether to auto create a new one.\n // Note: we are assuming the 2nd render is safe\n // to start doing this check.\n componentDidUpdate(prevProps: Props) {\n const {\n sharedLink,\n autoCreateSharedLink,\n addSharedLink,\n sharedLinkEditTooltipTargetingApi,\n submitting,\n triggerCopyOnLoad,\n onCopyError = () => {},\n onCopySuccess = () => {},\n onCopyInit = () => {},\n } = this.props;\n\n const { isAutoCreatingSharedLink, isCopySuccessful, isSharedLinkEditTooltipShown } = this.state;\n\n if (\n autoCreateSharedLink &&\n !isAutoCreatingSharedLink &&\n !sharedLink.url &&\n !submitting &&\n !sharedLink.isNewSharedLink\n ) {\n this.setState({ isAutoCreatingSharedLink: true });\n addSharedLink();\n }\n\n if (!prevProps.sharedLink.url && sharedLink.url) {\n this.setState({ isAutoCreatingSharedLink: false });\n if (this.toggleRef) {\n this.toggleRef.focus();\n }\n }\n\n if (\n Browser.canWriteToClipboard() &&\n triggerCopyOnLoad &&\n !isAutoCreatingSharedLink &&\n sharedLink.url &&\n isCopySuccessful === null\n ) {\n onCopyInit();\n navigator.clipboard\n .writeText(sharedLink.url)\n .then(() => {\n this.setState({ isCopySuccessful: true });\n onCopySuccess();\n })\n .catch(() => {\n this.setState({ isCopySuccessful: false });\n onCopyError();\n });\n }\n\n // if ESL ftux tooltip is showing on initial mount, we call onShow\n const allowedPermissionLevels = this.getAllowedPermissionLevels();\n\n if (\n allowedPermissionLevels.includes(CAN_EDIT) &&\n sharedLinkEditTooltipTargetingApi &&\n sharedLinkEditTooltipTargetingApi.canShow &&\n !isSharedLinkEditTooltipShown\n ) {\n const { onShow } = sharedLinkEditTooltipTargetingApi;\n onShow();\n this.setState({ isSharedLinkEditTooltipShown: true });\n }\n }\n\n canAddSharedLink = (isSharedLinkEnabled: boolean, canAddLink: boolean) => {\n return !isSharedLinkEnabled && canAddLink;\n };\n\n canRemoveSharedLink = (isSharedLinkEnabled: boolean, canRemoveLink: boolean) => {\n return isSharedLinkEnabled && canRemoveLink;\n };\n\n getAllowedPermissionLevels = (): Array<permissionLevelType> => {\n const { isAllowEditSharedLinkForFileEnabled, sharedLink } = this.props;\n\n const {\n canChangeAccessLevel,\n isEditSettingAvailable,\n isDownloadSettingAvailable,\n permissionLevel,\n } = sharedLink;\n\n let allowedPermissionLevels = [CAN_EDIT, CAN_VIEW_DOWNLOAD, CAN_VIEW_ONLY];\n\n if (!canChangeAccessLevel) {\n // remove all but current level\n allowedPermissionLevels = allowedPermissionLevels.filter(level => level === permissionLevel);\n }\n\n // if we cannot set the download value, we remove this option from the dropdown\n if (!isDownloadSettingAvailable) {\n allowedPermissionLevels = allowedPermissionLevels.filter(level => level !== CAN_VIEW_DOWNLOAD);\n }\n\n // if the user cannot edit, we remove this option from the dropdown\n if (!isEditSettingAvailable || !isAllowEditSharedLinkForFileEnabled) {\n allowedPermissionLevels = allowedPermissionLevels.filter(level => level !== CAN_EDIT);\n }\n\n return allowedPermissionLevels;\n };\n\n renderSharedLink() {\n const {\n autofocusSharedLink,\n changeSharedLinkAccessLevel,\n changeSharedLinkPermissionLevel,\n config,\n item,\n itemType,\n intl,\n onDismissTooltip,\n onEmailSharedLinkClick,\n sharedLink,\n sharedLinkEditTagTargetingApi,\n sharedLinkEditTooltipTargetingApi,\n submitting,\n trackingProps,\n triggerCopyOnLoad,\n tooltips,\n } = this.props;\n\n const { isCopySuccessful, isSharedLinkEditTooltipShown } = this.state;\n\n const {\n accessLevel,\n accessLevelsDisabledReason,\n allowedAccessLevels,\n canChangeAccessLevel,\n enterpriseName,\n isEditAllowed,\n permissionLevel,\n url,\n } = sharedLink;\n\n const {\n copyButtonProps,\n onChangeSharedLinkAccessLevel,\n onChangeSharedLinkPermissionLevel,\n onSharedLinkAccessMenuOpen,\n onSharedLinkCopy = noop,\n sendSharedLinkButtonProps,\n sharedLinkAccessMenuButtonProps,\n sharedLinkPermissionsMenuButtonProps,\n } = trackingProps;\n\n const shouldTriggerCopyOnLoad = !!triggerCopyOnLoad && !!isCopySuccessful;\n\n /**\n * The email button should be rendered by default.\n * Only hide the button if there is a config prop that declares showEmailSharedLinkForm to be false.\n */\n const hideEmailButton = config && config.showEmailSharedLinkForm === false;\n\n const isEditableBoxNote = isBoxNote(convertToBoxItem(item)) && isEditAllowed;\n const allowedPermissionLevels = this.getAllowedPermissionLevels();\n\n return (\n <>\n <div className=\"shared-link-field-row\">\n <Tooltip\n className=\"usm-ftux-tooltip\"\n isShown={!!tooltips['shared-link-copy-button']}\n onDismiss={() => onDismissTooltip('shared-link-copy-button')}\n position=\"middle-right\"\n showCloseButton\n text={tooltips['shared-link-copy-button']}\n theme=\"callout\"\n >\n <TextInputWithCopyButton\n aria-label={intl.formatMessage(messages.sharedLinkURLLabel)}\n autofocus={autofocusSharedLink}\n buttonProps={copyButtonProps}\n className=\"shared-link-field-container\"\n disabled={submitting}\n label=\"\"\n onCopySuccess={() => onSharedLinkCopy(permissionLevel)}\n triggerCopyOnLoad={shouldTriggerCopyOnLoad}\n type=\"url\"\n value={url}\n />\n </Tooltip>\n {!hideEmailButton && (\n <Tooltip position=\"top-left\" text={<FormattedMessage {...messages.sendSharedLink} />}>\n <Button\n aria-label={intl.formatMessage(messages.sendSharedLink)}\n className=\"email-shared-link-btn\"\n isDisabled={submitting}\n onClick={onEmailSharedLinkClick}\n type=\"button\"\n {...sendSharedLinkButtonProps}\n >\n <IconMail />\n </Button>\n </Tooltip>\n )}\n </div>\n\n <div className=\"shared-link-access-row\">\n <SharedLinkAccessMenu\n accessLevel={accessLevel}\n accessLevelsDisabledReason={accessLevelsDisabledReason}\n allowedAccessLevels={allowedAccessLevels}\n changeAccessLevel={changeSharedLinkAccessLevel}\n enterpriseName={enterpriseName}\n itemType={itemType}\n onDismissTooltip={() => onDismissTooltip('shared-link-access-menu')}\n tooltipContent={tooltips['shared-link-access-menu'] || null}\n submitting={submitting}\n trackingProps={{\n onChangeSharedLinkAccessLevel,\n onSharedLinkAccessMenuOpen,\n sharedLinkAccessMenuButtonProps,\n }}\n />\n {!isEditableBoxNote && accessLevel !== PEOPLE_IN_ITEM && (\n <GuideTooltip\n isShown={\n allowedPermissionLevels.includes(CAN_EDIT) && sharedLinkEditTooltipTargetingApi?.canShow\n }\n title={intl.formatMessage(messages.ftuxEditPermissionTooltipTitle)}\n body={intl.formatMessage(messages.ftuxEditPermissionTooltipBody)}\n onDismiss={() => {\n if (sharedLinkEditTooltipTargetingApi) {\n const { onClose } = sharedLinkEditTooltipTargetingApi;\n onClose();\n }\n }}\n position=\"bottom-center\"\n >\n <SharedLinkPermissionMenu\n allowedPermissionLevels={allowedPermissionLevels}\n canChangePermissionLevel={canChangeAccessLevel}\n changePermissionLevel={changeSharedLinkPermissionLevel}\n isSharedLinkEditTooltipShown={isSharedLinkEditTooltipShown}\n permissionLevel={permissionLevel}\n sharedLinkEditTagTargetingApi={sharedLinkEditTagTargetingApi}\n sharedLinkEditTooltipTargetingApi={sharedLinkEditTooltipTargetingApi}\n submitting={submitting}\n trackingProps={{\n onChangeSharedLinkPermissionLevel,\n sharedLinkPermissionsMenuButtonProps,\n }}\n />\n </GuideTooltip>\n )}\n {isEditableBoxNote && (\n <Tooltip text={<FormattedMessage {...messages.sharedLinkPermissionsEditTooltip} />}>\n <PlainButton isDisabled className=\"can-edit-btn\">\n <FormattedMessage {...messages.sharedLinkPermissionsEdit} />\n </PlainButton>\n </Tooltip>\n )}\n </div>\n {accessLevel === ANYONE_WITH_LINK && (\n <div className=\"security-indicator-note\">\n <span className=\"security-indicator-icon-globe\">\n <IconGlobe height={12} width={12} />\n </span>\n {permissionLevel === CAN_EDIT ? (\n <FormattedMessage\n data-testid=\"shared-link-editable-publicly-available-message\"\n {...messages.sharedLinkEditablePubliclyAvailable}\n />\n ) : (\n <FormattedMessage\n data-testid=\"shared-link-publicly-available-message\"\n {...messages.sharedLinkPubliclyAvailable}\n />\n )}\n </div>\n )}\n {accessLevel === ANYONE_IN_COMPANY && permissionLevel === CAN_EDIT && (\n <div className=\"security-indicator-note\">\n <span className=\"security-indicator-icon-globe\">\n <IconGlobe height={12} width={12} />\n </span>\n <FormattedMessage\n data-testid=\"shared-link-elevated-editable-company-available-message\"\n {...messages.sharedLinkElevatedEditableCompanyAvailable}\n />\n </div>\n )}\n </>\n );\n }\n\n renderSharedLinkSettingsLink() {\n const {\n intl,\n onDismissTooltip,\n onSettingsClick,\n showSharedLinkSettingsCallout,\n trackingProps,\n tooltips,\n } = this.props;\n const { sharedLinkSettingsButtonProps } = trackingProps;\n\n return (\n <div className=\"shared-link-settings-btn-container\">\n <Tooltip\n className=\"usm-ftux-tooltip\"\n isShown={!!tooltips['shared-link-settings'] || showSharedLinkSettingsCallout}\n onDismiss={() => onDismissTooltip('shared-link-settings')}\n position=\"middle-right\"\n showCloseButton\n text={\n tooltips['shared-link-settings'] || (\n <FormattedMessage {...messages.sharedLinkSettingsCalloutText} />\n )\n }\n theme=\"callout\"\n >\n <PlainButton\n {...sharedLinkSettingsButtonProps}\n aria-label={intl.formatMessage(messages.settingsButtonLabel)}\n className=\"shared-link-settings-btn\"\n onClick={onSettingsClick}\n type=\"button\"\n >\n <FormattedMessage {...messages.sharedLinkSettings} />\n </PlainButton>\n </Tooltip>\n </div>\n );\n }\n\n renderToggle() {\n const { item, onDismissTooltip, onToggleSharedLink, sharedLink, submitting, tooltips } = this.props;\n const { canChangeAccessLevel, expirationTimestamp, url } = sharedLink;\n const isSharedLinkEnabled = !!url;\n const canAddSharedLink = this.canAddSharedLink(isSharedLinkEnabled, item.grantedPermissions.itemShare);\n const canRemoveSharedLink = this.canRemoveSharedLink(isSharedLinkEnabled, canChangeAccessLevel);\n const isToggleEnabled = (canAddSharedLink || canRemoveSharedLink) && !submitting;\n\n let linkText;\n\n if (isSharedLinkEnabled) {\n linkText = <FormattedMessage {...messages.linkShareOn} />;\n if (expirationTimestamp && expirationTimestamp !== 0) {\n linkText = (\n <span>\n <FormattedMessage {...messages.linkShareOn} />\n <Tooltip\n position=\"top-center\"\n text={\n <FormattedMessage\n {...messages.sharedLinkExpirationTooltip}\n values={{\n expiration: convertToMs(expirationTimestamp),\n }}\n />\n }\n >\n <span className=\"shared-link-expiration-badge\">\n <IconClock color={bdlWatermelonRed} />\n </span>\n </Tooltip>\n </span>\n );\n }\n } else {\n linkText = <FormattedMessage {...messages.linkShareOff} />;\n }\n\n const toggleComponent = (\n <div className=\"share-toggle-container\">\n <Toggle\n isDisabled={!isToggleEnabled}\n isOn={isSharedLinkEnabled}\n label={linkText}\n name=\"toggle\"\n onChange={onToggleSharedLink}\n ref={ref => {\n this.toggleRef = ref;\n }}\n />\n </div>\n );\n\n if (!submitting) {\n if (canAddSharedLink) {\n const sharedLinkToggleTooltip = tooltips['shared-link-toggle'];\n if (sharedLinkToggleTooltip) {\n return (\n <Tooltip\n className=\"usm-ftux-tooltip\"\n isShown\n onDismiss={() => onDismissTooltip('shared-link-toggle')}\n position=\"middle-left\"\n showCloseButton\n text={sharedLinkToggleTooltip}\n theme=\"callout\"\n >\n {toggleComponent}\n </Tooltip>\n );\n }\n return (\n <Tooltip\n position=\"top-right\"\n text={<FormattedMessage {...messages.sharedLinkDisabledTooltipCopy} />}\n >\n {toggleComponent}\n </Tooltip>\n );\n }\n\n if (!isToggleEnabled) {\n const tooltipDisabledMessage = isSharedLinkEnabled\n ? messages.removeLinkTooltip\n : messages.disabledCreateLinkTooltip;\n\n return (\n <Tooltip\n className=\"usm-disabled-message-tooltip\"\n position=\"top-right\"\n text={<FormattedMessage {...tooltipDisabledMessage} />}\n >\n {toggleComponent}\n </Tooltip>\n );\n }\n }\n\n return toggleComponent;\n }\n\n render() {\n const { sharedLink, onSettingsClick } = this.props;\n const isSharedLinkEnabled = !!sharedLink.url;\n\n return (\n <div className=\"be\">\n <hr className=\"bdl-SharedLinkSection-separator\" />\n {/* eslint-disable-next-line jsx-a11y/label-has-for */}\n <label>\n <span className=\"label bdl-Label\">\n <FormattedMessage {...messages.sharedLinkSectionLabel} />\n </span>\n </label>\n <div className=\"shared-link-toggle-row\">\n {this.renderToggle()}\n {isSharedLinkEnabled && onSettingsClick && this.renderSharedLinkSettingsLink()}\n </div>\n {isSharedLinkEnabled && this.renderSharedLink()}\n </div>\n );\n }\n}\n\nexport default SharedLinkSection;\n"],"file":"SharedLinkSection.js"}
@@ -28,10 +28,13 @@ import * as React from 'react';
28
28
  import isEmpty from 'lodash/isEmpty';
29
29
  import isEqual from 'lodash/isEqual';
30
30
  import { FormattedMessage, injectIntl } from 'react-intl';
31
+ import FormattedCompMessage from '../../components/i18n/FormattedCompMessage';
31
32
  import LoadingIndicatorWrapper from '../../components/loading-indicator/LoadingIndicatorWrapper';
32
33
  import { Link } from '../../components/link';
33
34
  import Button from '../../components/button';
34
35
  import { UpgradeBadge } from '../../components/badge';
36
+ import InlineNotice from '../../components/inline-notice';
37
+ import PlainButton from '../../components/plain-button';
35
38
  import { ITEM_TYPE_WEBLINK } from '../../common/constants';
36
39
  import Tooltip from '../../components/tooltip';
37
40
  import { CollaboratorAvatars, CollaboratorList } from '../collaborator-avatars';
@@ -201,8 +204,10 @@ function (_React$Component) {
201
204
  _defineProperty(_assertThisInitialized(_this), "handleSendSharedLink", function (data) {
202
205
  var _this$props4 = _this.props,
203
206
  sendSharedLink = _this$props4.sendSharedLink,
207
+ sharedLink = _this$props4.sharedLink,
204
208
  trackingProps = _this$props4.trackingProps;
205
209
  var sharedLinkEmailTracking = trackingProps.sharedLinkEmailTracking;
210
+ var permissionLevel = sharedLink.permissionLevel;
206
211
  var onSendClick = sharedLinkEmailTracking.onSendClick;
207
212
  var emails = data.emails,
208
213
  groupIDs = data.groupIDs;
@@ -210,7 +215,8 @@ function (_React$Component) {
210
215
  if (onSendClick) {
211
216
  var params = _objectSpread({}, data, {
212
217
  numsOfRecipients: emails.length,
213
- numOfRecipientGroups: groupIDs.length
218
+ numOfRecipientGroups: groupIDs.length,
219
+ permissionLevel: permissionLevel
214
220
  });
215
221
 
216
222
  onSendClick(params);
@@ -450,6 +456,8 @@ function (_React$Component) {
450
456
  showEnterEmailsCallout = _this$props8$showEnte === void 0 ? false : _this$props8$showEnte,
451
457
  _this$props8$showCall = _this$props8.showCalloutForUser,
452
458
  showCalloutForUser = _this$props8$showCall === void 0 ? false : _this$props8$showCall,
459
+ _this$props8$showUpgr = _this$props8.showUpgradeInlineNotice,
460
+ showUpgradeInlineNotice = _this$props8$showUpgr === void 0 ? false : _this$props8$showUpgr,
453
461
  showUpgradeOptions = _this$props8.showUpgradeOptions,
454
462
  submitting = _this$props8.submitting,
455
463
  suggestedCollaborators = _this$props8.suggestedCollaborators,
@@ -524,7 +532,7 @@ function (_React$Component) {
524
532
  selectedContacts: this.state.inviteCollabsContacts,
525
533
  suggestedCollaborators: suggestedCollaborators,
526
534
  updateSelectedContacts: this.updateInviteCollabsContacts
527
- }, inviteCollabsEmailTracking), this.renderInviteePermissionsDropdown(), isInviteSectionExpanded && showUpgradeOptions && this.renderUpgradeLinkDescription()))));
535
+ }, inviteCollabsEmailTracking), this.renderInviteePermissionsDropdown(), showUpgradeOptions && !showUpgradeInlineNotice && this.renderUpgradeLinkDescription()))));
528
536
  }
529
537
  }, {
530
538
  key: "renderCollaboratorAvatars",
@@ -555,37 +563,68 @@ function (_React$Component) {
555
563
 
556
564
  return avatarsContent;
557
565
  }
566
+ }, {
567
+ key: "renderCollaboratorMessage",
568
+ value: function renderCollaboratorMessage(resinTarget) {
569
+ var _this$props$openUpgra = this.props.openUpgradePlanModal,
570
+ openUpgradePlanModal = _this$props$openUpgra === void 0 ? function () {} : _this$props$openUpgra;
571
+ return React.createElement(React.Fragment, null, React.createElement(FormattedCompMessage, {
572
+ id: "boxui.unifiedShare.upgradeCollaboratorAccessDescription",
573
+ description: "Description for cta to upgrade to get collaborator access controls"
574
+ }, "Set the level of", ' ', React.createElement(Link, {
575
+ className: "upgrade-link",
576
+ href: "https://support.box.com/hc/en-us/articles/360044196413-Understanding-Collaborator-Permission-Levels",
577
+ target: "_blank"
578
+ }, "collaborator access"), ' ', "and increase security through one of our paid plans.", ' '), React.createElement(PlainButton, {
579
+ className: "upgrade-link",
580
+ "data-resin-target": resinTarget,
581
+ onClick: openUpgradePlanModal,
582
+ type: "button"
583
+ }, React.createElement(FormattedMessage, messages.upgradeLink)));
584
+ }
558
585
  }, {
559
586
  key: "renderUpgradeLinkDescription",
560
587
  value: function renderUpgradeLinkDescription() {
561
- var _this$props$trackingP = this.props.trackingProps,
562
- trackingProps = _this$props$trackingP === void 0 ? {} : _this$props$trackingP;
588
+ var _this$props10 = this.props,
589
+ _this$props10$openUpg = _this$props10.openUpgradePlanModal,
590
+ openUpgradePlanModal = _this$props10$openUpg === void 0 ? function () {} : _this$props10$openUpg,
591
+ _this$props10$showNew = _this$props10.showNewUpgradeText,
592
+ showNewUpgradeText = _this$props10$showNew === void 0 ? false : _this$props10$showNew,
593
+ _this$props10$trackin = _this$props10.trackingProps,
594
+ trackingProps = _this$props10$trackin === void 0 ? {} : _this$props10$trackin;
563
595
  var _trackingProps$invite = trackingProps.inviteCollabsEmailTracking,
564
596
  inviteCollabsEmailTracking = _trackingProps$invite === void 0 ? {} : _trackingProps$invite;
565
597
  var _inviteCollabsEmailTr = inviteCollabsEmailTracking.upgradeLinkProps,
566
598
  upgradeLinkProps = _inviteCollabsEmailTr === void 0 ? {} : _inviteCollabsEmailTr;
567
599
  return React.createElement("div", {
568
600
  className: "upgrade-description"
569
- }, React.createElement(UpgradeBadge, {
570
- type: "warning"
571
- }), React.createElement(FormattedMessage, _extends({
601
+ }, React.createElement(UpgradeBadge, null), showNewUpgradeText ? this.renderCollaboratorMessage('external_collab_newcopy_upgrade_cta') : React.createElement(FormattedMessage, _extends({
572
602
  values: {
573
- upgradeGetMoreAccessControlsLink: React.createElement(Link, _extends({
603
+ upgradeGetMoreAccessControlsLink: React.createElement(PlainButton, _extends({
574
604
  className: "upgrade-link",
575
- href: "/upgrade"
605
+ onClick: openUpgradePlanModal,
606
+ type: "button"
576
607
  }, upgradeLinkProps), React.createElement(FormattedMessage, messages.upgradeGetMoreAccessControlsLink))
577
608
  }
578
609
  }, messages.upgradeGetMoreAccessControlsDescription)));
579
610
  }
611
+ }, {
612
+ key: "renderUpgradeInlineNotice",
613
+ value: function renderUpgradeInlineNotice() {
614
+ return React.createElement(InlineNotice, {
615
+ title: React.createElement(FormattedMessage, messages.upgradeInlineNoticeTitle),
616
+ type: "info"
617
+ }, this.renderCollaboratorMessage('external_collab_top_message_upgrade_cta'));
618
+ }
580
619
  }, {
581
620
  key: "renderInviteePermissionsDropdown",
582
621
  value: function renderInviteePermissionsDropdown() {
583
- var _this$props10 = this.props,
584
- inviteePermissions = _this$props10.inviteePermissions,
585
- item = _this$props10.item,
586
- submitting = _this$props10.submitting,
587
- canInvite = _this$props10.canInvite,
588
- trackingProps = _this$props10.trackingProps;
622
+ var _this$props11 = this.props,
623
+ inviteePermissions = _this$props11.inviteePermissions,
624
+ item = _this$props11.item,
625
+ submitting = _this$props11.submitting,
626
+ canInvite = _this$props11.canInvite,
627
+ trackingProps = _this$props11.trackingProps;
589
628
  var type = item.type;
590
629
  var inviteCollabTracking = trackingProps.inviteCollabTracking;
591
630
  return inviteePermissions && React.createElement(InviteePermissionsMenu, {
@@ -600,10 +639,10 @@ function (_React$Component) {
600
639
  }, {
601
640
  key: "renderCollaboratorList",
602
641
  value: function renderCollaboratorList() {
603
- var _this$props11 = this.props,
604
- item = _this$props11.item,
605
- collaboratorsList = _this$props11.collaboratorsList,
606
- trackingProps = _this$props11.trackingProps;
642
+ var _this$props12 = this.props,
643
+ item = _this$props12.item,
644
+ collaboratorsList = _this$props12.collaboratorsList,
645
+ trackingProps = _this$props12.trackingProps;
607
646
  var name = item.name,
608
647
  type = item.type;
609
648
  var collaboratorListTracking = trackingProps.collaboratorListTracking;
@@ -627,39 +666,42 @@ function (_React$Component) {
627
666
  key: "render",
628
667
  value: function render() {
629
668
  // Shared link section props
630
- var _this$props12 = this.props,
631
- allShareRestrictionWarning = _this$props12.allShareRestrictionWarning,
632
- changeSharedLinkAccessLevel = _this$props12.changeSharedLinkAccessLevel,
633
- createSharedLinkOnLoad = _this$props12.createSharedLinkOnLoad,
634
- changeSharedLinkPermissionLevel = _this$props12.changeSharedLinkPermissionLevel,
635
- config = _this$props12.config,
636
- displayInModal = _this$props12.displayInModal,
637
- focusSharedLinkOnLoad = _this$props12.focusSharedLinkOnLoad,
638
- getSharedLinkContacts = _this$props12.getSharedLinkContacts,
639
- getContactAvatarUrl = _this$props12.getContactAvatarUrl,
640
- intl = _this$props12.intl,
641
- isAllowEditSharedLinkForFileEnabled = _this$props12.isAllowEditSharedLinkForFileEnabled,
642
- isFetching = _this$props12.isFetching,
643
- item = _this$props12.item,
644
- onAddLink = _this$props12.onAddLink,
645
- onCopyError = _this$props12.onCopyError,
646
- onCopyInit = _this$props12.onCopyInit,
647
- onCopySuccess = _this$props12.onCopySuccess,
648
- _this$props12$onDismi = _this$props12.onDismissTooltip,
649
- onDismissTooltip = _this$props12$onDismi === void 0 ? function () {} : _this$props12$onDismi,
650
- onSettingsClick = _this$props12.onSettingsClick,
651
- sendSharedLinkError = _this$props12.sendSharedLinkError,
652
- sharedLink = _this$props12.sharedLink,
653
- sharedLinkEditTagTargetingApi = _this$props12.sharedLinkEditTagTargetingApi,
654
- sharedLinkEditTooltipTargetingApi = _this$props12.sharedLinkEditTooltipTargetingApi,
655
- _this$props12$showEnt = _this$props12.showEnterEmailsCallout,
656
- showEnterEmailsCallout = _this$props12$showEnt === void 0 ? false : _this$props12$showEnt,
657
- _this$props12$showSha = _this$props12.showSharedLinkSettingsCallout,
658
- showSharedLinkSettingsCallout = _this$props12$showSha === void 0 ? false : _this$props12$showSha,
659
- submitting = _this$props12.submitting,
660
- _this$props12$tooltip = _this$props12.tooltips,
661
- tooltips = _this$props12$tooltip === void 0 ? {} : _this$props12$tooltip,
662
- trackingProps = _this$props12.trackingProps;
669
+ var _this$props13 = this.props,
670
+ allShareRestrictionWarning = _this$props13.allShareRestrictionWarning,
671
+ changeSharedLinkAccessLevel = _this$props13.changeSharedLinkAccessLevel,
672
+ createSharedLinkOnLoad = _this$props13.createSharedLinkOnLoad,
673
+ changeSharedLinkPermissionLevel = _this$props13.changeSharedLinkPermissionLevel,
674
+ config = _this$props13.config,
675
+ displayInModal = _this$props13.displayInModal,
676
+ focusSharedLinkOnLoad = _this$props13.focusSharedLinkOnLoad,
677
+ getSharedLinkContacts = _this$props13.getSharedLinkContacts,
678
+ getContactAvatarUrl = _this$props13.getContactAvatarUrl,
679
+ intl = _this$props13.intl,
680
+ isAllowEditSharedLinkForFileEnabled = _this$props13.isAllowEditSharedLinkForFileEnabled,
681
+ isFetching = _this$props13.isFetching,
682
+ item = _this$props13.item,
683
+ onAddLink = _this$props13.onAddLink,
684
+ onCopyError = _this$props13.onCopyError,
685
+ onCopyInit = _this$props13.onCopyInit,
686
+ onCopySuccess = _this$props13.onCopySuccess,
687
+ _this$props13$onDismi = _this$props13.onDismissTooltip,
688
+ onDismissTooltip = _this$props13$onDismi === void 0 ? function () {} : _this$props13$onDismi,
689
+ onSettingsClick = _this$props13.onSettingsClick,
690
+ sendSharedLinkError = _this$props13.sendSharedLinkError,
691
+ sharedLink = _this$props13.sharedLink,
692
+ sharedLinkEditTagTargetingApi = _this$props13.sharedLinkEditTagTargetingApi,
693
+ sharedLinkEditTooltipTargetingApi = _this$props13.sharedLinkEditTooltipTargetingApi,
694
+ _this$props13$showEnt = _this$props13.showEnterEmailsCallout,
695
+ showEnterEmailsCallout = _this$props13$showEnt === void 0 ? false : _this$props13$showEnt,
696
+ _this$props13$showSha = _this$props13.showSharedLinkSettingsCallout,
697
+ showSharedLinkSettingsCallout = _this$props13$showSha === void 0 ? false : _this$props13$showSha,
698
+ _this$props13$showUpg = _this$props13.showUpgradeInlineNotice,
699
+ showUpgradeInlineNotice = _this$props13$showUpg === void 0 ? false : _this$props13$showUpg,
700
+ showUpgradeOptions = _this$props13.showUpgradeOptions,
701
+ submitting = _this$props13.submitting,
702
+ _this$props13$tooltip = _this$props13.tooltips,
703
+ tooltips = _this$props13$tooltip === void 0 ? {} : _this$props13$tooltip,
704
+ trackingProps = _this$props13.trackingProps;
663
705
  var sharedLinkTracking = trackingProps.sharedLinkTracking,
664
706
  sharedLinkEmailTracking = trackingProps.sharedLinkEmailTracking;
665
707
  var _this$state4 = this.state,
@@ -673,7 +715,7 @@ function (_React$Component) {
673
715
  }, React.createElement(LoadingIndicatorWrapper, {
674
716
  isLoading: isFetching,
675
717
  hideContent: true
676
- }, showShareRestrictionWarning && allShareRestrictionWarning, !isEmailLinkSectionExpanded && !showCollaboratorList && this.renderInviteSection(), !isEmailLinkSectionExpanded && !isInviteSectionExpanded && !showCollaboratorList && React.createElement(SharedLinkSection, {
718
+ }, showShareRestrictionWarning && allShareRestrictionWarning, showUpgradeOptions && showUpgradeInlineNotice && this.renderUpgradeInlineNotice(), !isEmailLinkSectionExpanded && !showCollaboratorList && this.renderInviteSection(), !isEmailLinkSectionExpanded && !isInviteSectionExpanded && !showCollaboratorList && React.createElement(SharedLinkSection, {
677
719
  addSharedLink: onAddLink,
678
720
  autofocusSharedLink: this.shouldAutoFocusSharedLink(),
679
721
  autoCreateSharedLink: createSharedLinkOnLoad,
@@ -5,10 +5,13 @@ import isEmpty from 'lodash/isEmpty';
5
5
  import isEqual from 'lodash/isEqual';
6
6
  import { FormattedMessage, injectIntl } from 'react-intl';
7
7
 
8
+ import FormattedCompMessage from '../../components/i18n/FormattedCompMessage';
8
9
  import LoadingIndicatorWrapper from '../../components/loading-indicator/LoadingIndicatorWrapper';
9
10
  import { Link } from '../../components/link';
10
11
  import Button from '../../components/button';
11
12
  import { UpgradeBadge } from '../../components/badge';
13
+ import InlineNotice from '../../components/inline-notice';
14
+ import PlainButton from '../../components/plain-button';
12
15
  import { ITEM_TYPE_WEBLINK } from '../../common/constants';
13
16
  import Tooltip from '../../components/tooltip';
14
17
  import { CollaboratorAvatars, CollaboratorList } from '../collaborator-avatars';
@@ -220,8 +223,9 @@ class UnifiedShareForm extends React.Component<USFProps, State> {
220
223
  };
221
224
 
222
225
  handleSendSharedLink = (data: Object) => {
223
- const { sendSharedLink, trackingProps } = this.props;
226
+ const { sendSharedLink, sharedLink, trackingProps } = this.props;
224
227
  const { sharedLinkEmailTracking } = trackingProps;
228
+ const { permissionLevel } = sharedLink;
225
229
  const { onSendClick } = sharedLinkEmailTracking;
226
230
 
227
231
  const { emails, groupIDs } = data;
@@ -231,6 +235,7 @@ class UnifiedShareForm extends React.Component<USFProps, State> {
231
235
  ...data,
232
236
  numsOfRecipients: emails.length,
233
237
  numOfRecipientGroups: groupIDs.length,
238
+ permissionLevel,
234
239
  };
235
240
  onSendClick(params);
236
241
  }
@@ -420,6 +425,7 @@ class UnifiedShareForm extends React.Component<USFProps, State> {
420
425
  shouldRenderFTUXTooltip,
421
426
  showEnterEmailsCallout = false,
422
427
  showCalloutForUser = false,
428
+ showUpgradeInlineNotice = false,
423
429
  showUpgradeOptions,
424
430
  submitting,
425
431
  suggestedCollaborators,
@@ -507,7 +513,7 @@ class UnifiedShareForm extends React.Component<USFProps, State> {
507
513
  {...inviteCollabsEmailTracking}
508
514
  >
509
515
  {this.renderInviteePermissionsDropdown()}
510
- {isInviteSectionExpanded && showUpgradeOptions && this.renderUpgradeLinkDescription()}
516
+ {showUpgradeOptions && !showUpgradeInlineNotice && this.renderUpgradeLinkDescription()}
511
517
  </EmailForm>
512
518
  </div>
513
519
  </Tooltip>
@@ -538,28 +544,75 @@ class UnifiedShareForm extends React.Component<USFProps, State> {
538
544
  return avatarsContent;
539
545
  }
540
546
 
547
+ renderCollaboratorMessage(resinTarget: string) {
548
+ const { openUpgradePlanModal = () => {} } = this.props;
549
+ return (
550
+ <>
551
+ <FormattedCompMessage
552
+ id="boxui.unifiedShare.upgradeCollaboratorAccessDescription"
553
+ description="Description for cta to upgrade to get collaborator access controls"
554
+ >
555
+ Set the level of{' '}
556
+ <Link
557
+ className="upgrade-link"
558
+ href="https://support.box.com/hc/en-us/articles/360044196413-Understanding-Collaborator-Permission-Levels"
559
+ target="_blank"
560
+ >
561
+ collaborator access
562
+ </Link>{' '}
563
+ and increase security through one of our paid plans.{' '}
564
+ </FormattedCompMessage>
565
+ <PlainButton
566
+ className="upgrade-link"
567
+ data-resin-target={resinTarget}
568
+ onClick={openUpgradePlanModal}
569
+ type="button"
570
+ >
571
+ <FormattedMessage {...messages.upgradeLink} />
572
+ </PlainButton>
573
+ </>
574
+ );
575
+ }
576
+
541
577
  renderUpgradeLinkDescription() {
542
- const { trackingProps = {} } = this.props;
578
+ const { openUpgradePlanModal = () => {}, showNewUpgradeText = false, trackingProps = {} } = this.props;
543
579
  const { inviteCollabsEmailTracking = {} } = trackingProps;
544
580
  const { upgradeLinkProps = {} } = inviteCollabsEmailTracking;
545
581
 
546
582
  return (
547
583
  <div className="upgrade-description">
548
- <UpgradeBadge type="warning" />
549
- <FormattedMessage
550
- values={{
551
- upgradeGetMoreAccessControlsLink: (
552
- <Link className="upgrade-link" href="/upgrade" {...upgradeLinkProps}>
553
- <FormattedMessage {...messages.upgradeGetMoreAccessControlsLink} />
554
- </Link>
555
- ),
556
- }}
557
- {...messages.upgradeGetMoreAccessControlsDescription}
558
- />
584
+ <UpgradeBadge />
585
+ {showNewUpgradeText ? (
586
+ this.renderCollaboratorMessage('external_collab_newcopy_upgrade_cta')
587
+ ) : (
588
+ <FormattedMessage
589
+ values={{
590
+ upgradeGetMoreAccessControlsLink: (
591
+ <PlainButton
592
+ className="upgrade-link"
593
+ onClick={openUpgradePlanModal}
594
+ type="button"
595
+ {...upgradeLinkProps}
596
+ >
597
+ <FormattedMessage {...messages.upgradeGetMoreAccessControlsLink} />
598
+ </PlainButton>
599
+ ),
600
+ }}
601
+ {...messages.upgradeGetMoreAccessControlsDescription}
602
+ />
603
+ )}
559
604
  </div>
560
605
  );
561
606
  }
562
607
 
608
+ renderUpgradeInlineNotice() {
609
+ return (
610
+ <InlineNotice title={<FormattedMessage {...messages.upgradeInlineNoticeTitle} />} type="info">
611
+ {this.renderCollaboratorMessage('external_collab_top_message_upgrade_cta')}
612
+ </InlineNotice>
613
+ );
614
+ }
615
+
563
616
  renderInviteePermissionsDropdown() {
564
617
  const { inviteePermissions, item, submitting, canInvite, trackingProps } = this.props;
565
618
  const { type } = item;
@@ -631,6 +684,8 @@ class UnifiedShareForm extends React.Component<USFProps, State> {
631
684
  sharedLinkEditTooltipTargetingApi,
632
685
  showEnterEmailsCallout = false,
633
686
  showSharedLinkSettingsCallout = false,
687
+ showUpgradeInlineNotice = false,
688
+ showUpgradeOptions,
634
689
  submitting,
635
690
  tooltips = {},
636
691
  trackingProps,
@@ -649,6 +704,7 @@ class UnifiedShareForm extends React.Component<USFProps, State> {
649
704
  <div className={displayInModal ? '' : 'be bdl-UnifiedShareForm'}>
650
705
  <LoadingIndicatorWrapper isLoading={isFetching} hideContent>
651
706
  {showShareRestrictionWarning && allShareRestrictionWarning}
707
+ {showUpgradeOptions && showUpgradeInlineNotice && this.renderUpgradeInlineNotice()}
652
708
 
653
709
  {!isEmailLinkSectionExpanded && !showCollaboratorList && this.renderInviteSection()}
654
710