passbolt-styleguide 3.3.3 → 3.4.0-alpha2

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 (485) hide show
  1. package/build/css/help.min.css +4 -4
  2. package/build/css/public.min.css +5 -6
  3. package/build/css/themes/default/api_authentication.min.css +3 -3
  4. package/build/css/themes/default/api_cloud.min.css +3 -7
  5. package/build/css/themes/default/api_main.min.css +4 -9
  6. package/build/css/themes/default/api_reports.min.css +4 -9
  7. package/build/css/themes/default/api_webinstaller.min.css +4 -9
  8. package/build/css/themes/default/ext_app.min.css +4 -9
  9. package/build/css/themes/default/ext_authentication.min.css +3 -3
  10. package/build/css/themes/default/ext_external.min.css +3 -3
  11. package/build/css/themes/default/ext_in_form_cta.min.css +9 -0
  12. package/build/css/themes/default/ext_in_form_menu.min.css +9 -0
  13. package/build/css/themes/default/ext_quickaccess.min.css +3 -3
  14. package/build/css/themes/midgar/api_authentication.min.css +9 -0
  15. package/build/css/themes/midgar/api_main.min.css +4 -9
  16. package/build/css/themes/midgar/api_reports.min.css +4 -9
  17. package/build/css/themes/midgar/ext_app.min.css +4 -9
  18. package/build/css/themes/midgar/ext_authentication.min.css +3 -3
  19. package/build/css/themes/midgar/ext_in_form_cta.min.css +9 -0
  20. package/build/css/themes/midgar/ext_in_form_menu.min.css +9 -0
  21. package/build/css/themes/midgar/ext_quickaccess.min.css +3 -3
  22. package/build/js/dist/api-app.js +1 -1
  23. package/build/js/dist/api-app.js.LICENSE.txt +5 -5
  24. package/build/js/dist/api-recover.js +1 -1
  25. package/build/js/dist/api-recover.js.LICENSE.txt +0 -28
  26. package/build/js/dist/api-setup.js +1 -1
  27. package/build/js/dist/api-setup.js.LICENSE.txt +0 -15
  28. package/build/js/dist/api-triage.js +1 -1
  29. package/build/js/dist/api-triage.js.LICENSE.txt +0 -14
  30. package/build/js/dist/api-vendors.js +1 -1
  31. package/build/js/dist/api-vendors.js.LICENSE.txt +146 -84
  32. package/package.json +31 -26
  33. package/src/img/controls/chevron-down_blue.svg +3 -0
  34. package/src/img/diagrams/functional_overview.png +0 -0
  35. package/src/img/diagrams/functional_overview.svg +4 -0
  36. package/src/img/diagrams/howitworks.svg +2797 -0
  37. package/src/img/diagrams/mobile-transfer.svg +296 -0
  38. package/src/img/diagrams/sequence_diagram_form_authenticate.png +0 -0
  39. package/src/img/diagrams/sequence_diagram_gpg_authenticate.png +0 -0
  40. package/src/img/diagrams/totp.svg +251 -0
  41. package/src/img/illustrations/pin_passbolt.gif +0 -0
  42. package/src/img/illustrations/wave-pin_my_extension.svg +1 -0
  43. package/src/img/logo/icon-32-badge-1.png +0 -0
  44. package/src/img/logo/icon-32-badge-2.png +0 -0
  45. package/src/img/logo/icon-32-badge-3.png +0 -0
  46. package/src/img/logo/icon-32-badge-4.png +0 -0
  47. package/src/img/logo/icon-32-badge-5+.png +0 -0
  48. package/src/img/logo/icon-32-badge-5.png +0 -0
  49. package/src/img/logo/icon-32-signout.png +0 -0
  50. package/src/img/logo/icon-badge-1.svg +1 -0
  51. package/src/img/logo/icon-badge-2.svg +1 -0
  52. package/src/img/logo/icon-badge-3.svg +1 -0
  53. package/src/img/logo/icon-badge-4.svg +1 -0
  54. package/src/img/logo/icon-badge-5+.svg +1 -0
  55. package/src/img/logo/icon-badge-5.svg +1 -0
  56. package/src/img/logo/icon-inactive.svg +1 -0
  57. package/src/img/logo/icon-without-badge.svg +1 -0
  58. package/src/img/third_party/ChromeWebStore_black.svg +1 -0
  59. package/src/img/third_party/ChromeWebStore_white.svg +1 -0
  60. package/src/img/third_party/edge-addon-black.svg +1 -0
  61. package/src/img/third_party/edge-addon-white.svg +1 -0
  62. package/src/locales/de-DE/common.json +820 -0
  63. package/src/locales/en-UK/common.json +86 -20
  64. package/src/locales/fr/common.json +750 -0
  65. package/src/locales/fr-FR/common.json +92 -22
  66. package/src/locales/sv-SE/common.json +820 -0
  67. package/src/react-extension/ExtApp.js +16 -10
  68. package/src/react-extension/ExtBootstrapApp.js +1 -0
  69. package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.js +2 -2
  70. package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.js +2 -2
  71. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.js +1 -1
  72. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.test.js +1 -1
  73. package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.js +22 -8
  74. package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.data.js +3 -0
  75. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.js +10 -8
  76. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.js +21 -19
  77. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.page.js +6 -6
  78. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.stories.js +0 -1
  79. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.js +1 -1
  80. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.js +1 -1
  81. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.stories.js +5 -8
  82. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.js +20 -38
  83. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.data.js +4 -1
  84. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.js +4 -4
  85. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.js +1 -1
  86. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.js +1 -1
  87. package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.test.js +2 -3
  88. package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.test.stories.js +5 -9
  89. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.js +34 -32
  90. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.js +1 -1
  91. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.stories.js +0 -3
  92. package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.js +1 -1
  93. package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.test.page.js +2 -2
  94. package/src/react-extension/components/Authentication/AskForAuthenticationHelp/AskForAuthenticationHelp.js +1 -1
  95. package/src/react-extension/components/Authentication/AskForAuthenticationHelp/AskForAuthenticationHelp.test.stories.js +12 -15
  96. package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.js +2 -2
  97. package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.test.js +1 -1
  98. package/src/react-extension/components/Authentication/CheckMailBox/CheckMailbox.test.stories.js +12 -14
  99. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.js +2 -1
  100. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.stories.js +12 -15
  101. package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.js +1 -2
  102. package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.stories.js +12 -15
  103. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.js +9 -19
  104. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.stories.js +12 -15
  105. package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.test.stories.js +12 -15
  106. package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.stories.js +12 -15
  107. package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.test.stories.js +12 -15
  108. package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.stories.js +12 -15
  109. package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.js +1 -1
  110. package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.stories.js +12 -15
  111. package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.stories.js +12 -15
  112. package/src/react-extension/components/Authentication/EnterUsernameForm/EnterUsernameForm.test.stories.js +12 -15
  113. package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.data.js +14 -0
  114. package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.js +65 -0
  115. package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.page.js +38 -0
  116. package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.stories.js +12 -15
  117. package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.js +15 -6
  118. package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.js +27 -0
  119. package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.stories.js +12 -15
  120. package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.js +107 -0
  121. package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.data.js +11 -0
  122. package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.js +65 -0
  123. package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.page.js +73 -0
  124. package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.stories.js +34 -0
  125. package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.stories.js +8 -11
  126. package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.js +1 -1
  127. package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.stories.js +12 -15
  128. package/src/react-extension/components/AuthenticationLogin/DisplayLoginError/DisplayLoginError.test.stories.js +12 -15
  129. package/src/react-extension/components/AuthenticationLogin/DisplayLoginInProgress/DisplayLoginProgress.test.stories.js +12 -15
  130. package/src/react-extension/components/AuthenticationLogin/Login/Login.js +3 -1
  131. package/src/react-extension/components/AuthenticationLogin/Login/Login.test.stories.js +12 -15
  132. package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.js +2 -1
  133. package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.test.js +1 -1
  134. package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.test.stories.js +5 -11
  135. package/src/react-extension/components/AuthenticationRecover/RecoverAuthentication/RecoverAuthentication.js +5 -1
  136. package/src/react-extension/components/AuthenticationSetup/SetupAuthentication/SetupAuthentication.js +4 -0
  137. package/src/react-extension/components/Common/ActionFeedback/DisplayActionFeedbacks.test.data.js +0 -2
  138. package/src/react-extension/components/Common/ActionFeedback/DisplayActionFeedbacks.test.js +4 -5
  139. package/src/react-extension/components/Common/ActionFeedback/DisplayActionFeedbacks.test.page.js +0 -1
  140. package/src/react-extension/components/Common/Avatar/UserAvatar.js +2 -1
  141. package/src/react-extension/components/Common/Error/ShowErrorDetails/ShowErrorDetails.js +126 -0
  142. package/src/react-extension/components/Common/Icons/AnimatedFeedback.js +58 -0
  143. package/src/react-extension/components/Common/Icons/Icon.js +16 -0
  144. package/src/react-extension/components/Common/Icons/Icon.test.stories.js +78 -0
  145. package/src/react-extension/components/Common/Inputs/FormSubmitButton/FormSubmitButton.js +4 -0
  146. package/src/react-extension/components/Common/Loading/LoadingSpinner/LoadingSpinner.js +2 -1
  147. package/src/react-extension/components/Common/Menu/DisplayMainMenu.js +2 -4
  148. package/src/react-extension/components/Common/Navigation/Search/SearchBar.js +1 -1
  149. package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.js +1 -1
  150. package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.test.js +1 -1
  151. package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.test.stories.js +34 -0
  152. package/src/react-extension/components/Common/Tab/Tab.js +65 -0
  153. package/src/react-extension/components/Common/Tab/Tabs.js +87 -0
  154. package/src/react-extension/components/Resource/CreateResource/CreateResource.js +85 -66
  155. package/src/react-extension/components/Resource/CreateResource/CreateResource.test.data.js +80 -1
  156. package/src/react-extension/components/Resource/CreateResource/CreateResource.test.js +18 -39
  157. package/src/react-extension/components/Resource/CreateResource/CreateResource.test.page.js +27 -8
  158. package/src/react-extension/components/Resource/CreateResource/CreateResource.test.stories.js +70 -4
  159. package/src/react-extension/components/Resource/DeleteResource/DeleteResource.js +1 -1
  160. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayDragResource.js +68 -0
  161. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.js +20 -47
  162. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.test.page.js +4 -1
  163. package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMenu.js +2 -2
  164. package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMenu.test.data.js +1 -7
  165. package/src/react-extension/components/Resource/EditResource/EditResource.js +93 -68
  166. package/src/react-extension/components/Resource/EditResource/EditResource.test.data.js +80 -1
  167. package/src/react-extension/components/Resource/EditResource/EditResource.test.js +10 -39
  168. package/src/react-extension/components/Resource/EditResource/EditResource.test.page.js +26 -11
  169. package/src/react-extension/components/Resource/ExportResources/ExportResources.js +1 -1
  170. package/src/react-extension/components/Resource/ExportResources/ExportResources.test.stories.js +5 -11
  171. package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.js +10 -12
  172. package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.test.stories.js +5 -11
  173. package/src/react-extension/components/Resource/FilterResourcesByBreadcrumb/FilterResourcesByBreadcrumb.js +4 -4
  174. package/src/react-extension/components/Resource/FilterResourcesByBreadcrumb/FilterResourcesByBreadcrumb.test.stories.js +0 -1
  175. package/src/react-extension/components/Resource/FilterResourcesByFolders/DisplayDragFolderItem.js +109 -0
  176. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.js +41 -193
  177. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.data.js +10 -5
  178. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.js +9 -12
  179. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.page.js +6 -2
  180. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.stories.js +0 -1
  181. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.js +83 -58
  182. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.data.js +52 -59
  183. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.js +25 -20
  184. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.page.js +11 -5
  185. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItemContextualMenu.js +1 -1
  186. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByRootFolderContextualMenu.js +7 -2
  187. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByRootFolderContextualMenu.test.js +3 -7
  188. package/src/react-extension/components/Resource/FilterResourcesByGroups/FilterResourcesByGroups.js +1 -1
  189. package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.js +1 -1
  190. package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.test.page.js +1 -1
  191. package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.test.stories.js +0 -1
  192. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.js +1 -1
  193. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.data.js +47 -0
  194. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.js +34 -3
  195. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.page.js +46 -9
  196. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.stories.js +0 -1
  197. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTagsList.js +124 -4
  198. package/src/react-extension/components/Resource/FilterResourcesByText/FilterResourcesByText.test.stories.js +0 -2
  199. package/src/react-extension/components/Resource/ImportResources/ImportResources.js +6 -5
  200. package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.js +10 -12
  201. package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.test.stories.js +5 -11
  202. package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.js +3 -3
  203. package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.js +3 -3
  204. package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.stories.js +5 -11
  205. package/src/react-extension/components/ResourceComment/AddResourceComment/AddResourceComment.js +1 -1
  206. package/src/react-extension/components/ResourceComment/AddResourceComment/AddResourceComment.test.page.object.js +1 -1
  207. package/src/react-extension/components/ResourceComment/AddResourceComment/AddResourceComment.test.stories.js +8 -14
  208. package/src/react-extension/components/ResourceComment/ConfirmResourceCommentDeletion/ConfirmResourceCommentDeletion.test.stories.js +5 -11
  209. package/src/react-extension/components/ResourceComment/DisplayResourceCommentList/DisplayResourceCommentList.test.stories.js +8 -14
  210. package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.js +9 -8
  211. package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.test.page.js +1 -1
  212. package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.test.stories.js +8 -15
  213. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsActivity.test.stories.js +0 -1
  214. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsDescription.js +1 -1
  215. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsDescription.test.stories.js +0 -1
  216. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.test.js +1 -1
  217. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.test.stories.js +0 -1
  218. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.js +2 -2
  219. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.page.js +1 -1
  220. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.stories.js +0 -3
  221. package/src/react-extension/components/ResourceFolder/DefineResourceFolderMoveStrategy/DefineResourceFolderMoveStrategy.test.stories.js +0 -6
  222. package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.test.stories.js +0 -5
  223. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.js +1 -1
  224. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.page.js +1 -1
  225. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.stories.js +0 -7
  226. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsActivity.test.stories.js +0 -2
  227. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.test.stories.js +0 -2
  228. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsPermissions.test.stories.js +0 -2
  229. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePassphraseGenerator.js +150 -0
  230. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePassphraseGenerator.test.stories.js +30 -0
  231. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePasswordGenerator.js +191 -0
  232. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePasswordGenerator.test.stories.js +73 -0
  233. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/GenerateResourcePassword.js +296 -0
  234. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/GenerateResourcePassword.test.stories.js +112 -0
  235. package/src/react-extension/components/ResourceTag/DeleteResourceTag/DeleteResourceTag.test.stories.js +0 -2
  236. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.js +1 -1
  237. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.page.js +1 -1
  238. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.stories.js +0 -4
  239. package/src/react-extension/components/ResourceTag/EditResourceTags/EditResourceTags.js +2 -2
  240. package/src/react-extension/components/ResourceTag/EditResourceTags/EditResourceTags.test.page.js +1 -1
  241. package/src/react-extension/components/ResourceTag/EditResourceTags/EditResourceTagsItemViewer.js +5 -1
  242. package/src/react-extension/components/Share/ShareDialog.test.page.js +1 -1
  243. package/src/react-extension/components/Share/ShareDialog.test.stories.js +12 -10
  244. package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.test.stories.js +5 -9
  245. package/src/react-extension/components/User/CreateUser/CreateUser.js +4 -4
  246. package/src/react-extension/components/User/CreateUser/CreateUser.test.page.js +3 -3
  247. package/src/react-extension/components/User/CreateUser/CreateUser.test.stories.js +3 -1
  248. package/src/react-extension/components/User/DeleteUser/DeleteUser.test.stories.js +5 -8
  249. package/src/react-extension/components/User/DeleteUser/DeleteUserWithConflicts.test.stories.js +5 -8
  250. package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.js +2 -2
  251. package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.test.page.js +1 -1
  252. package/src/react-extension/components/User/DisplayUsers/DisplayUsers.js +35 -2
  253. package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.data.js +2 -1
  254. package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.js +6 -0
  255. package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.page.js +19 -6
  256. package/src/react-extension/components/User/EditUser/EditUser.js +3 -3
  257. package/src/react-extension/components/User/EditUser/EditUser.test.page.js +2 -2
  258. package/src/react-extension/components/User/EditUser/EditUser.test.stories.js +3 -1
  259. package/src/react-extension/components/User/FilterUsersByBreadcrumb/FilterUsersByBreadcrumb.js +2 -2
  260. package/src/react-extension/components/User/FilterUsersByBreadcrumb/FilterUsersByBreadcrumb.test.js +1 -1
  261. package/src/react-extension/components/User/FilterUsersByBreadcrumb/FilterUsersByBreadcrumb.test.stories.js +5 -8
  262. package/src/react-extension/components/User/FilterUsersByGroups/FilterUsersByGroup.js +1 -1
  263. package/src/react-extension/components/User/FilterUsersByShortcut/FilterUsersByShortcut.js +1 -1
  264. package/src/react-extension/components/User/FilterUsersByShortcut/FilterUsersByShortcut.test.stories.js +0 -1
  265. package/src/react-extension/components/User/FilterUsersByText/FilterUsersByText.test.stories.js +0 -2
  266. package/src/react-extension/components/UserDetails/DisplayUserDetailsGroups/DisplayUserDetailsGroups.test.stories.js +8 -11
  267. package/src/react-extension/components/UserDetails/DisplayUserDetailsInformation/DisplayUserDetailsInformation.test.stories.js +8 -11
  268. package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.stories.js +8 -12
  269. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.js +1 -1
  270. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.page.js +2 -2
  271. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.stories.js +5 -8
  272. package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroup.test.stories.js +5 -8
  273. package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroupWithConflicts.test.stories.js +5 -8
  274. package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsInformation/DisplayUserGroupDetailsInformation.test.stories.js +8 -11
  275. package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembers.test.stories.js +8 -11
  276. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.js +11 -3
  277. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.data.js +7 -0
  278. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.page.js +1 -1
  279. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.stories.js +12 -8
  280. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.js +92 -21
  281. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.test.data.js +6 -0
  282. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.test.js +2 -2
  283. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.test.page.js +1 -1
  284. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/DisplayChangePassphraseIntroduction.js +12 -10
  285. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/DownloadRecoveryKit.js +4 -10
  286. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js +65 -25
  287. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.data.js +6 -0
  288. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.js +1 -1
  289. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.page.js +1 -1
  290. package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.js +14 -13
  291. package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.test.stories.js +5 -8
  292. package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.js +21 -6
  293. package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.test.stories.js +5 -8
  294. package/src/react-extension/components/UserSetting/DisplayUserProfile/DisplayUserProfile.js +1 -1
  295. package/src/react-extension/components/UserSetting/DisplayUserProfile/DisplayUserProfile.test.stories.js +5 -8
  296. package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspace/DisplayUserSettingsWorkspace.js +13 -1
  297. package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspaceBreadcrumb/DisplayUserSettingsWorkspaceBreadcrumb.js +2 -1
  298. package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspaceBreadcrumb/DisplayUserSettingsWorkspaceBreadcrumb.test.stories.js +5 -8
  299. package/src/react-extension/components/UserSetting/DisplayUserTheme/DisplayUserTheme.test.stories.js +5 -8
  300. package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.js +3 -3
  301. package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.test.stories.js +5 -8
  302. package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.js +26 -4
  303. package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.test.stories.js +7 -10
  304. package/src/react-extension/components/UserSetting/TransferToMobile/TransferToMobile.js +749 -0
  305. package/src/react-extension/components/UserSetting/TransferToMobile/TransferToMobile.test.data.js +32 -0
  306. package/src/react-extension/components/UserSetting/TransferToMobile/TransferToMobile.test.js +60 -0
  307. package/src/react-extension/components/UserSetting/TransferToMobile/TransferToMobile.test.page.js +110 -0
  308. package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.js +3 -2
  309. package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.test.stories.js +5 -8
  310. package/src/react-extension/contexts/AdministrationWorkspaceContext.js +2 -2
  311. package/src/react-extension/contexts/ApiAppContext.js +1 -1
  312. package/src/react-extension/contexts/ApiRecoverContext.js +1 -1
  313. package/src/react-extension/contexts/ApiSetupContext.js +1 -1
  314. package/src/react-extension/contexts/AuthenticationContext.js +21 -2
  315. package/src/react-extension/contexts/AuthenticationContext.test.js +40 -0
  316. package/src/react-extension/contexts/DragContext.js +122 -0
  317. package/src/react-extension/contexts/DragContext.test.js +53 -0
  318. package/src/react-extension/contexts/NavigationContext.js +11 -0
  319. package/src/react-extension/contexts/ResourcePasswordGeneratorContext.js +144 -0
  320. package/src/react-extension/contexts/ResourceWorkspaceContext.js +5 -4
  321. package/src/react-extension/contexts/ResourceWorkspaceContext.test.data.js +0 -1
  322. package/src/react-extension/contexts/ResourceWorkspaceContext.test.page.js +0 -1
  323. package/src/react-extension/contexts/UserWorkspaceContext.js +31 -4
  324. package/src/react-extension/contexts/UserWorkspaceContext.test.data.js +17 -287
  325. package/src/react-extension/lib/Crypto/sha512.js +17 -0
  326. package/src/react-extension/test/fixture/Settings/siteSettings.js +6 -0
  327. package/src/react-extension/test/mock/components/Internationalisation/MockTranslationProvider.js +42 -7
  328. package/src/react-quickaccess/ExtQuickAccess.js +75 -28
  329. package/src/react-quickaccess/components/AnimatedSwitch/AnimatedSwitch.js +22 -5
  330. package/src/react-quickaccess/components/ExtensionSetup/SetupExtensionInProgress/SetupExtensionInProgress.js +41 -0
  331. package/src/react-quickaccess/components/ExtensionSetup/SetupExtensionInProgress/SetupExtensionInProgressPage.test.stories.js +23 -0
  332. package/src/react-quickaccess/components/FilterResourcesByFavoritePage/FilterResourcesByFavoritePage.js +8 -4
  333. package/src/react-quickaccess/components/FilterResourcesByFavoritePage/FilterResourcesByFavoritePage.test.stories.js +7 -7
  334. package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.js +10 -6
  335. package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.test.stories.js +9 -5
  336. package/src/react-quickaccess/components/FilterResourcesByItemsIOwnPage/FilterResourcesByItemsIOwnPage.js +10 -7
  337. package/src/react-quickaccess/components/FilterResourcesByItemsIOwnPage/FilterResourcesByItemsIOwnPage.test.stories.js +7 -7
  338. package/src/react-quickaccess/components/FilterResourcesByRecentlyModifiedPage/FilterResourcesByRecentlyModifiedPage.js +10 -7
  339. package/src/react-quickaccess/components/FilterResourcesByRecentlyModifiedPage/FilterResourcesByRecentlyModifiedPage.test.stories.js +7 -7
  340. package/src/react-quickaccess/components/FilterResourcesBySharedWithMePage/FilterResourcesBySharedWithMePage.js +10 -7
  341. package/src/react-quickaccess/components/FilterResourcesBySharedWithMePage/FilterResourcesBySharedWithMePage.test.stories.js +7 -7
  342. package/src/react-quickaccess/components/FilterResourcesByTagPage/FilterResourcesByTagPage.js +10 -7
  343. package/src/react-quickaccess/components/FilterResourcesByTagPage/FilterResourcesByTagPage.test.stories.js +9 -5
  344. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePassphraseGenerator.js +150 -0
  345. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePassphraseGenerator.test.data.js +20 -0
  346. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePassphraseGenerator.test.js +67 -0
  347. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePassphraseGenerator.test.page.js +109 -0
  348. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePasswordGenerator.js +189 -0
  349. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePasswordGenerator.test.data.js +40 -0
  350. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePasswordGenerator.test.js +67 -0
  351. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePasswordGenerator.test.page.js +121 -0
  352. package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.js +304 -0
  353. package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.test.data.js +102 -0
  354. package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.test.js +76 -0
  355. package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.test.page.js +158 -0
  356. package/src/react-quickaccess/components/Header/Header.js +10 -8
  357. package/src/react-quickaccess/components/Header/Header.test.stories.js +4 -7
  358. package/src/react-quickaccess/components/HomePage/HomePage.js +40 -11
  359. package/src/react-quickaccess/components/HomePage/HomePage.test.stories.js +14 -10
  360. package/src/react-quickaccess/components/HomePage/canSuggestUrl.js +8 -3
  361. package/src/react-quickaccess/components/HomePage/canSuggestUrl.test.js +6 -0
  362. package/src/react-quickaccess/components/LoginPage/LoginPage.js +58 -18
  363. package/src/react-quickaccess/components/LoginPage/LoginPage.test.stories.js +4 -6
  364. package/src/react-quickaccess/components/ManageQuickAccessMode/ManageQuickAccessMode.js +103 -0
  365. package/src/react-quickaccess/components/MoreFiltersPage/MoreFiltersPage.js +2 -2
  366. package/src/react-quickaccess/components/MoreFiltersPage/MoreFiltersPage.test.stories.js +4 -6
  367. package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.js +5 -3
  368. package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.test.stories.js +6 -6
  369. package/src/react-quickaccess/components/PrivateRoute/PrivateRoute.js +1 -0
  370. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.js +234 -0
  371. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.data.js +28 -0
  372. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.stories.js +44 -0
  373. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.js +166 -39
  374. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.data.js +108 -2
  375. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.js +28 -25
  376. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.stories.js +6 -6
  377. package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.js +6 -3
  378. package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.test.stories.js +5 -3
  379. package/src/react-quickaccess/components/Search/Search.js +13 -1
  380. package/src/react-quickaccess/components/Search/Search.test.stories.js +4 -6
  381. package/src/react-quickaccess/contexts/PrepareResourceContext.js +221 -0
  382. package/src/react-web-integration/AuthLogin/AuthLogin.js +72 -0
  383. package/src/react-web-integration/Autofill/Autofill.js +331 -0
  384. package/src/react-web-integration/BrowserIntegrationBootstrap.js +64 -0
  385. package/src/react-web-integration/Events/Quickaccess/QuickAccessEvent.js +24 -0
  386. package/src/react-web-integration/ExtInFormCallToAction.js +56 -0
  387. package/src/react-web-integration/ExtInFormMenu.js +70 -0
  388. package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.js +161 -0
  389. package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.data.js +39 -0
  390. package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.js +48 -0
  391. package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.page.js +42 -0
  392. package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.stories.js +91 -0
  393. package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.js +360 -0
  394. package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.test.stories.js +198 -0
  395. package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenuItem.js +103 -0
  396. package/src/react-web-integration/contexts/AppContext.js +39 -0
  397. package/src/react-web-integration/lib/Dom/DomUtils.js +94 -0
  398. package/src/react-web-integration/lib/InForm/InFormCallToActionField.js +263 -0
  399. package/src/react-web-integration/lib/InForm/InFormCredentialsFormField.js +118 -0
  400. package/src/react-web-integration/lib/InForm/InFormFieldSelector.js +77 -0
  401. package/src/react-web-integration/lib/InForm/InFormManager.js +253 -0
  402. package/src/react-web-integration/lib/InForm/InformManager.test.data.js +46 -0
  403. package/src/react-web-integration/lib/InForm/InformManager.test.js +82 -0
  404. package/src/react-web-integration/lib/InForm/InformManager.test.page.js +116 -0
  405. package/src/react-web-integration/lib/InForm/InformMenuField.js +182 -0
  406. package/src/shared/components/Internationalisation/TranslationProvider.js +145 -0
  407. package/src/shared/lib/Browser/detectBrowserName.js +2 -1
  408. package/src/shared/lib/Secret/SecretComplexity.js +2 -2
  409. package/src/shared/lib/SecretGenerator/PassphraseGenerator.js +112 -0
  410. package/src/shared/lib/SecretGenerator/PassphraseGenerator.test.js +48 -0
  411. package/src/shared/lib/SecretGenerator/PassphraseGeneratorWords.js +7789 -0
  412. package/src/shared/lib/SecretGenerator/PasswordGenerator.js +103 -0
  413. package/src/shared/lib/SecretGenerator/SecretGenerator.js +45 -0
  414. package/src/shared/lib/SecretGenerator/SecretGeneratorComplexity.js +190 -0
  415. package/src/shared/lib/SecretGenerator/SecretGeneratorComplexity.test.js +95 -0
  416. package/src/shared/lib/Settings/SiteSettings.js +8 -0
  417. package/src/shared/lib/apiClient/apiClient.test.js +1 -1
  418. package/.babelrc +0 -11
  419. package/.editorconfig +0 -13
  420. package/.eslintrc.json +0 -197
  421. package/.gitlab-ci.yml +0 -28
  422. package/.jest.config.json +0 -6
  423. package/.jest.setup.js +0 -8
  424. package/.jest.transform.js +0 -7
  425. package/.storybook/main.js +0 -15
  426. package/.storybook/preview-body.html +0 -5
  427. package/.storybook/preview.js +0 -6
  428. package/Gruntfile.js +0 -199
  429. package/build/css/themes/default/ext_config_debug.min.css +0 -13
  430. package/build/css/themes/default/ext_legacy.min.css +0 -13
  431. package/build/css/themes/midgar/ext_legacy.min.css +0 -13
  432. package/crowdin.yml +0 -4
  433. package/docker-compose-dev.yml +0 -10
  434. package/jest.config.json +0 -6
  435. package/src/img/controls/colorpicker/marker.png +0 -0
  436. package/src/img/controls/colorpicker/mask.png +0 -0
  437. package/src/img/controls/colorpicker/wheel.png +0 -0
  438. package/src/img/controls/overlay-opacity-50.png +0 -0
  439. package/src/img/third_party/ChromeWebStore_black.png +0 -0
  440. package/src/img/third_party/ChromeWebStore_white.png +0 -0
  441. package/src/js/accordion.js +0 -10
  442. package/src/js/autocomplete.js +0 -241
  443. package/src/js/autocomplete.min.js +0 -3
  444. package/src/js/bootstrap-scrollspy.js +0 -172
  445. package/src/js/chosen.jquery.js +0 -1356
  446. package/src/js/colorpicker.js +0 -32
  447. package/src/js/download.js +0 -128
  448. package/src/js/farbtastic.js +0 -345
  449. package/src/js/swiper.min.js +0 -18
  450. package/src/react-quickaccess/components/Internationalisation/TranslationProvider.js +0 -151
  451. package/storybook-static/favicon.ico +0 -0
  452. package/storybook-static/iframe.html +0 -133
  453. package/storybook-static/index.html +0 -47
  454. package/storybook-static/main.2d01924b12554c6c15af.bundle.js +0 -1
  455. package/storybook-static/main.b0c44c8759149ccf4f67.bundle.js +0 -3
  456. package/storybook-static/main.b0c44c8759149ccf4f67.bundle.js.LICENSE.txt +0 -153
  457. package/storybook-static/main.b0c44c8759149ccf4f67.bundle.js.map +0 -1
  458. package/storybook-static/runtime~main.6a9b04192e3176eff72a.bundle.js +0 -1
  459. package/storybook-static/runtime~main.b0c44c8759149ccf4f67.bundle.js +0 -2
  460. package/storybook-static/runtime~main.b0c44c8759149ccf4f67.bundle.js.map +0 -1
  461. package/storybook-static/static/media/chosen-sprite.6768c197.png +0 -0
  462. package/storybook-static/static/media/chosen-sprite@2x.a0b7f3f1.png +0 -0
  463. package/storybook-static/static/media/dot_black.a2c44078.svg +0 -6
  464. package/storybook-static/static/media/dot_red.7b34541d.svg +0 -6
  465. package/storybook-static/static/media/dot_white.f60f7331.svg +0 -6
  466. package/storybook-static/static/media/fontawesome-webfont.1e59d233.ttf +0 -0
  467. package/storybook-static/static/media/fontawesome-webfont.20fd1704.woff2 +0 -0
  468. package/storybook-static/static/media/fontawesome-webfont.8b43027f.eot +0 -0
  469. package/storybook-static/static/media/fontawesome-webfont.c1e38fd9.svg +0 -2671
  470. package/storybook-static/static/media/fontawesome-webfont.f691f37e.woff +0 -0
  471. package/storybook-static/static/media/infinite-bar.f5327dc3.gif +0 -0
  472. package/storybook-static/static/media/loading_dark.ea474c7f.svg +0 -21
  473. package/storybook-static/static/media/loading_light.061977b5.svg +0 -15
  474. package/storybook-static/static/media/logo.e2b062a5.svg +0 -1
  475. package/storybook-static/static/media/logo_white.cb32e694.svg +0 -1
  476. package/storybook-static/static/media/opensans-bold.a6b4768c.woff +0 -0
  477. package/storybook-static/static/media/opensans-regular.7812bd0b.woff +0 -0
  478. package/storybook-static/static/media/passphrase_intro.37a1ba4e.png +0 -0
  479. package/storybook-static/vendors~main.4abf29e4f956d5befb41.bundle.js +0 -2
  480. package/storybook-static/vendors~main.4abf29e4f956d5befb41.bundle.js.LICENSE.txt +0 -105
  481. package/storybook-static/vendors~main.b0c44c8759149ccf4f67.bundle.js +0 -3
  482. package/storybook-static/vendors~main.b0c44c8759149ccf4f67.bundle.js.LICENSE.txt +0 -145
  483. package/storybook-static/vendors~main.b0c44c8759149ccf4f67.bundle.js.map +0 -1
  484. package/webpack-api.config.js +0 -83
  485. package/webpack-ext.config.js +0 -84
@@ -18,6 +18,9 @@ import {withContextualMenu} from "../../../contexts/ContextualMenuContext";
18
18
  import FilterResourcesByFoldersItemContextualMenu from "./FilterResourcesByFoldersItemContextualMenu";
19
19
  import {withAppContext} from "../../../contexts/AppContext";
20
20
  import {ResourceWorkspaceFilterTypes, withResourceWorkspace} from "../../../contexts/ResourceWorkspaceContext";
21
+ import {withDrag} from "../../../contexts/DragContext";
22
+ import DisplayDragFolderItem from "./DisplayDragFolderItem";
23
+ import {withRouter} from "react-router-dom";
21
24
 
22
25
  class FilterResourcesByFoldersItem extends React.Component {
23
26
  /**
@@ -45,7 +48,7 @@ class FilterResourcesByFoldersItem extends React.Component {
45
48
 
46
49
 
47
50
  bindCallbacks() {
48
- this.handleClickLeftCaretEvent = this.handleClickLeftCaretEvent.bind(this);
51
+ this.handleToggleOpenFolder = this.handleToggleOpenFolder.bind(this);
49
52
  this.handleContextualMenuEvent = this.handleContextualMenuEvent.bind(this);
50
53
  this.handleDragEndEvent = this.handleDragEndEvent.bind(this);
51
54
  this.handleDragLeaveEvent = this.handleDragLeaveEvent.bind(this);
@@ -56,14 +59,24 @@ class FilterResourcesByFoldersItem extends React.Component {
56
59
  this.handleSelectEvent = this.handleSelectEvent.bind(this);
57
60
  }
58
61
 
62
+ componentDidMount() {
63
+ if (this.props.match.params.filterByFolderId) {
64
+ // Expand folder tree until the selected folder
65
+ this.openFolderParentTree(this.props.match.params.filterByFolderId);
66
+ }
67
+ }
68
+
59
69
  /**
60
70
  * Handle when the user start dragging the folder.
61
71
  * @param {ReactEvent} event The event
62
72
  */
63
73
  handleDragStartEvent(event) {
64
- const dragging = true;
65
- this.setState({dragging});
66
- this.props.onDragStart(event, this.props.folder);
74
+ event.persist();
75
+ const draggedItems = {
76
+ folders: [this.props.folder],
77
+ resources: []
78
+ };
79
+ this.props.dragContext.onDragStart(event, DisplayDragFolderItem, draggedItems);
67
80
  }
68
81
 
69
82
  /**
@@ -71,16 +84,29 @@ class FilterResourcesByFoldersItem extends React.Component {
71
84
  * Fold/Unfold the folder.
72
85
  * @param {ReactEvent} event The event
73
86
  */
74
- handleClickLeftCaretEvent(event) {
87
+ handleToggleOpenFolder(event) {
75
88
  /*
76
89
  * Prevent the component to select the folder.
77
90
  * @todo This default behavior should not be allowed as it will break other behavior, such as closing a contextual menu closing.
78
91
  */
79
92
  event.stopPropagation();
80
- if (this.isOpen()) {
81
- this.props.onClose(event, this.props.folder);
82
- } else {
83
- this.props.onOpen(event, this.props.folder);
93
+ const open = !this.state.open;
94
+ this.setState({open});
95
+ }
96
+
97
+ /**
98
+ * Open the tree until a given folder
99
+ * @param {object} selectedFolderId The folder id to scroll to
100
+ */
101
+ openFolderParentTree(selectedFolderId) {
102
+ const selectedFolder = this.props.context.folders.find(folder => folder.id === selectedFolderId);
103
+ // If the selected folder has a parent. Open it if not yet open.
104
+ if (selectedFolder.folder_parent_id) {
105
+ if (selectedFolder.folder_parent_id === this.props.folder.id) {
106
+ this.setState({open: true});
107
+ } else {
108
+ this.openFolderParentTree(selectedFolder.folder_parent_id);
109
+ }
84
110
  }
85
111
  }
86
112
 
@@ -89,7 +115,7 @@ class FilterResourcesByFoldersItem extends React.Component {
89
115
  * @return {boolean}
90
116
  */
91
117
  isOpen() {
92
- return this.props.openFolders.some(folder => folder.id === this.props.folder.id);
118
+ return this.state.open;
93
119
  }
94
120
 
95
121
  /**
@@ -123,8 +149,8 @@ class FilterResourcesByFoldersItem extends React.Component {
123
149
  * Handle when the user stop dragging content.
124
150
  * @param {ReactEvent} event The event
125
151
  */
126
- handleDragEndEvent(event) {
127
- this.props.onDragEnd(event);
152
+ handleDragEndEvent() {
153
+ this.props.dragContext.onDragEnd();
128
154
  }
129
155
 
130
156
  /**
@@ -169,7 +195,7 @@ class FilterResourcesByFoldersItem extends React.Component {
169
195
  if (!open) {
170
196
  const now = Date.now();
171
197
  if (now - this.state.draggingOverSince > period) {
172
- this.props.onOpen(event, this.props.folder);
198
+ this.handleToggleOpenFolder(event);
173
199
  }
174
200
  }
175
201
  }
@@ -178,11 +204,14 @@ class FilterResourcesByFoldersItem extends React.Component {
178
204
  * Handle when the user drop content on this component.
179
205
  * @param {ReactEvent} event The event
180
206
  */
181
- handleDropEvent(event) {
207
+ handleDropEvent() {
182
208
  // The user cannot drop the dragged content on a dragged item.
183
- const isDroppingOnDraggedItem = this.props.draggedItems.folders.some(item => item.id === this.props.folder.id);
209
+ const folders = this.props.dragContext.draggedItems.folders.map(folder => folder.id);
210
+ const resources = this.props.dragContext.draggedItems.resources.map(resource => resource.id);
211
+ const folderParentId = this.props.folder.id;
212
+ const isDroppingOnDraggedItem = this.draggedItems.folders.some(item => item.id === folderParentId);
184
213
  if (!isDroppingOnDraggedItem) {
185
- this.props.onDrop(event, this.props.folder);
214
+ this.props.context.port.request("passbolt.folders.open-move-confirmation-dialog", {folders, resources, folderParentId});
186
215
  }
187
216
 
188
217
  // The dragLeave event is not fired when a drop is happening. Cancel the state manually.
@@ -191,11 +220,10 @@ class FilterResourcesByFoldersItem extends React.Component {
191
220
  }
192
221
 
193
222
  /**
194
- * Handle when this component is selected.
195
- * @param {ReactEvent} event The event
223
+ * Handle the user selects a folder from the list.
196
224
  */
197
- handleSelectEvent(event) {
198
- this.props.onSelect(event, this.props.folder);
225
+ handleSelectEvent() {
226
+ this.props.history.push(`/app/folders/view/${this.props.folder.id}`);
199
227
  }
200
228
 
201
229
  /**
@@ -296,8 +324,8 @@ class FilterResourcesByFoldersItem extends React.Component {
296
324
  * @returns {int}
297
325
  */
298
326
  getDraggedItemsLowestPermission() {
299
- const draggedFoldersLowestPermission = this.getItemsListLowestPermission(this.props.draggedItems.folders);
300
- const draggedResourcesLowestPermission = this.getItemsListLowestPermission(this.props.draggedItems.resources);
327
+ const draggedFoldersLowestPermission = this.getItemsListLowestPermission(this.draggedItems.folders);
328
+ const draggedResourcesLowestPermission = this.getItemsListLowestPermission(this.draggedItems.resources);
301
329
 
302
330
  return draggedFoldersLowestPermission < draggedResourcesLowestPermission ? draggedFoldersLowestPermission : draggedResourcesLowestPermission;
303
331
  }
@@ -307,7 +335,7 @@ class FilterResourcesByFoldersItem extends React.Component {
307
335
  * @returns {boolean}
308
336
  */
309
337
  canDropInto() {
310
- if (!this.props.isDragging) {
338
+ if (!this.isDragging()) {
311
339
  return false;
312
340
  }
313
341
 
@@ -325,13 +353,13 @@ class FilterResourcesByFoldersItem extends React.Component {
325
353
  }
326
354
 
327
355
  // Cannot move a folder into one of its own children.
328
- if (this.isChildOfAny(this.props.folder, this.props.draggedItems.folders)) {
356
+ if (this.isChildOfAny(this.props.folder, this.draggedItems.folders)) {
329
357
  return false;
330
358
  }
331
359
 
332
360
  // Cannot move a folder into itself.
333
- for (const i in this.props.draggedItems.folders) {
334
- if (this.props.folder.id === this.props.draggedItems.folders[i].id) {
361
+ for (const i in this.draggedItems.folders) {
362
+ if (this.props.folder.id === this.draggedItems.folders[i].id) {
335
363
  return false;
336
364
  }
337
365
  }
@@ -344,12 +372,9 @@ class FilterResourcesByFoldersItem extends React.Component {
344
372
  * @returns {boolean}
345
373
  */
346
374
  isDragged() {
347
- for (const i in this.props.draggedItems.folders) {
348
- if (this.props.folder.id === this.props.draggedItems.folders[i].id) {
349
- return true;
350
- }
375
+ if (this.isDragging()) {
376
+ return this.draggedItems.folders.some(folder => folder.id === this.props.folder.id);
351
377
  }
352
-
353
378
  return false;
354
379
  }
355
380
 
@@ -363,8 +388,8 @@ class FilterResourcesByFoldersItem extends React.Component {
363
388
  * - The user is not allowed to drag any of dragged items;
364
389
  * - The user is not allowed to drop content in the folder associated to this component.
365
390
  */
366
- if (this.props.isDragging) {
367
- const canDragItems = this.canDragItems(this.props.draggedItems);
391
+ if (this.isDragging()) {
392
+ const canDragItems = this.canDragItems(this.draggedItems);
368
393
  if (!canDragItems) {
369
394
  return true;
370
395
  }
@@ -407,6 +432,22 @@ class FilterResourcesByFoldersItem extends React.Component {
407
432
  return folders;
408
433
  }
409
434
 
435
+ /**
436
+ * return dragged items
437
+ * @returns {*}
438
+ */
439
+ get draggedItems() {
440
+ return this.props.dragContext.draggedItems;
441
+ }
442
+
443
+ /**
444
+ * Check if the user is currently dragging content.
445
+ * @returns {boolean}
446
+ */
447
+ isDragging() {
448
+ return this.props.dragContext.dragging;
449
+ }
450
+
410
451
  /**
411
452
  * Render the component
412
453
  * @returns {JSX}
@@ -438,10 +479,10 @@ class FilterResourcesByFoldersItem extends React.Component {
438
479
  {hasChildren &&
439
480
  <Fragment>
440
481
  {isOpen &&
441
- <Icon name="caret-down" onClick={this.handleClickLeftCaretEvent}/>
482
+ <Icon name="caret-down" onClick={this.handleToggleOpenFolder}/>
442
483
  }
443
484
  {!isOpen &&
444
- <Icon name="caret-right" onClick={this.handleClickLeftCaretEvent}/>
485
+ <Icon name="caret-right" onClick={this.handleToggleOpenFolder}/>
445
486
  }
446
487
  </Fragment>
447
488
  }
@@ -465,17 +506,7 @@ class FilterResourcesByFoldersItem extends React.Component {
465
506
  <ul className="folders-tree">
466
507
  {folderChildren.map(folder => <DecoratedFoldersTreeItem
467
508
  key={`folders-tree-${folder.id}`}
468
- draggedItems={this.props.draggedItems}
469
- folder={folder}
470
- folders={this.props.context.folders}
471
- isDragging={this.props.isDragging}
472
- onClose={this.props.onClose}
473
- onDragEnd={this.props.onDragEnd}
474
- onDragStart={this.props.onDragStart}
475
- onDrop={this.props.onDrop}
476
- onOpen={this.props.onOpen}
477
- onSelect={this.props.onSelect}
478
- openFolders={this.props.openFolders}/>)}
509
+ folder={folder}/>)}
479
510
  </ul>
480
511
  }
481
512
  </li>
@@ -486,19 +517,13 @@ class FilterResourcesByFoldersItem extends React.Component {
486
517
  FilterResourcesByFoldersItem.propTypes = {
487
518
  context: PropTypes.any, // The app context
488
519
  contextualMenuContext: PropTypes.any, // The contextual menu context
489
- draggedItems: PropTypes.object,
520
+ history: PropTypes.object,
521
+ match: PropTypes.object,
490
522
  folder: PropTypes.object,
491
- isDragging: PropTypes.bool,
492
- onClose: PropTypes.func,
493
- onDragEnd: PropTypes.func,
494
- onDragStart: PropTypes.func,
495
- onDrop: PropTypes.func,
496
- onOpen: PropTypes.func,
497
- onSelect: PropTypes.func,
498
- openFolders: PropTypes.array,
499
- resourceWorkspaceContext: PropTypes.any
523
+ resourceWorkspaceContext: PropTypes.any,
524
+ dragContext: PropTypes.any,
500
525
  };
501
526
 
502
- const DecoratedFoldersTreeItem = withAppContext(withContextualMenu(withResourceWorkspace(FilterResourcesByFoldersItem)));
527
+ const DecoratedFoldersTreeItem = withRouter(withAppContext(withContextualMenu(withResourceWorkspace(withDrag(FilterResourcesByFoldersItem)))));
503
528
 
504
- export default withAppContext(withContextualMenu(withResourceWorkspace(FilterResourcesByFoldersItem)));
529
+ export default withRouter(withAppContext(withContextualMenu(withResourceWorkspace(withDrag(FilterResourcesByFoldersItem)))));
@@ -1,3 +1,5 @@
1
+ import {ResourceWorkspaceFilterTypes} from "../../../contexts/ResourceWorkspaceContext";
2
+ import MockPort from "../../../test/mock/MockPort";
1
3
 
2
4
  /**
3
5
  * Returns the default app context for the unit test
@@ -6,7 +8,8 @@
6
8
  */
7
9
  export function defaultAppContext(appContext) {
8
10
  const defaultAppContext = {
9
- folders: foldersMock
11
+ port: new MockPort(),
12
+ folders: foldersMock,
10
13
  };
11
14
  return Object.assign(defaultAppContext, appContext || {});
12
15
  }
@@ -17,27 +20,34 @@ export function defaultAppContext(appContext) {
17
20
  */
18
21
  export function defaultProps() {
19
22
  return {
20
- draggedItems: {
21
- folders: [foldersMock[4]],
22
- resources: []
23
- },
24
- folders: foldersMock,
25
- folder: foldersMock[1],
26
- selectedFolder: {
27
- id: foldersMock[1].id
23
+ resourceWorkspaceContext: {
24
+ filter: {
25
+ type: ResourceWorkspaceFilterTypes.FOLDER,
26
+ payload: {
27
+ folder: foldersMock[0]
28
+ }
29
+ }
28
30
  },
29
- isDragging: true,
30
- onClose: jest.fn(),
31
- onDragEnd: jest.fn(),
32
- onDragStart: jest.fn(),
33
- onDrop: jest.fn(),
34
- onOpen: jest.fn(),
35
- onSelect: jest.fn(),
36
- openFolders: {
37
- some: () => true
31
+ dragContext: {
32
+ dragging: true,
33
+ draggedItems: {
34
+ folders: [foldersMock[2]],
35
+ resources: []
36
+ },
37
+ onDragStart: jest.fn(),
38
+ onDragEnd: jest.fn(),
38
39
  },
40
+ folder: foldersMock[0],
39
41
  contextualMenuContext: {
40
42
  show: jest.fn()
43
+ },
44
+ history: {
45
+ push: jest.fn(),
46
+ },
47
+ match: {
48
+ params: {
49
+ filterByFolderId: foldersMock[2].id
50
+ }
41
51
  }
42
52
  };
43
53
  }
@@ -48,22 +58,24 @@ export function defaultProps() {
48
58
  */
49
59
  export function defaultPropsCloseFolders() {
50
60
  return {
51
- draggedItems: {
52
- folders: []
61
+ dragContext: {
62
+ dragging: false,
63
+ draggedItems: null
53
64
  },
54
- folders: foldersMock,
55
- folder: foldersMock[1],
56
- onClose: jest.fn(),
57
- onDragEnd: jest.fn(),
58
- onDragStart: jest.fn(),
59
- onDrop: jest.fn(),
60
- onOpen: jest.fn(),
61
- onSelect: jest.fn(),
62
- openFolders: {
63
- some: () => false
65
+ resourceWorkspaceContext: {
66
+ filter: {
67
+ type: ResourceWorkspaceFilterTypes.ALL,
68
+ }
64
69
  },
70
+ folder: foldersMock[0],
65
71
  contextualMenuContext: {
66
72
  show: jest.fn()
73
+ },
74
+ history: {
75
+ push: jest.fn()
76
+ },
77
+ match: {
78
+ params: jest.fn()
67
79
  }
68
80
  };
69
81
  }
@@ -73,27 +85,8 @@ export function defaultPropsCloseFolders() {
73
85
  */
74
86
  export const foldersMock = [
75
87
  {
76
- "id": "9e03fd73-04c0-5514-95fa-1a6cf2c7c093",
77
- "name": "Accounting",
78
- "created": "2020-02-01T00:00:00+00:00",
79
- "modified": "2020-02-01T00:00:00+00:00",
80
- "created_by": "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
81
- "modified_by": "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
82
- "permission": {
83
- "id": "6aada140-fe8b-5e69-a90f-ae0cec6d3dcf",
84
- "aco": "Folder",
85
- "aco_foreign_key": "9e03fd73-04c0-5514-95fa-1a6cf2c7c093",
86
- "aro": "User",
87
- "aro_foreign_key": "f848277c-5398-58f8-a82a-72397af2d450",
88
- "type": 1,
89
- "created": "2020-05-11T10:11:13+00:00",
90
- "modified": "2020-05-11T10:11:13+00:00"
91
- },
92
- "folder_parent_id": null,
93
- "personal": false
94
- }, {
95
- "id": "299f613b-0706-570a-8636-956186384e0a",
96
- "name": "ParentCertificates",
88
+ "id": "3ed65efd-7c41-5906-9c02-71e2d95951da",
89
+ "name": "Certificates",
97
90
  "created": "2020-02-01T00:00:00+00:00",
98
91
  "modified": "2020-02-01T00:00:00+00:00",
99
92
  "created_by": "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
@@ -111,8 +104,8 @@ export const foldersMock = [
111
104
  "folder_parent_id": null,
112
105
  "personal": false
113
106
  }, {
114
- "id": "3ed65efd-7c41-5906-9c02-71e2d95951da",
115
- "name": "Certificates",
107
+ "id": "3ed65efd-7c41-5906-9c02-71e2d95951db",
108
+ "name": "ChildCertificates2",
116
109
  "created": "2020-02-01T00:00:00+00:00",
117
110
  "modified": "2020-02-01T00:00:00+00:00",
118
111
  "created_by": "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
@@ -127,11 +120,11 @@ export const foldersMock = [
127
120
  "created": "2020-05-11T10:11:13+00:00",
128
121
  "modified": "2020-05-11T10:11:13+00:00"
129
122
  },
130
- "folder_parent_id": "299f613b-0706-570a-8636-956186384e0a",
123
+ "folder_parent_id": "3ed65efd-7c41-5906-9c02-71e2d95951da",
131
124
  "personal": false
132
125
  }, {
133
- "id": "3ed65efd-7c41-5906-9c02-71e2d95951db",
134
- "name": "ChildCertificates2",
126
+ "id": "3ed65efd-7c41-5906-9c02-71e2d95951dc",
127
+ "name": "ChildCertificates1",
135
128
  "created": "2020-02-01T00:00:00+00:00",
136
129
  "modified": "2020-02-01T00:00:00+00:00",
137
130
  "created_by": "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
@@ -149,8 +142,8 @@ export const foldersMock = [
149
142
  "folder_parent_id": "3ed65efd-7c41-5906-9c02-71e2d95951da",
150
143
  "personal": false
151
144
  }, {
152
- "id": "3ed65efd-7c41-5906-9c02-71e2d95951dc",
153
- "name": "ChildCertificates1",
145
+ "id": "3ed65efd-7c41-5906-9c02-71e2d95951dg",
146
+ "name": "ChildCertificates3",
154
147
  "created": "2020-02-01T00:00:00+00:00",
155
148
  "modified": "2020-02-01T00:00:00+00:00",
156
149
  "created_by": "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
@@ -165,7 +158,7 @@ export const foldersMock = [
165
158
  "created": "2020-05-11T10:11:13+00:00",
166
159
  "modified": "2020-05-11T10:11:13+00:00"
167
160
  },
168
- "folder_parent_id": "3ed65efd-7c41-5906-9c02-71e2d95951da",
161
+ "folder_parent_id": "3ed65efd-7c41-5906-9c02-71e2d95951dc",
169
162
  "personal": false
170
163
  }
171
164
  ];
@@ -30,7 +30,10 @@ beforeEach(() => {
30
30
 
31
31
  describe("As LU I should see each folders", () => {
32
32
  let page; // The page to test against
33
- const context = defaultAppContext(); // The applicative context
33
+ const appContext = defaultAppContext(); // The app context to pass
34
+ const requestMockImpl = jest.fn((message, data) => data);
35
+ const mockContextRequest = (context, implementation) => jest.spyOn(appContext.port, 'request').mockImplementation(implementation);
36
+ mockContextRequest(appContext, requestMockImpl);
34
37
 
35
38
  describe('As LU I should see and identify each folders open', () => {
36
39
  const props = defaultProps(); // The props to pass
@@ -42,52 +45,54 @@ describe("As LU I should see each folders", () => {
42
45
  */
43
46
 
44
47
  beforeEach(() => {
45
- page = new FilterResourcesByFoldersItemPage(context, props);
48
+ page = new FilterResourcesByFoldersItemPage(appContext, props);
46
49
  });
47
50
 
48
- it('As LU I should see all folders name', () => {
51
+ it('As LU I should see all folders name', async() => {
49
52
  expect(page.filterResourcesByFoldersItem.exists()).toBeTruthy();
53
+ await page.filterResourcesByFoldersItem.toggleDisplayChildFolders(2);
50
54
  expect(page.filterResourcesByFoldersItem.count).toBe(4);
51
- expect(page.filterResourcesByFoldersItem.name(1)).toBe("ParentCertificates");
52
- expect(page.filterResourcesByFoldersItem.name(2)).toBe("Certificates");
53
- expect(page.filterResourcesByFoldersItem.name(3)).toBe("ChildCertificates1");
55
+ expect(page.filterResourcesByFoldersItem.name(1)).toBe("Certificates");
56
+ expect(page.filterResourcesByFoldersItem.name(2)).toBe("ChildCertificates1");
57
+ expect(page.filterResourcesByFoldersItem.name(3)).toBe("ChildCertificates3");
54
58
  expect(page.filterResourcesByFoldersItem.name(4)).toBe("ChildCertificates2");
59
+ expect(page.filterResourcesByFoldersItem.selectedFolderName).toBe("Certificates");
55
60
  });
56
61
 
57
62
  it('As LU I should filter by folder', async() => {
58
- await page.filterResourcesByFoldersItem.filter(2);
59
- expect(props.onSelect).toHaveBeenCalled();
63
+ await page.filterResourcesByFoldersItem.filter(1);
64
+ expect(props.history.push).toHaveBeenCalledWith('/app/folders/view/3ed65efd-7c41-5906-9c02-71e2d95951da');
60
65
  });
61
66
 
62
67
  it('As LU I should be able to open a contextual menu for a folder with the more button', async() => {
63
68
  await page.filterResourcesByFoldersItem.openContextualMenuWithButton(1);
64
- expect(props.contextualMenuContext.show).toHaveBeenCalledWith(FilterResourcesByFoldersItemContextualMenu, {folder: foldersMock[1]});
69
+ expect(props.contextualMenuContext.show).toHaveBeenCalledWith(FilterResourcesByFoldersItemContextualMenu, {folder: foldersMock[0]});
65
70
  });
66
71
 
67
72
  it('As LU I should be able to open a contextual menu for a folder with right click on parent folder', async() => {
68
73
  await page.filterResourcesByFoldersItem.openContextualMenuWithRightClick(1);
69
- expect(props.contextualMenuContext.show).toHaveBeenCalledWith(FilterResourcesByFoldersItemContextualMenu, {folder: foldersMock[1]});
74
+ expect(props.contextualMenuContext.show).toHaveBeenCalledWith(FilterResourcesByFoldersItemContextualMenu, {folder: foldersMock[0]});
70
75
  });
71
76
 
72
77
  it('As LU I should be able to open a contextual menu for a folder with right click on a child folder', async() => {
73
78
  await page.filterResourcesByFoldersItem.openContextualMenuWithRightClick(3);
74
- expect(props.contextualMenuContext.show).toHaveBeenCalledWith(FilterResourcesByFoldersItemContextualMenu, {folder: foldersMock[1]});
79
+ expect(props.contextualMenuContext.show).toHaveBeenCalledWith(FilterResourcesByFoldersItemContextualMenu, {folder: foldersMock[0]});
75
80
  });
76
81
 
77
82
  it('As LU I should be able to drag and drop a folder on another folder', async() => {
78
83
  await page.filterResourcesByFoldersItem.dragStartOnFolder(3);
79
- await page.filterResourcesByFoldersItem.dragEndOnFolder(3);
84
+ await page.filterResourcesByFoldersItem.dragEndOnFolder(1);
80
85
  await page.filterResourcesByFoldersItem.dragOverOnFolder(1);
81
86
  await page.filterResourcesByFoldersItem.dragLeaveOnFolder(1);
82
- await page.filterResourcesByFoldersItem.onDropFolder(1);
83
- expect(props.onDragStart).toHaveBeenCalled();
84
- expect(props.onDragEnd).toHaveBeenCalled();
85
- expect(props.onDrop).toHaveBeenCalled();
87
+ await page.filterResourcesByFoldersItem.onDropFolder(3);
88
+ expect(props.dragContext.onDragStart).toHaveBeenCalled();
89
+ expect(props.dragContext.onDragEnd).toHaveBeenCalled();
90
+ expect(appContext.port.request).toHaveBeenCalledWith("passbolt.folders.open-move-confirmation-dialog", {folders: ["3ed65efd-7c41-5906-9c02-71e2d95951dc"], resources:[], folderParentId: foldersMock[1].id});
86
91
  });
87
92
 
88
93
  it('As LU I should be able to close folder to hide the child folders', async() => {
89
- await page.filterResourcesByFoldersItem.toggleDisplayChildFolders(2);
90
- expect(props.onClose).toHaveBeenCalled();
94
+ await page.filterResourcesByFoldersItem.toggleDisplayChildFolders(1);
95
+ expect(page.filterResourcesByFoldersItem.count).toBe(1);
91
96
  });
92
97
  });
93
98
 
@@ -99,12 +104,12 @@ describe("As LU I should see each folders", () => {
99
104
  */
100
105
 
101
106
  beforeEach(() => {
102
- page = new FilterResourcesByFoldersItemPage(context, props);
107
+ page = new FilterResourcesByFoldersItemPage(appContext, props);
103
108
  });
104
109
 
105
110
  it('As LU I should be able to open folder to see or not the child folders', async() => {
106
111
  await page.filterResourcesByFoldersItem.toggleDisplayChildFolders(1);
107
- expect(props.onOpen).toHaveBeenCalled();
112
+ expect(page.filterResourcesByFoldersItem.count).toBe(3);
108
113
  });
109
114
  });
110
115
  });
@@ -15,9 +15,11 @@
15
15
 
16
16
 
17
17
  import {fireEvent, render, waitFor} from "@testing-library/react";
18
- import AppContext from "../../../contexts/AppContext";
19
18
  import React from "react";
20
19
  import FilterResourcesByFoldersItem from "./FilterResourcesByFoldersItem";
20
+ import {BrowserRouter as Router} from "react-router-dom";
21
+ import AppContext from "../../../contexts/AppContext";
22
+ import {DragContext} from "../../../contexts/DragContext";
21
23
 
22
24
  /**
23
25
  * The FilterResourcesByFolders component represented as a page
@@ -31,7 +33,11 @@ export default class FilterResourcesByFoldersItemPage {
31
33
  constructor(appContext, props) {
32
34
  this._page = render(
33
35
  <AppContext.Provider value={appContext}>
34
- <FilterResourcesByFoldersItem {...props}/>
36
+ <Router>
37
+ <DragContext.Provider value={props.dragContext}>
38
+ <FilterResourcesByFoldersItem.WrappedComponent {...props}/>
39
+ </DragContext.Provider>
40
+ </Router>
35
41
  </AppContext.Provider>
36
42
  );
37
43
  this.setupPageObjects();
@@ -83,10 +89,10 @@ export class FilterResourcesByFoldersItemPageObject {
83
89
  }
84
90
 
85
91
  /**
86
- * Returns the folder selected
92
+ * Returns the name of the folder selected
87
93
  */
88
- get isSelected() {
89
- return this._container.querySelector('li.folder-item .row.selected') !== null;
94
+ get selectedFolderName() {
95
+ return this._container.querySelector('li.folder-item .row.selected').textContent;
90
96
  }
91
97
 
92
98
  /**
@@ -130,7 +130,7 @@ class FilterResourcesByFoldersItemContextualMenu extends React.Component {
130
130
  * Returns true if the user can export
131
131
  */
132
132
  canExport() {
133
- return this.props.context.siteSettings.settings.passbolt.plugins.export;
133
+ return this.props.context.siteSettings.canIUse("export");
134
134
  }
135
135
 
136
136
  /**
@@ -81,7 +81,7 @@ class FilterResourcesByRootFolderContextualMenu extends React.Component {
81
81
  * Returns true if the user can export
82
82
  */
83
83
  canExport() {
84
- return this.props.context.siteSettings.settings.passbolt.plugins.export;
84
+ return this.props.context.siteSettings.canIUse("export");
85
85
  }
86
86
 
87
87
  /**
@@ -125,7 +125,12 @@ class FilterResourcesByRootFolderContextualMenu extends React.Component {
125
125
  <div className="row">
126
126
  <div className="main-cell-wrapper">
127
127
  <div className="main-cell">
128
- <a onClick={this.handleExportFolderItemClickEvent}><span><Trans>Export all</Trans></span></a>
128
+ <a className={`${this.canExport() ? "" : "disabled"}`}
129
+ onClick={this.handleExportFolderItemClickEvent}>
130
+ <span>
131
+ <Trans>Export all</Trans>
132
+ </span>
133
+ </a>
129
134
  </div>
130
135
  </div>
131
136
  </div>
@@ -60,13 +60,7 @@ describe("As LU I should see each menu", () => {
60
60
  describe('As LU I should see and identify each menu disable', () => {
61
61
  const appContext = {
62
62
  siteSettings: {
63
- settings: {
64
- passbolt: {
65
- plugins: {
66
- export: false,
67
- }
68
- }
69
- }
63
+ canIUse: () => false
70
64
  }
71
65
  };
72
66
  const context = defaultAppContext(appContext); // The applicative context
@@ -82,6 +76,8 @@ describe("As LU I should see each menu", () => {
82
76
  it('As LU I should see all menu disabled', async() => {
83
77
  expect(page.foldersTreeRootFolderContextualMenu.menu(1).className).toBe("ready closed");
84
78
  expect(page.foldersTreeRootFolderContextualMenu.menu(2).className).toBe("ready closed disabled");
79
+ expect(page.foldersTreeRootFolderContextualMenu.menuRootFolder(1).className).toBe("");
80
+ expect(page.foldersTreeRootFolderContextualMenu.menuRootFolder(2).className).toBe("disabled");
85
81
  });
86
82
  });
87
83
  });
@@ -119,7 +119,7 @@ class FilterResourcesByGroups extends React.Component {
119
119
  return (
120
120
  <div>
121
121
  {this.hasGroup() &&
122
- <div className="folders navigation first accordion">
122
+ <div className="navigation-secondary-tree navigation-secondary navigation-groups accordion">
123
123
  <ul className="accordion-header">
124
124
  <li className={`node root ${this.state.open ? "open" : "close"}`}>
125
125
  <div className="row title">