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
@@ -40,6 +40,12 @@ export function defaultProps() {
40
40
  return {
41
41
  history: {
42
42
  push: jest.fn()
43
+ },
44
+ dragContext: {
45
+ dragging: true,
46
+ draggedItems: {
47
+ resources: [resource]
48
+ }
43
49
  }
44
50
  };
45
51
  }
@@ -74,3 +80,44 @@ export const tagsMock = [
74
80
  is_shared: false
75
81
  }
76
82
  ];
83
+
84
+ export const resource = {
85
+ "id": "8e3874ae-4b40-590b-968a-418f704b9d9a",
86
+ "name": "apache",
87
+ "username": "www-data",
88
+ "uri": "http:\/\/www.apache.org\/",
89
+ "description": "Apache is the world\u0027s most used web server software.",
90
+ "deleted": false,
91
+ "created": "2020-08-25T08:35:19+00:00",
92
+ "modified": "2020-08-26T08:35:19+00:00",
93
+ "created_by": "f848277c-5398-58f8-a82a-72397af2d450",
94
+ "modified_by": "f848277c-5398-58f8-a82a-72397af2d450",
95
+ "favorite": {
96
+ "id": "56216dba-b6da-592b-87cb-fb5cbbd0a424",
97
+ "user_id": "f848277c-5398-58f8-a82a-72397af2d450",
98
+ "foreign_key": "8e3874ae-4b40-590b-968a-418f704b9d9a",
99
+ "foreign_model": "Resource",
100
+ "created": "2020-08-27T08:35:21+00:00",
101
+ "modified": "2020-08-27T08:35:21+00:00"
102
+ },
103
+ "permission": {
104
+ "id": "8dfd59a7-852d-5c57-bd45-75c28bbb3f6c",
105
+ "aco": "Resource",
106
+ "aco_foreign_key": "8e3874ae-4b40-590b-968a-418f704b9d9a",
107
+ "aro": "User",
108
+ "aro_foreign_key": "f848277c-5398-58f8-a82a-72397af2d450",
109
+ "type": 15,
110
+ "created": "2020-08-27T08:35:19+00:00",
111
+ "modified": "2020-08-27T08:35:19+00:00"
112
+ },
113
+ "tags": [
114
+ {
115
+ "id": "1",
116
+ "slug": "test",
117
+ "is_shared": false
118
+ },
119
+ ],
120
+ "folder_parent_id": null,
121
+ "personal": false,
122
+ "resource_type_id": "669f8c64-242a-59fb-92fc-81f660975fd3"
123
+ };
@@ -18,12 +18,13 @@
18
18
  import {
19
19
  defaultAppContext,
20
20
  defaultProps,
21
- defaultResourceWorkspaceContext,
21
+ defaultResourceWorkspaceContext, resource,
22
22
  tagsMock
23
23
  } from "./FilterResourcesByTags.test.data";
24
24
  import FilterResourcesByTags from "./FilterResourcesByTags.test.page";
25
25
  import MockPort from "../../../test/mock/MockPort";
26
26
  import {ResourceWorkspaceFilterTypes} from "../../../contexts/ResourceWorkspaceContext";
27
+ import PassboltApiFetchError from "../../../../shared/lib/Error/PassboltApiFetchError";
27
28
 
28
29
  beforeEach(() => {
29
30
  jest.resetModules();
@@ -47,6 +48,9 @@ describe("See tags", () => {
47
48
  };
48
49
  const context = defaultAppContext(appContext); // The applicative context
49
50
  const resourceWorkspaceContext = defaultResourceWorkspaceContext();
51
+ const requestMockImpl = jest.fn((message, data) => data);
52
+ const mockContextRequest = (context, implementation) => jest.spyOn(context.port, 'request').mockImplementation(implementation);
53
+ mockContextRequest(context, requestMockImpl);
50
54
  /**
51
55
  * Given an organization with 5 tags
52
56
  * Then I should see the 5 tags on the left sidebar
@@ -58,12 +62,12 @@ describe("See tags", () => {
58
62
  page = new FilterResourcesByTags(context, props, resourceWorkspaceContext);
59
63
  });
60
64
 
61
- it('I should see the 5 tags made on the resource', () => {
65
+ it('As LU I should see the 5 tags made on the resource', () => {
62
66
  expect(page.sidebarTagFilterSection.exists()).toBeTruthy();
63
67
  expect(page.sidebarTagFilterSection.count()).toBe(5);
64
68
  });
65
69
 
66
- it('I should be able to identify each tag name', () => {
70
+ it('As LU I should be able to identify each tag name', () => {
67
71
  expect(page.sidebarTagFilterSection.name(1)).toBe('#git');
68
72
  expect(page.sidebarTagFilterSection.name(2)).toBe('gpg');
69
73
  expect(page.sidebarTagFilterSection.name(3)).toBe('slug');
@@ -71,6 +75,33 @@ describe("See tags", () => {
71
75
  expect(page.sidebarTagFilterSection.name(5)).toBe('there’s always something to look at if you open your eyes!');
72
76
  });
73
77
 
78
+ it('As LU I should be able to drop a resource on tag', async() => {
79
+ await page.sidebarTagFilterSection.onDropTag(3);
80
+ expect(context.port.request).toHaveBeenCalledWith("passbolt.tags.add-resources-tag", {"resources": [resource.id],"tag": tagsMock[1]});
81
+ });
82
+
83
+ it('As LU I should see tags disabled if a resource is dragging', async() => {
84
+ await page.sidebarTagFilterSection.onDropTag(3);
85
+ expect(page.sidebarTagFilterSection.tagClassname(1)).toBe('row disabled');
86
+ expect(page.sidebarTagFilterSection.tagClassname(2)).toBe('row');
87
+ expect(page.sidebarTagFilterSection.tagClassname(3)).toBe('row');
88
+ expect(page.sidebarTagFilterSection.tagClassname(4)).toBe('row selected');
89
+ expect(page.sidebarTagFilterSection.tagClassname(5)).toBe('row');
90
+ });
91
+
92
+ it('As LU I should see an error dialog if the drop operation fails for an unexpected reason', async() => {
93
+ // Mock the request function to make it return an error.
94
+ jest.spyOn(context.port, 'request').mockImplementationOnce(() => {
95
+ throw new PassboltApiFetchError("Jest simulate API error.");
96
+ });
97
+
98
+ await page.sidebarTagFilterSection.onDropTag(3);
99
+
100
+ // Throw general error message
101
+ expect(page.sidebarTagFilterSection.errorDialogExist).toBeTruthy();
102
+ expect(page.sidebarTagFilterSection.errorDialogExist).toBeTruthy();
103
+ });
104
+
74
105
  it('As LU I filter the tags in the resources workspace primary sidebar by personal tag', async() => {
75
106
  await page.title.click(page.title.filterButton);
76
107
  expect(page.sidebarTagFilterSectionsContextualMenu.personalTagMenu.textContent).toBe("My tags");
@@ -25,6 +25,9 @@ import FilterResourcesByTagsListContextualMenuPageObject from "./FilterResources
25
25
  import {ResourceWorkspaceContext} from "../../../contexts/ResourceWorkspaceContext";
26
26
  import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
27
27
  import FilterResourcesByTags from "./FilterResourcesByTags";
28
+ import {DragContext} from "../../../contexts/DragContext";
29
+ import DialogContextProvider from "../../../contexts/DialogContext";
30
+ import ManageDialogs from "../../../components/Common/Dialog/ManageDialogs/ManageDialogs";
28
31
 
29
32
  /**
30
33
  * The FilterResourcesByTags component represented as a page
@@ -39,14 +42,19 @@ export default class FilterResourcesByTagsPage {
39
42
  this._page = render(
40
43
  <MockTranslationProvider>
41
44
  <AppContext.Provider value={appContext}>
42
- <Router>
43
- <ResourceWorkspaceContext.Provider value={resourceWorkspaceContext}>
44
- <ContextualMenuContextProvider>
45
- <ManageContextualMenu/>
46
- <FilterResourcesByTags.WrappedComponent {...props}/>
47
- </ContextualMenuContextProvider>
48
- </ResourceWorkspaceContext.Provider>
49
- </Router>
45
+ <DialogContextProvider>
46
+ <Router>
47
+ <ManageDialogs/>
48
+ <ResourceWorkspaceContext.Provider value={resourceWorkspaceContext}>
49
+ <ContextualMenuContextProvider>
50
+ <ManageContextualMenu/>
51
+ <DragContext.Provider value={props.dragContext}>
52
+ <FilterResourcesByTags.WrappedComponent {...props}/>
53
+ </DragContext.Provider>
54
+ </ContextualMenuContextProvider>
55
+ </ResourceWorkspaceContext.Provider>
56
+ </Router>
57
+ </DialogContextProvider>
50
58
  </AppContext.Provider>
51
59
  </MockTranslationProvider>
52
60
  );
@@ -207,12 +215,35 @@ class SidebarTagFilterSectionPageObject {
207
215
  return this.list.querySelectorAll('.tag-item')[index - 1].querySelector('.row .main-cell-wrapper .main-cell a');
208
216
  }
209
217
 
218
+ /**
219
+ * return the tag classname for the 'index' one
220
+ * @param index
221
+ */
222
+ tagClassname(index) {
223
+ return this.list.querySelectorAll('.tag-item')[index - 1].querySelector('.row').className.trim();
224
+ }
225
+
210
226
  /**
211
227
  * Returns the displayed tag name for the 'index' one
212
228
  * @param index The display rank of name's tag
213
229
  */
214
230
  name(index) {
215
- return this.list.querySelectorAll('.tag-item')[index - 1].querySelector('.ellipsis').textContent;
231
+ return this.list.querySelectorAll('.tag-item')[index - 1].querySelector('.tag-name').textContent;
232
+ }
233
+
234
+ get errorDialogExist() {
235
+ return this._container.querySelector('.error-dialog') !== null;
236
+ }
237
+
238
+ get errorDialogMessageExist() {
239
+ return this._container.querySelector('.error-dialog .dialog .dialog-content .form-content') !== null;
240
+ }
241
+
242
+ /**
243
+ * Drop on the tag
244
+ */
245
+ onDropTag(index) {
246
+ return this.drop(this.tag(index));
216
247
  }
217
248
 
218
249
  /** Click on the component */
@@ -227,4 +258,10 @@ class SidebarTagFilterSectionPageObject {
227
258
  fireEvent.contextMenu(component);
228
259
  await waitFor(() => {});
229
260
  }
261
+
262
+ /** Drop on the component */
263
+ async drop(component) {
264
+ fireEvent.drop(component);
265
+ await waitFor(() => {});
266
+ }
230
267
  }
@@ -1,6 +1,5 @@
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
4
  import PropTypes from "prop-types";
6
5
  import FilterResourcesByTags from "./FilterResourcesByTags";
@@ -19,6 +19,10 @@ import {withContextualMenu} from "../../../contexts/ContextualMenuContext";
19
19
  import {withRouter} from "react-router-dom";
20
20
  import Icon from "../../Common/Icons/Icon";
21
21
  import {Trans, withTranslation} from "react-i18next";
22
+ import {withDrag} from "../../../contexts/DragContext";
23
+ import {withDialog} from "../../../contexts/DialogContext";
24
+ import {withAppContext} from "../../../contexts/AppContext";
25
+ import NotifyError from "../../Common/Error/NotifyError/NotifyError";
22
26
 
23
27
  class FilterResourcesByTagsList extends React.Component {
24
28
  /**
@@ -38,7 +42,8 @@ class FilterResourcesByTagsList extends React.Component {
38
42
  getDefaultState() {
39
43
  return {
40
44
  open: true,
41
- selectedTag: null, // tag selected for the contextual menu
45
+ selectedTag: null, // Tag selected for the contextual menu
46
+ draggingOverTagId: null // The dragging over tag id
42
47
  };
43
48
  }
44
49
 
@@ -48,6 +53,9 @@ class FilterResourcesByTagsList extends React.Component {
48
53
  bindCallbacks() {
49
54
  this.handleContextualMenuEvent = this.handleContextualMenuEvent.bind(this);
50
55
  this.handleMoreClickEvent = this.handleMoreClickEvent.bind(this);
56
+ this.handleDropEvent = this.handleDropEvent.bind(this);
57
+ this.handleDragOverEvent = this.handleDragOverEvent.bind(this);
58
+ this.handleDragLeaveEvent = this.handleDragLeaveEvent.bind(this);
51
59
  }
52
60
 
53
61
  /**
@@ -123,6 +131,56 @@ class FilterResourcesByTagsList extends React.Component {
123
131
  }
124
132
  }
125
133
 
134
+ /**
135
+ * Handle when the user drop content on this component.
136
+ * @param {ReactEvent} event The event
137
+ * @param {Object} tag The tag
138
+ */
139
+ async handleDropEvent(event, tag) {
140
+ this.setState({draggingOverTagId: null});
141
+ try {
142
+ const resources = this.props.dragContext.draggedItems.resources.map(resource => resource.id);
143
+ this.props.context.port.request("passbolt.tags.add-resources-tag", {resources, tag});
144
+ } catch (error) {
145
+ this.onUnexpectedError(error);
146
+ }
147
+ }
148
+
149
+ /**
150
+ * Whenever an unexpected error occured
151
+ * @param {object} error The error
152
+ * @returns {Promise<void>}
153
+ */
154
+ onUnexpectedError(error) {
155
+ const errorDialogProps = {
156
+ title: "There was an unexpected error...",
157
+ message: error.message
158
+ };
159
+ this.props.context.setContext({errorDialogProps});
160
+ this.props.dialogContext.open(NotifyError);
161
+ }
162
+
163
+ /**
164
+ * Handle when the user is dragging over the tag.
165
+ * @param {ReactEvent} event The event
166
+ * @param {string} tagId The tag ID
167
+ */
168
+ handleDragOverEvent(event, tagId) {
169
+ /*
170
+ * If you want to allow a drop, you must prevent the default handling by cancelling both the dragenter and dragover events.
171
+ * see: https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations#droptargets
172
+ */
173
+ event.preventDefault();
174
+ this.setState({draggingOverTagId: tagId});
175
+ }
176
+
177
+ /**
178
+ * Handle when the user is dragging leave the tag.
179
+ */
180
+ handleDragLeaveEvent() {
181
+ this.setState({draggingOverTagId: null});
182
+ }
183
+
126
184
  // Zero conditional statements
127
185
  /**
128
186
  * get the filter according to the type of the filter
@@ -165,6 +223,62 @@ class FilterResourcesByTagsList extends React.Component {
165
223
  return filter.type === ResourceWorkspaceFilterTypes.TAG && filter.payload.tag.id === tagId;
166
224
  }
167
225
 
226
+ /**
227
+ * Check if the user is currently dragging content.
228
+ * @returns {boolean}
229
+ */
230
+ isDragging() {
231
+ return this.props.dragContext.dragging;
232
+ }
233
+
234
+ /**
235
+ * Check if the component is disabled.
236
+ * @param {Object} tag
237
+ * @returns {boolean}
238
+ */
239
+ isDisabled(tag) {
240
+ /*
241
+ * If the user is dragging content, disable the component if:
242
+ * - The user is not allowed to drop content in the shared tag.
243
+ * - The user is not allowed to drop dragged items except resources;
244
+ */
245
+ if (this.isDragging()) {
246
+ if (tag.is_shared) {
247
+ return true;
248
+ }
249
+ if (!this.canDropInto()) {
250
+ return true;
251
+ }
252
+ }
253
+
254
+ return false;
255
+ }
256
+
257
+ /**
258
+ * Show the drop focus for a tag
259
+ * @param tag
260
+ * @returns {boolean}
261
+ */
262
+ showDropFocus(tag) {
263
+ return tag.id === this.state.draggingOverTagId && !this.isDisabled(tag)
264
+ }
265
+
266
+ /**
267
+ * Check if the user can drag all the items they are currently dragging.
268
+ * @returns {boolean}
269
+ */
270
+ canDropInto() {
271
+ return this.draggedItems.resources.length > 0;
272
+ }
273
+
274
+ /**
275
+ * return dragged items
276
+ * @returns {*}
277
+ */
278
+ get draggedItems() {
279
+ return this.props.dragContext.draggedItems;
280
+ }
281
+
168
282
  /**
169
283
  * Get the translate function
170
284
  * @returns {function(...[*]=)}
@@ -192,11 +306,14 @@ class FilterResourcesByTagsList extends React.Component {
192
306
  <ul className="tree ready">
193
307
  {this.filteredTags.map(tag =>
194
308
  <li className="open node root tag-item" key={tag.id}>
195
- <div className={`row ${this.isSelected(tag.id) ? "selected" : ""}`}>
309
+ <div className={`row ${this.isSelected(tag.id) ? "selected" : ""} ${this.isDisabled(tag) ? "disabled" : ""} ${this.showDropFocus(tag) ? "drop-focus" : ""}`}
310
+ onDrop={ event => this.handleDropEvent(event, tag)}
311
+ onDragOver={ event => this.handleDragOverEvent(event, tag.id)}
312
+ onDragLeave={this.handleDragLeaveEvent}>
196
313
  <div className="main-cell-wrapper" onClick={() => this.handleOnClickTag(tag)}
197
314
  onContextMenu={event => this.handleContextualMenuEvent(event, tag)}>
198
315
  <div className="main-cell">
199
- <a title={tag.slug}><span className="ellipsis">{tag.slug}</span></a>
316
+ <a title={tag.slug}><span className="ellipsis tag-name">{tag.slug}</span></a>
200
317
  </div>
201
318
  </div>
202
319
  {!tag.is_shared &&
@@ -218,15 +335,18 @@ class FilterResourcesByTagsList extends React.Component {
218
335
  }
219
336
 
220
337
  FilterResourcesByTagsList.propTypes = {
338
+ context: PropTypes.any, // The app context
221
339
  contextualMenuContext: PropTypes.any, // The contextual menu context
222
340
  tags: PropTypes.array,
223
341
  filterType: PropTypes.string,
224
342
  resourceWorkspaceContext: PropTypes.object,
225
343
  history: PropTypes.any,
344
+ dialogContext: PropTypes.any, // The dialog context
345
+ dragContext: PropTypes.any, // The drag and drop context
226
346
  t: PropTypes.func, // The translation function
227
347
  };
228
348
 
229
- export default withRouter(withResourceWorkspace(withContextualMenu(withTranslation('common')(FilterResourcesByTagsList))));
349
+ export default withRouter(withAppContext(withDialog(withResourceWorkspace(withContextualMenu(withDrag(withTranslation('common')(FilterResourcesByTagsList)))))));
230
350
 
231
351
  export const filterByTagsOptions = {
232
352
  all: "all",
@@ -1,6 +1,5 @@
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 FilterResourcesByText from "./FilterResourcesByText";
5
4
 
6
5
 
@@ -16,5 +15,4 @@ const Template = args =>
16
15
  </MemoryRouter>;
17
16
 
18
17
 
19
-
20
18
  export const Initial = Template.bind({});
@@ -278,16 +278,12 @@ class ImportResourcesKeyUnlock extends Component {
278
278
  placeholder={this.translate('Passphrase')}
279
279
  ref={this.passwordInputRef}
280
280
  autoComplete="off"/>
281
- <ul className="actions inline">
282
- <li>
283
- <a
284
- onClick={this.handlePasswordViewToggled}
285
- className={`password-view button button-icon toggle ${this.state.showPassword ? "selected" : ""} ${this.hasAllInputDisabled() ? "disabled" : ""}`}>
286
- <Icon name='eye-open' big={true}/>
287
- <span className="visually-hidden">view</span>
288
- </a>
289
- </li>
290
- </ul>
281
+ <a
282
+ onClick={this.handlePasswordViewToggled}
283
+ className={`password-view button button-icon toggle ${this.state.showPassword ? "selected" : ""} ${this.hasAllInputDisabled() ? "disabled" : ""}`}>
284
+ <Icon name='eye-open' big={true}/>
285
+ <span className="visually-hidden">view</span>
286
+ </a>
291
287
  </div>
292
288
  </div>
293
289
 
@@ -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 ImportResourcesKeyUnlock from "./ImportResourcesKeyUnlock";
7
5
 
8
6
 
@@ -19,15 +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 => <ImportResourcesKeyUnlock {...args} {...routerProps}/>}></Route>
26
- </MemoryRouter>
27
- </AppContext.Provider>
28
- </MockTranslationProvider>;
29
-
20
+ <AppContext.Provider value={context}>
21
+ <MemoryRouter initialEntries={['/']}>
22
+ <Route component={routerProps => <ImportResourcesKeyUnlock {...args} {...routerProps}/>}></Route>
23
+ </MemoryRouter>
24
+ </AppContext.Provider>;
30
25
 
31
26
 
32
27
  export const Initial = Template.bind({});
33
-
@@ -238,7 +238,7 @@ class ImportResourcesResult extends Component {
238
238
  result += `----------------------------\n${this.translate("Resources errors")}\n----------------------------\n${JSON.stringify(this.resultErrorsResources, null, 4)}\n\n`;
239
239
  }
240
240
  if (this.resultHasErrorsFolders) {
241
- result += `----------------------------\n${this.translate("Folders errors")}\n----------------------------\n${JSON.stringify(this.resultErrorsFolders, null, 4)}`;
241
+ result += `----------------------------\n${this.translate("Folder errors")}\n----------------------------\n${JSON.stringify(this.resultErrorsFolders, null, 4)}`;
242
242
  }
243
243
 
244
244
  return result;
@@ -310,7 +310,7 @@ class ImportResourcesResult extends Component {
310
310
  <div className="accordion error-details">
311
311
  <div className="accordion-header">
312
312
  <a onClick={this.handleErrorDetailsToggle}>
313
- <Trans>Errors details</Trans>
313
+ <Trans>Error details</Trans>
314
314
  <Icon baseline={true} name={this.state.showErrorDetails ? "caret-up" : "caret-down"}/>
315
315
  </a>
316
316
  </div>
@@ -320,7 +320,7 @@ class ImportResourcesResult extends Component {
320
320
  <label
321
321
  htmlFor="js_field_debug"
322
322
  className="visuallyhidden">
323
- <Trans>Errors details</Trans>
323
+ <Trans>Error details</Trans>
324
324
  </label>
325
325
  <textarea
326
326
  id="js_field_debug"
@@ -37,8 +37,8 @@ describe("As LU I should see the password import result dialog", () => {
37
37
  expect(page.exists()).toBeTruthy();
38
38
  expect(page.title).toBe("Import success!");
39
39
 
40
- expect(page.result(1)).toBe("10 password has been imported successfully.");
41
- expect(page.result(2)).toBe("5 folder has been imported successfully.");
40
+ expect(page.result(1)).toBe("10 passwords have been imported successfully.");
41
+ expect(page.result(2)).toBe("5 folders have been imported successfully.");
42
42
 
43
43
  await page.acceptResult();
44
44
  expect(props.onClose).toBeCalled();
@@ -58,7 +58,7 @@ describe("As LU I should see the password import result dialog", () => {
58
58
 
59
59
  const errorDebugValue = "----------------------------\nResources errors\n----------------------------\n" +
60
60
  "[\n {\n \"name\": \"resource1\"\n },\n {\n \"name\": \"resource2\"\n }\n" +
61
- "]\n\n----------------------------\nFolders errors\n----------------------------\n[\n {\n" +
61
+ "]\n\n----------------------------\nFolder errors\n----------------------------\n[\n {\n" +
62
62
  " \"name\": \"folder1\"\n }\n]";
63
63
 
64
64
  expect(page.errorDebug).toBe(errorDebugValue);
@@ -1,9 +1,7 @@
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 ImportResourcesResult from "./ImportResourcesResult";
5
4
  import AppContext from "../../../contexts/AppContext";
6
- import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
7
5
 
8
6
 
9
7
  export default {
@@ -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 => <ImportResourcesResult {...args} {...routerProps}/>}></Route>
26
- </MemoryRouter>
27
- </AppContext.Provider>
28
- </MockTranslationProvider>;
29
-
20
+ <AppContext.Provider value={context}>
21
+ <MemoryRouter initialEntries={['/']}>
22
+ <Route component={routerProps => <ImportResourcesResult {...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,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 AddResourceComment from "./AddResourceComment";
7
5
 
8
6
 
@@ -24,19 +22,15 @@ const context = {
24
22
 
25
23
 
26
24
  const Template = args =>
27
- <MockTranslationProvider>
28
- <AppContext.Provider value={context}>
29
- <MemoryRouter initialEntries={['/']}>
30
- <div className="panel aside">
31
- <div className="comments">
32
- <Route component={routerProps => <AddResourceComment {...args} {...routerProps}/>}></Route>
33
- </div>
25
+ <AppContext.Provider value={context}>
26
+ <MemoryRouter initialEntries={['/']}>
27
+ <div className="panel aside">
28
+ <div className="comments">
29
+ <Route component={routerProps => <AddResourceComment {...args} {...routerProps}/>}></Route>
34
30
  </div>
35
- </MemoryRouter>
36
- </AppContext.Provider>
37
- </MockTranslationProvider>;
38
-
31
+ </div>
32
+ </MemoryRouter>
33
+ </AppContext.Provider>;
39
34
 
40
35
 
41
36
  export const Initial = Template.bind({});
42
-
@@ -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 ConfirmResourceCommentDeletion from "./ConfirmResourceCommentDeletion";
7
5
 
8
6
 
@@ -24,15 +22,11 @@ const context = {
24
22
 
25
23
 
26
24
  const Template = args =>
27
- <MockTranslationProvider>
28
- <AppContext.Provider value={context}>
29
- <MemoryRouter initialEntries={['/']}>
30
- <Route component={routerProps => <ConfirmResourceCommentDeletion {...args} {...routerProps}/>}></Route>
31
- </MemoryRouter>
32
- </AppContext.Provider>
33
- </MockTranslationProvider>;
34
-
25
+ <AppContext.Provider value={context}>
26
+ <MemoryRouter initialEntries={['/']}>
27
+ <Route component={routerProps => <ConfirmResourceCommentDeletion {...args} {...routerProps}/>}></Route>
28
+ </MemoryRouter>
29
+ </AppContext.Provider>;
35
30
 
36
31
 
37
32
  export const Initial = Template.bind({});
38
-