passbolt-styleguide 3.3.3 → 3.4.0-alpha2

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 (485) hide show
  1. package/build/css/help.min.css +4 -4
  2. package/build/css/public.min.css +5 -6
  3. package/build/css/themes/default/api_authentication.min.css +3 -3
  4. package/build/css/themes/default/api_cloud.min.css +3 -7
  5. package/build/css/themes/default/api_main.min.css +4 -9
  6. package/build/css/themes/default/api_reports.min.css +4 -9
  7. package/build/css/themes/default/api_webinstaller.min.css +4 -9
  8. package/build/css/themes/default/ext_app.min.css +4 -9
  9. package/build/css/themes/default/ext_authentication.min.css +3 -3
  10. package/build/css/themes/default/ext_external.min.css +3 -3
  11. package/build/css/themes/default/ext_in_form_cta.min.css +9 -0
  12. package/build/css/themes/default/ext_in_form_menu.min.css +9 -0
  13. package/build/css/themes/default/ext_quickaccess.min.css +3 -3
  14. package/build/css/themes/midgar/api_authentication.min.css +9 -0
  15. package/build/css/themes/midgar/api_main.min.css +4 -9
  16. package/build/css/themes/midgar/api_reports.min.css +4 -9
  17. package/build/css/themes/midgar/ext_app.min.css +4 -9
  18. package/build/css/themes/midgar/ext_authentication.min.css +3 -3
  19. package/build/css/themes/midgar/ext_in_form_cta.min.css +9 -0
  20. package/build/css/themes/midgar/ext_in_form_menu.min.css +9 -0
  21. package/build/css/themes/midgar/ext_quickaccess.min.css +3 -3
  22. package/build/js/dist/api-app.js +1 -1
  23. package/build/js/dist/api-app.js.LICENSE.txt +5 -5
  24. package/build/js/dist/api-recover.js +1 -1
  25. package/build/js/dist/api-recover.js.LICENSE.txt +0 -28
  26. package/build/js/dist/api-setup.js +1 -1
  27. package/build/js/dist/api-setup.js.LICENSE.txt +0 -15
  28. package/build/js/dist/api-triage.js +1 -1
  29. package/build/js/dist/api-triage.js.LICENSE.txt +0 -14
  30. package/build/js/dist/api-vendors.js +1 -1
  31. package/build/js/dist/api-vendors.js.LICENSE.txt +146 -84
  32. package/package.json +31 -26
  33. package/src/img/controls/chevron-down_blue.svg +3 -0
  34. package/src/img/diagrams/functional_overview.png +0 -0
  35. package/src/img/diagrams/functional_overview.svg +4 -0
  36. package/src/img/diagrams/howitworks.svg +2797 -0
  37. package/src/img/diagrams/mobile-transfer.svg +296 -0
  38. package/src/img/diagrams/sequence_diagram_form_authenticate.png +0 -0
  39. package/src/img/diagrams/sequence_diagram_gpg_authenticate.png +0 -0
  40. package/src/img/diagrams/totp.svg +251 -0
  41. package/src/img/illustrations/pin_passbolt.gif +0 -0
  42. package/src/img/illustrations/wave-pin_my_extension.svg +1 -0
  43. package/src/img/logo/icon-32-badge-1.png +0 -0
  44. package/src/img/logo/icon-32-badge-2.png +0 -0
  45. package/src/img/logo/icon-32-badge-3.png +0 -0
  46. package/src/img/logo/icon-32-badge-4.png +0 -0
  47. package/src/img/logo/icon-32-badge-5+.png +0 -0
  48. package/src/img/logo/icon-32-badge-5.png +0 -0
  49. package/src/img/logo/icon-32-signout.png +0 -0
  50. package/src/img/logo/icon-badge-1.svg +1 -0
  51. package/src/img/logo/icon-badge-2.svg +1 -0
  52. package/src/img/logo/icon-badge-3.svg +1 -0
  53. package/src/img/logo/icon-badge-4.svg +1 -0
  54. package/src/img/logo/icon-badge-5+.svg +1 -0
  55. package/src/img/logo/icon-badge-5.svg +1 -0
  56. package/src/img/logo/icon-inactive.svg +1 -0
  57. package/src/img/logo/icon-without-badge.svg +1 -0
  58. package/src/img/third_party/ChromeWebStore_black.svg +1 -0
  59. package/src/img/third_party/ChromeWebStore_white.svg +1 -0
  60. package/src/img/third_party/edge-addon-black.svg +1 -0
  61. package/src/img/third_party/edge-addon-white.svg +1 -0
  62. package/src/locales/de-DE/common.json +820 -0
  63. package/src/locales/en-UK/common.json +86 -20
  64. package/src/locales/fr/common.json +750 -0
  65. package/src/locales/fr-FR/common.json +92 -22
  66. package/src/locales/sv-SE/common.json +820 -0
  67. package/src/react-extension/ExtApp.js +16 -10
  68. package/src/react-extension/ExtBootstrapApp.js +1 -0
  69. package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.js +2 -2
  70. package/src/react-extension/components/Administration/DisplayAdministrationMenu/DisplayAdministrationMenu.test.js +2 -2
  71. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.js +1 -1
  72. package/src/react-extension/components/Administration/DisplayAdministrationWorkspaceBreadcrumb/DisplayAdministrationWorkspaceBreadcrumb.test.js +1 -1
  73. package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.js +22 -8
  74. package/src/react-extension/components/Administration/DisplayEmailNotificationsAdministration/DisplayEmailNotificationsAdministration.test.data.js +3 -0
  75. package/src/react-extension/components/Administration/DisplayInternationalizationAdministration/DisplayInternationalizationAdministration.js +10 -8
  76. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.js +21 -19
  77. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.page.js +6 -6
  78. package/src/react-extension/components/Administration/DisplayMfaAdministration/DisplayMfaAdministration.test.stories.js +0 -1
  79. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.js +1 -1
  80. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.js +1 -1
  81. package/src/react-extension/components/Administration/DisplaySimulateSynchronizeUserDirectoryAdministration/DisplaySimulateSynchronizeUserDirectoryAdministration.test.stories.js +5 -8
  82. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.js +20 -38
  83. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.data.js +4 -1
  84. package/src/react-extension/components/Administration/DisplaySubscriptionKey/DisplaySubscriptionKey.test.js +4 -4
  85. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.js +1 -1
  86. package/src/react-extension/components/Administration/DisplaySynchronizeUserDirectoryAdministration/DisplaySynchronizeUserDirectoryAdministration.test.js +1 -1
  87. package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.test.js +2 -3
  88. package/src/react-extension/components/Administration/DisplayTestUserDirectoryAdministration/DisplayTestUserDirectoryAdministration.test.stories.js +5 -9
  89. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.js +34 -32
  90. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.js +1 -1
  91. package/src/react-extension/components/Administration/DisplayUserDirectoryAdministration/DisplayUserDirectoryAdministration.test.stories.js +0 -3
  92. package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.js +1 -1
  93. package/src/react-extension/components/Administration/EditSubscriptionKey/EditSubscriptionKey.test.page.js +2 -2
  94. package/src/react-extension/components/Authentication/AskForAuthenticationHelp/AskForAuthenticationHelp.js +1 -1
  95. package/src/react-extension/components/Authentication/AskForAuthenticationHelp/AskForAuthenticationHelp.test.stories.js +12 -15
  96. package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.js +2 -2
  97. package/src/react-extension/components/Authentication/CheckMailBox/CheckMailBox.test.js +1 -1
  98. package/src/react-extension/components/Authentication/CheckMailBox/CheckMailbox.test.stories.js +12 -14
  99. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.js +2 -1
  100. package/src/react-extension/components/Authentication/CheckPassphrase/CheckPassphrase.test.stories.js +12 -15
  101. package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.js +1 -2
  102. package/src/react-extension/components/Authentication/ChooseSecurityToken/ChooseSecurityToken.test.stories.js +12 -15
  103. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.js +9 -19
  104. package/src/react-extension/components/Authentication/CreateGpgKey/CreateGpgKey.test.stories.js +12 -15
  105. package/src/react-extension/components/Authentication/DisplayBrowserNotSupported/DisplayBrowserNotSupported.test.stories.js +12 -15
  106. package/src/react-extension/components/Authentication/DisplayExpiredTokenError/DisplayExpiredTokenError.test.stories.js +12 -15
  107. package/src/react-extension/components/Authentication/DisplayRequireInvitationError/DisplayRequireInvitationError.test.stories.js +12 -15
  108. package/src/react-extension/components/Authentication/DisplayUnexpectedError/DisplayUnexpectedError.test.stories.js +12 -15
  109. package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.js +1 -1
  110. package/src/react-extension/components/Authentication/DownloadRecoveryKit/DownloadRecoveryKit.test.stories.js +12 -15
  111. package/src/react-extension/components/Authentication/EnterNameForm/EnterNameForm.test.stories.js +12 -15
  112. package/src/react-extension/components/Authentication/EnterUsernameForm/EnterUsernameForm.test.stories.js +12 -15
  113. package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.data.js +14 -0
  114. package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.js +65 -0
  115. package/src/react-extension/components/Authentication/HandleSessionExpired/HandleSessionExpired.test.page.js +38 -0
  116. package/src/react-extension/components/Authentication/ImportGpgKey/ImportGpgKey.test.stories.js +12 -15
  117. package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.js +15 -6
  118. package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.js +27 -0
  119. package/src/react-extension/components/Authentication/InstallExtension/InstallExtension.test.stories.js +12 -15
  120. package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.js +107 -0
  121. package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.data.js +11 -0
  122. package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.js +65 -0
  123. package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.page.js +73 -0
  124. package/src/react-extension/components/Authentication/IntroduceSetupExtension/IntroduceSetupExtension.test.stories.js +34 -0
  125. package/src/react-extension/components/Authentication/NotifyExpiredSession/NotifyExpiredSession.test.stories.js +8 -11
  126. package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.js +1 -1
  127. package/src/react-extension/components/AuthenticationLogin/AcceptLoginServerKeyChange/AcceptLoginServerKeyChange.test.stories.js +12 -15
  128. package/src/react-extension/components/AuthenticationLogin/DisplayLoginError/DisplayLoginError.test.stories.js +12 -15
  129. package/src/react-extension/components/AuthenticationLogin/DisplayLoginInProgress/DisplayLoginProgress.test.stories.js +12 -15
  130. package/src/react-extension/components/AuthenticationLogin/Login/Login.js +3 -1
  131. package/src/react-extension/components/AuthenticationLogin/Login/Login.test.stories.js +12 -15
  132. package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.js +2 -1
  133. package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.test.js +1 -1
  134. package/src/react-extension/components/AuthenticationPassphrase/InputPassphrase/InputPassphrase.test.stories.js +5 -11
  135. package/src/react-extension/components/AuthenticationRecover/RecoverAuthentication/RecoverAuthentication.js +5 -1
  136. package/src/react-extension/components/AuthenticationSetup/SetupAuthentication/SetupAuthentication.js +4 -0
  137. package/src/react-extension/components/Common/ActionFeedback/DisplayActionFeedbacks.test.data.js +0 -2
  138. package/src/react-extension/components/Common/ActionFeedback/DisplayActionFeedbacks.test.js +4 -5
  139. package/src/react-extension/components/Common/ActionFeedback/DisplayActionFeedbacks.test.page.js +0 -1
  140. package/src/react-extension/components/Common/Avatar/UserAvatar.js +2 -1
  141. package/src/react-extension/components/Common/Error/ShowErrorDetails/ShowErrorDetails.js +126 -0
  142. package/src/react-extension/components/Common/Icons/AnimatedFeedback.js +58 -0
  143. package/src/react-extension/components/Common/Icons/Icon.js +16 -0
  144. package/src/react-extension/components/Common/Icons/Icon.test.stories.js +78 -0
  145. package/src/react-extension/components/Common/Inputs/FormSubmitButton/FormSubmitButton.js +4 -0
  146. package/src/react-extension/components/Common/Loading/LoadingSpinner/LoadingSpinner.js +2 -1
  147. package/src/react-extension/components/Common/Menu/DisplayMainMenu.js +2 -4
  148. package/src/react-extension/components/Common/Navigation/Search/SearchBar.js +1 -1
  149. package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.js +1 -1
  150. package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.test.js +1 -1
  151. package/src/react-extension/components/Common/Progress/DisplayProgress/DisplayProgress.test.stories.js +34 -0
  152. package/src/react-extension/components/Common/Tab/Tab.js +65 -0
  153. package/src/react-extension/components/Common/Tab/Tabs.js +87 -0
  154. package/src/react-extension/components/Resource/CreateResource/CreateResource.js +85 -66
  155. package/src/react-extension/components/Resource/CreateResource/CreateResource.test.data.js +80 -1
  156. package/src/react-extension/components/Resource/CreateResource/CreateResource.test.js +18 -39
  157. package/src/react-extension/components/Resource/CreateResource/CreateResource.test.page.js +27 -8
  158. package/src/react-extension/components/Resource/CreateResource/CreateResource.test.stories.js +70 -4
  159. package/src/react-extension/components/Resource/DeleteResource/DeleteResource.js +1 -1
  160. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayDragResource.js +68 -0
  161. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.js +20 -47
  162. package/src/react-extension/components/Resource/DisplayResourcesList/DisplayResourcesList.test.page.js +4 -1
  163. package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMenu.js +2 -2
  164. package/src/react-extension/components/Resource/DisplayResourcesWorkspace/DisplayResourcesWorkspaceMenu.test.data.js +1 -7
  165. package/src/react-extension/components/Resource/EditResource/EditResource.js +93 -68
  166. package/src/react-extension/components/Resource/EditResource/EditResource.test.data.js +80 -1
  167. package/src/react-extension/components/Resource/EditResource/EditResource.test.js +10 -39
  168. package/src/react-extension/components/Resource/EditResource/EditResource.test.page.js +26 -11
  169. package/src/react-extension/components/Resource/ExportResources/ExportResources.js +1 -1
  170. package/src/react-extension/components/Resource/ExportResources/ExportResources.test.stories.js +5 -11
  171. package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.js +10 -12
  172. package/src/react-extension/components/Resource/ExportResources/ExportResourcesCredentials.test.stories.js +5 -11
  173. package/src/react-extension/components/Resource/FilterResourcesByBreadcrumb/FilterResourcesByBreadcrumb.js +4 -4
  174. package/src/react-extension/components/Resource/FilterResourcesByBreadcrumb/FilterResourcesByBreadcrumb.test.stories.js +0 -1
  175. package/src/react-extension/components/Resource/FilterResourcesByFolders/DisplayDragFolderItem.js +109 -0
  176. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.js +41 -193
  177. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.data.js +10 -5
  178. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.js +9 -12
  179. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.page.js +6 -2
  180. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFolders.test.stories.js +0 -1
  181. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.js +83 -58
  182. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.data.js +52 -59
  183. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.js +25 -20
  184. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItem.test.page.js +11 -5
  185. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByFoldersItemContextualMenu.js +1 -1
  186. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByRootFolderContextualMenu.js +7 -2
  187. package/src/react-extension/components/Resource/FilterResourcesByFolders/FilterResourcesByRootFolderContextualMenu.test.js +3 -7
  188. package/src/react-extension/components/Resource/FilterResourcesByGroups/FilterResourcesByGroups.js +1 -1
  189. package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.js +1 -1
  190. package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.test.page.js +1 -1
  191. package/src/react-extension/components/Resource/FilterResourcesByShortcuts/FilterResourcesByShortcuts.test.stories.js +0 -1
  192. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.js +1 -1
  193. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.data.js +47 -0
  194. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.js +34 -3
  195. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.page.js +46 -9
  196. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTags.test.stories.js +0 -1
  197. package/src/react-extension/components/Resource/FilterResourcesByTags/FilterResourcesByTagsList.js +124 -4
  198. package/src/react-extension/components/Resource/FilterResourcesByText/FilterResourcesByText.test.stories.js +0 -2
  199. package/src/react-extension/components/Resource/ImportResources/ImportResources.js +6 -5
  200. package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.js +10 -12
  201. package/src/react-extension/components/Resource/ImportResources/ImportResourcesKeyUnlock.test.stories.js +5 -11
  202. package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.js +3 -3
  203. package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.js +3 -3
  204. package/src/react-extension/components/Resource/ImportResources/ImportResourcesResult.test.stories.js +5 -11
  205. package/src/react-extension/components/ResourceComment/AddResourceComment/AddResourceComment.js +1 -1
  206. package/src/react-extension/components/ResourceComment/AddResourceComment/AddResourceComment.test.page.object.js +1 -1
  207. package/src/react-extension/components/ResourceComment/AddResourceComment/AddResourceComment.test.stories.js +8 -14
  208. package/src/react-extension/components/ResourceComment/ConfirmResourceCommentDeletion/ConfirmResourceCommentDeletion.test.stories.js +5 -11
  209. package/src/react-extension/components/ResourceComment/DisplayResourceCommentList/DisplayResourceCommentList.test.stories.js +8 -14
  210. package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.js +9 -8
  211. package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.test.page.js +1 -1
  212. package/src/react-extension/components/ResourceDescription/EditResourceDescription/EditResourceDescription.test.stories.js +8 -15
  213. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsActivity.test.stories.js +0 -1
  214. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsDescription.js +1 -1
  215. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsDescription.test.stories.js +0 -1
  216. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.test.js +1 -1
  217. package/src/react-extension/components/ResourceDetails/DisplayResourceDetails/DisplayResourceDetailsTag.test.stories.js +0 -1
  218. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.js +2 -2
  219. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.page.js +1 -1
  220. package/src/react-extension/components/ResourceFolder/CreateResourceFolder/CreateResourceFolder.test.stories.js +0 -3
  221. package/src/react-extension/components/ResourceFolder/DefineResourceFolderMoveStrategy/DefineResourceFolderMoveStrategy.test.stories.js +0 -6
  222. package/src/react-extension/components/ResourceFolder/DeleteResourceFolder/DeleteResourceFolder.test.stories.js +0 -5
  223. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.js +1 -1
  224. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.page.js +1 -1
  225. package/src/react-extension/components/ResourceFolder/RenameResourceFolder/RenameResourceFolder.test.stories.js +0 -7
  226. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsActivity.test.stories.js +0 -2
  227. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsInformation.test.stories.js +0 -2
  228. package/src/react-extension/components/ResourceFolderDetails/DisplayResourceFolderDetails/DisplayResourceFolderDetailsPermissions.test.stories.js +0 -2
  229. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePassphraseGenerator.js +150 -0
  230. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePassphraseGenerator.test.stories.js +30 -0
  231. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePasswordGenerator.js +191 -0
  232. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/ConfigurePasswordGenerator.test.stories.js +73 -0
  233. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/GenerateResourcePassword.js +296 -0
  234. package/src/react-extension/components/ResourcePassword/GenerateResourcePassword/GenerateResourcePassword.test.stories.js +112 -0
  235. package/src/react-extension/components/ResourceTag/DeleteResourceTag/DeleteResourceTag.test.stories.js +0 -2
  236. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.js +1 -1
  237. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.page.js +1 -1
  238. package/src/react-extension/components/ResourceTag/EditResourceTag/EditResourceTag.test.stories.js +0 -4
  239. package/src/react-extension/components/ResourceTag/EditResourceTags/EditResourceTags.js +2 -2
  240. package/src/react-extension/components/ResourceTag/EditResourceTags/EditResourceTags.test.page.js +1 -1
  241. package/src/react-extension/components/ResourceTag/EditResourceTags/EditResourceTagsItemViewer.js +5 -1
  242. package/src/react-extension/components/Share/ShareDialog.test.page.js +1 -1
  243. package/src/react-extension/components/Share/ShareDialog.test.stories.js +12 -10
  244. package/src/react-extension/components/User/ConfirmDisableUserMFA/ConfirmDisableUserMFA.test.stories.js +5 -9
  245. package/src/react-extension/components/User/CreateUser/CreateUser.js +4 -4
  246. package/src/react-extension/components/User/CreateUser/CreateUser.test.page.js +3 -3
  247. package/src/react-extension/components/User/CreateUser/CreateUser.test.stories.js +3 -1
  248. package/src/react-extension/components/User/DeleteUser/DeleteUser.test.stories.js +5 -8
  249. package/src/react-extension/components/User/DeleteUser/DeleteUserWithConflicts.test.stories.js +5 -8
  250. package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.js +2 -2
  251. package/src/react-extension/components/User/DisplayUserWorkspaceActions/DisplayUserWorkspaceActions.test.page.js +1 -1
  252. package/src/react-extension/components/User/DisplayUsers/DisplayUsers.js +35 -2
  253. package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.data.js +2 -1
  254. package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.js +6 -0
  255. package/src/react-extension/components/User/DisplayUsers/DisplayUsers.test.page.js +19 -6
  256. package/src/react-extension/components/User/EditUser/EditUser.js +3 -3
  257. package/src/react-extension/components/User/EditUser/EditUser.test.page.js +2 -2
  258. package/src/react-extension/components/User/EditUser/EditUser.test.stories.js +3 -1
  259. package/src/react-extension/components/User/FilterUsersByBreadcrumb/FilterUsersByBreadcrumb.js +2 -2
  260. package/src/react-extension/components/User/FilterUsersByBreadcrumb/FilterUsersByBreadcrumb.test.js +1 -1
  261. package/src/react-extension/components/User/FilterUsersByBreadcrumb/FilterUsersByBreadcrumb.test.stories.js +5 -8
  262. package/src/react-extension/components/User/FilterUsersByGroups/FilterUsersByGroup.js +1 -1
  263. package/src/react-extension/components/User/FilterUsersByShortcut/FilterUsersByShortcut.js +1 -1
  264. package/src/react-extension/components/User/FilterUsersByShortcut/FilterUsersByShortcut.test.stories.js +0 -1
  265. package/src/react-extension/components/User/FilterUsersByText/FilterUsersByText.test.stories.js +0 -2
  266. package/src/react-extension/components/UserDetails/DisplayUserDetailsGroups/DisplayUserDetailsGroups.test.stories.js +8 -11
  267. package/src/react-extension/components/UserDetails/DisplayUserDetailsInformation/DisplayUserDetailsInformation.test.stories.js +8 -11
  268. package/src/react-extension/components/UserDetails/DisplayUserDetailsPublicKey/DisplayUserDetailsPublicKey.test.stories.js +8 -12
  269. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.js +1 -1
  270. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.page.js +2 -2
  271. package/src/react-extension/components/UserGroup/CreateUserGroup/CreateUserGroup.test.stories.js +5 -8
  272. package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroup.test.stories.js +5 -8
  273. package/src/react-extension/components/UserGroup/DeleteUserGroup/DeleteUserGroupWithConflicts.test.stories.js +5 -8
  274. package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsInformation/DisplayUserGroupDetailsInformation.test.stories.js +8 -11
  275. package/src/react-extension/components/UserGroup/DisplayUserGroupDetailsMembers/DisplayUserGroupDetailsMembers.test.stories.js +8 -11
  276. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.js +11 -3
  277. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.data.js +7 -0
  278. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.page.js +1 -1
  279. package/src/react-extension/components/UserGroup/EditUserGroup/EditUserGroup.test.stories.js +12 -8
  280. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.js +92 -21
  281. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.test.data.js +6 -0
  282. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.test.js +2 -2
  283. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/ConfirmPassphrase.test.page.js +1 -1
  284. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/DisplayChangePassphraseIntroduction.js +12 -10
  285. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/DownloadRecoveryKit.js +4 -10
  286. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.js +65 -25
  287. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.data.js +6 -0
  288. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.js +1 -1
  289. package/src/react-extension/components/UserSetting/ChangeUserPassphrase/EnterNewPassphrase.test.page.js +1 -1
  290. package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.js +14 -13
  291. package/src/react-extension/components/UserSetting/ChangeUserSecurityToken/ChangeUserSecurityToken.test.stories.js +5 -8
  292. package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.js +21 -6
  293. package/src/react-extension/components/UserSetting/DisplayUserGpgInformation/DisplayUserGpgInformation.test.stories.js +5 -8
  294. package/src/react-extension/components/UserSetting/DisplayUserProfile/DisplayUserProfile.js +1 -1
  295. package/src/react-extension/components/UserSetting/DisplayUserProfile/DisplayUserProfile.test.stories.js +5 -8
  296. package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspace/DisplayUserSettingsWorkspace.js +13 -1
  297. package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspaceBreadcrumb/DisplayUserSettingsWorkspaceBreadcrumb.js +2 -1
  298. package/src/react-extension/components/UserSetting/DisplayUserSettingsWorkspaceBreadcrumb/DisplayUserSettingsWorkspaceBreadcrumb.test.stories.js +5 -8
  299. package/src/react-extension/components/UserSetting/DisplayUserTheme/DisplayUserTheme.test.stories.js +5 -8
  300. package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.js +3 -3
  301. package/src/react-extension/components/UserSetting/EditUserProfile/EditUserProfile.test.stories.js +5 -8
  302. package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.js +26 -4
  303. package/src/react-extension/components/UserSetting/NavigateIntoUserSettingsWorkspace/NavigateIntoUserSettingsWorkspace.test.stories.js +7 -10
  304. package/src/react-extension/components/UserSetting/TransferToMobile/TransferToMobile.js +749 -0
  305. package/src/react-extension/components/UserSetting/TransferToMobile/TransferToMobile.test.data.js +32 -0
  306. package/src/react-extension/components/UserSetting/TransferToMobile/TransferToMobile.test.js +60 -0
  307. package/src/react-extension/components/UserSetting/TransferToMobile/TransferToMobile.test.page.js +110 -0
  308. package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.js +3 -2
  309. package/src/react-extension/components/UserSetting/UploadUserProfileAvatar/UploadUserProfileAvatar.test.stories.js +5 -8
  310. package/src/react-extension/contexts/AdministrationWorkspaceContext.js +2 -2
  311. package/src/react-extension/contexts/ApiAppContext.js +1 -1
  312. package/src/react-extension/contexts/ApiRecoverContext.js +1 -1
  313. package/src/react-extension/contexts/ApiSetupContext.js +1 -1
  314. package/src/react-extension/contexts/AuthenticationContext.js +21 -2
  315. package/src/react-extension/contexts/AuthenticationContext.test.js +40 -0
  316. package/src/react-extension/contexts/DragContext.js +122 -0
  317. package/src/react-extension/contexts/DragContext.test.js +53 -0
  318. package/src/react-extension/contexts/NavigationContext.js +11 -0
  319. package/src/react-extension/contexts/ResourcePasswordGeneratorContext.js +144 -0
  320. package/src/react-extension/contexts/ResourceWorkspaceContext.js +5 -4
  321. package/src/react-extension/contexts/ResourceWorkspaceContext.test.data.js +0 -1
  322. package/src/react-extension/contexts/ResourceWorkspaceContext.test.page.js +0 -1
  323. package/src/react-extension/contexts/UserWorkspaceContext.js +31 -4
  324. package/src/react-extension/contexts/UserWorkspaceContext.test.data.js +17 -287
  325. package/src/react-extension/lib/Crypto/sha512.js +17 -0
  326. package/src/react-extension/test/fixture/Settings/siteSettings.js +6 -0
  327. package/src/react-extension/test/mock/components/Internationalisation/MockTranslationProvider.js +42 -7
  328. package/src/react-quickaccess/ExtQuickAccess.js +75 -28
  329. package/src/react-quickaccess/components/AnimatedSwitch/AnimatedSwitch.js +22 -5
  330. package/src/react-quickaccess/components/ExtensionSetup/SetupExtensionInProgress/SetupExtensionInProgress.js +41 -0
  331. package/src/react-quickaccess/components/ExtensionSetup/SetupExtensionInProgress/SetupExtensionInProgressPage.test.stories.js +23 -0
  332. package/src/react-quickaccess/components/FilterResourcesByFavoritePage/FilterResourcesByFavoritePage.js +8 -4
  333. package/src/react-quickaccess/components/FilterResourcesByFavoritePage/FilterResourcesByFavoritePage.test.stories.js +7 -7
  334. package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.js +10 -6
  335. package/src/react-quickaccess/components/FilterResourcesByGroupPage/FilterResourcesByGroupPage.test.stories.js +9 -5
  336. package/src/react-quickaccess/components/FilterResourcesByItemsIOwnPage/FilterResourcesByItemsIOwnPage.js +10 -7
  337. package/src/react-quickaccess/components/FilterResourcesByItemsIOwnPage/FilterResourcesByItemsIOwnPage.test.stories.js +7 -7
  338. package/src/react-quickaccess/components/FilterResourcesByRecentlyModifiedPage/FilterResourcesByRecentlyModifiedPage.js +10 -7
  339. package/src/react-quickaccess/components/FilterResourcesByRecentlyModifiedPage/FilterResourcesByRecentlyModifiedPage.test.stories.js +7 -7
  340. package/src/react-quickaccess/components/FilterResourcesBySharedWithMePage/FilterResourcesBySharedWithMePage.js +10 -7
  341. package/src/react-quickaccess/components/FilterResourcesBySharedWithMePage/FilterResourcesBySharedWithMePage.test.stories.js +7 -7
  342. package/src/react-quickaccess/components/FilterResourcesByTagPage/FilterResourcesByTagPage.js +10 -7
  343. package/src/react-quickaccess/components/FilterResourcesByTagPage/FilterResourcesByTagPage.test.stories.js +9 -5
  344. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePassphraseGenerator.js +150 -0
  345. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePassphraseGenerator.test.data.js +20 -0
  346. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePassphraseGenerator.test.js +67 -0
  347. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePassphraseGenerator.test.page.js +109 -0
  348. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePasswordGenerator.js +189 -0
  349. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePasswordGenerator.test.data.js +40 -0
  350. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePasswordGenerator.test.js +67 -0
  351. package/src/react-quickaccess/components/GeneratePasswordPage/ConfigurePasswordGenerator.test.page.js +121 -0
  352. package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.js +304 -0
  353. package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.test.data.js +102 -0
  354. package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.test.js +76 -0
  355. package/src/react-quickaccess/components/GeneratePasswordPage/GeneratePasswordPage.test.page.js +158 -0
  356. package/src/react-quickaccess/components/Header/Header.js +10 -8
  357. package/src/react-quickaccess/components/Header/Header.test.stories.js +4 -7
  358. package/src/react-quickaccess/components/HomePage/HomePage.js +40 -11
  359. package/src/react-quickaccess/components/HomePage/HomePage.test.stories.js +14 -10
  360. package/src/react-quickaccess/components/HomePage/canSuggestUrl.js +8 -3
  361. package/src/react-quickaccess/components/HomePage/canSuggestUrl.test.js +6 -0
  362. package/src/react-quickaccess/components/LoginPage/LoginPage.js +58 -18
  363. package/src/react-quickaccess/components/LoginPage/LoginPage.test.stories.js +4 -6
  364. package/src/react-quickaccess/components/ManageQuickAccessMode/ManageQuickAccessMode.js +103 -0
  365. package/src/react-quickaccess/components/MoreFiltersPage/MoreFiltersPage.js +2 -2
  366. package/src/react-quickaccess/components/MoreFiltersPage/MoreFiltersPage.test.stories.js +4 -6
  367. package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.js +5 -3
  368. package/src/react-quickaccess/components/PassphraseDialog/PassphraseDialog.test.stories.js +6 -6
  369. package/src/react-quickaccess/components/PrivateRoute/PrivateRoute.js +1 -0
  370. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.js +234 -0
  371. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.data.js +28 -0
  372. package/src/react-quickaccess/components/ResourceAutoSave/SaveResource.test.stories.js +44 -0
  373. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.js +166 -39
  374. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.data.js +108 -2
  375. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.js +28 -25
  376. package/src/react-quickaccess/components/ResourceCreatePage/ResourceCreatePage.test.stories.js +6 -6
  377. package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.js +6 -3
  378. package/src/react-quickaccess/components/ResourceViewPage/ResourceViewPage.test.stories.js +5 -3
  379. package/src/react-quickaccess/components/Search/Search.js +13 -1
  380. package/src/react-quickaccess/components/Search/Search.test.stories.js +4 -6
  381. package/src/react-quickaccess/contexts/PrepareResourceContext.js +221 -0
  382. package/src/react-web-integration/AuthLogin/AuthLogin.js +72 -0
  383. package/src/react-web-integration/Autofill/Autofill.js +331 -0
  384. package/src/react-web-integration/BrowserIntegrationBootstrap.js +64 -0
  385. package/src/react-web-integration/Events/Quickaccess/QuickAccessEvent.js +24 -0
  386. package/src/react-web-integration/ExtInFormCallToAction.js +56 -0
  387. package/src/react-web-integration/ExtInFormMenu.js +70 -0
  388. package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.js +161 -0
  389. package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.data.js +39 -0
  390. package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.js +48 -0
  391. package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.page.js +42 -0
  392. package/src/react-web-integration/components/AskInFormMenuDisplay/AskInFormMenuDisplay.test.stories.js +91 -0
  393. package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.js +360 -0
  394. package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenu.test.stories.js +198 -0
  395. package/src/react-web-integration/components/DisplayInFormMenu/DisplayInFormMenuItem.js +103 -0
  396. package/src/react-web-integration/contexts/AppContext.js +39 -0
  397. package/src/react-web-integration/lib/Dom/DomUtils.js +94 -0
  398. package/src/react-web-integration/lib/InForm/InFormCallToActionField.js +263 -0
  399. package/src/react-web-integration/lib/InForm/InFormCredentialsFormField.js +118 -0
  400. package/src/react-web-integration/lib/InForm/InFormFieldSelector.js +77 -0
  401. package/src/react-web-integration/lib/InForm/InFormManager.js +253 -0
  402. package/src/react-web-integration/lib/InForm/InformManager.test.data.js +46 -0
  403. package/src/react-web-integration/lib/InForm/InformManager.test.js +82 -0
  404. package/src/react-web-integration/lib/InForm/InformManager.test.page.js +116 -0
  405. package/src/react-web-integration/lib/InForm/InformMenuField.js +182 -0
  406. package/src/shared/components/Internationalisation/TranslationProvider.js +145 -0
  407. package/src/shared/lib/Browser/detectBrowserName.js +2 -1
  408. package/src/shared/lib/Secret/SecretComplexity.js +2 -2
  409. package/src/shared/lib/SecretGenerator/PassphraseGenerator.js +112 -0
  410. package/src/shared/lib/SecretGenerator/PassphraseGenerator.test.js +48 -0
  411. package/src/shared/lib/SecretGenerator/PassphraseGeneratorWords.js +7789 -0
  412. package/src/shared/lib/SecretGenerator/PasswordGenerator.js +103 -0
  413. package/src/shared/lib/SecretGenerator/SecretGenerator.js +45 -0
  414. package/src/shared/lib/SecretGenerator/SecretGeneratorComplexity.js +190 -0
  415. package/src/shared/lib/SecretGenerator/SecretGeneratorComplexity.test.js +95 -0
  416. package/src/shared/lib/Settings/SiteSettings.js +8 -0
  417. package/src/shared/lib/apiClient/apiClient.test.js +1 -1
  418. package/.babelrc +0 -11
  419. package/.editorconfig +0 -13
  420. package/.eslintrc.json +0 -197
  421. package/.gitlab-ci.yml +0 -28
  422. package/.jest.config.json +0 -6
  423. package/.jest.setup.js +0 -8
  424. package/.jest.transform.js +0 -7
  425. package/.storybook/main.js +0 -15
  426. package/.storybook/preview-body.html +0 -5
  427. package/.storybook/preview.js +0 -6
  428. package/Gruntfile.js +0 -199
  429. package/build/css/themes/default/ext_config_debug.min.css +0 -13
  430. package/build/css/themes/default/ext_legacy.min.css +0 -13
  431. package/build/css/themes/midgar/ext_legacy.min.css +0 -13
  432. package/crowdin.yml +0 -4
  433. package/docker-compose-dev.yml +0 -10
  434. package/jest.config.json +0 -6
  435. package/src/img/controls/colorpicker/marker.png +0 -0
  436. package/src/img/controls/colorpicker/mask.png +0 -0
  437. package/src/img/controls/colorpicker/wheel.png +0 -0
  438. package/src/img/controls/overlay-opacity-50.png +0 -0
  439. package/src/img/third_party/ChromeWebStore_black.png +0 -0
  440. package/src/img/third_party/ChromeWebStore_white.png +0 -0
  441. package/src/js/accordion.js +0 -10
  442. package/src/js/autocomplete.js +0 -241
  443. package/src/js/autocomplete.min.js +0 -3
  444. package/src/js/bootstrap-scrollspy.js +0 -172
  445. package/src/js/chosen.jquery.js +0 -1356
  446. package/src/js/colorpicker.js +0 -32
  447. package/src/js/download.js +0 -128
  448. package/src/js/farbtastic.js +0 -345
  449. package/src/js/swiper.min.js +0 -18
  450. package/src/react-quickaccess/components/Internationalisation/TranslationProvider.js +0 -151
  451. package/storybook-static/favicon.ico +0 -0
  452. package/storybook-static/iframe.html +0 -133
  453. package/storybook-static/index.html +0 -47
  454. package/storybook-static/main.2d01924b12554c6c15af.bundle.js +0 -1
  455. package/storybook-static/main.b0c44c8759149ccf4f67.bundle.js +0 -3
  456. package/storybook-static/main.b0c44c8759149ccf4f67.bundle.js.LICENSE.txt +0 -153
  457. package/storybook-static/main.b0c44c8759149ccf4f67.bundle.js.map +0 -1
  458. package/storybook-static/runtime~main.6a9b04192e3176eff72a.bundle.js +0 -1
  459. package/storybook-static/runtime~main.b0c44c8759149ccf4f67.bundle.js +0 -2
  460. package/storybook-static/runtime~main.b0c44c8759149ccf4f67.bundle.js.map +0 -1
  461. package/storybook-static/static/media/chosen-sprite.6768c197.png +0 -0
  462. package/storybook-static/static/media/chosen-sprite@2x.a0b7f3f1.png +0 -0
  463. package/storybook-static/static/media/dot_black.a2c44078.svg +0 -6
  464. package/storybook-static/static/media/dot_red.7b34541d.svg +0 -6
  465. package/storybook-static/static/media/dot_white.f60f7331.svg +0 -6
  466. package/storybook-static/static/media/fontawesome-webfont.1e59d233.ttf +0 -0
  467. package/storybook-static/static/media/fontawesome-webfont.20fd1704.woff2 +0 -0
  468. package/storybook-static/static/media/fontawesome-webfont.8b43027f.eot +0 -0
  469. package/storybook-static/static/media/fontawesome-webfont.c1e38fd9.svg +0 -2671
  470. package/storybook-static/static/media/fontawesome-webfont.f691f37e.woff +0 -0
  471. package/storybook-static/static/media/infinite-bar.f5327dc3.gif +0 -0
  472. package/storybook-static/static/media/loading_dark.ea474c7f.svg +0 -21
  473. package/storybook-static/static/media/loading_light.061977b5.svg +0 -15
  474. package/storybook-static/static/media/logo.e2b062a5.svg +0 -1
  475. package/storybook-static/static/media/logo_white.cb32e694.svg +0 -1
  476. package/storybook-static/static/media/opensans-bold.a6b4768c.woff +0 -0
  477. package/storybook-static/static/media/opensans-regular.7812bd0b.woff +0 -0
  478. package/storybook-static/static/media/passphrase_intro.37a1ba4e.png +0 -0
  479. package/storybook-static/vendors~main.4abf29e4f956d5befb41.bundle.js +0 -2
  480. package/storybook-static/vendors~main.4abf29e4f956d5befb41.bundle.js.LICENSE.txt +0 -105
  481. package/storybook-static/vendors~main.b0c44c8759149ccf4f67.bundle.js +0 -3
  482. package/storybook-static/vendors~main.b0c44c8759149ccf4f67.bundle.js.LICENSE.txt +0 -145
  483. package/storybook-static/vendors~main.b0c44c8759149ccf4f67.bundle.js.map +0 -1
  484. package/webpack-api.config.js +0 -83
  485. package/webpack-ext.config.js +0 -84
@@ -10,17 +10,123 @@ import userSettingsFixture from "../../../react-extension/test/fixture/Settings/
10
10
  export function defaultAppContext(appContext) {
11
11
  const defaultAppContext = {
12
12
  port: new MockPort(),
13
- userSettings: new UserSettings(userSettingsFixture)
13
+ userSettings: new UserSettings(userSettingsFixture),
14
+ siteSettings: {
15
+ canIUse: () => true
16
+ }
14
17
  };
15
18
  return Object.assign(defaultAppContext, appContext || {});
16
19
  }
17
20
 
21
+ /**
22
+ * Default props
23
+ * @returns {*}
24
+ */
25
+ export function defaultProps() {
26
+ return {
27
+ prepareResourceContext: {
28
+ getSettings: () => settingsPasswordGenerator,
29
+ settings: settingsPasswordGenerator,
30
+ getPreparedResource: jest.fn(),
31
+ getLastGeneratedPassword: () => "Password"
32
+ }
33
+ };
34
+ }
35
+
36
+ const settingsPasswordGenerator = {
37
+ default_generator: "password",
38
+ generators: [
39
+ {
40
+ "name": "Password",
41
+ "type": "password",
42
+ "default_options":{
43
+ "length": 18,
44
+ "look_alike": true,
45
+ "min_length": 8,
46
+ "max_length": 128,
47
+ },
48
+ "masks": [
49
+ {
50
+ "name": "upper",
51
+ "label": "A-Z",
52
+ "characters": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
53
+ "active": true
54
+ },
55
+ {
56
+ "name": "lower",
57
+ "label": "a-z",
58
+ "characters": "abcdefghijklmnopqrstuvwxyz",
59
+ "active": true
60
+ },
61
+ {
62
+ "name": "digit",
63
+ "label": "0-9",
64
+ "characters": "0123456789",
65
+ "active": true
66
+ },
67
+ {
68
+ "name": "special_char1",
69
+ "label": "# $ % & @ ^ ~",
70
+ "characters": "#$%&@^~",
71
+ "active": true
72
+ },
73
+ {
74
+ "name": "parenthesis",
75
+ "label": "{ [ ( | ) ] ] }",
76
+ "characters": "([|])",
77
+ "active": true
78
+ },
79
+ {
80
+ "name": "special_char2",
81
+ "label": ". , : ;",
82
+ "characters": ".,:;",
83
+ "active": true
84
+ },
85
+ {
86
+ "name": "special_char3",
87
+ "label": "' \" `",
88
+ "characters": "'\"`",
89
+ "active": true
90
+ },
91
+ {
92
+ "name": "special_char4",
93
+ "label": "/ \\ _ -",
94
+ "characters": "/\\_-",
95
+ "active": true
96
+ },
97
+ {
98
+ "name": "special_char5",
99
+ "label": "< * + ! ? =",
100
+ "characters": "<*+!?=",
101
+ "active": true
102
+ },
103
+ {
104
+ "name": "emoji",
105
+ "label": "😘",
106
+ "characters": "😀😃😄😁😆😅😂🤣🥲☺️😊😇🙂🙃😉😌😍🥰😘😗😙😚😋😛😝😜🤪🤨🧐🤓😎🥸🤩🥳😏😒😞😔😟😕🙁☹️😣😖😫😩🥺😢😭😤😠😡🤬🤯😳🥵🥶😱😨😰😥😓🤗🤔🤭🤫🤥😶😐😑😬🙄😯😦😧😮😲🥱😴🤤😪😵🤐🥴🤢🤮🤧😷🤒🤕🤑🤠😈👿👹👺🤡💩👻💀☠️👽👾🤖🎃😺😸😹😻😼😽🙀😿😾"
107
+ }
108
+ ],
109
+ },
110
+ {
111
+ "name": "Passphrase",
112
+ "type": "passphrase",
113
+ "default_options":{
114
+ "word_count": 8,
115
+ "word_case": "lowercase",
116
+ "min_word": 4,
117
+ "max_word": 40,
118
+ "separator": " "
119
+ },
120
+ }
121
+ ]
122
+ };
123
+
18
124
  const mockTabInfo = {
19
125
  title: "test",
20
126
  url: "www.test.com"
21
127
  };
22
128
 
23
129
  export const mockResults = {
24
- "passbolt.active-tab.get-info": mockTabInfo,
130
+ "passbolt.resources.prepare-resource": mockTabInfo,
25
131
  "passbolt.resources.create": {}
26
132
  };
@@ -1,12 +1,13 @@
1
1
  import React from "react";
2
2
  import {render, fireEvent, cleanup} from '@testing-library/react';
3
- import {StaticRouter} from 'react-router';
3
+ import {StaticRouter} from 'react-router-dom';
4
4
  import ResourceCreatePage from "./ResourceCreatePage";
5
5
  import "../../../shared/lib/Secret/SecretComplexity";
6
6
  import {waitFor} from "@testing-library/dom";
7
7
  import MockTranslationProvider
8
8
  from "../../../react-extension/test/mock/components/Internationalisation/MockTranslationProvider";
9
- import MockPort from "../../../react-extension/test/mock/MockPort";
9
+ import "../../../react-extension/test/lib/crypto/cryptoGetRandomvalues";
10
+ import {defaultAppContext, defaultProps} from "./ResourceCreatePage.test.data";
10
11
 
11
12
  // Reset the modules before each test.
12
13
  beforeEach(() => {
@@ -24,26 +25,25 @@ describe("ResourceCreatePage", () => {
24
25
  describe("Form initialization", () => {
25
26
 
26
27
  it("should intialize the name and uri input fields with the active tab metadata", async() => {
27
- const context = {
28
- port: new MockPort()
29
- };
28
+ const context = defaultAppContext();
30
29
  // mock the passbolt messaging layer.
31
30
  context.port = {
32
31
  request: event => new Promise(resolve => {
33
- if (event === "passbolt.active-tab.get-info") {
32
+ if (event === "passbolt.quickaccess.prepare-resource") {
34
33
  resolve({
35
- title: "Passbolt Browser Extension Test",
36
- url: "https://passbolt-browser-extension/test"
34
+ name: "Passbolt Browser Extension Test",
35
+ uri: "https://passbolt-browser-extension/test"
37
36
  });
38
37
  }
39
38
  })
40
39
  };
40
+ const props = defaultProps();
41
41
 
42
42
  jest.useFakeTimers();
43
43
  const component = render(
44
44
  <MockTranslationProvider>
45
45
  <StaticRouter context={context}>
46
- <ResourceCreatePage context={context} debug />
46
+ <ResourceCreatePage context={context} prepareResourceContext={props.prepareResourceContext} debug />
47
47
  </StaticRouter>
48
48
  </MockTranslationProvider>
49
49
  );
@@ -57,28 +57,33 @@ describe("ResourceCreatePage", () => {
57
57
  expect(nameInput.value).toBe("Passbolt Browser Extension Test");
58
58
  const uriInput = component.container.querySelector('[name="uri"]');
59
59
  expect(uriInput.value).toBe("https://passbolt-browser-extension/test");
60
+ const usernameInput = component.container.querySelector('[name="username"]');
61
+ expect(usernameInput.value).toBe(context.userSettings.username);
62
+ const passwordInput = component.container.querySelector('[name="password"]');
63
+ expect(passwordInput.value).toBe("AAAAAAAAAAAAAAAAAA");
60
64
  });
61
65
 
62
66
  it("should not initialize with chrome new tab metadata", async () => {
63
67
  // mock the passbolt messaging layer.
64
68
  window.passbolt = {
65
69
  request: event => new Promise(resolve => {
66
- if (event === "passbolt.active-tab.get-info") {
70
+ if (event === "passbolt.quickaccess.prepare-resource") {
67
71
  resolve({
68
- title: "newtab",
69
- url: "chrome://newtab/"
72
+ name: "newtab",
73
+ uri: "chrome://newtab/"
70
74
  });
71
75
  }
72
76
  })
73
77
  };
74
78
 
75
- const context = {};
79
+ const context = defaultAppContext();
80
+ const props = defaultProps();
76
81
 
77
82
  jest.useFakeTimers();
78
83
  const component = render(
79
84
  <MockTranslationProvider>
80
85
  <StaticRouter context={context}>
81
- <ResourceCreatePage debug />
86
+ <ResourceCreatePage context={context} prepareResourceContext={props.prepareResourceContext} debug />
82
87
  </StaticRouter>
83
88
  </MockTranslationProvider>
84
89
  );
@@ -98,21 +103,21 @@ describe("ResourceCreatePage", () => {
98
103
  // mock the passbolt messaging layer.
99
104
  window.passbolt = {
100
105
  request: event => new Promise(resolve => {
101
- if (event === "passbolt.active-tab.get-info") {
106
+ if (event === "passbolt.quickaccess.prepare-resource") {
102
107
  resolve({
103
- title: "",
104
- url: "about:newtab"
108
+ name: "",
109
+ uri: "about:newtab"
105
110
  });
106
111
  }
107
112
  })
108
113
  };
109
114
 
110
115
  jest.useFakeTimers();
111
- const context = {};
116
+ const context = defaultAppContext();
112
117
  const component = render(
113
118
  <MockTranslationProvider>
114
119
  <StaticRouter context={context}>
115
- <ResourceCreatePage debug />
120
+ <ResourceCreatePage context={context} debug />
116
121
  </StaticRouter>
117
122
  </MockTranslationProvider>
118
123
  );
@@ -137,17 +142,15 @@ describe("ResourceCreatePage", () => {
137
142
  describe("Form submition", () => {
138
143
  it("should create a new password on submit", async () => {
139
144
  const createPasswordEventMockCallback = jest.fn();
140
- const context = {
141
- port: new MockPort()
142
- };
145
+ const context = defaultAppContext();
143
146
  // Mock the passbolt messaging layer.
144
147
  context.port = {
145
148
  request: function(event) {
146
149
  return new Promise(resolve => {
147
- if (event === "passbolt.active-tab.get-info") {
150
+ if (event === "passbolt.quickaccess.prepare-resource") {
148
151
  resolve({
149
- title: "Passbolt Browser Extension Test",
150
- url: "https://passbolt-browser-extension/test"
152
+ name: "Passbolt Browser Extension Test",
153
+ uri: "https://passbolt-browser-extension/test"
151
154
  });
152
155
  }
153
156
  else if (event === "passbolt.resources.create") {
@@ -1,6 +1,5 @@
1
1
  import React from "react";
2
2
  import {MemoryRouter, Route} from "react-router-dom";
3
- import "../../../css/themes/default/ext_quickaccess.css";
4
3
  import PropTypes from "prop-types";
5
4
  import AppContext from "../../contexts/AppContext";
6
5
  import ResourceCreatePage from "./ResourceCreatePage";
@@ -14,7 +13,7 @@ export default {
14
13
  const Template = ({context, ...args}) =>
15
14
  <AppContext.Provider value={context}>
16
15
  <MemoryRouter initialEntries={['/']}>
17
- <Route component={routerProps => <div className="container page quickaccess"><ResourceCreatePage {...args} {...routerProps}/></div>}/>
16
+ <Route component={routerProps => <div className="container quickaccess"><ResourceCreatePage {...args} {...routerProps}/></div>}/>
18
17
  </MemoryRouter>
19
18
  </AppContext.Provider>;
20
19
 
@@ -22,12 +21,15 @@ Template.propTypes = {
22
21
  context: PropTypes.object,
23
22
  };
24
23
 
25
-
24
+ const parameters = {
25
+ css: "ext_quickaccess"
26
+ };
26
27
 
27
28
  export const Initial = Template.bind({});
28
29
  Initial.args = {
29
30
  context: defaultAppContext(),
30
31
  };
32
+ Initial.parameters = parameters;
31
33
 
32
34
  const contextMock = {
33
35
  port: {
@@ -38,6 +40,4 @@ export const CreateResourceFromTab = Template.bind({});
38
40
  CreateResourceFromTab.args = {
39
41
  context: defaultAppContext(contextMock)
40
42
  };
41
-
42
-
43
-
43
+ CreateResourceFromTab.parameters = parameters;
@@ -3,6 +3,7 @@ import Transition from 'react-transition-group/Transition';
3
3
  import PropTypes from "prop-types";
4
4
  import {Trans, withTranslation} from "react-i18next";
5
5
  import {withAppContext} from "../../contexts/AppContext";
6
+ import {withRouter} from "react-router-dom";
6
7
 
7
8
  class ResourceViewPage extends React.Component {
8
9
  constructor(props) {
@@ -219,7 +220,7 @@ class ResourceViewPage extends React.Component {
219
220
  event.preventDefault();
220
221
  this.setState({usingOnThisTab: true});
221
222
  try {
222
- await this.props.context.port.request('passbolt.quickaccess.use-resource-on-current-tab', this.state.resource.id, this.state.resource.username);
223
+ await this.props.context.port.request('passbolt.quickaccess.use-resource-on-current-tab', this.state.resource.id, this.props.context.tabId);
223
224
  window.close();
224
225
  } catch (error) {
225
226
  if (error && error.name === "UserAbortsOperationError") {
@@ -397,7 +398,7 @@ class ResourceViewPage extends React.Component {
397
398
  </span>
398
399
  <span className="visually-hidden"><Trans>Open in new window</Trans></span>
399
400
  </a>
400
- <span className="property-name">Url</span>
401
+ <span className="property-name">URI</span>
401
402
  {this.state.resource.uri && sanitizeResourceUrl &&
402
403
  <a href={this.sanitizeResourceUrl()} role="button" className="property-value" target="_blank" rel="noopener noreferrer">
403
404
  {this.state.resource.uri}
@@ -419,7 +420,9 @@ class ResourceViewPage extends React.Component {
419
420
  <a href="#" id="popupAction" className={`button primary big full-width ${this.state.usingOnThisTab ? "processing" : ""}`} role="button" onClick={this.handleUseOnThisTabClick}>
420
421
  <Trans>use on this page</Trans>
421
422
  </a>
423
+ {this.state.useOnThisTabError &&
422
424
  <div className="error-message">{this.state.useOnThisTabError}</div>
425
+ }
423
426
  </div>
424
427
  </div>
425
428
  );
@@ -435,4 +438,4 @@ ResourceViewPage.propTypes = {
435
438
  t: PropTypes.func, // The translation function
436
439
  };
437
440
 
438
- export default withAppContext(withTranslation('common')(ResourceViewPage));
441
+ export default withAppContext(withRouter(withTranslation('common')(ResourceViewPage)));
@@ -1,6 +1,5 @@
1
1
  import React from "react";
2
2
  import {MemoryRouter, Route} from "react-router-dom";
3
- import "../../../css/themes/default/ext_quickaccess.css";
4
3
  import PropTypes from "prop-types";
5
4
  import ResourceViewPage from "./ResourceViewPage";
6
5
  import AppContext from "../../contexts/AppContext";
@@ -14,7 +13,7 @@ export default {
14
13
  const Template = ({context, initialEntries, ...args}) =>
15
14
  <AppContext.Provider value={context}>
16
15
  <MemoryRouter initialEntries={initialEntries}>
17
- <Route path="/:id" component={routerProps => <div className="container page quickaccess"><ResourceViewPage {...args} {...routerProps}/></div>}/>
16
+ <Route path="/:id" component={routerProps => <div className="container quickaccess"><ResourceViewPage {...args} {...routerProps}/></div>}/>
18
17
  </MemoryRouter>
19
18
  </AppContext.Provider>;
20
19
 
@@ -27,4 +26,7 @@ export const ResourceView = Template.bind({});
27
26
  ResourceView.args = {
28
27
  context: defaultAppContext(),
29
28
  initialEntries: ['/8e3874ae-4b40-590b-968a-418f704b9d9a']
30
- };
29
+ };
30
+ ResourceView.parameters = {
31
+ css: "ext_quickaccess"
32
+ };
@@ -11,6 +11,15 @@ class Search extends React.Component {
11
11
  this.searchInputRef = React.createRef();
12
12
  }
13
13
 
14
+ /**
15
+ * ComponentDidMount
16
+ * Invoked immediately after component is inserted into the tree
17
+ * @return {void}
18
+ */
19
+ componentDidMount() {
20
+ this.focus();
21
+ }
22
+
14
23
  /**
15
24
  * Get the translate function
16
25
  * @returns {function(...[*]=)}
@@ -20,7 +29,10 @@ class Search extends React.Component {
20
29
  }
21
30
 
22
31
  focus() {
23
- this.searchInputRef.current.focus();
32
+ const canFocus = document.activeElement === document.body || document.activeElement === null;
33
+ if (canFocus) {
34
+ this.searchInputRef.current.focus();
35
+ }
24
36
  }
25
37
 
26
38
  handleInputChange(event) {
@@ -1,6 +1,5 @@
1
1
  import React from "react";
2
2
  import {MemoryRouter, Route} from "react-router-dom";
3
- import "../../../css/themes/default/ext_quickaccess.css";
4
3
  import PropTypes from "prop-types";
5
4
  import AppContext from "../../contexts/AppContext";
6
5
  import Search from "./Search";
@@ -14,7 +13,7 @@ export default {
14
13
  const Template = ({context, ...args}) =>
15
14
  <AppContext.Provider value={context}>
16
15
  <MemoryRouter initialEntries={['/']}>
17
- <Route component={routerProps => <div className="container page quickaccess"><Search {...args} {...routerProps}/></div>}/>
16
+ <Route component={routerProps => <div className="container quickaccess"><Search {...args} {...routerProps}/></div>}/>
18
17
  </MemoryRouter>
19
18
  </AppContext.Provider>;
20
19
 
@@ -23,11 +22,10 @@ Template.propTypes = {
23
22
  };
24
23
 
25
24
 
26
-
27
25
  export const Initial = Template.bind({});
28
26
  Initial.args = {
29
27
  context: defaultAppContext(),
30
28
  };
31
-
32
-
33
-
29
+ Initial.parameters = {
30
+ css: "ext_quickaccess"
31
+ };
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Passbolt ~ Open source password manager for teams
3
+ * Copyright (c) 2020 Passbolt SA (https://www.passbolt.com)
4
+ *
5
+ * Licensed under GNU Affero General Public License version 3 of the or any later version.
6
+ * For full copyright and license information, please see the LICENSE.txt
7
+ * Redistributions of files must retain the above copyright notice.
8
+ *
9
+ * @copyright Copyright (c) 2020 Passbolt SA (https://www.passbolt.com)
10
+ * @license https://opensource.org/licenses/AGPL-3.0 AGPL License
11
+ * @link https://www.passbolt.com Passbolt(tm)
12
+ * @since 3.3.0
13
+ */
14
+
15
+ import * as React from "react";
16
+ import PropTypes from "prop-types";
17
+ import {withAppContext} from "./AppContext";
18
+
19
+ /**
20
+ * Context related to prepare a resource ( name, url, username, password.)
21
+ */
22
+ export const PrepareResourceContext = React.createContext({
23
+ settings: null, // The current settings of generators
24
+ lastGeneratedPassword: null, // The last password generated
25
+ resourcePrepared: null, // The resource prepared
26
+ onPrepareResource: () => {}, // Whenever a resource has been prepared
27
+ onPasswordGenerated: () => {}, // Whenever the a password has been generated with the generator
28
+ onLastGeneratedPasswordCleared: () => {}, // Whenever the last generated password must be cleared
29
+ getSettings: () => {}, // Whenever the settings must be get
30
+ getLastGeneratedPassword: () => {}, // Whenever the last generated password must be get
31
+ getPreparedResource: () => {} // Whenever the prepared resource must be get
32
+ });
33
+
34
+ /**
35
+ * The related context provider
36
+ */
37
+ class PrepareResourceContextProvider extends React.Component {
38
+ /**
39
+ * Default constructor
40
+ * @param props The component props
41
+ */
42
+ constructor(props) {
43
+ super(props);
44
+ this.state = this.defaultState;
45
+ }
46
+
47
+ /**
48
+ * Returns the default component state
49
+ */
50
+ get defaultState() {
51
+ return {
52
+ settings: null, // The current settings of generators
53
+ lastGeneratedPassword: null, // The last password generated
54
+ resourcePrepared: null, // The resource prepared
55
+ onPrepareResource: this.onPrepareResource.bind(this), // Whenever a resource has been prepared
56
+ onPasswordGenerated: this.onPasswordGenerated.bind(this), // Whenever the a password has been generated with the generator
57
+ getSettings: this.getSettings.bind(this), // Whenever the settings must be get
58
+ getLastGeneratedPassword: this.getLastGeneratedPassword.bind(this), // Whenever the last generated password must be get
59
+ getPreparedResource: this.getPreparedResource.bind(this) // Whenever the prepared resource must be get
60
+ };
61
+ }
62
+
63
+ /**
64
+ * Whenever the component has been mounted
65
+ */
66
+ async componentDidMount() {
67
+ this.initializePasswordGenerator();
68
+ }
69
+
70
+ /**
71
+ * Initialize the password generator
72
+ */
73
+ async initializePasswordGenerator() {
74
+ if (this.props.context.isAuthenticated) {
75
+ const generatorSettings = await this.props.context.port.request('passbolt.password-generator.settings');
76
+ await this.setState({
77
+ settings: generatorSettings
78
+ });
79
+ }
80
+ }
81
+
82
+ /**
83
+ * Whenever the component updated
84
+ * @param previousProps The component previous props
85
+ */
86
+ async componentDidUpdate(previousProps) {
87
+ await this.handleIsAuthenticatedChange(previousProps.context.isAuthenticated);
88
+ }
89
+
90
+ /**
91
+ * Whenever the contextual isAuthenticated has changed
92
+ * @param previousIsAuthenticated The previous isAuthenticated
93
+ */
94
+ async handleIsAuthenticatedChange(previousIsAuthenticated) {
95
+ // This is a way to tell that the user has been authenticated
96
+ const isAuthenticatedNow = !previousIsAuthenticated && this.props.context.isAuthenticated;
97
+ if (isAuthenticatedNow) {
98
+ this.initializePasswordGenerator();
99
+ }
100
+ }
101
+
102
+ /**
103
+ * Whenever a password has been generated with the generator
104
+ * @param password The generated password
105
+ */
106
+ async onPasswordGenerated(password, generator) {
107
+ await this.changeGenerator(generator);
108
+ await this.updateGeneratedPassword(password);
109
+ }
110
+
111
+ /**
112
+ * Whenever a resource has been prepared by the user
113
+ * @param resource The prepared resource
114
+ */
115
+ async onPrepareResource(resource) {
116
+ this.setState({resourcePrepared: resource});
117
+ }
118
+
119
+ /**
120
+ * Whenever the last generated password must be cleared
121
+ */
122
+ clearLastGeneratedPassword() {
123
+ this.setState({lastGeneratedPassword: null});
124
+ }
125
+
126
+ /**
127
+ * Whenever the prepared resource must be cleared
128
+ */
129
+ clearPreparedResource() {
130
+ this.setState({resourcePrepared: null});
131
+ }
132
+
133
+ /**
134
+ * Change the default password generator
135
+ * @param generator A generator
136
+ */
137
+ changeGenerator(generator) {
138
+ const settings = {... this.state.settings};
139
+ settings.default_generator = generator.type;
140
+ settings.generators = settings.generators.map(defaultGenerator => defaultGenerator.type === generator.type ? generator : defaultGenerator);
141
+ this.setState({settings});
142
+ }
143
+
144
+ /**
145
+ * Updates the last generated password
146
+ * @param lastGeneratedPassword The last generated password
147
+ */
148
+ async updateGeneratedPassword(lastGeneratedPassword) {
149
+ await this.setState({lastGeneratedPassword});
150
+ }
151
+
152
+ /**
153
+ * Get the settings of the password generator
154
+ * @returns {Promise<*>}
155
+ */
156
+ async getSettings() {
157
+ if (!this.state.settings) {
158
+ await this.initializePasswordGenerator();
159
+ }
160
+ return this.state.settings;
161
+ }
162
+
163
+ /**
164
+ * Get the last generated password
165
+ * @returns {null|*}
166
+ */
167
+ getLastGeneratedPassword() {
168
+ const lastGeneratedPassword = this.state.lastGeneratedPassword;
169
+ this.clearLastGeneratedPassword();
170
+ return lastGeneratedPassword;
171
+ }
172
+
173
+ /**
174
+ * Get the prepared resource
175
+ * @returns {null|*}
176
+ */
177
+ getPreparedResource() {
178
+ const resourcePrepared = this.state.resourcePrepared;
179
+ this.clearPreparedResource();
180
+ return resourcePrepared;
181
+ }
182
+
183
+ /**
184
+ * Render the component
185
+ * @returns {JSX}
186
+ */
187
+ render() {
188
+ return (
189
+ <PrepareResourceContext.Provider value={this.state}>
190
+ {this.props.children}
191
+ </PrepareResourceContext.Provider>
192
+ );
193
+ }
194
+ }
195
+
196
+ PrepareResourceContextProvider.displayName = 'PrepareResourceContextProvider';
197
+ PrepareResourceContextProvider.propTypes = {
198
+ context: PropTypes.any, // The application context
199
+ children: PropTypes.any,
200
+ };
201
+
202
+
203
+ export default withAppContext(PrepareResourceContextProvider);
204
+
205
+ /**
206
+ * Generate Password Context Consumer HOC
207
+ * @param WrappedComponent
208
+ */
209
+ export function withPrepareResourceContext(WrappedComponent) {
210
+ return class WithPrepareResource extends React.Component {
211
+ render() {
212
+ return (
213
+ <PrepareResourceContext.Consumer>
214
+ {
215
+ PrepareResourceContext => <WrappedComponent prepareResourceContext={PrepareResourceContext} {...this.props} />
216
+ }
217
+ </PrepareResourceContext.Consumer>
218
+ );
219
+ }
220
+ };
221
+ }