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/UnifiedShareForm.js"],"names":["React","isEmpty","isEqual","FormattedMessage","injectIntl","LoadingIndicatorWrapper","Link","Button","UpgradeBadge","ITEM_TYPE_WEBLINK","Tooltip","CollaboratorAvatars","CollaboratorList","InviteePermissionsMenu","messages","SharedLinkSection","EmailForm","getDefaultPermissionLevel","hasRestrictedExternalContacts","mergeContacts","JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB","SHARED_LINKS_COMMUNITY_URL","INVITE_COLLABS_CONTACTS_TYPE","EMAIL_SHARED_LINK_CONTACTS_TYPE","UnifiedShareForm","props","item","checkpoint","justificationReasons","state","getJustificationReasons","hasJustificationReasons","length","Promise","resolve","setState","isFetchingJustificationReasons","typedID","then","classificationLabelId","options","map","id","title","displayText","value","finally","inviteCollabsContacts","isCollabRestrictionJustificationAllowed","restrictedExternalCollabEmails","hasRestrictedExternalCollabs","pills","onPillCreate","event","target","handleFtuxCloseClick","onAddLink","openConfirmModal","shouldRenderFTUXTooltip","trackingProps","sharedLinkTracking","onToggleLink","type","checked","showCollaboratorList","data","inviteePermissions","sendInvites","inviteCollabsEmailTracking","onSendClick","inviteePermissionLevel","defaultPermissionLevel","selectedPermissionLevel","emails","groupIDs","justificationReason","message","restrictedExternalEmails","params","join","emailMessage","permission","numsOfInvitees","numOfInviteeGroups","hasJustificationReason","hasRestrictedExternalInvitees","shouldSubmitJustificationReason","sendSharedLink","sharedLinkEmailTracking","numsOfRecipients","numOfRecipientGroups","permissionLevel","inviteCollabTracking","onInviteePermissionChange","selectOptionPills","filter","pill","getContactsByEmail","contacts","prevState","emailSharedLinkContacts","isInviteSectionExpanded","onEnterInviteCollabs","isEmailLinkSectionExpanded","some","contact","isExternalUser","currentInviteCollabsContacts","newInviteCollabsContacts","hasRestrictedExternalCollabsAfterUpdate","onRemoveAllRestrictedExternalCollabs","setUpdatedContacts","isRemovingAllRestrictedExternalCollabs","focusSharedLinkOnLoad","sharedLink","sharedLinkLoaded","createSharedLinkOnLoad","isNewSharedLink","initiallySelectedContacts","prevProps","prevRestrictedExternalCollabEmails","prevIsCollabRestrictionJustificationAllowed","didExternalCollabRestrictionsChange","shouldRequireExternalCollabJustification","fetchJustificationReasons","canInvite","collaborationRestrictionWarning","config","contactLimit","getCollaboratorContacts","getContactAvatarUrl","recommendedSharingTooltipCalloutName","sendInvitesError","showEnterEmailsCallout","showCalloutForUser","showUpgradeOptions","submitting","suggestedCollaborators","modalTracking","contactsFieldDisabledTooltip","inviteDisabledWeblinkTooltip","inviteDisabledTooltip","inlineNotice","content","avatars","renderCollaboratorAvatars","ftuxConfirmButtonProps","ftuxTooltipText","ftuxNewUSMUserTitle","ftuxNewUSMUserBody","ftuxLinkText","ftuxConfirmLabel","ftuxTooltipProps","className","isShown","position","showCloseButton","text","theme","inviteFieldLabel","hasExternalContact","openInviteCollaborators","handleInviteCollabPillCreate","closeInviteCollaborators","handleSendInvites","openInviteCollaboratorsSection","updateInviteCollabsContacts","renderInviteePermissionsDropdown","renderUpgradeLinkDescription","collaboratorsList","currentUserID","avatarsContent","collaborators","hideCollaborators","canShowCollaboratorAvatars","collaborator","String","userID","collaboratorAvatarsProps","upgradeLinkProps","upgradeGetMoreAccessControlsLink","upgradeGetMoreAccessControlsDescription","inviteePermissionsButtonProps","handleInviteePermissionChange","name","collaboratorListTracking","listContent","closeCollaboratorList","allShareRestrictionWarning","changeSharedLinkAccessLevel","changeSharedLinkPermissionLevel","displayInModal","getSharedLinkContacts","intl","isAllowEditSharedLinkForFileEnabled","isFetching","onCopyError","onCopyInit","onCopySuccess","onDismissTooltip","onSettingsClick","sendSharedLinkError","sharedLinkEditTagTargetingApi","sharedLinkEditTooltipTargetingApi","showSharedLinkSettingsCallout","tooltips","showShareRestrictionWarning","renderInviteSection","shouldAutoFocusSharedLink","openEmailSharedLinkForm","onToggleSharedLink","sendSharedLinkFieldLabel","handleEmailSharedLinkPillCreate","closeEmailSharedLinkForm","handleSendSharedLink","updateEmailSharedLinkContacts","renderCollaboratorList","Component","removeLinkConfirmModalTracking","UnifiedShareFormBase"],"mappings":"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","sourcesContent":["// @flow\n\nimport * as React from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nimport LoadingIndicatorWrapper from '../../components/loading-indicator/LoadingIndicatorWrapper';\nimport { Link } from '../../components/link';\nimport Button from '../../components/button';\nimport { UpgradeBadge } from '../../components/badge';\nimport { ITEM_TYPE_WEBLINK } from '../../common/constants';\nimport Tooltip from '../../components/tooltip';\nimport { CollaboratorAvatars, CollaboratorList } from '../collaborator-avatars';\n\nimport InviteePermissionsMenu from './InviteePermissionsMenu';\nimport messages from './messages';\nimport SharedLinkSection from './SharedLinkSection';\nimport EmailForm from './EmailForm';\nimport getDefaultPermissionLevel from './utils/defaultPermissionLevel';\nimport hasRestrictedExternalContacts from './utils/hasRestrictedExternalContacts';\nimport mergeContacts from './utils/mergeContacts';\nimport { JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB } from './constants';\n\nimport type {\n contactType as Contact,\n getJustificationReasonsResponseType as GetJustificationReasonsResponse,\n item as Item,\n justificationCheckpointType as JustificationCheckpoint,\n USFProps,\n} from './flowTypes';\nimport type { SelectOptionProp } from '../../components/select-field/props';\n\nconst SHARED_LINKS_COMMUNITY_URL = 'https://community.box.com/t5/Using-Shared-Links/Creating-Shared-Links/ta-p/19523';\nconst INVITE_COLLABS_CONTACTS_TYPE = 'inviteCollabsContacts';\nconst EMAIL_SHARED_LINK_CONTACTS_TYPE = 'emailSharedLinkContacts';\n\ntype State = {\n classificationLabelId: string,\n emailSharedLinkContacts: Array<Contact>,\n inviteCollabsContacts: Array<Contact>,\n inviteePermissionLevel: string,\n isEmailLinkSectionExpanded: boolean,\n isFetchingJustificationReasons: boolean,\n isInviteSectionExpanded: boolean,\n justificationReasons: Array<SelectOptionProp>,\n showCollaboratorList: boolean,\n};\n\nclass UnifiedShareForm extends React.Component<USFProps, State> {\n static defaultProps = {\n displayInModal: true,\n initiallySelectedContacts: [],\n createSharedLinkOnLoad: false,\n focusSharedLinkOnLoad: false,\n restrictedExternalCollabEmails: [],\n trackingProps: {\n collaboratorListTracking: {},\n inviteCollabsEmailTracking: {},\n inviteCollabTracking: {},\n modalTracking: {},\n removeLinkConfirmModalTracking: {},\n sharedLinkEmailTracking: {},\n sharedLinkTracking: {},\n },\n };\n\n constructor(props: USFProps) {\n super(props);\n\n this.state = {\n classificationLabelId: '',\n emailSharedLinkContacts: [],\n inviteCollabsContacts: props.initiallySelectedContacts,\n inviteePermissionLevel: '',\n isEmailLinkSectionExpanded: false,\n isFetchingJustificationReasons: false,\n isInviteSectionExpanded: !!props.initiallySelectedContacts.length,\n justificationReasons: [],\n showCollaboratorList: false,\n };\n }\n\n componentDidUpdate(prevProps: USFProps) {\n const { isCollabRestrictionJustificationAllowed, item, restrictedExternalCollabEmails } = this.props;\n const {\n restrictedExternalCollabEmails: prevRestrictedExternalCollabEmails,\n isCollabRestrictionJustificationAllowed: prevIsCollabRestrictionJustificationAllowed,\n } = prevProps;\n\n const didExternalCollabRestrictionsChange =\n !isEqual(restrictedExternalCollabEmails, prevRestrictedExternalCollabEmails) ||\n isCollabRestrictionJustificationAllowed !== prevIsCollabRestrictionJustificationAllowed;\n\n if (didExternalCollabRestrictionsChange && this.shouldRequireExternalCollabJustification()) {\n this.fetchJustificationReasons(item, JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB);\n }\n }\n\n fetchJustificationReasons = (item: Item, checkpoint: JustificationCheckpoint) => {\n const { justificationReasons } = this.state;\n const { getJustificationReasons } = this.props;\n const hasJustificationReasons = !!justificationReasons.length;\n\n if (!getJustificationReasons || hasJustificationReasons) {\n return Promise.resolve();\n }\n this.setState({ isFetchingJustificationReasons: true });\n\n return getJustificationReasons(item.typedID, checkpoint)\n .then(({ classificationLabelId, options }: GetJustificationReasonsResponse) => {\n this.setState({\n classificationLabelId,\n justificationReasons: options.map(({ id, title }) => ({\n displayText: title,\n value: id,\n })),\n });\n })\n .finally(() => {\n this.setState({ isFetchingJustificationReasons: false });\n });\n };\n\n shouldRequireExternalCollabJustification = () => {\n const { inviteCollabsContacts } = this.state;\n const { isCollabRestrictionJustificationAllowed, restrictedExternalCollabEmails } = this.props;\n\n const hasRestrictedExternalCollabs = hasRestrictedExternalContacts(\n inviteCollabsContacts,\n restrictedExternalCollabEmails,\n );\n return hasRestrictedExternalCollabs && isCollabRestrictionJustificationAllowed;\n };\n\n handleInviteCollabPillCreate = (pills: Array<SelectOptionProp | Contact>) => {\n return this.onPillCreate(INVITE_COLLABS_CONTACTS_TYPE, pills);\n };\n\n handleEmailSharedLinkPillCreate = (pills: Array<SelectOptionProp | Contact>) => {\n return this.onPillCreate(EMAIL_SHARED_LINK_CONTACTS_TYPE, pills);\n };\n\n onToggleSharedLink = (event: SyntheticInputEvent<HTMLInputElement>) => {\n const { target } = event;\n const {\n handleFtuxCloseClick,\n onAddLink,\n openConfirmModal,\n shouldRenderFTUXTooltip,\n trackingProps,\n } = this.props;\n const { sharedLinkTracking } = trackingProps;\n const { onToggleLink } = sharedLinkTracking;\n\n if (shouldRenderFTUXTooltip) {\n handleFtuxCloseClick();\n }\n\n if (target.type === 'checkbox') {\n if (target.checked === false) {\n openConfirmModal();\n } else {\n onAddLink();\n }\n\n if (onToggleLink) {\n onToggleLink(target.checked);\n }\n }\n };\n\n showCollaboratorList = () => {\n this.setState({ showCollaboratorList: true });\n };\n\n closeCollaboratorList = () => {\n this.setState({ showCollaboratorList: false });\n };\n\n handleSendInvites = (data: Object) => {\n const { inviteePermissions, isCollabRestrictionJustificationAllowed, sendInvites, trackingProps } = this.props;\n const { inviteCollabsEmailTracking } = trackingProps;\n const { onSendClick } = inviteCollabsEmailTracking;\n const { classificationLabelId, inviteePermissionLevel } = this.state;\n const defaultPermissionLevel = getDefaultPermissionLevel(inviteePermissions);\n const selectedPermissionLevel = inviteePermissionLevel || defaultPermissionLevel;\n const { emails, groupIDs, justificationReason, message, restrictedExternalEmails } = data;\n\n let params = {\n emails: emails.join(','),\n groupIDs: groupIDs.join(','),\n emailMessage: message,\n permission: selectedPermissionLevel,\n numsOfInvitees: emails.length,\n numOfInviteeGroups: groupIDs.length,\n };\n\n const hasJustificationReason = !!justificationReason;\n const hasRestrictedExternalInvitees = !isEmpty(restrictedExternalEmails);\n const shouldSubmitJustificationReason =\n hasJustificationReason && hasRestrictedExternalInvitees && isCollabRestrictionJustificationAllowed;\n\n if (shouldSubmitJustificationReason) {\n params = {\n ...params,\n classificationLabelId,\n justificationReason: {\n id: justificationReason.value,\n title: justificationReason.displayText,\n },\n };\n }\n\n if (onSendClick) {\n onSendClick(params);\n }\n\n return sendInvites(params);\n };\n\n handleSendSharedLink = (data: Object) => {\n const { sendSharedLink, trackingProps } = this.props;\n const { sharedLinkEmailTracking } = trackingProps;\n const { onSendClick } = sharedLinkEmailTracking;\n\n const { emails, groupIDs } = data;\n\n if (onSendClick) {\n const params = {\n ...data,\n numsOfRecipients: emails.length,\n numOfRecipientGroups: groupIDs.length,\n };\n onSendClick(params);\n }\n\n return sendSharedLink(data);\n };\n\n // TODO-AH: Change permission level to use the appropriate flow type\n handleInviteePermissionChange = (permissionLevel: string) => {\n const { trackingProps } = this.props;\n const { inviteCollabTracking } = trackingProps;\n const { onInviteePermissionChange } = inviteCollabTracking;\n\n this.setState({ inviteePermissionLevel: permissionLevel });\n\n if (onInviteePermissionChange) {\n onInviteePermissionChange(permissionLevel);\n }\n };\n\n onPillCreate = (type: string, pills: Array<SelectOptionProp | Contact>) => {\n // If this is a dropdown select event, we ignore it\n // $FlowFixMe\n const selectOptionPills = pills.filter(pill => !pill.id);\n if (selectOptionPills.length === 0) {\n return;\n }\n\n const { getContactsByEmail } = this.props;\n\n if (getContactsByEmail) {\n const emails = pills.map(pill => pill.value);\n // $FlowFixMe\n getContactsByEmail({ emails }).then((contacts: Object) => {\n if (type === INVITE_COLLABS_CONTACTS_TYPE) {\n this.setState(prevState => ({\n inviteCollabsContacts: mergeContacts(prevState.inviteCollabsContacts, contacts),\n }));\n } else if (type === EMAIL_SHARED_LINK_CONTACTS_TYPE) {\n this.setState(prevState => ({\n emailSharedLinkContacts: mergeContacts(prevState.emailSharedLinkContacts, contacts),\n }));\n }\n });\n }\n };\n\n openInviteCollaborators = (value: string) => {\n const { handleFtuxCloseClick } = this.props;\n if (this.state.isInviteSectionExpanded) {\n return;\n }\n\n // checking the value because IE seems to trigger onInput immediately\n // on focus of the contacts field\n if (value !== '') {\n handleFtuxCloseClick();\n this.setState(\n {\n isInviteSectionExpanded: true,\n },\n () => {\n const {\n trackingProps: {\n inviteCollabTracking: { onEnterInviteCollabs },\n },\n } = this.props;\n\n if (onEnterInviteCollabs) {\n onEnterInviteCollabs();\n }\n },\n );\n }\n };\n\n openInviteCollaboratorsSection = () => {\n this.setState({\n isInviteSectionExpanded: true,\n });\n };\n\n closeInviteCollaborators = () => {\n this.setState({\n isInviteSectionExpanded: false,\n });\n };\n\n openEmailSharedLinkForm = () => {\n const { handleFtuxCloseClick } = this.props;\n handleFtuxCloseClick();\n this.setState({\n isEmailLinkSectionExpanded: true,\n });\n };\n\n closeEmailSharedLinkForm = () => {\n this.setState({ isEmailLinkSectionExpanded: false });\n };\n\n hasExternalContact = (type: string): boolean => {\n const { inviteCollabsContacts, emailSharedLinkContacts } = this.state;\n if (type === INVITE_COLLABS_CONTACTS_TYPE) {\n return inviteCollabsContacts.some(contact => contact.isExternalUser);\n }\n if (type === EMAIL_SHARED_LINK_CONTACTS_TYPE) {\n return emailSharedLinkContacts.some(contact => contact.isExternalUser);\n }\n return false;\n };\n\n isRemovingAllRestrictedExternalCollabs = (\n currentInviteCollabsContacts: Array<Contact>,\n newInviteCollabsContacts: Array<Contact>,\n ) => {\n const { restrictedExternalCollabEmails } = this.props;\n\n const hasRestrictedExternalCollabs = hasRestrictedExternalContacts(\n currentInviteCollabsContacts,\n restrictedExternalCollabEmails,\n );\n const hasRestrictedExternalCollabsAfterUpdate = hasRestrictedExternalContacts(\n newInviteCollabsContacts,\n restrictedExternalCollabEmails,\n );\n\n return hasRestrictedExternalCollabs && !hasRestrictedExternalCollabsAfterUpdate;\n };\n\n updateInviteCollabsContacts = (inviteCollabsContacts: Array<Contact>) => {\n const { inviteCollabsContacts: currentInviteCollabsContacts } = this.state;\n const { onRemoveAllRestrictedExternalCollabs, setUpdatedContacts } = this.props;\n\n const isRemovingAllRestrictedExternalCollabs = this.isRemovingAllRestrictedExternalCollabs(\n currentInviteCollabsContacts,\n inviteCollabsContacts,\n );\n\n this.setState({\n inviteCollabsContacts,\n });\n\n if (setUpdatedContacts) {\n setUpdatedContacts(inviteCollabsContacts);\n }\n if (onRemoveAllRestrictedExternalCollabs && isRemovingAllRestrictedExternalCollabs) {\n onRemoveAllRestrictedExternalCollabs();\n }\n };\n\n updateEmailSharedLinkContacts = (emailSharedLinkContacts: Array<Contact>) => {\n this.setState({\n emailSharedLinkContacts,\n });\n };\n\n shouldAutoFocusSharedLink = () => {\n const { focusSharedLinkOnLoad, sharedLink, sharedLinkLoaded, createSharedLinkOnLoad } = this.props;\n\n if (!createSharedLinkOnLoad && !focusSharedLinkOnLoad) {\n return false;\n }\n // if not forcing focus or not a newly added shared link, return false\n if (!(focusSharedLinkOnLoad || sharedLink.isNewSharedLink)) {\n return false;\n }\n // otherwise wait until the link data is loaded before focusing\n if (!sharedLinkLoaded) {\n return false;\n }\n return true;\n };\n\n renderInviteSection() {\n const {\n canInvite,\n collaborationRestrictionWarning,\n config,\n contactLimit,\n getCollaboratorContacts,\n getContactAvatarUrl,\n handleFtuxCloseClick,\n item,\n recommendedSharingTooltipCalloutName = null,\n restrictedExternalCollabEmails,\n sendInvitesError,\n shouldRenderFTUXTooltip,\n showEnterEmailsCallout = false,\n showCalloutForUser = false,\n showUpgradeOptions,\n submitting,\n suggestedCollaborators,\n trackingProps,\n } = this.props;\n const { type } = item;\n const { isFetchingJustificationReasons, isInviteSectionExpanded, justificationReasons } = this.state;\n const { inviteCollabsEmailTracking, modalTracking } = trackingProps;\n const contactsFieldDisabledTooltip =\n type === ITEM_TYPE_WEBLINK ? (\n <FormattedMessage {...messages.inviteDisabledWeblinkTooltip} />\n ) : (\n <FormattedMessage {...messages.inviteDisabledTooltip} />\n );\n const inlineNotice = sendInvitesError\n ? {\n type: 'error',\n content: sendInvitesError,\n }\n : {\n type: 'warning',\n content: collaborationRestrictionWarning,\n };\n const avatars = this.renderCollaboratorAvatars();\n const { ftuxConfirmButtonProps } = modalTracking;\n const ftuxTooltipText = (\n <div>\n <h4 className=\"ftux-tooltip-title\">\n <FormattedMessage {...messages.ftuxNewUSMUserTitle} />\n </h4>\n <p className=\"ftux-tooltip-body\">\n <FormattedMessage {...messages.ftuxNewUSMUserBody} />{' '}\n <Link className=\"ftux-tooltip-link\" href={SHARED_LINKS_COMMUNITY_URL} target=\"_blank\">\n <FormattedMessage {...messages.ftuxLinkText} />\n </Link>\n </p>\n <div className=\"ftux-tooltip-controls\">\n <Button className=\"ftux-tooltip-button\" onClick={handleFtuxCloseClick} {...ftuxConfirmButtonProps}>\n <FormattedMessage {...messages.ftuxConfirmLabel} />\n </Button>\n </div>\n </div>\n );\n const ftuxTooltipProps = {\n className: 'usm-ftux-tooltip',\n // don't want ftux tooltip to show if the recommended sharing tooltip callout is showing\n isShown: !recommendedSharingTooltipCalloutName && shouldRenderFTUXTooltip && showCalloutForUser,\n position: 'middle-left',\n showCloseButton: true,\n text: ftuxTooltipText,\n theme: 'callout',\n };\n\n return (\n <>\n <Tooltip {...ftuxTooltipProps}>\n <div className=\"invite-collaborator-container\" data-testid=\"invite-collaborator-container\">\n <EmailForm\n config={config}\n contactLimit={contactLimit}\n contactsFieldAvatars={avatars}\n contactsFieldDisabledTooltip={contactsFieldDisabledTooltip}\n contactsFieldLabel={<FormattedMessage {...messages.inviteFieldLabel} />}\n getContacts={getCollaboratorContacts}\n getContactAvatarUrl={getContactAvatarUrl}\n inlineNotice={inlineNotice}\n isContactsFieldEnabled={canInvite}\n isExpanded={isInviteSectionExpanded}\n isFetchingJustificationReasons={isFetchingJustificationReasons}\n isExternalUserSelected={this.hasExternalContact(INVITE_COLLABS_CONTACTS_TYPE)}\n isRestrictionJustificationEnabled={this.shouldRequireExternalCollabJustification()}\n justificationReasons={justificationReasons}\n onContactInput={this.openInviteCollaborators}\n onPillCreate={this.handleInviteCollabPillCreate}\n onRequestClose={this.closeInviteCollaborators}\n onSubmit={this.handleSendInvites}\n openInviteCollaboratorsSection={this.openInviteCollaboratorsSection}\n recommendedSharingTooltipCalloutName={recommendedSharingTooltipCalloutName}\n restrictedExternalEmails={restrictedExternalCollabEmails}\n showEnterEmailsCallout={showEnterEmailsCallout}\n submitting={submitting}\n selectedContacts={this.state.inviteCollabsContacts}\n suggestedCollaborators={suggestedCollaborators}\n updateSelectedContacts={this.updateInviteCollabsContacts}\n {...inviteCollabsEmailTracking}\n >\n {this.renderInviteePermissionsDropdown()}\n {isInviteSectionExpanded && showUpgradeOptions && this.renderUpgradeLinkDescription()}\n </EmailForm>\n </div>\n </Tooltip>\n </>\n );\n }\n\n renderCollaboratorAvatars() {\n const { collaboratorsList, canInvite, currentUserID, item, trackingProps } = this.props;\n const { modalTracking } = trackingProps;\n let avatarsContent = null;\n\n if (collaboratorsList) {\n const { collaborators } = collaboratorsList;\n const { hideCollaborators = true } = item;\n const canShowCollaboratorAvatars = hideCollaborators ? canInvite : true;\n\n // filter out the current user by comparing to the ItemCollabRecord ID field\n avatarsContent = canShowCollaboratorAvatars && (\n <CollaboratorAvatars\n collaborators={collaborators.filter(collaborator => String(collaborator.userID) !== currentUserID)}\n onClick={this.showCollaboratorList}\n containerAttributes={modalTracking.collaboratorAvatarsProps}\n />\n );\n }\n\n return avatarsContent;\n }\n\n renderUpgradeLinkDescription() {\n const { trackingProps = {} } = this.props;\n const { inviteCollabsEmailTracking = {} } = trackingProps;\n const { upgradeLinkProps = {} } = inviteCollabsEmailTracking;\n\n return (\n <div className=\"upgrade-description\">\n <UpgradeBadge type=\"warning\" />\n <FormattedMessage\n values={{\n upgradeGetMoreAccessControlsLink: (\n <Link className=\"upgrade-link\" href=\"/upgrade\" {...upgradeLinkProps}>\n <FormattedMessage {...messages.upgradeGetMoreAccessControlsLink} />\n </Link>\n ),\n }}\n {...messages.upgradeGetMoreAccessControlsDescription}\n />\n </div>\n );\n }\n\n renderInviteePermissionsDropdown() {\n const { inviteePermissions, item, submitting, canInvite, trackingProps } = this.props;\n const { type } = item;\n const { inviteCollabTracking } = trackingProps;\n\n return (\n inviteePermissions && (\n <InviteePermissionsMenu\n disabled={!canInvite || submitting}\n inviteePermissionsButtonProps={inviteCollabTracking.inviteePermissionsButtonProps}\n inviteePermissionLevel={this.state.inviteePermissionLevel}\n inviteePermissions={inviteePermissions}\n changeInviteePermissionLevel={this.handleInviteePermissionChange}\n itemType={type}\n />\n )\n );\n }\n\n renderCollaboratorList() {\n const { item, collaboratorsList, trackingProps } = this.props;\n const { name, type } = item;\n const { collaboratorListTracking } = trackingProps;\n let listContent = null;\n\n if (collaboratorsList) {\n const { collaborators } = collaboratorsList;\n\n listContent = (\n <CollaboratorList\n itemName={name}\n itemType={type}\n onDoneClick={this.closeCollaboratorList}\n item={item}\n collaborators={collaborators}\n trackingProps={collaboratorListTracking}\n />\n );\n }\n\n return listContent;\n }\n\n render() {\n // Shared link section props\n const {\n allShareRestrictionWarning,\n changeSharedLinkAccessLevel,\n createSharedLinkOnLoad,\n changeSharedLinkPermissionLevel,\n config,\n displayInModal,\n focusSharedLinkOnLoad,\n getSharedLinkContacts,\n getContactAvatarUrl,\n intl,\n isAllowEditSharedLinkForFileEnabled,\n isFetching,\n item,\n onAddLink,\n onCopyError,\n onCopyInit,\n onCopySuccess,\n onDismissTooltip = () => {},\n onSettingsClick,\n sendSharedLinkError,\n sharedLink,\n sharedLinkEditTagTargetingApi,\n sharedLinkEditTooltipTargetingApi,\n showEnterEmailsCallout = false,\n showSharedLinkSettingsCallout = false,\n submitting,\n tooltips = {},\n trackingProps,\n } = this.props;\n const { sharedLinkTracking, sharedLinkEmailTracking } = trackingProps;\n const { isEmailLinkSectionExpanded, isInviteSectionExpanded, showCollaboratorList } = this.state;\n\n // Only show the restriction warning on the main page of the USM where the email and share link option is available\n const showShareRestrictionWarning =\n !isEmailLinkSectionExpanded &&\n !isInviteSectionExpanded &&\n !showCollaboratorList &&\n allShareRestrictionWarning;\n\n return (\n <div className={displayInModal ? '' : 'be bdl-UnifiedShareForm'}>\n <LoadingIndicatorWrapper isLoading={isFetching} hideContent>\n {showShareRestrictionWarning && allShareRestrictionWarning}\n\n {!isEmailLinkSectionExpanded && !showCollaboratorList && this.renderInviteSection()}\n\n {!isEmailLinkSectionExpanded && !isInviteSectionExpanded && !showCollaboratorList && (\n <SharedLinkSection\n addSharedLink={onAddLink}\n autofocusSharedLink={this.shouldAutoFocusSharedLink()}\n autoCreateSharedLink={createSharedLinkOnLoad}\n config={config}\n triggerCopyOnLoad={createSharedLinkOnLoad && focusSharedLinkOnLoad}\n changeSharedLinkAccessLevel={changeSharedLinkAccessLevel}\n changeSharedLinkPermissionLevel={changeSharedLinkPermissionLevel}\n intl={intl}\n isAllowEditSharedLinkForFileEnabled={isAllowEditSharedLinkForFileEnabled}\n item={item}\n itemType={item.type}\n onDismissTooltip={onDismissTooltip}\n onEmailSharedLinkClick={this.openEmailSharedLinkForm}\n onSettingsClick={onSettingsClick}\n onToggleSharedLink={this.onToggleSharedLink}\n onCopyInit={onCopyInit}\n onCopySuccess={onCopySuccess}\n onCopyError={onCopyError}\n sharedLink={sharedLink}\n sharedLinkEditTagTargetingApi={sharedLinkEditTagTargetingApi}\n sharedLinkEditTooltipTargetingApi={sharedLinkEditTooltipTargetingApi}\n showSharedLinkSettingsCallout={showSharedLinkSettingsCallout}\n submitting={submitting || isFetching}\n trackingProps={sharedLinkTracking}\n tooltips={tooltips}\n />\n )}\n\n {isEmailLinkSectionExpanded && !showCollaboratorList && (\n <EmailForm\n contactsFieldLabel={<FormattedMessage {...messages.sendSharedLinkFieldLabel} />}\n getContactAvatarUrl={getContactAvatarUrl}\n getContacts={getSharedLinkContacts}\n inlineNotice={{\n type: 'error',\n content: sendSharedLinkError,\n }}\n isContactsFieldEnabled\n isExpanded\n isExternalUserSelected={this.hasExternalContact(EMAIL_SHARED_LINK_CONTACTS_TYPE)}\n onPillCreate={this.handleEmailSharedLinkPillCreate}\n onRequestClose={this.closeEmailSharedLinkForm}\n onSubmit={this.handleSendSharedLink}\n showEnterEmailsCallout={showEnterEmailsCallout}\n submitting={submitting}\n selectedContacts={this.state.emailSharedLinkContacts}\n updateSelectedContacts={this.updateEmailSharedLinkContacts}\n {...sharedLinkEmailTracking}\n />\n )}\n {showCollaboratorList && this.renderCollaboratorList()}\n </LoadingIndicatorWrapper>\n </div>\n );\n }\n}\n\nexport { UnifiedShareForm as UnifiedShareFormBase };\nexport default injectIntl(UnifiedShareForm);\n"],"file":"UnifiedShareForm.js"}
1
+ {"version":3,"sources":["../../../src/features/unified-share-modal/UnifiedShareForm.js"],"names":["React","isEmpty","isEqual","FormattedMessage","injectIntl","FormattedCompMessage","LoadingIndicatorWrapper","Link","Button","UpgradeBadge","InlineNotice","PlainButton","ITEM_TYPE_WEBLINK","Tooltip","CollaboratorAvatars","CollaboratorList","InviteePermissionsMenu","messages","SharedLinkSection","EmailForm","getDefaultPermissionLevel","hasRestrictedExternalContacts","mergeContacts","JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB","SHARED_LINKS_COMMUNITY_URL","INVITE_COLLABS_CONTACTS_TYPE","EMAIL_SHARED_LINK_CONTACTS_TYPE","UnifiedShareForm","props","item","checkpoint","justificationReasons","state","getJustificationReasons","hasJustificationReasons","length","Promise","resolve","setState","isFetchingJustificationReasons","typedID","then","classificationLabelId","options","map","id","title","displayText","value","finally","inviteCollabsContacts","isCollabRestrictionJustificationAllowed","restrictedExternalCollabEmails","hasRestrictedExternalCollabs","pills","onPillCreate","event","target","handleFtuxCloseClick","onAddLink","openConfirmModal","shouldRenderFTUXTooltip","trackingProps","sharedLinkTracking","onToggleLink","type","checked","showCollaboratorList","data","inviteePermissions","sendInvites","inviteCollabsEmailTracking","onSendClick","inviteePermissionLevel","defaultPermissionLevel","selectedPermissionLevel","emails","groupIDs","justificationReason","message","restrictedExternalEmails","params","join","emailMessage","permission","numsOfInvitees","numOfInviteeGroups","hasJustificationReason","hasRestrictedExternalInvitees","shouldSubmitJustificationReason","sendSharedLink","sharedLink","sharedLinkEmailTracking","permissionLevel","numsOfRecipients","numOfRecipientGroups","inviteCollabTracking","onInviteePermissionChange","selectOptionPills","filter","pill","getContactsByEmail","contacts","prevState","emailSharedLinkContacts","isInviteSectionExpanded","onEnterInviteCollabs","isEmailLinkSectionExpanded","some","contact","isExternalUser","currentInviteCollabsContacts","newInviteCollabsContacts","hasRestrictedExternalCollabsAfterUpdate","onRemoveAllRestrictedExternalCollabs","setUpdatedContacts","isRemovingAllRestrictedExternalCollabs","focusSharedLinkOnLoad","sharedLinkLoaded","createSharedLinkOnLoad","isNewSharedLink","initiallySelectedContacts","prevProps","prevRestrictedExternalCollabEmails","prevIsCollabRestrictionJustificationAllowed","didExternalCollabRestrictionsChange","shouldRequireExternalCollabJustification","fetchJustificationReasons","canInvite","collaborationRestrictionWarning","config","contactLimit","getCollaboratorContacts","getContactAvatarUrl","recommendedSharingTooltipCalloutName","sendInvitesError","showEnterEmailsCallout","showCalloutForUser","showUpgradeInlineNotice","showUpgradeOptions","submitting","suggestedCollaborators","modalTracking","contactsFieldDisabledTooltip","inviteDisabledWeblinkTooltip","inviteDisabledTooltip","inlineNotice","content","avatars","renderCollaboratorAvatars","ftuxConfirmButtonProps","ftuxTooltipText","ftuxNewUSMUserTitle","ftuxNewUSMUserBody","ftuxLinkText","ftuxConfirmLabel","ftuxTooltipProps","className","isShown","position","showCloseButton","text","theme","inviteFieldLabel","hasExternalContact","openInviteCollaborators","handleInviteCollabPillCreate","closeInviteCollaborators","handleSendInvites","openInviteCollaboratorsSection","updateInviteCollabsContacts","renderInviteePermissionsDropdown","renderUpgradeLinkDescription","collaboratorsList","currentUserID","avatarsContent","collaborators","hideCollaborators","canShowCollaboratorAvatars","collaborator","String","userID","collaboratorAvatarsProps","resinTarget","openUpgradePlanModal","upgradeLink","showNewUpgradeText","upgradeLinkProps","renderCollaboratorMessage","upgradeGetMoreAccessControlsLink","upgradeGetMoreAccessControlsDescription","upgradeInlineNoticeTitle","inviteePermissionsButtonProps","handleInviteePermissionChange","name","collaboratorListTracking","listContent","closeCollaboratorList","allShareRestrictionWarning","changeSharedLinkAccessLevel","changeSharedLinkPermissionLevel","displayInModal","getSharedLinkContacts","intl","isAllowEditSharedLinkForFileEnabled","isFetching","onCopyError","onCopyInit","onCopySuccess","onDismissTooltip","onSettingsClick","sendSharedLinkError","sharedLinkEditTagTargetingApi","sharedLinkEditTooltipTargetingApi","showSharedLinkSettingsCallout","tooltips","showShareRestrictionWarning","renderUpgradeInlineNotice","renderInviteSection","shouldAutoFocusSharedLink","openEmailSharedLinkForm","onToggleSharedLink","sendSharedLinkFieldLabel","handleEmailSharedLinkPillCreate","closeEmailSharedLinkForm","handleSendSharedLink","updateEmailSharedLinkContacts","renderCollaboratorList","Component","removeLinkConfirmModalTracking","UnifiedShareFormBase"],"mappings":"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","sourcesContent":["// @flow\n\nimport * as React from 'react';\nimport isEmpty from 'lodash/isEmpty';\nimport isEqual from 'lodash/isEqual';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nimport FormattedCompMessage from '../../components/i18n/FormattedCompMessage';\nimport LoadingIndicatorWrapper from '../../components/loading-indicator/LoadingIndicatorWrapper';\nimport { Link } from '../../components/link';\nimport Button from '../../components/button';\nimport { UpgradeBadge } from '../../components/badge';\nimport InlineNotice from '../../components/inline-notice';\nimport PlainButton from '../../components/plain-button';\nimport { ITEM_TYPE_WEBLINK } from '../../common/constants';\nimport Tooltip from '../../components/tooltip';\nimport { CollaboratorAvatars, CollaboratorList } from '../collaborator-avatars';\n\nimport InviteePermissionsMenu from './InviteePermissionsMenu';\nimport messages from './messages';\nimport SharedLinkSection from './SharedLinkSection';\nimport EmailForm from './EmailForm';\nimport getDefaultPermissionLevel from './utils/defaultPermissionLevel';\nimport hasRestrictedExternalContacts from './utils/hasRestrictedExternalContacts';\nimport mergeContacts from './utils/mergeContacts';\nimport { JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB } from './constants';\n\nimport type {\n contactType as Contact,\n getJustificationReasonsResponseType as GetJustificationReasonsResponse,\n item as Item,\n justificationCheckpointType as JustificationCheckpoint,\n USFProps,\n} from './flowTypes';\nimport type { SelectOptionProp } from '../../components/select-field/props';\n\nconst SHARED_LINKS_COMMUNITY_URL = 'https://community.box.com/t5/Using-Shared-Links/Creating-Shared-Links/ta-p/19523';\nconst INVITE_COLLABS_CONTACTS_TYPE = 'inviteCollabsContacts';\nconst EMAIL_SHARED_LINK_CONTACTS_TYPE = 'emailSharedLinkContacts';\n\ntype State = {\n classificationLabelId: string,\n emailSharedLinkContacts: Array<Contact>,\n inviteCollabsContacts: Array<Contact>,\n inviteePermissionLevel: string,\n isEmailLinkSectionExpanded: boolean,\n isFetchingJustificationReasons: boolean,\n isInviteSectionExpanded: boolean,\n justificationReasons: Array<SelectOptionProp>,\n showCollaboratorList: boolean,\n};\n\nclass UnifiedShareForm extends React.Component<USFProps, State> {\n static defaultProps = {\n displayInModal: true,\n initiallySelectedContacts: [],\n createSharedLinkOnLoad: false,\n focusSharedLinkOnLoad: false,\n restrictedExternalCollabEmails: [],\n trackingProps: {\n collaboratorListTracking: {},\n inviteCollabsEmailTracking: {},\n inviteCollabTracking: {},\n modalTracking: {},\n removeLinkConfirmModalTracking: {},\n sharedLinkEmailTracking: {},\n sharedLinkTracking: {},\n },\n };\n\n constructor(props: USFProps) {\n super(props);\n\n this.state = {\n classificationLabelId: '',\n emailSharedLinkContacts: [],\n inviteCollabsContacts: props.initiallySelectedContacts,\n inviteePermissionLevel: '',\n isEmailLinkSectionExpanded: false,\n isFetchingJustificationReasons: false,\n isInviteSectionExpanded: !!props.initiallySelectedContacts.length,\n justificationReasons: [],\n showCollaboratorList: false,\n };\n }\n\n componentDidUpdate(prevProps: USFProps) {\n const { isCollabRestrictionJustificationAllowed, item, restrictedExternalCollabEmails } = this.props;\n const {\n restrictedExternalCollabEmails: prevRestrictedExternalCollabEmails,\n isCollabRestrictionJustificationAllowed: prevIsCollabRestrictionJustificationAllowed,\n } = prevProps;\n\n const didExternalCollabRestrictionsChange =\n !isEqual(restrictedExternalCollabEmails, prevRestrictedExternalCollabEmails) ||\n isCollabRestrictionJustificationAllowed !== prevIsCollabRestrictionJustificationAllowed;\n\n if (didExternalCollabRestrictionsChange && this.shouldRequireExternalCollabJustification()) {\n this.fetchJustificationReasons(item, JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB);\n }\n }\n\n fetchJustificationReasons = (item: Item, checkpoint: JustificationCheckpoint) => {\n const { justificationReasons } = this.state;\n const { getJustificationReasons } = this.props;\n const hasJustificationReasons = !!justificationReasons.length;\n\n if (!getJustificationReasons || hasJustificationReasons) {\n return Promise.resolve();\n }\n this.setState({ isFetchingJustificationReasons: true });\n\n return getJustificationReasons(item.typedID, checkpoint)\n .then(({ classificationLabelId, options }: GetJustificationReasonsResponse) => {\n this.setState({\n classificationLabelId,\n justificationReasons: options.map(({ id, title }) => ({\n displayText: title,\n value: id,\n })),\n });\n })\n .finally(() => {\n this.setState({ isFetchingJustificationReasons: false });\n });\n };\n\n shouldRequireExternalCollabJustification = () => {\n const { inviteCollabsContacts } = this.state;\n const { isCollabRestrictionJustificationAllowed, restrictedExternalCollabEmails } = this.props;\n\n const hasRestrictedExternalCollabs = hasRestrictedExternalContacts(\n inviteCollabsContacts,\n restrictedExternalCollabEmails,\n );\n return hasRestrictedExternalCollabs && isCollabRestrictionJustificationAllowed;\n };\n\n handleInviteCollabPillCreate = (pills: Array<SelectOptionProp | Contact>) => {\n return this.onPillCreate(INVITE_COLLABS_CONTACTS_TYPE, pills);\n };\n\n handleEmailSharedLinkPillCreate = (pills: Array<SelectOptionProp | Contact>) => {\n return this.onPillCreate(EMAIL_SHARED_LINK_CONTACTS_TYPE, pills);\n };\n\n onToggleSharedLink = (event: SyntheticInputEvent<HTMLInputElement>) => {\n const { target } = event;\n const {\n handleFtuxCloseClick,\n onAddLink,\n openConfirmModal,\n shouldRenderFTUXTooltip,\n trackingProps,\n } = this.props;\n const { sharedLinkTracking } = trackingProps;\n const { onToggleLink } = sharedLinkTracking;\n\n if (shouldRenderFTUXTooltip) {\n handleFtuxCloseClick();\n }\n\n if (target.type === 'checkbox') {\n if (target.checked === false) {\n openConfirmModal();\n } else {\n onAddLink();\n }\n\n if (onToggleLink) {\n onToggleLink(target.checked);\n }\n }\n };\n\n showCollaboratorList = () => {\n this.setState({ showCollaboratorList: true });\n };\n\n closeCollaboratorList = () => {\n this.setState({ showCollaboratorList: false });\n };\n\n handleSendInvites = (data: Object) => {\n const { inviteePermissions, isCollabRestrictionJustificationAllowed, sendInvites, trackingProps } = this.props;\n const { inviteCollabsEmailTracking } = trackingProps;\n const { onSendClick } = inviteCollabsEmailTracking;\n const { classificationLabelId, inviteePermissionLevel } = this.state;\n const defaultPermissionLevel = getDefaultPermissionLevel(inviteePermissions);\n const selectedPermissionLevel = inviteePermissionLevel || defaultPermissionLevel;\n const { emails, groupIDs, justificationReason, message, restrictedExternalEmails } = data;\n\n let params = {\n emails: emails.join(','),\n groupIDs: groupIDs.join(','),\n emailMessage: message,\n permission: selectedPermissionLevel,\n numsOfInvitees: emails.length,\n numOfInviteeGroups: groupIDs.length,\n };\n\n const hasJustificationReason = !!justificationReason;\n const hasRestrictedExternalInvitees = !isEmpty(restrictedExternalEmails);\n const shouldSubmitJustificationReason =\n hasJustificationReason && hasRestrictedExternalInvitees && isCollabRestrictionJustificationAllowed;\n\n if (shouldSubmitJustificationReason) {\n params = {\n ...params,\n classificationLabelId,\n justificationReason: {\n id: justificationReason.value,\n title: justificationReason.displayText,\n },\n };\n }\n\n if (onSendClick) {\n onSendClick(params);\n }\n\n return sendInvites(params);\n };\n\n handleSendSharedLink = (data: Object) => {\n const { sendSharedLink, sharedLink, trackingProps } = this.props;\n const { sharedLinkEmailTracking } = trackingProps;\n const { permissionLevel } = sharedLink;\n const { onSendClick } = sharedLinkEmailTracking;\n\n const { emails, groupIDs } = data;\n\n if (onSendClick) {\n const params = {\n ...data,\n numsOfRecipients: emails.length,\n numOfRecipientGroups: groupIDs.length,\n permissionLevel,\n };\n onSendClick(params);\n }\n\n return sendSharedLink(data);\n };\n\n // TODO-AH: Change permission level to use the appropriate flow type\n handleInviteePermissionChange = (permissionLevel: string) => {\n const { trackingProps } = this.props;\n const { inviteCollabTracking } = trackingProps;\n const { onInviteePermissionChange } = inviteCollabTracking;\n\n this.setState({ inviteePermissionLevel: permissionLevel });\n\n if (onInviteePermissionChange) {\n onInviteePermissionChange(permissionLevel);\n }\n };\n\n onPillCreate = (type: string, pills: Array<SelectOptionProp | Contact>) => {\n // If this is a dropdown select event, we ignore it\n // $FlowFixMe\n const selectOptionPills = pills.filter(pill => !pill.id);\n if (selectOptionPills.length === 0) {\n return;\n }\n\n const { getContactsByEmail } = this.props;\n\n if (getContactsByEmail) {\n const emails = pills.map(pill => pill.value);\n // $FlowFixMe\n getContactsByEmail({ emails }).then((contacts: Object) => {\n if (type === INVITE_COLLABS_CONTACTS_TYPE) {\n this.setState(prevState => ({\n inviteCollabsContacts: mergeContacts(prevState.inviteCollabsContacts, contacts),\n }));\n } else if (type === EMAIL_SHARED_LINK_CONTACTS_TYPE) {\n this.setState(prevState => ({\n emailSharedLinkContacts: mergeContacts(prevState.emailSharedLinkContacts, contacts),\n }));\n }\n });\n }\n };\n\n openInviteCollaborators = (value: string) => {\n const { handleFtuxCloseClick } = this.props;\n if (this.state.isInviteSectionExpanded) {\n return;\n }\n\n // checking the value because IE seems to trigger onInput immediately\n // on focus of the contacts field\n if (value !== '') {\n handleFtuxCloseClick();\n this.setState(\n {\n isInviteSectionExpanded: true,\n },\n () => {\n const {\n trackingProps: {\n inviteCollabTracking: { onEnterInviteCollabs },\n },\n } = this.props;\n\n if (onEnterInviteCollabs) {\n onEnterInviteCollabs();\n }\n },\n );\n }\n };\n\n openInviteCollaboratorsSection = () => {\n this.setState({\n isInviteSectionExpanded: true,\n });\n };\n\n closeInviteCollaborators = () => {\n this.setState({\n isInviteSectionExpanded: false,\n });\n };\n\n openEmailSharedLinkForm = () => {\n const { handleFtuxCloseClick } = this.props;\n handleFtuxCloseClick();\n this.setState({\n isEmailLinkSectionExpanded: true,\n });\n };\n\n closeEmailSharedLinkForm = () => {\n this.setState({ isEmailLinkSectionExpanded: false });\n };\n\n hasExternalContact = (type: string): boolean => {\n const { inviteCollabsContacts, emailSharedLinkContacts } = this.state;\n if (type === INVITE_COLLABS_CONTACTS_TYPE) {\n return inviteCollabsContacts.some(contact => contact.isExternalUser);\n }\n if (type === EMAIL_SHARED_LINK_CONTACTS_TYPE) {\n return emailSharedLinkContacts.some(contact => contact.isExternalUser);\n }\n return false;\n };\n\n isRemovingAllRestrictedExternalCollabs = (\n currentInviteCollabsContacts: Array<Contact>,\n newInviteCollabsContacts: Array<Contact>,\n ) => {\n const { restrictedExternalCollabEmails } = this.props;\n\n const hasRestrictedExternalCollabs = hasRestrictedExternalContacts(\n currentInviteCollabsContacts,\n restrictedExternalCollabEmails,\n );\n const hasRestrictedExternalCollabsAfterUpdate = hasRestrictedExternalContacts(\n newInviteCollabsContacts,\n restrictedExternalCollabEmails,\n );\n\n return hasRestrictedExternalCollabs && !hasRestrictedExternalCollabsAfterUpdate;\n };\n\n updateInviteCollabsContacts = (inviteCollabsContacts: Array<Contact>) => {\n const { inviteCollabsContacts: currentInviteCollabsContacts } = this.state;\n const { onRemoveAllRestrictedExternalCollabs, setUpdatedContacts } = this.props;\n\n const isRemovingAllRestrictedExternalCollabs = this.isRemovingAllRestrictedExternalCollabs(\n currentInviteCollabsContacts,\n inviteCollabsContacts,\n );\n\n this.setState({\n inviteCollabsContacts,\n });\n\n if (setUpdatedContacts) {\n setUpdatedContacts(inviteCollabsContacts);\n }\n if (onRemoveAllRestrictedExternalCollabs && isRemovingAllRestrictedExternalCollabs) {\n onRemoveAllRestrictedExternalCollabs();\n }\n };\n\n updateEmailSharedLinkContacts = (emailSharedLinkContacts: Array<Contact>) => {\n this.setState({\n emailSharedLinkContacts,\n });\n };\n\n shouldAutoFocusSharedLink = () => {\n const { focusSharedLinkOnLoad, sharedLink, sharedLinkLoaded, createSharedLinkOnLoad } = this.props;\n\n if (!createSharedLinkOnLoad && !focusSharedLinkOnLoad) {\n return false;\n }\n // if not forcing focus or not a newly added shared link, return false\n if (!(focusSharedLinkOnLoad || sharedLink.isNewSharedLink)) {\n return false;\n }\n // otherwise wait until the link data is loaded before focusing\n if (!sharedLinkLoaded) {\n return false;\n }\n return true;\n };\n\n renderInviteSection() {\n const {\n canInvite,\n collaborationRestrictionWarning,\n config,\n contactLimit,\n getCollaboratorContacts,\n getContactAvatarUrl,\n handleFtuxCloseClick,\n item,\n recommendedSharingTooltipCalloutName = null,\n restrictedExternalCollabEmails,\n sendInvitesError,\n shouldRenderFTUXTooltip,\n showEnterEmailsCallout = false,\n showCalloutForUser = false,\n showUpgradeInlineNotice = false,\n showUpgradeOptions,\n submitting,\n suggestedCollaborators,\n trackingProps,\n } = this.props;\n const { type } = item;\n const { isFetchingJustificationReasons, isInviteSectionExpanded, justificationReasons } = this.state;\n const { inviteCollabsEmailTracking, modalTracking } = trackingProps;\n const contactsFieldDisabledTooltip =\n type === ITEM_TYPE_WEBLINK ? (\n <FormattedMessage {...messages.inviteDisabledWeblinkTooltip} />\n ) : (\n <FormattedMessage {...messages.inviteDisabledTooltip} />\n );\n const inlineNotice = sendInvitesError\n ? {\n type: 'error',\n content: sendInvitesError,\n }\n : {\n type: 'warning',\n content: collaborationRestrictionWarning,\n };\n const avatars = this.renderCollaboratorAvatars();\n const { ftuxConfirmButtonProps } = modalTracking;\n const ftuxTooltipText = (\n <div>\n <h4 className=\"ftux-tooltip-title\">\n <FormattedMessage {...messages.ftuxNewUSMUserTitle} />\n </h4>\n <p className=\"ftux-tooltip-body\">\n <FormattedMessage {...messages.ftuxNewUSMUserBody} />{' '}\n <Link className=\"ftux-tooltip-link\" href={SHARED_LINKS_COMMUNITY_URL} target=\"_blank\">\n <FormattedMessage {...messages.ftuxLinkText} />\n </Link>\n </p>\n <div className=\"ftux-tooltip-controls\">\n <Button className=\"ftux-tooltip-button\" onClick={handleFtuxCloseClick} {...ftuxConfirmButtonProps}>\n <FormattedMessage {...messages.ftuxConfirmLabel} />\n </Button>\n </div>\n </div>\n );\n const ftuxTooltipProps = {\n className: 'usm-ftux-tooltip',\n // don't want ftux tooltip to show if the recommended sharing tooltip callout is showing\n isShown: !recommendedSharingTooltipCalloutName && shouldRenderFTUXTooltip && showCalloutForUser,\n position: 'middle-left',\n showCloseButton: true,\n text: ftuxTooltipText,\n theme: 'callout',\n };\n\n return (\n <>\n <Tooltip {...ftuxTooltipProps}>\n <div className=\"invite-collaborator-container\" data-testid=\"invite-collaborator-container\">\n <EmailForm\n config={config}\n contactLimit={contactLimit}\n contactsFieldAvatars={avatars}\n contactsFieldDisabledTooltip={contactsFieldDisabledTooltip}\n contactsFieldLabel={<FormattedMessage {...messages.inviteFieldLabel} />}\n getContacts={getCollaboratorContacts}\n getContactAvatarUrl={getContactAvatarUrl}\n inlineNotice={inlineNotice}\n isContactsFieldEnabled={canInvite}\n isExpanded={isInviteSectionExpanded}\n isFetchingJustificationReasons={isFetchingJustificationReasons}\n isExternalUserSelected={this.hasExternalContact(INVITE_COLLABS_CONTACTS_TYPE)}\n isRestrictionJustificationEnabled={this.shouldRequireExternalCollabJustification()}\n justificationReasons={justificationReasons}\n onContactInput={this.openInviteCollaborators}\n onPillCreate={this.handleInviteCollabPillCreate}\n onRequestClose={this.closeInviteCollaborators}\n onSubmit={this.handleSendInvites}\n openInviteCollaboratorsSection={this.openInviteCollaboratorsSection}\n recommendedSharingTooltipCalloutName={recommendedSharingTooltipCalloutName}\n restrictedExternalEmails={restrictedExternalCollabEmails}\n showEnterEmailsCallout={showEnterEmailsCallout}\n submitting={submitting}\n selectedContacts={this.state.inviteCollabsContacts}\n suggestedCollaborators={suggestedCollaborators}\n updateSelectedContacts={this.updateInviteCollabsContacts}\n {...inviteCollabsEmailTracking}\n >\n {this.renderInviteePermissionsDropdown()}\n {showUpgradeOptions && !showUpgradeInlineNotice && this.renderUpgradeLinkDescription()}\n </EmailForm>\n </div>\n </Tooltip>\n </>\n );\n }\n\n renderCollaboratorAvatars() {\n const { collaboratorsList, canInvite, currentUserID, item, trackingProps } = this.props;\n const { modalTracking } = trackingProps;\n let avatarsContent = null;\n\n if (collaboratorsList) {\n const { collaborators } = collaboratorsList;\n const { hideCollaborators = true } = item;\n const canShowCollaboratorAvatars = hideCollaborators ? canInvite : true;\n\n // filter out the current user by comparing to the ItemCollabRecord ID field\n avatarsContent = canShowCollaboratorAvatars && (\n <CollaboratorAvatars\n collaborators={collaborators.filter(collaborator => String(collaborator.userID) !== currentUserID)}\n onClick={this.showCollaboratorList}\n containerAttributes={modalTracking.collaboratorAvatarsProps}\n />\n );\n }\n\n return avatarsContent;\n }\n\n renderCollaboratorMessage(resinTarget: string) {\n const { openUpgradePlanModal = () => {} } = this.props;\n return (\n <>\n <FormattedCompMessage\n id=\"boxui.unifiedShare.upgradeCollaboratorAccessDescription\"\n description=\"Description for cta to upgrade to get collaborator access controls\"\n >\n Set the level of{' '}\n <Link\n className=\"upgrade-link\"\n href=\"https://support.box.com/hc/en-us/articles/360044196413-Understanding-Collaborator-Permission-Levels\"\n target=\"_blank\"\n >\n collaborator access\n </Link>{' '}\n and increase security through one of our paid plans.{' '}\n </FormattedCompMessage>\n <PlainButton\n className=\"upgrade-link\"\n data-resin-target={resinTarget}\n onClick={openUpgradePlanModal}\n type=\"button\"\n >\n <FormattedMessage {...messages.upgradeLink} />\n </PlainButton>\n </>\n );\n }\n\n renderUpgradeLinkDescription() {\n const { openUpgradePlanModal = () => {}, showNewUpgradeText = false, trackingProps = {} } = this.props;\n const { inviteCollabsEmailTracking = {} } = trackingProps;\n const { upgradeLinkProps = {} } = inviteCollabsEmailTracking;\n\n return (\n <div className=\"upgrade-description\">\n <UpgradeBadge />\n {showNewUpgradeText ? (\n this.renderCollaboratorMessage('external_collab_newcopy_upgrade_cta')\n ) : (\n <FormattedMessage\n values={{\n upgradeGetMoreAccessControlsLink: (\n <PlainButton\n className=\"upgrade-link\"\n onClick={openUpgradePlanModal}\n type=\"button\"\n {...upgradeLinkProps}\n >\n <FormattedMessage {...messages.upgradeGetMoreAccessControlsLink} />\n </PlainButton>\n ),\n }}\n {...messages.upgradeGetMoreAccessControlsDescription}\n />\n )}\n </div>\n );\n }\n\n renderUpgradeInlineNotice() {\n return (\n <InlineNotice title={<FormattedMessage {...messages.upgradeInlineNoticeTitle} />} type=\"info\">\n {this.renderCollaboratorMessage('external_collab_top_message_upgrade_cta')}\n </InlineNotice>\n );\n }\n\n renderInviteePermissionsDropdown() {\n const { inviteePermissions, item, submitting, canInvite, trackingProps } = this.props;\n const { type } = item;\n const { inviteCollabTracking } = trackingProps;\n\n return (\n inviteePermissions && (\n <InviteePermissionsMenu\n disabled={!canInvite || submitting}\n inviteePermissionsButtonProps={inviteCollabTracking.inviteePermissionsButtonProps}\n inviteePermissionLevel={this.state.inviteePermissionLevel}\n inviteePermissions={inviteePermissions}\n changeInviteePermissionLevel={this.handleInviteePermissionChange}\n itemType={type}\n />\n )\n );\n }\n\n renderCollaboratorList() {\n const { item, collaboratorsList, trackingProps } = this.props;\n const { name, type } = item;\n const { collaboratorListTracking } = trackingProps;\n let listContent = null;\n\n if (collaboratorsList) {\n const { collaborators } = collaboratorsList;\n\n listContent = (\n <CollaboratorList\n itemName={name}\n itemType={type}\n onDoneClick={this.closeCollaboratorList}\n item={item}\n collaborators={collaborators}\n trackingProps={collaboratorListTracking}\n />\n );\n }\n\n return listContent;\n }\n\n render() {\n // Shared link section props\n const {\n allShareRestrictionWarning,\n changeSharedLinkAccessLevel,\n createSharedLinkOnLoad,\n changeSharedLinkPermissionLevel,\n config,\n displayInModal,\n focusSharedLinkOnLoad,\n getSharedLinkContacts,\n getContactAvatarUrl,\n intl,\n isAllowEditSharedLinkForFileEnabled,\n isFetching,\n item,\n onAddLink,\n onCopyError,\n onCopyInit,\n onCopySuccess,\n onDismissTooltip = () => {},\n onSettingsClick,\n sendSharedLinkError,\n sharedLink,\n sharedLinkEditTagTargetingApi,\n sharedLinkEditTooltipTargetingApi,\n showEnterEmailsCallout = false,\n showSharedLinkSettingsCallout = false,\n showUpgradeInlineNotice = false,\n showUpgradeOptions,\n submitting,\n tooltips = {},\n trackingProps,\n } = this.props;\n const { sharedLinkTracking, sharedLinkEmailTracking } = trackingProps;\n const { isEmailLinkSectionExpanded, isInviteSectionExpanded, showCollaboratorList } = this.state;\n\n // Only show the restriction warning on the main page of the USM where the email and share link option is available\n const showShareRestrictionWarning =\n !isEmailLinkSectionExpanded &&\n !isInviteSectionExpanded &&\n !showCollaboratorList &&\n allShareRestrictionWarning;\n\n return (\n <div className={displayInModal ? '' : 'be bdl-UnifiedShareForm'}>\n <LoadingIndicatorWrapper isLoading={isFetching} hideContent>\n {showShareRestrictionWarning && allShareRestrictionWarning}\n {showUpgradeOptions && showUpgradeInlineNotice && this.renderUpgradeInlineNotice()}\n\n {!isEmailLinkSectionExpanded && !showCollaboratorList && this.renderInviteSection()}\n\n {!isEmailLinkSectionExpanded && !isInviteSectionExpanded && !showCollaboratorList && (\n <SharedLinkSection\n addSharedLink={onAddLink}\n autofocusSharedLink={this.shouldAutoFocusSharedLink()}\n autoCreateSharedLink={createSharedLinkOnLoad}\n config={config}\n triggerCopyOnLoad={createSharedLinkOnLoad && focusSharedLinkOnLoad}\n changeSharedLinkAccessLevel={changeSharedLinkAccessLevel}\n changeSharedLinkPermissionLevel={changeSharedLinkPermissionLevel}\n intl={intl}\n isAllowEditSharedLinkForFileEnabled={isAllowEditSharedLinkForFileEnabled}\n item={item}\n itemType={item.type}\n onDismissTooltip={onDismissTooltip}\n onEmailSharedLinkClick={this.openEmailSharedLinkForm}\n onSettingsClick={onSettingsClick}\n onToggleSharedLink={this.onToggleSharedLink}\n onCopyInit={onCopyInit}\n onCopySuccess={onCopySuccess}\n onCopyError={onCopyError}\n sharedLink={sharedLink}\n sharedLinkEditTagTargetingApi={sharedLinkEditTagTargetingApi}\n sharedLinkEditTooltipTargetingApi={sharedLinkEditTooltipTargetingApi}\n showSharedLinkSettingsCallout={showSharedLinkSettingsCallout}\n submitting={submitting || isFetching}\n trackingProps={sharedLinkTracking}\n tooltips={tooltips}\n />\n )}\n\n {isEmailLinkSectionExpanded && !showCollaboratorList && (\n <EmailForm\n contactsFieldLabel={<FormattedMessage {...messages.sendSharedLinkFieldLabel} />}\n getContactAvatarUrl={getContactAvatarUrl}\n getContacts={getSharedLinkContacts}\n inlineNotice={{\n type: 'error',\n content: sendSharedLinkError,\n }}\n isContactsFieldEnabled\n isExpanded\n isExternalUserSelected={this.hasExternalContact(EMAIL_SHARED_LINK_CONTACTS_TYPE)}\n onPillCreate={this.handleEmailSharedLinkPillCreate}\n onRequestClose={this.closeEmailSharedLinkForm}\n onSubmit={this.handleSendSharedLink}\n showEnterEmailsCallout={showEnterEmailsCallout}\n submitting={submitting}\n selectedContacts={this.state.emailSharedLinkContacts}\n updateSelectedContacts={this.updateEmailSharedLinkContacts}\n {...sharedLinkEmailTracking}\n />\n )}\n {showCollaboratorList && this.renderCollaboratorList()}\n </LoadingIndicatorWrapper>\n </div>\n );\n }\n}\n\nexport { UnifiedShareForm as UnifiedShareFormBase };\nexport default injectIntl(UnifiedShareForm);\n"],"file":"UnifiedShareForm.js"}
@@ -266,6 +266,9 @@
266
266
 
267
267
  .upgrade-badge {
268
268
  margin-right: 5px;
269
+ padding: $bdl-grid-unit ($bdl-grid-unit * 2);
270
+ background-color: $bdl-grimace-20;
271
+ border-radius: 10px;
269
272
  }
270
273
 
271
274
  .upgrade-link {
@@ -383,6 +383,8 @@ export type USFProps = BaseUnifiedShareProps & {
383
383
  isFetching: boolean,
384
384
  /** Function for opening the Remove Link Confirm Modal */
385
385
  openConfirmModal: () => void,
386
+ /** Function for opening the Upgrade Plan Modal */
387
+ openUpgradePlanModal: () => void,
386
388
  /** Whether the FTUX tag should be rendered for the Can Edit option */
387
389
  sharedLinkEditTagTargetingApi?: TargetingApi,
388
390
  /** Whether the FTUX tooltip should be rendered for Editable Shared Links */
@@ -391,6 +393,10 @@ export type USFProps = BaseUnifiedShareProps & {
391
393
  sharedLinkLoaded: boolean,
392
394
  /** Whether the FTUX tooltip should be rendered */
393
395
  shouldRenderFTUXTooltip: boolean,
396
+ /** Whether the new upgrade text should be rendered */
397
+ showNewUpgradeText?: boolean,
398
+ /** Whether the upgrade inline notice should be rendered */
399
+ showUpgradeInlineNotice?: boolean,
394
400
  };
395
401
 
396
402
  export type InviteCollaboratorsRequest = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/unified-share-modal/flowTypes.js"],"names":["React","constants","accessLevelValues","ANYONE_WITH_LINK","ANYONE_IN_COMPANY","PEOPLE_IN_ITEM","permissionLevelValues","CAN_EDIT","CAN_VIEW_DOWNLOAD","CAN_VIEW_ONLY","collaboratorGroupValues","COLLAB_GROUP_TYPE","COLLAB_USER_TYPE","COLLAB_PENDING_TYPE"],"mappings":";;;;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAO,KAAKC,SAAZ,MAA2B,aAA3B;AAIA;AACA,IAAMC,iBAAiB,iEAClBD,SAAS,CAACE,gBADQ,EACW,kBADX,uCAElBF,SAAS,CAACG,iBAFQ,EAEY,mBAFZ,uCAGlBH,SAAS,CAACI,cAHQ,EAGS,gBAHT,sBAAvB;AAOA,IAAMC,qBAAqB,uEACtBL,SAAS,CAACM,QADY,EACD,UADC,0CAEtBN,SAAS,CAACO,iBAFY,EAEQ,mBAFR,0CAGtBP,SAAS,CAACQ,aAHY,EAGI,eAHJ,yBAA3B;AAOA,IAAMC,uBAAuB,uEACxBT,SAAS,CAACU,iBADc,EACM,mBADN,0CAExBV,SAAS,CAACW,gBAFc,EAEK,kBAFL,0CAGxBX,SAAS,CAACY,mBAHc,EAGQ,qBAHR,yBAA7B","sourcesContent":["// @flow\nimport * as React from 'react';\nimport * as constants from './constants';\nimport type { BoxItemPermission, ItemType } from '../../common/types/core';\nimport type { TargetingApi } from '../targeting/types';\n\n// DRY: Invert the constants so that we can construct the appropriate enum types\nconst accessLevelValues = {\n [constants.ANYONE_WITH_LINK]: 'ANYONE_WITH_LINK',\n [constants.ANYONE_IN_COMPANY]: 'ANYONE_IN_COMPANY',\n [constants.PEOPLE_IN_ITEM]: 'PEOPLE_IN_ITEM',\n};\nexport type accessLevelType = $Keys<typeof accessLevelValues>;\n\nconst permissionLevelValues = {\n [constants.CAN_EDIT]: 'CAN_EDIT',\n [constants.CAN_VIEW_DOWNLOAD]: 'CAN_VIEW_DOWNLOAD',\n [constants.CAN_VIEW_ONLY]: 'CAN_VIEW_ONLY',\n};\nexport type permissionLevelType = $Keys<typeof permissionLevelValues>;\n\nconst collaboratorGroupValues = {\n [constants.COLLAB_GROUP_TYPE]: 'COLLAB_GROUP_TYPE',\n [constants.COLLAB_USER_TYPE]: 'COLLAB_USER_TYPE',\n [constants.COLLAB_PENDING_TYPE]: 'COLLAB_PENDING_TYPE',\n};\nexport type collaboratorGroupType = $Keys<typeof collaboratorGroupValues>;\n\nexport type allowedAccessLevelsType = {\n peopleInThisItem?: boolean,\n peopleInYourCompany?: boolean,\n peopleWithTheLink?: boolean,\n};\n\nexport type accessLevelsDisabledReasonType = {\n peopleInThisItem?:\n | typeof constants.DISABLED_REASON_ACCESS_POLICY\n | typeof constants.DISABLED_REASON_MALICIOUS_CONTENT\n | null,\n peopleInYourCompany?:\n | typeof constants.DISABLED_REASON_ACCESS_POLICY\n | typeof constants.DISABLED_REASON_MALICIOUS_CONTENT\n | null,\n peopleWithTheLink?:\n | typeof constants.DISABLED_REASON_ACCESS_POLICY\n | typeof constants.DISABLED_REASON_MALICIOUS_CONTENT\n | null,\n};\n\nexport type contactType = {\n email?: string,\n id: string,\n isExternalUser?: boolean,\n name?: string,\n text?: string,\n type: string,\n value?: string,\n};\n\nexport type SuggestedCollab = contactType & {\n userScore: number,\n};\n\nexport type SuggestedCollabLookup = {\n [id: string]: SuggestedCollab,\n};\n\nexport type inviteePermissionType = {\n default: boolean,\n disabled?: boolean,\n text: string,\n value: string,\n};\n\nexport type item = {\n bannerPolicy?: {\n body: string,\n colorID?: number,\n title?: string,\n },\n canUserSeeClassification: boolean,\n classification?: string,\n description: string,\n extension: string,\n grantedPermissions: {\n itemShare: boolean,\n },\n hideCollaborators: boolean,\n id: string,\n name: string,\n ownerEmail?: string,\n ownerID?: string,\n permissions?: BoxItemPermission,\n type: ItemType,\n typedID: string,\n};\n\nexport type emailFormTrackingType = {\n cancelButtonProps?: Object,\n messageProps?: Object,\n onContactAdd?: Function,\n onContactRemove?: Function,\n onSendClick?: Function,\n};\n\nexport type sharedLinkTrackingType = {\n copyButtonProps?: Object,\n onChangeSharedLinkAccessLevel?: Function,\n onChangeSharedLinkPermissionLevel?: Function,\n onSharedLinkAccessMenuOpen?: Function,\n onSharedLinkCopy?: Function,\n onToggleLink?: Function,\n sendSharedLinkButtonProps?: Object,\n sharedLinkAccessMenuButtonProps?: Object,\n sharedLinkPermissionsMenuButtonProps?: Object,\n sharedLinkSettingsButtonProps?: Object,\n};\n\nexport type collaboratorListTrackingType = {\n doneButtonProps?: Object,\n emailProps?: Object,\n manageLinkProps?: Object,\n usernameProps?: Object,\n viewAdditionalProps?: Object,\n};\n\nexport type trackingPropsType = {\n collaboratorListTracking: collaboratorListTrackingType,\n inviteCollabTracking: {\n inviteePermissionsButtonProps?: Object,\n onEnterInviteCollabs?: Function,\n onInviteePermissionChange?: Function,\n },\n inviteCollabsEmailTracking: {\n ...emailFormTrackingType,\n upgradeLinkProps?: Object,\n },\n modalTracking: {\n collaboratorAvatarsProps?: Object,\n ftuxConfirmButtonProps?: Object,\n modalProps?: Object,\n onLoad?: Function,\n },\n removeLinkConfirmModalTracking: {\n cancelButtonProps?: Object,\n modalProps?: Object,\n okayButtonProps?: Object,\n onLoad?: Function,\n },\n sharedLinkEmailTracking: emailFormTrackingType,\n sharedLinkTracking: sharedLinkTrackingType,\n};\n\n// this type is a strict subset of the SharedLinkRecord data returned from the server\nexport type sharedLinkType = {\n accessLevel: accessLevelType,\n accessLevelsDisabledReason?: accessLevelsDisabledReasonType,\n allowedAccessLevels: allowedAccessLevelsType,\n canChangeAccessLevel: boolean,\n enterpriseName: string,\n expirationTimestamp: ?number,\n isDownloadAllowed: boolean,\n isDownloadSettingAvailable: boolean,\n isEditAllowed: boolean,\n isEditSettingAvailable: boolean,\n isNewSharedLink: boolean,\n isPreviewAllowed: boolean,\n permissionLevel: permissionLevelType,\n url: string,\n};\n\nexport type collaboratorType = {\n collabID: number,\n email?: string,\n expiration?: {\n executeAt: string,\n },\n hasCustomAvatar: boolean,\n imageURL: ?string,\n isExternalCollab?: boolean,\n name: string,\n type: collaboratorGroupType,\n userID: ?number,\n};\n\nexport type collaboratorsListType = {\n collaborators: Array<collaboratorType>,\n};\n\nexport type tooltipComponentIdentifierType =\n | 'shared-link-access-menu'\n | 'shared-link-copy-button'\n | 'shared-link-settings'\n | 'shared-link-toggle';\n\nexport type justificationCheckpointType =\n | typeof constants.JUSTIFICATION_CHECKPOINT_COLLAB\n | typeof constants.JUSTIFICATION_CHECKPOINT_CREATE_SHARED_LINK\n | typeof constants.JUSTIFICATION_CHECKPOINT_DOWNLOAD\n | typeof constants.JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB;\n\nexport type justificationReasonType = {\n description?: string,\n id: string,\n isDetailsRequired?: boolean,\n title: string,\n};\nexport type getJustificationReasonsResponseType = {\n classificationLabelId: string,\n options: Array<justificationReasonType>,\n};\n\n// Prop types used in the invite section of the Unified Share Form\ntype InviteSectionTypes = {\n /** Message warning about restrictions regarding inviting collaborators to the item */\n collaborationRestrictionWarning: React.Node,\n /** Used to limit the number of contacts that can be added in the contacts field */\n contactLimit?: number,\n /** Handler function for when the user types into invite collaborators field to fetch contacts. */\n getCollaboratorContacts: (query: string) => Promise<Array<contactType>>,\n /** Shows a callout tooltip next to the names / email addresses input field explaining pre-populated recommendation */\n recommendedSharingTooltipCalloutName: ?string,\n /**\n * Function to send collab invitations based on the given parameters object.\n * This function should return a Promise.\n */\n sendInvites: (params: Object) => Promise<Object>,\n /** Message indicating an error occurred while sending the invites. */\n sendInvitesError: React.Node,\n /** Function hoists contact data upon updates to the parent component. Only needed for suggested collabs. */\n setUpdatedContacts?: (inviteCollabsContacts: Array<contactType>) => void,\n /** Determine whether to show the First-time experience tooltip on load */\n showCalloutForUser?: boolean,\n /**\n * Flag to show link to upgrade and get more access controls.\n * Only applicable to non-file item types.\n */\n showUpgradeOptions: boolean,\n /** Data for suggested collaborators shown at bottom of input box. UI doesn't render when this has length of 0. */\n suggestedCollaborators?: SuggestedCollabLookup,\n};\n\n// Additional invite section types that related with external collab r\n// restrictions and business justifications.\ntype ExternalCollabRestrictionsTypes = {\n /** Function that fetches the array of justification reason options to display on the justification select field */\n getJustificationReasons?: (\n itemTypedID: string,\n checkpoint: justificationCheckpointType,\n ) => Promise<getJustificationReasonsResponseType>,\n /** Determines whether or not a business justification can be provided to bypass external collab restrictions */\n isCollabRestrictionJustificationAllowed?: boolean,\n /** Function that is called when all restricted external collaborators are removed from the email form */\n onRemoveAllRestrictedExternalCollabs?: () => void,\n /** An array of all the external collab email addresses that have been determined to be restriced by an access policy. */\n restrictedExternalCollabEmails: Array<string>,\n};\n\n// Prop types used in the shared link section of the Unified Share Form\n// (Note: while there is an overlap between these types and the props passed to the Shared Link Section component,\n// they are different. See the render() function of the Unified Share Form for details.)\ntype SharedLinkSectionTypes = {\n /** Handler function that changes shared link access level */\n changeSharedLinkAccessLevel: (newAccessLevel: accessLevelType) => Promise<{ accessLevel: accessLevelType }>,\n /** Handler function that changes shared link permission level */\n changeSharedLinkPermissionLevel: (\n newPermissionLevel: permissionLevelType,\n ) => Promise<{ permissionLevel: permissionLevelType }>,\n /** Whether the form should create a shared link on load */\n createSharedLinkOnLoad?: boolean,\n /** Handler function that adds the shared link */\n onAddLink: () => void,\n /** Handler for when there is an error copying to clipboard */\n onCopyError?: () => void,\n /** Handler for when we initiate copying from to clipboard */\n onCopyInit?: () => void,\n /** Handler for when successfully copying to clipboard */\n onCopySuccess?: () => void,\n /** Handler function that gets called whenever the user dismisses a tooltip on the given component identifier */\n onDismissTooltip?: (componentIdentifier: tooltipComponentIdentifierType) => void,\n /** Handler function for clicks on the settings icon. If not provided, the settings icon won't be rendered. */\n onSettingsClick?: Function,\n /** Shared link data */\n sharedLink: sharedLinkType,\n /** Shows a callout tooltip next gear icon with info about what can be customized */\n showSharedLinkSettingsCallout?: boolean,\n /** Mapping of components to the content that should be rendered in their tooltips */\n tooltips?: { [componentIdentifier: tooltipComponentIdentifierType]: React.Node },\n};\n\n// Prop types used in the collaborator avatars section of the Unified Share Form\ntype CollaboratorAvatarsTypes = {\n /** List of existing collaborators */\n collaboratorsList?: collaboratorsListType,\n /** User ID of currently logged in user */\n currentUserID: string,\n};\n\ntype EmailFormTypes = {\n /** Function to retrieve the URL for an avatar, given contact details */\n getContactAvatarUrl?: (contact: contactType) => string,\n /** Handler function for when the user types into email shared link field to fetch contacts. */\n getSharedLinkContacts: (query: string) => Promise<Array<contactType>>,\n /**\n * Function to send shared link email based on the given parameters object.\n * This function should return a Promise.\n */\n sendSharedLink: (params: Object) => Promise<Object>,\n /** Message indicating an error occurred while sending the shared link. */\n sendSharedLinkError: React.Node,\n};\n\nexport type USMConfig = {\n /** Whether the \"Email Shared Link\" button and form should be rendered in the USM/USF */\n showEmailSharedLinkForm: boolean,\n /* Whether the message section of the invite collaborator page should be rendered in the USM/USF */\n showInviteCollaboratorMessageSection: boolean,\n};\n\n// Prop types shared by both the Unified Share Modal and the Unified Share Form\ntype BaseUnifiedShareProps = CollaboratorAvatarsTypes &\n EmailFormTypes &\n ExternalCollabRestrictionsTypes &\n InviteSectionTypes &\n SharedLinkSectionTypes & {\n /** Inline message */\n allShareRestrictionWarning?: React.Node,\n /** Flag to determine whether to enable invite collaborators section */\n canInvite: boolean,\n /** Configuration object for hiding parts of the USM */\n config?: USMConfig,\n /** Whether the full USM should be rendered */\n displayInModal?: boolean,\n /** Whether the form should focus the shared link after the URL is resolved */\n focusSharedLinkOnLoad?: boolean,\n /** Handler function that gets contacts by a list of emails */\n getContactsByEmail?: ({ emails: Array<string>, itemTypedID?: string }) => Promise<Object>,\n /** Handler function for getting intial data for form */\n getInitialData: Function,\n /** An array of initially selected contacts. If none are initially selected, an empty array. */\n initiallySelectedContacts: Array<contactType>,\n /** Intl object */\n intl: any,\n /** An array of invitee permissions */\n inviteePermissions: Array<inviteePermissionType>,\n /** Item data */\n item: item,\n /** Shows a callout tooltip next to the names / email addresses input field encouraging users to fill out coworkers contact info */\n showEnterEmailsCallout?: boolean,\n /** Whether or not a request is in progress */\n submitting: boolean,\n /** Object with props and handlers for tracking interactions */\n trackingProps: trackingPropsType,\n };\n\n// Prop types for the Unified Share Modal\nexport type USMProps = BaseUnifiedShareProps & {\n /** Function for closing the Remove Link Confirm Modal */\n closeConfirmModal: () => void,\n /** Whether initial data for the USM has already been received */\n initialDataReceived: boolean,\n /** Whether the allow edit shared link for file FF is enabled */\n isAllowEditSharedLinkForFileEnabled?: boolean,\n /** Whether the USM is open */\n isOpen?: boolean,\n /** Handler function that removes the shared link, used in the Remove Link Confirm Modal */\n onRemoveLink: () => void,\n /** Handler function for when the USM is closed */\n onRequestClose?: Function,\n /** Whether the FTUX tag should be rendered for the Can Edit option */\n sharedLinkEditTagTargetingApi?: TargetingApi,\n /** Whether the FTUX tooltip should be rendered for Editable Shared Links */\n sharedLinkEditTooltipTargetingApi?: TargetingApi,\n};\n\n// Prop types for the Unified Share Form, passed from the Unified Share Modal\nexport type USFProps = BaseUnifiedShareProps & {\n /** Function for closing the FTUX tooltip */\n handleFtuxCloseClick: () => void,\n /** Whether the allow edit shared link for file FF is enabled */\n isAllowEditSharedLinkForFileEnabled: boolean,\n /** Whether the data for the USM/USF is being fetched */\n isFetching: boolean,\n /** Function for opening the Remove Link Confirm Modal */\n openConfirmModal: () => void,\n /** Whether the FTUX tag should be rendered for the Can Edit option */\n sharedLinkEditTagTargetingApi?: TargetingApi,\n /** Whether the FTUX tooltip should be rendered for Editable Shared Links */\n sharedLinkEditTooltipTargetingApi?: TargetingApi,\n /** Whether the shared link has loaded */\n sharedLinkLoaded: boolean,\n /** Whether the FTUX tooltip should be rendered */\n shouldRenderFTUXTooltip: boolean,\n};\n\nexport type InviteCollaboratorsRequest = {\n classificationLabelId?: string,\n emailMessage: string,\n emails: string,\n groupIDs: string,\n justificationReason?: justificationReasonType,\n numOfInviteeGroups: number,\n numsOfInvitees: number,\n permission: string,\n};\n"],"file":"flowTypes.js"}
1
+ {"version":3,"sources":["../../../src/features/unified-share-modal/flowTypes.js"],"names":["React","constants","accessLevelValues","ANYONE_WITH_LINK","ANYONE_IN_COMPANY","PEOPLE_IN_ITEM","permissionLevelValues","CAN_EDIT","CAN_VIEW_DOWNLOAD","CAN_VIEW_ONLY","collaboratorGroupValues","COLLAB_GROUP_TYPE","COLLAB_USER_TYPE","COLLAB_PENDING_TYPE"],"mappings":";;;;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAO,KAAKC,SAAZ,MAA2B,aAA3B;AAIA;AACA,IAAMC,iBAAiB,iEAClBD,SAAS,CAACE,gBADQ,EACW,kBADX,uCAElBF,SAAS,CAACG,iBAFQ,EAEY,mBAFZ,uCAGlBH,SAAS,CAACI,cAHQ,EAGS,gBAHT,sBAAvB;AAOA,IAAMC,qBAAqB,uEACtBL,SAAS,CAACM,QADY,EACD,UADC,0CAEtBN,SAAS,CAACO,iBAFY,EAEQ,mBAFR,0CAGtBP,SAAS,CAACQ,aAHY,EAGI,eAHJ,yBAA3B;AAOA,IAAMC,uBAAuB,uEACxBT,SAAS,CAACU,iBADc,EACM,mBADN,0CAExBV,SAAS,CAACW,gBAFc,EAEK,kBAFL,0CAGxBX,SAAS,CAACY,mBAHc,EAGQ,qBAHR,yBAA7B","sourcesContent":["// @flow\nimport * as React from 'react';\nimport * as constants from './constants';\nimport type { BoxItemPermission, ItemType } from '../../common/types/core';\nimport type { TargetingApi } from '../targeting/types';\n\n// DRY: Invert the constants so that we can construct the appropriate enum types\nconst accessLevelValues = {\n [constants.ANYONE_WITH_LINK]: 'ANYONE_WITH_LINK',\n [constants.ANYONE_IN_COMPANY]: 'ANYONE_IN_COMPANY',\n [constants.PEOPLE_IN_ITEM]: 'PEOPLE_IN_ITEM',\n};\nexport type accessLevelType = $Keys<typeof accessLevelValues>;\n\nconst permissionLevelValues = {\n [constants.CAN_EDIT]: 'CAN_EDIT',\n [constants.CAN_VIEW_DOWNLOAD]: 'CAN_VIEW_DOWNLOAD',\n [constants.CAN_VIEW_ONLY]: 'CAN_VIEW_ONLY',\n};\nexport type permissionLevelType = $Keys<typeof permissionLevelValues>;\n\nconst collaboratorGroupValues = {\n [constants.COLLAB_GROUP_TYPE]: 'COLLAB_GROUP_TYPE',\n [constants.COLLAB_USER_TYPE]: 'COLLAB_USER_TYPE',\n [constants.COLLAB_PENDING_TYPE]: 'COLLAB_PENDING_TYPE',\n};\nexport type collaboratorGroupType = $Keys<typeof collaboratorGroupValues>;\n\nexport type allowedAccessLevelsType = {\n peopleInThisItem?: boolean,\n peopleInYourCompany?: boolean,\n peopleWithTheLink?: boolean,\n};\n\nexport type accessLevelsDisabledReasonType = {\n peopleInThisItem?:\n | typeof constants.DISABLED_REASON_ACCESS_POLICY\n | typeof constants.DISABLED_REASON_MALICIOUS_CONTENT\n | null,\n peopleInYourCompany?:\n | typeof constants.DISABLED_REASON_ACCESS_POLICY\n | typeof constants.DISABLED_REASON_MALICIOUS_CONTENT\n | null,\n peopleWithTheLink?:\n | typeof constants.DISABLED_REASON_ACCESS_POLICY\n | typeof constants.DISABLED_REASON_MALICIOUS_CONTENT\n | null,\n};\n\nexport type contactType = {\n email?: string,\n id: string,\n isExternalUser?: boolean,\n name?: string,\n text?: string,\n type: string,\n value?: string,\n};\n\nexport type SuggestedCollab = contactType & {\n userScore: number,\n};\n\nexport type SuggestedCollabLookup = {\n [id: string]: SuggestedCollab,\n};\n\nexport type inviteePermissionType = {\n default: boolean,\n disabled?: boolean,\n text: string,\n value: string,\n};\n\nexport type item = {\n bannerPolicy?: {\n body: string,\n colorID?: number,\n title?: string,\n },\n canUserSeeClassification: boolean,\n classification?: string,\n description: string,\n extension: string,\n grantedPermissions: {\n itemShare: boolean,\n },\n hideCollaborators: boolean,\n id: string,\n name: string,\n ownerEmail?: string,\n ownerID?: string,\n permissions?: BoxItemPermission,\n type: ItemType,\n typedID: string,\n};\n\nexport type emailFormTrackingType = {\n cancelButtonProps?: Object,\n messageProps?: Object,\n onContactAdd?: Function,\n onContactRemove?: Function,\n onSendClick?: Function,\n};\n\nexport type sharedLinkTrackingType = {\n copyButtonProps?: Object,\n onChangeSharedLinkAccessLevel?: Function,\n onChangeSharedLinkPermissionLevel?: Function,\n onSharedLinkAccessMenuOpen?: Function,\n onSharedLinkCopy?: Function,\n onToggleLink?: Function,\n sendSharedLinkButtonProps?: Object,\n sharedLinkAccessMenuButtonProps?: Object,\n sharedLinkPermissionsMenuButtonProps?: Object,\n sharedLinkSettingsButtonProps?: Object,\n};\n\nexport type collaboratorListTrackingType = {\n doneButtonProps?: Object,\n emailProps?: Object,\n manageLinkProps?: Object,\n usernameProps?: Object,\n viewAdditionalProps?: Object,\n};\n\nexport type trackingPropsType = {\n collaboratorListTracking: collaboratorListTrackingType,\n inviteCollabTracking: {\n inviteePermissionsButtonProps?: Object,\n onEnterInviteCollabs?: Function,\n onInviteePermissionChange?: Function,\n },\n inviteCollabsEmailTracking: {\n ...emailFormTrackingType,\n upgradeLinkProps?: Object,\n },\n modalTracking: {\n collaboratorAvatarsProps?: Object,\n ftuxConfirmButtonProps?: Object,\n modalProps?: Object,\n onLoad?: Function,\n },\n removeLinkConfirmModalTracking: {\n cancelButtonProps?: Object,\n modalProps?: Object,\n okayButtonProps?: Object,\n onLoad?: Function,\n },\n sharedLinkEmailTracking: emailFormTrackingType,\n sharedLinkTracking: sharedLinkTrackingType,\n};\n\n// this type is a strict subset of the SharedLinkRecord data returned from the server\nexport type sharedLinkType = {\n accessLevel: accessLevelType,\n accessLevelsDisabledReason?: accessLevelsDisabledReasonType,\n allowedAccessLevels: allowedAccessLevelsType,\n canChangeAccessLevel: boolean,\n enterpriseName: string,\n expirationTimestamp: ?number,\n isDownloadAllowed: boolean,\n isDownloadSettingAvailable: boolean,\n isEditAllowed: boolean,\n isEditSettingAvailable: boolean,\n isNewSharedLink: boolean,\n isPreviewAllowed: boolean,\n permissionLevel: permissionLevelType,\n url: string,\n};\n\nexport type collaboratorType = {\n collabID: number,\n email?: string,\n expiration?: {\n executeAt: string,\n },\n hasCustomAvatar: boolean,\n imageURL: ?string,\n isExternalCollab?: boolean,\n name: string,\n type: collaboratorGroupType,\n userID: ?number,\n};\n\nexport type collaboratorsListType = {\n collaborators: Array<collaboratorType>,\n};\n\nexport type tooltipComponentIdentifierType =\n | 'shared-link-access-menu'\n | 'shared-link-copy-button'\n | 'shared-link-settings'\n | 'shared-link-toggle';\n\nexport type justificationCheckpointType =\n | typeof constants.JUSTIFICATION_CHECKPOINT_COLLAB\n | typeof constants.JUSTIFICATION_CHECKPOINT_CREATE_SHARED_LINK\n | typeof constants.JUSTIFICATION_CHECKPOINT_DOWNLOAD\n | typeof constants.JUSTIFICATION_CHECKPOINT_EXTERNAL_COLLAB;\n\nexport type justificationReasonType = {\n description?: string,\n id: string,\n isDetailsRequired?: boolean,\n title: string,\n};\nexport type getJustificationReasonsResponseType = {\n classificationLabelId: string,\n options: Array<justificationReasonType>,\n};\n\n// Prop types used in the invite section of the Unified Share Form\ntype InviteSectionTypes = {\n /** Message warning about restrictions regarding inviting collaborators to the item */\n collaborationRestrictionWarning: React.Node,\n /** Used to limit the number of contacts that can be added in the contacts field */\n contactLimit?: number,\n /** Handler function for when the user types into invite collaborators field to fetch contacts. */\n getCollaboratorContacts: (query: string) => Promise<Array<contactType>>,\n /** Shows a callout tooltip next to the names / email addresses input field explaining pre-populated recommendation */\n recommendedSharingTooltipCalloutName: ?string,\n /**\n * Function to send collab invitations based on the given parameters object.\n * This function should return a Promise.\n */\n sendInvites: (params: Object) => Promise<Object>,\n /** Message indicating an error occurred while sending the invites. */\n sendInvitesError: React.Node,\n /** Function hoists contact data upon updates to the parent component. Only needed for suggested collabs. */\n setUpdatedContacts?: (inviteCollabsContacts: Array<contactType>) => void,\n /** Determine whether to show the First-time experience tooltip on load */\n showCalloutForUser?: boolean,\n /**\n * Flag to show link to upgrade and get more access controls.\n * Only applicable to non-file item types.\n */\n showUpgradeOptions: boolean,\n /** Data for suggested collaborators shown at bottom of input box. UI doesn't render when this has length of 0. */\n suggestedCollaborators?: SuggestedCollabLookup,\n};\n\n// Additional invite section types that related with external collab r\n// restrictions and business justifications.\ntype ExternalCollabRestrictionsTypes = {\n /** Function that fetches the array of justification reason options to display on the justification select field */\n getJustificationReasons?: (\n itemTypedID: string,\n checkpoint: justificationCheckpointType,\n ) => Promise<getJustificationReasonsResponseType>,\n /** Determines whether or not a business justification can be provided to bypass external collab restrictions */\n isCollabRestrictionJustificationAllowed?: boolean,\n /** Function that is called when all restricted external collaborators are removed from the email form */\n onRemoveAllRestrictedExternalCollabs?: () => void,\n /** An array of all the external collab email addresses that have been determined to be restriced by an access policy. */\n restrictedExternalCollabEmails: Array<string>,\n};\n\n// Prop types used in the shared link section of the Unified Share Form\n// (Note: while there is an overlap between these types and the props passed to the Shared Link Section component,\n// they are different. See the render() function of the Unified Share Form for details.)\ntype SharedLinkSectionTypes = {\n /** Handler function that changes shared link access level */\n changeSharedLinkAccessLevel: (newAccessLevel: accessLevelType) => Promise<{ accessLevel: accessLevelType }>,\n /** Handler function that changes shared link permission level */\n changeSharedLinkPermissionLevel: (\n newPermissionLevel: permissionLevelType,\n ) => Promise<{ permissionLevel: permissionLevelType }>,\n /** Whether the form should create a shared link on load */\n createSharedLinkOnLoad?: boolean,\n /** Handler function that adds the shared link */\n onAddLink: () => void,\n /** Handler for when there is an error copying to clipboard */\n onCopyError?: () => void,\n /** Handler for when we initiate copying from to clipboard */\n onCopyInit?: () => void,\n /** Handler for when successfully copying to clipboard */\n onCopySuccess?: () => void,\n /** Handler function that gets called whenever the user dismisses a tooltip on the given component identifier */\n onDismissTooltip?: (componentIdentifier: tooltipComponentIdentifierType) => void,\n /** Handler function for clicks on the settings icon. If not provided, the settings icon won't be rendered. */\n onSettingsClick?: Function,\n /** Shared link data */\n sharedLink: sharedLinkType,\n /** Shows a callout tooltip next gear icon with info about what can be customized */\n showSharedLinkSettingsCallout?: boolean,\n /** Mapping of components to the content that should be rendered in their tooltips */\n tooltips?: { [componentIdentifier: tooltipComponentIdentifierType]: React.Node },\n};\n\n// Prop types used in the collaborator avatars section of the Unified Share Form\ntype CollaboratorAvatarsTypes = {\n /** List of existing collaborators */\n collaboratorsList?: collaboratorsListType,\n /** User ID of currently logged in user */\n currentUserID: string,\n};\n\ntype EmailFormTypes = {\n /** Function to retrieve the URL for an avatar, given contact details */\n getContactAvatarUrl?: (contact: contactType) => string,\n /** Handler function for when the user types into email shared link field to fetch contacts. */\n getSharedLinkContacts: (query: string) => Promise<Array<contactType>>,\n /**\n * Function to send shared link email based on the given parameters object.\n * This function should return a Promise.\n */\n sendSharedLink: (params: Object) => Promise<Object>,\n /** Message indicating an error occurred while sending the shared link. */\n sendSharedLinkError: React.Node,\n};\n\nexport type USMConfig = {\n /** Whether the \"Email Shared Link\" button and form should be rendered in the USM/USF */\n showEmailSharedLinkForm: boolean,\n /* Whether the message section of the invite collaborator page should be rendered in the USM/USF */\n showInviteCollaboratorMessageSection: boolean,\n};\n\n// Prop types shared by both the Unified Share Modal and the Unified Share Form\ntype BaseUnifiedShareProps = CollaboratorAvatarsTypes &\n EmailFormTypes &\n ExternalCollabRestrictionsTypes &\n InviteSectionTypes &\n SharedLinkSectionTypes & {\n /** Inline message */\n allShareRestrictionWarning?: React.Node,\n /** Flag to determine whether to enable invite collaborators section */\n canInvite: boolean,\n /** Configuration object for hiding parts of the USM */\n config?: USMConfig,\n /** Whether the full USM should be rendered */\n displayInModal?: boolean,\n /** Whether the form should focus the shared link after the URL is resolved */\n focusSharedLinkOnLoad?: boolean,\n /** Handler function that gets contacts by a list of emails */\n getContactsByEmail?: ({ emails: Array<string>, itemTypedID?: string }) => Promise<Object>,\n /** Handler function for getting intial data for form */\n getInitialData: Function,\n /** An array of initially selected contacts. If none are initially selected, an empty array. */\n initiallySelectedContacts: Array<contactType>,\n /** Intl object */\n intl: any,\n /** An array of invitee permissions */\n inviteePermissions: Array<inviteePermissionType>,\n /** Item data */\n item: item,\n /** Shows a callout tooltip next to the names / email addresses input field encouraging users to fill out coworkers contact info */\n showEnterEmailsCallout?: boolean,\n /** Whether or not a request is in progress */\n submitting: boolean,\n /** Object with props and handlers for tracking interactions */\n trackingProps: trackingPropsType,\n };\n\n// Prop types for the Unified Share Modal\nexport type USMProps = BaseUnifiedShareProps & {\n /** Function for closing the Remove Link Confirm Modal */\n closeConfirmModal: () => void,\n /** Whether initial data for the USM has already been received */\n initialDataReceived: boolean,\n /** Whether the allow edit shared link for file FF is enabled */\n isAllowEditSharedLinkForFileEnabled?: boolean,\n /** Whether the USM is open */\n isOpen?: boolean,\n /** Handler function that removes the shared link, used in the Remove Link Confirm Modal */\n onRemoveLink: () => void,\n /** Handler function for when the USM is closed */\n onRequestClose?: Function,\n /** Whether the FTUX tag should be rendered for the Can Edit option */\n sharedLinkEditTagTargetingApi?: TargetingApi,\n /** Whether the FTUX tooltip should be rendered for Editable Shared Links */\n sharedLinkEditTooltipTargetingApi?: TargetingApi,\n};\n\n// Prop types for the Unified Share Form, passed from the Unified Share Modal\nexport type USFProps = BaseUnifiedShareProps & {\n /** Function for closing the FTUX tooltip */\n handleFtuxCloseClick: () => void,\n /** Whether the allow edit shared link for file FF is enabled */\n isAllowEditSharedLinkForFileEnabled: boolean,\n /** Whether the data for the USM/USF is being fetched */\n isFetching: boolean,\n /** Function for opening the Remove Link Confirm Modal */\n openConfirmModal: () => void,\n /** Function for opening the Upgrade Plan Modal */\n openUpgradePlanModal: () => void,\n /** Whether the FTUX tag should be rendered for the Can Edit option */\n sharedLinkEditTagTargetingApi?: TargetingApi,\n /** Whether the FTUX tooltip should be rendered for Editable Shared Links */\n sharedLinkEditTooltipTargetingApi?: TargetingApi,\n /** Whether the shared link has loaded */\n sharedLinkLoaded: boolean,\n /** Whether the FTUX tooltip should be rendered */\n shouldRenderFTUXTooltip: boolean,\n /** Whether the new upgrade text should be rendered */\n showNewUpgradeText?: boolean,\n /** Whether the upgrade inline notice should be rendered */\n showUpgradeInlineNotice?: boolean,\n};\n\nexport type InviteCollaboratorsRequest = {\n classificationLabelId?: string,\n emailMessage: string,\n emails: string,\n groupIDs: string,\n justificationReason?: justificationReasonType,\n numOfInviteeGroups: number,\n numsOfInvitees: number,\n permission: string,\n};\n"],"file":"flowTypes.js"}
@@ -206,6 +206,14 @@ var messages = defineMessages({
206
206
  "id": "boxui.unifiedShare.upgradeGetMoreAccessControlsLink",
207
207
  "defaultMessage": "upgrade"
208
208
  },
209
+ upgradeLink: {
210
+ "id": "boxui.unifiedShare.upgradeLink",
211
+ "defaultMessage": "Upgrade now"
212
+ },
213
+ upgradeInlineNoticeTitle: {
214
+ "id": "boxui.unifiedShare.upgradeInlineNoticeTitle",
215
+ "defaultMessage": "Upgrade Your Plan"
216
+ },
209
217
  sharedLinkSettings: {
210
218
  "id": "boxui.unifiedShare.sharedLinkSettings",
211
219
  "defaultMessage": "Link Settings"
@@ -274,6 +274,16 @@ const messages = defineMessages({
274
274
  description: 'Label for link to upgrade to get more access controls for inviting collaborators to an item',
275
275
  id: 'boxui.unifiedShare.upgradeGetMoreAccessControlsLink',
276
276
  },
277
+ upgradeLink: {
278
+ defaultMessage: 'Upgrade now',
279
+ description: 'Label for link to upgrade account',
280
+ id: 'boxui.unifiedShare.upgradeLink',
281
+ },
282
+ upgradeInlineNoticeTitle: {
283
+ defaultMessage: 'Upgrade Your Plan',
284
+ description: 'Title for the upgrade inline notice for upgrade user plan',
285
+ id: 'boxui.unifiedShare.upgradeInlineNoticeTitle',
286
+ },
277
287
  sharedLinkSettings: {
278
288
  defaultMessage: 'Link Settings',
279
289
  description: 'Description of the shared link settings modal entry point. This shows link-specific options.',