box-ui-elements 15.0.0-beta.7 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/CONTRIBUTING.md +3 -1
  2. package/dist/explorer.css +1 -1
  3. package/dist/explorer.js +58 -26
  4. package/dist/openwith.css +1 -1
  5. package/dist/openwith.js +10 -17
  6. package/dist/picker.css +1 -1
  7. package/dist/picker.js +12 -19
  8. package/dist/preview.css +1 -1
  9. package/dist/preview.js +56 -24
  10. package/dist/sharing.css +1 -1
  11. package/dist/sharing.js +54 -22
  12. package/dist/sidebar.css +1 -1
  13. package/dist/sidebar.js +56 -24
  14. package/dist/uploader.css +1 -1
  15. package/dist/uploader.js +12 -19
  16. package/es/api/uploads/UploadsReachability.js.flow +2 -2
  17. package/es/api/uploads/UploadsReachability.js.map +1 -1
  18. package/es/common/messages.js +4 -0
  19. package/es/common/messages.js.flow +5 -0
  20. package/es/common/messages.js.map +1 -1
  21. package/es/common/types/core.js.flow +2 -0
  22. package/es/common/types/core.js.map +1 -1
  23. package/es/components/avatar/UnknownUserAvatar.js +6 -9
  24. package/es/components/avatar/UnknownUserAvatar.js.map +1 -1
  25. package/es/components/close-button/CloseButton.js +24 -0
  26. package/es/components/close-button/CloseButton.js.flow +26 -0
  27. package/es/components/close-button/CloseButton.js.map +1 -0
  28. package/es/components/close-button/CloseButton.scss +10 -0
  29. package/es/components/close-button/CloseButton.stories.js +14 -0
  30. package/es/components/close-button/CloseButton.stories.js.map +1 -0
  31. package/es/components/close-button/index.js +2 -0
  32. package/es/components/close-button/index.js.flow +2 -0
  33. package/es/components/close-button/index.js.map +1 -0
  34. package/es/components/date-picker/AccessiblePikaday.js +113 -0
  35. package/es/components/date-picker/AccessiblePikaday.js.map +1 -0
  36. package/es/components/date-picker/DatePicker.js +426 -106
  37. package/es/components/date-picker/DatePicker.js.map +1 -1
  38. package/es/components/date-picker/DatePicker.scss +32 -22
  39. package/es/components/date-picker/DatePicker.stories.js +10 -0
  40. package/es/components/date-picker/DatePicker.stories.js.map +1 -1
  41. package/es/components/date-picker/_pikaday.scss +8 -2
  42. package/es/components/flyout/Flyout.js +13 -3
  43. package/es/components/flyout/Flyout.js.flow +14 -3
  44. package/es/components/flyout/Flyout.js.map +1 -1
  45. package/es/components/flyout/Flyout.scss +40 -0
  46. package/es/components/flyout/FlyoutContext.js +6 -0
  47. package/es/components/flyout/FlyoutContext.js.flow +9 -0
  48. package/es/components/flyout/FlyoutContext.js.map +1 -0
  49. package/es/components/flyout/OverlayHeader.js +33 -0
  50. package/es/components/flyout/OverlayHeader.js.map +1 -0
  51. package/es/components/flyout/OverlayHeader.scss +9 -0
  52. package/es/components/flyout/_variables.scss +1 -0
  53. package/es/components/flyout/index.js +2 -0
  54. package/es/components/flyout/index.js.flow +2 -0
  55. package/es/components/flyout/index.js.map +1 -1
  56. package/es/components/image-tooltip/ImageTooltip.js +1 -2
  57. package/es/components/image-tooltip/ImageTooltip.js.map +1 -1
  58. package/es/components/media-query/constants.js +26 -0
  59. package/es/components/media-query/constants.js.flow +32 -0
  60. package/es/components/media-query/constants.js.map +1 -0
  61. package/es/components/media-query/index.js +3 -0
  62. package/es/components/media-query/index.js.flow +4 -0
  63. package/es/components/media-query/index.js.map +1 -0
  64. package/es/components/media-query/stories/MediaQuery.stories.js +37 -0
  65. package/es/components/media-query/stories/MediaQuery.stories.js.flow +80 -0
  66. package/es/components/media-query/stories/MediaQuery.stories.js.map +1 -0
  67. package/es/components/media-query/types.js +2 -0
  68. package/es/components/media-query/types.js.flow +29 -0
  69. package/es/components/media-query/types.js.map +1 -0
  70. package/es/components/media-query/useMediaQuery.js +91 -0
  71. package/es/components/media-query/useMediaQuery.js.flow +97 -0
  72. package/es/components/media-query/useMediaQuery.js.map +1 -0
  73. package/es/components/media-query/withMediaQuery.js +21 -0
  74. package/es/components/media-query/withMediaQuery.js.flow +23 -0
  75. package/es/components/media-query/withMediaQuery.js.map +1 -0
  76. package/es/components/modal/Modal.scss +27 -0
  77. package/es/components/preview/previewIcons.js +4 -0
  78. package/es/components/preview/previewIcons.js.map +1 -1
  79. package/es/components/search-form/SearchForm.scss +0 -5
  80. package/es/components/selector-dropdown/SelectorDropdown.js +5 -3
  81. package/es/components/selector-dropdown/SelectorDropdown.js.flow +3 -3
  82. package/es/components/selector-dropdown/SelectorDropdown.js.map +1 -1
  83. package/es/components/tab-view/Tabs.scss +0 -4
  84. package/es/components/tooltip/Tooltip.js +21 -4
  85. package/es/components/tooltip/Tooltip.js.map +1 -1
  86. package/es/constants.js +1 -0
  87. package/es/constants.js.flow +1 -0
  88. package/es/constants.js.map +1 -1
  89. package/es/elements/content-open-with/IconFileMap.js +0 -2
  90. package/es/elements/content-open-with/IconFileMap.js.flow +0 -2
  91. package/es/elements/content-open-with/IconFileMap.js.map +1 -1
  92. package/es/elements/content-sidebar/Sidebar.js +2 -1
  93. package/es/elements/content-sidebar/Sidebar.js.flow +1 -1
  94. package/es/elements/content-sidebar/Sidebar.js.map +1 -1
  95. package/es/elements/content-sidebar/activity-feed/common/delete-confirmation/DeleteConfirmation.scss +3 -3
  96. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js +14 -4
  97. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.flow +18 -5
  98. package/es/elements/content-sidebar/activity-feed/task-form/TaskForm.js.map +1 -1
  99. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js +78 -0
  100. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.flow +97 -0
  101. package/es/elements/content-sidebar/versions/StaticVersionSidebar.js.map +1 -0
  102. package/es/elements/content-sidebar/versions/StaticVersionsSidebar.scss +67 -0
  103. package/es/elements/content-sidebar/versions/VersionsSidebar.js +12 -4
  104. package/es/elements/content-sidebar/versions/VersionsSidebar.js.flow +16 -3
  105. package/es/elements/content-sidebar/versions/VersionsSidebar.js.map +1 -1
  106. package/es/elements/content-sidebar/versions/VersionsSidebar.scss +5 -0
  107. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js +42 -10
  108. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.flow +42 -7
  109. package/es/elements/content-sidebar/versions/VersionsSidebarContainer.js.map +1 -1
  110. package/es/elements/content-sidebar/versions/flowTypes.js.flow +1 -0
  111. package/es/elements/content-sidebar/versions/messages.js +20 -0
  112. package/es/elements/content-sidebar/versions/messages.js.flow +28 -0
  113. package/es/elements/content-sidebar/versions/messages.js.map +1 -1
  114. package/es/features/classification/constants.js +2 -1
  115. package/es/features/classification/constants.js.flow +2 -0
  116. package/es/features/classification/constants.js.map +1 -1
  117. package/es/features/classification/flowTypes.js +1 -0
  118. package/es/features/classification/flowTypes.js.flow +7 -1
  119. package/es/features/classification/flowTypes.js.map +1 -1
  120. package/es/features/classification/security-controls/SecurityControls.js +3 -4
  121. package/es/features/classification/security-controls/SecurityControls.js.flow +3 -4
  122. package/es/features/classification/security-controls/SecurityControls.js.map +1 -1
  123. package/es/features/classification/security-controls/SecurityControlsItem.js +1 -1
  124. package/es/features/classification/security-controls/SecurityControlsItem.js.flow +20 -17
  125. package/es/features/classification/security-controls/SecurityControlsItem.js.map +1 -1
  126. package/es/features/classification/security-controls/SecurityControlsItem.scss +4 -0
  127. package/es/features/classification/security-controls/SecurityControlsModal.js +2 -2
  128. package/es/features/classification/security-controls/SecurityControlsModal.js.flow +2 -2
  129. package/es/features/classification/security-controls/SecurityControlsModal.js.map +1 -1
  130. package/es/features/classification/security-controls/messages.js +4 -0
  131. package/es/features/classification/security-controls/messages.js.flow +5 -0
  132. package/es/features/classification/security-controls/messages.js.map +1 -1
  133. package/es/features/classification/security-controls/utils.js +56 -35
  134. package/es/features/classification/security-controls/utils.js.flow +51 -27
  135. package/es/features/classification/security-controls/utils.js.map +1 -1
  136. package/es/features/collapsible-sidebar/CollapsibleSidebar.js +9 -3
  137. package/es/features/collapsible-sidebar/CollapsibleSidebar.js.flow +13 -5
  138. package/es/features/collapsible-sidebar/CollapsibleSidebar.js.map +1 -1
  139. package/es/features/collapsible-sidebar/CollapsibleSidebar.scss +35 -3
  140. package/es/features/content-explorer/content-explorer/ContentExplorer.scss +1 -1
  141. package/es/features/content-explorer/item-list/ItemList.js +1 -0
  142. package/es/features/content-explorer/item-list/ItemList.js.flow +1 -0
  143. package/es/features/content-explorer/item-list/ItemList.js.map +1 -1
  144. package/es/features/content-explorer/item-list/ItemListName.js +13 -2
  145. package/es/features/content-explorer/item-list/ItemListName.js.flow +3 -2
  146. package/es/features/content-explorer/item-list/ItemListName.js.map +1 -1
  147. package/es/features/header-flyout/HeaderFlyout.js +8 -10
  148. package/es/features/header-flyout/HeaderFlyout.js.flow +4 -8
  149. package/es/features/header-flyout/HeaderFlyout.js.map +1 -1
  150. package/es/features/header-flyout/styles/HeaderFlyout.scss +54 -15
  151. package/es/features/header-flyout/styles/_variables.scss +4 -0
  152. package/es/features/message-center/components/message-center-modal/MessageCenterModal.js +1 -0
  153. package/es/features/message-center/components/message-center-modal/MessageCenterModal.js.flow +1 -0
  154. package/es/features/message-center/components/message-center-modal/MessageCenterModal.js.map +1 -1
  155. package/es/features/presence/PresenceCollaborator.js +90 -0
  156. package/es/features/presence/PresenceCollaborator.js.flow +81 -0
  157. package/es/features/presence/PresenceCollaborator.js.map +1 -0
  158. package/es/features/presence/PresenceCollaborator.scss +28 -0
  159. package/es/features/presence/PresenceCollaboratorsList.js +9 -57
  160. package/es/features/presence/PresenceCollaboratorsList.js.flow +7 -58
  161. package/es/features/presence/PresenceCollaboratorsList.js.map +1 -1
  162. package/es/features/presence/PresenceCollaboratorsList.scss +8 -35
  163. package/es/features/quick-search/QuickSearch.js +4 -2
  164. package/es/features/quick-search/QuickSearch.js.flow +13 -1
  165. package/es/features/quick-search/QuickSearch.js.map +1 -1
  166. package/es/features/unified-share-modal/SharedLinkSection.js +9 -20
  167. package/es/features/unified-share-modal/SharedLinkSection.js.flow +6 -27
  168. package/es/features/unified-share-modal/SharedLinkSection.js.map +1 -1
  169. package/es/features/unified-share-modal/UnifiedShareForm.js +95 -53
  170. package/es/features/unified-share-modal/UnifiedShareForm.js.flow +70 -14
  171. package/es/features/unified-share-modal/UnifiedShareForm.js.map +1 -1
  172. package/es/features/unified-share-modal/UnifiedShareModal.scss +3 -0
  173. package/es/features/unified-share-modal/flowTypes.js.flow +6 -0
  174. package/es/features/unified-share-modal/flowTypes.js.map +1 -1
  175. package/es/features/unified-share-modal/messages.js +8 -0
  176. package/es/features/unified-share-modal/messages.js.flow +10 -0
  177. package/es/features/unified-share-modal/messages.js.map +1 -1
  178. package/es/features/unified-share-modal/utils/mergeContacts.js +13 -10
  179. package/es/features/unified-share-modal/utils/mergeContacts.js.flow +4 -2
  180. package/es/features/unified-share-modal/utils/mergeContacts.js.map +1 -1
  181. package/es/icon/content/FileXbd32.js +39 -0
  182. package/es/icon/content/FileXbd32.js.flow +38 -0
  183. package/es/icon/content/FileXbd32.js.map +1 -0
  184. package/es/icon/content/FileXbd32.stories.js +13 -0
  185. package/es/icon/content/FileXbd32.stories.js.map +1 -0
  186. package/es/icon/content/FileXdw32.js +39 -0
  187. package/es/icon/content/FileXdw32.js.flow +38 -0
  188. package/es/icon/content/FileXdw32.js.map +1 -0
  189. package/es/icon/content/FileXdw32.stories.js +13 -0
  190. package/es/icon/content/FileXdw32.stories.js.map +1 -0
  191. package/es/icon/content/RetentionPolicyModifiable32.js +36 -0
  192. package/es/icon/content/RetentionPolicyModifiable32.js.flow +31 -0
  193. package/es/icon/content/RetentionPolicyModifiable32.js.map +1 -0
  194. package/es/icon/content/RetentionPolicyModifiable32.stories.js +13 -0
  195. package/es/icon/content/RetentionPolicyModifiable32.stories.js.map +1 -0
  196. package/es/icon/content/RetentionPolicyNonModifiable32.js +36 -0
  197. package/es/icon/content/RetentionPolicyNonModifiable32.js.flow +31 -0
  198. package/es/icon/content/RetentionPolicyNonModifiable32.js.map +1 -0
  199. package/es/icon/content/RetentionPolicyNonModifiable32.stories.js +13 -0
  200. package/es/icon/content/RetentionPolicyNonModifiable32.stories.js.map +1 -0
  201. package/es/icons/avatars/UnknownUserAvatar.js +10 -34
  202. package/es/icons/avatars/UnknownUserAvatar.js.map +1 -1
  203. package/es/icons/file-icon/FileIcon.js +8 -2
  204. package/es/icons/file-icon/FileIcon.js.flow +2 -2
  205. package/es/icons/file-icon/FileIcon.js.map +1 -1
  206. package/es/icons/general/IconSearch.js +1 -1
  207. package/es/icons/general/IconSearch.js.flow +1 -1
  208. package/es/icons/general/IconSearch.js.map +1 -1
  209. package/es/icons/general/IconSearchJuicy.js +30 -0
  210. package/es/icons/general/IconSearchJuicy.js.flow +26 -0
  211. package/es/icons/general/IconSearchJuicy.js.map +1 -0
  212. package/es/icons/google-docs/IconGoogle.js +89 -0
  213. package/es/icons/google-docs/IconGoogle.js.flow +57 -0
  214. package/es/icons/google-docs/IconGoogle.js.map +1 -0
  215. package/es/icons/item-icon/ItemIcon.js +4 -0
  216. package/es/icons/item-icon/ItemIcon.js.map +1 -1
  217. package/es/icons/microsoft-office/IconOffice.js +80 -0
  218. package/es/icons/microsoft-office/IconOffice.js.flow +45 -0
  219. package/es/icons/microsoft-office/IconOffice.js.map +1 -0
  220. package/es/illustration/EmailVerification140.js +111 -0
  221. package/es/illustration/EmailVerification140.js.flow +102 -0
  222. package/es/illustration/EmailVerification140.js.map +1 -0
  223. package/es/illustration/EmailVerification140.stories.js +13 -0
  224. package/es/illustration/EmailVerification140.stories.js.map +1 -0
  225. package/es/src/components/close-button/CloseButton.d.ts +9 -0
  226. package/es/src/components/close-button/CloseButton.stories.d.ts +9 -0
  227. package/es/src/components/close-button/__tests__/CloseButton.stories.test.d.ts +0 -0
  228. package/es/src/components/close-button/__tests__/CloseButton.test.d.ts +1 -0
  229. package/es/src/components/close-button/index.d.ts +1 -0
  230. package/es/src/components/date-picker/AccessiblePikaday.d.ts +16 -0
  231. package/es/src/components/date-picker/DatePicker.d.ts +33 -6
  232. package/es/src/components/date-picker/DatePicker.stories.d.ts +2 -1
  233. package/es/src/components/flyout/OverlayHeader.d.ts +10 -0
  234. package/es/src/components/tooltip/Tooltip.d.ts +4 -3
  235. package/es/src/icon/content/FileXbd32.d.ts +13 -0
  236. package/es/src/icon/content/FileXbd32.stories.d.ts +9 -0
  237. package/es/src/icon/content/FileXdw32.d.ts +13 -0
  238. package/es/src/icon/content/FileXdw32.stories.d.ts +9 -0
  239. package/es/src/icon/content/RetentionPolicyModifiable32.d.ts +13 -0
  240. package/es/src/icon/content/RetentionPolicyModifiable32.stories.d.ts +9 -0
  241. package/es/src/icon/content/RetentionPolicyNonModifiable32.d.ts +13 -0
  242. package/es/src/icon/content/RetentionPolicyNonModifiable32.stories.d.ts +9 -0
  243. package/es/src/icons/avatars/UnknownUserAvatar.d.ts +0 -1
  244. package/es/src/icons/general/IconSearchJuicy.d.ts +3 -0
  245. package/es/src/icons/general/__tests__/IconSearchJuicy.test.d.ts +1 -0
  246. package/es/src/icons/google-docs/IconGoogle.d.ts +12 -0
  247. package/es/src/icons/google-docs/__tests__/IconGoogle.test.d.ts +1 -0
  248. package/es/src/icons/item-icon/ItemIcon.d.ts +2 -0
  249. package/es/src/icons/microsoft-office/IconOffice.d.ts +12 -0
  250. package/es/src/icons/microsoft-office/__tests__/IconOffice.test.d.ts +1 -0
  251. package/es/src/illustration/EmailVerification140.d.ts +13 -0
  252. package/es/src/illustration/EmailVerification140.stories.d.ts +9 -0
  253. package/es/src/styles/variables.d.ts +9 -0
  254. package/es/styles/_variables.scss +1 -0
  255. package/es/styles/common/_forms.scss +6 -0
  256. package/es/styles/constants/_layout.scss +3 -0
  257. package/es/styles/constants/_media-queries.scss +15 -0
  258. package/es/styles/variables.js +18 -0
  259. package/es/styles/variables.js.flow +10 -1
  260. package/es/styles/variables.js.map +1 -1
  261. package/es/utils/Browser.js +12 -0
  262. package/es/utils/Browser.js.flow +10 -0
  263. package/es/utils/Browser.js.map +1 -1
  264. package/es/utils/validators.js +26 -4
  265. package/es/utils/validators.js.flow +25 -3
  266. package/es/utils/validators.js.map +1 -1
  267. package/i18n/bn-IN.js +12 -0
  268. package/i18n/bn-IN.properties +24 -0
  269. package/i18n/da-DK.js +12 -0
  270. package/i18n/da-DK.properties +24 -0
  271. package/i18n/de-DE.js +12 -0
  272. package/i18n/de-DE.properties +24 -0
  273. package/i18n/en-AU.js +12 -0
  274. package/i18n/en-AU.properties +24 -0
  275. package/i18n/en-CA.js +12 -0
  276. package/i18n/en-CA.properties +24 -0
  277. package/i18n/en-GB.js +12 -0
  278. package/i18n/en-GB.properties +24 -0
  279. package/i18n/en-US.js +12 -0
  280. package/i18n/en-US.properties +24 -0
  281. package/i18n/en-x-pseudo.js +12 -0
  282. package/i18n/es-419.js +12 -0
  283. package/i18n/es-419.properties +24 -0
  284. package/i18n/es-ES.js +12 -0
  285. package/i18n/es-ES.properties +24 -0
  286. package/i18n/fi-FI.js +12 -0
  287. package/i18n/fi-FI.properties +24 -0
  288. package/i18n/fr-CA.js +12 -0
  289. package/i18n/fr-CA.properties +24 -0
  290. package/i18n/fr-FR.js +12 -0
  291. package/i18n/fr-FR.properties +24 -0
  292. package/i18n/hi-IN.js +12 -0
  293. package/i18n/hi-IN.properties +24 -0
  294. package/i18n/it-IT.js +12 -0
  295. package/i18n/it-IT.properties +24 -0
  296. package/i18n/ja-JP.js +25 -13
  297. package/i18n/ja-JP.properties +37 -13
  298. package/i18n/ko-KR.js +12 -0
  299. package/i18n/ko-KR.properties +24 -0
  300. package/i18n/nb-NO.js +12 -0
  301. package/i18n/nb-NO.properties +24 -0
  302. package/i18n/nl-NL.js +12 -0
  303. package/i18n/nl-NL.properties +24 -0
  304. package/i18n/pl-PL.js +12 -0
  305. package/i18n/pl-PL.properties +24 -0
  306. package/i18n/pt-BR.js +12 -0
  307. package/i18n/pt-BR.properties +24 -0
  308. package/i18n/ru-RU.js +12 -0
  309. package/i18n/ru-RU.properties +24 -0
  310. package/i18n/sv-SE.js +12 -0
  311. package/i18n/sv-SE.properties +24 -0
  312. package/i18n/tr-TR.js +12 -0
  313. package/i18n/tr-TR.properties +24 -0
  314. package/i18n/zh-CN.js +12 -0
  315. package/i18n/zh-CN.properties +24 -0
  316. package/i18n/zh-TW.js +12 -0
  317. package/i18n/zh-TW.properties +24 -0
  318. package/package.json +8 -5
  319. package/src/__mocks__/pikaday.js +1 -0
  320. package/src/api/__tests__/MockOpenWithData.json +2 -25
  321. package/src/api/uploads/UploadsReachability.js +2 -2
  322. package/src/common/messages.js +5 -0
  323. package/src/common/types/core.js +2 -0
  324. package/src/components/avatar/UnknownUserAvatar.tsx +5 -4
  325. package/src/components/close-button/CloseButton.js.flow +26 -0
  326. package/src/components/close-button/CloseButton.scss +10 -0
  327. package/src/components/close-button/CloseButton.stories.md +1 -0
  328. package/src/components/close-button/CloseButton.stories.tsx +14 -0
  329. package/src/components/close-button/CloseButton.tsx +30 -0
  330. package/src/components/close-button/__tests__/CloseButton.stories.test.tsx +6 -0
  331. package/src/components/close-button/__tests__/CloseButton.test.tsx +40 -0
  332. package/src/components/close-button/__tests__/__image_snapshots__/close-button-stories-test-tsx-components-close-button-close-button-looks-visually-correct-when-using-story-components-buttons-closebutton-regular-1-snap.png +0 -0
  333. package/src/components/close-button/index.js.flow +2 -0
  334. package/src/components/close-button/index.ts +1 -0
  335. package/src/components/date-picker/AccessiblePikaday.ts +79 -0
  336. package/src/components/date-picker/DatePicker.scss +32 -22
  337. package/src/components/date-picker/DatePicker.stories.tsx +6 -0
  338. package/src/components/date-picker/DatePicker.tsx +350 -64
  339. package/src/components/date-picker/__tests__/DatePicker.test.tsx +44 -2
  340. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-allows-editing-in-story-components-datepicker-manually-editable-1-snap.png +0 -0
  341. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-allows-keyboard-selection-in-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
  342. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-closes-calendar-and-clears-date-for-components-datepicker-basic-1-snap.png +0 -0
  343. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
  344. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-basic-1-snap.png +0 -0
  345. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-custom-error-tooltip-position-1-snap.png +0 -0
  346. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-disabled-with-error-message-1-snap.png +0 -0
  347. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-manually-editable-1-snap.png +0 -0
  348. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-description-1-snap.png +0 -0
  349. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-limited-date-range-1-snap.png +0 -0
  350. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-looks-visually-correct-when-using-story-components-datepicker-with-range-1-snap.png +0 -0
  351. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-reflects-changes-in-components-datepicker-always-visible-with-custom-input-field-1-snap.png +0 -0
  352. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-shows-calendar-and-date-for-components-datepicker-basic-1-snap.png +0 -0
  353. package/src/components/date-picker/__tests__/__image_snapshots__/date-picker-stories-test-tsx-components-date-picker-date-picker-shows-limited-range-in-components-datepicker-with-limited-date-range-1-snap.png +0 -0
  354. package/src/components/date-picker/_pikaday.scss +8 -2
  355. package/src/components/flyout/Flyout.js +14 -3
  356. package/src/components/flyout/Flyout.scss +40 -0
  357. package/src/components/flyout/FlyoutContext.js +9 -0
  358. package/src/components/flyout/OverlayHeader.scss +9 -0
  359. package/src/components/flyout/OverlayHeader.tsx +38 -0
  360. package/src/components/flyout/__tests__/Flyout.test.js +15 -0
  361. package/src/components/flyout/__tests__/OverlayHeader.test.js +56 -0
  362. package/src/components/flyout/_variables.scss +1 -0
  363. package/src/components/flyout/index.js +2 -0
  364. package/src/components/image-tooltip/ImageTooltip.tsx +1 -2
  365. package/src/components/media-query/__tests__/useMediaQuery.test.js +48 -0
  366. package/src/components/media-query/__tests__/withMediaQuery.test.js +29 -0
  367. package/src/components/media-query/constants.js +32 -0
  368. package/src/components/media-query/index.js +4 -0
  369. package/src/components/media-query/stories/MediaQuery.stories.js +80 -0
  370. package/src/components/media-query/stories/MediaQuery.stories.md +29 -0
  371. package/src/components/media-query/types.js +29 -0
  372. package/src/components/media-query/useMediaQuery.js +97 -0
  373. package/src/components/media-query/withMediaQuery.js +23 -0
  374. package/src/components/modal/Modal.scss +27 -0
  375. package/src/components/modal/__tests__/Modal.stories.test.js +10 -0
  376. package/src/components/modal/__tests__/__image_snapshots__/modal-stories-test-js-components-modal-modal-looks-visually-correct-for-small-screens-when-button-is-clicked-in-story-components-modal-basic-1-snap.png +0 -0
  377. package/src/components/modal/__tests__/__image_snapshots__/modal-stories-test-js-components-modal-modal-looks-visually-correct-for-small-screens-when-button-is-clicked-in-story-components-modal-with-custom-backdrop-click-handler-1-snap.png +0 -0
  378. package/src/components/preview/previewIcons.ts +4 -0
  379. package/src/components/search-form/SearchForm.scss +0 -5
  380. package/src/components/selector-dropdown/SelectorDropdown.js +3 -3
  381. package/src/components/selector-dropdown/__tests__/SelectorDropdown.test.js +5 -1
  382. package/src/components/sidebar-toggle-button/__tests__/__snapshots__/SidebarToggleButton.test.js.snap +0 -8
  383. package/src/components/tab-view/Tabs.scss +0 -4
  384. package/src/components/tooltip/Tooltip.tsx +20 -5
  385. package/src/components/tooltip/__tests__/Tooltip.test.tsx +17 -4
  386. package/src/components/tooltip/__tests__/__snapshots__/Tooltip.test.tsx.snap +0 -2
  387. package/src/constants.js +1 -0
  388. package/src/elements/content-open-with/IconFileMap.js +0 -2
  389. package/src/elements/content-open-with/__tests__/ContentOpenWith.test.js +13 -13
  390. package/src/elements/content-open-with/__tests__/OpenWithButton.test.js +1 -1
  391. package/src/elements/content-open-with/__tests__/OpenWithDropdownMenu.test.js +1 -5
  392. package/src/elements/content-open-with/__tests__/OpenWithDropdownMenuItem.test.js +2 -2
  393. package/src/elements/content-open-with/__tests__/__snapshots__/ContentOpenWith.test.js.snap +5 -5
  394. package/src/elements/content-open-with/__tests__/__snapshots__/OpenWithButton.test.js.snap +1 -1
  395. package/src/elements/content-open-with/__tests__/__snapshots__/OpenWithDropdownMenu.test.js.snap +1 -11
  396. package/src/elements/content-open-with/__tests__/__snapshots__/OpenWithDropdownMenuItem.test.js.snap +4 -3
  397. package/src/elements/content-sidebar/Sidebar.js +1 -1
  398. package/src/elements/content-sidebar/__tests__/AddTaskButton.test.js +15 -0
  399. package/src/elements/content-sidebar/activity-feed/common/delete-confirmation/DeleteConfirmation.scss +3 -3
  400. package/src/elements/content-sidebar/activity-feed/task-form/TaskForm.js +18 -5
  401. package/src/elements/content-sidebar/versions/StaticVersionSidebar.js +97 -0
  402. package/src/elements/content-sidebar/versions/StaticVersionsSidebar.scss +67 -0
  403. package/src/elements/content-sidebar/versions/VersionsSidebar.js +16 -3
  404. package/src/elements/content-sidebar/versions/VersionsSidebar.scss +5 -0
  405. package/src/elements/content-sidebar/versions/VersionsSidebarContainer.js +42 -7
  406. package/src/elements/content-sidebar/versions/__tests__/VersionsSidebar.test.js +18 -1
  407. package/src/elements/content-sidebar/versions/__tests__/VersionsSidebarContainer.test.js +51 -2
  408. package/src/elements/content-sidebar/versions/__tests__/__snapshots__/VersionsSidebarContainer.test.js.snap +75 -0
  409. package/src/elements/content-sidebar/versions/flowTypes.js +1 -0
  410. package/src/elements/content-sidebar/versions/messages.js +28 -0
  411. package/src/features/classification/constants.js +2 -0
  412. package/src/features/classification/flowTypes.js +7 -1
  413. package/src/features/classification/security-controls/SecurityControls.js +3 -4
  414. package/src/features/classification/security-controls/SecurityControlsItem.js +20 -17
  415. package/src/features/classification/security-controls/SecurityControlsItem.scss +4 -0
  416. package/src/features/classification/security-controls/SecurityControlsModal.js +2 -2
  417. package/src/features/classification/security-controls/__tests__/SecurityControlsItem.test.js +10 -0
  418. package/src/features/classification/security-controls/__tests__/__snapshots__/SecurityControls.test.js.snap +6 -6
  419. package/src/features/classification/security-controls/__tests__/__snapshots__/SecurityControlsItem.test.js.snap +35 -0
  420. package/src/features/classification/security-controls/__tests__/__snapshots__/SecurityControlsModal.test.js.snap +2 -2
  421. package/src/features/classification/security-controls/__tests__/__snapshots__/utils.test.js.snap +20 -0
  422. package/src/features/classification/security-controls/__tests__/utils.test.js +38 -18
  423. package/src/features/classification/security-controls/messages.js +5 -0
  424. package/src/features/classification/security-controls/utils.js +51 -27
  425. package/src/features/collapsible-sidebar/CollapsibleSidebar.js +13 -5
  426. package/src/features/collapsible-sidebar/CollapsibleSidebar.scss +35 -3
  427. package/src/features/collapsible-sidebar/__tests__/CollapsibleSidebar.test.js +35 -0
  428. package/src/features/collapsible-sidebar/__tests__/__snapshots__/CollapsibleSidebar.test.js.snap +1 -0
  429. package/src/features/content-explorer/content-explorer/ContentExplorer.scss +1 -1
  430. package/src/features/content-explorer/item-list/ItemList.js +1 -0
  431. package/src/features/content-explorer/item-list/ItemListName.js +3 -2
  432. package/src/features/content-explorer/item-list/__tests__/ItemListName.test.js +16 -2
  433. package/src/features/header-flyout/HeaderFlyout.js +4 -8
  434. package/src/features/header-flyout/__tests__/__snapshots__/HeaderFlyout.test.js.snap +14 -11
  435. package/src/features/header-flyout/styles/HeaderFlyout.scss +54 -15
  436. package/src/features/header-flyout/styles/_variables.scss +4 -0
  437. package/src/features/message-center/components/message-center-modal/MessageCenterModal.js +1 -0
  438. package/src/features/metadata-instance-editor/__tests__/__snapshots__/TemplateDropdown.test.js.snap +7 -0
  439. package/src/features/pagination/__tests__/__snapshots__/MarkerBasedPagination.test.js.snap +0 -8
  440. package/src/features/pagination/__tests__/__snapshots__/OffsetBasedPagination.test.js.snap +0 -16
  441. package/src/features/presence/PresenceCollaborator.js +81 -0
  442. package/src/features/presence/PresenceCollaborator.scss +28 -0
  443. package/src/features/presence/PresenceCollaboratorsList.js +7 -58
  444. package/src/features/presence/PresenceCollaboratorsList.scss +8 -35
  445. package/src/features/presence/__tests__/PresenceCollaborator.test.js +36 -0
  446. package/src/features/presence/__tests__/PresenceCollaboratorsList.test.js +13 -57
  447. package/src/features/presence/__tests__/__snapshots__/Presence.test.js.snap +5 -0
  448. package/src/features/presence/__tests__/__snapshots__/PresenceLink.test.js.snap +3 -0
  449. package/src/features/query-bar/__tests__/__snapshots__/ColumnButton.test.js.snap +3 -0
  450. package/src/features/quick-search/QuickSearch.js +13 -1
  451. package/src/features/quick-search/__tests__/QuickSearch.test.js +17 -0
  452. package/src/features/unified-share-modal/SharedLinkSection.js +6 -27
  453. package/src/features/unified-share-modal/UnifiedShareForm.js +70 -14
  454. package/src/features/unified-share-modal/UnifiedShareModal.scss +3 -0
  455. package/src/features/unified-share-modal/__tests__/EmailForm.test.js +9 -0
  456. package/src/features/unified-share-modal/__tests__/SharedLinkSection.test.js +14 -4
  457. package/src/features/unified-share-modal/__tests__/UnifiedShareForm.test.js +53 -4
  458. package/src/features/unified-share-modal/__tests__/__snapshots__/SharedLinkSection.test.js.snap +9 -0
  459. package/src/features/unified-share-modal/__tests__/__snapshots__/UnifiedShareForm.test.js.snap +0 -159
  460. package/src/features/unified-share-modal/flowTypes.js +6 -0
  461. package/src/features/unified-share-modal/messages.js +10 -0
  462. package/src/features/unified-share-modal/utils/__tests__/mergeContacts.test.js +23 -0
  463. package/src/features/unified-share-modal/utils/mergeContacts.js +4 -2
  464. package/src/icon/content/FileXbd32.js.flow +38 -0
  465. package/src/icon/content/FileXbd32.stories.tsx +13 -0
  466. package/src/icon/content/FileXbd32.tsx +37 -0
  467. package/src/icon/content/FileXdw32.js.flow +38 -0
  468. package/src/icon/content/FileXdw32.stories.tsx +13 -0
  469. package/src/icon/content/FileXdw32.tsx +37 -0
  470. package/src/icon/content/RetentionPolicyModifiable32.js.flow +31 -0
  471. package/src/icon/content/RetentionPolicyModifiable32.stories.tsx +14 -0
  472. package/src/icon/content/RetentionPolicyModifiable32.tsx +29 -0
  473. package/src/icon/content/RetentionPolicyNonModifiable32.js.flow +31 -0
  474. package/src/icon/content/RetentionPolicyNonModifiable32.stories.tsx +14 -0
  475. package/src/icon/content/RetentionPolicyNonModifiable32.tsx +29 -0
  476. package/src/icons/adobe-sign/README.md +1 -1
  477. package/src/icons/avatars/UnknownUserAvatar.tsx +7 -15
  478. package/src/icons/file-icon/FileIcon.js.flow +2 -2
  479. package/src/icons/file-icon/FileIcon.tsx +8 -2
  480. package/src/icons/file-icon/__tests__/FileIcon.test.tsx +28 -69
  481. package/src/icons/file-icon/__tests__/__snapshots__/FileIcon.test.tsx.snap +48 -34
  482. package/src/icons/general/IconSearch.js.flow +1 -1
  483. package/src/icons/general/IconSearch.tsx +1 -1
  484. package/src/icons/general/IconSearchJuicy.js.flow +26 -0
  485. package/src/icons/general/IconSearchJuicy.tsx +25 -0
  486. package/src/icons/general/README.md +5 -0
  487. package/src/icons/general/__tests__/IconSearchJuicy.test.tsx +38 -0
  488. package/src/icons/google-docs/IconGoogle.js.flow +57 -0
  489. package/src/icons/google-docs/IconGoogle.tsx +50 -0
  490. package/src/icons/google-docs/__tests__/IconGoogle.test.tsx +44 -0
  491. package/src/icons/item-icon/ItemIcon.tsx +4 -0
  492. package/src/icons/item-icon/__tests__/ItemIcon.test.tsx +47 -115
  493. package/src/icons/item-icon/__tests__/__snapshots__/ItemIcon.test.tsx.snap +229 -229
  494. package/src/icons/microsoft-office/IconOffice.js.flow +45 -0
  495. package/src/icons/microsoft-office/IconOffice.tsx +38 -0
  496. package/src/icons/microsoft-office/__tests__/IconOffice.test.tsx +44 -0
  497. package/src/illustration/EmailVerification140.js.flow +102 -0
  498. package/src/illustration/EmailVerification140.stories.tsx +13 -0
  499. package/src/illustration/EmailVerification140.tsx +100 -0
  500. package/src/styles/_variables.scss +1 -0
  501. package/src/styles/common/_forms.scss +6 -0
  502. package/src/styles/constants/_layout.scss +3 -0
  503. package/src/styles/constants/_media-queries.scss +15 -0
  504. package/src/styles/variables.js +10 -1
  505. package/src/styles/variables.json +10 -1
  506. package/src/styles/variables.ts +9 -0
  507. package/src/utils/Browser.js +10 -0
  508. package/src/utils/validators.js +25 -3
@@ -1,9 +1,12 @@
1
1
  // @flow
2
+ import * as React from 'react';
2
3
  import getProp from 'lodash/get';
3
4
  import isNil from 'lodash/isNil';
4
5
 
5
6
  import type { Controls, MessageItem } from '../flowTypes';
6
7
 
8
+ import FormattedCompMessage from '../../../components/i18n/FormattedCompMessage';
9
+ import Link from '../../../components/link/Link';
7
10
  import appRestrictionsMessageMap from './appRestrictionsMessageMap';
8
11
  import downloadRestrictionsMessageMap from './downloadRestrictionsMessageMap';
9
12
  import messages from './messages';
@@ -15,47 +18,41 @@ import {
15
18
  SHARED_LINK_ACCESS_LEVEL,
16
19
  } from '../constants';
17
20
 
18
- const { SHARED_LINK, DOWNLOAD, EXTERNAL_COLLAB, APP } = ACCESS_POLICY_RESTRICTION;
21
+ const { SHARED_LINK, DOWNLOAD, EXTERNAL_COLLAB, APP, WATERMARK } = ACCESS_POLICY_RESTRICTION;
19
22
  const { DEFAULT, WITH_APP_LIST, WITH_OVERFLOWN_APP_LIST } = APP_RESTRICTION_MESSAGE_TYPE;
20
23
  const { DESKTOP, MOBILE, WEB } = DOWNLOAD_CONTROL;
21
24
  const { BLOCK, WHITELIST, BLACKLIST } = LIST_ACCESS_LEVEL;
22
25
  const { COLLAB_ONLY, COLLAB_AND_COMPANY_ONLY, PUBLIC } = SHARED_LINK_ACCESS_LEVEL;
23
26
 
24
- const getShortSecurityControlsMessage = (controls: Controls): ?MessageItem => {
25
- const { sharedLink, download, externalCollab, app } = controls;
27
+ const getShortSecurityControlsMessage = (controls: Controls): Array<MessageItem> => {
28
+ const items = [];
29
+ const { sharedLink, download, externalCollab, app, watermark } = controls;
30
+
26
31
  // Shared link and external collab restrictions are grouped
27
32
  // together as generic "sharing" restrictions
28
33
  const sharing = (sharedLink && sharedLink.accessLevel !== PUBLIC) || externalCollab;
29
34
 
30
35
  if (sharing && download && app) {
31
- return { message: messages.shortAllRestrictions };
32
- }
33
-
34
- if (sharing && download) {
35
- return { message: messages.shortSharingDownload };
36
- }
37
-
38
- if (sharing && app) {
39
- return { message: messages.shortSharingApp };
40
- }
41
-
42
- if (download && app) {
43
- return { message: messages.shortDownloadApp };
44
- }
45
-
46
- if (sharing) {
47
- return { message: messages.shortSharing };
36
+ items.push({ message: messages.shortAllRestrictions });
37
+ } else if (sharing && download) {
38
+ items.push({ message: messages.shortSharingDownload });
39
+ } else if (sharing && app) {
40
+ items.push({ message: messages.shortSharingApp });
41
+ } else if (download && app) {
42
+ items.push({ message: messages.shortDownloadApp });
43
+ } else if (sharing) {
44
+ items.push({ message: messages.shortSharing });
45
+ } else if (download) {
46
+ items.push({ message: messages.shortDownload });
47
+ } else if (app) {
48
+ items.push({ message: messages.shortApp });
48
49
  }
49
50
 
50
- if (download) {
51
- return { message: messages.shortDownload };
51
+ if (watermark) {
52
+ items.push({ message: messages.shortWatermarking });
52
53
  }
53
54
 
54
- if (app) {
55
- return { message: messages.shortApp };
56
- }
57
-
58
- return null;
55
+ return items;
59
56
  };
60
57
 
61
58
  const getSharedLinkMessages = (controls: Controls): Array<MessageItem> => {
@@ -76,6 +73,32 @@ const getSharedLinkMessages = (controls: Controls): Array<MessageItem> => {
76
73
  return items;
77
74
  };
78
75
 
76
+ const getWatermarkingMessages = (controls: Controls): Array<MessageItem> => {
77
+ const items = [];
78
+ const isWatermarkEnabled = getProp(controls, `${WATERMARK}.enabled`, false);
79
+ if (isWatermarkEnabled) {
80
+ const formattedCompMessage = (
81
+ <FormattedCompMessage
82
+ id="boxui.securityControls.watermarkingAppliedWithLink"
83
+ description="Bullet point that summarizes watermarking applied to classification"
84
+ >
85
+ Watermarking will be applied, click{' '}
86
+ <Link
87
+ className="support-link"
88
+ href="https://support.box.com/hc/en-us/articles/360044195253"
89
+ target="_blank"
90
+ >
91
+ here
92
+ </Link>{' '}
93
+ more details on Watermarking
94
+ </FormattedCompMessage>
95
+ );
96
+ items.push({ message: formattedCompMessage });
97
+ }
98
+
99
+ return items;
100
+ };
101
+
79
102
  const getExternalCollabMessages = (controls: Controls): Array<MessageItem> => {
80
103
  const items = [];
81
104
  const accessLevel = getProp(controls, `${EXTERNAL_COLLAB}.accessLevel`);
@@ -191,6 +214,7 @@ const getFullSecurityControlsMessages = (controls: Controls, maxAppCount?: numbe
191
214
  ...getExternalCollabMessages(controls),
192
215
  ...getDownloadMessages(controls),
193
216
  ...getAppDownloadMessages(controls, maxAppCount),
217
+ ...getWatermarkingMessages(controls),
194
218
  ];
195
219
  return items;
196
220
  };
@@ -36,6 +36,9 @@ type Props = {
36
36
 
37
37
  /** Optional HTML attributes to append to menu item */
38
38
  htmlAttributes?: Object,
39
+
40
+ /** Optionally apply "aria-hidden": "true" to CollapsibleSidebar wrapper */
41
+ isHidden?: boolean,
39
42
  };
40
43
 
41
44
  class CollapsibleSidebar extends React.Component<Props> {
@@ -81,18 +84,23 @@ class CollapsibleSidebar extends React.Component<Props> {
81
84
  };
82
85
 
83
86
  render() {
84
- const { children, className, expanded, htmlAttributes } = this.props;
85
- const classes = classNames(
87
+ const { children, className, expanded, isHidden, htmlAttributes } = this.props;
88
+ const navClasses = classNames(
86
89
  {
87
90
  'is-expanded': expanded,
88
91
  },
89
92
  'bdl-CollapsibleSidebar',
90
93
  className,
91
94
  );
92
-
95
+ const ariaAttributes = { 'aria-hidden': isHidden ? 'true' : undefined };
93
96
  return (
94
- <div className="bdl-CollapsibleSidebar-wrapper" {...htmlAttributes}>
95
- <StyledNav ref={this.navRef} className={classes} onKeyDown={this.handleKeyDown}>
97
+ <div
98
+ className="bdl-CollapsibleSidebar-wrapper"
99
+ {...htmlAttributes}
100
+ {...ariaAttributes}
101
+ data-testid="CollapsibleSidebar-wrapper"
102
+ >
103
+ <StyledNav ref={this.navRef} className={navClasses} onKeyDown={this.handleKeyDown}>
96
104
  {children}
97
105
  </StyledNav>
98
106
  </div>
@@ -111,6 +111,12 @@ $left-sidebar-z-index: 40 !default;
111
111
  }
112
112
  }
113
113
 
114
+ @include large-size {
115
+ .bdl-CollapsibleSidebar-logo {
116
+ margin-left: $collapsible-side-bar-h-padding + $bdl-grid-unit * 2 - 1px /* border */;
117
+ }
118
+ }
119
+
114
120
  @include medium-minus-size {
115
121
  .bdl-CollapsibleSidebar-logo {
116
122
  .bdl-CollapsibleSidebar-toggleButton {
@@ -133,8 +139,34 @@ $left-sidebar-z-index: 40 !default;
133
139
  }
134
140
  }
135
141
 
136
- @include large-size {
137
- .bdl-CollapsibleSidebar-logo {
138
- margin-left: $collapsible-side-bar-h-padding + $bdl-grid-unit * 2 - 1px /* border */;
142
+ @include breakpoint($medium-screen) {
143
+ .Body.is-responsive-web {
144
+ .bdl-CollapsibleSidebar-wrapper {
145
+ width: 0;
146
+ }
147
+
148
+ .bdl-CollapsibleSidebar-footer {
149
+ display: none;
150
+ }
151
+
152
+ .bdl-CollapsibleSidebar-nav ul {
153
+ display: none;
154
+ // using fixed width due to performance issues during expand transition
155
+ width: calc(100vw - (#{$collapsible-side-bar-h-padding} * 2));
156
+ }
157
+
158
+ .bdl-CollapsibleSidebar {
159
+ width: 0;
160
+ border: none;
161
+
162
+ &.is-expanded {
163
+ width: 100vw;
164
+
165
+ .bdl-CollapsibleSidebar-nav ul,
166
+ .bdl-CollapsibleSidebar-footer {
167
+ display: block;
168
+ }
169
+ }
170
+ }
139
171
  }
140
172
  }
@@ -1,5 +1,7 @@
1
1
  import React from 'react';
2
2
  import { shallow } from 'enzyme';
3
+ import { render, screen } from '@testing-library/react';
4
+ import { ThemeProvider } from 'styled-components';
3
5
 
4
6
  import { mountConnected } from '../../../test-utils/enzyme';
5
7
  import CollapsibleSidebar from '../CollapsibleSidebar';
@@ -112,4 +114,37 @@ describe('components/core/collapsible-sidebar/CollapsibleSidebar', () => {
112
114
  });
113
115
  });
114
116
  });
117
+
118
+ const dummyTheme = {
119
+ primary: {
120
+ background: '',
121
+ foreground: '',
122
+ border: '',
123
+ },
124
+ };
125
+
126
+ describe('responsiveness', () => {
127
+ const wrapper = params =>
128
+ render(
129
+ <ThemeProvider theme={dummyTheme}>
130
+ <CollapsibleSidebar isHidden={params.isHidden} />
131
+ </ThemeProvider>,
132
+ );
133
+
134
+ test.each`
135
+ isHidden
136
+ ${false}
137
+ ${undefined}
138
+ `('should NOT be hidden when isHidden is $isHidden', ({ isHidden }) => {
139
+ wrapper({ isHidden });
140
+ const CollapsibleSidebarWrapper = screen.getByTestId('CollapsibleSidebar-wrapper');
141
+ expect(CollapsibleSidebarWrapper).not.toHaveAttribute('aria-hidden', 'true');
142
+ });
143
+
144
+ test('should be hidden when isHidden is true', () => {
145
+ wrapper({ isHidden: true });
146
+ const CollapsibleSidebarWrapper = screen.getByTestId('CollapsibleSidebar-wrapper');
147
+ expect(CollapsibleSidebarWrapper).toHaveAttribute('aria-hidden', 'true');
148
+ });
149
+ });
115
150
  });
@@ -3,6 +3,7 @@
3
3
  exports[`components/core/collapsible-sidebar/CollapsibleSidebar render 1`] = `
4
4
  <div
5
5
  className="bdl-CollapsibleSidebar-wrapper"
6
+ data-testid="CollapsibleSidebar-wrapper"
6
7
  >
7
8
  <CollapsibleSidebar__StyledNav
8
9
  className="is-expanded bdl-CollapsibleSidebar foo"
@@ -67,7 +67,7 @@
67
67
 
68
68
  .content-explorer-select-all-checkbox {
69
69
  float: right;
70
- margin-right: -20 * $bdl-grid-unit;
70
+ margin-right: -21 * $bdl-grid-unit;
71
71
  }
72
72
  }
73
73
 
@@ -57,6 +57,7 @@ const itemNameCellRenderer = rendererParams => {
57
57
  name && (
58
58
  <div className={TABLE_CELL_CLASS}>
59
59
  <ItemListName
60
+ itemId={id}
60
61
  type={type}
61
62
  name={name}
62
63
  label={label}
@@ -9,7 +9,7 @@ import { ItemTypePropType } from '../prop-types';
9
9
 
10
10
  const ITEM_LIST_NAME_CLASS = 'item-list-name';
11
11
 
12
- const ItemListName = ({ type, name, label = '', isSelected = false, onClick, linkRenderer }) => {
12
+ const ItemListName = ({ itemId = '', type, name, label = '', isSelected = false, onClick, linkRenderer }) => {
13
13
  const isFolder = type === ItemTypes.FOLDER;
14
14
 
15
15
  const linkProps = {
@@ -26,7 +26,7 @@ const ItemListName = ({ type, name, label = '', isSelected = false, onClick, lin
26
26
  />,
27
27
  ],
28
28
  };
29
- const renderLink = () => (linkRenderer ? linkRenderer(linkProps) : <PlainButton {...linkProps} />);
29
+ const renderLink = () => (linkRenderer ? linkRenderer({ ...linkProps, itemId }) : <PlainButton {...linkProps} />);
30
30
 
31
31
  return (
32
32
  <div className="item-list-name-container">
@@ -37,6 +37,7 @@ const ItemListName = ({ type, name, label = '', isSelected = false, onClick, lin
37
37
  };
38
38
 
39
39
  ItemListName.propTypes = {
40
+ itemId: PropTypes.string,
40
41
  type: ItemTypePropType,
41
42
  name: PropTypes.string.isRequired,
42
43
  label: PropTypes.string,
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import PropTypes from 'prop-types';
2
3
  import sinon from 'sinon';
3
4
 
4
5
  import ItemListName from '../ItemListName';
@@ -53,15 +54,28 @@ describe('features/content-explorer/item-list/ItemListName', () => {
53
54
 
54
55
  describe('linkRenderer', () => {
55
56
  test('should use linkRenderer when specified', () => {
57
+ const itemId = '1';
56
58
  const name = 'item';
57
- const linkRenderer = () => <button type="button" className="name-test" />;
59
+ const linkRenderer = props => <button type="button" className={`name-${props.itemId}`} />;
60
+ linkRenderer.propTypes = { itemId: PropTypes.string };
58
61
  const wrapper = renderComponent({
62
+ itemId,
59
63
  name,
60
64
  type: 'folder',
61
65
  linkRenderer,
62
66
  });
67
+ expect(wrapper.find(`button.name-${itemId}`)).toHaveLength(1);
68
+ });
63
69
 
64
- expect(wrapper.find('button.name-test').length).toBe(1);
70
+ test('should not pass id to PlainButton', () => {
71
+ const itemId = 'abc'; // Must be a valid html ID for this test. wrapper.find('#1') will crash.
72
+ const name = 'item';
73
+ const wrapper = renderComponent({
74
+ itemId,
75
+ name,
76
+ type: 'folder',
77
+ });
78
+ expect(wrapper.find(`#${itemId}`)).toHaveLength(0);
65
79
  });
66
80
  });
67
81
  });
@@ -1,7 +1,7 @@
1
1
  // @flow
2
2
  import * as React from 'react';
3
3
  import classNames from 'classnames';
4
- import { Flyout, Overlay } from '../../components/flyout';
4
+ import { Flyout, Overlay, OverlayHeader } from '../../components/flyout';
5
5
  import ScrollWrapper from '../../components/scroll-wrapper';
6
6
  import type { FlyoutProps } from '../../components/flyout/Flyout';
7
7
 
@@ -34,20 +34,16 @@ class HeaderFlyout extends React.Component<Props> {
34
34
 
35
35
  return (
36
36
  <Flyout
37
- closeOnClick={false}
38
- offset={HeaderFlyout.panelOffset}
39
37
  className={classNames('header-flyout', className)}
38
+ closeOnClick={false}
40
39
  constrainToWindow
40
+ offset={HeaderFlyout.panelOffset}
41
41
  {...rest}
42
42
  >
43
43
  {flyoutButton}
44
44
  <Overlay className="header-flyout-overlay">
45
+ <OverlayHeader>{header && <h4 className="header-flyout-title">{header}</h4>}</OverlayHeader>
45
46
  <div className="header-flyout-list-container">
46
- {header && (
47
- <div className="flyout-list-container-title">
48
- <h4 className="flyout-list-title">{header}</h4>
49
- </div>
50
- )}
51
47
  <div
52
48
  className={classNames('flyout-list-container-body', {
53
49
  'with-header': !!header,
@@ -8,6 +8,7 @@ exports[`components/core/header/components/HeaderFlyout render() should include
8
8
  closeOnWindowBlur={false}
9
9
  constrainToScrollParent={true}
10
10
  constrainToWindow={true}
11
+ isResponsive={false}
11
12
  isVisibleByDefault={false}
12
13
  offset="-4px 0px"
13
14
  onClose={[Function]}
@@ -20,20 +21,18 @@ exports[`components/core/header/components/HeaderFlyout render() should include
20
21
  <Overlay
21
22
  className="header-flyout-overlay"
22
23
  >
24
+ <OverlayHeader>
25
+ <h4
26
+ className="header-flyout-title"
27
+ >
28
+ <span>
29
+ test header
30
+ </span>
31
+ </h4>
32
+ </OverlayHeader>
23
33
  <div
24
34
  className="header-flyout-list-container"
25
35
  >
26
- <div
27
- className="flyout-list-container-title"
28
- >
29
- <h4
30
- className="flyout-list-title"
31
- >
32
- <span>
33
- test header
34
- </span>
35
- </h4>
36
- </div>
37
36
  <div
38
37
  className="flyout-list-container-body with-header with-footer"
39
38
  >
@@ -66,6 +65,7 @@ exports[`components/core/header/components/HeaderFlyout render() should render d
66
65
  closeOnWindowBlur={false}
67
66
  constrainToScrollParent={true}
68
67
  constrainToWindow={true}
68
+ isResponsive={false}
69
69
  isVisibleByDefault={false}
70
70
  offset="-4px 0px"
71
71
  onClose={[Function]}
@@ -78,6 +78,7 @@ exports[`components/core/header/components/HeaderFlyout render() should render d
78
78
  <Overlay
79
79
  className="header-flyout-overlay"
80
80
  >
81
+ <OverlayHeader />
81
82
  <div
82
83
  className="header-flyout-list-container"
83
84
  >
@@ -106,6 +107,7 @@ exports[`components/core/header/components/HeaderFlyout render() should render t
106
107
  closeOnWindowBlur={false}
107
108
  constrainToScrollParent={true}
108
109
  constrainToWindow={true}
110
+ isResponsive={false}
109
111
  isVisibleByDefault={false}
110
112
  offset="-4px 0px"
111
113
  openOnHover={false}
@@ -121,6 +123,7 @@ exports[`components/core/header/components/HeaderFlyout render() should render t
121
123
  <Overlay
122
124
  className="header-flyout-overlay"
123
125
  >
126
+ <OverlayHeader />
124
127
  <div
125
128
  className="header-flyout-list-container"
126
129
  >
@@ -1,3 +1,4 @@
1
+ @import '../../../components/flyout/variables';
1
2
  @import '../../../styles/variables';
2
3
  @import '../../../styles/mixins/overlay';
3
4
  @import './variables';
@@ -17,43 +18,35 @@
17
18
 
18
19
  padding: (2 * $flyout-header-spacer) $flyout-list-padding 0;
19
20
  }
20
- }
21
-
22
- .header-flyout-list-container {
23
- padding: 0;
24
-
25
- .flyout-list-container-title {
26
- padding-bottom: $flyout-header-spacer;
27
- }
28
21
 
29
- .flyout-list-title {
22
+ .header-flyout-title {
30
23
  margin: 0;
24
+ padding-bottom: $flyout-header-spacer;
31
25
  font-size: $flyout-title-font-size;
32
26
  line-height: $flyout-title-line-height;
33
27
  }
28
+ }
34
29
 
30
+ .header-flyout-list-container {
35
31
  .flyout-list-container-body {
36
- $title-height: $flyout-title-line-height + $flyout-header-spacer;
37
- $footer-height: $flyout-title-line-height + 2 * $flyout-footer-spacer;
38
-
39
32
  // the overall height, minus the top and bottom padding
40
33
  height: $flyout-list-height - 2 * $flyout-list-padding;
41
34
  margin-bottom: $flyout-list-padding;
42
35
 
43
36
  &.with-header {
44
37
  // the overall height minus the padding, and header height
45
- height: $flyout-list-height - (2 * $flyout-list-padding + $title-height);
38
+ height: $flyout-list-height - (2 * $flyout-list-padding + $flyout-title-height);
46
39
  }
47
40
 
48
41
  &.with-footer {
49
42
  // the overall height minus the padding, and the footer height
50
- height: $flyout-list-height - ($flyout-list-padding + $footer-height);
43
+ height: $flyout-list-height - ($flyout-list-padding + $flyout-footer-height);
51
44
  margin-bottom: 0;
52
45
  }
53
46
 
54
47
  &.with-header.with-footer {
55
48
  // the overall height minus the padding, and both text hbdl-gray-50
56
- height: $flyout-list-height - ($flyout-list-padding + $title-height + $footer-height);
49
+ height: $flyout-list-height - ($flyout-list-padding + $flyout-title-height + $flyout-footer-height);
57
50
  margin-bottom: 0;
58
51
  }
59
52
  }
@@ -69,3 +62,49 @@
69
62
  }
70
63
  }
71
64
  }
65
+
66
+ @include breakpoint($medium-screen) {
67
+ .bdl-Flyout--responsive {
68
+ .header-flyout-list-container {
69
+ .flyout-list-container-body {
70
+ $header-height: $bdl-OverlayHeader-height;
71
+
72
+ height: calc(100vh - #{$header-height});
73
+
74
+ &.with-header {
75
+ height: calc(100vh - #{$header-height});
76
+ }
77
+
78
+ &.with-footer {
79
+ height: calc(100vh - #{$flyout-footer-height});
80
+ }
81
+
82
+ &.with-header.with-footer {
83
+ height: calc(100vh - #{$header-height} - #{$flyout-footer-height});
84
+ }
85
+
86
+ .scroll-container {
87
+ overflow-y: auto;
88
+
89
+ .scroll-wrap-container {
90
+ &::before,
91
+ &::after {
92
+ display: none;
93
+ }
94
+ }
95
+ }
96
+ }
97
+
98
+ .flyout-list-container-footer {
99
+ height: $flyout-footer-height;
100
+ padding: $flyout-footer-spacer;
101
+ }
102
+ }
103
+
104
+ .header-flyout-overlay {
105
+ .header-flyout-title {
106
+ padding-bottom: 0;
107
+ }
108
+ }
109
+ }
110
+ }
@@ -11,6 +11,10 @@ $flyout-title-line-height: 16px;
11
11
  $flyout-footer-font-size: 13px;
12
12
  $flyout-footer-line-height: 16px;
13
13
 
14
+ // Variables for title and footer height to help calculate component height
15
+ $flyout-title-height: $flyout-title-line-height + $flyout-header-spacer;
16
+ $flyout-footer-height: $flyout-title-line-height + 2 * $flyout-footer-spacer;
17
+
14
18
  // Consumable mixins - to use with the contents of a header flyout
15
19
  @mixin header-flyout-row-padding {
16
20
  padding: 12px 0;
@@ -242,6 +242,7 @@ function MessageCenterModal({
242
242
  rowCount={filteredMessages.length}
243
243
  rowHeight={cache.rowHeight}
244
244
  rowRenderer={rowRenderer}
245
+ scrollToIndex={0}
245
246
  style={listStyle}
246
247
  width={width - SCROLLBAR_MARGIN}
247
248
  />
@@ -8,6 +8,7 @@ exports[`features/metadata-instance-editor/fields/ should correctly render butto
8
8
  closeOnWindowBlur={false}
9
9
  constrainToScrollParent={true}
10
10
  constrainToWindow={false}
11
+ isResponsive={false}
11
12
  isVisibleByDefault={false}
12
13
  onClose={[Function]}
13
14
  onOpen={[Function]}
@@ -67,6 +68,7 @@ exports[`features/metadata-instance-editor/fields/ should correctly render dropd
67
68
  closeOnWindowBlur={false}
68
69
  constrainToScrollParent={true}
69
70
  constrainToWindow={false}
71
+ isResponsive={false}
70
72
  isVisibleByDefault={false}
71
73
  onClose={[Function]}
72
74
  onOpen={[Function]}
@@ -132,6 +134,7 @@ exports[`features/metadata-instance-editor/fields/ should correctly render dropd
132
134
  closeOnWindowBlur={false}
133
135
  constrainToScrollParent={true}
134
136
  constrainToWindow={false}
137
+ isResponsive={false}
135
138
  isVisibleByDefault={false}
136
139
  onClose={[Function]}
137
140
  onOpen={[Function]}
@@ -197,6 +200,7 @@ exports[`features/metadata-instance-editor/fields/ should correctly render empty
197
200
  closeOnWindowBlur={false}
198
201
  constrainToScrollParent={true}
199
202
  constrainToWindow={false}
203
+ isResponsive={false}
200
204
  isVisibleByDefault={false}
201
205
  onClose={[Function]}
202
206
  onOpen={[Function]}
@@ -254,6 +258,7 @@ exports[`features/metadata-instance-editor/fields/ should correctly render error
254
258
  closeOnWindowBlur={false}
255
259
  constrainToScrollParent={true}
256
260
  constrainToWindow={false}
261
+ isResponsive={false}
257
262
  isVisibleByDefault={false}
258
263
  onClose={[Function]}
259
264
  onOpen={[Function]}
@@ -311,6 +316,7 @@ exports[`features/metadata-instance-editor/fields/ should correctly render loadi
311
316
  closeOnWindowBlur={false}
312
317
  constrainToScrollParent={true}
313
318
  constrainToWindow={false}
319
+ isResponsive={false}
314
320
  isVisibleByDefault={false}
315
321
  onClose={[Function]}
316
322
  onOpen={[Function]}
@@ -363,6 +369,7 @@ exports[`features/metadata-instance-editor/fields/ should correctly render plain
363
369
  closeOnWindowBlur={false}
364
370
  constrainToScrollParent={true}
365
371
  constrainToWindow={false}
372
+ isResponsive={false}
366
373
  isVisibleByDefault={false}
367
374
  onClose={[Function]}
368
375
  onOpen={[Function]}