passbolt-styleguide 3.3.2 → 3.4.0-alpha1

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 (203) hide show
  1. package/build/css/help.min.css +2 -2
  2. package/build/css/public.min.css +2 -2
  3. package/build/css/themes/default/api_authentication.min.css +3 -3
  4. package/build/css/themes/default/api_cloud.min.css +3 -3
  5. package/build/css/themes/default/api_main.min.css +4 -4
  6. package/build/css/themes/default/api_reports.min.css +4 -4
  7. package/build/css/themes/default/api_webinstaller.min.css +3 -3
  8. package/build/css/themes/default/ext_app.min.css +4 -4
  9. package/build/css/themes/default/ext_authentication.min.css +3 -3
  10. package/build/css/themes/default/ext_external.min.css +2 -2
  11. package/build/css/themes/default/ext_in_form_cta.min.css +3 -3
  12. package/build/css/themes/default/ext_in_form_menu.min.css +3 -3
  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 -4
  16. package/build/css/themes/midgar/api_reports.min.css +4 -4
  17. package/build/css/themes/midgar/ext_app.min.css +4 -4
  18. package/build/css/themes/midgar/ext_authentication.min.css +3 -3
  19. package/build/css/themes/midgar/ext_in_form_cta.min.css +3 -3
  20. package/build/css/themes/midgar/ext_in_form_menu.min.css +3 -3
  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-recover.js +1 -1
  24. package/build/js/dist/api-setup.js +1 -1
  25. package/build/js/dist/api-triage.js +1 -1
  26. package/build/js/dist/api-vendors.js +1 -1
  27. package/build/js/dist/api-vendors.js.LICENSE.txt +40 -4
  28. package/package.json +7 -6
  29. package/src/img/third_party/ChromeWebStore_black.svg +1 -0
  30. package/src/img/third_party/ChromeWebStore_white.svg +1 -0
  31. package/src/img/third_party/edge-addon-black.svg +1 -0
  32. package/src/img/third_party/edge-addon-white.svg +1 -0
  33. package/src/locales/de-DE/common.json +11 -11
  34. package/src/locales/en-UK/common.json +11 -12
  35. package/src/locales/fr/common.json +750 -0
  36. package/src/locales/fr-FR/common.json +11 -11
  37. package/src/locales/sv-SE/common.json +11 -11
  38. package/src/react-extension/ExtApp.js +9 -6
  39. package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.js +1 -1
  40. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.stories.js +0 -1
  41. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.js +1 -1
  42. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.js +1 -1
  43. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.stories.js +5 -8
  44. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.js +1 -1
  45. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.data.js +4 -1
  46. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.js +4 -4
  47. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.js +1 -1
  48. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.js +1 -1
  49. package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.test.js +2 -3
  50. package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.test.stories.js +5 -9
  51. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.js +2 -2
  52. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.stories.js +0 -3
  53. package/src/react-extension/components/Authentication/AskForAuthenticationHelp/AskForAuthenticationHelp.js +1 -1
  54. package/src/react-extension/components/Authentication/AskForAuthenticationHelp/AskForAuthenticationHelp.test.stories.js +12 -15
  55. package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.js +2 -2
  56. package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.test.js +1 -1
  57. package/src/react-extension/components/Authentication/CheckMailBox/CheckMailbox.test.stories.js +12 -14
  58. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.stories.js +12 -15
  59. package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.stories.js +12 -15
  60. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.stories.js +12 -15
  61. package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.test.stories.js +12 -15
  62. package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.stories.js +12 -15
  63. package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.test.stories.js +12 -15
  64. package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.stories.js +12 -15
  65. package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.js +1 -1
  66. package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.stories.js +12 -15
  67. package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.stories.js +12 -15
  68. package/src/react-extension/components/Authentication/EnterUsernameForm/EnterUsernameForm.test.stories.js +12 -15
  69. package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.data.js +14 -0
  70. package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.js +65 -0
  71. package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.page.js +38 -0
  72. package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.stories.js +12 -15
  73. package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.js +15 -6
  74. package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.js +27 -0
  75. package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.stories.js +12 -15
  76. package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.stories.js +12 -15
  77. package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.stories.js +8 -11
  78. package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.stories.js +12 -15
  79. package/src/react-extension/components/AuthenticationLogin/DisplayLoginError/DisplayLoginError.test.stories.js +12 -15
  80. package/src/react-extension/components/AuthenticationLogin/DisplayLoginInProgress/DisplayLoginProgress.test.stories.js +12 -15
  81. package/src/react-extension/components/AuthenticationLogin/Login/Login.test.stories.js +12 -15
  82. package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.test.stories.js +5 -11
  83. package/src/react-extension/components/AuthenticationRecover/RecoverAuthentication/RecoverAuthentication.js +1 -1
  84. package/src/react-extension/components/Common/Error/ShowErrorDetails/ShowErrorDetails.js +1 -1
  85. package/src/react-extension/components/Common/Icons/Icon.test.stories.js +3 -1
  86. package/src/react-extension/components/Common/Loading/LoadingSpinner/LoadingSpinner.js +2 -1
  87. package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.js +1 -1
  88. package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.test.js +1 -1
  89. package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.test.stories.js +34 -0
  90. package/src/react-extension/components/Resource/CreateResource/CreateResource.test.stories.js +14 -4
  91. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayDragResource.js +68 -0
  92. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.js +9 -42
  93. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.test.page.js +4 -1
  94. package/src/react-extension/components/Resource/ExportResources/ExportResources.test.stories.js +5 -11
  95. package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.js +6 -10
  96. package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.test.stories.js +5 -11
  97. package/src/react-extension/components/Resource/FilterResourcesByBreadcrumb/FilterResourcesByBreadcrumb.test.stories.js +0 -1
  98. package/src/react-extension/components/Resource/FilterResourcesByFolders/DisplayDragFolderItem.js +109 -0
  99. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.js +40 -192
  100. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.data.js +10 -5
  101. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.js +9 -12
  102. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.page.js +5 -1
  103. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.stories.js +0 -1
  104. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.js +83 -58
  105. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.data.js +52 -59
  106. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.js +25 -20
  107. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.page.js +11 -5
  108. package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.test.stories.js +0 -1
  109. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.data.js +47 -0
  110. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.js +34 -3
  111. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.page.js +46 -9
  112. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.stories.js +0 -1
  113. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTagsList.js +124 -4
  114. package/src/react-extension/components/Resource/FilterResourcesByText/FilterResourcesByText.test.stories.js +0 -2
  115. package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.js +6 -10
  116. package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.test.stories.js +5 -11
  117. package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.js +3 -3
  118. package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.js +3 -3
  119. package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.stories.js +5 -11
  120. package/src/react-extension/components/ResourceComment/AddResourceComment/AddResourceComment.test.stories.js +8 -14
  121. package/src/react-extension/components/ResourceComment/ConfirmResourceCommentDeletion/ConfirmResourceCommentDeletion.test.stories.js +5 -11
  122. package/src/react-extension/components/ResourceComment/DisplayResourceCommentList/DisplayResourceCommentList.test.stories.js +8 -14
  123. package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.test.stories.js +8 -15
  124. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsActivity.test.stories.js +0 -1
  125. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsDescription.test.stories.js +0 -1
  126. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.test.js +1 -1
  127. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.test.stories.js +0 -1
  128. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.stories.js +0 -3
  129. package/src/react-extension/components/ResourceFolder/DefineResourceFolderMoveStrategy/DefineResourceFolderMoveStrategy.test.stories.js +0 -6
  130. package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.test.stories.js +0 -5
  131. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.stories.js +0 -7
  132. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsActivity.test.stories.js +0 -2
  133. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.test.stories.js +0 -2
  134. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsPermissions.test.stories.js +0 -2
  135. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePassphraseGenerator.test.stories.js +0 -1
  136. package/src/react-extension/components/ResourceTag/DeleteResourceTag/DeleteResourceTag.test.stories.js +0 -2
  137. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.stories.js +0 -4
  138. package/src/react-extension/components/ResourceTag/EditResourceTags/EditResourceTags.js +1 -1
  139. package/src/react-extension/components/Share/ShareDialog.test.stories.js +5 -9
  140. package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.test.stories.js +5 -9
  141. package/src/react-extension/components/User/CreateUser/CreateUser.test.stories.js +3 -1
  142. package/src/react-extension/components/User/DeleteUser/DeleteUser.test.stories.js +5 -8
  143. package/src/react-extension/components/User/DeleteUser/DeleteUserWithConflicts.test.stories.js +5 -8
  144. package/src/react-extension/components/User/EditUser/EditUser.test.stories.js +3 -1
  145. package/src/react-extension/components/User/FilterUsersByBreadcrumb/FilterUsersByBreadcrumb.test.stories.js +5 -8
  146. package/src/react-extension/components/User/FilterUsersByShortcut/FilterUsersByShortcut.test.stories.js +0 -1
  147. package/src/react-extension/components/User/FilterUsersByText/FilterUsersByText.test.stories.js +0 -2
  148. package/src/react-extension/components/UserDetails/DisplayUserDetailsGroups/DisplayUserDetailsGroups.test.stories.js +8 -11
  149. package/src/react-extension/components/UserDetails/DisplayUserDetailsInformation/DisplayUserDetailsInformation.test.stories.js +8 -11
  150. package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.stories.js +8 -12
  151. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.stories.js +5 -8
  152. package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroup.test.stories.js +5 -8
  153. package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroupWithConflicts.test.stories.js +5 -8
  154. package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsInformation/DisplayUserGroupDetailsInformation.test.stories.js +8 -11
  155. package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembers.test.stories.js +8 -11
  156. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.stories.js +5 -8
  157. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.js +55 -2
  158. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.test.data.js +6 -0
  159. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js +54 -6
  160. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.data.js +6 -0
  161. package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.js +1 -1
  162. package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.test.stories.js +5 -8
  163. package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.js +21 -6
  164. package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.test.stories.js +5 -8
  165. package/src/react-extension/components/UserSetting/DisplayUserProfile/DisplayUserProfile.test.stories.js +5 -8
  166. package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspaceBreadcrumb/DisplayUserSettingsWorkspaceBreadcrumb.test.stories.js +5 -8
  167. package/src/react-extension/components/UserSetting/DisplayUserTheme/DisplayUserTheme.test.stories.js +5 -8
  168. package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.test.stories.js +5 -8
  169. package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.test.stories.js +7 -10
  170. package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.js +2 -2
  171. package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.test.stories.js +5 -8
  172. package/src/react-extension/contexts/ApiAppContext.js +1 -1
  173. package/src/react-extension/contexts/ApiRecoverContext.js +1 -1
  174. package/src/react-extension/contexts/ApiSetupContext.js +1 -1
  175. package/src/react-extension/contexts/DragContext.js +122 -0
  176. package/src/react-extension/contexts/DragContext.test.js +53 -0
  177. package/src/react-extension/test/mock/components/Internationalisation/MockTranslationProvider.js +42 -7
  178. package/src/react-quickaccess/components/AnimatedSwitch/AnimatedSwitch.js +3 -3
  179. package/src/react-quickaccess/components/ExtensionSetup/SetupExtensionInProgress/SetupExtensionInProgressPage.test.stories.js +3 -4
  180. package/src/react-quickaccess/components/FilterResourcesByFavoritePage/FilterResourcesByFavoritePage.test.stories.js +6 -6
  181. package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.test.stories.js +7 -3
  182. package/src/react-quickaccess/components/FilterResourcesByItemsIOwnPage/FilterResourcesByItemsIOwnPage.test.stories.js +6 -6
  183. package/src/react-quickaccess/components/FilterResourcesByRecentlyModifiedPage/FilterResourcesByRecentlyModifiedPage.test.stories.js +6 -6
  184. package/src/react-quickaccess/components/FilterResourcesBySharedWithMePage/FilterResourcesBySharedWithMePage.test.stories.js +6 -6
  185. package/src/react-quickaccess/components/FilterResourcesByTagPage/FilterResourcesByTagPage.test.stories.js +7 -3
  186. package/src/react-quickaccess/components/Header/Header.test.stories.js +3 -6
  187. package/src/react-quickaccess/components/HomePage/HomePage.test.stories.js +13 -9
  188. package/src/react-quickaccess/components/LoginPage/LoginPage.js +41 -5
  189. package/src/react-quickaccess/components/LoginPage/LoginPage.test.stories.js +3 -5
  190. package/src/react-quickaccess/components/MoreFiltersPage/MoreFiltersPage.test.stories.js +3 -5
  191. package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.test.stories.js +5 -5
  192. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.stories.js +5 -5
  193. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.stories.js +5 -5
  194. package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.test.stories.js +4 -2
  195. package/src/react-quickaccess/components/Search/Search.test.stories.js +3 -5
  196. package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.stories.js +6 -2
  197. package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.test.stories.js +9 -2
  198. package/src/react-web-integration/lib/InForm/InFormCallToActionField.js +3 -3
  199. package/src/react-web-integration/lib/InForm/InFormManager.js +12 -6
  200. package/src/react-web-integration/lib/InForm/InformMenuField.js +1 -1
  201. package/src/shared/lib/Browser/detectBrowserName.js +2 -1
  202. package/src/img/third_party/ChromeWebStore_black.png +0 -0
  203. package/src/img/third_party/ChromeWebStore_white.png +0 -0
@@ -20,6 +20,7 @@ import AppContext from "../../../contexts/AppContext";
20
20
  import {BrowserRouter as Router} from "react-router-dom";
21
21
  import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
22
22
  import DisplayResourcesList from "./DisplayResourcesList";
23
+ import {DragContext} from "../../../contexts/DragContext";
23
24
 
24
25
  /**
25
26
  * The DisplayResourcesListPage component represented as a page
@@ -35,7 +36,9 @@ export default class DisplayResourcesListPage {
35
36
  <MockTranslationProvider>
36
37
  <AppContext.Provider value={appContext}>
37
38
  <Router>
38
- <DisplayResourcesList {...props}/>
39
+ <DragContext.Provider value={props.dragContext}>
40
+ <DisplayResourcesList {...props}/>
41
+ </DragContext.Provider>
39
42
  </Router>
40
43
  </AppContext.Provider>
41
44
  </MockTranslationProvider>
@@ -1,8 +1,6 @@
1
1
  import React from "react";
2
2
  import {MemoryRouter, Route} from "react-router-dom";
3
- import "../../../../css/themes/default/ext_app.css";
4
3
  import AppContext from "../../../contexts/AppContext";
5
- import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
6
4
  import ExportResources from "./ExportResources";
7
5
 
8
6
 
@@ -59,14 +57,11 @@ const context = {
59
57
 
60
58
 
61
59
  const Template = args =>
62
- <MockTranslationProvider>
63
- <AppContext.Provider value={context}>
64
- <MemoryRouter initialEntries={['/']}>
65
- <Route component={routerProps => <ExportResources {...args} {...routerProps}/>}></Route>
66
- </MemoryRouter>
67
- </AppContext.Provider>
68
- </MockTranslationProvider>;
69
-
60
+ <AppContext.Provider value={context}>
61
+ <MemoryRouter initialEntries={['/']}>
62
+ <Route component={routerProps => <ExportResources {...args} {...routerProps}/>}></Route>
63
+ </MemoryRouter>
64
+ </AppContext.Provider>;
70
65
 
71
66
 
72
67
  export const Initial = Template.bind({});
@@ -78,4 +73,3 @@ Initial.args = {
78
73
  onResourcesToExport: () => {}
79
74
  }
80
75
  };
81
-
@@ -243,16 +243,12 @@ class ExportResourcesCredentials extends Component {
243
243
  ref={this.passwordInputRef}
244
244
  disabled={!this.areActionsAllowed}
245
245
  autoComplete="off"/>
246
- <ul className="actions inline">
247
- <li>
248
- <a
249
- onClick={this.handlePasswordViewToggled}
250
- className={`password-view button button-icon toggle ${this.state.showPassword ? "selected" : ""} ${!this.areActionsAllowed ? "disabled" : ""}`}>
251
- <Icon name="eye-open" big={true}/>
252
- <span className="visually-hidden">view</span>
253
- </a>
254
- </li>
255
- </ul>
246
+ <a
247
+ onClick={this.handlePasswordViewToggled}
248
+ className={`password-view button button-icon toggle ${this.state.showPassword ? "selected" : ""} ${!this.areActionsAllowed ? "disabled" : ""}`}>
249
+ <Icon name="eye-open" big={true}/>
250
+ <span className="visually-hidden">view</span>
251
+ </a>
256
252
  </div>
257
253
  </div>
258
254
 
@@ -1,8 +1,6 @@
1
1
  import React from "react";
2
2
  import {MemoryRouter, Route} from "react-router-dom";
3
- import "../../../../css/themes/default/ext_app.css";
4
3
  import AppContext from "../../../contexts/AppContext";
5
- import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
6
4
  import ExportResourcesCredentials from "./ExportResourcesCredentials";
7
5
 
8
6
 
@@ -19,14 +17,11 @@ const context = {
19
17
 
20
18
 
21
19
  const Template = args =>
22
- <MockTranslationProvider>
23
- <AppContext.Provider value={context}>
24
- <MemoryRouter initialEntries={['/']}>
25
- <Route component={routerProps => <ExportResourcesCredentials {...args} {...routerProps}/>}></Route>
26
- </MemoryRouter>
27
- </AppContext.Provider>
28
- </MockTranslationProvider>;
29
-
20
+ <AppContext.Provider value={context}>
21
+ <MemoryRouter initialEntries={['/']}>
22
+ <Route component={routerProps => <ExportResourcesCredentials {...args} {...routerProps}/>}></Route>
23
+ </MemoryRouter>
24
+ </AppContext.Provider>;
30
25
 
31
26
 
32
27
  export const Initial = Template.bind({});
@@ -40,4 +35,3 @@ Initial.args = {
40
35
  }
41
36
  }
42
37
  };
43
-
@@ -1,7 +1,6 @@
1
1
  import React from "react";
2
2
  import {ResourceWorkspaceFilterTypes} from "../../../contexts/ResourceWorkspaceContext";
3
3
  import {MemoryRouter, Route} from "react-router-dom";
4
- import "../../../../css/themes/default/ext_app.css";
5
4
  import FilterResourcesByBreadcrumb from "./FilterResourcesByBreadcrumb";
6
5
 
7
6
 
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Passbolt ~ Open source password manager for teams
3
+ * Copyright (c) Passbolt SA (https://www.passbolt.com)
4
+ *
5
+ * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
+ * For full copyright and license information, please see the LICENSE.txt
7
+ * Redistributions of files must retain the above copyright notice.
8
+ *
9
+ * @copyright Copyright (c) Passbolt SA (https://www.passbolt.com)
10
+ * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
+ * @link https://www.passbolt.com Passbolt(tm)
12
+ * @since 3.4.0
13
+ */
14
+ import React from "react";
15
+ import PropTypes from "prop-types";
16
+ import AppContext, {withAppContext} from "../../../contexts/AppContext";
17
+ import {withResourceWorkspace} from "../../../contexts/ResourceWorkspaceContext";
18
+ import Icon from "../../../components/Common/Icons/Icon";
19
+ import {withDrag} from "../../../contexts/DragContext";
20
+
21
+ class DisplayDragFolderItem extends React.Component {
22
+ /**
23
+ * Check if the user is currently dragging content.
24
+ * @returns {number}
25
+ */
26
+ isDragging() {
27
+ return this.props.dragContext.dragging;
28
+ }
29
+
30
+ /**
31
+ * return dragged items
32
+ * @returns {*}
33
+ */
34
+ get draggedItems() {
35
+ return this.props.dragContext.draggedItems;
36
+ }
37
+
38
+ /**
39
+ * Check if the user can drag all the items they are currently dragging.
40
+ * @param {array} draggedItems The list of dragged items.
41
+ * @returns {boolean}
42
+ */
43
+ canDragItems(draggedItems) {
44
+ const draggedFolders = draggedItems.folders;
45
+ let canDragItems = draggedFolders.reduce((accumulator, folder) => accumulator && this.canDragItem(folder), true);
46
+
47
+ const draggedResources = draggedItems.resources;
48
+ canDragItems = canDragItems && draggedResources.reduce((accumulator, folder) => accumulator && this.canDragItem(folder), true);
49
+
50
+ return canDragItems;
51
+ }
52
+
53
+ /**
54
+ * Check if the user can drag an item.
55
+ * @param {object} item The target item
56
+ */
57
+ canDragItem(item) {
58
+ // The user can always drag an element located at their root.
59
+ if (item.folder_parent_id === null) {
60
+ return true;
61
+ }
62
+
63
+ const folderParent = this.props.context.folders.find(folder => folder.id === item.folder_parent_id);
64
+
65
+ // The user can always drag content from a personal folder.
66
+ if (folderParent.personal) {
67
+ return true;
68
+ }
69
+
70
+ // The user cannot drag an element if the parent folder is in READ.
71
+ if (folderParent.permission.type < 7) {
72
+ return false;
73
+ }
74
+
75
+ // The user cannot move folder in READ ONLY from a shared folder.
76
+ if (item.permission.type < 7) {
77
+ return false;
78
+ }
79
+
80
+ return true;
81
+ }
82
+
83
+ /**
84
+ * Render the component.
85
+ * @returns {JSX}
86
+ */
87
+ render() {
88
+ const canDrag = this.canDragItems(this.draggedItems);
89
+ const dragFeedbackText = canDrag ? this.draggedItems.folders[0].name : "You are not allowed to move this content";
90
+ return (
91
+ <div className="drag-and-drop">
92
+ {!canDrag &&
93
+ <Icon name="ban"/>
94
+ }
95
+ <span className={`message ${!canDrag ? "not-allowed" : ""}`}>{dragFeedbackText}</span>
96
+ </div>
97
+ );
98
+ }
99
+ }
100
+
101
+ DisplayDragFolderItem.contextType = AppContext;
102
+
103
+ DisplayDragFolderItem.propTypes = {
104
+ context: PropTypes.any, // The app context
105
+ resourceWorkspaceContext: PropTypes.any,
106
+ dragContext: PropTypes.any,
107
+ };
108
+
109
+ export default withAppContext(withResourceWorkspace(withDrag(DisplayDragFolderItem)));
@@ -23,6 +23,7 @@ import PropTypes from "prop-types";
23
23
  import {withDialog} from "../../../contexts/DialogContext";
24
24
  import ReactList from "react-list";
25
25
  import {Trans, withTranslation} from "react-i18next";
26
+ import {withDrag} from "../../../contexts/DragContext";
26
27
 
27
28
  // Root virtual folder identifier.
28
29
  const ROOT = null;
@@ -37,7 +38,6 @@ class FilterResourcesByFolders extends React.Component {
37
38
  this.state = this.getDefaultState();
38
39
  this.createElementsRef();
39
40
  this.bindCallbacks();
40
- this.initEventHandlers();
41
41
  }
42
42
 
43
43
  /**
@@ -46,14 +46,9 @@ class FilterResourcesByFolders extends React.Component {
46
46
  */
47
47
  getDefaultState() {
48
48
  return {
49
- draggedItems: {
50
- folders: [],
51
- resources: []
52
- },
53
- dragging: false,
54
49
  draggingOverTitle: false,
50
+ draggingOverTitleSince: null,
55
51
  open: true,
56
- openFolders: []
57
52
  };
58
53
  }
59
54
 
@@ -68,7 +63,6 @@ class FilterResourcesByFolders extends React.Component {
68
63
  * Create DOM nodes or React elements references in order to be able to access them programmatically.
69
64
  */
70
65
  createElementsRef() {
71
- this.dragFeedbackElementRef = React.createRef();
72
66
  this.listElement = React.createRef();
73
67
  this.titleElementRef = React.createRef();
74
68
  }
@@ -82,48 +76,9 @@ class FilterResourcesByFolders extends React.Component {
82
76
  this.handleDragLeaveTitle = this.handleDragLeaveTitle.bind(this);
83
77
  this.handleDragOverTitle = this.handleDragOverTitle.bind(this);
84
78
  this.handleDropTitle = this.handleDropTitle.bind(this);
85
- this.handleFolderCloseEvent = this.handleFolderCloseEvent.bind(this);
86
- this.handleFolderDragEndEvent = this.handleFolderDragEndEvent.bind(this);
87
- this.handleFolderDragStartEvent = this.handleFolderDragStartEvent.bind(this);
88
- this.handleFolderDropEvent = this.handleFolderDropEvent.bind(this);
89
- this.handleFolderOpenEvent = this.handleFolderOpenEvent.bind(this);
90
- this.handleFolderSelectEvent = this.handleFolderSelectEvent.bind(this);
91
- this.handleGridDragStartEvent = this.handleGridDragStartEvent.bind(this);
92
- this.handleGridDragEndEvent = this.handleGridDragEndEvent.bind(this);
93
79
  this.handleTitleMoreClickEvent = this.handleTitleMoreClickEvent.bind(this);
94
80
  }
95
81
 
96
- /**
97
- * Initialize event listeners.
98
- */
99
- initEventHandlers() {
100
- document.addEventListener('passbolt.resources.drag-start', this.handleGridDragStartEvent);
101
- document.addEventListener('passbolt.resources.drag-end', this.handleGridDragEndEvent);
102
- }
103
-
104
- /**
105
- * Handle when the user opens a folder.
106
- * @param {ReactEvent} event The event
107
- * @param {Object} folder The open folder
108
- */
109
- handleFolderCloseEvent(event, folder) {
110
- const openFolders = this.state.openFolders;
111
- const folderIndex = openFolders.findIndex(item => item.id === folder.id);
112
- openFolders.splice(folderIndex, 1);
113
- this.setState({openFolders});
114
- }
115
-
116
- /**
117
- * Handle when the user opens a folder.
118
- * @param {ReactEvent} event The event
119
- * @param {Object} folder The open folder
120
- */
121
- handleFolderOpenEvent(event, folder) {
122
- const openFolders = this.state.openFolders;
123
- openFolders.push(folder);
124
- this.setState({openFolders});
125
- }
126
-
127
82
  /**
128
83
  * Handle when the user clicks on the section title.
129
84
  */
@@ -170,7 +125,8 @@ class FilterResourcesByFolders extends React.Component {
170
125
  */
171
126
  handleDragLeaveTitle() {
172
127
  const draggingOverTitle = false;
173
- this.setState({draggingOverTitle});
128
+ const draggingOverTitleSince = null;
129
+ this.setState({draggingOverTitle, draggingOverTitleSince});
174
130
  }
175
131
 
176
132
  /**
@@ -185,18 +141,36 @@ class FilterResourcesByFolders extends React.Component {
185
141
  event.preventDefault();
186
142
 
187
143
  if (this.state.draggingOverTitle) {
144
+ this.openTitleOnLongDragOver();
188
145
  return;
189
146
  }
190
147
  const draggingOverTitle = true;
191
- this.setState({draggingOverTitle});
148
+ const draggingOverTitleSince = Date.now();
149
+ this.setState({draggingOverTitle, draggingOverTitleSince});
150
+ }
151
+
152
+ /**
153
+ * Open the root folder when the user is dragging for a defined period on it.
154
+ * @param {ReactEvent} event The event
155
+ */
156
+ openTitleOnLongDragOver() {
157
+ const period = 2000;
158
+
159
+ // If already open, leave.
160
+ if (!this.state.open) {
161
+ const now = Date.now();
162
+ if (now - this.state.draggingOverTitleSince > period) {
163
+ this.handleSectionTitleClickCaretEvent();
164
+ }
165
+ }
192
166
  }
193
167
 
194
168
  /**
195
169
  * Handle when the user is dropping the content on the title.
196
170
  */
197
171
  handleDropTitle() {
198
- const folders = this.state.draggedItems.folders.map(folder => folder.id);
199
- const resources = this.state.draggedItems.resources.map(resource => resource.id);
172
+ const folders = this.props.dragContext.draggedItems.folders.map(folder => folder.id);
173
+ const resources = this.props.dragContext.draggedItems.resources.map(resource => resource.id);
200
174
  const folderParentId = null;
201
175
  this.props.context.port.request("passbolt.folders.open-move-confirmation-dialog", {folders, resources, folderParentId});
202
176
 
@@ -205,96 +179,6 @@ class FilterResourcesByFolders extends React.Component {
205
179
  this.setState({draggingOverTitle});
206
180
  }
207
181
 
208
- /**
209
- * Handle when the user stop dragging a folder.
210
- */
211
- handleFolderDragEndEvent() {
212
- const draggedItems = {
213
- folders: [],
214
- resources: [],
215
- };
216
- const dragging = false;
217
- this.setState({draggedItems, dragging});
218
- }
219
-
220
- /**
221
- * Handle when the user starts dragging a folder.
222
- * @param {ReactEvent} event The event
223
- * @param {Object} folder The dragged folder
224
- */
225
- handleFolderDragStartEvent(event, folder) {
226
- const dragging = true;
227
- const draggedItems = {
228
- folders: [folder],
229
- resources: []
230
- };
231
- this.setState({dragging, draggedItems});
232
- event.dataTransfer.setDragImage(this.dragFeedbackElementRef.current, 5, 5);
233
- }
234
-
235
- /**
236
- * Handle when the user drop the content on a folder.
237
- * @param {ReactEvent} event The event
238
- * @param {Object} folder The drop folder
239
- */
240
- handleFolderDropEvent(event, dropFolder) {
241
- const folders = this.state.draggedItems.folders.map(folder => folder.id);
242
- const resources = this.state.draggedItems.resources.map(resource => resource.id);
243
- const folderParentId = dropFolder.id;
244
- this.props.context.port.request("passbolt.folders.open-move-confirmation-dialog", {folders, resources, folderParentId});
245
- }
246
-
247
- /**
248
- * Handle the user selects a folder from the list.
249
- * @param {ReactEvent} event The event
250
- * @param {Object} folder The folder
251
- */
252
- handleFolderSelectEvent(event, folder) {
253
- this.props.history.push(`/app/folders/view/${folder.id}`);
254
- }
255
-
256
- /**
257
- * Handle when the user is dragging content from the grid.
258
- * @param {ReactEvent} event The event
259
- * event.details should be formatted as following:
260
- * {
261
- * array folders The list of dragged folders
262
- * array resources The list of dragged resources
263
- * }
264
- */
265
- handleGridDragStartEvent(event) {
266
- const draggedItems = event.detail;
267
- this.setState({draggedItems});
268
- }
269
-
270
- /**
271
- * Handle when the user stops dragging content from the grid.
272
- */
273
- handleGridDragEndEvent() {
274
- const draggedItems = {
275
- folders: [],
276
- resources: []
277
- };
278
- this.setState({draggedItems});
279
- }
280
-
281
- /**
282
- * Open the tree until a given folder
283
- * @param {object} folder The folder to scroll to
284
- */
285
- openFolderTree(folder) {
286
- let openFolders = this.state.openFolders;
287
-
288
- // If the selected folder has a parent. Open it if not yet open.
289
- if (folder.folder_parent_id) {
290
- const folderParent = this.props.context.folders.folders.find(item => item.id === folder.folder_parent_id);
291
- if (folderParent) {
292
- openFolders = Array.from(new Set([...openFolders, folderParent]));
293
- this.setState({openFolders}, () => this.openFolderTree(folderParent));
294
- }
295
- }
296
- }
297
-
298
182
  /**
299
183
  * Check if the user can drag an item.
300
184
  * @param {object} item The target item
@@ -340,38 +224,6 @@ class FilterResourcesByFolders extends React.Component {
340
224
  return canDragItems;
341
225
  }
342
226
 
343
- /**
344
- * Render the drag feedback
345
- * @returns {JSX}
346
- */
347
- renderDragFeedback() {
348
- let error = false;
349
- let dragFeedbackText = "";
350
- if (this.state.dragging) {
351
- const canDrag = this.canDragItems(this.state.draggedItems);
352
- if (canDrag) {
353
- dragFeedbackText = this.state.draggedItems.folders[0].name;
354
- } else {
355
- error = true;
356
- dragFeedbackText = this.translate("You are not allowed to move this content");
357
- }
358
- }
359
-
360
- /*
361
- * We display the drag feedback element even if there is no drag event happening.
362
- * The start drag event can start using the element before the render is completely rendered, not sure the waiting
363
- * the status to be updated will be sufficient.
364
- */
365
- return (
366
- <div ref={this.dragFeedbackElementRef} className="drag-and-drop">
367
- {error &&
368
- <Icon name="ban"/>
369
- }
370
- <span className={`message ${error ? "not-allowed" : ""}`}>{dragFeedbackText}</span>
371
- </div>
372
- );
373
- }
374
-
375
227
  /**
376
228
  * Check if the component is loading.
377
229
  * @returns {boolean}
@@ -416,10 +268,18 @@ class FilterResourcesByFolders extends React.Component {
416
268
 
417
269
  /**
418
270
  * Check if the user is currently dragging content.
419
- * @returns {number}
271
+ * @returns {boolean}
420
272
  */
421
273
  isDragging() {
422
- return this.state.draggedItems.folders.length !== 0 || this.state.draggedItems.resources.length !== 0;
274
+ return this.props.dragContext.dragging;
275
+ }
276
+
277
+ /**
278
+ * return dragged items
279
+ * @returns {*}
280
+ */
281
+ get draggedItems() {
282
+ return this.props.dragContext.draggedItems;
423
283
  }
424
284
 
425
285
  /**
@@ -443,7 +303,7 @@ class FilterResourcesByFolders extends React.Component {
443
303
  let disabled = false;
444
304
 
445
305
  if (isDragging && this.state.draggingOverTitle) {
446
- const canDragItems = this.canDragItems(this.state.draggedItems);
306
+ const canDragItems = this.canDragItems(this.draggedItems);
447
307
  if (canDragItems) {
448
308
  showDropFocus = true;
449
309
  } else {
@@ -454,7 +314,6 @@ class FilterResourcesByFolders extends React.Component {
454
314
 
455
315
  return (
456
316
  <div className="navigation-secondary-tree navigation-secondary navigation-folders accordion">
457
- {this.renderDragFeedback()}
458
317
  <div className="accordion-header">
459
318
  <div className={`${isOpen ? "open" : "close"} node root`}>
460
319
  <div className={`row title ${showDropFocus ? "drop-focus" : ""} ${disabled ? "disabled" : ""}`}>
@@ -498,25 +357,13 @@ class FilterResourcesByFolders extends React.Component {
498
357
  <ReactList
499
358
  itemRenderer={(index, key) => <FilterResourcesByFoldersItem
500
359
  key={key}
501
- draggedItems={this.state.draggedItems}
502
- folder={rootFolders[index]}
503
- folders={this.props.context.folders}
504
- isDragging={isDragging}
505
- onClose={this.handleFolderCloseEvent}
506
- onDragEnd={this.handleFolderDragEndEvent}
507
- onDragStart={this.handleFolderDragStartEvent}
508
- onDrop={this.handleFolderDropEvent}
509
- onOpen={this.handleFolderOpenEvent}
510
- openFolders={this.state.openFolders}
511
- onSelect={this.handleFolderSelectEvent}
512
- selectedFolder={this.selectedFolder}/>
360
+ folder={rootFolders[index]}/>
513
361
  }
514
362
  itemsRenderer={(items, ref) => <ul ref={ref} className="folders-tree">{items}</ul>}
515
363
  length={rootFolders.length}
516
364
  pageSize={20}
517
365
  minSize={20}
518
- type="uniform"
519
- useStaticSize={true}
366
+ type="simple"
520
367
  ref={this.listElement}>
521
368
  </ReactList>
522
369
  }
@@ -532,7 +379,8 @@ FilterResourcesByFolders.propTypes = {
532
379
  history: PropTypes.object,
533
380
  resourceWorkspaceContext: PropTypes.object,
534
381
  dialogContext: PropTypes.any,
382
+ dragContext: PropTypes.any,
535
383
  t: PropTypes.func, // The translation function
536
384
  };
537
385
 
538
- export default withRouter(withDialog(withContextualMenu(withResourceWorkspace(withAppContext(withTranslation('common')(FilterResourcesByFolders))))));
386
+ export default withRouter(withDialog(withContextualMenu(withResourceWorkspace(withAppContext(withDrag(withTranslation('common')(FilterResourcesByFolders)))))));
@@ -1,5 +1,5 @@
1
- import MockPort from "../../../test/mock/MockPort";
2
1
  import {ResourceWorkspaceFilterTypes} from "../../../contexts/ResourceWorkspaceContext";
2
+ import MockPort from "../../../test/mock/MockPort";
3
3
 
4
4
  /**
5
5
  * Returns the default app context for the unit test
@@ -20,10 +20,6 @@ export function defaultAppContext(appContext) {
20
20
  */
21
21
  export function defaultProps() {
22
22
  return {
23
- context: {
24
- port: new MockPort(),
25
- folders: foldersMock
26
- },
27
23
  resourceWorkspaceContext: {
28
24
  filter: {
29
25
  type: ResourceWorkspaceFilterTypes.FOLDER,
@@ -32,6 +28,15 @@ export function defaultProps() {
32
28
  }
33
29
  }
34
30
  },
31
+ dragContext: {
32
+ dragging: true,
33
+ draggedItems: {
34
+ folders: [foldersMock[3]],
35
+ resources: []
36
+ },
37
+ onDragStart: jest.fn(),
38
+ onDragEnd: jest.fn(),
39
+ },
35
40
  history: {
36
41
  push: jest.fn()
37
42
  },
@@ -28,8 +28,9 @@ describe("See Folders", () => {
28
28
  let page; // The page to test against
29
29
  const context = defaultAppContext(); // The applicative context
30
30
  const props = defaultProps(); // The props to pass
31
-
32
- const mockContextRequest = implementation => jest.spyOn(props.context.port, 'request').mockImplementation(implementation);
31
+ const requestMockImpl = jest.fn((message, data) => data);
32
+ const mockContextRequest = (context, implementation) => jest.spyOn(context.port, 'request').mockImplementation(implementation);
33
+ mockContextRequest(context, requestMockImpl);
33
34
 
34
35
  describe('As LU I see the folders', () => {
35
36
  /**
@@ -69,27 +70,23 @@ describe("See Folders", () => {
69
70
  });
70
71
 
71
72
  it('As LU I should be able to drag and drop a folder on the root folder', async() => {
72
- const requestMockImpl = jest.fn();
73
- mockContextRequest(requestMockImpl);
74
73
  await page.filterResourcesByFoldersItem.dragStartOnFolder(1);
75
74
  await page.filterResourcesByFoldersItem.dragEndOnFolder(1);
76
75
  await page.filterResourcesByFolders.onDragOver;
77
76
  await page.filterResourcesByFolders.onDragLeave;
78
77
  await page.filterResourcesByFolders.onDragOver;
79
78
  await page.filterResourcesByFolders.onDrop;
80
- const data = {folders: [], resources: [], folderParentId: null};
81
- expect(props.context.port.request).toHaveBeenCalledWith("passbolt.folders.open-move-confirmation-dialog", data);
82
- });
79
+ expect(props.dragContext.onDragStart).toHaveBeenCalled();
80
+ expect(context.port.request).toHaveBeenCalledWith("passbolt.folders.open-move-confirmation-dialog", {folders: ["3ed65efd-7c41-5906-9c02-71e2d95951db"], resources: [], folderParentId: null});
81
+ expect(props.dragContext.onDragEnd).toHaveBeenCalled(); });
83
82
 
84
83
  it('As LU I should be able to drag and drop a folder on another folder', async() => {
85
- const requestMockImpl = jest.fn();
86
- mockContextRequest(requestMockImpl);
87
84
  await page.filterResourcesByFoldersItem.toggleDisplayChildFolders(2);
88
85
  await page.filterResourcesByFoldersItem.dragStartOnFolder(3);
89
86
  await page.filterResourcesByFoldersItem.dragEndOnFolder(3);
90
87
  await page.filterResourcesByFoldersItem.onDropFolder(1);
91
- const data = {folders: [], resources: [], folderParentId: '9e03fd73-04c0-5514-95fa-1a6cf2c7c093'};
92
- expect(props.context.port.request).toHaveBeenCalledWith("passbolt.folders.open-move-confirmation-dialog", data);
88
+ expect(props.dragContext.onDragStart).toHaveBeenCalled();
89
+ expect(context.port.request).toHaveBeenCalledWith("passbolt.folders.open-move-confirmation-dialog", {folders: ["3ed65efd-7c41-5906-9c02-71e2d95951db"], resources: [], folderParentId: null});
93
90
  });
94
91
 
95
92
  it('As LU I should be able to open and close folder to see or not the child folders', async() => {
@@ -104,7 +101,7 @@ describe("See Folders", () => {
104
101
  describe('As LU I should see the Folder section empty', () => {
105
102
  const context = defaultAppContext(); // The applicative context
106
103
  const props = defaultProps();
107
- props.context.folders = [];
104
+ context.folders = [];
108
105
  /**
109
106
  * Given an organization with 0 Folders
110
107
  * Then I should see the Folder section empty