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
@@ -17,7 +17,6 @@ import PropTypes from "prop-types";
17
17
  import {withAppContext} from "../../../contexts/AppContext";
18
18
  import Icon from "../../Common/Icons/Icon";
19
19
  import Tooltip from "../../Common/Tooltip/Tooltip";
20
- import SecretComplexity from "../../../../shared/lib/Secret/SecretComplexity";
21
20
  import {withActionFeedback} from "../../../contexts/ActionFeedbackContext";
22
21
  import NotifyError from "../../Common/Error/NotifyError/NotifyError";
23
22
  import {withDialog} from "../../../contexts/DialogContext";
@@ -27,6 +26,11 @@ import FormSubmitButton from "../../Common/Inputs/FormSubmitButton/FormSubmitBut
27
26
  import FormCancelButton from "../../Common/Inputs/FormSubmitButton/FormCancelButton";
28
27
 
29
28
  import {Trans, withTranslation} from "react-i18next";
29
+ import GenerateResourcePassword from "../../ResourcePassword/GenerateResourcePassword/GenerateResourcePassword";
30
+ import {SecretGenerator} from "../../../../shared/lib/SecretGenerator/SecretGenerator";
31
+ import {withResourcePasswordGeneratorContext} from "../../../contexts/ResourcePasswordGeneratorContext";
32
+ import {SecretGeneratorComplexity} from "../../../../shared/lib/SecretGenerator/SecretGeneratorComplexity";
33
+
30
34
 
31
35
  /** Resource password max length */
32
36
  const RESOURCE_PASSWORD_MAX_LENGTH = 4096;
@@ -75,6 +79,8 @@ class CreateResource extends Component {
75
79
  this.handleGeneratePasswordButtonClick = this.handleGeneratePasswordButtonClick.bind(this);
76
80
  this.handleDescriptionToggle = this.handleDescriptionToggle.bind(this);
77
81
  this.handleDescriptionInputKeyUp = this.handleDescriptionInputKeyUp.bind(this);
82
+ this.handleOpenGenerator = this.handleOpenGenerator.bind(this);
83
+ this.handleLastGeneratedPasswordChanged = this.handleLastGeneratedPasswordChanged.bind(this);
78
84
  }
79
85
 
80
86
  /**
@@ -85,12 +91,45 @@ class CreateResource extends Component {
85
91
  this.passwordInputRef = React.createRef();
86
92
  }
87
93
 
94
+ /**
95
+ * Whenever the component has been mounted
96
+ */
88
97
  componentDidMount() {
89
98
  if (this.isEncryptedDescriptionEnabled()) {
90
99
  this.setState({encryptDescription: true});
91
100
  }
92
101
  }
93
102
 
103
+ /**
104
+ * Whenever the component has been changed (props)
105
+ * @param prevProps The previous component props
106
+ */
107
+ componentDidUpdate(prevProps) {
108
+ this.handleLastGeneratedPasswordChanged(prevProps.resourcePasswordGeneratorContext.lastGeneratedPassword);
109
+ }
110
+
111
+ /*
112
+ * =============================================================
113
+ * Resource password generator
114
+ * =============================================================
115
+ */
116
+ get currentGeneratorConfiguration() {
117
+ const type = this.props.resourcePasswordGeneratorContext.settings.default_generator;
118
+ return this.props.resourcePasswordGeneratorContext.settings.generators.find(generator => generator.type === type);
119
+ }
120
+
121
+ /**
122
+ * Whenever a new password has been generated through the generator
123
+ * @param previousLastGeneratedPassword The previous last generated password value
124
+ */
125
+ handleLastGeneratedPasswordChanged(previousLastGeneratedPassword) {
126
+ const currentLastGeneratedPassword = this.props.resourcePasswordGeneratorContext.lastGeneratedPassword;
127
+ const hasLastGeneratedPasswordChanged = previousLastGeneratedPassword !== currentLastGeneratedPassword;
128
+ if (hasLastGeneratedPasswordChanged) {
129
+ this.setState({password: currentLastGeneratedPassword});
130
+ }
131
+ }
132
+
94
133
  /*
95
134
  * =============================================================
96
135
  * Resource type helpers
@@ -258,7 +297,6 @@ class CreateResource extends Component {
258
297
  */
259
298
  async createResourceLegacy(resourceDto, secretString) {
260
299
  resourceDto.description = this.state.description;
261
-
262
300
  return this.props.context.port.request("passbolt.resources.create", resourceDto, secretString);
263
301
  }
264
302
 
@@ -451,13 +489,21 @@ class CreateResource extends Component {
451
489
  if (this.state.processing) {
452
490
  return;
453
491
  }
454
- const password = SecretComplexity.generate();
492
+
493
+ const password = SecretGenerator.generate(this.currentGeneratorConfiguration);
455
494
  this.setState({
456
495
  password: password,
457
496
  passwordError: ""
458
497
  });
459
498
  }
460
499
 
500
+ /**
501
+ * Whenever the user wants to open the password generator
502
+ */
503
+ handleOpenGenerator() {
504
+ this.props.dialogContext.open(GenerateResourcePassword);
505
+ }
506
+
461
507
  /**
462
508
  * Handle close
463
509
  */
@@ -492,51 +538,12 @@ class CreateResource extends Component {
492
538
  }
493
539
  }
494
540
 
495
- /*
496
- * =============================================================
497
- * Security token style
498
- * =============================================================
499
- */
500
- /**
501
- * Get the password input style.
502
- * @return {Object}
503
- */
504
- getPasswordInputStyle() {
505
- if (this.state.passwordInputHasFocus) {
506
- const backgroundColor = this.props.context.userSettings.getSecurityTokenBackgroundColor();
507
- const textColor = this.props.context.userSettings.getSecurityTokenTextColor();
508
-
509
- return {
510
- background: backgroundColor,
511
- color: textColor
512
- };
513
- }
514
-
515
- return {
516
- background: "",
517
- color: "",
518
- };
519
- }
520
-
521
541
  /**
522
- * Get the security token style.
523
- * @return {Object}
542
+ * Returns true if the logged in user can use the password generator capability.
543
+ * @returns {boolean}
524
544
  */
525
- getSecurityTokenStyle() {
526
- const backgroundColor = this.props.context.userSettings.getSecurityTokenBackgroundColor();
527
- const textColor = this.props.context.userSettings.getSecurityTokenTextColor();
528
-
529
- if (this.state.passwordInputHasFocus) {
530
- return {
531
- background: textColor,
532
- color: backgroundColor,
533
- };
534
- }
535
-
536
- return {
537
- background: backgroundColor,
538
- color: textColor,
539
- };
545
+ get canUsePasswordGenerator() {
546
+ return this.props.context.siteSettings.canIUse('passwordGenerator');
540
547
  }
541
548
 
542
549
  /**
@@ -553,10 +560,8 @@ class CreateResource extends Component {
553
560
  * =============================================================
554
561
  */
555
562
  render() {
556
- const passwordInputStyle = this.getPasswordInputStyle();
557
- const securityTokenStyle = this.getSecurityTokenStyle();
558
- const securityTokenCode = this.props.context.userSettings.getSecurityTokenCode();
559
- const passwordStrength = SecretComplexity.getStrength(this.state.password);
563
+ const passwordEntropy = SecretGenerator.entropy(this.state.password);
564
+ const passwordStrength = SecretGeneratorComplexity.strength(passwordEntropy);
560
565
  /*
561
566
  * The parser can't find the translation for passwordStrength.label
562
567
  * To fix that we can use it in comment
@@ -580,7 +585,7 @@ class CreateResource extends Component {
580
585
  disabled={this.state.processing} ref={this.nameInputRef} className="required fluid" maxLength="64"
581
586
  required="required" autoComplete="off" autoFocus={true} placeholder={this.translate("Name")}/>
582
587
  {this.state.nameError &&
583
- <div className="name error message">{this.state.nameError}</div>
588
+ <div className="name error-message">{this.state.nameError}</div>
584
589
  }
585
590
  </div>
586
591
  <div className={`input text ${this.state.uriError ? "error" : ""}`}>
@@ -589,7 +594,7 @@ class CreateResource extends Component {
589
594
  autoComplete="off" value={this.state.uri} onChange={this.handleInputChange} placeholder={this.translate("URI")}
590
595
  disabled={this.state.processing}/>
591
596
  {this.state.uriError &&
592
- <div className="error message">{this.state.uriError}</div>
597
+ <div className="error-message">{this.state.uriError}</div>
593
598
  }
594
599
  </div>
595
600
  <div className={`input text ${this.state.usernameError ? "error" : ""}`}>
@@ -598,7 +603,7 @@ class CreateResource extends Component {
598
603
  autoComplete="off" value={this.state.username} onChange={this.handleInputChange} placeholder={this.translate("Username")}
599
604
  disabled={this.state.processing}/>
600
605
  {this.state.usernameError &&
601
- <div className="error message">{this.state.usernameError}</div>
606
+ <div className="error-message">{this.state.usernameError}</div>
602
607
  }
603
608
  </div>
604
609
  <div className={`input-password-wrapper input required ${this.state.passwordError ? "error" : ""}`}>
@@ -609,19 +614,16 @@ class CreateResource extends Component {
609
614
  onKeyUp={this.handlePasswordInputKeyUp} value={this.state.password}
610
615
  onFocus={this.handlePasswordInputFocus} onBlur={this.handlePasswordInputBlur}
611
616
  onChange={this.handleInputChange} disabled={this.state.processing}
612
- style={passwordInputStyle} ref={this.passwordInputRef}/>
613
- <div className="security-token"
614
- style={securityTokenStyle}>{securityTokenCode}</div>
617
+ autoComplete="new-password"
618
+ ref={this.passwordInputRef}/>
619
+ <a onClick={this.handleViewPasswordButtonClick}
620
+ className={`password-view button button-icon toggle ${this.state.viewPassword ? "selected" : ""}`}>
621
+ <Icon name='eye-open' big={true}/>
622
+ <span className="visually-hidden">view</span>
623
+ </a>
615
624
 
616
625
  </div>
617
626
  <ul className="actions inline">
618
- <li>
619
- <a onClick={this.handleViewPasswordButtonClick}
620
- className={`password-view button button-icon toggle ${this.state.viewPassword ? "selected" : ""}`}>
621
- <Icon name='eye-open' big={true}/>
622
- <span className="visually-hidden">view</span>
623
- </a>
624
- </li>
625
627
  <li>
626
628
  <a onClick={this.handleGeneratePasswordButtonClick}
627
629
  className="password-generate button-icon button">
@@ -629,16 +631,32 @@ class CreateResource extends Component {
629
631
  <span className="visually-hidden">generate</span>
630
632
  </a>
631
633
  </li>
634
+ {this.canUsePasswordGenerator &&
635
+ <li>
636
+ <a onClick={this.handleOpenGenerator}
637
+ className="password-generator button-icon button">
638
+ <Icon name='cog' big={true}/>
639
+ <span className="visually-hidden">open generator</span>
640
+ </a>
641
+ </li>
642
+ }
632
643
  </ul>
633
644
  <div className={`password-complexity ${passwordStrength.id}`}>
634
645
  <span className="progress">
635
646
  <span className={`progress-bar ${passwordStrength.id}`} />
636
647
  </span>
637
- <span className="complexity-text"><Trans>complexity:</Trans> <strong>{this.translate(passwordStrength.label)}</strong></span>
648
+ <span className="complexity-text">
649
+ <div>
650
+ <Trans>Complexity:</Trans> <strong>{this.translate(passwordStrength.label)}</strong>
651
+ </div>
652
+ <div>
653
+ <Trans>Entropy:</Trans> <strong>{passwordEntropy.toFixed(1)} bits</strong>
654
+ </div>
655
+ </span>
638
656
  </div>
639
657
  {this.state.passwordError &&
640
658
  <div className="input text">
641
- <div className="password message error">{this.state.passwordError}</div>
659
+ <div className="password error-message">{this.state.passwordError}</div>
642
660
  </div>
643
661
  }
644
662
  {this.state.passwordWarning &&
@@ -689,9 +707,10 @@ CreateResource.propTypes = {
689
707
  context: PropTypes.any, // The application context
690
708
  history: PropTypes.object, // Router history
691
709
  onClose: PropTypes.func, // Whenever the component must be closed
710
+ resourcePasswordGeneratorContext: PropTypes.any, // The resource password generator context
692
711
  actionFeedbackContext: PropTypes.any, // The action feedback context
693
712
  dialogContext: PropTypes.any, // The dialog context
694
713
  t: PropTypes.func, // The translation function
695
714
  };
696
715
 
697
- export default withAppContext(withActionFeedback(withRouter(withDialog(withTranslation('common')(CreateResource)))));
716
+ export default withResourcePasswordGeneratorContext(withAppContext(withActionFeedback(withRouter(withDialog(withTranslation('common')(CreateResource))))));
@@ -36,6 +36,85 @@ export function defaultAppContext(appContext) {
36
36
  */
37
37
  export function defaultProps() {
38
38
  return {
39
- onClose: jest.fn()
39
+ resourcePasswordGeneratorContext: {
40
+ settings: {
41
+ "default_generator": "passphrase",
42
+ "generators": [
43
+ {
44
+ "name": "Password",
45
+ "type": "password",
46
+ "default_options": {
47
+ "length": 18,
48
+ "look_alike": true,
49
+ "min_length": 8,
50
+ "max_length": 128,
51
+ },
52
+ "masks": [
53
+ {
54
+ "name": "upper",
55
+ "label": "A-Z",
56
+ "characters": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
57
+ },
58
+ {
59
+ "name": "lower",
60
+ "label": "a-z",
61
+ "characters": "abcdefghijklmnopqrstuvwxyz",
62
+ },
63
+ {
64
+ "name": "digit",
65
+ "label": "0-9",
66
+ "characters": "0123456789",
67
+ "required": true,
68
+ },
69
+ {
70
+ "name": "parenthesis",
71
+ "label": "{ [ ( | ) ] ] }",
72
+ "characters": "([|])",
73
+ },
74
+ {
75
+ "name": "special_char1",
76
+ "label": "# $ % & @ ^ ~",
77
+ "characters": "#$%&@^~"
78
+ },
79
+ {
80
+ "name": "special_char2",
81
+ "label": ". , : ;",
82
+ "characters": ".,:;"
83
+ },
84
+ {
85
+ "name": "special_char5",
86
+ "label": "< * + ! ? =",
87
+ "characters": "<*+!?="
88
+ },
89
+ {
90
+ "name": "emoji",
91
+ "label": "😘",
92
+ "characters": "😀😃😄😁😆😅😂🤣🥲☺️😊😇🙂🙃😉😌😍🥰😘😗😙😚😋😛😝😜🤪🤨🧐🤓😎🥸🤩🥳😏😒😞😔😟😕🙁☹️😣😖😫😩🥺😢😭😤😠😡🤬🤯😳🥵🥶😱😨😰😥😓🤗🤔🤭🤫🤥😶😐😑😬🙄😯😦😧😮😲🥱😴🤤😪😵🤐🥴🤢🤮🤧😷🤒🤕🤑🤠😈👿👹👺🤡💩👻💀☠️👽👾🤖🎃😺😸😹😻😼😽🙀😿😾"
93
+ },
94
+ {
95
+ "name": "ascii",
96
+ "label": "ascii",
97
+ "characters": "%&¡¢£¤¥¦§¨©ª«¬®¯°±²³µ¶·¸¹º»¼½¾¿ÀÁ ÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿŒœŠšŸƒ—„†‡•…‰€™"
98
+ }
99
+ ],
100
+ },
101
+ {
102
+ "name": "Passphrase",
103
+ "type": "passphrase",
104
+ "default_options": {
105
+ "word_count": 8,
106
+ "word_case": "lowercase",
107
+ "min_word": 4,
108
+ "max_word": 40,
109
+ "separator": " "
110
+ },
111
+ }
112
+ ]
113
+ }
114
+ },
115
+ onClose: jest.fn(),
116
+ dialogContext: {
117
+ open: jest.fn()
118
+ }
40
119
  };
41
120
  }
@@ -21,6 +21,7 @@ import {waitFor} from "@testing-library/react";
21
21
  import {defaultAppContext, defaultProps} from "./CreateResource.test.data";
22
22
  import CreateResourcePage from "./CreateResource.test.page";
23
23
  import "../../../test/lib/crypto/cryptoGetRandomvalues";
24
+ import NotifyError from "../../Common/Error/NotifyError/NotifyError";
24
25
 
25
26
  beforeEach(() => {
26
27
  jest.resetModules();
@@ -68,14 +69,7 @@ describe("See the Create Resource", () => {
68
69
  expect(passwordInputStyle.color).toBe("");
69
70
 
70
71
  // Complexity label exists but is not yet defined.
71
- expect(page.passwordCreate.complexityText.textContent).toBe("complexity: n/a");
72
-
73
- // Security token element exists.
74
- expect(page.passwordCreate.securityToken.textContent).toBe("TST");
75
- // And the default style is applied.
76
- const securityTokenStyle = window.getComputedStyle(page.passwordCreate.securityToken);
77
- expect(securityTokenStyle.background).toBe("rgb(0, 0, 0)");
78
- expect(securityTokenStyle.color).toBe("rgb(255, 255, 255)");
72
+ expect(page.passwordCreate.complexityText.textContent).toBe("Complexity: n/aEntropy: 0.0 bits");
79
73
 
80
74
  // Password view button exists.
81
75
  expect(page.passwordCreate.passwordViewButton).not.toBeNull();
@@ -94,36 +88,10 @@ describe("See the Create Resource", () => {
94
88
  expect(page.passwordCreate.cancelButton.textContent).toBe("Cancel");
95
89
  });
96
90
 
97
- it('changes the style of its security token when the password input get or lose focus when the password is already decrypted', async() => {
98
- /*
99
- * Password input got focus.
100
- * Assert style change.
101
- */
102
- page.passwordCreate.focusInput(page.passwordCreate.password);
103
- let securityTokenStyle = window.getComputedStyle(page.passwordCreate.securityToken);
104
- let passwordInputStyle = window.getComputedStyle(page.passwordCreate.password);
105
- expect(passwordInputStyle.background).toBe("rgb(0, 0, 0)");
106
- expect(passwordInputStyle.color).toBe("rgb(255, 255, 255)");
107
- expect(securityTokenStyle.background).toBe("rgb(255, 255, 255)");
108
- expect(securityTokenStyle.color).toBe("rgb(0, 0, 0)");
109
-
110
- /*
111
- * Password input lost focus.
112
- * Assert style
113
- */
114
- page.passwordCreate.blurInput(page.passwordCreate.password);
115
- securityTokenStyle = window.getComputedStyle(page.passwordCreate.securityToken);
116
- passwordInputStyle = window.getComputedStyle(page.passwordCreate.password);
117
- expect(passwordInputStyle.background).toBe("white");
118
- expect(passwordInputStyle.color).toBe("");
119
- expect(securityTokenStyle.background).toBe("rgb(0, 0, 0)");
120
- expect(securityTokenStyle.color).toBe("rgb(255, 255, 255)");
121
- });
122
-
123
91
  it('generates password when clicking on the generate button.', async() => {
124
92
  page.passwordCreate.focusInput(page.passwordCreate.password);
125
93
  await page.passwordCreate.click(page.passwordCreate.passwordGenerateButton);
126
- expect(page.passwordCreate.complexityText.textContent).not.toBe("complexity: n/a");
94
+ expect(page.passwordCreate.complexityText.textContent).not.toBe("Complexity: n/aEntropy: NaN bits");
127
95
  expect(page.passwordCreate.progressBar.classList.contains("not_available")).toBe(false);
128
96
  });
129
97
 
@@ -161,7 +129,7 @@ describe("See the Create Resource", () => {
161
129
  page.passwordCreate.fillInput(page.passwordCreate.uri, resourceMeta.uri);
162
130
  page.passwordCreate.fillInput(page.passwordCreate.username, resourceMeta.username);
163
131
  page.passwordCreate.fillInput(page.passwordCreate.password, resourceMeta.password);
164
- expect(page.passwordCreate.complexityText.textContent).not.toBe("complexity: n/a");
132
+ expect(page.passwordCreate.complexityText.textContent).not.toBe("Complexity: n/aEntropy: NaN bits");
165
133
  expect(page.passwordCreate.progressBar.classList.contains("not_available")).toBe(false);
166
134
  page.passwordCreate.fillInput(page.passwordCreate.description, resourceMeta.description);
167
135
  await page.passwordCreate.click(page.passwordCreate.descriptionEncryptedLock);
@@ -203,7 +171,7 @@ describe("See the Create Resource", () => {
203
171
  page.passwordCreate.fillInput(page.passwordCreate.uri, resourceMeta.uri);
204
172
  page.passwordCreate.fillInput(page.passwordCreate.username, resourceMeta.username);
205
173
  page.passwordCreate.fillInput(page.passwordCreate.password, resourceMeta.password);
206
- expect(page.passwordCreate.complexityText.textContent).not.toBe("complexity: n/a");
174
+ expect(page.passwordCreate.complexityText.textContent).not.toBe("Complexity: n/aEntropy: NaN bits");
207
175
  expect(page.passwordCreate.progressBar.classList.contains("not_available")).toBe(false);
208
176
  page.passwordCreate.fillInput(page.passwordCreate.description, resourceMeta.description);
209
177
 
@@ -293,12 +261,23 @@ describe("See the Create Resource", () => {
293
261
  jest.spyOn(context.port, 'request').mockImplementationOnce(() => {
294
262
  throw new PassboltApiFetchError("Jest simulate API error.");
295
263
  });
264
+ jest.spyOn(props.dialogContext, 'open').mockImplementationOnce(jest.fn);
296
265
 
297
266
  await page.passwordCreate.click(page.passwordCreate.saveButton);
298
267
 
299
268
  // Throw general error message
300
- expect(page.passwordCreate.errorDialog).not.toBeNull();
301
- expect(page.passwordCreate.errorDialogMessage).not.toBeNull();
269
+ expect(props.dialogContext.open).toHaveBeenCalledWith(NotifyError);
270
+ });
271
+
272
+ it('As LU I should access to the password generator dialog', async() => {
273
+ jest.spyOn(props.dialogContext, 'open').mockImplementationOnce(jest.fn);
274
+ await page.passwordCreate.openPasswordGenerator();
275
+ expect(props.dialogContext.open).toBeCalled();
276
+ });
277
+
278
+ it('As LU I should access to the password generator dialog', async() => {
279
+ await page.passwordCreate.openPasswordGenerator();
280
+ expect(page.passwordCreate.passwordGeneratorDialog).not.toBeNull();
302
281
  });
303
282
  });
304
283
  });
@@ -71,6 +71,13 @@ export default class CreateResourcePage {
71
71
  get passwordCreate() {
72
72
  return this._passwordCreate;
73
73
  }
74
+
75
+ /**
76
+ * REturns the password generator dialog element
77
+ */
78
+ get passwordGeneratorDialog() {
79
+ return this._page.container.querySelector('.password-generator-dialog');
80
+ }
74
81
  }
75
82
 
76
83
  /**
@@ -126,7 +133,7 @@ class PasswordCreatePageObject {
126
133
  * Returns the name error mesage input element
127
134
  */
128
135
  get nameErrorMessage() {
129
- return this._container.querySelector('.name.error.message');
136
+ return this._container.querySelector('.name.error-message');
130
137
  }
131
138
 
132
139
  /**
@@ -154,7 +161,7 @@ class PasswordCreatePageObject {
154
161
  * Returns the password error mesage input element
155
162
  */
156
163
  get passwordErrorMessage() {
157
- return this._container.querySelector('.password.error.message');
164
+ return this._container.querySelector('.password.error-message');
158
165
  }
159
166
 
160
167
  /**
@@ -164,12 +171,6 @@ class PasswordCreatePageObject {
164
171
  return this._container.querySelector('.complexity-text');
165
172
  }
166
173
 
167
- /**
168
- * Returns the security token input element
169
- */
170
- get securityToken() {
171
- return this._container.querySelector('.security-token');
172
- }
173
174
 
174
175
  /**
175
176
  * Returns the description input element
@@ -206,6 +207,15 @@ class PasswordCreatePageObject {
206
207
  return this._container.querySelector('.password-generate');
207
208
  }
208
209
 
210
+ /**
211
+ * Returns the password generator button element
212
+ */
213
+ get passwordGeneratorButton() {
214
+ return this._container.querySelector('.password-generator');
215
+ }
216
+
217
+
218
+
209
219
  /**
210
220
  * Returns the save button element
211
221
  */
@@ -213,6 +223,8 @@ class PasswordCreatePageObject {
213
223
  return this._container.querySelector('.submit-wrapper input[type=\"submit\"]');
214
224
  }
215
225
 
226
+
227
+
216
228
  /**
217
229
  * Returns the cancel button element
218
230
  */
@@ -228,6 +240,8 @@ class PasswordCreatePageObject {
228
240
  return this._container.querySelector('.error-dialog .dialog .dialog-content .form-content');
229
241
  }
230
242
 
243
+
244
+
231
245
  /**
232
246
  * Returns true if the page object exists in the container
233
247
  */
@@ -270,4 +284,9 @@ class PasswordCreatePageObject {
270
284
  blurInput(element) {
271
285
  fireEvent.blur(element);
272
286
  }
287
+
288
+ /** Open the password generator*/
289
+ async openPasswordGenerator() {
290
+ await this.click(this.passwordGeneratorButton);
291
+ }
273
292
  }
@@ -3,12 +3,19 @@ import React from "react";
3
3
  import AppContext from "../../../contexts/AppContext";
4
4
  import PropTypes from "prop-types";
5
5
  import CreateResource from "./CreateResource";
6
- import "../../../../css/themes/default/ext_app.css";
7
6
 
8
7
 
9
8
  export default {
10
9
  title: 'Passbolt/Resource/CreateResource',
11
- component: CreateResource
10
+ component: CreateResource,
11
+ argTypes: {
12
+ language: {
13
+ control: {
14
+ type: 'select',
15
+ options: ['en-US', 'fr']
16
+ }
17
+ }
18
+ }
12
19
  };
13
20
 
14
21
  const context = {
@@ -20,11 +27,67 @@ const context = {
20
27
  resourceTypesSettings: {
21
28
  areResourceTypesEnabled: () => true,
22
29
  isEncryptedDescriptionEnabled: () => true
30
+ },
31
+ siteSettings: {
32
+ generatorConfiguration: {
33
+ "default_generator": "passphrase",
34
+ "generators": [
35
+ {
36
+ "name": "Password",
37
+ "type": "password",
38
+ "default_options": {
39
+ "length": 18,
40
+ "look_alike": true,
41
+ "min_length": 8,
42
+ "max_length": 128,
43
+ },
44
+ "masks": [
45
+ {
46
+ "name": "upper",
47
+ "label": "A-Z",
48
+ "characters": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
49
+ },
50
+ {
51
+ "name": "lower",
52
+ "label": "a-z",
53
+ "characters": "abcdefghijklmnopqrstuvwxyz",
54
+ },
55
+ {
56
+ "name": "digit",
57
+ "label": "0-9",
58
+ "characters": "0123456789",
59
+ "required": true,
60
+ },
61
+ {
62
+ "name": "parenthesis",
63
+ "label": "([|])",
64
+ "characters": "([|])",
65
+ },
66
+ {
67
+ "name": "TBD",
68
+ "label": "TBD",
69
+ "characters": ""
70
+ },
71
+ ],
72
+ },
73
+ {
74
+ "name": "Passphrase",
75
+ "type": "passphrase",
76
+ "default_options": {
77
+ "word_count": 8,
78
+ "word_case": "lowercase",
79
+ "min_word": 4,
80
+ "max_word": 40,
81
+ "separator": " "
82
+ }
83
+ }
84
+ ]
85
+ }
23
86
  }
24
87
  };
25
88
 
26
89
 
27
- const Template = args =>
90
+ const Template = ({context, ...args}) =>
28
91
  <AppContext.Provider value={context}>
29
92
  <MemoryRouter initialEntries={['/']}>
30
93
  <Route component={routerProps => <CreateResource {...args} {...routerProps}/>}></Route>
@@ -32,7 +95,10 @@ const Template = args =>
32
95
  </AppContext.Provider>;
33
96
 
34
97
  Template.propTypes = {
35
- context: PropTypes.object,
98
+ context: PropTypes.object
36
99
  };
37
100
 
38
101
  export const Initial = Template.bind({});
102
+ Initial.args = {
103
+ context: context,
104
+ };
@@ -150,7 +150,7 @@ class DeleteResource extends Component {
150
150
  render() {
151
151
  return (
152
152
  <DialogWrapper
153
- title={this.translate("Delete password?")}
153
+ title={this.translate("Delete password?", {count: this.resources.length})}
154
154
  onClose={this.handleCloseClick}
155
155
  disabled={this.state.processing}
156
156
  className="delete-password-dialog">