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
@@ -12,6 +12,7 @@
12
12
  * @since 2.13.0
13
13
  */
14
14
  import React, {Component} from "react";
15
+ import ReactList from "react-list";
15
16
  import PropTypes from "prop-types";
16
17
  import {withAppContext} from "../../../contexts/AppContext";
17
18
  import {withActionFeedback} from "../../../contexts/ActionFeedbackContext";
@@ -21,13 +22,11 @@ import FormSubmitButton from "../../Common/Inputs/FormSubmitButton/FormSubmitBut
21
22
  import FormCancelButton from "../../Common/Inputs/FormSubmitButton/FormCancelButton";
22
23
  import NotifyError from "../../Common/Error/NotifyError/NotifyError";
23
24
  import {withUserWorkspace} from "../../../contexts/UserWorkspaceContext";
24
- import UserAvatar from "../../Common/Avatar/UserAvatar";
25
- import Icon from "../../../../shared/components/Icons/Icon";
26
25
  import Autocomplete from "../../Common/Inputs/Autocomplete/Autocomplete";
27
26
  import {withRouter} from "react-router-dom";
28
27
  import {Trans, withTranslation} from "react-i18next";
29
- import Tooltip from "../../Common/Tooltip/Tooltip";
30
- import Select from "../../Common/Select/Select";
28
+ import SharePermissionItemSkeleton from "../../Share/SharePermissionItemSkeleton";
29
+ import EditUserGroupItem from "./EditUserGroupItem";
31
30
 
32
31
  /**
33
32
  * This component allows to edit an user group
@@ -88,11 +87,11 @@ class EditUserGroup extends Component {
88
87
  this.references = {
89
88
  name: React.createRef()
90
89
  };
90
+ this.listRef = React.createRef();
91
91
  }
92
92
 
93
93
  /**
94
94
  * Binds the component handlers
95
- * @return {void}
96
95
  */
97
96
  bindHandlers() {
98
97
  this.handleSubmit = this.handleSubmit.bind(this);
@@ -104,24 +103,24 @@ class EditUserGroup extends Component {
104
103
  this.handleAutocompleteClose = this.handleAutocompleteClose.bind(this);
105
104
  this.handleAutocompleteOpen = this.handleAutocompleteOpen.bind(this);
106
105
  this.fetchAutocompleteItems = this.fetchAutocompleteItems.bind(this);
106
+
107
+ this.renderItem = this.renderItem.bind(this);
107
108
  }
108
109
 
109
110
  /**
110
111
  * Populate the component with initial data
111
- * @return {Promise<void>}
112
112
  */
113
- async populate() {
113
+ populate() {
114
114
  const name = this.groupToEdit.name;
115
115
  const groupsUsers = JSON.parse(JSON.stringify(this.groupToEdit.groups_users)); // Clone the groups users to not alter the original
116
- await Promise.all(groupsUsers.map(this.decorateGroupUserWithUser.bind(this)));
116
+ groupsUsers.map(this.decorateGroupUserWithUser.bind(this));
117
117
  this.sortGroupsUsersAlphabeticallyByUserFullName(groupsUsers);
118
- await this.setState({groupToEdit: {name, groupsUsers}});
118
+ this.setState({groupToEdit: {name, groupsUsers}});
119
119
  }
120
120
 
121
121
  /**
122
122
  * Sort a list of groups users by their
123
123
  * @param {array} groupsUsers
124
- * @returns {void}
125
124
  */
126
125
  sortGroupsUsersAlphabeticallyByUserFullName(groupsUsers) {
127
126
  const sortGroupsUsersAlphabeticallyByUserFullName = (groupUserA, groupUserB) => this.getUserFullname(groupUserA.user).localeCompare(this.getUserFullname(groupUserB.user));
@@ -131,22 +130,19 @@ class EditUserGroup extends Component {
131
130
  /**
132
131
  * Decorate a group user with its associated user
133
132
  * @param {Object} groupUser The group user to decorate
134
- * @returns {Promise<object>}
135
133
  */
136
- async decorateGroupUserWithUser(groupUser) {
137
- groupUser.user = await this.findUser(groupUser.user_id);
134
+ decorateGroupUserWithUser(groupUser) {
135
+ groupUser.user = this.findUser(groupUser.user_id);
138
136
  return groupUser;
139
137
  }
140
138
 
141
139
  /**
142
140
  * Find a user
143
141
  * @param {string} userId
144
- * @returns {Promise<object>}
142
+ * @returns {object}
145
143
  */
146
- async findUser(userId) {
147
- const user = this.props.context.users.find(user => user.id === userId);
148
- user.gpgkey = await this.findUserGpgkey(user.id);
149
- return user;
144
+ findUser(userId) {
145
+ return this.props.context.users.find(user => user.id === userId);
150
146
  }
151
147
 
152
148
  /**
@@ -197,7 +193,7 @@ class EditUserGroup extends Component {
197
193
  * @type {boolean}
198
194
  */
199
195
  get areActionsAllowed() {
200
- return !this.isProcessing;
196
+ return !this.isProcessing && !this.isLoading;
201
197
  }
202
198
 
203
199
  /**
@@ -261,46 +257,43 @@ class EditUserGroup extends Component {
261
257
 
262
258
  /**
263
259
  * Whenever the group name change
264
- * @return {Promise<void>}
265
260
  */
266
- async handleNameChange(event) {
267
- await this.updateName(event.target.value);
261
+ handleNameChange(event) {
262
+ this.updateName(event.target.value);
268
263
  }
269
264
 
270
265
  /**
271
266
  * Whenever a member's permission has changed
272
267
  * @param {Event} event A select DOM event
273
268
  * @param {object} groupUser A group user
274
- * @return {Promise<void>}
275
269
  */
276
- async handleMemberRoleChange(event, groupUser) {
270
+ handleMemberRoleChange(event, groupUser) {
277
271
  const isManager = event.target.value === true;
278
- await this.updateMemberRole(groupUser, isManager);
272
+ this.updateMemberRole(groupUser, isManager);
279
273
  }
280
274
 
281
275
  /**
282
276
  * Whenever a member's is removed from the group
283
277
  * @param {Event} event A click DOM event
284
278
  * @param {object} groupUser A group user
285
- * @return {Promise<void>}
286
279
  */
287
- async handleMemberRemoved(event, groupUser) {
288
- await this.removeMember(groupUser);
280
+ handleMemberRemoved(event, groupUser) {
281
+ this.removeMember(groupUser);
289
282
  }
290
283
 
291
284
  /**
292
285
  * Whenever the user wants to submit the changes
293
286
  * @param {Event} event A submit DOM event
294
- * @return {Promise<void>}
287
+ * @returns {Promise<void>}
295
288
  */
296
289
  async handleSubmit(event) {
297
290
  event.preventDefault();
298
291
 
299
- await this.resetErrors();
292
+ this.resetErrors();
300
293
  const actions = Object.assign(this.state.actions, {processing: true});
301
294
  this.setState({actions});
302
295
 
303
- await this.validate();
296
+ this.validate();
304
297
  if (this.hasErrors()) {
305
298
  return this.handleValidateError();
306
299
  }
@@ -325,7 +318,6 @@ class EditUserGroup extends Component {
325
318
 
326
319
  /**
327
320
  * Focus the field of the form which is in error state.
328
- * @return {void}
329
321
  */
330
322
  focusFieldError() {
331
323
  if (this.hasErrors("name")) {
@@ -335,7 +327,6 @@ class EditUserGroup extends Component {
335
327
 
336
328
  /**
337
329
  * Whenever the user will to close the dialog
338
- * @return {void}
339
330
  */
340
331
  handleClose() {
341
332
  this.close();
@@ -343,7 +334,6 @@ class EditUserGroup extends Component {
343
334
 
344
335
  /**
345
336
  * handleAutocompleteOpen
346
- * @return {void}
347
337
  */
348
338
  handleAutocompleteOpen() {
349
339
  this.setState({autocompleteOpen: true});
@@ -351,7 +341,6 @@ class EditUserGroup extends Component {
351
341
 
352
342
  /**
353
343
  * handleAutocompleteClose
354
- * @return {void}
355
344
  */
356
345
  handleAutocompleteClose() {
357
346
  this.setState({autocompleteOpen: false});
@@ -362,16 +351,15 @@ class EditUserGroup extends Component {
362
351
  * What happens when an item in the autocomplete list is selected
363
352
  * e.g. if it's not already in the list, add it and scroll
364
353
  * @param {object} user The selected user
365
- * @return {void}
366
354
  */
367
- async handleAutocompleteSelect(user) {
355
+ handleAutocompleteSelect(user) {
368
356
  const groupUser = this.groupToEdit.groups_users.find(groupUser => groupUser.user_id === user.id);
369
357
  // Case of previously deleted member and re-added
370
358
  if (groupUser) {
371
- await this.restoreMember(groupUser);
359
+ this.restoreMember(groupUser);
372
360
  } else {
373
361
  // Case of fresh member
374
- await this.addMember(user);
362
+ this.addMember(user);
375
363
  }
376
364
  }
377
365
 
@@ -387,7 +375,7 @@ class EditUserGroup extends Component {
387
375
  /**
388
376
  * Returns true if the group user membership has changed.
389
377
  * @param {object} groupUser the group user
390
- * @return {boolean}
378
+ * @returns {boolean}
391
379
  */
392
380
  isMemberChanged(groupUser) {
393
381
  const originalGroupUser = this.groupToEdit.groups_users.find(originalGroupUser => originalGroupUser.id === groupUser.id);
@@ -396,7 +384,7 @@ class EditUserGroup extends Component {
396
384
 
397
385
  /**
398
386
  * Returns true of the member has been added
399
- * @return {boolean}
387
+ * @returns {boolean}
400
388
  */
401
389
  isMemberAdded(groupUser) {
402
390
  return groupUser.id === undefined;
@@ -405,90 +393,90 @@ class EditUserGroup extends Component {
405
393
  /**
406
394
  * Changes the group name
407
395
  * @param name The new name
408
- * @return {Promise<*>}
409
396
  */
410
- async updateName(name) {
411
- await this.setState({groupToEdit: Object.assign({}, this.state.groupToEdit, {name})});
397
+ updateName(name) {
398
+ this.setState({groupToEdit: Object.assign({}, this.state.groupToEdit, {name})});
412
399
  if (this.state.validation.hasAlreadyBeenValidated) {
413
- await this.validateName();
400
+ this.validateName();
414
401
  }
415
402
  }
416
403
 
417
404
  /**
418
405
  * Changes the group groups users
419
406
  * @param {array} The new groups users
420
- * @return {Promise<*>}
407
+ * @param {boolean} shouldScrollToEnd if true triggers a scroll to the end of the list
421
408
  */
422
- async updateGroupsUsers(groupsUsers) {
409
+ updateGroupsUsers(groupsUsers, shouldScrollToEnd) {
423
410
  const groupToEdit = Object.assign({}, this.state.groupToEdit, {groups_users: groupsUsers});
424
- this.setState({groupToEdit});
411
+ this.setState({groupToEdit}, () => {
412
+ if (shouldScrollToEnd) {
413
+ // scroll at the bottom of the group users list
414
+ this.listRef.current.scrollTo(this.groupsUsers.length - 1);
415
+ }
416
+ });
425
417
  }
426
418
 
427
419
  /**
428
420
  * Update a member's group membership role
429
421
  * @param {object} groupUserToUpdate The group user whose permission will be updated
430
422
  * @param {boolean} isManager True if the members will be a group manager
431
- * @retrurn {Promise<*>}
432
423
  */
433
- async updateMemberRole(groupUserToUpdate, isManager) {
424
+ updateMemberRole(groupUserToUpdate, isManager) {
434
425
  const indexToUpdate = this.groupsUsers.findIndex(groupUser => groupUser.user_id === groupUserToUpdate.user_id);
435
426
  groupUserToUpdate.is_admin = isManager;
436
427
  this.groupsUsers[indexToUpdate] = groupUserToUpdate;
437
- return this.updateGroupsUsers(this.groupsUsers);
428
+ this.updateGroupsUsers(this.groupsUsers);
438
429
  }
439
430
 
440
431
  /**
441
432
  * Add a user to the member list
442
433
  * @param {object} user The user to create a new group membership for
443
- * @retrurn {Promise<*>}
444
434
  */
445
- async addMember(user) {
435
+ addMember(user) {
446
436
  const mustBeAdmin = !this.hasManager;
447
437
  const groupUser = {user_id: user.id, is_admin: mustBeAdmin};
448
- await this.decorateGroupUserWithUser(groupUser);
438
+ this.decorateGroupUserWithUser(groupUser);
449
439
  this.groupsUsers.push(groupUser);
450
- return this.updateGroupsUsers(this.groupsUsers);
440
+ this.updateGroupsUsers(this.groupsUsers, true);
451
441
  }
452
442
 
453
443
  /**
454
444
  * Restore a previously removed group user to the list
455
445
  * @param {object} groupUserToRestore The group user to restore
456
- * @retrurn {Promise<*>}
457
446
  */
458
- async restoreMember(groupUserToRestore) {
459
- await this.decorateGroupUserWithUser(groupUserToRestore);
447
+ restoreMember(groupUserToRestore) {
448
+ this.decorateGroupUserWithUser(groupUserToRestore);
460
449
  this.groupsUsers.push(groupUserToRestore);
461
- return this.updateGroupsUsers(this.groupsUsers);
450
+ this.updateGroupsUsers(this.groupsUsers, true);
462
451
  }
463
452
 
464
453
  /**
465
454
  * Removes a member from the list
466
455
  * @param {object} groupUserToRemove The group user to remove
467
456
  */
468
- async removeMember(groupUserToRemove) {
457
+ removeMember(groupUserToRemove) {
469
458
  const indexToRemove = this.groupsUsers.findIndex(groupUser => groupUser.user_id === groupUserToRemove.user_id);
470
- const groupsUsers = this.groupsUsers.splice(indexToRemove, 1);
471
- return this.updateGroupsUsers(groupsUsers);
459
+ const groupsUsers = this.groupsUsers;
460
+ groupsUsers.splice(indexToRemove, 1);
461
+ this.updateGroupsUsers(groupsUsers);
472
462
  }
473
463
 
474
464
  /**
475
465
  * Validate the form
476
- * @return {Promise<void>}
477
466
  */
478
- async validate() {
479
- await this.validateName();
480
- await this.setState({validation: Object.assign({}, this.state.validation, {hasAlreadyBeenValidated: true})});
467
+ validate() {
468
+ this.validateName();
469
+ this.setState({validation: Object.assign({}, this.state.validation, {hasAlreadyBeenValidated: true})});
481
470
  }
482
471
 
483
472
  /**
484
473
  * Validates the group name
485
- * @return {Promise<void>}
486
474
  */
487
- async validateName() {
488
- await this.resetErrors("name");
475
+ validateName() {
476
+ this.resetErrors("name");
489
477
  const name = this.state.groupToEdit.name;
490
478
  if (name.trim() === "") {
491
- await this.setError("name", "empty");
479
+ this.setError("name", "empty");
492
480
  }
493
481
  }
494
482
 
@@ -497,9 +485,8 @@ class EditUserGroup extends Component {
497
485
  * @param {string} domain The error namespace
498
486
  * @param {string} type The error type
499
487
  * @param {string|boolean?} value the error value
500
- * @returns {Promise<void>}
501
488
  */
502
- async setError(domain, type, value) {
489
+ setError(domain, type, value) {
503
490
  value = value || true;
504
491
  const errors = this.state.errors || {};
505
492
  errors[domain] = errors[domain] || {};
@@ -510,15 +497,14 @@ class EditUserGroup extends Component {
510
497
  /**
511
498
  * Reset the errors
512
499
  * @param {string?} domain (Optional) The domain to reset.
513
- * @returns {Promise<void>}
514
500
  */
515
- async resetErrors(domain) {
501
+ resetErrors(domain) {
516
502
  let errors = {};
517
503
  if (domain) {
518
504
  errors = this.state.errors;
519
505
  delete errors[domain];
520
506
  }
521
- await this.setState({errors});
507
+ this.setState({errors});
522
508
  }
523
509
 
524
510
  /**
@@ -548,12 +534,12 @@ class EditUserGroup extends Component {
548
534
  * @returns {*}
549
535
  */
550
536
  hasGroupNameAlreadyExists(errorData) {
551
- return errorData && errorData.body && errorData.body.name && errorData.body.name.group_unique;
537
+ return errorData?.body?.name?.group_unique;
552
538
  }
553
539
 
554
540
  /**
555
541
  * Edits the current group
556
- * @return {Promise<*>}
542
+ * @returns {Promise<void>}
557
543
  */
558
544
  async updateGroup() {
559
545
  const groupDto = {
@@ -580,14 +566,13 @@ class EditUserGroup extends Component {
580
566
 
581
567
  /**
582
568
  * Whenever the group has been updated successfully
583
- * @return {void}
584
569
  */
585
- async onEditFailure(error) {
570
+ onEditFailure(error) {
586
571
  // It can happen when the user has closed the passphrase entry dialog by instance.
587
572
  if (error.name === "UserAbortsOperationError") {
588
573
  this.setState({processing: false});
589
574
  } else if (this.hasGroupNameAlreadyExists(error.data)) {
590
- await this.setError("name", "alreadyExists");
575
+ this.setError("name", "alreadyExists");
591
576
  this.setState({processing: false});
592
577
  } else {
593
578
  // Unexpected error occurred.
@@ -600,7 +585,6 @@ class EditUserGroup extends Component {
600
585
  /**
601
586
  * Handle error to display the error dialog
602
587
  * @param {object} error The error
603
- * @return {void}
604
588
  */
605
589
  onError(error) {
606
590
  const errorDialogProps = {
@@ -659,32 +643,59 @@ class EditUserGroup extends Component {
659
643
  const matchUser = (word, user) => matchUsernameProperty(word, user) || matchNameProperty(word, user);
660
644
  const matchText = user => words.every(word => matchUser(word, user));
661
645
 
662
- const usersMatched = this.props.context.users.filter(user => user.active === true && !this.isMember(user))
663
- .filter(matchText);
664
- return this.decorateUsersWithGpgkey(usersMatched);
646
+ let currentCount = 0;
647
+ const firstUsersMatched = this.props.context.users.filter(user => {
648
+ const isUserMatching = currentCount < Autocomplete.DISPLAY_LIMIT
649
+ && user.active === true
650
+ && !this.isMember(user)
651
+ && matchText(user);
652
+
653
+ if (isUserMatching) {
654
+ currentCount++;
655
+ }
656
+ return isUserMatching;
657
+ });
658
+ return this.decorateUsersWithGpgkey(firstUsersMatched);
665
659
  }
666
660
 
667
661
  /**
668
- * Get the tooltip message
669
- * @param groupUser The group user
662
+ * Use to render a single item of the user group list
663
+ * @param {integer} index of the item in the source list
664
+ * @param {integer} key index of the HTML element in the ReactList
670
665
  * @returns {JSX.Element}
671
666
  */
672
- getTooltipMessage(groupUser) {
673
- return <>
674
- <div className="email"><strong>{groupUser.user.username}</strong></div>
675
- <div className="fingerprint">{this.formatFingerprint(groupUser.user.gpgkey.fingerprint)}</div>
676
- </>;
667
+ renderItem(index, key) {
668
+ const groupUser = this.groupsUsers[index];
669
+ const isMemberChanged = this.isMemberChanged(groupUser);
670
+ const isMemberAdded = this.isMemberAdded(groupUser);
671
+ const editUserGroupItemKey = groupUser.user_id;
672
+ return (
673
+ <EditUserGroupItem
674
+ key={editUserGroupItemKey}
675
+ itemKey={editUserGroupItemKey}
676
+ isMemberChanged={isMemberChanged}
677
+ isMemberAdded={isMemberAdded}
678
+ groupUser={groupUser}
679
+ onMemberRoleChange={this.handleMemberRoleChange}
680
+ onMemberRemoved={this.handleMemberRemoved}
681
+ areActionsAllowed={this.areActionsAllowed}
682
+ isLastItemDisplayed={key >= 2}
683
+ />
684
+ );
677
685
  }
678
686
 
679
687
  /**
680
- * Get permissions
681
- * @returns {[{label: *, value: boolean}]}
688
+ * Use to render the container of the list of the ReactList component
689
+ * @param {Array<JSX.Element>} items the list of the items to be rendered as children element of the conainer
690
+ * @param {*} ref the ref ReactList needs to manage the scrll
691
+ * @returns {JSX.Element}
682
692
  */
683
- get permissions() {
684
- return [
685
- {value: false, label: this.translate("Member")},
686
- {value: true, label: this.translate("Group manager")}
687
- ];
693
+ renderContainer(items, ref) {
694
+ return (
695
+ <ul className="permissions groups_users" ref={ref}>
696
+ {items}
697
+ </ul>
698
+ );
688
699
  }
689
700
 
690
701
  /**
@@ -706,14 +717,14 @@ class EditUserGroup extends Component {
706
717
  onClose={this.handleClose}
707
718
  disabled={!this.areActionsAllowed}>
708
719
 
709
- {!this.isLoading && this.props.context.loggedInUser &&
720
+ {this.props.context.loggedInUser &&
710
721
  <form
711
722
  className="group-form"
712
723
  onSubmit={this.handleSubmit}
713
724
  noValidate>
714
725
 
715
726
  <div className="form-content">
716
- <div className={`input text required ${this.hasErrors("name") ? "error" : ""}`}>
727
+ <div className={`input text required ${this.hasErrors("name") ? "error" : ""} ${!this.areActionsAllowed || !this.isLoggedInUserAdmin() ? 'disabled' : ''}`}>
717
728
  <label htmlFor="js_field_name"><Trans>Group name</Trans></label>
718
729
  <input
719
730
  id="group-name-input"
@@ -742,57 +753,27 @@ class EditUserGroup extends Component {
742
753
  </div>
743
754
 
744
755
  <div className="group_members">
745
- <div className="form-content permission-edit">
746
- <ul className="permissions scroll groups_users">
747
- {this.groupsUsers.map(groupUser => (
748
- <li
749
- key={groupUser.user_id}
750
- className={`row ${this.isMemberChanged(groupUser) ? 'permission-updated' : ''}`}>
751
-
752
- <UserAvatar
753
- baseUrl={this.props.context.userSettings.getTrustedDomain()}
754
- user={groupUser.user}/>
755
-
756
- <div className="aro">
757
- <div className="aro-name">
758
- <span className="ellipsis">{this.getUserFullname(groupUser.user)}</span>
759
- <Tooltip message={this.getTooltipMessage(groupUser)}>
760
- <Icon name="info-circle"/>
761
- </Tooltip>
762
- </div>
763
- <div className="permission_changes">
764
- {this.isMemberAdded(groupUser) && <span><Trans>Will be added</Trans></span>}
765
- {this.isMemberChanged(groupUser) && !this.isMemberAdded(groupUser) &&
766
- <span><Trans>Will be updated</Trans></span>}
767
- {!this.isMemberChanged(groupUser) && !this.isMemberAdded(groupUser) && <span><Trans>Unchanged</Trans></span>}
768
-
769
- </div>
770
- </div>
771
-
772
- <div className="rights">
773
- <Select
774
- className="permission inline"
775
- value={groupUser.is_admin}
776
- items={this.permissions}
777
- onChange={event => this.handleMemberRoleChange(event, groupUser)}
778
- disabled={!this.areActionsAllowed}/>
779
- </div>
780
-
781
- <div className="actions">
782
- <a
783
- title="remove"
784
- className={`remove-item button button-transparent ${!this.areActionsAllowed ? "disabled" : ""}`}
785
- onClick={event => this.handleMemberRemoved(event, groupUser)}>
786
- <Icon name="close"/>
787
- <span className="visuallyhidden">remove</span>
788
- </a>
789
- </div>
790
- </li>
791
- ))
792
- }
793
- </ul>
756
+ <div className="form-content scroll permission-edit">
757
+ {this.isLoading &&
758
+ <ul className="permissions groups_users">
759
+ <SharePermissionItemSkeleton/>
760
+ <SharePermissionItemSkeleton/>
761
+ <SharePermissionItemSkeleton/>
762
+ </ul>
763
+ }
764
+ {!this.isLoading &&
765
+ <ReactList
766
+ ref={this.listRef}
767
+ itemRenderer={this.renderItem}
768
+ itemsRenderer={this.renderContainer}
769
+ length={this.groupsUsers.length}
770
+ minSize={4}
771
+ type={this.groupsUsers.length < 3 ? "simple" : "uniform"}
772
+ threshold={30}>
773
+ </ReactList>
774
+ }
794
775
  </div>
795
- {!this.hasMembers &&
776
+ {!this.isLoading && !this.hasMembers &&
796
777
  <div className="message warning">
797
778
  <span><Trans>The group is empty, please add a group manager.</Trans></span>
798
779
  </div>
@@ -802,7 +783,7 @@ class EditUserGroup extends Component {
802
783
  <span><Trans>Please make sure there is at least one group manager.</Trans></span>
803
784
  </div>
804
785
  }
805
- {!this.isManager &&
786
+ {!this.isLoading && !this.isManager &&
806
787
  <div className="message warning feedback cannot-add-user">
807
788
  <span><Trans>Only the group manager can add new people to a group.</Trans></span>
808
789
  </div>
@@ -39,8 +39,12 @@ describe("See the Edit User Group", () => {
39
39
  const requestGpgMockImpl = jest.fn(() => mockGpgKey);
40
40
  requestMock = mockContextRequest(context, requestGpgMockImpl);
41
41
  page = new EditUserGroupTestPage(context, props);
42
+ jest.useFakeTimers();
42
43
  });
43
44
 
45
+ afterEach(() => {
46
+ jest.clearAllTimers();
47
+ });
44
48
 
45
49
  it('As AD I should change the name of the group', async() => {
46
50
  expect.assertions(3);
@@ -97,7 +101,10 @@ describe("See the Edit User Group", () => {
97
101
 
98
102
  expect(page.canAdd).toBeTruthy();
99
103
 
100
- await page.addGroupMember('dame');
104
+ await page.type('dame', page.usernameInput);
105
+ jest.runOnlyPendingTimers();
106
+ await waitFor(() => {});
107
+ await page.click(page.getAutocompleteItem(0));
101
108
 
102
109
  expect(page.groupMembersCount).toBe(3);
103
110
  expect(page.groupMember(3).name).toBe("Dame Steve Shirley");