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
@@ -39,6 +39,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
39
39
  import * as React from 'react';
40
40
  import noop from 'lodash/noop';
41
41
  import getProp from 'lodash/get';
42
+ import isEmpty from 'lodash/isEmpty';
42
43
  import classNames from 'classnames';
43
44
  import { FormattedMessage, injectIntl } from 'react-intl';
44
45
  import commonMessages from '../../../../common/messages';
@@ -94,7 +95,7 @@ function (_React$Component) {
94
95
 
95
96
  _defineProperty(_assertThisInitialized(_this), "state", _this.getInitialFormState());
96
97
 
97
- _defineProperty(_assertThisInitialized(_this), "validateForm", function (only) {
98
+ _defineProperty(_assertThisInitialized(_this), "validateForm", function (only, invalidSubmitValidityState) {
98
99
  _this.setState(function (state) {
99
100
  var intl = _this.props.intl;
100
101
  var approvers = state.approvers,
@@ -112,10 +113,14 @@ function (_React$Component) {
112
113
  code: 'required',
113
114
  message: intl.formatMessage(commonMessages.requiredFieldError)
114
115
  };
116
+ var taskDueDateError = {
117
+ code: 'invalid',
118
+ message: intl.formatMessage(commonMessages.invalidDateError)
119
+ };
115
120
  var formValidityState = {
116
121
  taskAssignees: (approverTextInput.length ? assigneeFieldInvalidError : null) || (approvers.length ? null : assigneeFieldMissingError),
117
122
  taskName: message ? null : messageFieldError,
118
- taskDueDate: null
123
+ taskDueDate: getProp(invalidSubmitValidityState, 'taskDueDate.validityState.patternMismatch') ? taskDueDateError : null
119
124
  };
120
125
  var isValid = Object.values(formValidityState).every(function (val) {
121
126
  return val == null;
@@ -136,8 +141,12 @@ function (_React$Component) {
136
141
  return _this.setState(_this.getInitialFormState());
137
142
  });
138
143
 
139
- _defineProperty(_assertThisInitialized(_this), "handleInvalidSubmit", function () {
140
- _this.validateForm();
144
+ _defineProperty(_assertThisInitialized(_this), "handleInvalidSubmit", function (invalidSubmitValidityState) {
145
+ if (!isEmpty(invalidSubmitValidityState)) {
146
+ _this.validateForm(undefined, invalidSubmitValidityState);
147
+ } else {
148
+ _this.validateForm();
149
+ }
141
150
  });
142
151
 
143
152
  _defineProperty(_assertThisInitialized(_this), "handleSubmitSuccess", function () {
@@ -493,6 +502,7 @@ function (_React$Component) {
493
502
  className: "bcs-task-add-due-date-input",
494
503
  error: this.getErrorByFieldname('taskDueDate'),
495
504
  inputProps: (_ref5 = {}, _defineProperty(_ref5, INTERACTION_TARGET, ACTIVITY_TARGETS.TASK_DATE_PICKER), _defineProperty(_ref5, 'data-testid', 'task-form-date-input'), _ref5),
505
+ isAccessible: true,
496
506
  isDisabled: isForbiddenErrorOnEdit,
497
507
  isKeyboardInputAllowed: true,
498
508
  isRequired: false,
@@ -6,6 +6,7 @@
6
6
  import * as React from 'react';
7
7
  import noop from 'lodash/noop';
8
8
  import getProp from 'lodash/get';
9
+ import isEmpty from 'lodash/isEmpty';
9
10
  import classNames from 'classnames';
10
11
  import { FormattedMessage, injectIntl } from 'react-intl';
11
12
  import type { InjectIntlProvidedProps } from 'react-intl';
@@ -83,6 +84,8 @@ type Props = TaskFormProps & TaskFormConsumerProps & InjectIntlProvidedProps;
83
84
 
84
85
  type TaskFormFieldName = 'taskName' | 'taskAssignees' | 'taskDueDate';
85
86
 
87
+ type TaskFormInvalidSubmitState = { [key: TaskFormFieldName]: ?{ validityState: ?{ patternMismatch: boolean } } };
88
+
86
89
  type State = {|
87
90
  approverTextInput: string, // partial text input value for approver field before autocomplete/select
88
91
  approvers: Array<TaskCollabAssignee>,
@@ -135,7 +138,7 @@ class TaskForm extends React.Component<Props, State> {
135
138
  };
136
139
  }
137
140
 
138
- validateForm = (only?: TaskFormFieldName) => {
141
+ validateForm = (only?: TaskFormFieldName, invalidSubmitValidityState?: ?TaskFormInvalidSubmitState) => {
139
142
  this.setState(state => {
140
143
  const { intl } = this.props;
141
144
  const { approvers, message, approverTextInput } = state;
@@ -151,12 +154,18 @@ class TaskForm extends React.Component<Props, State> {
151
154
  code: 'required',
152
155
  message: intl.formatMessage(commonMessages.requiredFieldError),
153
156
  };
157
+ const taskDueDateError = {
158
+ code: 'invalid',
159
+ message: intl.formatMessage(commonMessages.invalidDateError),
160
+ };
154
161
  const formValidityState = {
155
162
  taskAssignees:
156
163
  (approverTextInput.length ? assigneeFieldInvalidError : null) ||
157
164
  (approvers.length ? null : assigneeFieldMissingError),
158
165
  taskName: message ? null : messageFieldError,
159
- taskDueDate: null,
166
+ taskDueDate: getProp(invalidSubmitValidityState, 'taskDueDate.validityState.patternMismatch')
167
+ ? taskDueDateError
168
+ : null,
160
169
  };
161
170
  const isValid = Object.values(formValidityState).every(val => val == null);
162
171
  return {
@@ -175,8 +184,12 @@ class TaskForm extends React.Component<Props, State> {
175
184
 
176
185
  clearForm = () => this.setState(this.getInitialFormState());
177
186
 
178
- handleInvalidSubmit = () => {
179
- this.validateForm();
187
+ handleInvalidSubmit = (invalidSubmitValidityState?: ?TaskFormInvalidSubmitState) => {
188
+ if (!isEmpty(invalidSubmitValidityState)) {
189
+ this.validateForm(undefined, invalidSubmitValidityState);
190
+ } else {
191
+ this.validateForm();
192
+ }
180
193
  };
181
194
 
182
195
  handleSubmitSuccess = () => {
@@ -273,7 +286,6 @@ class TaskForm extends React.Component<Props, State> {
273
286
  // Modify date to be the end of day (minus 1 millisecond) for the given due date
274
287
  dateValue.setHours(23, 59, 59, 999);
275
288
  }
276
-
277
289
  this.setState({ dueDate: dateValue });
278
290
  this.validateForm('taskDueDate');
279
291
  };
@@ -448,6 +460,7 @@ class TaskForm extends React.Component<Props, State> {
448
460
  [INTERACTION_TARGET]: ACTIVITY_TARGETS.TASK_DATE_PICKER,
449
461
  'data-testid': 'task-form-date-input',
450
462
  }}
463
+ isAccessible
451
464
  isDisabled={isForbiddenErrorOnEdit}
452
465
  isKeyboardInputAllowed
453
466
  isRequired={false}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/elements/content-sidebar/activity-feed/task-form/TaskForm.js"],"names":["React","noop","getProp","classNames","FormattedMessage","injectIntl","commonMessages","messages","commentFormMessages","Form","ModalActions","ContactDatalistItem","TextArea","DatePicker","Checkbox","PillSelectorDropdown","Button","FeatureFlag","PrimaryButton","TASK_COMPLETION_RULE_ANY","TASK_COMPLETION_RULE_ALL","TASK_EDIT_MODE_CREATE","TASK_EDIT_MODE_EDIT","ACTIVITY_TARGETS","INTERACTION_TARGET","TaskError","convertAssigneesToSelectorItems","approvers","map","target","newSelectorItem","id","name","item","value","text","TaskForm","getInitialFormState","only","setState","state","intl","props","message","approverTextInput","assigneeFieldMissingError","code","formatMessage","requiredFieldError","assigneeFieldInvalidError","invalidUserError","messageFieldError","formValidityState","taskAssignees","length","taskName","taskDueDate","isValid","Object","values","every","val","fieldName","validateForm","onSubmitSuccess","clearForm","isLoading","e","onSubmitError","taskType","editMode","dueDate","addedAssignees","getAddedAssignees","removedAssignees","getRemovedAssignees","filter","assignee","type","getTime","currentApprovers","approverIds","approver","currentApprover","indexOf","currentApproverIds","createTask","editTask","completionRule","dueDateString","toISOString","completion_rule","description","due_at","handleSubmitSuccess","handleSubmitError","date","dateValue","Date","setHours","event","checked","getApproverWithQuery","pills","concat","pill","role","status","permissions","can_delete","can_update","option","index","splice","persist","currentTarget","onCancel","approverSelectorContacts","className","error","isDisabled","inputContainerClassNames","isCreateEditMode","selectedApprovers","approverOptions","find","pillSelectorOverlayClasses","scrollable","submitButtonMessage","tasksAddTaskFormSubmitLabel","tasksEditTaskFormSubmitLabel","shouldShowCompletionRule","isCompletionRuleCheckboxDisabled","isCompletionRuleCheckboxChecked","isForbiddenErrorOnEdit","handleInvalidSubmit","handleValidSubmit","getErrorByFieldname","tasksAddTaskFormSelectAssigneesLabel","handleApproverSelectorInput","handleApproverSelectorRemove","handleApproverSelectorSelect","approvalAddAssignee","taskCreateGroupLabel","email","taskAnyCheckboxLabel","taskAnyInfoGroupTooltip","handleCompletionRuleChange","taskAnyInfoTooltip","tasksAddTaskFormMessageLabel","handleChangeMessage","commentWrite","TASK_DATE_PICKER","tasksAddTaskFormDueDateLabel","handleDueDateChange","approvalSelectDate","undefined","APPROVAL_FORM_CANCEL","handleCancelClick","addResinInfo","tasksAddTaskFormCancelLabel","APPROVAL_FORM_POST","Component","TaskFormUnwrapped"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Component for Approval comment form\n */\n\nimport * as React from 'react';\nimport noop from 'lodash/noop';\nimport getProp from 'lodash/get';\nimport classNames from 'classnames';\nimport { FormattedMessage, injectIntl } from 'react-intl';\nimport type { InjectIntlProvidedProps } from 'react-intl';\nimport commonMessages from '../../../../common/messages';\nimport messages from './messages';\nimport commentFormMessages from '../comment-form/messages';\nimport Form from '../../../../components/form-elements/form/Form';\nimport ModalActions from '../../../../components/modal/ModalActions';\nimport ContactDatalistItem from '../../../../components/contact-datalist-item/ContactDatalistItem';\nimport TextArea from '../../../../components/text-area';\nimport DatePicker from '../../../../components/date-picker/DatePicker';\nimport Checkbox from '../../../../components/checkbox';\nimport PillSelectorDropdown from '../../../../components/pill-selector-dropdown/PillSelectorDropdown';\nimport Button from '../../../../components/button/Button';\nimport { FeatureFlag } from '../../../common/feature-checking';\nimport PrimaryButton from '../../../../components/primary-button/PrimaryButton';\nimport {\n TASK_COMPLETION_RULE_ANY,\n TASK_COMPLETION_RULE_ALL,\n TASK_EDIT_MODE_CREATE,\n TASK_EDIT_MODE_EDIT,\n} from '../../../../constants';\nimport { ACTIVITY_TARGETS, INTERACTION_TARGET } from '../../../common/interactionTargets';\nimport type {\n TaskCompletionRule,\n TaskCollabAssignee,\n TaskType,\n TaskEditMode,\n TaskUpdatePayload,\n} from '../../../../common/types/tasks';\nimport TaskError from './TaskError';\nimport type { GetAvatarUrlCallback } from '../../../common/flowTypes';\nimport type { ElementsXhrError } from '../../../../common/types/api';\nimport type { SelectorItems, SelectorItem, UserMini, GroupMini } from '../../../../common/types/core';\n\nimport './TaskForm.scss';\n\ntype TaskFormProps = {|\n error?: { status: number }, // TODO: update to ElementsXhrError once API supports it\n isDisabled?: boolean,\n onCancel: () => any,\n onSubmitError: (e: ElementsXhrError) => any,\n onSubmitSuccess: () => any,\n taskType: TaskType,\n|};\n\ntype TaskFormFieldProps = {|\n approvers: Array<TaskCollabAssignee>,\n completionRule: TaskCompletionRule,\n dueDate?: ?string,\n id: string,\n message: string,\n|};\n\ntype TaskFormConsumerProps = {|\n ...TaskFormFieldProps,\n approverSelectorContacts: SelectorItems<UserMini | GroupMini>,\n className?: string,\n createTask: (\n text: string,\n approvers: SelectorItems<>,\n taskType: TaskType,\n dueDate: ?string,\n completionRule: TaskCompletionRule,\n onSuccess: ?Function,\n onError: ?Function,\n ) => any,\n editMode?: TaskEditMode,\n editTask?: (task: TaskUpdatePayload, onSuccess: ?Function, onError: ?Function) => any,\n getApproverWithQuery?: Function,\n getAvatarUrl: GetAvatarUrlCallback,\n|};\n\ntype Props = TaskFormProps & TaskFormConsumerProps & InjectIntlProvidedProps;\n\ntype TaskFormFieldName = 'taskName' | 'taskAssignees' | 'taskDueDate';\n\ntype State = {|\n approverTextInput: string, // partial text input value for approver field before autocomplete/select\n approvers: Array<TaskCollabAssignee>,\n completionRule: TaskCompletionRule,\n dueDate?: ?Date,\n formValidityState: { [key: TaskFormFieldName]: ?{ code: string, message: string } },\n id: string,\n isLoading: boolean,\n isValid: ?boolean,\n message: string,\n|};\n\nfunction convertAssigneesToSelectorItems(approvers: Array<TaskCollabAssignee>): SelectorItems<> {\n return approvers.map(({ target }) => {\n const newSelectorItem: SelectorItem<UserMini | GroupMini> = {\n id: target.id,\n name: target.name,\n item: target,\n value: target.id,\n text: target.name, // for PillSelectorDropdown SelectorOptions type\n };\n\n return newSelectorItem;\n });\n}\n\nclass TaskForm extends React.Component<Props, State> {\n static defaultProps = {\n approvers: [],\n approverSelectorContacts: [],\n editMode: TASK_EDIT_MODE_CREATE,\n id: '',\n message: '',\n };\n\n state = this.getInitialFormState();\n\n getInitialFormState() {\n const { dueDate, id, message, approvers, completionRule } = this.props;\n return {\n id,\n completionRule: completionRule || TASK_COMPLETION_RULE_ALL,\n approvers,\n approverTextInput: '',\n dueDate: dueDate ? new Date(dueDate) : null,\n formValidityState: {},\n message,\n isLoading: false,\n isValid: null,\n };\n }\n\n validateForm = (only?: TaskFormFieldName) => {\n this.setState(state => {\n const { intl } = this.props;\n const { approvers, message, approverTextInput } = state;\n const assigneeFieldMissingError = {\n code: 'required',\n message: intl.formatMessage(commonMessages.requiredFieldError),\n };\n const assigneeFieldInvalidError = {\n code: 'invalid',\n message: intl.formatMessage(commonMessages.invalidUserError),\n };\n const messageFieldError = {\n code: 'required',\n message: intl.formatMessage(commonMessages.requiredFieldError),\n };\n const formValidityState = {\n taskAssignees:\n (approverTextInput.length ? assigneeFieldInvalidError : null) ||\n (approvers.length ? null : assigneeFieldMissingError),\n taskName: message ? null : messageFieldError,\n taskDueDate: null,\n };\n const isValid = Object.values(formValidityState).every(val => val == null);\n return {\n isValid,\n formValidityState: only\n ? { ...state.formValidityState, [only]: formValidityState[only] }\n : formValidityState,\n };\n });\n };\n\n getErrorByFieldname = (fieldName: TaskFormFieldName) => {\n const { formValidityState } = this.state;\n return formValidityState[fieldName] ? formValidityState[fieldName].message : null;\n };\n\n clearForm = () => this.setState(this.getInitialFormState());\n\n handleInvalidSubmit = () => {\n this.validateForm();\n };\n\n handleSubmitSuccess = () => {\n const { onSubmitSuccess } = this.props;\n if (onSubmitSuccess) {\n onSubmitSuccess();\n }\n\n this.clearForm();\n this.setState({ isLoading: false });\n };\n\n handleSubmitError = (e: ElementsXhrError) => {\n const { onSubmitError } = this.props;\n onSubmitError(e);\n this.setState({ isLoading: false });\n };\n\n addResinInfo = (): Object => {\n const { id, taskType, editMode } = this.props;\n const { dueDate } = this.state;\n const addedAssignees = this.getAddedAssignees();\n const removedAssignees = this.getRemovedAssignees();\n\n return {\n 'data-resin-taskid': id,\n 'data-resin-tasktype': taskType,\n 'data-resin-isediting': editMode === TASK_EDIT_MODE_EDIT,\n 'data-resin-numassigneesadded': addedAssignees.filter(assignee => assignee.target.type === 'user').length,\n 'data-resin-numgroupssadded': addedAssignees.filter(assignee => assignee.target.type === 'group').length,\n 'data-resin-numassigneesremoved': removedAssignees.length,\n 'data-resin-assigneesadded': addedAssignees.map(assignee => assignee.target.id),\n 'data-resin-assigneesremoved': removedAssignees.map(assignee => assignee.target.id),\n 'data-resin-duedate': dueDate && dueDate.getTime(),\n };\n };\n\n getAddedAssignees = (): Array<TaskCollabAssignee> => {\n // Added assignees are the ones in state that weren't in the prop\n const { approvers } = this.props;\n const { approvers: currentApprovers } = this.state;\n const approverIds = approvers.map(approver => approver.id);\n return currentApprovers.filter(currentApprover => approverIds.indexOf(currentApprover.id) === -1);\n };\n\n getRemovedAssignees = (): Array<TaskCollabAssignee> => {\n // Assignees to remove are the ones in the prop that cannot be found in state\n const { approvers } = this.props;\n const { approvers: currentApprovers } = this.state;\n const currentApproverIds = currentApprovers.map(currentApprover => currentApprover.id);\n return approvers.filter(approver => currentApproverIds.indexOf(approver.id) === -1);\n };\n\n handleValidSubmit = (): void => {\n const { id, createTask, editTask, editMode, taskType } = this.props;\n const { message, approvers: currentApprovers, dueDate, completionRule, isValid } = this.state;\n const dueDateString = dueDate && dueDate.toISOString();\n\n if (!isValid) return;\n\n this.setState({ isLoading: true });\n\n if (editMode === TASK_EDIT_MODE_EDIT && editTask) {\n editTask(\n {\n id,\n completion_rule: completionRule,\n description: message,\n due_at: dueDateString,\n addedAssignees: convertAssigneesToSelectorItems(this.getAddedAssignees()),\n removedAssignees: this.getRemovedAssignees(),\n },\n this.handleSubmitSuccess,\n this.handleSubmitError,\n );\n } else {\n createTask(\n message,\n convertAssigneesToSelectorItems(currentApprovers),\n taskType,\n dueDateString,\n completionRule,\n this.handleSubmitSuccess,\n this.handleSubmitError,\n );\n }\n };\n\n handleDueDateChange = (date: ?string): void => {\n let dateValue = null;\n if (date) {\n dateValue = new Date(date);\n // The date given to us is midnight of the date selected.\n // Modify date to be the end of day (minus 1 millisecond) for the given due date\n dateValue.setHours(23, 59, 59, 999);\n }\n\n this.setState({ dueDate: dateValue });\n this.validateForm('taskDueDate');\n };\n\n handleCompletionRuleChange = (event: SyntheticInputEvent<HTMLInputElement>) => {\n this.setState({ completionRule: event.target.checked ? TASK_COMPLETION_RULE_ANY : TASK_COMPLETION_RULE_ALL });\n };\n\n handleApproverSelectorInput = (value: any): void => {\n const { getApproverWithQuery = noop } = this.props;\n this.setState({ approverTextInput: value });\n getApproverWithQuery(value);\n };\n\n handleApproverSelectorSelect = (pills: Array<any>): void => {\n this.setState({\n approvers: this.state.approvers.concat(\n pills.map(pill => {\n return {\n id: '',\n target: pill.item,\n role: 'ASSIGNEE',\n type: 'task_collaborator',\n status: 'NOT_STARTED',\n permissions: { can_delete: false, can_update: false },\n };\n }),\n ),\n approverTextInput: '',\n });\n\n this.validateForm('taskAssignees');\n };\n\n handleApproverSelectorRemove = (option: any, index: number): void => {\n const approvers = [...this.state.approvers];\n approvers.splice(index, 1);\n this.setState({ approvers });\n this.validateForm('taskAssignees');\n };\n\n handleChangeMessage = (e: SyntheticInputEvent<HTMLTextAreaElement>) => {\n e.persist();\n this.setState({ message: e.currentTarget.value });\n this.validateForm('taskName');\n };\n\n handleCancelClick = () => {\n this.props.onCancel();\n };\n\n render() {\n const { approverSelectorContacts, className, error, isDisabled, intl, editMode, taskType } = this.props;\n const { dueDate, approvers, message, formValidityState, isLoading, completionRule } = this.state;\n const inputContainerClassNames = classNames('bcs-task-input-container', 'bcs-task-input-is-open', className);\n const isCreateEditMode = editMode === TASK_EDIT_MODE_CREATE;\n const selectedApprovers = convertAssigneesToSelectorItems(approvers);\n\n // filter out selected approvers\n // map to datalist item format\n const approverOptions = approverSelectorContacts.filter(\n ({ id }) => !selectedApprovers.find(({ value }) => value === id),\n );\n\n const pillSelectorOverlayClasses = classNames({\n scrollable: approverOptions.length > 4,\n });\n\n const submitButtonMessage = isCreateEditMode\n ? messages.tasksAddTaskFormSubmitLabel\n : messages.tasksEditTaskFormSubmitLabel;\n const shouldShowCompletionRule = approvers.length > 0;\n\n // Enable checkbox when there is a group or multiple users being assigned\n // TODO: consider setting contants for assignee types to src/constants.js\n // - move from src/features/collaborator-avatars/constants.js\n const isCompletionRuleCheckboxDisabled =\n approvers.filter(approver => approver.target.type === 'group').length <= 0 &&\n approvers.filter(approver => approver.target.type === 'user').length <= 1;\n\n const isCompletionRuleCheckboxChecked = completionRule === TASK_COMPLETION_RULE_ANY;\n const isForbiddenErrorOnEdit = isLoading || (getProp(error, 'status') === 403 && !isCreateEditMode);\n\n return (\n <div className={inputContainerClassNames} data-resin-component=\"taskform\">\n <div className=\"bcs-task-input-form-container\">\n <TaskError editMode={editMode} error={error} taskType={taskType} />\n <Form\n formValidityState={formValidityState}\n onInvalidSubmit={this.handleInvalidSubmit}\n onValidSubmit={this.handleValidSubmit}\n >\n <PillSelectorDropdown\n className={pillSelectorOverlayClasses}\n error={this.getErrorByFieldname('taskAssignees')}\n disabled={isForbiddenErrorOnEdit}\n inputProps={{ 'data-testid': 'task-form-assignee-input' }}\n isRequired\n label={<FormattedMessage {...messages.tasksAddTaskFormSelectAssigneesLabel} />}\n name=\"taskAssignees\"\n onBlur={() => this.validateForm('taskAssignees')}\n onInput={this.handleApproverSelectorInput}\n onRemove={this.handleApproverSelectorRemove}\n onSelect={this.handleApproverSelectorSelect}\n placeholder={intl.formatMessage(commentFormMessages.approvalAddAssignee)}\n selectedOptions={selectedApprovers}\n selectorOptions={approverOptions}\n shouldSetActiveItemOnOpen\n shouldClearUnmatchedInput\n validateForError={() => this.validateForm('taskAssignees')}\n >\n {approverOptions.map(({ id, name, item = {} }) => (\n <ContactDatalistItem\n key={id}\n data-testid=\"task-assignee-option\"\n name={name}\n subtitle={\n item.type === 'group' ? (\n <FormattedMessage {...messages.taskCreateGroupLabel} />\n ) : (\n item.email\n )\n }\n />\n ))}\n </PillSelectorDropdown>\n\n {shouldShowCompletionRule && (\n <>\n <FeatureFlag feature=\"activityFeed.tasks.assignToGroup\">\n <Checkbox\n data-testid=\"task-form-completion-rule-checkbox-group\"\n isChecked={isCompletionRuleCheckboxChecked}\n isDisabled={isCompletionRuleCheckboxDisabled || isForbiddenErrorOnEdit}\n label={<FormattedMessage {...messages.taskAnyCheckboxLabel} />}\n tooltip={intl.formatMessage(messages.taskAnyInfoGroupTooltip)}\n name=\"completionRule\"\n onChange={this.handleCompletionRuleChange}\n />\n </FeatureFlag>\n <FeatureFlag not feature=\"activityFeed.tasks.assignToGroup\">\n <Checkbox\n data-testid=\"task-form-completion-rule-checkbox\"\n isChecked={isCompletionRuleCheckboxChecked}\n isDisabled={isCompletionRuleCheckboxDisabled || isForbiddenErrorOnEdit}\n label={<FormattedMessage {...messages.taskAnyCheckboxLabel} />}\n tooltip={intl.formatMessage(messages.taskAnyInfoTooltip)}\n name=\"completionRule\"\n onChange={this.handleCompletionRuleChange}\n />\n </FeatureFlag>\n </>\n )}\n\n <TextArea\n className=\"bcs-task-name-input\"\n data-testid=\"task-form-name-input\"\n disabled={isDisabled || isForbiddenErrorOnEdit}\n error={this.getErrorByFieldname('taskName')}\n isRequired\n label={<FormattedMessage {...messages.tasksAddTaskFormMessageLabel} />}\n name=\"taskName\"\n onBlur={() => this.validateForm('taskName')}\n onChange={this.handleChangeMessage}\n placeholder={intl.formatMessage(commentFormMessages.commentWrite)}\n value={message}\n />\n <DatePicker\n className=\"bcs-task-add-due-date-input\"\n error={this.getErrorByFieldname('taskDueDate')}\n inputProps={{\n [INTERACTION_TARGET]: ACTIVITY_TARGETS.TASK_DATE_PICKER,\n 'data-testid': 'task-form-date-input',\n }}\n isDisabled={isForbiddenErrorOnEdit}\n isKeyboardInputAllowed\n isRequired={false}\n label={<FormattedMessage {...messages.tasksAddTaskFormDueDateLabel} />}\n minDate={new Date()}\n name=\"taskDueDate\"\n onChange={this.handleDueDateChange}\n placeholder={intl.formatMessage(commentFormMessages.approvalSelectDate)}\n value={dueDate || undefined}\n />\n <ModalActions>\n <Button\n className=\"bcs-task-input-cancel-btn\"\n data-resin-target={ACTIVITY_TARGETS.APPROVAL_FORM_CANCEL}\n data-testid=\"task-form-cancel-button\"\n onClick={this.handleCancelClick}\n isDisabled={isLoading}\n type=\"button\"\n {...this.addResinInfo()}\n >\n <FormattedMessage {...messages.tasksAddTaskFormCancelLabel} />\n </Button>\n <PrimaryButton\n className=\"bcs-task-input-submit-btn\"\n data-resin-target={ACTIVITY_TARGETS.APPROVAL_FORM_POST}\n data-testid=\"task-form-submit-button\"\n isDisabled={isForbiddenErrorOnEdit}\n isLoading={isLoading}\n {...this.addResinInfo()}\n >\n <FormattedMessage {...submitButtonMessage} />\n </PrimaryButton>\n </ModalActions>\n </Form>\n </div>\n </div>\n );\n }\n}\n\n// For testing only\nexport { TaskForm as TaskFormUnwrapped };\nexport type { TaskFormConsumerProps as TaskFormProps };\n\nexport default injectIntl(TaskForm);\n"],"file":"TaskForm.js"}
1
+ {"version":3,"sources":["../../../../../src/elements/content-sidebar/activity-feed/task-form/TaskForm.js"],"names":["React","noop","getProp","isEmpty","classNames","FormattedMessage","injectIntl","commonMessages","messages","commentFormMessages","Form","ModalActions","ContactDatalistItem","TextArea","DatePicker","Checkbox","PillSelectorDropdown","Button","FeatureFlag","PrimaryButton","TASK_COMPLETION_RULE_ANY","TASK_COMPLETION_RULE_ALL","TASK_EDIT_MODE_CREATE","TASK_EDIT_MODE_EDIT","ACTIVITY_TARGETS","INTERACTION_TARGET","TaskError","convertAssigneesToSelectorItems","approvers","map","target","newSelectorItem","id","name","item","value","text","TaskForm","getInitialFormState","only","invalidSubmitValidityState","setState","state","intl","props","message","approverTextInput","assigneeFieldMissingError","code","formatMessage","requiredFieldError","assigneeFieldInvalidError","invalidUserError","messageFieldError","taskDueDateError","invalidDateError","formValidityState","taskAssignees","length","taskName","taskDueDate","isValid","Object","values","every","val","fieldName","validateForm","undefined","onSubmitSuccess","clearForm","isLoading","e","onSubmitError","taskType","editMode","dueDate","addedAssignees","getAddedAssignees","removedAssignees","getRemovedAssignees","filter","assignee","type","getTime","currentApprovers","approverIds","approver","currentApprover","indexOf","currentApproverIds","createTask","editTask","completionRule","dueDateString","toISOString","completion_rule","description","due_at","handleSubmitSuccess","handleSubmitError","date","dateValue","Date","setHours","event","checked","getApproverWithQuery","pills","concat","pill","role","status","permissions","can_delete","can_update","option","index","splice","persist","currentTarget","onCancel","approverSelectorContacts","className","error","isDisabled","inputContainerClassNames","isCreateEditMode","selectedApprovers","approverOptions","find","pillSelectorOverlayClasses","scrollable","submitButtonMessage","tasksAddTaskFormSubmitLabel","tasksEditTaskFormSubmitLabel","shouldShowCompletionRule","isCompletionRuleCheckboxDisabled","isCompletionRuleCheckboxChecked","isForbiddenErrorOnEdit","handleInvalidSubmit","handleValidSubmit","getErrorByFieldname","tasksAddTaskFormSelectAssigneesLabel","handleApproverSelectorInput","handleApproverSelectorRemove","handleApproverSelectorSelect","approvalAddAssignee","taskCreateGroupLabel","email","taskAnyCheckboxLabel","taskAnyInfoGroupTooltip","handleCompletionRuleChange","taskAnyInfoTooltip","tasksAddTaskFormMessageLabel","handleChangeMessage","commentWrite","TASK_DATE_PICKER","tasksAddTaskFormDueDateLabel","handleDueDateChange","approvalSelectDate","APPROVAL_FORM_CANCEL","handleCancelClick","addResinInfo","tasksAddTaskFormCancelLabel","APPROVAL_FORM_POST","Component","TaskFormUnwrapped"],"mappings":"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","sourcesContent":["/**\n * @flow\n * @file Component for Approval comment form\n */\n\nimport * as React from 'react';\nimport noop from 'lodash/noop';\nimport getProp from 'lodash/get';\nimport isEmpty from 'lodash/isEmpty';\nimport classNames from 'classnames';\nimport { FormattedMessage, injectIntl } from 'react-intl';\nimport type { InjectIntlProvidedProps } from 'react-intl';\nimport commonMessages from '../../../../common/messages';\nimport messages from './messages';\nimport commentFormMessages from '../comment-form/messages';\nimport Form from '../../../../components/form-elements/form/Form';\nimport ModalActions from '../../../../components/modal/ModalActions';\nimport ContactDatalistItem from '../../../../components/contact-datalist-item/ContactDatalistItem';\nimport TextArea from '../../../../components/text-area';\nimport DatePicker from '../../../../components/date-picker/DatePicker';\nimport Checkbox from '../../../../components/checkbox';\nimport PillSelectorDropdown from '../../../../components/pill-selector-dropdown/PillSelectorDropdown';\nimport Button from '../../../../components/button/Button';\nimport { FeatureFlag } from '../../../common/feature-checking';\nimport PrimaryButton from '../../../../components/primary-button/PrimaryButton';\nimport {\n TASK_COMPLETION_RULE_ANY,\n TASK_COMPLETION_RULE_ALL,\n TASK_EDIT_MODE_CREATE,\n TASK_EDIT_MODE_EDIT,\n} from '../../../../constants';\nimport { ACTIVITY_TARGETS, INTERACTION_TARGET } from '../../../common/interactionTargets';\nimport type {\n TaskCompletionRule,\n TaskCollabAssignee,\n TaskType,\n TaskEditMode,\n TaskUpdatePayload,\n} from '../../../../common/types/tasks';\nimport TaskError from './TaskError';\nimport type { GetAvatarUrlCallback } from '../../../common/flowTypes';\nimport type { ElementsXhrError } from '../../../../common/types/api';\nimport type { SelectorItems, SelectorItem, UserMini, GroupMini } from '../../../../common/types/core';\n\nimport './TaskForm.scss';\n\ntype TaskFormProps = {|\n error?: { status: number }, // TODO: update to ElementsXhrError once API supports it\n isDisabled?: boolean,\n onCancel: () => any,\n onSubmitError: (e: ElementsXhrError) => any,\n onSubmitSuccess: () => any,\n taskType: TaskType,\n|};\n\ntype TaskFormFieldProps = {|\n approvers: Array<TaskCollabAssignee>,\n completionRule: TaskCompletionRule,\n dueDate?: ?string,\n id: string,\n message: string,\n|};\n\ntype TaskFormConsumerProps = {|\n ...TaskFormFieldProps,\n approverSelectorContacts: SelectorItems<UserMini | GroupMini>,\n className?: string,\n createTask: (\n text: string,\n approvers: SelectorItems<>,\n taskType: TaskType,\n dueDate: ?string,\n completionRule: TaskCompletionRule,\n onSuccess: ?Function,\n onError: ?Function,\n ) => any,\n editMode?: TaskEditMode,\n editTask?: (task: TaskUpdatePayload, onSuccess: ?Function, onError: ?Function) => any,\n getApproverWithQuery?: Function,\n getAvatarUrl: GetAvatarUrlCallback,\n|};\n\ntype Props = TaskFormProps & TaskFormConsumerProps & InjectIntlProvidedProps;\n\ntype TaskFormFieldName = 'taskName' | 'taskAssignees' | 'taskDueDate';\n\ntype TaskFormInvalidSubmitState = { [key: TaskFormFieldName]: ?{ validityState: ?{ patternMismatch: boolean } } };\n\ntype State = {|\n approverTextInput: string, // partial text input value for approver field before autocomplete/select\n approvers: Array<TaskCollabAssignee>,\n completionRule: TaskCompletionRule,\n dueDate?: ?Date,\n formValidityState: { [key: TaskFormFieldName]: ?{ code: string, message: string } },\n id: string,\n isLoading: boolean,\n isValid: ?boolean,\n message: string,\n|};\n\nfunction convertAssigneesToSelectorItems(approvers: Array<TaskCollabAssignee>): SelectorItems<> {\n return approvers.map(({ target }) => {\n const newSelectorItem: SelectorItem<UserMini | GroupMini> = {\n id: target.id,\n name: target.name,\n item: target,\n value: target.id,\n text: target.name, // for PillSelectorDropdown SelectorOptions type\n };\n\n return newSelectorItem;\n });\n}\n\nclass TaskForm extends React.Component<Props, State> {\n static defaultProps = {\n approvers: [],\n approverSelectorContacts: [],\n editMode: TASK_EDIT_MODE_CREATE,\n id: '',\n message: '',\n };\n\n state = this.getInitialFormState();\n\n getInitialFormState() {\n const { dueDate, id, message, approvers, completionRule } = this.props;\n return {\n id,\n completionRule: completionRule || TASK_COMPLETION_RULE_ALL,\n approvers,\n approverTextInput: '',\n dueDate: dueDate ? new Date(dueDate) : null,\n formValidityState: {},\n message,\n isLoading: false,\n isValid: null,\n };\n }\n\n validateForm = (only?: TaskFormFieldName, invalidSubmitValidityState?: ?TaskFormInvalidSubmitState) => {\n this.setState(state => {\n const { intl } = this.props;\n const { approvers, message, approverTextInput } = state;\n const assigneeFieldMissingError = {\n code: 'required',\n message: intl.formatMessage(commonMessages.requiredFieldError),\n };\n const assigneeFieldInvalidError = {\n code: 'invalid',\n message: intl.formatMessage(commonMessages.invalidUserError),\n };\n const messageFieldError = {\n code: 'required',\n message: intl.formatMessage(commonMessages.requiredFieldError),\n };\n const taskDueDateError = {\n code: 'invalid',\n message: intl.formatMessage(commonMessages.invalidDateError),\n };\n const formValidityState = {\n taskAssignees:\n (approverTextInput.length ? assigneeFieldInvalidError : null) ||\n (approvers.length ? null : assigneeFieldMissingError),\n taskName: message ? null : messageFieldError,\n taskDueDate: getProp(invalidSubmitValidityState, 'taskDueDate.validityState.patternMismatch')\n ? taskDueDateError\n : null,\n };\n const isValid = Object.values(formValidityState).every(val => val == null);\n return {\n isValid,\n formValidityState: only\n ? { ...state.formValidityState, [only]: formValidityState[only] }\n : formValidityState,\n };\n });\n };\n\n getErrorByFieldname = (fieldName: TaskFormFieldName) => {\n const { formValidityState } = this.state;\n return formValidityState[fieldName] ? formValidityState[fieldName].message : null;\n };\n\n clearForm = () => this.setState(this.getInitialFormState());\n\n handleInvalidSubmit = (invalidSubmitValidityState?: ?TaskFormInvalidSubmitState) => {\n if (!isEmpty(invalidSubmitValidityState)) {\n this.validateForm(undefined, invalidSubmitValidityState);\n } else {\n this.validateForm();\n }\n };\n\n handleSubmitSuccess = () => {\n const { onSubmitSuccess } = this.props;\n if (onSubmitSuccess) {\n onSubmitSuccess();\n }\n\n this.clearForm();\n this.setState({ isLoading: false });\n };\n\n handleSubmitError = (e: ElementsXhrError) => {\n const { onSubmitError } = this.props;\n onSubmitError(e);\n this.setState({ isLoading: false });\n };\n\n addResinInfo = (): Object => {\n const { id, taskType, editMode } = this.props;\n const { dueDate } = this.state;\n const addedAssignees = this.getAddedAssignees();\n const removedAssignees = this.getRemovedAssignees();\n\n return {\n 'data-resin-taskid': id,\n 'data-resin-tasktype': taskType,\n 'data-resin-isediting': editMode === TASK_EDIT_MODE_EDIT,\n 'data-resin-numassigneesadded': addedAssignees.filter(assignee => assignee.target.type === 'user').length,\n 'data-resin-numgroupssadded': addedAssignees.filter(assignee => assignee.target.type === 'group').length,\n 'data-resin-numassigneesremoved': removedAssignees.length,\n 'data-resin-assigneesadded': addedAssignees.map(assignee => assignee.target.id),\n 'data-resin-assigneesremoved': removedAssignees.map(assignee => assignee.target.id),\n 'data-resin-duedate': dueDate && dueDate.getTime(),\n };\n };\n\n getAddedAssignees = (): Array<TaskCollabAssignee> => {\n // Added assignees are the ones in state that weren't in the prop\n const { approvers } = this.props;\n const { approvers: currentApprovers } = this.state;\n const approverIds = approvers.map(approver => approver.id);\n return currentApprovers.filter(currentApprover => approverIds.indexOf(currentApprover.id) === -1);\n };\n\n getRemovedAssignees = (): Array<TaskCollabAssignee> => {\n // Assignees to remove are the ones in the prop that cannot be found in state\n const { approvers } = this.props;\n const { approvers: currentApprovers } = this.state;\n const currentApproverIds = currentApprovers.map(currentApprover => currentApprover.id);\n return approvers.filter(approver => currentApproverIds.indexOf(approver.id) === -1);\n };\n\n handleValidSubmit = (): void => {\n const { id, createTask, editTask, editMode, taskType } = this.props;\n const { message, approvers: currentApprovers, dueDate, completionRule, isValid } = this.state;\n const dueDateString = dueDate && dueDate.toISOString();\n\n if (!isValid) return;\n\n this.setState({ isLoading: true });\n\n if (editMode === TASK_EDIT_MODE_EDIT && editTask) {\n editTask(\n {\n id,\n completion_rule: completionRule,\n description: message,\n due_at: dueDateString,\n addedAssignees: convertAssigneesToSelectorItems(this.getAddedAssignees()),\n removedAssignees: this.getRemovedAssignees(),\n },\n this.handleSubmitSuccess,\n this.handleSubmitError,\n );\n } else {\n createTask(\n message,\n convertAssigneesToSelectorItems(currentApprovers),\n taskType,\n dueDateString,\n completionRule,\n this.handleSubmitSuccess,\n this.handleSubmitError,\n );\n }\n };\n\n handleDueDateChange = (date: ?string): void => {\n let dateValue = null;\n if (date) {\n dateValue = new Date(date);\n // The date given to us is midnight of the date selected.\n // Modify date to be the end of day (minus 1 millisecond) for the given due date\n dateValue.setHours(23, 59, 59, 999);\n }\n this.setState({ dueDate: dateValue });\n this.validateForm('taskDueDate');\n };\n\n handleCompletionRuleChange = (event: SyntheticInputEvent<HTMLInputElement>) => {\n this.setState({ completionRule: event.target.checked ? TASK_COMPLETION_RULE_ANY : TASK_COMPLETION_RULE_ALL });\n };\n\n handleApproverSelectorInput = (value: any): void => {\n const { getApproverWithQuery = noop } = this.props;\n this.setState({ approverTextInput: value });\n getApproverWithQuery(value);\n };\n\n handleApproverSelectorSelect = (pills: Array<any>): void => {\n this.setState({\n approvers: this.state.approvers.concat(\n pills.map(pill => {\n return {\n id: '',\n target: pill.item,\n role: 'ASSIGNEE',\n type: 'task_collaborator',\n status: 'NOT_STARTED',\n permissions: { can_delete: false, can_update: false },\n };\n }),\n ),\n approverTextInput: '',\n });\n\n this.validateForm('taskAssignees');\n };\n\n handleApproverSelectorRemove = (option: any, index: number): void => {\n const approvers = [...this.state.approvers];\n approvers.splice(index, 1);\n this.setState({ approvers });\n this.validateForm('taskAssignees');\n };\n\n handleChangeMessage = (e: SyntheticInputEvent<HTMLTextAreaElement>) => {\n e.persist();\n this.setState({ message: e.currentTarget.value });\n this.validateForm('taskName');\n };\n\n handleCancelClick = () => {\n this.props.onCancel();\n };\n\n render() {\n const { approverSelectorContacts, className, error, isDisabled, intl, editMode, taskType } = this.props;\n const { dueDate, approvers, message, formValidityState, isLoading, completionRule } = this.state;\n const inputContainerClassNames = classNames('bcs-task-input-container', 'bcs-task-input-is-open', className);\n const isCreateEditMode = editMode === TASK_EDIT_MODE_CREATE;\n const selectedApprovers = convertAssigneesToSelectorItems(approvers);\n\n // filter out selected approvers\n // map to datalist item format\n const approverOptions = approverSelectorContacts.filter(\n ({ id }) => !selectedApprovers.find(({ value }) => value === id),\n );\n\n const pillSelectorOverlayClasses = classNames({\n scrollable: approverOptions.length > 4,\n });\n\n const submitButtonMessage = isCreateEditMode\n ? messages.tasksAddTaskFormSubmitLabel\n : messages.tasksEditTaskFormSubmitLabel;\n const shouldShowCompletionRule = approvers.length > 0;\n\n // Enable checkbox when there is a group or multiple users being assigned\n // TODO: consider setting contants for assignee types to src/constants.js\n // - move from src/features/collaborator-avatars/constants.js\n const isCompletionRuleCheckboxDisabled =\n approvers.filter(approver => approver.target.type === 'group').length <= 0 &&\n approvers.filter(approver => approver.target.type === 'user').length <= 1;\n\n const isCompletionRuleCheckboxChecked = completionRule === TASK_COMPLETION_RULE_ANY;\n const isForbiddenErrorOnEdit = isLoading || (getProp(error, 'status') === 403 && !isCreateEditMode);\n\n return (\n <div className={inputContainerClassNames} data-resin-component=\"taskform\">\n <div className=\"bcs-task-input-form-container\">\n <TaskError editMode={editMode} error={error} taskType={taskType} />\n <Form\n formValidityState={formValidityState}\n onInvalidSubmit={this.handleInvalidSubmit}\n onValidSubmit={this.handleValidSubmit}\n >\n <PillSelectorDropdown\n className={pillSelectorOverlayClasses}\n error={this.getErrorByFieldname('taskAssignees')}\n disabled={isForbiddenErrorOnEdit}\n inputProps={{ 'data-testid': 'task-form-assignee-input' }}\n isRequired\n label={<FormattedMessage {...messages.tasksAddTaskFormSelectAssigneesLabel} />}\n name=\"taskAssignees\"\n onBlur={() => this.validateForm('taskAssignees')}\n onInput={this.handleApproverSelectorInput}\n onRemove={this.handleApproverSelectorRemove}\n onSelect={this.handleApproverSelectorSelect}\n placeholder={intl.formatMessage(commentFormMessages.approvalAddAssignee)}\n selectedOptions={selectedApprovers}\n selectorOptions={approverOptions}\n shouldSetActiveItemOnOpen\n shouldClearUnmatchedInput\n validateForError={() => this.validateForm('taskAssignees')}\n >\n {approverOptions.map(({ id, name, item = {} }) => (\n <ContactDatalistItem\n key={id}\n data-testid=\"task-assignee-option\"\n name={name}\n subtitle={\n item.type === 'group' ? (\n <FormattedMessage {...messages.taskCreateGroupLabel} />\n ) : (\n item.email\n )\n }\n />\n ))}\n </PillSelectorDropdown>\n\n {shouldShowCompletionRule && (\n <>\n <FeatureFlag feature=\"activityFeed.tasks.assignToGroup\">\n <Checkbox\n data-testid=\"task-form-completion-rule-checkbox-group\"\n isChecked={isCompletionRuleCheckboxChecked}\n isDisabled={isCompletionRuleCheckboxDisabled || isForbiddenErrorOnEdit}\n label={<FormattedMessage {...messages.taskAnyCheckboxLabel} />}\n tooltip={intl.formatMessage(messages.taskAnyInfoGroupTooltip)}\n name=\"completionRule\"\n onChange={this.handleCompletionRuleChange}\n />\n </FeatureFlag>\n <FeatureFlag not feature=\"activityFeed.tasks.assignToGroup\">\n <Checkbox\n data-testid=\"task-form-completion-rule-checkbox\"\n isChecked={isCompletionRuleCheckboxChecked}\n isDisabled={isCompletionRuleCheckboxDisabled || isForbiddenErrorOnEdit}\n label={<FormattedMessage {...messages.taskAnyCheckboxLabel} />}\n tooltip={intl.formatMessage(messages.taskAnyInfoTooltip)}\n name=\"completionRule\"\n onChange={this.handleCompletionRuleChange}\n />\n </FeatureFlag>\n </>\n )}\n\n <TextArea\n className=\"bcs-task-name-input\"\n data-testid=\"task-form-name-input\"\n disabled={isDisabled || isForbiddenErrorOnEdit}\n error={this.getErrorByFieldname('taskName')}\n isRequired\n label={<FormattedMessage {...messages.tasksAddTaskFormMessageLabel} />}\n name=\"taskName\"\n onBlur={() => this.validateForm('taskName')}\n onChange={this.handleChangeMessage}\n placeholder={intl.formatMessage(commentFormMessages.commentWrite)}\n value={message}\n />\n <DatePicker\n className=\"bcs-task-add-due-date-input\"\n error={this.getErrorByFieldname('taskDueDate')}\n inputProps={{\n [INTERACTION_TARGET]: ACTIVITY_TARGETS.TASK_DATE_PICKER,\n 'data-testid': 'task-form-date-input',\n }}\n isAccessible\n isDisabled={isForbiddenErrorOnEdit}\n isKeyboardInputAllowed\n isRequired={false}\n label={<FormattedMessage {...messages.tasksAddTaskFormDueDateLabel} />}\n minDate={new Date()}\n name=\"taskDueDate\"\n onChange={this.handleDueDateChange}\n placeholder={intl.formatMessage(commentFormMessages.approvalSelectDate)}\n value={dueDate || undefined}\n />\n <ModalActions>\n <Button\n className=\"bcs-task-input-cancel-btn\"\n data-resin-target={ACTIVITY_TARGETS.APPROVAL_FORM_CANCEL}\n data-testid=\"task-form-cancel-button\"\n onClick={this.handleCancelClick}\n isDisabled={isLoading}\n type=\"button\"\n {...this.addResinInfo()}\n >\n <FormattedMessage {...messages.tasksAddTaskFormCancelLabel} />\n </Button>\n <PrimaryButton\n className=\"bcs-task-input-submit-btn\"\n data-resin-target={ACTIVITY_TARGETS.APPROVAL_FORM_POST}\n data-testid=\"task-form-submit-button\"\n isDisabled={isForbiddenErrorOnEdit}\n isLoading={isLoading}\n {...this.addResinInfo()}\n >\n <FormattedMessage {...submitButtonMessage} />\n </PrimaryButton>\n </ModalActions>\n </Form>\n </div>\n </div>\n );\n }\n}\n\n// For testing only\nexport { TaskForm as TaskFormUnwrapped };\nexport type { TaskFormConsumerProps as TaskFormProps };\n\nexport default injectIntl(TaskForm);\n"],"file":"TaskForm.js"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ *
3
+ * @file Static Versions Sidebar component
4
+ * @author Box
5
+ */
6
+ import * as React from 'react';
7
+ import { FormattedMessage } from 'react-intl';
8
+ import BoxDrive140 from '../../../illustration/BoxDrive140';
9
+ import { BackButton } from '../../common/nav-button';
10
+ import PrimaryButton from '../../../components/primary-button';
11
+ import { LoadingIndicatorWrapper } from '../../../components/loading-indicator';
12
+ import VersionsMenu from './VersionsMenu';
13
+ import messages from './messages';
14
+ import './StaticVersionsSidebar.scss';
15
+
16
+ var StaticVersionsSidebar = function StaticVersionsSidebar(_ref) {
17
+ var isLoading = _ref.isLoading,
18
+ onUpgradeClick = _ref.onUpgradeClick,
19
+ parentName = _ref.parentName,
20
+ showUpsellWithPicture = _ref.showUpsellWithPicture;
21
+ var versionTimestamp = new Date();
22
+ versionTimestamp.setDate(versionTimestamp.getDate() - 1);
23
+ var versions = ['1', '2', '3'].map(function (versionNumber) {
24
+ return {
25
+ id: versionNumber,
26
+ version_number: versionNumber,
27
+ type: 'file_version',
28
+ permissions: {
29
+ can_preview: true
30
+ },
31
+ created_at: versionTimestamp.toUTCString(),
32
+ modified_by: null,
33
+ size: 1875887,
34
+ trashed_at: null,
35
+ uploader_display_name: 'John Doe'
36
+ };
37
+ });
38
+ return React.createElement("div", {
39
+ className: "bcs-StaticVersionSidebar",
40
+ role: "tabpanel",
41
+ "data-resin-component": "preview",
42
+ "data-resin-feature": "versions"
43
+ }, React.createElement("div", {
44
+ className: "bcs-StaticVersionSidebar-header"
45
+ }, React.createElement("h3", {
46
+ className: "bcs-StaticVersionSidebar-title"
47
+ }, React.createElement(React.Fragment, null, React.createElement(BackButton, {
48
+ "data-resin-target": "back",
49
+ to: "/".concat(parentName)
50
+ }), React.createElement(FormattedMessage, messages.versionsTitle)))), React.createElement("div", {
51
+ className: "bcs-StaticVersionSidebar-content-wrapper"
52
+ }, React.createElement(LoadingIndicatorWrapper, {
53
+ className: "bcs-StaticVersionSidebar-content",
54
+ crawlerPosition: "top",
55
+ isLoading: isLoading
56
+ }, React.createElement(VersionsMenu, {
57
+ versions: versions,
58
+ fileId: "1",
59
+ versionCount: 3,
60
+ versionLimit: 3
61
+ }))), React.createElement("div", {
62
+ className: "bcs-StaticVersionSidebar-upsell-wrapper"
63
+ }, React.createElement("div", {
64
+ className: "bcs-StaticVersionSidebar-upsell"
65
+ }, showUpsellWithPicture && React.createElement(BoxDrive140, {
66
+ className: "bcs-StaticVersionSidebar-upsell-icon"
67
+ }), React.createElement("p", {
68
+ className: "bcs-StaticVersionSidebar-upsell-header"
69
+ }, React.createElement(FormattedMessage, messages.versionUpgradeLink)), React.createElement("p", null, React.createElement(FormattedMessage, messages.versionUpsell)), React.createElement(PrimaryButton, {
70
+ className: "bcs-StaticVersionSidebar-upsell-button",
71
+ "data-resin-target": "versioning_error_upgrade_cta",
72
+ onClick: onUpgradeClick,
73
+ type: "button"
74
+ }, React.createElement(FormattedMessage, messages.upgradeButton)))));
75
+ };
76
+
77
+ export default StaticVersionsSidebar;
78
+ //# sourceMappingURL=StaticVersionSidebar.js.map
@@ -0,0 +1,97 @@
1
+ /**
2
+ * @flow
3
+ * @file Static Versions Sidebar component
4
+ * @author Box
5
+ */
6
+
7
+ import * as React from 'react';
8
+ import { FormattedMessage } from 'react-intl';
9
+
10
+ import BoxDrive140 from '../../../illustration/BoxDrive140';
11
+
12
+ import { BackButton } from '../../common/nav-button';
13
+ import PrimaryButton from '../../../components/primary-button';
14
+ import { LoadingIndicatorWrapper } from '../../../components/loading-indicator';
15
+ import VersionsMenu from './VersionsMenu';
16
+
17
+ import messages from './messages';
18
+
19
+ import './StaticVersionsSidebar.scss';
20
+
21
+ type Props = {
22
+ isLoading: boolean,
23
+ onUpgradeClick: () => void,
24
+ parentName: string,
25
+ showUpsellWithPicture: boolean,
26
+ };
27
+
28
+ const StaticVersionsSidebar = ({ isLoading, onUpgradeClick, parentName, showUpsellWithPicture }: Props): React.Node => {
29
+ const versionTimestamp = new Date();
30
+ versionTimestamp.setDate(versionTimestamp.getDate() - 1);
31
+
32
+ const versions = ['1', '2', '3'].map(versionNumber => {
33
+ return {
34
+ id: versionNumber,
35
+ version_number: versionNumber,
36
+ type: 'file_version',
37
+ permissions: {
38
+ can_preview: true,
39
+ },
40
+ created_at: versionTimestamp.toUTCString(),
41
+ modified_by: null,
42
+ size: 1875887,
43
+ trashed_at: null,
44
+ uploader_display_name: 'John Doe',
45
+ };
46
+ });
47
+
48
+ return (
49
+ <div
50
+ className="bcs-StaticVersionSidebar"
51
+ role="tabpanel"
52
+ data-resin-component="preview"
53
+ data-resin-feature="versions"
54
+ >
55
+ <div className="bcs-StaticVersionSidebar-header">
56
+ <h3 className="bcs-StaticVersionSidebar-title">
57
+ <>
58
+ <BackButton data-resin-target="back" to={`/${parentName}`} />
59
+ <FormattedMessage {...messages.versionsTitle} />
60
+ </>
61
+ </h3>
62
+ </div>
63
+
64
+ <div className="bcs-StaticVersionSidebar-content-wrapper">
65
+ <LoadingIndicatorWrapper
66
+ className="bcs-StaticVersionSidebar-content"
67
+ crawlerPosition="top"
68
+ isLoading={isLoading}
69
+ >
70
+ <VersionsMenu versions={versions} fileId="1" versionCount={3} versionLimit={3} />
71
+ </LoadingIndicatorWrapper>
72
+ </div>
73
+
74
+ <div className="bcs-StaticVersionSidebar-upsell-wrapper">
75
+ <div className="bcs-StaticVersionSidebar-upsell">
76
+ {showUpsellWithPicture && <BoxDrive140 className="bcs-StaticVersionSidebar-upsell-icon" />}
77
+ <p className="bcs-StaticVersionSidebar-upsell-header">
78
+ <FormattedMessage {...messages.versionUpgradeLink} />
79
+ </p>
80
+ <p>
81
+ <FormattedMessage {...messages.versionUpsell} />
82
+ </p>
83
+ <PrimaryButton
84
+ className="bcs-StaticVersionSidebar-upsell-button"
85
+ data-resin-target="versioning_error_upgrade_cta"
86
+ onClick={onUpgradeClick}
87
+ type="button"
88
+ >
89
+ <FormattedMessage {...messages.upgradeButton} />
90
+ </PrimaryButton>
91
+ </div>
92
+ </div>
93
+ </div>
94
+ );
95
+ };
96
+
97
+ export default StaticVersionsSidebar;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/elements/content-sidebar/versions/StaticVersionSidebar.js"],"names":["React","FormattedMessage","BoxDrive140","BackButton","PrimaryButton","LoadingIndicatorWrapper","VersionsMenu","messages","StaticVersionsSidebar","isLoading","onUpgradeClick","parentName","showUpsellWithPicture","versionTimestamp","Date","setDate","getDate","versions","map","versionNumber","id","version_number","type","permissions","can_preview","created_at","toUTCString","modified_by","size","trashed_at","uploader_display_name","versionsTitle","versionUpgradeLink","versionUpsell","upgradeButton"],"mappings":"AAAA;;;;;AAMA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,gBAAT,QAAiC,YAAjC;AAEA,OAAOC,WAAP,MAAwB,mCAAxB;AAEA,SAASC,UAAT,QAA2B,yBAA3B;AACA,OAAOC,aAAP,MAA0B,oCAA1B;AACA,SAASC,uBAAT,QAAwC,uCAAxC;AACA,OAAOC,YAAP,MAAyB,gBAAzB;AAEA,OAAOC,QAAP,MAAqB,YAArB;AAEA,OAAO,8BAAP;;AASA,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAwB,OAAyF;AAAA,MAAtFC,SAAsF,QAAtFA,SAAsF;AAAA,MAA3EC,cAA2E,QAA3EA,cAA2E;AAAA,MAA3DC,UAA2D,QAA3DA,UAA2D;AAAA,MAA/CC,qBAA+C,QAA/CA,qBAA+C;AACnH,MAAMC,gBAAgB,GAAG,IAAIC,IAAJ,EAAzB;AACAD,EAAAA,gBAAgB,CAACE,OAAjB,CAAyBF,gBAAgB,CAACG,OAAjB,KAA6B,CAAtD;AAEA,MAAMC,QAAQ,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgBC,GAAhB,CAAoB,UAAAC,aAAa,EAAI;AAClD,WAAO;AACHC,MAAAA,EAAE,EAAED,aADD;AAEHE,MAAAA,cAAc,EAAEF,aAFb;AAGHG,MAAAA,IAAI,EAAE,cAHH;AAIHC,MAAAA,WAAW,EAAE;AACTC,QAAAA,WAAW,EAAE;AADJ,OAJV;AAOHC,MAAAA,UAAU,EAAEZ,gBAAgB,CAACa,WAAjB,EAPT;AAQHC,MAAAA,WAAW,EAAE,IARV;AASHC,MAAAA,IAAI,EAAE,OATH;AAUHC,MAAAA,UAAU,EAAE,IAVT;AAWHC,MAAAA,qBAAqB,EAAE;AAXpB,KAAP;AAaH,GAdgB,CAAjB;AAgBA,SACI;AACI,IAAA,SAAS,EAAC,0BADd;AAEI,IAAA,IAAI,EAAC,UAFT;AAGI,4BAAqB,SAHzB;AAII,0BAAmB;AAJvB,KAMI;AAAK,IAAA,SAAS,EAAC;AAAf,KACI;AAAI,IAAA,SAAS,EAAC;AAAd,KACI,0CACI,oBAAC,UAAD;AAAY,yBAAkB,MAA9B;AAAqC,IAAA,EAAE,aAAMnB,UAAN;AAAvC,IADJ,EAEI,oBAAC,gBAAD,EAAsBJ,QAAQ,CAACwB,aAA/B,CAFJ,CADJ,CADJ,CANJ,EAeI;AAAK,IAAA,SAAS,EAAC;AAAf,KACI,oBAAC,uBAAD;AACI,IAAA,SAAS,EAAC,kCADd;AAEI,IAAA,eAAe,EAAC,KAFpB;AAGI,IAAA,SAAS,EAAEtB;AAHf,KAKI,oBAAC,YAAD;AAAc,IAAA,QAAQ,EAAEQ,QAAxB;AAAkC,IAAA,MAAM,EAAC,GAAzC;AAA6C,IAAA,YAAY,EAAE,CAA3D;AAA8D,IAAA,YAAY,EAAE;AAA5E,IALJ,CADJ,CAfJ,EAyBI;AAAK,IAAA,SAAS,EAAC;AAAf,KACI;AAAK,IAAA,SAAS,EAAC;AAAf,KACKL,qBAAqB,IAAI,oBAAC,WAAD;AAAa,IAAA,SAAS,EAAC;AAAvB,IAD9B,EAEI;AAAG,IAAA,SAAS,EAAC;AAAb,KACI,oBAAC,gBAAD,EAAsBL,QAAQ,CAACyB,kBAA/B,CADJ,CAFJ,EAKI,+BACI,oBAAC,gBAAD,EAAsBzB,QAAQ,CAAC0B,aAA/B,CADJ,CALJ,EAQI,oBAAC,aAAD;AACI,IAAA,SAAS,EAAC,wCADd;AAEI,yBAAkB,8BAFtB;AAGI,IAAA,OAAO,EAAEvB,cAHb;AAII,IAAA,IAAI,EAAC;AAJT,KAMI,oBAAC,gBAAD,EAAsBH,QAAQ,CAAC2B,aAA/B,CANJ,CARJ,CADJ,CAzBJ,CADJ;AA+CH,CAnED;;AAqEA,eAAe1B,qBAAf","sourcesContent":["/**\n * @flow\n * @file Static Versions Sidebar component\n * @author Box\n */\n\nimport * as React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport BoxDrive140 from '../../../illustration/BoxDrive140';\n\nimport { BackButton } from '../../common/nav-button';\nimport PrimaryButton from '../../../components/primary-button';\nimport { LoadingIndicatorWrapper } from '../../../components/loading-indicator';\nimport VersionsMenu from './VersionsMenu';\n\nimport messages from './messages';\n\nimport './StaticVersionsSidebar.scss';\n\ntype Props = {\n isLoading: boolean,\n onUpgradeClick: () => void,\n parentName: string,\n showUpsellWithPicture: boolean,\n};\n\nconst StaticVersionsSidebar = ({ isLoading, onUpgradeClick, parentName, showUpsellWithPicture }: Props): React.Node => {\n const versionTimestamp = new Date();\n versionTimestamp.setDate(versionTimestamp.getDate() - 1);\n\n const versions = ['1', '2', '3'].map(versionNumber => {\n return {\n id: versionNumber,\n version_number: versionNumber,\n type: 'file_version',\n permissions: {\n can_preview: true,\n },\n created_at: versionTimestamp.toUTCString(),\n modified_by: null,\n size: 1875887,\n trashed_at: null,\n uploader_display_name: 'John Doe',\n };\n });\n\n return (\n <div\n className=\"bcs-StaticVersionSidebar\"\n role=\"tabpanel\"\n data-resin-component=\"preview\"\n data-resin-feature=\"versions\"\n >\n <div className=\"bcs-StaticVersionSidebar-header\">\n <h3 className=\"bcs-StaticVersionSidebar-title\">\n <>\n <BackButton data-resin-target=\"back\" to={`/${parentName}`} />\n <FormattedMessage {...messages.versionsTitle} />\n </>\n </h3>\n </div>\n\n <div className=\"bcs-StaticVersionSidebar-content-wrapper\">\n <LoadingIndicatorWrapper\n className=\"bcs-StaticVersionSidebar-content\"\n crawlerPosition=\"top\"\n isLoading={isLoading}\n >\n <VersionsMenu versions={versions} fileId=\"1\" versionCount={3} versionLimit={3} />\n </LoadingIndicatorWrapper>\n </div>\n\n <div className=\"bcs-StaticVersionSidebar-upsell-wrapper\">\n <div className=\"bcs-StaticVersionSidebar-upsell\">\n {showUpsellWithPicture && <BoxDrive140 className=\"bcs-StaticVersionSidebar-upsell-icon\" />}\n <p className=\"bcs-StaticVersionSidebar-upsell-header\">\n <FormattedMessage {...messages.versionUpgradeLink} />\n </p>\n <p>\n <FormattedMessage {...messages.versionUpsell} />\n </p>\n <PrimaryButton\n className=\"bcs-StaticVersionSidebar-upsell-button\"\n data-resin-target=\"versioning_error_upgrade_cta\"\n onClick={onUpgradeClick}\n type=\"button\"\n >\n <FormattedMessage {...messages.upgradeButton} />\n </PrimaryButton>\n </div>\n </div>\n </div>\n );\n};\n\nexport default StaticVersionsSidebar;\n"],"file":"StaticVersionSidebar.js"}
@@ -0,0 +1,67 @@
1
+ @import '../../../styles/variables';
2
+ @import '../../common/variables';
3
+
4
+ .bcs-StaticVersionSidebar {
5
+ position: relative;
6
+ width: 341px; // 1px extra to account for the margin left
7
+ margin-left: -1px; // -1px to make nav button hover not have blank space
8
+ border-left: 1px solid $bdl-gray-10;
9
+
10
+ .bcs-StaticVersionSidebar-header {
11
+ display: flex;
12
+ align-items: center;
13
+ height: 60px;
14
+ margin: 0 25px;
15
+ border-bottom: 1px solid $bdl-gray-10;
16
+
17
+ .bcs-StaticVersionSidebar-title {
18
+ display: flex;
19
+ font-size: 16px;
20
+ }
21
+ }
22
+
23
+ .bcs-StaticVersionSidebar-content-wrapper {
24
+ position: absolute;
25
+ width: calc(100% - 20px);
26
+
27
+ .bcs-StaticVersionSidebar-content {
28
+ padding-left: 25px;
29
+ pointer-events: none;
30
+
31
+ button[data-resin-iscurrent='true'].bcs-VersionsItemButton {
32
+ width: 100%;
33
+ background-color: $hover-blue-background;
34
+ border: 1px solid $bdl-box-blue;
35
+ }
36
+ }
37
+ }
38
+ }
39
+
40
+ .bcs-StaticVersionSidebar-upsell-wrapper {
41
+ position: relative;
42
+ height: 100%;
43
+ text-align: center;
44
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 30%);
45
+
46
+ .bcs-StaticVersionSidebar-upsell {
47
+ position: absolute;
48
+ top: 30%;
49
+ padding: 48px;
50
+
51
+ .bcs-StaticVersionSidebar-upsell-icon {
52
+ width: 80px;
53
+ height: 80px;
54
+ }
55
+
56
+ .bcs-StaticVersionSidebar-upsell-header {
57
+ margin: 0 0 10px;
58
+ font-weight: bold;
59
+ }
60
+
61
+ .bcs-StaticVersionSidebar-upsell-button {
62
+ margin-top: -8px;
63
+ padding: 10px 15px;
64
+ border-radius: 5px;
65
+ }
66
+ }
67
+ }
@@ -16,6 +16,7 @@ import messages from './messages';
16
16
  import SidebarContent from '../SidebarContent';
17
17
  import VersionsMenu from './VersionsMenu';
18
18
  import { BackButton } from '../../common/nav-button';
19
+ import PlainButton from '../../../components/plain-button/PlainButton';
19
20
  import { DEFAULT_FETCH_END } from '../../../constants';
20
21
  import { LoadingIndicatorWrapper } from '../../../components/loading-indicator';
21
22
  import './VersionsSidebar.scss';
@@ -23,14 +24,16 @@ var MAX_VERSIONS = DEFAULT_FETCH_END;
23
24
 
24
25
  var VersionsSidebar = function VersionsSidebar(_ref) {
25
26
  var error = _ref.error,
27
+ errorTitle = _ref.errorTitle,
28
+ onUpgradeClick = _ref.onUpgradeClick,
26
29
  isLoading = _ref.isLoading,
27
30
  parentName = _ref.parentName,
28
31
  versions = _ref.versions,
29
- rest = _objectWithoutProperties(_ref, ["error", "isLoading", "parentName", "versions"]);
32
+ rest = _objectWithoutProperties(_ref, ["error", "errorTitle", "onUpgradeClick", "isLoading", "parentName", "versions"]);
30
33
 
31
34
  var showLimit = versions.length >= MAX_VERSIONS;
32
35
  var showVersions = !!versions.length;
33
- var showEmpty = !isLoading && !showVersions;
36
+ var showEmpty = !isLoading && !showVersions && !onUpgradeClick;
34
37
  var showError = !!error;
35
38
  return React.createElement(SidebarContent, {
36
39
  className: "bcs-Versions",
@@ -45,8 +48,13 @@ var VersionsSidebar = function VersionsSidebar(_ref) {
45
48
  crawlerPosition: "top",
46
49
  isLoading: isLoading
47
50
  }, showError && React.createElement(InlineError, {
48
- title: React.createElement(FormattedMessage, messages.versionServerError)
49
- }, React.createElement(FormattedMessage, error)), showEmpty && React.createElement("div", {
51
+ title: React.createElement(FormattedMessage, errorTitle)
52
+ }, React.createElement(FormattedMessage, error), onUpgradeClick && React.createElement(PlainButton, {
53
+ onClick: onUpgradeClick,
54
+ "data-resin-target": "versioning_error_error_message_upgrade_cta",
55
+ type: "button",
56
+ className: "bcs-Versions-upgrade"
57
+ }, React.createElement(FormattedMessage, messages.versionUpgradeLink))), showEmpty && React.createElement("div", {
50
58
  className: "bcs-Versions-empty"
51
59
  }, React.createElement(FormattedMessage, messages.versionsEmpty)), showVersions && React.createElement("div", {
52
60
  className: "bcs-Versions-menu"