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.
- package/build/css/help.min.css +2 -2
- package/build/css/public.min.css +2 -2
- package/build/css/themes/default/api_authentication.min.css +3 -3
- package/build/css/themes/default/api_cloud.min.css +3 -3
- package/build/css/themes/default/api_main.min.css +4 -4
- package/build/css/themes/default/api_reports.min.css +4 -4
- package/build/css/themes/default/api_webinstaller.min.css +3 -3
- package/build/css/themes/default/ext_app.min.css +4 -4
- package/build/css/themes/default/ext_authentication.min.css +3 -3
- package/build/css/themes/default/ext_external.min.css +2 -2
- package/build/css/themes/default/ext_in_form_cta.min.css +3 -3
- package/build/css/themes/default/ext_in_form_menu.min.css +3 -3
- package/build/css/themes/default/ext_quickaccess.min.css +3 -3
- package/build/css/themes/midgar/api_authentication.min.css +9 -0
- package/build/css/themes/midgar/api_main.min.css +4 -4
- package/build/css/themes/midgar/api_reports.min.css +4 -4
- package/build/css/themes/midgar/ext_app.min.css +4 -4
- package/build/css/themes/midgar/ext_authentication.min.css +3 -3
- package/build/css/themes/midgar/ext_in_form_cta.min.css +3 -3
- package/build/css/themes/midgar/ext_in_form_menu.min.css +3 -3
- package/build/css/themes/midgar/ext_quickaccess.min.css +3 -3
- package/build/js/dist/api-app.js +1 -1
- package/build/js/dist/api-recover.js +1 -1
- package/build/js/dist/api-setup.js +1 -1
- package/build/js/dist/api-triage.js +1 -1
- package/build/js/dist/api-vendors.js +1 -1
- package/build/js/dist/api-vendors.js.LICENSE.txt +40 -4
- package/package.json +7 -6
- package/src/img/third_party/ChromeWebStore_black.svg +1 -0
- package/src/img/third_party/ChromeWebStore_white.svg +1 -0
- package/src/img/third_party/edge-addon-black.svg +1 -0
- package/src/img/third_party/edge-addon-white.svg +1 -0
- package/src/locales/de-DE/common.json +11 -11
- package/src/locales/en-UK/common.json +11 -12
- package/src/locales/fr/common.json +750 -0
- package/src/locales/fr-FR/common.json +11 -11
- package/src/locales/sv-SE/common.json +11 -11
- package/src/react-extension/ExtApp.js +9 -6
- package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.js +1 -1
- package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.stories.js +0 -1
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.js +1 -1
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.js +1 -1
- package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.stories.js +5 -8
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.js +1 -1
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.data.js +4 -1
- package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.js +4 -4
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.js +1 -1
- package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.js +1 -1
- package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.test.js +2 -3
- package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.test.stories.js +5 -9
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.js +2 -2
- package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.stories.js +0 -3
- package/src/react-extension/components/Authentication/AskForAuthenticationHelp/AskForAuthenticationHelp.js +1 -1
- package/src/react-extension/components/Authentication/AskForAuthenticationHelp/AskForAuthenticationHelp.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.js +2 -2
- package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.test.js +1 -1
- package/src/react-extension/components/Authentication/CheckMailBox/CheckMailbox.test.stories.js +12 -14
- package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.js +1 -1
- package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/EnterUsernameForm/EnterUsernameForm.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.data.js +14 -0
- package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.js +65 -0
- package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.page.js +38 -0
- package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.js +15 -6
- package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.js +27 -0
- package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.stories.js +12 -15
- package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.stories.js +8 -11
- package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.stories.js +12 -15
- package/src/react-extension/components/AuthenticationLogin/DisplayLoginError/DisplayLoginError.test.stories.js +12 -15
- package/src/react-extension/components/AuthenticationLogin/DisplayLoginInProgress/DisplayLoginProgress.test.stories.js +12 -15
- package/src/react-extension/components/AuthenticationLogin/Login/Login.test.stories.js +12 -15
- package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.test.stories.js +5 -11
- package/src/react-extension/components/AuthenticationRecover/RecoverAuthentication/RecoverAuthentication.js +1 -1
- package/src/react-extension/components/Common/Error/ShowErrorDetails/ShowErrorDetails.js +1 -1
- package/src/react-extension/components/Common/Icons/Icon.test.stories.js +3 -1
- package/src/react-extension/components/Common/Loading/LoadingSpinner/LoadingSpinner.js +2 -1
- package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.js +1 -1
- package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.test.js +1 -1
- package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.test.stories.js +34 -0
- package/src/react-extension/components/Resource/CreateResource/CreateResource.test.stories.js +14 -4
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayDragResource.js +68 -0
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.js +9 -42
- package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.test.page.js +4 -1
- package/src/react-extension/components/Resource/ExportResources/ExportResources.test.stories.js +5 -11
- package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.js +6 -10
- package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.test.stories.js +5 -11
- package/src/react-extension/components/Resource/FilterResourcesByBreadcrumb/FilterResourcesByBreadcrumb.test.stories.js +0 -1
- package/src/react-extension/components/Resource/FilterResourcesByFolders/DisplayDragFolderItem.js +109 -0
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.js +40 -192
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.data.js +10 -5
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.js +9 -12
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.page.js +5 -1
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.stories.js +0 -1
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.js +83 -58
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.data.js +52 -59
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.js +25 -20
- package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.page.js +11 -5
- package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.test.stories.js +0 -1
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.data.js +47 -0
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.js +34 -3
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.page.js +46 -9
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.stories.js +0 -1
- package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTagsList.js +124 -4
- package/src/react-extension/components/Resource/FilterResourcesByText/FilterResourcesByText.test.stories.js +0 -2
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.js +6 -10
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.test.stories.js +5 -11
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.js +3 -3
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.js +3 -3
- package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.stories.js +5 -11
- package/src/react-extension/components/ResourceComment/AddResourceComment/AddResourceComment.test.stories.js +8 -14
- package/src/react-extension/components/ResourceComment/ConfirmResourceCommentDeletion/ConfirmResourceCommentDeletion.test.stories.js +5 -11
- package/src/react-extension/components/ResourceComment/DisplayResourceCommentList/DisplayResourceCommentList.test.stories.js +8 -14
- package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.test.stories.js +8 -15
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsActivity.test.stories.js +0 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsDescription.test.stories.js +0 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.test.js +1 -1
- package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.test.stories.js +0 -1
- package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.stories.js +0 -3
- package/src/react-extension/components/ResourceFolder/DefineResourceFolderMoveStrategy/DefineResourceFolderMoveStrategy.test.stories.js +0 -6
- package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.test.stories.js +0 -5
- package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.stories.js +0 -7
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsActivity.test.stories.js +0 -2
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.test.stories.js +0 -2
- package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsPermissions.test.stories.js +0 -2
- package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePassphraseGenerator.test.stories.js +0 -1
- package/src/react-extension/components/ResourceTag/DeleteResourceTag/DeleteResourceTag.test.stories.js +0 -2
- package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.stories.js +0 -4
- package/src/react-extension/components/ResourceTag/EditResourceTags/EditResourceTags.js +1 -1
- package/src/react-extension/components/Share/ShareDialog.test.stories.js +5 -9
- package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.test.stories.js +5 -9
- package/src/react-extension/components/User/CreateUser/CreateUser.test.stories.js +3 -1
- package/src/react-extension/components/User/DeleteUser/DeleteUser.test.stories.js +5 -8
- package/src/react-extension/components/User/DeleteUser/DeleteUserWithConflicts.test.stories.js +5 -8
- package/src/react-extension/components/User/EditUser/EditUser.test.stories.js +3 -1
- package/src/react-extension/components/User/FilterUsersByBreadcrumb/FilterUsersByBreadcrumb.test.stories.js +5 -8
- package/src/react-extension/components/User/FilterUsersByShortcut/FilterUsersByShortcut.test.stories.js +0 -1
- package/src/react-extension/components/User/FilterUsersByText/FilterUsersByText.test.stories.js +0 -2
- package/src/react-extension/components/UserDetails/DisplayUserDetailsGroups/DisplayUserDetailsGroups.test.stories.js +8 -11
- package/src/react-extension/components/UserDetails/DisplayUserDetailsInformation/DisplayUserDetailsInformation.test.stories.js +8 -11
- package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.stories.js +8 -12
- package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.stories.js +5 -8
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroup.test.stories.js +5 -8
- package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroupWithConflicts.test.stories.js +5 -8
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsInformation/DisplayUserGroupDetailsInformation.test.stories.js +8 -11
- package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembers.test.stories.js +8 -11
- package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.stories.js +5 -8
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.js +55 -2
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.test.data.js +6 -0
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js +54 -6
- package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.data.js +6 -0
- package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.js +1 -1
- package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.test.stories.js +5 -8
- package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.js +21 -6
- package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.test.stories.js +5 -8
- package/src/react-extension/components/UserSetting/DisplayUserProfile/DisplayUserProfile.test.stories.js +5 -8
- package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspaceBreadcrumb/DisplayUserSettingsWorkspaceBreadcrumb.test.stories.js +5 -8
- package/src/react-extension/components/UserSetting/DisplayUserTheme/DisplayUserTheme.test.stories.js +5 -8
- package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.test.stories.js +5 -8
- package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.test.stories.js +7 -10
- package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.js +2 -2
- package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.test.stories.js +5 -8
- package/src/react-extension/contexts/ApiAppContext.js +1 -1
- package/src/react-extension/contexts/ApiRecoverContext.js +1 -1
- package/src/react-extension/contexts/ApiSetupContext.js +1 -1
- package/src/react-extension/contexts/DragContext.js +122 -0
- package/src/react-extension/contexts/DragContext.test.js +53 -0
- package/src/react-extension/test/mock/components/Internationalisation/MockTranslationProvider.js +42 -7
- package/src/react-quickaccess/components/AnimatedSwitch/AnimatedSwitch.js +3 -3
- package/src/react-quickaccess/components/ExtensionSetup/SetupExtensionInProgress/SetupExtensionInProgressPage.test.stories.js +3 -4
- package/src/react-quickaccess/components/FilterResourcesByFavoritePage/FilterResourcesByFavoritePage.test.stories.js +6 -6
- package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.test.stories.js +7 -3
- package/src/react-quickaccess/components/FilterResourcesByItemsIOwnPage/FilterResourcesByItemsIOwnPage.test.stories.js +6 -6
- package/src/react-quickaccess/components/FilterResourcesByRecentlyModifiedPage/FilterResourcesByRecentlyModifiedPage.test.stories.js +6 -6
- package/src/react-quickaccess/components/FilterResourcesBySharedWithMePage/FilterResourcesBySharedWithMePage.test.stories.js +6 -6
- package/src/react-quickaccess/components/FilterResourcesByTagPage/FilterResourcesByTagPage.test.stories.js +7 -3
- package/src/react-quickaccess/components/Header/Header.test.stories.js +3 -6
- package/src/react-quickaccess/components/HomePage/HomePage.test.stories.js +13 -9
- package/src/react-quickaccess/components/LoginPage/LoginPage.js +41 -5
- package/src/react-quickaccess/components/LoginPage/LoginPage.test.stories.js +3 -5
- package/src/react-quickaccess/components/MoreFiltersPage/MoreFiltersPage.test.stories.js +3 -5
- package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.test.stories.js +5 -5
- package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.stories.js +5 -5
- package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.stories.js +5 -5
- package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.test.stories.js +4 -2
- package/src/react-quickaccess/components/Search/Search.test.stories.js +3 -5
- package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.stories.js +6 -2
- package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.test.stories.js +9 -2
- package/src/react-web-integration/lib/InForm/InFormCallToActionField.js +3 -3
- package/src/react-web-integration/lib/InForm/InFormManager.js +12 -6
- package/src/react-web-integration/lib/InForm/InformMenuField.js +1 -1
- package/src/shared/lib/Browser/detectBrowserName.js +2 -1
- package/src/img/third_party/ChromeWebStore_black.png +0 -0
- 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
|
+
};
|
package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.js
CHANGED
|
@@ -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
|
-
<
|
|
43
|
-
<
|
|
44
|
-
<
|
|
45
|
-
|
|
46
|
-
<
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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('.
|
|
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";
|
package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTagsList.js
CHANGED
|
@@ -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, //
|
|
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
|
-
<
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
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
|
-
<
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
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("
|
|
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>
|
|
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>
|
|
323
|
+
<Trans>Error details</Trans>
|
|
324
324
|
</label>
|
|
325
325
|
<textarea
|
|
326
326
|
id="js_field_debug"
|
package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.js
CHANGED
|
@@ -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
|
|
41
|
-
expect(page.result(2)).toBe("5
|
|
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----------------------------\
|
|
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
|
-
<
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
<
|
|
28
|
-
<
|
|
29
|
-
<
|
|
30
|
-
<div className="
|
|
31
|
-
<
|
|
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
|
-
</
|
|
36
|
-
</
|
|
37
|
-
</
|
|
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
|
-
<
|
|
28
|
-
<
|
|
29
|
-
<
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|