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
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Passbolt ~ Open source password manager for teams
3
+ * Copyright (c) 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) 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.4.0
13
+ */
14
+ import React from "react";
15
+ import PropTypes from "prop-types";
16
+ import AppContext from "../../../contexts/AppContext";
17
+ import {withResourceWorkspace} from "../../../contexts/ResourceWorkspaceContext";
18
+
19
+ class DisplayDragResource extends React.Component {
20
+ /**
21
+ * the resource selected
22
+ * @returns {*}
23
+ */
24
+ get selectedResources() {
25
+ return this.props.resourceWorkspaceContext.selectedResources;
26
+ }
27
+
28
+ /**
29
+ * is multiple resources selected
30
+ * @returns {boolean}
31
+ */
32
+ isMultipleSelected() {
33
+ return this.props.resourceWorkspaceContext.selectedResources.length > 1;
34
+ }
35
+
36
+ /**
37
+ * Get the number of resources
38
+ * @returns {string|*}
39
+ */
40
+ get numberOfResources() {
41
+ return this.props.resourceWorkspaceContext.selectedResources.length > 99 ? '99+' : this.props.resourceWorkspaceContext.selectedResources.length;
42
+ }
43
+
44
+ /**
45
+ * Render the component.
46
+ * @returns {JSX}
47
+ */
48
+ render() {
49
+ return (
50
+ <div className={`${this.isMultipleSelected() ? "drag-and-drop-multiple" : "drag-and-drop"}`}>
51
+ {this.selectedResources[0].name}
52
+ {this.isMultipleSelected() &&
53
+ <span className="count">
54
+ {this.numberOfResources}
55
+ </span>
56
+ }
57
+ </div>
58
+ );
59
+ }
60
+ }
61
+
62
+ DisplayDragResource.contextType = AppContext;
63
+
64
+ DisplayDragResource.propTypes = {
65
+ resourceWorkspaceContext: PropTypes.any
66
+ };
67
+
68
+ export default withResourceWorkspace(DisplayDragResource);
@@ -29,6 +29,8 @@ import {withContextualMenu} from "../../../contexts/ContextualMenuContext";
29
29
  import sanitizeUrl, {urlProtocols} from "../../../lib/Sanitize/sanitizeUrl";
30
30
  import {Trans, withTranslation} from "react-i18next";
31
31
  import {DateTime} from "luxon";
32
+ import {withDrag} from "../../../contexts/DragContext";
33
+ import DisplayDragResource from "./DisplayDragResource";
32
34
 
33
35
  /**
34
36
  * This component allows to display the filtered resources into a grid
@@ -53,7 +55,6 @@ class DisplayResourcesList extends React.Component {
53
55
  return {
54
56
  resources: [], // The current list of resources to display
55
57
  selectStrategy: "",
56
- previewedPassword: null, // The previewed password.
57
58
  };
58
59
  }
59
60
 
@@ -109,7 +110,6 @@ class DisplayResourcesList extends React.Component {
109
110
  */
110
111
  createRefs() {
111
112
  this.listRef = React.createRef();
112
- this.dragFeedbackElement = React.createRef();
113
113
  }
114
114
 
115
115
  /**
@@ -130,7 +130,6 @@ class DisplayResourcesList extends React.Component {
130
130
  async handleResourceSelected(event, resource) {
131
131
  event.preventDefault();
132
132
  event.stopPropagation();
133
-
134
133
  await this.selectResource(resource, event);
135
134
  }
136
135
 
@@ -164,6 +163,8 @@ class DisplayResourcesList extends React.Component {
164
163
  }
165
164
 
166
165
  async handleCheckboxWrapperClick(event, resource) {
166
+ // Prevent event fired twice due to the input + label
167
+ event.preventDefault();
167
168
  /*
168
169
  * We want the td to extend the clickable area of the checkbox.
169
170
  * If we propagate the event, the tr will listen to the click and select only the clicked row.
@@ -216,7 +217,7 @@ class DisplayResourcesList extends React.Component {
216
217
  * @param resource A resource
217
218
  */
218
219
  isResourceSelected(resource) {
219
- return this.props.resourceWorkspaceContext.selectedResources.some(selectedResource => resource.id === selectedResource.id);
220
+ return this.selectedResources.some(selectedResource => resource.id === selectedResource.id);
220
221
  }
221
222
 
222
223
  async handleCopyUsernameClick(ev, resource) {
@@ -377,17 +378,15 @@ class DisplayResourcesList extends React.Component {
377
378
  if (!this.isResourceSelected(resource)) {
378
379
  await this.props.resourceWorkspaceContext.onResourceSelected.single(resource);
379
380
  }
380
- event.dataTransfer.setDragImage(this.dragFeedbackElement.current, 5, 5);
381
381
  const draggedItems = {resources: this.props.resourceWorkspaceContext.selectedResources, folders: []};
382
- const triggerEvent = document.createEvent("CustomEvent");
383
- triggerEvent.initCustomEvent("passbolt.resources.drag-start", true, true, draggedItems);
384
- document.dispatchEvent(triggerEvent);
382
+ this.props.dragContext.onDragStart(event, DisplayDragResource, draggedItems);
385
383
  }
386
384
 
385
+ /**
386
+ * Handle when the user stop dragging content.
387
+ */
387
388
  handleDragEndEvent() {
388
- const trigerEvent = document.createEvent("CustomEvent");
389
- trigerEvent.initCustomEvent("passbolt.resources.drag-end", true, true);
390
- document.dispatchEvent(trigerEvent);
389
+ this.props.dragContext.onDragEnd();
391
390
  }
392
391
 
393
392
  /**
@@ -549,7 +548,9 @@ class DisplayResourcesList extends React.Component {
549
548
  <div className="ready">
550
549
  <div className="input checkbox">
551
550
  <input type="checkbox" id={`checkbox_multiple_select_checkbox_${resource.id}`} checked={isSelected} readOnly={true}/>
552
- <label htmlFor={`checkbox_multiple_select_checkbox_${resource.id}`}></label>
551
+ <label htmlFor={`checkbox_multiple_select_checkbox_${resource.id}`}>
552
+ <span className="visually-hidden"><Trans>Select resource</Trans></span>
553
+ </label>
553
554
  </div>
554
555
  </div>
555
556
  </td>
@@ -608,37 +609,6 @@ class DisplayResourcesList extends React.Component {
608
609
  );
609
610
  }
610
611
 
611
- /**
612
- * Render the drag tooltip of the selected resources
613
- * @returns {JSX.Element}
614
- */
615
- renderDragFeedback() {
616
- const isSelected = this.props.resourceWorkspaceContext.selectedResources.length > 0;
617
- const isMultipleSelected = this.props.resourceWorkspaceContext.selectedResources.length > 1;
618
- let dragFeedbackText = "";
619
- let dragElementClassname = "";
620
-
621
- if (isSelected) {
622
- const isSelected = resource => resource.id === this.props.resourceWorkspaceContext.selectedResources[0].id;
623
- const firstSelectedResource = this.resources.find(isSelected);
624
- if (firstSelectedResource) {
625
- dragElementClassname = isMultipleSelected ? "drag-and-drop-multiple" : "drag-and-drop";
626
- dragFeedbackText = firstSelectedResource.name;
627
- }
628
- }
629
-
630
- return (
631
- <div ref={this.dragFeedbackElement} className={dragElementClassname}>
632
- {dragFeedbackText}
633
- {isMultipleSelected &&
634
- <span className="count">
635
- {this.props.resourceWorkspaceContext.selectedResources.length}
636
- </span>
637
- }
638
- </div>
639
- );
640
- }
641
-
642
612
  /**
643
613
  * Get the translate function
644
614
  * @returns {function(...[*]=)}
@@ -674,7 +644,7 @@ class DisplayResourcesList extends React.Component {
674
644
  <p><Trans>Share a password with this group or wait for a team member to share one with this group.</Trans></p>
675
645
  </div>
676
646
  }
677
- {isEmpty && filterType === ResourceWorkspaceFilterTypes.FOLDER &&
647
+ {isEmpty && (filterType === ResourceWorkspaceFilterTypes.FOLDER || filterType === ResourceWorkspaceFilterTypes.ROOT_FOLDER) &&
678
648
  <div className="empty-content">
679
649
  <h2><Trans>No passwords in this folder yet.</Trans></h2>
680
650
  <p><Trans>It does feel a bit empty here.</Trans></p>
@@ -706,7 +676,6 @@ class DisplayResourcesList extends React.Component {
706
676
  }
707
677
  {!isEmpty &&
708
678
  <React.Fragment>
709
- {this.renderDragFeedback()}
710
679
  <div className="tableview-header">
711
680
  <table>
712
681
  <thead>
@@ -714,11 +683,14 @@ class DisplayResourcesList extends React.Component {
714
683
  <th className="cell-multiple-select selections s-cell">
715
684
  <div className="input checkbox">
716
685
  <input
686
+ id="passwords-select-all"
717
687
  type="checkbox"
718
688
  name="select all"
719
689
  checked={selectAll}
720
690
  onChange={this.handleSelectAllChange}/>
721
- <label htmlFor="js-passwords-select-all">select all</label>
691
+ <label htmlFor="passwords-select-all">
692
+ <span className="visually-hidden">select all</span>
693
+ </label>
722
694
  </div>
723
695
  </th>
724
696
  <th className="cell-favorite selections s-cell sortable">
@@ -840,7 +812,8 @@ DisplayResourcesList.propTypes = {
840
812
  actionFeedbackContext: PropTypes.any, // The action feedback context
841
813
  contextualMenuContext: PropTypes.any, // The contextual menu context
842
814
  history: PropTypes.any,
815
+ dragContext: PropTypes.any,
843
816
  t: PropTypes.func, // The translation function
844
817
  };
845
818
 
846
- export default withAppContext(withRouter(withActionFeedback(withContextualMenu(withResourceWorkspace(withTranslation('common')(DisplayResourcesList))))));
819
+ export default withAppContext(withRouter(withActionFeedback(withContextualMenu(withResourceWorkspace(withDrag(withTranslation('common')(DisplayResourcesList)))))));
@@ -20,6 +20,7 @@ import AppContext from "../../../contexts/AppContext";
20
20
  import {BrowserRouter as Router} from "react-router-dom";
21
21
  import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
22
22
  import DisplayResourcesList from "./DisplayResourcesList";
23
+ import {DragContext} from "../../../contexts/DragContext";
23
24
 
24
25
  /**
25
26
  * The DisplayResourcesListPage component represented as a page
@@ -35,7 +36,9 @@ export default class DisplayResourcesListPage {
35
36
  <MockTranslationProvider>
36
37
  <AppContext.Provider value={appContext}>
37
38
  <Router>
38
- <DisplayResourcesList {...props}/>
39
+ <DragContext.Provider value={props.dragContext}>
40
+ <DisplayResourcesList {...props}/>
41
+ </DragContext.Provider>
39
42
  </Router>
40
43
  </AppContext.Provider>
41
44
  </MockTranslationProvider>
@@ -292,7 +292,7 @@ class DisplayResourcesWorkspaceMenu extends React.Component {
292
292
  * Returns true if the user can export
293
293
  */
294
294
  canExport() {
295
- return this.hasResourceSelected() && this.props.context.siteSettings.settings.passbolt.plugins.export;
295
+ return this.hasResourceSelected() && this.props.context.siteSettings.canIUse("export");
296
296
  }
297
297
 
298
298
  /**
@@ -457,7 +457,7 @@ class DisplayResourcesWorkspaceMenu extends React.Component {
457
457
  <li>
458
458
  <a className={`button button-toggle info ${this.hasLockDetail() ? "selected" : ""}`}
459
459
  onClick={this.handleViewDetailClickEvent}>
460
- <Icon name="info-circle"/>
460
+ <Icon name="info-circle" big={true}/>
461
461
  <span className="visuallyhidden"><Trans>View detail</Trans></span>
462
462
  </a>
463
463
  </li>
@@ -12,13 +12,7 @@ export function defaultAppContext(appContext) {
12
12
  port: new MockPort(),
13
13
  userSettings: new UserSettings(userSettingsFixture),
14
14
  siteSettings: {
15
- settings: {
16
- passbolt: {
17
- plugins: {
18
- export: 'something'
19
- }
20
- }
21
- }
15
+ canIUse: () => true
22
16
  }
23
17
  };
24
18
  return Object.assign(defaultAppContext, appContext || {});
@@ -16,7 +16,6 @@ import PropTypes from "prop-types";
16
16
  import {withAppContext} from "../../../contexts/AppContext";
17
17
  import Icon from "../../Common/Icons/Icon";
18
18
  import Tooltip from "../../Common/Tooltip/Tooltip";
19
- import SecretComplexity from "../../../../shared/lib/Secret/SecretComplexity";
20
19
  import {withActionFeedback} from "../../../contexts/ActionFeedbackContext";
21
20
  import {withDialog} from "../../../contexts/DialogContext";
22
21
  import NotifyError from "../../Common/Error/NotifyError/NotifyError";
@@ -25,6 +24,10 @@ import FormSubmitButton from "../../Common/Inputs/FormSubmitButton/FormSubmitBut
25
24
  import FormCancelButton from "../../Common/Inputs/FormSubmitButton/FormCancelButton";
26
25
  import {withResourceWorkspace} from "../../../contexts/ResourceWorkspaceContext";
27
26
  import {Trans, withTranslation} from "react-i18next";
27
+ import {SecretGenerator} from "../../../../shared/lib/SecretGenerator/SecretGenerator";
28
+ import GenerateResourcePassword from "../../ResourcePassword/GenerateResourcePassword/GenerateResourcePassword";
29
+ import {withResourcePasswordGeneratorContext} from "../../../contexts/ResourcePasswordGeneratorContext";
30
+ import {SecretGeneratorComplexity} from "../../../../shared/lib/SecretGenerator/SecretGeneratorComplexity";
28
31
 
29
32
  /** Resource password max length */
30
33
  const RESOURCE_PASSWORD_MAX_LENGTH = 4096;
@@ -74,6 +77,7 @@ class EditResource extends Component {
74
77
  this.handleNameInputKeyUp = this.handleNameInputKeyUp.bind(this);
75
78
  this.handlePasswordInputKeyUp = this.handlePasswordInputKeyUp.bind(this);
76
79
  this.handleViewPasswordButtonClick = this.handleViewPasswordButtonClick.bind(this);
80
+ this.handleOpenGenerator = this.handleOpenGenerator.bind(this);
77
81
  this.handleGeneratePasswordButtonClick = this.handleGeneratePasswordButtonClick.bind(this);
78
82
  this.handleDescriptionInputFocus = this.handleDescriptionInputFocus.bind(this);
79
83
  this.handleDescriptionInputBlur = this.handleDescriptionInputBlur.bind(this);
@@ -90,10 +94,21 @@ class EditResource extends Component {
90
94
  this.descriptionInputRef = React.createRef();
91
95
  }
92
96
 
97
+ /**
98
+ * Whenever the component has been mounted
99
+ */
93
100
  componentDidMount() {
94
101
  this.initialize();
95
102
  }
96
103
 
104
+ /**
105
+ * Whenever the component has been changed (props)
106
+ * @param prevProps The previous component props
107
+ */
108
+ componentDidUpdate(prevProps) {
109
+ this.handleLastGeneratedPasswordChanged(prevProps.resourcePasswordGeneratorContext.lastGeneratedPassword);
110
+ }
111
+
97
112
  async initialize() {
98
113
  const isDecrypted = await this.decryptSecret();
99
114
  if (isDecrypted) {
@@ -102,6 +117,28 @@ class EditResource extends Component {
102
117
  }
103
118
  }
104
119
 
120
+ /*
121
+ * =============================================================
122
+ * Resource password generator
123
+ * =============================================================
124
+ */
125
+ get currentGeneratorConfiguration() {
126
+ const type = this.props.resourcePasswordGeneratorContext.settings.default_generator;
127
+ return this.props.resourcePasswordGeneratorContext.settings.generators.find(generator => generator.type === type);
128
+ }
129
+
130
+ /**
131
+ * Whenever a new password has been generated through the generator
132
+ * @param previousLastGeneratedPassword The previous last generated password value
133
+ */
134
+ handleLastGeneratedPasswordChanged(previousLastGeneratedPassword) {
135
+ const currentLastGeneratedPassword = this.props.resourcePasswordGeneratorContext.lastGeneratedPassword;
136
+ const hasLastGeneratedPasswordChanged = previousLastGeneratedPassword !== currentLastGeneratedPassword;
137
+ if (hasLastGeneratedPasswordChanged) {
138
+ this.setState({password: currentLastGeneratedPassword});
139
+ }
140
+ }
141
+
105
142
  /*
106
143
  * =============================================================
107
144
  * Resource type helpers
@@ -457,10 +494,17 @@ class EditResource extends Component {
457
494
  if (this.hasAllInputDisabled()) {
458
495
  return;
459
496
  }
460
- const password = SecretComplexity.generate();
497
+ const password = SecretGenerator.generate(this.currentGeneratorConfiguration);
461
498
  this.setState({password: password});
462
499
  }
463
500
 
501
+ /**
502
+ * Whenever the user wants to open the password generator
503
+ */
504
+ handleOpenGenerator() {
505
+ this.props.dialogContext.open(GenerateResourcePassword);
506
+ }
507
+
464
508
  /**
465
509
  * Handle close button click.
466
510
  */
@@ -539,52 +583,7 @@ class EditResource extends Component {
539
583
  return plaintext;
540
584
  }
541
585
 
542
- /*
543
- * =============================================================
544
- * Security token style
545
- * =============================================================
546
- */
547
- /**
548
- * Get the password input style.
549
- * @return {Object}
550
- */
551
- getPasswordInputStyle() {
552
- if (this.state.passwordInputHasFocus) {
553
- const backgroundColor = this.props.context.userSettings.getSecurityTokenBackgroundColor();
554
- const textColor = this.props.context.userSettings.getSecurityTokenTextColor();
555
586
 
556
- return {
557
- background: backgroundColor,
558
- color: textColor
559
- };
560
- }
561
-
562
- return {
563
- background: "",
564
- color: "",
565
- };
566
- }
567
-
568
- /**
569
- * Get the security token style.
570
- * @return {Object}
571
- */
572
- getSecurityTokenStyle() {
573
- const backgroundColor = this.props.context.userSettings.getSecurityTokenBackgroundColor();
574
- const textColor = this.props.context.userSettings.getSecurityTokenTextColor();
575
-
576
- if (this.state.passwordInputHasFocus) {
577
- return {
578
- background: textColor,
579
- color: backgroundColor,
580
- };
581
- }
582
-
583
- return {
584
- background: backgroundColor,
585
- color: textColor,
586
- };
587
- }
588
587
 
589
588
  /*
590
589
  * =============================================================
@@ -638,6 +637,14 @@ class EditResource extends Component {
638
637
  return (this.state.isSecretDecrypting && this.mustEncryptDescription());
639
638
  }
640
639
 
640
+ /**
641
+ * Returns true if the logged in user can use the password generator capability.
642
+ * @returns {boolean}
643
+ */
644
+ get canUsePasswordGenerator() {
645
+ return this.props.context.siteSettings.canIUse('passwordGenerator');
646
+ }
647
+
641
648
  /**
642
649
  * Get the translate function
643
650
  * @returns {function(...[*]=)}
@@ -652,10 +659,8 @@ class EditResource extends Component {
652
659
  * =============================================================
653
660
  */
654
661
  render() {
655
- const passwordInputStyle = this.getPasswordInputStyle();
656
- const securityTokenStyle = this.getSecurityTokenStyle();
657
- const securityTokenCode = this.props.context.userSettings.getSecurityTokenCode();
658
- const passwordStrength = SecretComplexity.getStrength(this.state.password);
662
+ const passwordEntropy = SecretGenerator.entropy(this.state.password);
663
+ const passwordStrength = SecretGeneratorComplexity.strength(passwordEntropy);
659
664
  const passwordPlaceholder = this.getPasswordInputPlaceholder();
660
665
  /*
661
666
  * The parser can't find the translation for passwordStrength.label
@@ -680,7 +685,7 @@ class EditResource extends Component {
680
685
  disabled={this.hasAllInputDisabled()} ref={this.nameInputRef} className="required fluid" maxLength="64"
681
686
  required="required" autoComplete="off" autoFocus={true}/>
682
687
  {this.state.nameError &&
683
- <div className="name error message">{this.state.nameError}</div>
688
+ <div className="name error-message">{this.state.nameError}</div>
684
689
  }
685
690
  </div>
686
691
  <div className={`input text ${this.state.uriError ? "error" : ""}`}>
@@ -689,7 +694,7 @@ class EditResource extends Component {
689
694
  autoComplete="off" value={this.state.uri} onChange={this.handleInputChange} placeholder={this.translate("URI")}
690
695
  disabled={this.hasAllInputDisabled()}/>
691
696
  {this.state.uriError &&
692
- <div className="error message">{this.state.uriError}</div>
697
+ <div className="error-message">{this.state.uriError}</div>
693
698
  }
694
699
  </div>
695
700
  <div className={`input text ${this.state.usernameError ? "error" : ""}`}>
@@ -698,7 +703,7 @@ class EditResource extends Component {
698
703
  autoComplete="off" value={this.state.username} onChange={this.handleInputChange} placeholder={this.translate("Username")}
699
704
  disabled={this.hasAllInputDisabled()}/>
700
705
  {this.state.usernameError &&
701
- <div className="error message">{this.state.usernameError}</div>
706
+ <div className="error-message">{this.state.usernameError}</div>
702
707
  }
703
708
  </div>
704
709
  <div className={`input-password-wrapper input required ${this.state.passwordError ? "error" : ""}`}>
@@ -709,18 +714,16 @@ class EditResource extends Component {
709
714
  onKeyUp={this.handlePasswordInputKeyUp} value={this.state.password}
710
715
  placeholder={passwordPlaceholder} onFocus={this.handlePasswordInputFocus}
711
716
  onBlur={this.handlePasswordInputBlur} onChange={this.handleInputChange}
712
- disabled={this.hasAllInputDisabled() || this.isPasswordDisabled()} style={passwordInputStyle} ref={this.passwordInputRef}/>
713
- <div className="security-token"
714
- style={securityTokenStyle}>{securityTokenCode}</div>
717
+ disabled={this.hasAllInputDisabled() || this.isPasswordDisabled()}
718
+ autoComplete="new-password"
719
+ ref={this.passwordInputRef}/>
720
+ <a onClick={this.handleViewPasswordButtonClick}
721
+ className={`password-view button button-icon toggle ${this.state.viewPassword ? "selected" : ""}`}>
722
+ <Icon name='eye-open' big={true}/>
723
+ <span className="visually-hidden">view</span>
724
+ </a>
715
725
  </div>
716
726
  <ul className="actions inline">
717
- <li>
718
- <a onClick={this.handleViewPasswordButtonClick}
719
- className={`password-view button button-icon toggle ${this.state.viewPassword ? "selected" : ""} ${this.hasAllInputDisabled() ? "disabled" : ""}`}>
720
- <Icon name='eye-open' big={true}/>
721
- <span className="visually-hidden">view</span>
722
- </a>
723
- </li>
724
727
  <li>
725
728
  <a onClick={this.handleGeneratePasswordButtonClick}
726
729
  className={`password-generate button-icon button ${this.hasAllInputDisabled() ? "disabled" : ""}`}>
@@ -728,16 +731,32 @@ class EditResource extends Component {
728
731
  <span className="visually-hidden">generate</span>
729
732
  </a>
730
733
  </li>
734
+ {this.canUsePasswordGenerator &&
735
+ <li>
736
+ <a onClick={this.handleOpenGenerator}
737
+ className="password-generator button-icon button">
738
+ <Icon name='cog' big={true}/>
739
+ <span className="visually-hidden">open generator</span>
740
+ </a>
741
+ </li>
742
+ }
731
743
  </ul>
732
744
  <div className={`password-complexity ${passwordStrength.id}`}>
733
745
  <span className="progress">
734
746
  <span className={`progress-bar ${passwordStrength.id}`}/>
735
747
  </span>
736
- <span className="complexity-text"><Trans>complexity:</Trans> <strong>{this.translate(passwordStrength.label)}</strong></span>
748
+ <span className="complexity-text">
749
+ <div>
750
+ <Trans>Complexity:</Trans> <strong>{this.translate(passwordStrength.label)}</strong>
751
+ </div>
752
+ <div>
753
+ <Trans>Entropy:</Trans> <strong>{passwordEntropy.toFixed(1)} bits</strong>
754
+ </div>
755
+ </span>
737
756
  </div>
738
757
  {this.state.passwordError &&
739
758
  <div className="input text">
740
- <div className="password message error">{this.state.passwordError}</div>
759
+ <div className="password error-message">{this.state.passwordError}</div>
741
760
  </div>
742
761
  }
743
762
  {this.state.passwordWarning &&
@@ -770,7 +789,7 @@ class EditResource extends Component {
770
789
  onKeyUp={this.handleDescriptionInputKeyUp}>
771
790
  </textarea>
772
791
  {this.state.descriptionError &&
773
- <div className="error message">{this.state.descriptionError}</div>
792
+ <div className="error-message">{this.state.descriptionError}</div>
774
793
  }
775
794
  {this.state.descriptionWarning &&
776
795
  <div className="warning message">{this.state.descriptionWarning}</div>
@@ -790,10 +809,16 @@ class EditResource extends Component {
790
809
  EditResource.propTypes = {
791
810
  context: PropTypes.any, // The application context
792
811
  onClose: PropTypes.func,
812
+ resourcePasswordGeneratorContext: PropTypes.any, // The resource password generator context
793
813
  resourceWorkspaceContext: PropTypes.any, // The resource workspace context
794
814
  actionFeedbackContext: PropTypes.any, // The action feedback context
795
815
  dialogContext: PropTypes.any, // The dialog context,
796
816
  t: PropTypes.func, // The translation function
797
817
  };
798
818
 
799
- export default withAppContext(withResourceWorkspace(withActionFeedback(withDialog(withTranslation('common')(EditResource)))));
819
+ export default withAppContext(
820
+ withResourceWorkspace(
821
+ withResourcePasswordGeneratorContext(
822
+ withActionFeedback(
823
+ withDialog(
824
+ withTranslation('common')(EditResource))))));
@@ -33,7 +33,86 @@ export function defaultProps() {
33
33
  id: mockResource.id
34
34
  }
35
35
  },
36
- onClose: jest.fn()
36
+ resourcePasswordGeneratorContext: {
37
+ settings: {
38
+ "default_generator": "passphrase",
39
+ "generators": [
40
+ {
41
+ "name": "Password",
42
+ "type": "password",
43
+ "default_options": {
44
+ "length": 18,
45
+ "look_alike": true,
46
+ "min_length": 8,
47
+ "max_length": 128,
48
+ },
49
+ "masks": [
50
+ {
51
+ "name": "upper",
52
+ "label": "A-Z",
53
+ "characters": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
54
+ },
55
+ {
56
+ "name": "lower",
57
+ "label": "a-z",
58
+ "characters": "abcdefghijklmnopqrstuvwxyz",
59
+ },
60
+ {
61
+ "name": "digit",
62
+ "label": "0-9",
63
+ "characters": "0123456789",
64
+ "required": true,
65
+ },
66
+ {
67
+ "name": "parenthesis",
68
+ "label": "{ [ ( | ) ] ] }",
69
+ "characters": "([|])",
70
+ },
71
+ {
72
+ "name": "special_char1",
73
+ "label": "# $ % & @ ^ ~",
74
+ "characters": "#$%&@^~"
75
+ },
76
+ {
77
+ "name": "special_char2",
78
+ "label": ". , : ;",
79
+ "characters": ".,:;"
80
+ },
81
+ {
82
+ "name": "special_char5",
83
+ "label": "< * + ! ? =",
84
+ "characters": "<*+!?="
85
+ },
86
+ {
87
+ "name": "emoji",
88
+ "label": "๐Ÿ˜˜",
89
+ "characters": "๐Ÿ˜€๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜๐Ÿ˜†๐Ÿ˜…๐Ÿ˜‚๐Ÿคฃ๐Ÿฅฒโ˜บ๏ธ๐Ÿ˜Š๐Ÿ˜‡๐Ÿ™‚๐Ÿ™ƒ๐Ÿ˜‰๐Ÿ˜Œ๐Ÿ˜๐Ÿฅฐ๐Ÿ˜˜๐Ÿ˜—๐Ÿ˜™๐Ÿ˜š๐Ÿ˜‹๐Ÿ˜›๐Ÿ˜๐Ÿ˜œ๐Ÿคช๐Ÿคจ๐Ÿง๐Ÿค“๐Ÿ˜Ž๐Ÿฅธ๐Ÿคฉ๐Ÿฅณ๐Ÿ˜๐Ÿ˜’๐Ÿ˜ž๐Ÿ˜”๐Ÿ˜Ÿ๐Ÿ˜•๐Ÿ™โ˜น๏ธ๐Ÿ˜ฃ๐Ÿ˜–๐Ÿ˜ซ๐Ÿ˜ฉ๐Ÿฅบ๐Ÿ˜ข๐Ÿ˜ญ๐Ÿ˜ค๐Ÿ˜ ๐Ÿ˜ก๐Ÿคฌ๐Ÿคฏ๐Ÿ˜ณ๐Ÿฅต๐Ÿฅถ๐Ÿ˜ฑ๐Ÿ˜จ๐Ÿ˜ฐ๐Ÿ˜ฅ๐Ÿ˜“๐Ÿค—๐Ÿค”๐Ÿคญ๐Ÿคซ๐Ÿคฅ๐Ÿ˜ถ๐Ÿ˜๐Ÿ˜‘๐Ÿ˜ฌ๐Ÿ™„๐Ÿ˜ฏ๐Ÿ˜ฆ๐Ÿ˜ง๐Ÿ˜ฎ๐Ÿ˜ฒ๐Ÿฅฑ๐Ÿ˜ด๐Ÿคค๐Ÿ˜ช๐Ÿ˜ต๐Ÿค๐Ÿฅด๐Ÿคข๐Ÿคฎ๐Ÿคง๐Ÿ˜ท๐Ÿค’๐Ÿค•๐Ÿค‘๐Ÿค ๐Ÿ˜ˆ๐Ÿ‘ฟ๐Ÿ‘น๐Ÿ‘บ๐Ÿคก๐Ÿ’ฉ๐Ÿ‘ป๐Ÿ’€โ˜ ๏ธ๐Ÿ‘ฝ๐Ÿ‘พ๐Ÿค–๐ŸŽƒ๐Ÿ˜บ๐Ÿ˜ธ๐Ÿ˜น๐Ÿ˜ป๐Ÿ˜ผ๐Ÿ˜ฝ๐Ÿ™€๐Ÿ˜ฟ๐Ÿ˜พ"
90
+ },
91
+ {
92
+ "name": "ascii",
93
+ "label": "ascii",
94
+ "characters": "%&ยกยขยฃยคยฅยฆยงยจยฉยชยซยฌยฎยฏยฐยฑยฒยณยตยถยทยธยนยบยปยผยฝยพยฟร€ร รƒร„ร…ร†ร‡รˆร‰รŠร‹รŒรรŽรรร‘ร’ร“ร”ร•ร–ร—ร˜ร™รšร›รœรรžรŸร รกรขรฃรครฅรฆรงรจรฉรชรซรฌรญรฎรฏรฐรฑรฒรณรดรตรถรทรธรนรบรปรผรฝรพรฟล’ล“ล ลกลธฦ’โ€”โ€žโ€ โ€กโ€ขโ€ฆโ€ฐโ‚ฌโ„ข"
95
+ }
96
+ ],
97
+ },
98
+ {
99
+ "name": "Passphrase",
100
+ "type": "passphrase",
101
+ "default_options": {
102
+ "word_count": 8,
103
+ "word_case": "lowercase",
104
+ "min_word": 4,
105
+ "max_word": 40,
106
+ "separator": " "
107
+ },
108
+ }
109
+ ]
110
+ }
111
+ },
112
+ onClose: jest.fn(),
113
+ dialogContext: {
114
+ open: jest.fn()
115
+ }
37
116
  };
38
117
  }
39
118