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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
/**
|
|
2
3
|
* Passbolt ~ Open source password manager for teams
|
|
3
4
|
* Copyright (c) 2020 Passbolt SA (https://www.passbolt.com)
|
|
@@ -18,6 +19,7 @@ import {BrowserRouter as Router} from 'react-router-dom';
|
|
|
18
19
|
import {FilterResourcesByFoldersItemPageObject} from "./FilterResourcesByFoldersItem.test.page";
|
|
19
20
|
import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
|
|
20
21
|
import FilterResourcesByFolders from "./FilterResourcesByFolders";
|
|
22
|
+
import {DragContext} from "../../../contexts/DragContext";
|
|
21
23
|
|
|
22
24
|
/**
|
|
23
25
|
* The FilterResourcesByFolders component represented as a page
|
|
@@ -33,7 +35,9 @@ export default class FilterResourcesByFoldersPage {
|
|
|
33
35
|
<MockTranslationProvider>
|
|
34
36
|
<AppContext.Provider value={appContext}>
|
|
35
37
|
<Router>
|
|
36
|
-
<
|
|
38
|
+
<DragContext.Provider value={props.dragContext}>
|
|
39
|
+
<FilterResourcesByFolders.WrappedComponent {...props}/>
|
|
40
|
+
</DragContext.Provider>
|
|
37
41
|
</Router>
|
|
38
42
|
</AppContext.Provider>
|
|
39
43
|
</MockTranslationProvider>
|
|
@@ -18,6 +18,9 @@ import {withContextualMenu} from "../../../contexts/ContextualMenuContext";
|
|
|
18
18
|
import FilterResourcesByFoldersItemContextualMenu from "./FilterResourcesByFoldersItemContextualMenu";
|
|
19
19
|
import {withAppContext} from "../../../contexts/AppContext";
|
|
20
20
|
import {ResourceWorkspaceFilterTypes, withResourceWorkspace} from "../../../contexts/ResourceWorkspaceContext";
|
|
21
|
+
import {withDrag} from "../../../contexts/DragContext";
|
|
22
|
+
import DisplayDragFolderItem from "./DisplayDragFolderItem";
|
|
23
|
+
import {withRouter} from "react-router-dom";
|
|
21
24
|
|
|
22
25
|
class FilterResourcesByFoldersItem extends React.Component {
|
|
23
26
|
/**
|
|
@@ -45,7 +48,7 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
45
48
|
|
|
46
49
|
|
|
47
50
|
bindCallbacks() {
|
|
48
|
-
this.
|
|
51
|
+
this.handleToggleOpenFolder = this.handleToggleOpenFolder.bind(this);
|
|
49
52
|
this.handleContextualMenuEvent = this.handleContextualMenuEvent.bind(this);
|
|
50
53
|
this.handleDragEndEvent = this.handleDragEndEvent.bind(this);
|
|
51
54
|
this.handleDragLeaveEvent = this.handleDragLeaveEvent.bind(this);
|
|
@@ -56,14 +59,24 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
56
59
|
this.handleSelectEvent = this.handleSelectEvent.bind(this);
|
|
57
60
|
}
|
|
58
61
|
|
|
62
|
+
componentDidMount() {
|
|
63
|
+
if (this.props.match.params.filterByFolderId) {
|
|
64
|
+
// Expand folder tree until the selected folder
|
|
65
|
+
this.openFolderParentTree(this.props.match.params.filterByFolderId);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
59
69
|
/**
|
|
60
70
|
* Handle when the user start dragging the folder.
|
|
61
71
|
* @param {ReactEvent} event The event
|
|
62
72
|
*/
|
|
63
73
|
handleDragStartEvent(event) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
74
|
+
event.persist();
|
|
75
|
+
const draggedItems = {
|
|
76
|
+
folders: [this.props.folder],
|
|
77
|
+
resources: []
|
|
78
|
+
};
|
|
79
|
+
this.props.dragContext.onDragStart(event, DisplayDragFolderItem, draggedItems);
|
|
67
80
|
}
|
|
68
81
|
|
|
69
82
|
/**
|
|
@@ -71,16 +84,29 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
71
84
|
* Fold/Unfold the folder.
|
|
72
85
|
* @param {ReactEvent} event The event
|
|
73
86
|
*/
|
|
74
|
-
|
|
87
|
+
handleToggleOpenFolder(event) {
|
|
75
88
|
/*
|
|
76
89
|
* Prevent the component to select the folder.
|
|
77
90
|
* @todo This default behavior should not be allowed as it will break other behavior, such as closing a contextual menu closing.
|
|
78
91
|
*/
|
|
79
92
|
event.stopPropagation();
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
93
|
+
const open = !this.state.open;
|
|
94
|
+
this.setState({open});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Open the tree until a given folder
|
|
99
|
+
* @param {object} selectedFolderId The folder id to scroll to
|
|
100
|
+
*/
|
|
101
|
+
openFolderParentTree(selectedFolderId) {
|
|
102
|
+
const selectedFolder = this.props.context.folders.find(folder => folder.id === selectedFolderId);
|
|
103
|
+
// If the selected folder has a parent. Open it if not yet open.
|
|
104
|
+
if (selectedFolder.folder_parent_id) {
|
|
105
|
+
if (selectedFolder.folder_parent_id === this.props.folder.id) {
|
|
106
|
+
this.setState({open: true});
|
|
107
|
+
} else {
|
|
108
|
+
this.openFolderParentTree(selectedFolder.folder_parent_id);
|
|
109
|
+
}
|
|
84
110
|
}
|
|
85
111
|
}
|
|
86
112
|
|
|
@@ -89,7 +115,7 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
89
115
|
* @return {boolean}
|
|
90
116
|
*/
|
|
91
117
|
isOpen() {
|
|
92
|
-
return this.
|
|
118
|
+
return this.state.open;
|
|
93
119
|
}
|
|
94
120
|
|
|
95
121
|
/**
|
|
@@ -123,8 +149,8 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
123
149
|
* Handle when the user stop dragging content.
|
|
124
150
|
* @param {ReactEvent} event The event
|
|
125
151
|
*/
|
|
126
|
-
handleDragEndEvent(
|
|
127
|
-
this.props.onDragEnd(
|
|
152
|
+
handleDragEndEvent() {
|
|
153
|
+
this.props.dragContext.onDragEnd();
|
|
128
154
|
}
|
|
129
155
|
|
|
130
156
|
/**
|
|
@@ -169,7 +195,7 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
169
195
|
if (!open) {
|
|
170
196
|
const now = Date.now();
|
|
171
197
|
if (now - this.state.draggingOverSince > period) {
|
|
172
|
-
this.
|
|
198
|
+
this.handleToggleOpenFolder(event);
|
|
173
199
|
}
|
|
174
200
|
}
|
|
175
201
|
}
|
|
@@ -178,11 +204,14 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
178
204
|
* Handle when the user drop content on this component.
|
|
179
205
|
* @param {ReactEvent} event The event
|
|
180
206
|
*/
|
|
181
|
-
handleDropEvent(
|
|
207
|
+
handleDropEvent() {
|
|
182
208
|
// The user cannot drop the dragged content on a dragged item.
|
|
183
|
-
const
|
|
209
|
+
const folders = this.props.dragContext.draggedItems.folders.map(folder => folder.id);
|
|
210
|
+
const resources = this.props.dragContext.draggedItems.resources.map(resource => resource.id);
|
|
211
|
+
const folderParentId = this.props.folder.id;
|
|
212
|
+
const isDroppingOnDraggedItem = this.draggedItems.folders.some(item => item.id === folderParentId);
|
|
184
213
|
if (!isDroppingOnDraggedItem) {
|
|
185
|
-
this.props.
|
|
214
|
+
this.props.context.port.request("passbolt.folders.open-move-confirmation-dialog", {folders, resources, folderParentId});
|
|
186
215
|
}
|
|
187
216
|
|
|
188
217
|
// The dragLeave event is not fired when a drop is happening. Cancel the state manually.
|
|
@@ -191,11 +220,10 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
191
220
|
}
|
|
192
221
|
|
|
193
222
|
/**
|
|
194
|
-
* Handle
|
|
195
|
-
* @param {ReactEvent} event The event
|
|
223
|
+
* Handle the user selects a folder from the list.
|
|
196
224
|
*/
|
|
197
|
-
handleSelectEvent(
|
|
198
|
-
this.props.
|
|
225
|
+
handleSelectEvent() {
|
|
226
|
+
this.props.history.push(`/app/folders/view/${this.props.folder.id}`);
|
|
199
227
|
}
|
|
200
228
|
|
|
201
229
|
/**
|
|
@@ -296,8 +324,8 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
296
324
|
* @returns {int}
|
|
297
325
|
*/
|
|
298
326
|
getDraggedItemsLowestPermission() {
|
|
299
|
-
const draggedFoldersLowestPermission = this.getItemsListLowestPermission(this.
|
|
300
|
-
const draggedResourcesLowestPermission = this.getItemsListLowestPermission(this.
|
|
327
|
+
const draggedFoldersLowestPermission = this.getItemsListLowestPermission(this.draggedItems.folders);
|
|
328
|
+
const draggedResourcesLowestPermission = this.getItemsListLowestPermission(this.draggedItems.resources);
|
|
301
329
|
|
|
302
330
|
return draggedFoldersLowestPermission < draggedResourcesLowestPermission ? draggedFoldersLowestPermission : draggedResourcesLowestPermission;
|
|
303
331
|
}
|
|
@@ -307,7 +335,7 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
307
335
|
* @returns {boolean}
|
|
308
336
|
*/
|
|
309
337
|
canDropInto() {
|
|
310
|
-
if (!this.
|
|
338
|
+
if (!this.isDragging()) {
|
|
311
339
|
return false;
|
|
312
340
|
}
|
|
313
341
|
|
|
@@ -325,13 +353,13 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
325
353
|
}
|
|
326
354
|
|
|
327
355
|
// Cannot move a folder into one of its own children.
|
|
328
|
-
if (this.isChildOfAny(this.props.folder, this.
|
|
356
|
+
if (this.isChildOfAny(this.props.folder, this.draggedItems.folders)) {
|
|
329
357
|
return false;
|
|
330
358
|
}
|
|
331
359
|
|
|
332
360
|
// Cannot move a folder into itself.
|
|
333
|
-
for (const i in this.
|
|
334
|
-
if (this.props.folder.id === this.
|
|
361
|
+
for (const i in this.draggedItems.folders) {
|
|
362
|
+
if (this.props.folder.id === this.draggedItems.folders[i].id) {
|
|
335
363
|
return false;
|
|
336
364
|
}
|
|
337
365
|
}
|
|
@@ -344,12 +372,9 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
344
372
|
* @returns {boolean}
|
|
345
373
|
*/
|
|
346
374
|
isDragged() {
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
return true;
|
|
350
|
-
}
|
|
375
|
+
if (this.isDragging()) {
|
|
376
|
+
return this.draggedItems.folders.some(folder => folder.id === this.props.folder.id);
|
|
351
377
|
}
|
|
352
|
-
|
|
353
378
|
return false;
|
|
354
379
|
}
|
|
355
380
|
|
|
@@ -363,8 +388,8 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
363
388
|
* - The user is not allowed to drag any of dragged items;
|
|
364
389
|
* - The user is not allowed to drop content in the folder associated to this component.
|
|
365
390
|
*/
|
|
366
|
-
if (this.
|
|
367
|
-
const canDragItems = this.canDragItems(this.
|
|
391
|
+
if (this.isDragging()) {
|
|
392
|
+
const canDragItems = this.canDragItems(this.draggedItems);
|
|
368
393
|
if (!canDragItems) {
|
|
369
394
|
return true;
|
|
370
395
|
}
|
|
@@ -407,6 +432,22 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
407
432
|
return folders;
|
|
408
433
|
}
|
|
409
434
|
|
|
435
|
+
/**
|
|
436
|
+
* return dragged items
|
|
437
|
+
* @returns {*}
|
|
438
|
+
*/
|
|
439
|
+
get draggedItems() {
|
|
440
|
+
return this.props.dragContext.draggedItems;
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
/**
|
|
444
|
+
* Check if the user is currently dragging content.
|
|
445
|
+
* @returns {boolean}
|
|
446
|
+
*/
|
|
447
|
+
isDragging() {
|
|
448
|
+
return this.props.dragContext.dragging;
|
|
449
|
+
}
|
|
450
|
+
|
|
410
451
|
/**
|
|
411
452
|
* Render the component
|
|
412
453
|
* @returns {JSX}
|
|
@@ -438,10 +479,10 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
438
479
|
{hasChildren &&
|
|
439
480
|
<Fragment>
|
|
440
481
|
{isOpen &&
|
|
441
|
-
<Icon name="caret-down" onClick={this.
|
|
482
|
+
<Icon name="caret-down" onClick={this.handleToggleOpenFolder}/>
|
|
442
483
|
}
|
|
443
484
|
{!isOpen &&
|
|
444
|
-
<Icon name="caret-right" onClick={this.
|
|
485
|
+
<Icon name="caret-right" onClick={this.handleToggleOpenFolder}/>
|
|
445
486
|
}
|
|
446
487
|
</Fragment>
|
|
447
488
|
}
|
|
@@ -465,17 +506,7 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
465
506
|
<ul className="folders-tree">
|
|
466
507
|
{folderChildren.map(folder => <DecoratedFoldersTreeItem
|
|
467
508
|
key={`folders-tree-${folder.id}`}
|
|
468
|
-
|
|
469
|
-
folder={folder}
|
|
470
|
-
folders={this.props.context.folders}
|
|
471
|
-
isDragging={this.props.isDragging}
|
|
472
|
-
onClose={this.props.onClose}
|
|
473
|
-
onDragEnd={this.props.onDragEnd}
|
|
474
|
-
onDragStart={this.props.onDragStart}
|
|
475
|
-
onDrop={this.props.onDrop}
|
|
476
|
-
onOpen={this.props.onOpen}
|
|
477
|
-
onSelect={this.props.onSelect}
|
|
478
|
-
openFolders={this.props.openFolders}/>)}
|
|
509
|
+
folder={folder}/>)}
|
|
479
510
|
</ul>
|
|
480
511
|
}
|
|
481
512
|
</li>
|
|
@@ -486,19 +517,13 @@ class FilterResourcesByFoldersItem extends React.Component {
|
|
|
486
517
|
FilterResourcesByFoldersItem.propTypes = {
|
|
487
518
|
context: PropTypes.any, // The app context
|
|
488
519
|
contextualMenuContext: PropTypes.any, // The contextual menu context
|
|
489
|
-
|
|
520
|
+
history: PropTypes.object,
|
|
521
|
+
match: PropTypes.object,
|
|
490
522
|
folder: PropTypes.object,
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
onDragEnd: PropTypes.func,
|
|
494
|
-
onDragStart: PropTypes.func,
|
|
495
|
-
onDrop: PropTypes.func,
|
|
496
|
-
onOpen: PropTypes.func,
|
|
497
|
-
onSelect: PropTypes.func,
|
|
498
|
-
openFolders: PropTypes.array,
|
|
499
|
-
resourceWorkspaceContext: PropTypes.any
|
|
523
|
+
resourceWorkspaceContext: PropTypes.any,
|
|
524
|
+
dragContext: PropTypes.any,
|
|
500
525
|
};
|
|
501
526
|
|
|
502
|
-
const DecoratedFoldersTreeItem = withAppContext(withContextualMenu(withResourceWorkspace(FilterResourcesByFoldersItem)));
|
|
527
|
+
const DecoratedFoldersTreeItem = withRouter(withAppContext(withContextualMenu(withResourceWorkspace(withDrag(FilterResourcesByFoldersItem)))));
|
|
503
528
|
|
|
504
|
-
export default withAppContext(withContextualMenu(withResourceWorkspace(FilterResourcesByFoldersItem)));
|
|
529
|
+
export default withRouter(withAppContext(withContextualMenu(withResourceWorkspace(withDrag(FilterResourcesByFoldersItem)))));
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import {ResourceWorkspaceFilterTypes} from "../../../contexts/ResourceWorkspaceContext";
|
|
2
|
+
import MockPort from "../../../test/mock/MockPort";
|
|
1
3
|
|
|
2
4
|
/**
|
|
3
5
|
* Returns the default app context for the unit test
|
|
@@ -6,7 +8,8 @@
|
|
|
6
8
|
*/
|
|
7
9
|
export function defaultAppContext(appContext) {
|
|
8
10
|
const defaultAppContext = {
|
|
9
|
-
|
|
11
|
+
port: new MockPort(),
|
|
12
|
+
folders: foldersMock,
|
|
10
13
|
};
|
|
11
14
|
return Object.assign(defaultAppContext, appContext || {});
|
|
12
15
|
}
|
|
@@ -17,27 +20,34 @@ export function defaultAppContext(appContext) {
|
|
|
17
20
|
*/
|
|
18
21
|
export function defaultProps() {
|
|
19
22
|
return {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
id: foldersMock[1].id
|
|
23
|
+
resourceWorkspaceContext: {
|
|
24
|
+
filter: {
|
|
25
|
+
type: ResourceWorkspaceFilterTypes.FOLDER,
|
|
26
|
+
payload: {
|
|
27
|
+
folder: foldersMock[0]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
28
30
|
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
some: () => true
|
|
31
|
+
dragContext: {
|
|
32
|
+
dragging: true,
|
|
33
|
+
draggedItems: {
|
|
34
|
+
folders: [foldersMock[2]],
|
|
35
|
+
resources: []
|
|
36
|
+
},
|
|
37
|
+
onDragStart: jest.fn(),
|
|
38
|
+
onDragEnd: jest.fn(),
|
|
38
39
|
},
|
|
40
|
+
folder: foldersMock[0],
|
|
39
41
|
contextualMenuContext: {
|
|
40
42
|
show: jest.fn()
|
|
43
|
+
},
|
|
44
|
+
history: {
|
|
45
|
+
push: jest.fn(),
|
|
46
|
+
},
|
|
47
|
+
match: {
|
|
48
|
+
params: {
|
|
49
|
+
filterByFolderId: foldersMock[2].id
|
|
50
|
+
}
|
|
41
51
|
}
|
|
42
52
|
};
|
|
43
53
|
}
|
|
@@ -48,22 +58,24 @@ export function defaultProps() {
|
|
|
48
58
|
*/
|
|
49
59
|
export function defaultPropsCloseFolders() {
|
|
50
60
|
return {
|
|
51
|
-
|
|
52
|
-
|
|
61
|
+
dragContext: {
|
|
62
|
+
dragging: false,
|
|
63
|
+
draggedItems: null
|
|
53
64
|
},
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
onDragStart: jest.fn(),
|
|
59
|
-
onDrop: jest.fn(),
|
|
60
|
-
onOpen: jest.fn(),
|
|
61
|
-
onSelect: jest.fn(),
|
|
62
|
-
openFolders: {
|
|
63
|
-
some: () => false
|
|
65
|
+
resourceWorkspaceContext: {
|
|
66
|
+
filter: {
|
|
67
|
+
type: ResourceWorkspaceFilterTypes.ALL,
|
|
68
|
+
}
|
|
64
69
|
},
|
|
70
|
+
folder: foldersMock[0],
|
|
65
71
|
contextualMenuContext: {
|
|
66
72
|
show: jest.fn()
|
|
73
|
+
},
|
|
74
|
+
history: {
|
|
75
|
+
push: jest.fn()
|
|
76
|
+
},
|
|
77
|
+
match: {
|
|
78
|
+
params: jest.fn()
|
|
67
79
|
}
|
|
68
80
|
};
|
|
69
81
|
}
|
|
@@ -73,27 +85,8 @@ export function defaultPropsCloseFolders() {
|
|
|
73
85
|
*/
|
|
74
86
|
export const foldersMock = [
|
|
75
87
|
{
|
|
76
|
-
"id": "
|
|
77
|
-
"name": "
|
|
78
|
-
"created": "2020-02-01T00:00:00+00:00",
|
|
79
|
-
"modified": "2020-02-01T00:00:00+00:00",
|
|
80
|
-
"created_by": "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
|
|
81
|
-
"modified_by": "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
|
|
82
|
-
"permission": {
|
|
83
|
-
"id": "6aada140-fe8b-5e69-a90f-ae0cec6d3dcf",
|
|
84
|
-
"aco": "Folder",
|
|
85
|
-
"aco_foreign_key": "9e03fd73-04c0-5514-95fa-1a6cf2c7c093",
|
|
86
|
-
"aro": "User",
|
|
87
|
-
"aro_foreign_key": "f848277c-5398-58f8-a82a-72397af2d450",
|
|
88
|
-
"type": 1,
|
|
89
|
-
"created": "2020-05-11T10:11:13+00:00",
|
|
90
|
-
"modified": "2020-05-11T10:11:13+00:00"
|
|
91
|
-
},
|
|
92
|
-
"folder_parent_id": null,
|
|
93
|
-
"personal": false
|
|
94
|
-
}, {
|
|
95
|
-
"id": "299f613b-0706-570a-8636-956186384e0a",
|
|
96
|
-
"name": "ParentCertificates",
|
|
88
|
+
"id": "3ed65efd-7c41-5906-9c02-71e2d95951da",
|
|
89
|
+
"name": "Certificates",
|
|
97
90
|
"created": "2020-02-01T00:00:00+00:00",
|
|
98
91
|
"modified": "2020-02-01T00:00:00+00:00",
|
|
99
92
|
"created_by": "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
|
|
@@ -111,8 +104,8 @@ export const foldersMock = [
|
|
|
111
104
|
"folder_parent_id": null,
|
|
112
105
|
"personal": false
|
|
113
106
|
}, {
|
|
114
|
-
"id": "3ed65efd-7c41-5906-9c02-
|
|
115
|
-
"name": "
|
|
107
|
+
"id": "3ed65efd-7c41-5906-9c02-71e2d95951db",
|
|
108
|
+
"name": "ChildCertificates2",
|
|
116
109
|
"created": "2020-02-01T00:00:00+00:00",
|
|
117
110
|
"modified": "2020-02-01T00:00:00+00:00",
|
|
118
111
|
"created_by": "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
|
|
@@ -127,11 +120,11 @@ export const foldersMock = [
|
|
|
127
120
|
"created": "2020-05-11T10:11:13+00:00",
|
|
128
121
|
"modified": "2020-05-11T10:11:13+00:00"
|
|
129
122
|
},
|
|
130
|
-
"folder_parent_id": "
|
|
123
|
+
"folder_parent_id": "3ed65efd-7c41-5906-9c02-71e2d95951da",
|
|
131
124
|
"personal": false
|
|
132
125
|
}, {
|
|
133
|
-
"id": "3ed65efd-7c41-5906-9c02-
|
|
134
|
-
"name": "
|
|
126
|
+
"id": "3ed65efd-7c41-5906-9c02-71e2d95951dc",
|
|
127
|
+
"name": "ChildCertificates1",
|
|
135
128
|
"created": "2020-02-01T00:00:00+00:00",
|
|
136
129
|
"modified": "2020-02-01T00:00:00+00:00",
|
|
137
130
|
"created_by": "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
|
|
@@ -149,8 +142,8 @@ export const foldersMock = [
|
|
|
149
142
|
"folder_parent_id": "3ed65efd-7c41-5906-9c02-71e2d95951da",
|
|
150
143
|
"personal": false
|
|
151
144
|
}, {
|
|
152
|
-
"id": "3ed65efd-7c41-5906-9c02-
|
|
153
|
-
"name": "
|
|
145
|
+
"id": "3ed65efd-7c41-5906-9c02-71e2d95951dg",
|
|
146
|
+
"name": "ChildCertificates3",
|
|
154
147
|
"created": "2020-02-01T00:00:00+00:00",
|
|
155
148
|
"modified": "2020-02-01T00:00:00+00:00",
|
|
156
149
|
"created_by": "d57c10f5-639d-5160-9c81-8a0c6c4ec856",
|
|
@@ -165,7 +158,7 @@ export const foldersMock = [
|
|
|
165
158
|
"created": "2020-05-11T10:11:13+00:00",
|
|
166
159
|
"modified": "2020-05-11T10:11:13+00:00"
|
|
167
160
|
},
|
|
168
|
-
"folder_parent_id": "3ed65efd-7c41-5906-9c02-
|
|
161
|
+
"folder_parent_id": "3ed65efd-7c41-5906-9c02-71e2d95951dc",
|
|
169
162
|
"personal": false
|
|
170
163
|
}
|
|
171
164
|
];
|
|
@@ -30,7 +30,10 @@ beforeEach(() => {
|
|
|
30
30
|
|
|
31
31
|
describe("As LU I should see each folders", () => {
|
|
32
32
|
let page; // The page to test against
|
|
33
|
-
const
|
|
33
|
+
const appContext = defaultAppContext(); // The app context to pass
|
|
34
|
+
const requestMockImpl = jest.fn((message, data) => data);
|
|
35
|
+
const mockContextRequest = (context, implementation) => jest.spyOn(appContext.port, 'request').mockImplementation(implementation);
|
|
36
|
+
mockContextRequest(appContext, requestMockImpl);
|
|
34
37
|
|
|
35
38
|
describe('As LU I should see and identify each folders open', () => {
|
|
36
39
|
const props = defaultProps(); // The props to pass
|
|
@@ -42,52 +45,54 @@ describe("As LU I should see each folders", () => {
|
|
|
42
45
|
*/
|
|
43
46
|
|
|
44
47
|
beforeEach(() => {
|
|
45
|
-
page = new FilterResourcesByFoldersItemPage(
|
|
48
|
+
page = new FilterResourcesByFoldersItemPage(appContext, props);
|
|
46
49
|
});
|
|
47
50
|
|
|
48
|
-
it('As LU I should see all folders name', () => {
|
|
51
|
+
it('As LU I should see all folders name', async() => {
|
|
49
52
|
expect(page.filterResourcesByFoldersItem.exists()).toBeTruthy();
|
|
53
|
+
await page.filterResourcesByFoldersItem.toggleDisplayChildFolders(2);
|
|
50
54
|
expect(page.filterResourcesByFoldersItem.count).toBe(4);
|
|
51
|
-
expect(page.filterResourcesByFoldersItem.name(1)).toBe("
|
|
52
|
-
expect(page.filterResourcesByFoldersItem.name(2)).toBe("
|
|
53
|
-
expect(page.filterResourcesByFoldersItem.name(3)).toBe("
|
|
55
|
+
expect(page.filterResourcesByFoldersItem.name(1)).toBe("Certificates");
|
|
56
|
+
expect(page.filterResourcesByFoldersItem.name(2)).toBe("ChildCertificates1");
|
|
57
|
+
expect(page.filterResourcesByFoldersItem.name(3)).toBe("ChildCertificates3");
|
|
54
58
|
expect(page.filterResourcesByFoldersItem.name(4)).toBe("ChildCertificates2");
|
|
59
|
+
expect(page.filterResourcesByFoldersItem.selectedFolderName).toBe("Certificates");
|
|
55
60
|
});
|
|
56
61
|
|
|
57
62
|
it('As LU I should filter by folder', async() => {
|
|
58
|
-
await page.filterResourcesByFoldersItem.filter(
|
|
59
|
-
expect(props.
|
|
63
|
+
await page.filterResourcesByFoldersItem.filter(1);
|
|
64
|
+
expect(props.history.push).toHaveBeenCalledWith('/app/folders/view/3ed65efd-7c41-5906-9c02-71e2d95951da');
|
|
60
65
|
});
|
|
61
66
|
|
|
62
67
|
it('As LU I should be able to open a contextual menu for a folder with the more button', async() => {
|
|
63
68
|
await page.filterResourcesByFoldersItem.openContextualMenuWithButton(1);
|
|
64
|
-
expect(props.contextualMenuContext.show).toHaveBeenCalledWith(FilterResourcesByFoldersItemContextualMenu, {folder: foldersMock[
|
|
69
|
+
expect(props.contextualMenuContext.show).toHaveBeenCalledWith(FilterResourcesByFoldersItemContextualMenu, {folder: foldersMock[0]});
|
|
65
70
|
});
|
|
66
71
|
|
|
67
72
|
it('As LU I should be able to open a contextual menu for a folder with right click on parent folder', async() => {
|
|
68
73
|
await page.filterResourcesByFoldersItem.openContextualMenuWithRightClick(1);
|
|
69
|
-
expect(props.contextualMenuContext.show).toHaveBeenCalledWith(FilterResourcesByFoldersItemContextualMenu, {folder: foldersMock[
|
|
74
|
+
expect(props.contextualMenuContext.show).toHaveBeenCalledWith(FilterResourcesByFoldersItemContextualMenu, {folder: foldersMock[0]});
|
|
70
75
|
});
|
|
71
76
|
|
|
72
77
|
it('As LU I should be able to open a contextual menu for a folder with right click on a child folder', async() => {
|
|
73
78
|
await page.filterResourcesByFoldersItem.openContextualMenuWithRightClick(3);
|
|
74
|
-
expect(props.contextualMenuContext.show).toHaveBeenCalledWith(FilterResourcesByFoldersItemContextualMenu, {folder: foldersMock[
|
|
79
|
+
expect(props.contextualMenuContext.show).toHaveBeenCalledWith(FilterResourcesByFoldersItemContextualMenu, {folder: foldersMock[0]});
|
|
75
80
|
});
|
|
76
81
|
|
|
77
82
|
it('As LU I should be able to drag and drop a folder on another folder', async() => {
|
|
78
83
|
await page.filterResourcesByFoldersItem.dragStartOnFolder(3);
|
|
79
|
-
await page.filterResourcesByFoldersItem.dragEndOnFolder(
|
|
84
|
+
await page.filterResourcesByFoldersItem.dragEndOnFolder(1);
|
|
80
85
|
await page.filterResourcesByFoldersItem.dragOverOnFolder(1);
|
|
81
86
|
await page.filterResourcesByFoldersItem.dragLeaveOnFolder(1);
|
|
82
|
-
await page.filterResourcesByFoldersItem.onDropFolder(
|
|
83
|
-
expect(props.onDragStart).toHaveBeenCalled();
|
|
84
|
-
expect(props.onDragEnd).toHaveBeenCalled();
|
|
85
|
-
expect(
|
|
87
|
+
await page.filterResourcesByFoldersItem.onDropFolder(3);
|
|
88
|
+
expect(props.dragContext.onDragStart).toHaveBeenCalled();
|
|
89
|
+
expect(props.dragContext.onDragEnd).toHaveBeenCalled();
|
|
90
|
+
expect(appContext.port.request).toHaveBeenCalledWith("passbolt.folders.open-move-confirmation-dialog", {folders: ["3ed65efd-7c41-5906-9c02-71e2d95951dc"], resources:[], folderParentId: foldersMock[1].id});
|
|
86
91
|
});
|
|
87
92
|
|
|
88
93
|
it('As LU I should be able to close folder to hide the child folders', async() => {
|
|
89
|
-
await page.filterResourcesByFoldersItem.toggleDisplayChildFolders(
|
|
90
|
-
expect(
|
|
94
|
+
await page.filterResourcesByFoldersItem.toggleDisplayChildFolders(1);
|
|
95
|
+
expect(page.filterResourcesByFoldersItem.count).toBe(1);
|
|
91
96
|
});
|
|
92
97
|
});
|
|
93
98
|
|
|
@@ -99,12 +104,12 @@ describe("As LU I should see each folders", () => {
|
|
|
99
104
|
*/
|
|
100
105
|
|
|
101
106
|
beforeEach(() => {
|
|
102
|
-
page = new FilterResourcesByFoldersItemPage(
|
|
107
|
+
page = new FilterResourcesByFoldersItemPage(appContext, props);
|
|
103
108
|
});
|
|
104
109
|
|
|
105
110
|
it('As LU I should be able to open folder to see or not the child folders', async() => {
|
|
106
111
|
await page.filterResourcesByFoldersItem.toggleDisplayChildFolders(1);
|
|
107
|
-
expect(
|
|
112
|
+
expect(page.filterResourcesByFoldersItem.count).toBe(3);
|
|
108
113
|
});
|
|
109
114
|
});
|
|
110
115
|
});
|
|
@@ -15,9 +15,11 @@
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
import {fireEvent, render, waitFor} from "@testing-library/react";
|
|
18
|
-
import AppContext from "../../../contexts/AppContext";
|
|
19
18
|
import React from "react";
|
|
20
19
|
import FilterResourcesByFoldersItem from "./FilterResourcesByFoldersItem";
|
|
20
|
+
import {BrowserRouter as Router} from "react-router-dom";
|
|
21
|
+
import AppContext from "../../../contexts/AppContext";
|
|
22
|
+
import {DragContext} from "../../../contexts/DragContext";
|
|
21
23
|
|
|
22
24
|
/**
|
|
23
25
|
* The FilterResourcesByFolders component represented as a page
|
|
@@ -31,7 +33,11 @@ export default class FilterResourcesByFoldersItemPage {
|
|
|
31
33
|
constructor(appContext, props) {
|
|
32
34
|
this._page = render(
|
|
33
35
|
<AppContext.Provider value={appContext}>
|
|
34
|
-
<
|
|
36
|
+
<Router>
|
|
37
|
+
<DragContext.Provider value={props.dragContext}>
|
|
38
|
+
<FilterResourcesByFoldersItem.WrappedComponent {...props}/>
|
|
39
|
+
</DragContext.Provider>
|
|
40
|
+
</Router>
|
|
35
41
|
</AppContext.Provider>
|
|
36
42
|
);
|
|
37
43
|
this.setupPageObjects();
|
|
@@ -83,10 +89,10 @@ export class FilterResourcesByFoldersItemPageObject {
|
|
|
83
89
|
}
|
|
84
90
|
|
|
85
91
|
/**
|
|
86
|
-
* Returns the folder selected
|
|
92
|
+
* Returns the name of the folder selected
|
|
87
93
|
*/
|
|
88
|
-
get
|
|
89
|
-
return this._container.querySelector('li.folder-item .row.selected')
|
|
94
|
+
get selectedFolderName() {
|
|
95
|
+
return this._container.querySelector('li.folder-item .row.selected').textContent;
|
|
90
96
|
}
|
|
91
97
|
|
|
92
98
|
/**
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import {MemoryRouter, Route} from "react-router-dom";
|
|
3
3
|
import AppContext from "../../../contexts/AppContext";
|
|
4
|
-
import "../../../../css/themes/default/ext_app.css";
|
|
5
4
|
import FilterResourcesByShortcuts from "./FilterResourcesByShortcuts";
|
|
6
5
|
|
|
7
6
|
|