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
@@ -5,7 +5,7 @@ import CreateResourceFolder from "./CreateResourceFolder";
5
5
 
6
6
 
7
7
  export default {
8
- title: 'Passbolt/ResourceFolder/CreateResourceFolder',
8
+ title: 'Passbolt Component/ResourceFolder/CreateResourceFolder',
9
9
  component: CreateResourceFolder
10
10
  };
11
11
 
@@ -7,7 +7,7 @@ import MockPort from "../../../test/mock/MockPort";
7
7
 
8
8
 
9
9
  export default {
10
- title: 'Passbolt/ResourceFolder/DefineResourceFolderMoveStrategy',
10
+ title: 'Passbolt Component/ResourceFolder/DefineResourceFolderMoveStrategy',
11
11
  component: DefineResourceFolderMoveStrategy
12
12
  };
13
13
 
@@ -217,7 +217,7 @@ class DeleteResourceFolder extends Component {
217
217
  Are you sure you want to delete the folder <strong>{{folderName: this.state.name}}</strong>?
218
218
  </Trans>
219
219
  </p>
220
- <p><Trans>Warning: This action can’t be undone. Other users may lose access.</Trans></p>
220
+ <p><Trans>This action can’t be undone. Other users may lose access.</Trans></p>
221
221
  <div className="input checkbox">
222
222
  <input id="delete-cascade" type="checkbox" name="cascade" onChange={this.handleInputChange}
223
223
  autoFocus={true} disabled={this.hasAllInputDisabled()} />&nbsp;
@@ -7,7 +7,7 @@ import MockPort from "../../../test/mock/MockPort";
7
7
 
8
8
 
9
9
  export default {
10
- title: 'Passbolt/ResourceFolder/DeleteResourceFolder',
10
+ title: 'Passbolt Component/ResourceFolder/DeleteResourceFolder',
11
11
  component: DeleteResourceFolder
12
12
  };
13
13
 
@@ -318,7 +318,7 @@ class RenameResourceFolder extends Component {
318
318
  onClose={this.handleClose} disabled={this.hasAllInputDisabled()}>
319
319
  <form className="folder-rename-form" onSubmit={this.handleFormSubmit} noValidate>
320
320
  <div className="form-content">
321
- <div className={`input text required ${this.state.nameError ? "error" : ""}`}>
321
+ <div className={`input text required ${this.state.nameError ? "error" : ""} ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
322
322
  <label htmlFor="folder-name-input"><Trans>Folder name</Trans></label>
323
323
  <input id="folder-name-input" name="name"
324
324
  ref={this.nameRef}
@@ -7,7 +7,7 @@ import MockPort from "../../../test/mock/MockPort";
7
7
 
8
8
 
9
9
  export default {
10
- title: 'Passbolt/ResourceFolder/RenameResourceFolder',
10
+ title: 'Passbolt Component/ResourceFolder/RenameResourceFolder',
11
11
  component: RenameResourceFolder
12
12
  };
13
13
 
@@ -89,7 +89,7 @@ class DisplayResourceFolderDetails extends React.Component {
89
89
  </h3>
90
90
  <a className="dialog-close" onClick={this.handleCloseClick}>
91
91
  <Icon name="close"/>
92
- <span className="visuallyhidden">Close</span>
92
+ <span className="visuallyhidden"><Trans>Close</Trans></span>
93
93
  </a>
94
94
  </div>
95
95
  <DisplayResourceFolderDetailsInformation/>
@@ -7,7 +7,7 @@ import DisplayResourceFolderDetailsActivity from "./DisplayResourceFolderDetails
7
7
 
8
8
 
9
9
  export default {
10
- title: 'Passbolt/ResourceFolderDetails/DisplayResourceFolderDetailsActivity',
10
+ title: 'Passbolt Component/ResourceFolderDetails/DisplayResourceFolderDetailsActivity',
11
11
  component: DisplayResourceFolderDetailsActivity
12
12
  };
13
13
 
@@ -85,7 +85,7 @@ class DisplayResourceFolderDetailsInformation extends React.Component {
85
85
  formatDateTimeAgo(date) {
86
86
  const dateTime = DateTime.fromISO(date);
87
87
  const duration = dateTime.diffNow().toMillis();
88
- return duration > -1000 && duration < 0 ? this.translate('Just now') : dateTime.toRelative({locale: this.props.context.locale});
88
+ return duration > -1000 && duration < 0 ? this.props.t('Just now') : dateTime.toRelative({locale: this.props.context.locale});
89
89
  }
90
90
 
91
91
  /**
@@ -121,14 +121,6 @@ class DisplayResourceFolderDetailsInformation extends React.Component {
121
121
  return "";
122
122
  }
123
123
 
124
- /**
125
- * Get the translate function
126
- * @returns {function(...[*]=)}
127
- */
128
- get translate() {
129
- return this.props.t;
130
- }
131
-
132
124
  /**
133
125
  * Render the component
134
126
  * @returns {JSX}
@@ -5,7 +5,7 @@ import DisplayResourceFolderDetailsInformation from "./DisplayResourceFolderDeta
5
5
 
6
6
 
7
7
  export default {
8
- title: 'Passbolt/ResourceFolderDetails/DisplayResourceFolderDetailsInformation',
8
+ title: 'Passbolt Component/ResourceFolderDetails/DisplayResourceFolderDetailsInformation',
9
9
  component: DisplayResourceFolderDetailsInformation
10
10
  };
11
11
 
@@ -7,7 +7,7 @@ import DisplayResourceFolderDetailsPermissions from "./DisplayResourceFolderDeta
7
7
 
8
8
 
9
9
  export default {
10
- title: 'Passbolt/ResourceFolderDetails/DisplayResourceFolderDetailsPermissions',
10
+ title: 'Passbolt Component/ResourceFolderDetails/DisplayResourceFolderDetailsPermissions',
11
11
  component: DisplayResourceFolderDetailsPermissions
12
12
  };
13
13
 
@@ -117,7 +117,7 @@ class ConfigurePassphraseGenerator extends Component {
117
117
  render() {
118
118
  return (
119
119
  <>
120
- <div className="input text">
120
+ <div className={`input text ${this.props.disabled ? 'disabled' : ''}`}>
121
121
  <label htmlFor="configure-passphrase-generator-form-word-count"><Trans>Number of words</Trans></label>
122
122
  <div className="slider">
123
123
  <input
@@ -126,24 +126,26 @@ class ConfigurePassphraseGenerator extends Component {
126
126
  max={this.numberOfWords.max}
127
127
  value={this.numberOfWords.default}
128
128
  type="range"
129
- onChange={this.handleInputChange}/>
129
+ onChange={this.handleInputChange}
130
+ disabled={this.props.disabled}/>
130
131
  <input
131
132
  type="number"
132
133
  id="configure-passphrase-generator-form-word-count"
133
134
  name="word_count"
134
135
  min={this.numberOfWords.min} max={this.numberOfWords.max}
135
136
  value={this.numberOfWords.default}
136
- onChange={this.handleWordCountChange}/>
137
+ onChange={this.handleWordCountChange}
138
+ disabled={this.props.disabled}/>
137
139
  </div>
138
140
  </div>
139
- <div className="input text">
141
+ <div className={`input text ${this.props.disabled ? 'disabled' : ''}`}>
140
142
  <label htmlFor="configure-passphrase-generator-form-words-separator"><Trans>Words separator</Trans></label>
141
143
  <input type="text" id="configure-passphrase-generator-form-words-separator" name="separator" value={this.separator} onChange={this.handleInputChange}
142
- placeholder={this.translate("Type one or more characters")}/>
144
+ placeholder={this.translate("Type one or more characters")} disabled={this.props.disabled}/>
143
145
  </div>
144
- <div className="select-wrapper input">
146
+ <div className={`select-wrapper input ${this.props.disabled ? 'disabled' : ''}`}>
145
147
  <label htmlFor="configure-passphrase-generator-form-words-case"><Trans>Words case</Trans></label>
146
- <Select id="configure-passphrase-generator-form-words-case" name="word_case" items={this.wordCaseList} value={this.wordCase} onChange={this.handleInputChange}/>
148
+ <Select id="configure-passphrase-generator-form-words-case" name="word_case" items={this.wordCaseList} value={this.wordCase} onChange={this.handleInputChange} disabled={this.props.disabled}/>
147
149
  </div>
148
150
  </>
149
151
  );
@@ -153,6 +155,7 @@ class ConfigurePassphraseGenerator extends Component {
153
155
  ConfigurePassphraseGenerator.propTypes = {
154
156
  configuration: PropTypes.object, // The default generator configuration
155
157
  onChanged: PropTypes.func, // Called whenever the generator configuration changed
158
+ disabled: PropTypes.bool, // The disabled attribute
156
159
  t: PropTypes.func, // The translation function
157
160
  };
158
161
 
@@ -4,7 +4,7 @@ import ConfigurePassphraseGenerator from "./ConfigurePassphraseGenerator";
4
4
 
5
5
 
6
6
  export default {
7
- title: 'Passbolt/ResourcePassword/ConfigurePassphraseGenerator',
7
+ title: 'Passbolt Component/ResourcePassword/ConfigurePassphraseGenerator',
8
8
  component: ConfigurePassphraseGenerator
9
9
  };
10
10
 
@@ -13,7 +13,7 @@
13
13
  */
14
14
  import React 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 ConfigurePasswordGenerator extends React.Component {
19
19
  /**
@@ -121,7 +121,7 @@ class ConfigurePasswordGenerator extends React.Component {
121
121
  render() {
122
122
  return (
123
123
  <>
124
- <div className="input text">
124
+ <div className={`input text ${this.props.disabled ? 'disabled' : ''}`}>
125
125
  <label htmlFor="configure-password-generator-form-length">
126
126
  <Trans>Length</Trans>
127
127
  </label>
@@ -133,18 +133,20 @@ class ConfigurePasswordGenerator extends React.Component {
133
133
  value={this.length.default}
134
134
  step="1"
135
135
  type="range"
136
- onChange={this.handleLengthChanged}/>
136
+ onChange={this.handleLengthChanged}
137
+ disabled={this.props.disabled}/>
137
138
  <input
138
139
  id="configure-password-generator-form-length"
139
140
  type="number"
140
141
  min={this.length.min}
141
142
  max={this.length.max}
142
143
  value={this.length.default}
143
- onChange={this.handleLengthChanged}/>
144
+ onChange={this.handleLengthChanged}
145
+ disabled={this.props.disabled}/>
144
146
  </div>
145
147
  </div>
146
148
 
147
- <div className="input text">
149
+ <div className={`input text ${this.props.disabled ? 'disabled' : ''}`}>
148
150
  <label htmlFor="configure-password-generator-form-masks">
149
151
  <Trans>Character Types</Trans>
150
152
  </label>
@@ -154,7 +156,7 @@ class ConfigurePasswordGenerator extends React.Component {
154
156
  <button
155
157
  key={mask.name}
156
158
  className={`button button-toggle ${(mask.active || mask.required ? 'selected' : '')}`}
157
- onClick={event => this.handleMaskToggled(mask.name, event)}>
159
+ onClick={event => this.handleMaskToggled(mask.name, event)} disabled={this.props.disabled}>
158
160
  {mask.label}
159
161
  </button>
160
162
  ))
@@ -168,7 +170,8 @@ class ConfigurePasswordGenerator extends React.Component {
168
170
  type="checkbox"
169
171
  name="exclude-look-alike"
170
172
  checked={this.isExcludeLookAlikeCharacters}
171
- onChange={this.handleExcludeLookAlikeCharactersToggled}/>
173
+ onChange={this.handleExcludeLookAlikeCharactersToggled}
174
+ disabled={this.props.disabled}/>
172
175
  <label htmlFor="configure-password-generator-form-exclude-look-alike">
173
176
  <Trans>Exclude look-alike characters</Trans>
174
177
  </label>
@@ -182,7 +185,7 @@ class ConfigurePasswordGenerator extends React.Component {
182
185
  ConfigurePasswordGenerator.propTypes = {
183
186
  configuration: PropTypes.object, // The current generator options configuration
184
187
  onChanged: PropTypes.func, // Called whenever the generator configuration changed
185
- t: PropTypes.func, // The translation function
188
+ disabled: PropTypes.bool, // The disabled attribute
186
189
  };
187
190
 
188
- export default withTranslation('common')(ConfigurePasswordGenerator);
191
+ export default ConfigurePasswordGenerator;
@@ -19,7 +19,7 @@ import ConfigurePasswordGenerator from "./ConfigurePasswordGenerator";
19
19
 
20
20
 
21
21
  export default {
22
- title: 'Passbolt/ResourcePassword/ConfigurePasswordGenerator',
22
+ title: 'Passbolt Component/ResourcePassword/ConfigurePasswordGenerator',
23
23
  component: ConfigurePasswordGenerator
24
24
  };
25
25
 
@@ -182,7 +182,7 @@ class GenerateResourcePassword extends Component {
182
182
  onClose={this.handleClose}>
183
183
  <form onSubmit={this.handleSubmit} noValidate>
184
184
  <div className="form-content">
185
- <div className="input-password-wrapper input">
185
+ <div className={`input-password-wrapper input ${this.state.processing ? 'disabled' : ''}`}>
186
186
  <label htmlFor="generate-resource-password-form-password"><Trans>Password</Trans></label>
187
187
  <div className="password-button-inline">
188
188
  <Password
@@ -195,14 +195,15 @@ class GenerateResourcePassword extends Component {
195
195
  value={this.state.password}
196
196
  onChange={this.handleInputChange}
197
197
  disabled={this.state.processing}/>
198
- <a onClick={this.handleGeneratePassword} className="password-generate button-icon button">
198
+ <a onClick={this.handleGeneratePassword}
199
+ className={`password-generate button-icon button ${this.state.processing ? 'disabled' : ''}`}>
199
200
  <Icon name='dice' big={true}/>
200
- <span className="visually-hidden">generate</span>
201
+ <span className="visually-hidden"><Trans>Generate</Trans></span>
201
202
  </a>
202
203
  <a onClick={this.handleCopyPassword}
203
- className={`copy-to-clipboard button button-icon`}>
204
+ className={`copy-to-clipboard button button-icon ${this.state.processing ? 'disabled' : ''}`}>
204
205
  <Icon name='copy-to-clipboard' big={true}/>
205
- <span className="visually-hidden">view</span>
206
+ <span className="visually-hidden"><Trans>View</Trans></span>
206
207
  </a>
207
208
  </div>
208
209
  <PasswordComplexity entropy={passwordEntropy}/>
@@ -218,12 +219,14 @@ class GenerateResourcePassword extends Component {
218
219
  {generator.type === "password" &&
219
220
  <ConfigurePasswordGenerator
220
221
  configuration={this.state.generator}
221
- onChanged={this.handleGeneratorChanged}/>
222
+ onChanged={this.handleGeneratorChanged}
223
+ disabled={this.state.processing}/>
222
224
  }
223
225
  {generator.type === "passphrase" &&
224
226
  <ConfigurePassphraseGenerator
225
227
  configuration={this.state.generator}
226
- onChanged={this.handleGeneratorChanged}/>
228
+ onChanged={this.handleGeneratorChanged}
229
+ disabled={this.state.processing}/>
227
230
  }
228
231
  </Tab>
229
232
  )}
@@ -20,7 +20,7 @@ import MockPort from "../../../test/mock/MockPort";
20
20
 
21
21
 
22
22
  export default {
23
- title: 'Passbolt/ResourcePassword/GenerateResourcePassword',
23
+ title: 'Passbolt Component/ResourcePassword/GenerateResourcePassword',
24
24
  component: GenerateResourcePassword
25
25
  };
26
26
 
@@ -118,7 +118,7 @@ class DeleteResourceTag extends Component {
118
118
  render() {
119
119
  return (
120
120
  <DialogWrapper
121
- title="Delete tag?"
121
+ title={this.translate("Delete tag?")}
122
122
  onClose={this.handleCloseClick}
123
123
  disabled={this.state.processing}
124
124
  className="delete-tag-dialog">
@@ -129,7 +129,7 @@ class DeleteResourceTag extends Component {
129
129
  Are you sure you want to delete the tag <strong>{{tagName: this.props.context.tagToDelete.slug}}</strong>?
130
130
  </Trans>
131
131
  </p>
132
- <p><Trans>Warning: Once the tag is deleted, it’ll be removed permanently and will not be recoverable.</Trans></p>
132
+ <p><Trans>Once the tag is deleted, it’ll be removed permanently and will not be recoverable.</Trans></p>
133
133
  </div>
134
134
  <div className="submit-wrapper clearfix">
135
135
  <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/ResourceTag/DeleteResourceTag',
10
+ title: 'Passbolt Component/ResourceTag/DeleteResourceTag',
11
11
  component: DeleteResourceTag
12
12
  };
13
13
 
@@ -264,7 +264,7 @@ class EditResourceTag extends Component {
264
264
  className="edit-tag-dialog">
265
265
  <form onSubmit={this.handleFormSubmit} noValidate>
266
266
  <div className="form-content">
267
- <div className={`input text required ${this.state.nameError ? "error" : ""}`}>
267
+ <div className={`input text required ${this.state.nameError ? "error" : ""} ${this.hasAllInputDisabled() ? 'disabled' : ''}`}>
268
268
  <label htmlFor="edit-tag-form-name"><Trans>Tag name</Trans></label>
269
269
  <input id="edit-tag-form-name" name="name" type="text" value={this.state.name}
270
270
  onKeyUp={this.handleNameInputKeyUp} onChange={this.handleInputChange}
@@ -7,7 +7,7 @@ import MockPort from "../../../test/mock/MockPort";
7
7
 
8
8
 
9
9
  export default {
10
- title: 'Passbolt/ResourceTag/EditResourceTag',
10
+ title: 'Passbolt Component/ResourceTag/EditResourceTag',
11
11
  component: EditResourceTag
12
12
  };
13
13
 
@@ -89,7 +89,7 @@ class EditResourceTags extends React.Component {
89
89
  }
90
90
 
91
91
  componentDidMount() {
92
- document.addEventListener('click', this.handleEditorClickEvent);
92
+ document.addEventListener('click', this.handleEditorClickEvent, {capture: true});
93
93
  this.fetchAllTags();
94
94
  this.setState({loading: false}, () => {
95
95
  this.focusOnInputTag();
@@ -97,7 +97,7 @@ class EditResourceTags extends React.Component {
97
97
  }
98
98
 
99
99
  componentWillUnmount() {
100
- document.removeEventListener('click', this.handleEditorClickEvent);
100
+ document.removeEventListener('click', this.handleEditorClickEvent, {capture: true});
101
101
  }
102
102
 
103
103
  focusOnInputTag() {
@@ -15,7 +15,7 @@ import React from "react";
15
15
  import PropTypes from "prop-types";
16
16
  import {ResourceWorkspaceFilterTypes, withResourceWorkspace} from "../../../contexts/ResourceWorkspaceContext";
17
17
  import {withRouter} from "react-router-dom";
18
- import {Trans, withTranslation} from "react-i18next";
18
+ import {Trans} from "react-i18next";
19
19
  import Icon from "../../../../shared/components/Icons/Icon";
20
20
 
21
21
  class EditResourceTagsItemViewer extends React.Component {
@@ -58,14 +58,6 @@ class EditResourceTagsItemViewer extends React.Component {
58
58
  return null;
59
59
  }
60
60
 
61
- /**
62
- * Get the translate function
63
- * @returns {function(...[*]=)}
64
- */
65
- get translate() {
66
- return this.props.t;
67
- }
68
-
69
61
  /**
70
62
  * Render the component
71
63
  * @returns {JSX}
@@ -107,7 +99,6 @@ EditResourceTagsItemViewer.propTypes = {
107
99
  toggleInputTagEditor: PropTypes.func,
108
100
  resourceWorkspaceContext: PropTypes.any,
109
101
  history: PropTypes.any,
110
- t: PropTypes.func, // The translation function
111
102
  };
112
103
 
113
- export default withRouter(withResourceWorkspace(withTranslation('common')(EditResourceTagsItemViewer)));
104
+ export default withRouter(withResourceWorkspace(EditResourceTagsItemViewer));
@@ -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
 
17
18
  import FormSubmitButton from "../Common/Inputs/FormSubmitButton/FormSubmitButton";
@@ -60,7 +61,7 @@ class ShareDialog extends Component {
60
61
  const permissions = this.shareChanges.aggregatePermissionsByAro();
61
62
  this.setState({loading: false, name: '', permissions: permissions}, () => {
62
63
  // scroll at the top of the permission list
63
- this.permissionListRef.current.scrollTop = 0;
64
+ this.permissionListRef.current.scrollTo(0);
64
65
  });
65
66
  }
66
67
 
@@ -97,6 +98,9 @@ class ShareDialog extends Component {
97
98
 
98
99
  this.handlePermissionUpdate = this.handlePermissionUpdate.bind(this);
99
100
  this.handlePermissionDelete = this.handlePermissionDelete.bind(this);
101
+
102
+ this.renderItem = this.renderItem.bind(this);
103
+ this.renderContainer = this.renderContainer.bind(this);
100
104
  }
101
105
 
102
106
  /**
@@ -210,7 +214,7 @@ class ShareDialog extends Component {
210
214
  permissions.push(permission);
211
215
  this.setState({permissions: permissions}, () => {
212
216
  // scroll at the bottom of the permission list
213
- this.permissionListRef.current.scrollTop = this.permissionListRef.current.scrollHeight;
217
+ this.permissionListRef.current.scrollTo(this.state.permissions.length - 1);
214
218
  });
215
219
  }
216
220
 
@@ -267,12 +271,70 @@ class ShareDialog extends Component {
267
271
  * @returns {Promise<Object>} aros,
268
272
  */
269
273
  async fetchAutocompleteItems(keyword) {
270
- const ids = this.props.context.shareDialogProps.resourcesIds || this.props.context.shareDialogProps.foldersIds;
271
- const items = await this.props.context.port.request('passbolt.share.search-aros', keyword, ids);
272
- return items.filter(item => {
273
- const found = this.state.permissions.filter(permission => (permission.aro.id === item.id));
274
- return found.length === 0;
274
+ keyword = keyword.toLowerCase();
275
+ const words = (keyword && keyword.split(/\s+/)) || [''];
276
+ // Test match of some escaped test words against the name / username
277
+ const escapeWord = word => word.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
278
+ const wordToRegex = word => new RegExp(escapeWord(word), 'i');
279
+ const matchWord = (word, value) => wordToRegex(word).test(value);
280
+
281
+ const matchUsernameProperty = (word, user) => matchWord(word, user.username);
282
+ const matchNameProperty = (word, user) => matchWord(word, user.profile.first_name) || matchWord(word, user.profile.last_name);
283
+ const matchUser = (word, user) => matchUsernameProperty(word, user) || matchNameProperty(word, user);
284
+ const matchUserText = user => words.every(word => matchUser(word, user));
285
+
286
+ const matchGroup = (word, group) => matchWord(word, group.name);
287
+ const matchGroupText = group => words.every(word => matchGroup(word, group));
288
+
289
+ const permissions = this.state.permissions;
290
+
291
+ const hasPermissionsOnResources = aro_id =>
292
+ permissions.some(permission => permission.id === aro_id);
293
+
294
+ let currentcount = 0;
295
+ const groups = this.props.context.groups.filter(group => {
296
+ const isMatching = currentcount < Autocomplete.DISPLAY_LIMIT
297
+ && matchGroupText(group)
298
+ && !hasPermissionsOnResources(group.id);
299
+
300
+ if (isMatching) {
301
+ currentcount++;
302
+ }
303
+
304
+ return isMatching;
275
305
  });
306
+
307
+ const users = this.props.context.users.filter(user => {
308
+ const isMatching = currentcount < Autocomplete.DISPLAY_LIMIT
309
+ && user.active === true
310
+ && matchUserText(user)
311
+ && !hasPermissionsOnResources(user.id);
312
+
313
+ if (isMatching) {
314
+ currentcount++;
315
+ }
316
+
317
+ return isMatching;
318
+ });
319
+
320
+ await Promise.all(users.map(async user => {
321
+ if (!user.gpgkey) {
322
+ user.gpgkey = {
323
+ fingerprint: await this.getFingerprintForUser(user.id)
324
+ };
325
+ }
326
+ }));
327
+ return [...users, ...groups];
328
+ }
329
+
330
+ /**
331
+ * Find a user gpg key
332
+ * @param {string} userId
333
+ * @returns {Promise<object>}
334
+ */
335
+ async getFingerprintForUser(userId) {
336
+ const keyInfo = await this.props.context.port.request('passbolt.keyring.get-public-key-info-by-user', userId);
337
+ return keyInfo.fingerprint;
276
338
  }
277
339
 
278
340
  /**
@@ -419,6 +481,45 @@ class ShareDialog extends Component {
419
481
  return this.hasNoOwner() || this.hasAllInputDisabled() || !this.hasChanges();
420
482
  }
421
483
 
484
+ /**
485
+ * Use to render a single item of the share permission list
486
+ * @param {integer} index of the item in the source list
487
+ * @param {integer} key index of the HTML element in the ReactList
488
+ * @returns {JSX.Element}
489
+ */
490
+ renderItem(index, key) {
491
+ const permission = this.state.permissions[index];
492
+ const sharePermissionItemKey = permission.aro.id;
493
+ return (
494
+ <SharePermissionItem
495
+ id={permission.aro.id}
496
+ key={sharePermissionItemKey}
497
+ aro={permission.aro}
498
+ permissionType={permission.type}
499
+ variesDetails={permission.variesDetails}
500
+ updated={permission.updated}
501
+ disabled={this.hasAllInputDisabled()}
502
+ onUpdate={this.handlePermissionUpdate}
503
+ onDelete={this.handlePermissionDelete}
504
+ isLastItemDisplayed={key >= 2}
505
+ />
506
+ );
507
+ }
508
+
509
+ /**
510
+ * Use to render the container of the list of the ReactList component
511
+ * @param {Array<JSX.Element>} items the list of the items to be rendered as children element of the conainer
512
+ * @param {*} ref the ref ReactList needs to manage the scroll
513
+ * @returns {JSX.Element}
514
+ */
515
+ renderContainer(items, ref) {
516
+ return (
517
+ <ul className="permissions" ref={ref}>
518
+ {items}
519
+ </ul>
520
+ );
521
+ }
522
+
422
523
  /**
423
524
  * Get the translate function
424
525
  * @returns {function(...[*]=)}
@@ -440,28 +541,24 @@ class ShareDialog extends Component {
440
541
  onClose={this.handleClose}
441
542
  disabled={this.hasAllInputDisabled()}>
442
543
  <form className="share-form" onSubmit={this.handleFormSubmit} noValidate>
443
- <div className="form-content permission-edit">
544
+ <div className="form-content scroll permission-edit">
444
545
  {(this.state.loading) &&
445
- <ul className="permissions scroll">
546
+ <ul className="permissions">
446
547
  <SharePermissionItemSkeleton/>
447
548
  <SharePermissionItemSkeleton/>
448
549
  <SharePermissionItemSkeleton/>
449
550
  </ul>
450
551
  }
451
552
  {!(this.state.loading) &&
452
- <ul className="permissions scroll" ref={this.permissionListRef}>
453
- {(this.state.permissions && (this.state.permissions).map((permission, key) => <SharePermissionItem
454
- id={permission.aro.id}
455
- key={key}
456
- aro={permission.aro}
457
- permissionType={permission.type}
458
- variesDetails={permission.variesDetails}
459
- updated={permission.updated}
460
- disabled={this.hasAllInputDisabled()}
461
- onUpdate={this.handlePermissionUpdate}
462
- onDelete={this.handlePermissionDelete}
463
- />))}
464
- </ul>
553
+ <ReactList
554
+ itemRenderer={this.renderItem}
555
+ itemsRenderer={this.renderContainer}
556
+ length={this.state.permissions.length}
557
+ minSize={this.props.listMinSize}
558
+ type={this.state.permissions.length < 3 ? "simple" : "uniform"}
559
+ ref={this.permissionListRef}
560
+ threshold={30}>
561
+ </ReactList>
465
562
  }
466
563
  </div>
467
564
  {(this.hasNoOwner()) &&
@@ -498,12 +595,17 @@ class ShareDialog extends Component {
498
595
  }
499
596
  }
500
597
 
598
+ ShareDialog.defaultProps = {
599
+ listMinSize: 4
600
+ };
601
+
501
602
  ShareDialog.propTypes = {
502
603
  context: PropTypes.any, // The application context
503
604
  onClose: PropTypes.func,
504
605
  resourceWorkspaceContext: PropTypes.any, // The resource workspace context
505
606
  actionFeedbackContext: PropTypes.any, // The action feedback context
506
607
  dialogContext: PropTypes.any, // The dialog context
608
+ listMinSize: PropTypes.number, // The minimum size to be renderered in the permission list
507
609
  t: PropTypes.func, // The translation function
508
610
  };
509
611