passbolt-styleguide 3.6.2 → 3.7.0-alpha1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/README.md +9 -6
  2. package/build/css/help.min.css +3 -7
  3. package/build/css/public.min.css +3 -16
  4. package/build/css/themes/default/api_authentication.min.css +3 -3
  5. package/build/css/themes/default/api_cloud.min.css +3 -3
  6. package/build/css/themes/default/api_main.min.css +3 -12
  7. package/build/css/themes/default/api_reports.min.css +3 -12
  8. package/build/css/themes/default/api_webinstaller.min.css +3 -12
  9. package/build/css/themes/default/ext_app.min.css +3 -12
  10. package/build/css/themes/default/ext_authentication.min.css +3 -3
  11. package/build/css/themes/default/ext_external.min.css +2 -2
  12. package/build/css/themes/default/ext_in_form_cta.min.css +3 -3
  13. package/build/css/themes/default/ext_in_form_menu.min.css +3 -3
  14. package/build/css/themes/default/ext_quickaccess.min.css +3 -3
  15. package/build/css/themes/midgar/api_authentication.min.css +3 -3
  16. package/build/css/themes/midgar/api_main.min.css +3 -12
  17. package/build/css/themes/midgar/api_reports.min.css +3 -12
  18. package/build/css/themes/midgar/ext_app.min.css +3 -12
  19. package/build/css/themes/midgar/ext_authentication.min.css +3 -3
  20. package/build/css/themes/midgar/ext_in_form_cta.min.css +3 -3
  21. package/build/css/themes/midgar/ext_in_form_menu.min.css +3 -3
  22. package/build/css/themes/midgar/ext_quickaccess.min.css +3 -3
  23. package/build/js/dist/api-account-recovery.js +1 -1
  24. package/build/js/dist/api-app.js +1 -1
  25. package/build/js/dist/api-app.js.LICENSE.txt +25 -1
  26. package/build/js/dist/api-recover.js +1 -1
  27. package/build/js/dist/api-setup.js +1 -1
  28. package/build/js/dist/api-triage.js +1 -1
  29. package/build/js/dist/api-vendors.js +1 -1
  30. package/build/js/dist/api-vendors.js.LICENSE.txt +43 -7
  31. package/i18next-parser.config.js +22 -0
  32. package/package.json +8 -5
  33. package/src/img/og/og_image.png +0 -0
  34. package/src/locales/de-DE/common.json +308 -173
  35. package/src/locales/en-UK/common.json +155 -175
  36. package/src/locales/es-ES/common.json +955 -0
  37. package/src/locales/fr-FR/common.json +308 -174
  38. package/src/locales/ja-JP/common.json +292 -172
  39. package/src/locales/lt-LT/common.json +985 -0
  40. package/src/locales/nl-NL/common.json +329 -194
  41. package/src/locales/pl-PL/common.json +337 -172
  42. package/src/locales/sv-SE/common.json +307 -172
  43. package/src/public-website-sign-in/PublicWebsiteSignInBootstrap.js +25 -0
  44. package/src/public-website-sign-in/lib/SignIn/SignInManager.js +85 -0
  45. package/src/public-website-sign-in/lib/SignIn/SignInManager.test.data.js +45 -0
  46. package/src/public-website-sign-in/lib/SignIn/SignInManager.test.js +59 -0
  47. package/src/public-website-sign-in/lib/SignIn/SignInManager.test.page.js +67 -0
  48. package/src/react-extension/ExtBootstrapAccountRecovery.js +17 -0
  49. package/src/react-extension/ExtBootstrapApp.js +17 -0
  50. package/src/react-extension/ExtBootstrapLogin.js +17 -0
  51. package/src/react-extension/ExtBootstrapRecover.js +17 -0
  52. package/src/react-extension/ExtBootstrapSetup.js +17 -0
  53. package/src/react-extension/components/AccountRecovery/AccountRecoveryInviteUserSettingPreferenceDialog/AccountRecoveryInviteUserSettingPreferenceDialog.test.stories.js +1 -1
  54. package/src/react-extension/components/AccountRecovery/HandleAccountRecoveryUserSettingsRoute/HandleAccountRecoveryUserSettingsRoute.js +1 -9
  55. package/src/react-extension/components/AccountRecovery/HandleReviewAccountRecoveryRequestWorkflow/HandleReviewAccountRecoveryRequestWorkflow.js +1 -9
  56. package/src/react-extension/components/AccountRecovery/ManageAccountRecoveryUserSettings/ManageAccountRecoveryUserSettings.js +1 -1
  57. package/src/react-extension/components/AccountRecovery/ManageAccountRecoveryUserSettings/ManageAccountRecoveryUserSettings.test.stories.js +1 -1
  58. package/src/react-extension/components/AccountRecovery/ReviewAccountRecoveryRequest/ReviewAccountRecoveryRequest.js +1 -1
  59. package/src/react-extension/components/AccountRecovery/ReviewAccountRecoveryRequest/ReviewAccountRecoveryRequest.test.stories.js +1 -1
  60. package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.js +6 -3
  61. package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.test.data.js +10 -7
  62. package/src/react-extension/components/Administration/ConfirmSaveAccountRecoverySettings/ConfirmSaveAccountRecoverySettings.test.stories.js +1 -1
  63. package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.js +2 -15
  64. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationAccountRecoveryAction/DisplayAdministrationAccountRecoveryActions.js +2 -12
  65. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceActions/DisplayAdministrationWorkspaceActions.js +2 -11
  66. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.js +1 -1
  67. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.test.js +1 -1
  68. package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.js +1 -9
  69. package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.stories.js +1 -1
  70. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.js +1 -9
  71. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.page.js +1 -1
  72. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.test.stories.js +12 -6
  73. package/src/react-extension/components/Administration/DisplayLoadingDialog/DisplayLoadingDialog.js +2 -11
  74. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.js +6 -6
  75. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.stories.js +1 -1
  76. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.js +25 -1
  77. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.js +1 -1
  78. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.stories.js +1 -1
  79. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.stories.js +1 -1
  80. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.js +25 -1
  81. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.js +1 -1
  82. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.stories.js +1 -1
  83. package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.js +12 -2
  84. package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.test.js +1 -1
  85. package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.test.stories.js +1 -1
  86. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.js +24 -24
  87. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.stories.js +1 -1
  88. package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.js +1 -1
  89. package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.test.stories.js +1 -1
  90. package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.js +6 -3
  91. package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.data.js +20 -5
  92. package/src/react-extension/components/Administration/ManageAccountRecoveryAdministrationSettings/ManageAccountRecoveryAdministrationSettings.test.stories.js +1 -1
  93. package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.js +1 -11
  94. package/src/react-extension/components/Administration/ProvideAccountRecoveryOrganizationKey/ProvideAccountRecoveryOrganizationKey.test.stories.js +1 -1
  95. package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/DownloadOrganizationKey.js +1 -9
  96. package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/DownloadOrganizationKey.test.stories.js +1 -1
  97. package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.js +90 -46
  98. package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/GenerateOrganizationKey.test.js +61 -17
  99. package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/ImportOrganizationKey.js +1 -1
  100. package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.js +1 -9
  101. package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.test.page.js +14 -0
  102. package/src/react-extension/components/Administration/SelectAccountRecoveryOrganizationKey/SelectAccountRecoveryOrganizationKey.test.stories.js +1 -1
  103. package/src/react-extension/components/Announcement/AnnouncementWrapper/AnnouncementWrapper.js +3 -2
  104. package/src/react-extension/components/Announcement/HandleSubscriptionAnnouncement/DisplayExpiredSubscriptionAnnouncement.js +3 -3
  105. package/src/react-extension/components/Announcement/HandleSubscriptionAnnouncement/DisplayGoingToExpireSubscriptionAnnouncement.js +3 -2
  106. package/src/react-extension/components/Announcement/HandleSubscriptionAnnouncement/DisplayInvalidSubscriptionAnnouncement.js +3 -3
  107. package/src/react-extension/components/Authentication/AskForAuthenticationHelpCredentialLost/AskForAuthenticationHelpCredentialLost.js +2 -2
  108. package/src/react-extension/components/Authentication/AskForAuthenticationHelpCredentialLost/AskForAuthenticationHelpCredentialLost.test.stories.js +1 -1
  109. package/src/react-extension/components/Authentication/CheckAccountRecoveryEmail/CheckAccountRecoveryEmail.js +2 -2
  110. package/src/react-extension/components/Authentication/CheckAccountRecoveryEmail/CheckAccountRecoveryEmail.test.stories.js +1 -1
  111. package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.js +2 -12
  112. package/src/react-extension/components/Authentication/CheckMailBox/CheckMailbox.test.stories.js +1 -1
  113. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.js +88 -41
  114. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.stories.js +1 -1
  115. package/src/react-extension/components/Authentication/ChooseAccountRecoveryPreference/ChooseAccountRecoveryPreference.js +2 -2
  116. package/src/react-extension/components/Authentication/ChooseAccountRecoveryPreference/ChooseAccountRecoveryPreference.test.stories.js +11 -1
  117. package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.js +2 -2
  118. package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.stories.js +1 -1
  119. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.js +24 -14
  120. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.js +2 -2
  121. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.stories.js +1 -1
  122. package/src/react-extension/components/Authentication/DisplayAlreadyLoggedInError/DisplayAlreadyLoggedInError.js +2 -2
  123. package/src/react-extension/components/Authentication/DisplayAlreadyLoggedInError/DisplayAlreadyLoggedInError.test.stories.js +1 -1
  124. package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.js +2 -2
  125. package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.test.stories.js +1 -1
  126. package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.js +2 -2
  127. package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.stories.js +1 -1
  128. package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.js +2 -2
  129. package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.test.stories.js +1 -1
  130. package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.js +3 -3
  131. package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.stories.js +1 -1
  132. package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.js +2 -2
  133. package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.stories.js +1 -1
  134. package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.js +6 -6
  135. package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.stories.js +1 -1
  136. package/src/react-extension/components/Authentication/EnterUsernameForm/EnterUsernameForm.js +1 -1
  137. package/src/react-extension/components/Authentication/EnterUsernameForm/EnterUsernameForm.test.stories.js +1 -1
  138. package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.js +34 -7
  139. package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.data.js +2 -1
  140. package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.js +20 -1
  141. package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.page.js +4 -0
  142. package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.stories.js +1 -1
  143. package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.js +2 -2
  144. package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.stories.js +4 -1
  145. package/src/react-extension/components/Authentication/IntroduceExtension/IntroduceExtension.js +2 -2
  146. package/src/react-extension/components/Authentication/IntroduceExtension/IntroduceExtension.test.stories.js +1 -1
  147. package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.js +1 -9
  148. package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.stories.js +1 -1
  149. package/src/react-extension/components/Authentication/RequestAccountRecovery/RequestAccountRecovery.js +2 -2
  150. package/src/react-extension/components/Authentication/RequestAccountRecovery/RequestAccountRecovery.test.stories.js +6 -1
  151. package/src/react-extension/components/AuthenticationAccountRecovery/DisplayExpiredTokenError/DisplayExpiredTokenError.js +2 -2
  152. package/src/react-extension/components/AuthenticationAccountRecovery/DisplayExpiredTokenError/DisplayExpiredTokenError.test.stories.js +1 -1
  153. package/src/react-extension/components/AuthenticationAccountRecovery/DisplayRestartFromScratchError/DisplayRestartFromScratchError.js +2 -2
  154. package/src/react-extension/components/AuthenticationAccountRecovery/DisplayRestartFromScratchError/DisplayRestartFromScratchError.test.stories.js +1 -1
  155. package/src/react-extension/components/AuthenticationAccountRecovery/OrchestrateAccountRecovery/OrchestrateAccountRecovery.js +2 -2
  156. package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.js +2 -2
  157. package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.stories.js +1 -1
  158. package/src/react-extension/components/AuthenticationLogin/Login/Login.js +1 -9
  159. package/src/react-extension/components/AuthenticationLogin/Login/Login.test.stories.js +1 -1
  160. package/src/react-extension/components/AuthenticationLogin/OrchestrateLogin/OrchestrateLoginBoxFooter.js +2 -2
  161. package/src/react-extension/components/AuthenticationLogin/OrchestrateLogin/OrchestrateLoginBoxMain.js +2 -2
  162. package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.js +1 -1
  163. package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.test.stories.js +1 -1
  164. package/src/react-extension/components/AuthenticationRecover/RecoverAuthentication/RecoverAuthentication.js +3 -2
  165. package/src/react-extension/components/AuthenticationSetup/SetupAuthentication/SetupAuthentication.js +3 -3
  166. package/src/react-extension/components/Common/ActionFeedback/DisplayActionFeedbacks.test.stories.js +1 -1
  167. package/src/react-extension/components/Common/ActionFeedback/ShareActionFeedback.js +2 -2
  168. package/src/react-extension/components/Common/Autocomplete/Autocomplete.js +8 -2
  169. package/src/react-extension/components/Common/Avatar/UserAvatar.test.data.js +6 -4
  170. package/src/react-extension/components/Common/Avatar/UserAvatar.test.stories.js +3 -2
  171. package/src/react-extension/components/Common/Button/Button.test.stories.js +5 -5
  172. package/src/react-extension/components/Common/Checkbox/Checkbox.test.stories.js +1 -1
  173. package/src/react-extension/components/Common/ContextualMenu/ContextualMenu.test.stories.js +1 -1
  174. package/src/react-extension/components/Common/ContextualMenu/ContextualMenuWrapper.js +10 -8
  175. package/src/react-extension/components/Common/Dialog/DialogCloseButton/DialogCloseButton.js +2 -1
  176. package/src/react-extension/components/Common/Dialog/DialogWrapper/DialogFooter.test.stories.js +2 -2
  177. package/src/react-extension/components/Common/Dialog/DialogWrapper/DialogWrapper.js +2 -2
  178. package/src/react-extension/components/Common/Dialog/DialogWrapper/DialogWrapper.test.stories.js +1 -1
  179. package/src/react-extension/components/Common/DragInfo/DragInfo.test.stories.js +10 -8
  180. package/src/react-extension/components/Common/Error/NotifyError/NotifyError.js +3 -11
  181. package/src/react-extension/components/Common/Error/NotifyError/NotifyError.test.stories.js +6 -1
  182. package/src/react-extension/components/Common/Footer/Footer.js +3 -13
  183. package/src/react-extension/components/Common/Inputs/Autocomplete/Autocomplete.js +16 -7
  184. package/src/react-extension/components/Common/Inputs/Autocomplete/AutocompleteItemLoading.js +4 -0
  185. package/src/react-extension/components/Common/Inputs/FormSubmitButton/FormCancelButton.js +3 -12
  186. package/src/react-extension/components/Common/Inputs/FormSubmitButton/FormSubmitButton.js +2 -2
  187. package/src/react-extension/components/Common/Internationalisation/TranslationProvider.js +0 -1
  188. package/src/react-extension/components/Common/Link/Link.test.stories.js +1 -1
  189. package/src/react-extension/components/Common/Loading/LoadingBar/LoadingBar.test.stories.js +1 -1
  190. package/src/react-extension/components/Common/Loading/LoadingSpinner/LoadingSpinner.test.stories.js +1 -1
  191. package/src/react-extension/components/Common/Menu/DisplayMainMenu.js +2 -11
  192. package/src/react-extension/components/Common/Navigation/Search/SearchBar.js +7 -7
  193. package/src/react-extension/components/Common/Navigation/Search/SearchBar.test.stories.js +1 -1
  194. package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.js +2 -11
  195. package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.test.stories.js +1 -1
  196. package/src/react-extension/components/Common/RadioButton/RadioButton.test.stories.js +1 -1
  197. package/src/react-extension/components/Common/Select/Select.js +44 -12
  198. package/src/react-extension/components/Common/Select/Select.test.stories.js +1 -1
  199. package/src/react-extension/components/Common/Text/Text.test.stories.js +1 -1
  200. package/src/react-extension/components/Common/TextField/TextField.test.stories.js +1 -1
  201. package/src/react-extension/components/Common/Toggle/Toggle.test.stories.js +1 -1
  202. package/src/react-extension/components/Common/Tooltip/Tooltip.test.stories.js +2 -2
  203. package/src/react-extension/components/Internationalisation/ChangeLocale/ChangeLocale.test.page.js +1 -1
  204. package/src/react-extension/components/Resource/CreateResource/CreateResource.js +9 -9
  205. package/src/react-extension/components/Resource/CreateResource/CreateResource.test.stories.js +1 -1
  206. package/src/react-extension/components/Resource/DeleteResource/DeleteResource.js +3 -3
  207. package/src/react-extension/components/Resource/DeleteResource/DeleteResource.test.page.js +1 -1
  208. package/src/react-extension/components/Resource/DeleteResource/DeleteResource.test.stories.js +1 -1
  209. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.js +4 -4
  210. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.test.stories.js +1 -1
  211. package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspace.js +1 -9
  212. package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMainMenu.js +8 -17
  213. package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMainMenu.test.js +2 -2
  214. package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMainMenu.test.stories.js +1 -1
  215. package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMenu.js +6 -6
  216. package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMenu.test.stories.js +1 -1
  217. package/src/react-extension/components/Resource/EditResource/EditResource.js +8 -8
  218. package/src/react-extension/components/Resource/EditResource/EditResource.test.stories.js +1 -1
  219. package/src/react-extension/components/Resource/ExportResources/ExportResources.js +9 -10
  220. package/src/react-extension/components/Resource/ExportResources/ExportResources.test.stories.js +1 -1
  221. package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.js +1 -1
  222. package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.test.stories.js +1 -1
  223. package/src/react-extension/components/Resource/FilterResourcesByBreadcrumb/FilterResourcesByBreadcrumb.test.stories.js +1 -1
  224. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.js +2 -11
  225. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.stories.js +1 -1
  226. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItemContextualMenu.js +2 -11
  227. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByRootFolderContextualMenu.js +2 -11
  228. package/src/react-extension/components/Resource/FilterResourcesByGroups/FilterResourcesByGroups.js +2 -11
  229. package/src/react-extension/components/Resource/FilterResourcesByGroups/FilterResourcesByGroups.test.stories.js +1 -1
  230. package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.js +4 -13
  231. package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.test.js +1 -1
  232. package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.test.stories.js +1 -1
  233. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.js +1 -1
  234. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.stories.js +1 -1
  235. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTagsContextualMenu.js +2 -11
  236. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTagsList.js +2 -11
  237. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTagsListContextualMenu.js +3 -12
  238. package/src/react-extension/components/Resource/FilterResourcesByText/FilterResourcesByText.test.stories.js +1 -1
  239. package/src/react-extension/components/Resource/ImportResources/ImportResources.test.stories.js +1 -1
  240. package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.js +1 -1
  241. package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.test.stories.js +1 -1
  242. package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.stories.js +1 -1
  243. package/src/react-extension/components/ResourceComment/AddResourceComment/AddResourceComment.test.stories.js +5 -3
  244. package/src/react-extension/components/ResourceComment/ConfirmResourceCommentDeletion/ConfirmResourceCommentDeletion.js +1 -1
  245. package/src/react-extension/components/ResourceComment/ConfirmResourceCommentDeletion/ConfirmResourceCommentDeletion.test.stories.js +1 -1
  246. package/src/react-extension/components/ResourceComment/DeleteResourceComment/DeleteComment.js +2 -1
  247. package/src/react-extension/components/ResourceComment/DisplayResourceCommentList/DisplayResourceCommentList.js +1 -9
  248. package/src/react-extension/components/ResourceComment/DisplayResourceCommentList/DisplayResourceCommentList.test.stories.js +5 -3
  249. package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.js +2 -2
  250. package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.test.stories.js +5 -3
  251. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetails.js +3 -3
  252. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsActivity.test.stories.js +2 -2
  253. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsComment.js +2 -11
  254. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsDescription.js +2 -10
  255. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsDescription.test.stories.js +1 -1
  256. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsInformation.js +1 -1
  257. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsInformation.test.data.js +1 -1
  258. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsPermission.js +2 -10
  259. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.js +3 -12
  260. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.test.stories.js +1 -1
  261. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.js +1 -1
  262. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.stories.js +1 -1
  263. package/src/react-extension/components/ResourceFolder/DefineResourceFolderMoveStrategy/DefineResourceFolderMoveStrategy.test.stories.js +1 -1
  264. package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.js +1 -1
  265. package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.test.stories.js +1 -1
  266. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.js +1 -1
  267. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.stories.js +1 -1
  268. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetails.js +1 -1
  269. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsActivity.test.stories.js +1 -1
  270. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.js +1 -9
  271. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.test.stories.js +1 -1
  272. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsPermissions.test.stories.js +1 -1
  273. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePassphraseGenerator.js +10 -7
  274. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePassphraseGenerator.test.stories.js +1 -1
  275. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePasswordGenerator.js +12 -9
  276. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePasswordGenerator.test.stories.js +1 -1
  277. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/GenerateResourcePassword.js +10 -7
  278. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/GenerateResourcePassword.test.stories.js +1 -1
  279. package/src/react-extension/components/ResourceTag/DeleteResourceTag/DeleteResourceTag.js +2 -2
  280. package/src/react-extension/components/ResourceTag/DeleteResourceTag/DeleteResourceTag.test.stories.js +1 -1
  281. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.js +1 -1
  282. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.stories.js +1 -1
  283. package/src/react-extension/components/ResourceTag/EditResourceTags/EditResourceTags.js +2 -2
  284. package/src/react-extension/components/ResourceTag/EditResourceTags/EditResourceTagsItemViewer.js +2 -11
  285. package/src/react-extension/components/Share/ShareDialog.js +124 -22
  286. package/src/react-extension/components/Share/ShareDialog.test.data.js +25 -1
  287. package/src/react-extension/components/Share/ShareDialog.test.js +87 -36
  288. package/src/react-extension/components/Share/ShareDialog.test.page.js +1 -1
  289. package/src/react-extension/components/Share/ShareDialog.test.stories.js +1 -1
  290. package/src/react-extension/components/Share/SharePermissionDeleteButton.js +2 -1
  291. package/src/react-extension/components/Share/SharePermissionItem.js +56 -0
  292. package/src/react-extension/components/Share/ShareVariesDetails.js +2 -11
  293. package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.js +1 -1
  294. package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.test.stories.js +1 -1
  295. package/src/react-extension/components/User/CreateUser/CreateUser.js +9 -9
  296. package/src/react-extension/components/User/CreateUser/CreateUser.test.stories.js +1 -1
  297. package/src/react-extension/components/User/DeleteUser/DeleteUser.js +1 -1
  298. package/src/react-extension/components/User/DeleteUser/DeleteUser.test.stories.js +1 -1
  299. package/src/react-extension/components/User/DeleteUser/DeleteUserWithConflicts.js +3 -3
  300. package/src/react-extension/components/User/DeleteUser/DeleteUserWithConflicts.test.stories.js +1 -1
  301. package/src/react-extension/components/User/DisplayExpiredAccountRecovery/DisplayExpiredAccountRecovery.js +1 -9
  302. package/src/react-extension/components/User/DisplayExpiredAccountRecovery/DisplayExpiredAccountRecovery.test.stories.js +1 -1
  303. package/src/react-extension/components/User/DisplayUserBadgeMenu/DisplayUserBadgeMenu.js +8 -17
  304. package/src/react-extension/components/User/DisplayUserBadgeMenu/DisplayUserBadgeMenu.test.stories.js +1 -1
  305. package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.js +3 -3
  306. package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.test.stories.js +1 -1
  307. package/src/react-extension/components/User/DisplayUserWorkspaceMainActions/DisplayUserWorkspaceMainActions.js +8 -17
  308. package/src/react-extension/components/User/DisplayUserWorkspaceMainActions/DisplayUserWorkspaceMainActions.test.js +4 -4
  309. package/src/react-extension/components/User/DisplayUsers/DisplayUsers.js +1 -1
  310. package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.stories.js +1 -1
  311. package/src/react-extension/components/User/DisplayUsersContextualMenu/DisplayUsersContextualMenu.test.stories.js +1 -1
  312. package/src/react-extension/components/User/EditUser/EditUser.js +9 -9
  313. package/src/react-extension/components/User/EditUser/EditUser.test.stories.js +1 -1
  314. package/src/react-extension/components/User/FilterUsersByBreadcrumb/FilterUsersByBreadcrumb.test.stories.js +1 -1
  315. package/src/react-extension/components/User/FilterUsersByGroups/DisplayGroupContextualMenu.js +2 -11
  316. package/src/react-extension/components/User/FilterUsersByGroups/FilterUsersByGroup.test.stories.js +1 -1
  317. package/src/react-extension/components/User/FilterUsersByGroups/FilterUsersByGroupContextualMenu.js +2 -11
  318. package/src/react-extension/components/User/FilterUsersByShortcut/FilterUsersByShortcut.js +3 -12
  319. package/src/react-extension/components/User/FilterUsersByShortcut/FilterUsersByShortcut.test.stories.js +1 -1
  320. package/src/react-extension/components/User/FilterUsersByText/FilterUsersByText.js +1 -9
  321. package/src/react-extension/components/User/FilterUsersByText/FilterUsersByText.test.stories.js +1 -1
  322. package/src/react-extension/components/UserDetails/DisplayUserDetails/DisplayUserDetails.js +3 -3
  323. package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.js +1 -9
  324. package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.test.data.js +1 -1
  325. package/src/react-extension/components/UserDetails/DisplayUserDetailsAccountRecovery/DisplayUserDetailsAccountRecovery.test.stories.js +1 -1
  326. package/src/react-extension/components/UserDetails/DisplayUserDetailsActivity/DisplayUserDetailsActivity.js +1 -9
  327. package/src/react-extension/components/UserDetails/DisplayUserDetailsActivity/DisplayUserDetailsActivity.test.stories.js +1 -1
  328. package/src/react-extension/components/UserDetails/DisplayUserDetailsGroups/DisplayUserDetailsGroups.test.stories.js +1 -1
  329. package/src/react-extension/components/UserDetails/DisplayUserDetailsInformation/DisplayUserDetailsInformation.js +1 -1
  330. package/src/react-extension/components/UserDetails/DisplayUserDetailsInformation/DisplayUserDetailsInformation.test.stories.js +22 -83
  331. package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.js +8 -1
  332. package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.data.js +20 -2
  333. package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.js +25 -1
  334. package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.stories.js +28 -26
  335. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.js +85 -57
  336. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.js +21 -6
  337. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.stories.js +1 -1
  338. package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroup.js +1 -1
  339. package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroup.test.stories.js +1 -1
  340. package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroupWithConflicts.js +2 -2
  341. package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroupWithConflicts.test.stories.js +1 -1
  342. package/src/react-extension/components/UserGroup/DisplayUserGroupDetails/DisplayUserGroupDetails.js +1 -1
  343. package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsInformation/DisplayUserGroupDetailsInformation.test.stories.js +1 -1
  344. package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembers.js +4 -13
  345. package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembers.test.stories.js +1 -1
  346. package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembersGroupMember.js +1 -9
  347. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.js +132 -151
  348. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.js +8 -1
  349. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.page.js +37 -14
  350. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.stories.js +5 -2
  351. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroupItem.js +209 -0
  352. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.js +1 -1
  353. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/DisplayChangePassphraseIntroduction.js +2 -3
  354. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/DownloadRecoveryKit.js +2 -2
  355. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js +25 -12
  356. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.js +5 -1
  357. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.page.js +7 -0
  358. package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.js +2 -10
  359. package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.test.stories.js +1 -1
  360. package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.js +1 -1
  361. package/src/react-extension/components/UserSetting/DisplayUserAccountRecovery/DisplayAccountRecoveryUserSettings.test.stories.js +1 -1
  362. package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.js +9 -2
  363. package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.test.stories.js +58 -35
  364. package/src/react-extension/components/UserSetting/DisplayUserProfile/DisplayUserProfile.js +1 -1
  365. package/src/react-extension/components/UserSetting/DisplayUserProfile/DisplayUserProfile.test.stories.js +1 -1
  366. package/src/react-extension/components/UserSetting/DisplayUserSettingWorkspaceActions/DisplayUserSettingWorkspaceActions.js +2 -11
  367. package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspaceBreadcrumb/DisplayUserSettingsWorkspaceBreadcrumb.js +2 -2
  368. package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspaceBreadcrumb/DisplayUserSettingsWorkspaceBreadcrumb.test.stories.js +1 -1
  369. package/src/react-extension/components/UserSetting/DisplayUserTheme/DisplayUserTheme.js +1 -9
  370. package/src/react-extension/components/UserSetting/DisplayUserTheme/DisplayUserTheme.test.stories.js +1 -1
  371. package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.js +8 -8
  372. package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.test.stories.js +1 -1
  373. package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.js +4 -13
  374. package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.test.stories.js +1 -1
  375. package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.test.stories.js +1 -1
  376. package/src/react-extension/contexts/Authentication/AuthenticationRecoverContext.js +14 -1
  377. package/src/react-extension/test/fixture/Settings/siteSettings.js +20 -14
  378. package/src/react-extension/test/mock/components/Internationalisation/MockTranslationProvider.js +8 -1
  379. package/src/react-quickaccess/ExtQuickAccess.js +23 -9
  380. package/src/react-quickaccess/components/AnimatedSwitch/AnimatedSwitch.js +0 -1
  381. package/src/react-quickaccess/components/ExtensionSetup/SetupExtensionInProgress/SetupExtensionInProgress.js +2 -5
  382. package/src/react-quickaccess/components/ExtensionSetup/SetupExtensionInProgress/SetupExtensionInProgressPage.test.stories.js +1 -1
  383. package/src/react-quickaccess/components/FilterResourcesByFavoritePage/FilterResourcesByFavoritePage.js +2 -2
  384. package/src/react-quickaccess/components/FilterResourcesByFavoritePage/FilterResourcesByFavoritePage.test.stories.js +1 -1
  385. package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.js +1 -1
  386. package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.test.stories.js +1 -1
  387. package/src/react-quickaccess/components/FilterResourcesByItemsIOwnPage/FilterResourcesByItemsIOwnPage.js +1 -1
  388. package/src/react-quickaccess/components/FilterResourcesByItemsIOwnPage/FilterResourcesByItemsIOwnPage.test.stories.js +1 -1
  389. package/src/react-quickaccess/components/FilterResourcesByRecentlyModifiedPage/FilterResourcesByRecentlyModifiedPage.js +1 -1
  390. package/src/react-quickaccess/components/FilterResourcesByRecentlyModifiedPage/FilterResourcesByRecentlyModifiedPage.test.stories.js +1 -1
  391. package/src/react-quickaccess/components/FilterResourcesBySharedWithMePage/FilterResourcesBySharedWithMePage.js +1 -1
  392. package/src/react-quickaccess/components/FilterResourcesBySharedWithMePage/FilterResourcesBySharedWithMePage.test.stories.js +1 -1
  393. package/src/react-quickaccess/components/FilterResourcesByTagPage/FilterResourcesByTagPage.js +1 -1
  394. package/src/react-quickaccess/components/FilterResourcesByTagPage/FilterResourcesByTagPage.test.stories.js +1 -1
  395. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePasswordGenerator.js +2 -3
  396. package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.js +3 -3
  397. package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.test.stories.js +1 -1
  398. package/src/react-quickaccess/components/Header/Header.test.stories.js +1 -1
  399. package/src/react-quickaccess/components/HomePage/HomePage.js +0 -8
  400. package/src/react-quickaccess/components/HomePage/HomePage.test.stories.js +1 -1
  401. package/src/react-quickaccess/components/LoginPage/LoginPage.js +1 -9
  402. package/src/react-quickaccess/components/LoginPage/LoginPage.test.stories.js +1 -1
  403. package/src/react-quickaccess/components/MoreFiltersPage/MoreFiltersPage.js +1 -1
  404. package/src/react-quickaccess/components/MoreFiltersPage/MoreFiltersPage.test.stories.js +1 -1
  405. package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.js +5 -5
  406. package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.test.stories.js +1 -1
  407. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.js +1 -1
  408. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.stories.js +1 -1
  409. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.js +4 -4
  410. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.stories.js +1 -1
  411. package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.js +3 -3
  412. package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.test.stories.js +1 -1
  413. package/src/react-quickaccess/components/Search/Search.js +5 -5
  414. package/src/react-quickaccess/components/Search/Search.test.stories.js +1 -1
  415. package/src/react-web-integration/BrowserIntegrationBootstrap.js +0 -17
  416. package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.stories.js +1 -1
  417. package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.js +2 -2
  418. package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.test.stories.js +1 -1
  419. package/src/react-web-integration/lib/InForm/InFormFieldSelector.js +11 -1
  420. package/src/react-web-integration/lib/InForm/InformManager.test.data.js +60 -0
  421. package/src/react-web-integration/lib/InForm/InformManager.test.js +151 -6
  422. package/src/react-web-integration/lib/InForm/InformManager.test.page.js +39 -0
  423. package/src/shared/components/Icons/Icon.test.stories.js +1 -1
  424. package/src/shared/components/Password/Password.js +2 -1
  425. package/src/shared/components/Password/Password.test.page.js +4 -1
  426. package/src/shared/components/Password/Password.test.stories.js +1 -1
  427. package/src/shared/components/PasswordComplexity/PasswordComplexity.js +2 -2
  428. package/src/shared/components/PasswordComplexity/PasswordComplexity.test.stories.js +5 -5
  429. package/src/stories/assets/intro/hero.png +0 -0
  430. package/src/stories/assets/intro/intro.css +47 -0
  431. package/test/jest.setup.js +2 -0
@@ -1,7 +1,7 @@
1
1
  import UserSettings from "../../../shared/lib/Settings/UserSettings";
2
2
  import userSettingsFixture from "../../test/fixture/Settings/userSettings";
3
+ import {users, groups} from "../../contexts/UserWorkspaceContext.test.data";
3
4
  import MockPort from "../../test/mock/MockPort";
4
-
5
5
  /**
6
6
  * Returns the default app context for the unit test
7
7
  * @param appContext An existing app context
@@ -14,6 +14,8 @@ export function defaultAppContext(appContext) {
14
14
  const defaultAppContext = {
15
15
  userSettings,
16
16
  port,
17
+ users,
18
+ groups,
17
19
  setContext: function(newContext) {
18
20
  // In this scope this reference the object context.
19
21
  Object.assign(this, newContext);
@@ -35,6 +37,10 @@ export function defaultProps() {
35
37
  };
36
38
  }
37
39
 
40
+ const gpgKey = {
41
+ "fingerprint": "0C1D1761110D1E33C9006D1A5B1B332ED06426D3"
42
+ };
43
+
38
44
  /**
39
45
  * Default resources
40
46
  */
@@ -1702,3 +1708,21 @@ export const autocompleteResult = [
1702
1708
  "last_logged_in": ""
1703
1709
  }
1704
1710
  ];
1711
+
1712
+ export const mockResultsResources = {
1713
+ 'passbolt.share.get-resources': resources,
1714
+ 'passbolt.keyring.get-public-key-info-by-user': gpgKey,
1715
+ "passbolt.share.resources.save": true,
1716
+ };
1717
+
1718
+ export const mockResultsFolders = {
1719
+ 'passbolt.share.get-folders': folders,
1720
+ 'passbolt.keyring.get-public-key-info-by-user': gpgKey,
1721
+ "passbolt.share.folders.save": true,
1722
+ };
1723
+
1724
+ export const mockResultsResourcesAndFolders = {
1725
+ 'passbolt.share.get-resources': resources,
1726
+ 'passbolt.share.get-folders': folders,
1727
+ 'passbolt.keyring.get-public-key-info-by-user': gpgKey,
1728
+ };
@@ -16,14 +16,29 @@
16
16
  * Unit tests on ShareDialog in regard of specifications
17
17
  */
18
18
  import ShareDialogPage from "./ShareDialog.test.page";
19
- import {autocompleteResult, defaultAppContext, defaultProps, folders, resources} from "./ShareDialog.test.data";
19
+ import {
20
+ autocompleteResult,
21
+ defaultAppContext,
22
+ defaultProps, folders,
23
+ mockResultsFolders,
24
+ mockResultsResources, mockResultsResourcesAndFolders, resources
25
+ } from "./ShareDialog.test.data";
20
26
  import {ActionFeedbackContext} from "../../contexts/ActionFeedbackContext";
21
27
  import PassboltApiFetchError from "../../../shared/lib/Error/PassboltApiFetchError";
22
28
  import {waitFor} from "@testing-library/react";
23
29
  import NotifyError from "../Common/Error/NotifyError/NotifyError";
24
30
 
31
+ beforeAll(() => {
32
+ global.scrollTo = jest.fn();
33
+ });
34
+
25
35
  beforeEach(() => {
26
36
  jest.resetModules();
37
+ jest.useFakeTimers();
38
+ });
39
+
40
+ afterEach(() => {
41
+ jest.clearAllTimers();
27
42
  });
28
43
 
29
44
  describe("As Lu I should see the share dialog", () => {
@@ -41,23 +56,31 @@ describe("As Lu I should see the share dialog", () => {
41
56
  * I should see the share dialog
42
57
  */
43
58
  beforeEach(async() => {
44
- const requestResourcesMockImpl = jest.fn(() => resources);
59
+ const requestResourcesMockImpl = path => mockResultsResources[path];
45
60
  mockContextRequest(requestResourcesMockImpl);
46
61
  context.setContext({shareDialogProps});
47
62
  page = new ShareDialogPage(context, props);
48
63
  });
49
64
 
50
65
  it('As LU I see a success toaster message after sharing resources to users and groups with success', async() => {
51
- expect.assertions(19);
66
+ expect.assertions(18);
52
67
  expect(context.port.request).toHaveBeenCalledWith('passbolt.share.get-resources', shareDialogProps.resourcesIds);
53
68
  expect(page.exists()).toBeTruthy();
54
69
  expect(page.title).toBe('Share 3 resources');
55
70
  expect(page.count).toBe(11);
56
71
 
57
- const requestAutocompleteResultMockImpl = jest.fn(() => autocompleteResult);
58
- mockContextRequest(requestAutocompleteResultMockImpl);
72
+ const requestKeyInfoMockImpl = () => ({
73
+ fingerprint: "079D6F4FDA3BFDC2D8E562D8AA44B1DA4BFB36B6"
74
+ });
75
+
76
+ mockContextRequest(requestKeyInfoMockImpl);
59
77
  await page.searchName("adm");
60
- expect(context.port.request).toHaveBeenCalledWith('passbolt.share.search-aros', 'adm', shareDialogProps.resourcesIds);
78
+ jest.runOnlyPendingTimers();
79
+ await waitFor(() => {
80
+ if (!page.userOrGroupAutocomplete(1)) {
81
+ throw new Error("Page is not ready yet.");
82
+ }
83
+ });
61
84
  await page.selectUserOrGroup(1);
62
85
 
63
86
  expect(page.warningMessage).toBe('Click save to apply your pending changes.');
@@ -69,8 +92,8 @@ describe("As Lu I should see the share dialog", () => {
69
92
  expect(page.aroDetails(2)).toBe('betty@passbolt.com');
70
93
  expect(page.aroName(3)).toBe('Board');
71
94
  expect(page.aroDetails(3)).toBe('Group');
72
- expect(page.aroName(12)).toBe('Administrator');
73
- expect(page.aroDetails(12)).toBe('Group');
95
+ expect(page.aroName(12)).toBe('Admin User');
96
+ expect(page.aroDetails(12)).toBe('admin@passbolt.com');
74
97
  expect(page.selectRights(12).textContent).toBe('can read');
75
98
 
76
99
  const requestMockImpl = jest.fn();
@@ -79,10 +102,10 @@ describe("As Lu I should see the share dialog", () => {
79
102
 
80
103
  await page.savePermissions();
81
104
 
82
- const permissionDto = [{"aco": "Resource", "aco_foreign_key": shareDialogProps.resourcesIds[0], "aro": "Group", "aro_foreign_key": "469edf9d-ca1e-5003-91d6-3a46755d5a50", "is_new": true, "type": 1},
83
- {"aco": "Resource", "aco_foreign_key": shareDialogProps.resourcesIds[1], "aro": "Group", "aro_foreign_key": "469edf9d-ca1e-5003-91d6-3a46755d5a50", "is_new": true, "type": 1},
84
- {"aco": "Resource", "aco_foreign_key": "690b6e40-f371-579c-b0c6-86e8ef383adc", "aro": "Group", "aro_foreign_key": "469edf9d-ca1e-5003-91d6-3a46755d5a50", "is_new": true, "type": 1},
85
- {"aco": "Resource", "aco_foreign_key": "ecf0ed85-3bfc-5f45-b11d-74e9a86aa313", "aro": "Group", "aro_foreign_key": "469edf9d-ca1e-5003-91d6-3a46755d5a50", "is_new": true, "type": 1}];
105
+ const permissionDto = [{"aco": "Resource", "aco_foreign_key": shareDialogProps.resourcesIds[0], "aro": "User", "aro_foreign_key": "d57c10f5-639d-5160-9c81-8a0c6c4ec856", "is_new": true, "type": 1},
106
+ {"aco": "Resource", "aco_foreign_key": shareDialogProps.resourcesIds[1], "aro": "User", "aro_foreign_key": "d57c10f5-639d-5160-9c81-8a0c6c4ec856", "is_new": true, "type": 1},
107
+ {"aco": "Resource", "aco_foreign_key": "690b6e40-f371-579c-b0c6-86e8ef383adc", "aro": "User", "aro_foreign_key": "d57c10f5-639d-5160-9c81-8a0c6c4ec856", "is_new": true, "type": 1},
108
+ {"aco": "Resource", "aco_foreign_key": "ecf0ed85-3bfc-5f45-b11d-74e9a86aa313", "aro": "User", "aro_foreign_key": "d57c10f5-639d-5160-9c81-8a0c6c4ec856", "is_new": true, "type": 1}];
86
109
 
87
110
  expect(context.port.request).toHaveBeenCalledWith("passbolt.share.resources.save", resources, permissionDto);
88
111
  expect(ActionFeedbackContext._currentValue.displaySuccess).toHaveBeenCalledWith('The permissions have been changed successfully.');
@@ -100,7 +123,12 @@ describe("As Lu I should see the share dialog", () => {
100
123
  const requestAutocompleteResultMockImpl = jest.fn(() => autocompleteResult);
101
124
  mockContextRequest(requestAutocompleteResultMockImpl);
102
125
  await page.searchName("adm");
103
- expect(context.port.request).toHaveBeenCalledWith('passbolt.share.search-aros', 'adm', shareDialogProps.resourcesIds);
126
+ jest.runOnlyPendingTimers();
127
+ await waitFor(() => {
128
+ if (!page.userOrGroupAutocomplete(1)) {
129
+ throw new Error("Page is not ready yet.");
130
+ }
131
+ });
104
132
  await page.selectUserOrGroup(1);
105
133
 
106
134
  // Mock the request function to make it the expected result
@@ -153,11 +181,16 @@ describe("As Lu I should see the share dialog", () => {
153
181
  });
154
182
 
155
183
  it('As LU I should see an error dialog if the submit operation fails for an unexpected reason', async() => {
156
- expect.assertions(2);
184
+ expect.assertions(1);
157
185
  const requestAutocompleteResultMockImpl = jest.fn(() => autocompleteResult);
158
186
  mockContextRequest(requestAutocompleteResultMockImpl);
159
187
  await page.searchName("adm");
160
- expect(context.port.request).toHaveBeenCalledWith('passbolt.share.search-aros', 'adm', shareDialogProps.resourcesIds);
188
+ jest.runOnlyPendingTimers();
189
+ await waitFor(() => {
190
+ if (!page.userOrGroupAutocomplete(1)) {
191
+ throw new Error("Page is not ready yet.");
192
+ }
193
+ });
161
194
  await page.selectUserOrGroup(1);
162
195
 
163
196
  // Mock the request function to make it return an error.
@@ -181,14 +214,14 @@ describe("As Lu I should see the share dialog", () => {
181
214
  * I should see the share dialog
182
215
  */
183
216
  beforeEach(async() => {
184
- const requestResourcesMockImpl = jest.fn(() => resources);
217
+ const requestResourcesMockImpl = path => mockResultsResources[path];
185
218
  mockContextRequest(requestResourcesMockImpl);
186
219
  context.setContext({shareDialogProps});
187
220
  page = new ShareDialogPage(context, props);
188
221
  });
189
222
 
190
223
  it('As LU I see a success toaster message after sharing one resource to users and groups with success', async() => {
191
- expect.assertions(13);
224
+ expect.assertions(12);
192
225
  expect(context.port.request).toHaveBeenCalledWith('passbolt.share.get-resources', shareDialogProps.resourcesIds);
193
226
  expect(page.exists()).toBeTruthy();
194
227
  expect(page.title).toBe('Share resource');
@@ -198,12 +231,17 @@ describe("As Lu I should see the share dialog", () => {
198
231
  const requestAutocompleteResultMockImpl = jest.fn(() => autocompleteResult);
199
232
  mockContextRequest(requestAutocompleteResultMockImpl);
200
233
  await page.searchName("adm");
201
- expect(context.port.request).toHaveBeenCalledWith('passbolt.share.search-aros', 'adm', shareDialogProps.resourcesIds);
234
+ jest.runOnlyPendingTimers();
235
+ await waitFor(() => {
236
+ if (!page.userOrGroupAutocomplete(1)) {
237
+ throw new Error("Page is not ready yet.");
238
+ }
239
+ });
202
240
  await page.selectUserOrGroup(1);
203
241
 
204
242
  expect(page.count).toBe(12);
205
- expect(page.aroName(12)).toBe('Administrator');
206
- expect(page.aroDetails(12)).toBe('Group');
243
+ expect(page.aroName(12)).toBe('Admin User');
244
+ expect(page.aroDetails(12)).toBe('admin@passbolt.com');
207
245
  expect(page.selectRights(12).textContent).toBe('can read');
208
246
 
209
247
  const requestMockImpl = jest.fn();
@@ -212,10 +250,10 @@ describe("As Lu I should see the share dialog", () => {
212
250
 
213
251
  await page.savePermissions();
214
252
 
215
- const permissionDto = [{"aco": "Resource", "aco_foreign_key": shareDialogProps.resourcesIds[0], "aro": "Group", "aro_foreign_key": "469edf9d-ca1e-5003-91d6-3a46755d5a50", "is_new": true, "type": 1},
216
- {"aco": "Resource", "aco_foreign_key": "daaf057e-7fc3-5537-a8a9-e8c151890878", "aro": "Group", "aro_foreign_key": "469edf9d-ca1e-5003-91d6-3a46755d5a50", "is_new": true, "type": 1},
217
- {"aco": "Resource", "aco_foreign_key": "690b6e40-f371-579c-b0c6-86e8ef383adc", "aro": "Group", "aro_foreign_key": "469edf9d-ca1e-5003-91d6-3a46755d5a50", "is_new": true, "type": 1},
218
- {"aco": "Resource", "aco_foreign_key": "ecf0ed85-3bfc-5f45-b11d-74e9a86aa313", "aro": "Group", "aro_foreign_key": "469edf9d-ca1e-5003-91d6-3a46755d5a50", "is_new": true, "type": 1}];
253
+ const permissionDto = [{"aco": "Resource", "aco_foreign_key": shareDialogProps.resourcesIds[0], "aro": "User", "aro_foreign_key": "d57c10f5-639d-5160-9c81-8a0c6c4ec856", "is_new": true, "type": 1},
254
+ {"aco": "Resource", "aco_foreign_key": "daaf057e-7fc3-5537-a8a9-e8c151890878", "aro": "User", "aro_foreign_key": "d57c10f5-639d-5160-9c81-8a0c6c4ec856", "is_new": true, "type": 1},
255
+ {"aco": "Resource", "aco_foreign_key": "690b6e40-f371-579c-b0c6-86e8ef383adc", "aro": "User", "aro_foreign_key": "d57c10f5-639d-5160-9c81-8a0c6c4ec856", "is_new": true, "type": 1},
256
+ {"aco": "Resource", "aco_foreign_key": "ecf0ed85-3bfc-5f45-b11d-74e9a86aa313", "aro": "User", "aro_foreign_key": "d57c10f5-639d-5160-9c81-8a0c6c4ec856", "is_new": true, "type": 1}];
219
257
 
220
258
  expect(context.port.request).toHaveBeenCalledWith("passbolt.share.resources.save", resources, permissionDto);
221
259
  expect(ActionFeedbackContext._currentValue.displaySuccess).toHaveBeenCalledWith('The permissions have been changed successfully.');
@@ -231,29 +269,37 @@ describe("As Lu I should see the share dialog", () => {
231
269
  * I should see the share dialog
232
270
  */
233
271
  beforeEach(async() => {
234
- const requestResourcesMockImpl = jest.fn(() => folders);
272
+ const requestResourcesMockImpl = path => mockResultsFolders[path];
235
273
  mockContextRequest(requestResourcesMockImpl);
236
274
  context.setContext({shareDialogProps});
237
275
  page = new ShareDialogPage(context, props);
238
276
  });
239
277
 
240
278
  it('As LU I see a success toaster message after sharing one folder to users and groups with success', async() => {
241
- expect.assertions(13);
279
+ expect.assertions(12);
242
280
  expect(context.port.request).toHaveBeenCalledWith('passbolt.share.get-folders', shareDialogProps.foldersIds);
243
281
  expect(page.exists()).toBeTruthy();
244
282
  expect(page.title).toBe('Share folder');
245
283
  expect(page.subtitle).toBe('apache');
246
284
  expect(page.count).toBe(2);
247
285
 
248
- const requestAutocompleteResultMockImpl = jest.fn(() => autocompleteResult);
249
- mockContextRequest(requestAutocompleteResultMockImpl);
250
- await page.searchName("adm");
251
- expect(context.port.request).toHaveBeenCalledWith('passbolt.share.search-aros', 'adm', shareDialogProps.foldersIds);
286
+ const requestKeyInfoMockImpl = () => ({
287
+ fingerprint: "079D6F4FDA3BFDC2D8E562D8AA44B1DA4BFB36B6"
288
+ });
289
+ mockContextRequest(requestKeyInfoMockImpl);
290
+
291
+ await page.searchName("ad");
292
+ jest.runOnlyPendingTimers();
293
+ await waitFor(() => {
294
+ if (!page.userOrGroupAutocomplete(2)) {
295
+ throw new Error("Page is not ready yet.");
296
+ }
297
+ });
252
298
  await page.selectUserOrGroup(2);
253
299
 
254
300
  expect(page.count).toBe(3);
255
- expect(page.aroName(3)).toBe('Admin User');
256
- expect(page.aroDetails(3)).toBe('admin@passbolt.com');
301
+ expect(page.aroName(3)).toBe('Adele Goldstine');
302
+ expect(page.aroDetails(3)).toBe('adele@passbolt.com');
257
303
  expect(page.selectRights(3).textContent).toBe('can read');
258
304
 
259
305
  const requestMockImpl = jest.fn();
@@ -262,7 +308,7 @@ describe("As Lu I should see the share dialog", () => {
262
308
 
263
309
  await page.savePermissions();
264
310
 
265
- const permissionDto = [{"aco": "Folder", "aco_foreign_key": shareDialogProps.foldersIds[0], "aro": "User", "aro_foreign_key": "d57c10f5-639d-5160-9c81-8a0c6c4ec856", "is_new": true, "type": 1}];
311
+ const permissionDto = [{"aco": "Folder", "aco_foreign_key": shareDialogProps.foldersIds[0], "aro": "User", "aro_foreign_key": "af5e1f70-a0ee-5b76-935b-c846f8a6a190", "is_new": true, "type": 1}];
266
312
 
267
313
  expect(context.port.request).toHaveBeenCalledWith("passbolt.share.folders.save", folders, permissionDto);
268
314
  expect(ActionFeedbackContext._currentValue.displaySuccess).toHaveBeenCalledWith('The permissions have been changed successfully.');
@@ -279,21 +325,26 @@ describe("As Lu I should see the share dialog", () => {
279
325
  * I should see the share dialog
280
326
  */
281
327
  beforeEach(async() => {
282
- const requestResourcesMockImpl = jest.fn(() => folders);
328
+ const requestResourcesMockImpl = path => mockResultsResourcesAndFolders[path];
283
329
  mockContextRequest(requestResourcesMockImpl);
284
330
  context.setContext({shareDialogProps});
285
331
  page = new ShareDialogPage(context, props);
286
332
  });
287
333
 
288
334
  it('As LU I see a error dialog message after try to sharing folders and resources at the same time', async() => {
289
- expect.assertions(4);
335
+ expect.assertions(3);
290
336
  expect(page.exists()).toBeTruthy();
291
337
  expect(page.title).toBe('Share 2 items');
292
338
 
293
339
  const requestAutocompleteResultMockImpl = jest.fn(() => autocompleteResult);
294
340
  mockContextRequest(requestAutocompleteResultMockImpl);
295
341
  await page.searchName("adm");
296
- expect(context.port.request).toHaveBeenCalledWith('passbolt.share.search-aros', 'adm', shareDialogProps.resourcesIds);
342
+ jest.runOnlyPendingTimers();
343
+ await waitFor(() => {
344
+ if (!page.userOrGroupAutocomplete(1)) {
345
+ throw new Error("Page is not ready yet.");
346
+ }
347
+ });
297
348
  await page.selectUserOrGroup(1);
298
349
 
299
350
  await page.savePermissions();
@@ -31,7 +31,7 @@ export default class ShareDialogPage {
31
31
  this._page = render(
32
32
  <MockTranslationProvider>
33
33
  <AppContext.Provider value={appContext}>
34
- <ShareDialog {...props}/>
34
+ <ShareDialog {...props} listMinSize={20}/>
35
35
  </AppContext.Provider>
36
36
  </MockTranslationProvider>
37
37
  );
@@ -6,7 +6,7 @@ import {autocompleteResult, resources} from "./ShareDialog.test.data";
6
6
 
7
7
 
8
8
  export default {
9
- title: 'Passbolt/Share/ShareDialog',
9
+ title: 'Passbolt Component/Share/ShareDialog',
10
10
  component: ShareDialog
11
11
  };
12
12
 
@@ -12,6 +12,7 @@
12
12
  * @since 2.13.0
13
13
  */
14
14
  import React, {Component} from "react";
15
+ import {Trans} from "react-i18next";
15
16
  import PropTypes from "prop-types";
16
17
 
17
18
  import Icon from "../../../shared/components/Icons/Icon";
@@ -33,7 +34,7 @@ class SharePermissionDeleteButton extends Component {
33
34
  return (
34
35
  <a className={this.getClassName()} onClick={this.handleCloseClick.bind(this)} role="button">
35
36
  <Icon name='close' />
36
- <span className="visually-hidden">Remove</span>
37
+ <span className="visually-hidden"><Trans>Remove</Trans></span>
37
38
  </a>
38
39
  );
39
40
  }
@@ -39,6 +39,17 @@ class SharePermissionItem extends Component {
39
39
  this.bindEventHandlers();
40
40
  }
41
41
 
42
+ /**
43
+ * Component did mount
44
+ * @returns {Promise<void>}
45
+ */
46
+ async componentDidMount() {
47
+ if (this.isUser()) {
48
+ const gpgKey = await this.findUserGpgKey(this.props.aro.profile.user_id);
49
+ this.setState({gpgKey});
50
+ }
51
+ }
52
+
42
53
  /**
43
54
  * Invoked immediately after updating occurs. This method is not called for the initial render.
44
55
  * @param prevProps
@@ -54,6 +65,15 @@ class SharePermissionItem extends Component {
54
65
  this.handleDelete = this.handleDelete.bind(this);
55
66
  }
56
67
 
68
+ /**
69
+ * Find a user gpg key
70
+ * @param {string} userId
71
+ * @returns {Promise<object>}
72
+ */
73
+ async findUserGpgKey(userId) {
74
+ return await this.props.context.port.request('passbolt.keyring.get-public-key-info-by-user', userId);
75
+ }
76
+
57
77
  /**
58
78
  * R
59
79
  * @returns {string} Group or User name
@@ -86,6 +106,27 @@ class SharePermissionItem extends Component {
86
106
  }
87
107
  }
88
108
 
109
+ /**
110
+ * Get the tooltip message
111
+ * @returns {JSX.Element}
112
+ */
113
+ get tooltipMessage() {
114
+ return <>
115
+ <div className="email"><strong>{this.props.aro.username}</strong></div>
116
+ <div className="fingerprint">{this.formatFingerprint(this.state.gpgKey.fingerprint)}</div>
117
+ </>;
118
+ }
119
+
120
+ /**
121
+ * Format fingerprint
122
+ * @param {string} fingerprint An user finger print
123
+ * @returns {JSX.Element}
124
+ */
125
+ formatFingerprint(fingerprint) {
126
+ const result = fingerprint.toUpperCase().replace(/.{4}/g, '$& ');
127
+ return <>{result.substr(0, 24)}<br/>{result.substr(25)}</>;
128
+ }
129
+
89
130
  /**
90
131
  * Return true if aro in props is a user
91
132
  * @returns {boolean}
@@ -102,6 +143,14 @@ class SharePermissionItem extends Component {
102
143
  return !(this.props.aro && this.props.aro.profile);
103
144
  }
104
145
 
146
+ /**
147
+ * Has a gpg key fingerprint
148
+ * @returns {*}
149
+ */
150
+ hasGpgKey() {
151
+ return this.state.gpgKey && this.state.gpgKey.fingerprint;
152
+ }
153
+
105
154
  getClassName() {
106
155
  let className = 'row';
107
156
  if (this.props.updated) {
@@ -156,6 +205,11 @@ class SharePermissionItem extends Component {
156
205
  <div className="aro">
157
206
  <div className="aro-name">
158
207
  <span className="ellipsis">{this.getAroName()}</span>
208
+ {this.hasGpgKey() &&
209
+ <Tooltip message={this.tooltipMessage}>
210
+ <Icon name="info-circle"/>
211
+ </Tooltip>
212
+ }
159
213
  </div>
160
214
  <div className="aro-details">
161
215
  <span className="ellipsis">{this.getAroDetails()}</span>
@@ -175,6 +229,7 @@ class SharePermissionItem extends Component {
175
229
  value={this.state.permissionType.toString()}
176
230
  disabled={this.isInputDisabled()}
177
231
  onChange={this.handleUpdate}
232
+ direction={this.props.isLastItemDisplayed ? "top" : "bottom"}
178
233
  />
179
234
  </div>
180
235
 
@@ -196,6 +251,7 @@ SharePermissionItem.propTypes = {
196
251
  onUpdate: PropTypes.func,
197
252
  onDelete: PropTypes.func,
198
253
  permissionType: PropTypes.number,
254
+ isLastItemDisplayed: PropTypes.bool,
199
255
  t: PropTypes.func, // The translation function
200
256
  };
201
257
 
@@ -13,17 +13,9 @@
13
13
  */
14
14
  import React, {Component} from "react";
15
15
  import PropTypes from "prop-types";
16
- import {Trans, withTranslation} from "react-i18next";
16
+ import {Trans} from "react-i18next";
17
17
 
18
18
  class ShareVariesDetails extends Component {
19
- /**
20
- * Get the translate function
21
- * @returns {function(...[*]=)}
22
- */
23
- get translate() {
24
- return this.props.t;
25
- }
26
-
27
19
  render() {
28
20
  return (
29
21
  <span className="share-varies-details">
@@ -46,7 +38,6 @@ class ShareVariesDetails extends Component {
46
38
 
47
39
  ShareVariesDetails.propTypes = {
48
40
  variesDetails: PropTypes.object,
49
- t: PropTypes.func, // The translation function
50
41
  };
51
42
 
52
- export default withTranslation('common')(ShareVariesDetails);
43
+ export default ShareVariesDetails;
@@ -156,7 +156,7 @@ class ConfirmDisableUserMFA extends Component {
156
156
  You are about to disable second-factor authentication (MFA) for the user <strong>{{name}} ({{username}})</strong>.
157
157
  </Trans>
158
158
  </p>
159
- <p><Trans>Warning: Existing settings will be lost. This action cannot be undone.</Trans></p>
159
+ <p><Trans>Existing settings will be lost. This action cannot be undone.</Trans></p>
160
160
  </div>
161
161
 
162
162
  <div className="submit-wrapper clearfix">
@@ -7,7 +7,7 @@ import MockPort from "../../../test/mock/MockPort";
7
7
 
8
8
 
9
9
  export default {
10
- title: 'Passbolt/User/ConfirmDisableUserMFA',
10
+ title: 'Passbolt Component/User/ConfirmDisableUserMFA',
11
11
  component: ConfirmDisableUserMFA
12
12
  };
13
13
 
@@ -370,11 +370,11 @@ class CreateUser extends Component {
370
370
  onClose={this.handleClose} disabled={this.hasAllInputDisabled()}>
371
371
  <form className="user-create-form" onSubmit={this.handleFormSubmit} noValidate>
372
372
  <div className="form-content">
373
- <div className={`input text required ${this.state.first_nameError ? "error" : ""}`}>
374
- <label htmlFor="user-first-name-input"><Trans>First Name</Trans></label>
373
+ <div className={`input text required ${this.state.first_nameError ? "error" : ""} ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
374
+ <label htmlFor="user-first-name-input"><Trans>First name</Trans></label>
375
375
  <input id="user-first-name-input" name="first_name"
376
376
  ref={this.firstNameRef}
377
- type="text" value={this.state.first_name} placeholder={this.translate("first name")}
377
+ type="text" value={this.state.first_name} placeholder={this.translate("First name")}
378
378
  required="required" disabled={this.hasAllInputDisabled()}
379
379
  onKeyUp={this.handleFirstNameInputKeyUp} onChange={this.handleInputChange}
380
380
  autoComplete='off' autoFocus={true}
@@ -383,11 +383,11 @@ class CreateUser extends Component {
383
383
  <div className="first_name error-message">{this.state.first_nameError}</div>
384
384
  }
385
385
  </div>
386
- <div className={`input text required ${this.state.last_nameError ? "error" : ""}`}>
387
- <label htmlFor="user-last-name-input"><Trans>Last Name</Trans></label>
386
+ <div className={`input text required ${this.state.last_nameError ? "error" : ""} ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
387
+ <label htmlFor="user-last-name-input"><Trans>Last name</Trans></label>
388
388
  <input id="user-last-name-input" name="last_name"
389
389
  ref={this.lastNameRef}
390
- type="text" value={this.state.last_name} placeholder={this.translate("last name")}
390
+ type="text" value={this.state.last_name} placeholder={this.translate("Last name")}
391
391
  required="required" disabled={this.hasAllInputDisabled()}
392
392
  onKeyUp={this.handleLastNameInputOnKeyUp} onChange={this.handleInputChange}
393
393
  autoComplete='off' autoFocus={true}
@@ -396,10 +396,10 @@ class CreateUser extends Component {
396
396
  <div className="last_name error-message">{this.state.last_nameError}</div>
397
397
  }
398
398
  </div>
399
- <div className={`input text required ${this.state.usernameError ? "error" : ""}`}>
399
+ <div className={`input text required ${this.state.usernameError ? "error" : ""} ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
400
400
  <label htmlFor="user-username-input"><Trans>Username / Email</Trans></label>
401
401
  <input id="user-username-input" name="username"
402
- ref={this.usernameRef} type="text" value={this.state.username} placeholder={this.translate("email")}
402
+ ref={this.usernameRef} type="text" value={this.state.username} placeholder={this.translate("Email")}
403
403
  required="required" disabled={this.hasAllInputDisabled()}
404
404
  onKeyUp={this.handleUsernameInputOnKeyUp} onChange={this.handleInputChange}
405
405
  autoComplete='off' autoFocus={true}
@@ -408,7 +408,7 @@ class CreateUser extends Component {
408
408
  <div className="username error-message">{this.state.usernameError}</div>
409
409
  }
410
410
  </div>
411
- <div className="input checkbox-wrapper">
411
+ <div className={`input checkbox-wrapper ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
412
412
  <label htmlFor="is_admin_checkbox"><Trans>Role</Trans></label>
413
413
  <div className="input checkbox">
414
414
  <input id="is_admin_checkbox" name="is_admin" onChange={this.handleCheckboxClick}
@@ -7,7 +7,7 @@ import MockPort from "../../../test/mock/MockPort";
7
7
 
8
8
 
9
9
  export default {
10
- title: 'Passbolt/User/CreateUser',
10
+ title: 'Passbolt Component/User/CreateUser',
11
11
  component: CreateUser
12
12
  };
13
13
 
@@ -140,7 +140,7 @@ class DeleteUser extends Component {
140
140
  Are you sure you want to delete <strong>{{user: this.getUser()}}</strong>?
141
141
  </Trans>
142
142
  </p>
143
- <p><Trans>Warning: This action can’t be undone. All the data associated with this user will be permanently deleted.</Trans></p>
143
+ <p><Trans>This action can’t be undone. All the data associated with this user will be permanently deleted.</Trans></p>
144
144
  </div>
145
145
  <div className="submit-wrapper clearfix">
146
146
  <FormCancelButton disabled={this.hasAllInputDisabled()} onClick={this.handleCloseClick}/>
@@ -7,7 +7,7 @@ import MockPort from "../../../test/mock/MockPort";
7
7
 
8
8
 
9
9
  export default {
10
- title: 'Passbolt/User/DeleteUser',
10
+ title: 'Passbolt Component/User/DeleteUser',
11
11
  component: DeleteUser
12
12
  };
13
13
 
@@ -513,7 +513,7 @@ class DeleteUserWithConflicts extends Component {
513
513
  <ul className="ownership-transfer-items">
514
514
  {this.foldersErrors.map(folderError =>
515
515
  <li key={folderError.id}>
516
- <div className="select-wrapper input required">
516
+ <div className={`select-wrapper input required ${this.state.processing ? 'disabled' : ''}`}>
517
517
  <label htmlFor="transfer_folder_owner">{folderError.name} (<Trans>Folder</Trans>) <Trans>new owner</Trans>:</label>
518
518
  <Select className="form-element" value={this.state.owners[folderError.id]} items={this.getAcoPermissionsList(folderError.id)} onChange={event => this.handleOnChangeOwner(event, folderError.id)}/>
519
519
  </div>
@@ -528,7 +528,7 @@ class DeleteUserWithConflicts extends Component {
528
528
  <ul className="ownership-transfer-items">
529
529
  {this.resourcesErrors.map(resourceError =>
530
530
  <li key={resourceError.id}>
531
- <div className="select-wrapper input required">
531
+ <div className={`select-wrapper input required ${this.state.processing ? 'disabled' : ''}`}>
532
532
  <label htmlFor="transfer_resource_owner">{resourceError.name} (<Trans>Password</Trans>) <Trans>new owner</Trans>:</label>
533
533
  <Select className="form-element" value={this.state.owners[resourceError.id]} items={this.getAcoPermissionsList(resourceError.id)} onChange={event => this.handleOnChangeOwner(event, resourceError.id)}/>
534
534
  </div>
@@ -543,7 +543,7 @@ class DeleteUserWithConflicts extends Component {
543
543
  <ul className="ownership-transfer-items">
544
544
  {this.groupsErrors.map(groupError =>
545
545
  <li key={groupError.id}>
546
- <div className="select-wrapper input required">
546
+ <div className={`select-wrapper input required ${this.state.processing ? 'disabled' : ''}`}>
547
547
  <label htmlFor="transfer_group_manager">{groupError.name} (<Trans>Group</Trans>) <Trans>new manager</Trans>:</label>
548
548
  <Select className="form-element" value={this.state.managers[groupError.id]} items={this.getGroupUsersList(groupError.id)} onChange={event => this.handleOnChangeManager(event, groupError.id)}/>
549
549
  </div>
@@ -7,7 +7,7 @@ import MockPort from "../../../test/mock/MockPort";
7
7
 
8
8
 
9
9
  export default {
10
- title: 'Passbolt/User/DeleteUserWithConflicts',
10
+ title: 'Passbolt Component/User/DeleteUserWithConflicts',
11
11
  component: DeleteUserWithConflicts
12
12
  };
13
13
 
@@ -40,21 +40,13 @@ class DisplayExpiredAccountRecovery extends Component {
40
40
  this.props.onClose();
41
41
  }
42
42
 
43
- /**
44
- * Get the translate function
45
- * @returns {function(...[*]=)}
46
- */
47
- get translate() {
48
- return this.props.t;
49
- }
50
-
51
43
  /**
52
44
  * Render the component
53
45
  * @returns {JSX}
54
46
  */
55
47
  render() {
56
48
  return (
57
- <DialogWrapper className="expired-account-recover-dialog" title={this.translate("Account recovery error")}
49
+ <DialogWrapper className="expired-account-recover-dialog" title={this.props.t("Account recovery error")}
58
50
  onClose={this.handleClose}>
59
51
  <div className="form-content">
60
52
  <p>