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
@@ -125,12 +125,12 @@ class DisplayChangePassphraseIntroduction extends React.Component {
125
125
  return (
126
126
  <div className="grid grid-responsive-12 profile-passphrase">
127
127
  <div className="row">
128
- <div className="col6">
128
+ <div className="col7">
129
129
  <form onSubmit={this.handleSubmit}>
130
130
  <h3><Trans>Before getting started...</Trans></h3>
131
131
  <div className="password-management-bg">
132
132
  </div>
133
- <p><Trans>The passphrase is stored on your device and never sent server side.</Trans><br/>
133
+ <p><Trans>The passphrase is stored on your device and never sent server side.</Trans>&nbsp;
134
134
  <Trans>Changing your passphrase will only change it locally.</Trans>&nbsp;
135
135
  <Trans>If you have multiple browsers configured, the passphrase will need to be changed in all places individually.</Trans>
136
136
  </p>
@@ -140,19 +140,21 @@ class DisplayChangePassphraseIntroduction extends React.Component {
140
140
  <label htmlFor="passphrase-update-understand"> <Trans>Ok, I understand what I need to do.</Trans></label>
141
141
  </div>
142
142
  <div className="submit-wrapper">
143
- <button className="button big submit" type="submit" disabled={this.hasAllInputDisabled()}>
143
+ <button className="button primary medium submit" type="submit" disabled={this.hasAllInputDisabled()}>
144
144
  <Trans>Start</Trans>
145
145
  </button>
146
146
  </div>
147
147
  </form>
148
148
  </div>
149
- <div className="col4 last passphrase-help">
150
- <h3><Trans>What is the role of the passphrase?</Trans></h3>
151
- <p><Trans>The passphrase is used to encrypt your secret key, which is required to decrypt your secrets, such as the passwords.</Trans></p>
152
- <p><Trans>Without the private key and the passphrase it is not possible to decrypt!</Trans></p>
153
- <a className="button big" href="https://help.passbolt.com/tech/auth.html" target="_blank" rel="noopener noreferrer">
154
- <span><Trans>Learn more</Trans></span>
155
- </a>
149
+ <div className="col4 last">
150
+ <div className="sidebar-help">
151
+ <h3><Trans>What is the role of the passphrase?</Trans></h3>
152
+ <p><Trans>The passphrase is used to encrypt your secret key, which is required to decrypt your secrets, such as the passwords.</Trans></p>
153
+ <p><Trans>Without the private key and the passphrase it is not possible to decrypt!</Trans></p>
154
+ <a className="button" href="https://help.passbolt.com/tech/auth.html" target="_blank" rel="noopener noreferrer">
155
+ <span><Trans>Learn more</Trans></span>
156
+ </a>
157
+ </div>
156
158
  </div>
157
159
  </div>
158
160
  </div>
@@ -17,6 +17,7 @@ import React from 'react';
17
17
  import PropTypes from "prop-types";
18
18
  import {withUserSettings} from "../../../contexts/UserSettingsContext";
19
19
  import {Trans, withTranslation} from "react-i18next";
20
+ import AnimatedFeedback from "../../Common/Icons/AnimatedFeedback";
20
21
 
21
22
  /**
22
23
  * This component displays the user profile information
@@ -58,20 +59,13 @@ class DownloadRecoveryKit extends React.Component {
58
59
  <div className="row">
59
60
  <div className="col7 last">
60
61
  <h3><Trans>The passphrase was updated!</Trans></h3>
61
- <div className="success success-large message animated">
62
- <div className="illustration">
63
- <svg id="successAnimation" className="animated" xmlns="http://www.w3.org/2000/svg" width="170" height="170" viewBox="0 0 70 70">
64
- <circle id="successAnimationCircle" cx="35" cy="35" r="24" stroke="#000000" strokeWidth="3"
65
- strokeLinecap="round" fill="transparent"/>
66
- <polyline id="successAnimationCheck" stroke="#000000" strokeWidth="3" points="23 34 34 43 47 27"
67
- linecap="round" fill="transparent"/>
68
- </svg>
69
- </div>
62
+ <div className="feedback-card">
63
+ <AnimatedFeedback name='success' />
70
64
  <div className="additional-information">
71
65
  <p><Trans>Your passphrase has been changed. Make sure you keep a backup of your secret key encrypted with this new passphrase.</Trans></p>
72
66
  <p><Trans>Keep this backup in a safe place, you will need it in case of emergency.</Trans></p>
73
67
  <p>
74
- <a className="button big primary" role="button" onClick={this.handleDownloadBackup}><Trans>Download backup</Trans></a>
68
+ <a className="button primary medium" role="button" onClick={this.handleDownloadBackup}><Trans>Download backup</Trans></a>
75
69
  </p>
76
70
  </div>
77
71
  </div>
@@ -24,6 +24,7 @@ import debounce from "debounce-promise";
24
24
  import SecurityComplexity from "../../../../shared/lib/Secret/SecretComplexity";
25
25
  import SecretComplexity from "../../../../shared/lib/Secret/SecretComplexity";
26
26
  import {Trans, withTranslation} from "react-i18next";
27
+ import {withAppContext} from "../../../contexts/AppContext";
27
28
 
28
29
  /**
29
30
  * This component displays the user choose passphrase information
@@ -102,6 +103,8 @@ class EnterNewPassphrase extends React.Component {
102
103
  bindEventHandlers() {
103
104
  this.handlePassphraseChange = this.handlePassphraseChange.bind(this);
104
105
  this.handleToggleObfuscate = this.handleToggleObfuscate.bind(this);
106
+ this.handleFocusPassphrase = this.handleFocusPassphrase.bind(this);
107
+ this.handleBlurPassphrase = this.handleBlurPassphrase.bind(this);
105
108
  this.handleCancel = this.handleCancel.bind(this);
106
109
  this.handleSubmit = this.handleSubmit.bind(this);
107
110
  }
@@ -180,6 +183,48 @@ class EnterNewPassphrase extends React.Component {
180
183
  };
181
184
  }
182
185
 
186
+ /**
187
+ * Returns the security token code of the suer
188
+ */
189
+ get securityTokenCode() {
190
+ return this.props.context.userSettings.getSecurityTokenCode();
191
+ }
192
+
193
+ /**
194
+ * Returns the style of the security token (color and text color)
195
+ */
196
+ get securityTokenStyle() {
197
+ const {userSettings} = this.props.context;
198
+ const inverseStyle = {background: userSettings.getSecurityTokenTextColor(), color: userSettings.getSecurityTokenBackgroundColor()};
199
+ const fullStyle = {background: userSettings.getSecurityTokenBackgroundColor(), color: userSettings.getSecurityTokenTextColor()};
200
+ return this.state.hasPassphraseFocus ? inverseStyle : fullStyle;
201
+ }
202
+
203
+ /**
204
+ * Get the passphrase input style.
205
+ * @return {Object}
206
+ */
207
+ get passphraseInputStyle() {
208
+ const {userSettings} = this.props.context;
209
+ const emptyStyle = {background: "", color: ""};
210
+ const fullStyle = {background: userSettings.getSecurityTokenBackgroundColor(), color: userSettings.getSecurityTokenTextColor()};
211
+ return this.state.hasPassphraseFocus ? fullStyle : emptyStyle;
212
+ }
213
+
214
+ /**
215
+ * Whenever the user focus on the passphrase input
216
+ */
217
+ handleFocusPassphrase() {
218
+ this.setState({hasPassphraseFocus: true});
219
+ }
220
+
221
+ /**
222
+ * Whenever the user blurs on the passphrase input
223
+ */
224
+ handleBlurPassphrase() {
225
+ this.setState({hasPassphraseFocus: false});
226
+ }
227
+
183
228
  /**
184
229
  * Evaluate if the passphrase is in dictionary
185
230
  * @param passphrase The passphrase to evaluate
@@ -244,30 +289,23 @@ class EnterNewPassphrase extends React.Component {
244
289
  return (
245
290
  <div className="grid grid-responsive-12 profile-passphrase">
246
291
  <div className="row">
247
- <div className="col6">
292
+ <div className="col7">
248
293
  <form className="enter-passphrase" onSubmit={this.handleSubmit}>
249
294
  <h3><Trans>Please enter a new passphrase</Trans></h3>
250
295
  <div className="form-content">
251
296
  <div className="input text password required">
252
- {this.state.isObfuscated &&
253
297
  <input
254
298
  id="passphrase-input"
255
- type="password"
299
+ type={this.state.isObfuscated ? "password" : "text"}
256
300
  ref={this.passphraseInput}
257
301
  value={this.state.passphrase}
302
+ style={this.passphraseInputStyle}
258
303
  onChange={this.handlePassphraseChange}
304
+ onFocus={this.handleFocusPassphrase}
305
+ onBlur={this.handleBlurPassphrase}
259
306
  disabled={!this.areActionsAllowed}
260
- autoFocus={true}/>
261
- }
262
- {!this.state.isObfuscated &&
263
- <input
264
- id="passphrase-input"
265
- type="text"
266
- ref={this.passphraseInput}
267
- value={this.state.passphrase}
268
- onChange={this.handlePassphraseChange}
269
- disabled={!this.areActionsAllowed}/>
270
- }
307
+ autoFocus={true}
308
+ autoComplete="off"/>
271
309
  <a
272
310
  className={`password-view button-icon button button-toggle ${this.state.isObfuscated ? "" : "selected"}`}
273
311
  role="button"
@@ -275,13 +313,15 @@ class EnterNewPassphrase extends React.Component {
275
313
  <Icon name="eye-open"/>
276
314
  <span className="visually-hidden">view</span>
277
315
  </a>
316
+ <span className="security-token" style={this.securityTokenStyle}>
317
+ {this.securityTokenCode}
318
+ </span>
278
319
  <div className="password-complexity">
279
320
  <span className="progress">
280
321
  <span className={`progress-bar ${this.state.passphraseStrength.id}`}/>
281
322
  </span>
282
323
  </div>
283
324
  </div>
284
-
285
325
  <div className="password-hints">
286
326
  <ul>
287
327
  <li className={this.state.hintClassNames.enoughLength}>
@@ -303,20 +343,19 @@ class EnterNewPassphrase extends React.Component {
303
343
  </div>
304
344
  </div>
305
345
  <div className="submit-wrapper">
306
- <button className="button big" type="button" disabled={!this.areActionsAllowed} onClick={this.handleCancel}>
346
+ <button className="button cancel medium" type="button" disabled={!this.areActionsAllowed} onClick={this.handleCancel}>
307
347
  <Trans>Cancel</Trans>
308
348
  </button>
309
- <FormSubmitButton big={true} disabled={this.mustBeDisabled} processing={this.isProcessing} value={this.translate('Update')}/>
349
+ <FormSubmitButton primary={true} medium={true} disabled={this.mustBeDisabled} processing={this.isProcessing} value={this.translate('Update')}/>
310
350
  </div>
311
351
  </form>
312
352
  </div>
313
- <div className="col4 last passphrase-help">
314
- <h3><Trans>Tips for choosing a good passphrase</Trans></h3>
315
- <p><Trans>Make sure your passphrase is hard to guess but also that is long enough. For example you can use your favorite lyric from a song,
316
- grab the first couple of characters from the words in your favorite line.</Trans></p>
317
- <a className="button big">
318
- <span><Trans>Learn more</Trans></span>
319
- </a>
353
+ <div className="col4 last">
354
+ <div className="sidebar-help">
355
+ <h3><Trans>Tips for choosing a good passphrase</Trans></h3>
356
+ <p><Trans>Make sure your passphrase is hard to guess but also that is long enough. For example you can use your favorite lyric from a song,
357
+ grab the first couple of characters from the words in your favorite line.</Trans></p>
358
+ </div>
320
359
  </div>
321
360
  </div>
322
361
  </div>
@@ -325,9 +364,10 @@ class EnterNewPassphrase extends React.Component {
325
364
  }
326
365
 
327
366
  EnterNewPassphrase.propTypes = {
367
+ context: PropTypes.any, // The application context
328
368
  userSettingsContext: PropTypes.object, // The user settings context
329
369
  dialogContext: PropTypes.any, // The dialog context
330
370
  t: PropTypes.func, // The translation function
331
371
  };
332
372
 
333
- export default withDialog(withUserSettings(withTranslation('common')(EnterNewPassphrase)));
373
+ export default withAppContext(withDialog(withUserSettings(withTranslation('common')(EnterNewPassphrase))));
@@ -2,8 +2,14 @@
2
2
  * Default props
3
3
  * @returns {object}
4
4
  */
5
+ import UserSettings from "../../../../shared/lib/Settings/UserSettings";
6
+ import userSettingsFixture from "../../../test/fixture/Settings/userSettings";
7
+
5
8
  export function defaultProps() {
6
9
  const props = {
10
+ context: {
11
+ userSettings: new UserSettings(userSettingsFixture)
12
+ },
7
13
  userSettingsContext: {
8
14
  onUpdatePassphraseRequested: jest.fn(),
9
15
  onGoToIntroductionPassphraseRequested: jest.fn(),
@@ -146,7 +146,7 @@ describe("As LU I should see the user confirm passphrase page", () => {
146
146
 
147
147
  it('As LU I should see an error dialog if there is an api error', async() => {
148
148
  expect(page.updateButton.getAttribute("disabled")).not.toBeNull();
149
- expect(page.updateButton.className).toBe('button primary disabled big');
149
+ expect(page.updateButton.className).toBe('button primary disabled medium');
150
150
 
151
151
  // Fill the form
152
152
  page.insertPassphrase("passphrase");
@@ -62,7 +62,7 @@ export default class EnterNewPassphrasePage {
62
62
  * Returns the passphrase error message element
63
63
  */
64
64
  get passphraseErrorMessage() {
65
- return this._page.container.querySelector('.message.error').innerHTML;
65
+ return this._page.container.querySelector('.error-message').innerHTML;
66
66
  }
67
67
 
68
68
  /**
@@ -13,7 +13,6 @@
13
13
  */
14
14
  import React, {Component} from "react";
15
15
  import {CirclePicker} from "react-color";
16
- import Icon from "../../Common/Icons/Icon";
17
16
  import NotifyError from "../../Common/Error/NotifyError/NotifyError";
18
17
  import {withDialog} from "../../../contexts/DialogContext";
19
18
  import PropTypes from "prop-types";
@@ -320,7 +319,7 @@ class ChangeUserSecurityToken extends Component {
320
319
  return (
321
320
  <div className="grid grid-responsive-12 profile-choose-security-token">
322
321
  <div className="row">
323
- <div className="col6">
322
+ <div className="col7">
324
323
  <form onSubmit={this.handleSubmit}>
325
324
  <h3><Trans>Update the Security Token</Trans></h3>
326
325
  <div className={`input-security-token input required ${this.hasErrors ? "error" : ""}`}>
@@ -351,36 +350,38 @@ class ChangeUserSecurityToken extends Component {
351
350
  className={`randomize-button ${this.isProcessing ? "disabled" : ""}`}
352
351
  role="button"
353
352
  onClick={this.handleRandomize}>
354
- <Icon name="magic-wand"/> <Trans>Randomize</Trans>
353
+ <Trans>Randomize</Trans>
355
354
  </a>
356
355
  </div>
357
356
  </div>
358
357
  {this.state.hasBeenValidated &&
359
358
  <div className="input text">
360
359
  {this.state.errors.emptyCode &&
361
- <div className="empty-code message error"><Trans>The security token code should not be empty.</Trans>
360
+ <div className="empty-code error-message"><Trans>The security token code should not be empty.</Trans>
362
361
  </div>
363
362
  }
364
363
  {this.state.errors.lengthCode &&
365
- <div className="not-good-length-code message error"><Trans>The security token code should be 3
364
+ <div className="not-good-length-code error-message"><Trans>The security token code should be 3
366
365
  characters long.</Trans></div>
367
366
  }
368
367
  </div>
369
368
  }
370
369
  <div className="submit-wrapper">
371
- <button className={`button big ${processingClassName}`} type="submit" disabled={this.isProcessing}>
370
+ <button className={`button primary medium ${processingClassName}`} type="submit" disabled={this.isProcessing}>
372
371
  <Trans>Save</Trans>
373
372
  </button>
374
373
  </div>
375
374
  </form>
376
375
  </div>
377
- <div className="col4 last">
378
- <h3><Trans>Why is this token needed?</Trans></h3>
379
- <p>
380
- <Trans>This security token will be displayed when your passphrase is requested,
381
- so you can verify quickly the form is coming from passbolt.</Trans>&nbsp;
382
- <Trans>This will help protect you from phishing attack</Trans>
383
- </p>
376
+ <div className="col4 last ">
377
+ <div className="sidebar-help">
378
+ <h3><Trans>Why is this token needed?</Trans></h3>
379
+ <p>
380
+ <Trans>This security token will be displayed when your passphrase is requested,
381
+ so you can verify quickly the form is coming from passbolt.</Trans>&nbsp;
382
+ <Trans>This will help protect you from phishing attacks</Trans>
383
+ </p>
384
+ </div>
384
385
  </div>
385
386
  </div>
386
387
  </div>
@@ -2,7 +2,6 @@ import {MemoryRouter, Route} from "react-router-dom";
2
2
  import React from "react";
3
3
  import AppContext from "../../../contexts/AppContext";
4
4
  import PropTypes from "prop-types";
5
- import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
6
5
  import ChangeUserSecurityToken from "./ChangeUserSecurityToken";
7
6
 
8
7
 
@@ -20,13 +19,11 @@ const context = {
20
19
 
21
20
 
22
21
  const Template = args =>
23
- <MockTranslationProvider>
24
- <AppContext.Provider value={context}>
25
- <MemoryRouter initialEntries={['/']}>
26
- <Route component={routerProps => <ChangeUserSecurityToken {...args} {...routerProps}/>}></Route>
27
- </MemoryRouter>
28
- </AppContext.Provider>
29
- </MockTranslationProvider>;
22
+ <AppContext.Provider value={context}>
23
+ <MemoryRouter initialEntries={['/']}>
24
+ <Route component={routerProps => <ChangeUserSecurityToken {...args} {...routerProps}/>}></Route>
25
+ </MemoryRouter>
26
+ </AppContext.Provider>;
30
27
 
31
28
  Template.propTypes = {
32
29
  context: PropTypes.object,
@@ -94,13 +94,14 @@ class DisplayUserGpgInformation extends React.Component {
94
94
  // format the gpgkey info.
95
95
  const keyId = gpgkeyInfo.keyId;
96
96
  const type = this.gpgkeyType[gpgkeyInfo.algorithm];
97
+ const uIds = gpgkeyInfo.userIds;
97
98
  const created = this.formatDate(gpgkeyInfo.created);
98
99
  const expires = gpgkeyInfo.expires === "Never" ? "Never" : this.formatDate(gpgkeyInfo.expires);
99
100
  const armoredKey = gpgkeyInfo.key;
100
101
  const fingerprint = gpgkeyInfo.fingerprint;
101
102
  const length = gpgkeyInfo.length;
102
103
 
103
- return {keyId, type, created, expires, armoredKey, fingerprint, length};
104
+ return {keyId, type, uIds, created, expires, armoredKey, fingerprint, length};
104
105
  }
105
106
 
106
107
  /**
@@ -154,11 +155,25 @@ class DisplayUserGpgInformation extends React.Component {
154
155
  }
155
156
 
156
157
  /**
157
- * Get the user fullname
158
+ * Get fingerprint
159
+ * @returns {JSX.Element}
160
+ */
161
+ get fingerprint() {
162
+ let fingerprint = this.gpgKeyInfo.fingerprint;
163
+ if (fingerprint) {
164
+ fingerprint = fingerprint.toUpperCase().replace(/.{4}(?=.)/g, '$& ');
165
+ fingerprint = <>{fingerprint.substr(0, 24)}<br/>{fingerprint.substr(25)}</>;
166
+ }
167
+ return fingerprint;
168
+ }
169
+
170
+ /**
171
+ * Get the first uID of the GPG key
158
172
  * @returns {string}
159
173
  */
160
- get userFullname() {
161
- return this.user ? `${this.user.profile.first_name} ${this.user.profile.last_name}` : "";
174
+ get uId() {
175
+ const uId = this.gpgKeyInfo.uIds && this.gpgKeyInfo.uIds[0];
176
+ return uId ? `${uId.name} <${uId.email}>` : "";
162
177
  }
163
178
 
164
179
  /**
@@ -198,11 +213,11 @@ class DisplayUserGpgInformation extends React.Component {
198
213
  </tr>
199
214
  <tr>
200
215
  <td><Trans>Uid</Trans></td>
201
- <td className="uid">{this.userFullname}</td>
216
+ <td className="uid">{this.uId}</td>
202
217
  </tr>
203
218
  <tr>
204
219
  <td><Trans>Fingerprint</Trans></td>
205
- <td className="fingerprint">{this.gpgKeyInfo.fingerprint}</td>
220
+ <td className="fingerprint">{this.fingerprint}</td>
206
221
  </tr>
207
222
  <tr>
208
223
  <td><Trans>Created</Trans></td>
@@ -2,7 +2,6 @@ import {MemoryRouter, Route} from "react-router-dom";
2
2
  import React from "react";
3
3
  import AppContext from "../../../contexts/AppContext";
4
4
  import PropTypes from "prop-types";
5
- import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
6
5
  import DisplayUserGpgInformation from "./DisplayUserGpgInformation";
7
6
 
8
7
 
@@ -47,13 +46,11 @@ const context = {
47
46
 
48
47
 
49
48
  const Template = args =>
50
- <MockTranslationProvider>
51
- <AppContext.Provider value={context}>
52
- <MemoryRouter initialEntries={['/']}>
53
- <Route component={routerProps => <DisplayUserGpgInformation {...args} {...routerProps}/>}></Route>
54
- </MemoryRouter>
55
- </AppContext.Provider>
56
- </MockTranslationProvider>;
49
+ <AppContext.Provider value={context}>
50
+ <MemoryRouter initialEntries={['/']}>
51
+ <Route component={routerProps => <DisplayUserGpgInformation {...args} {...routerProps}/>}></Route>
52
+ </MemoryRouter>
53
+ </AppContext.Provider>;
57
54
 
58
55
  Template.propTypes = {
59
56
  context: PropTypes.object,
@@ -127,7 +127,7 @@ class DisplayUserProfile extends React.Component {
127
127
  </table>
128
128
  {this.canIUseLocale &&
129
129
  <>
130
- <h3><Trans>Internationalization</Trans></h3>
130
+ <h3><Trans>Internationalisation</Trans></h3>
131
131
  <table className="table-info profile">
132
132
  <tbody>
133
133
  <tr className="locale">
@@ -2,7 +2,6 @@ import {MemoryRouter, Route} from "react-router-dom";
2
2
  import React from "react";
3
3
  import AppContext from "../../../contexts/AppContext";
4
4
  import PropTypes from "prop-types";
5
- import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
6
5
  import DisplayUserProfile from "./DisplayUserProfile";
7
6
 
8
7
 
@@ -50,13 +49,11 @@ const context = {
50
49
 
51
50
 
52
51
  const Template = args =>
53
- <MockTranslationProvider>
54
- <AppContext.Provider value={context}>
55
- <MemoryRouter initialEntries={['/']}>
56
- <Route component={routerProps => <DisplayUserProfile {...args} {...routerProps}/>}></Route>
57
- </MemoryRouter>
58
- </AppContext.Provider>
59
- </MockTranslationProvider>;
52
+ <AppContext.Provider value={context}>
53
+ <MemoryRouter initialEntries={['/']}>
54
+ <Route component={routerProps => <DisplayUserProfile {...args} {...routerProps}/>}></Route>
55
+ </MemoryRouter>
56
+ </AppContext.Provider>;
60
57
 
61
58
  Template.propTypes = {
62
59
  context: PropTypes.object,
@@ -30,6 +30,7 @@ import DisplayUserGpgInformation from "../DisplayUserGpgInformation/DisplayUserG
30
30
  import SearchBar from "../../Common/Navigation/Search/SearchBar";
31
31
  import DisplayUserPassphrase from "../ChangeUserPassphrase/ChangeUserPassphrase";
32
32
  import DisplayUserChooseSecurityToken from "../ChangeUserSecurityToken/ChangeUserSecurityToken";
33
+ import TransferToMobile from "../TransferToMobile/TransferToMobile";
33
34
 
34
35
  /**
35
36
  * This component is a container for all the user settings workspace features
@@ -43,6 +44,14 @@ class DisplayUserSettingsWorkspace extends React.Component {
43
44
  return this.props.context.siteSettings && this.props.context.siteSettings.canIUse('accountSettings');
44
45
  }
45
46
 
47
+ /**
48
+ * Can the user access the mobile transfer capability.
49
+ * @returns {bool}
50
+ */
51
+ get canIUseMobileTransferCapability() {
52
+ return this.props.context.siteSettings && this.props.context.siteSettings.canIUse('mobile');
53
+ }
54
+
46
55
  /**
47
56
  * Render the component
48
57
  * @return {JSX}
@@ -71,7 +80,10 @@ class DisplayUserSettingsWorkspace extends React.Component {
71
80
  {this.canIUseThemeCapability &&
72
81
  <Route path={`${path}/theme`} component={DisplayUserTheme}/>
73
82
  }
74
- <Route path={`${path}/keys`} component={DisplayUserGpgInformation}/>
83
+ {this.canIUseMobileTransferCapability &&
84
+ <Route path={`${path}/mobile`} component={TransferToMobile}></Route>
85
+ }
86
+ <Route path={`${path}/keys`} component={DisplayUserGpgInformation}></Route>
75
87
  </div>
76
88
  </div>
77
89
  </div>
@@ -56,7 +56,8 @@ class DisplayUserSettingsWorkspaceBreadcrumb extends Component {
56
56
  'security-token': this.translate("Security Token"),
57
57
  theme: this.translate("Theme"),
58
58
  mfa: this.translate("Multi Factor Authentication"),
59
- keys: this.translate("Keys inspector")
59
+ keys: this.translate("Keys inspector"),
60
+ mobile: this.translate("Mobile transfer")
60
61
  };
61
62
  const matchedKey = Object.keys(names).find(matchPathSuffix);
62
63
  return names[matchedKey];
@@ -2,7 +2,6 @@ import {MemoryRouter, Route} from "react-router-dom";
2
2
  import React from "react";
3
3
  import AppContext from "../../../contexts/AppContext";
4
4
  import PropTypes from "prop-types";
5
- import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
6
5
  import DisplayUserSettingsWorkspaceBreadcrumb from "./DisplayUserSettingsWorkspaceBreadcrumb";
7
6
 
8
7
 
@@ -44,13 +43,11 @@ const context = {
44
43
 
45
44
 
46
45
  const Template = args =>
47
- <MockTranslationProvider>
48
- <AppContext.Provider value={context}>
49
- <MemoryRouter initialEntries={['/profile']}>
50
- <Route component={routerProps => <DisplayUserSettingsWorkspaceBreadcrumb {...args} {...routerProps}/>}></Route>
51
- </MemoryRouter>
52
- </AppContext.Provider>
53
- </MockTranslationProvider>;
46
+ <AppContext.Provider value={context}>
47
+ <MemoryRouter initialEntries={['/profile']}>
48
+ <Route component={routerProps => <DisplayUserSettingsWorkspaceBreadcrumb {...args} {...routerProps}/>}></Route>
49
+ </MemoryRouter>
50
+ </AppContext.Provider>;
54
51
 
55
52
  Template.propTypes = {
56
53
  context: PropTypes.object,
@@ -2,7 +2,6 @@ import {MemoryRouter, Route} from "react-router-dom";
2
2
  import React from "react";
3
3
  import AppContext from "../../../contexts/AppContext";
4
4
  import PropTypes from "prop-types";
5
- import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
6
5
  import DisplayUserTheme from "./DisplayUserTheme";
7
6
 
8
7
 
@@ -31,13 +30,11 @@ const context = {
31
30
 
32
31
 
33
32
  const Template = args =>
34
- <MockTranslationProvider>
35
- <AppContext.Provider value={context}>
36
- <MemoryRouter initialEntries={['/']}>
37
- <Route component={routerProps => <DisplayUserTheme {...args} {...routerProps}/>}></Route>
38
- </MemoryRouter>
39
- </AppContext.Provider>
40
- </MockTranslationProvider>;
33
+ <AppContext.Provider value={context}>
34
+ <MemoryRouter initialEntries={['/']}>
35
+ <Route component={routerProps => <DisplayUserTheme {...args} {...routerProps}/>}></Route>
36
+ </MemoryRouter>
37
+ </AppContext.Provider>;
41
38
 
42
39
  Template.propTypes = {
43
40
  context: PropTypes.object,
@@ -316,7 +316,7 @@ class EditUserProfile extends Component {
316
316
  onChange={this.handleInputChange}
317
317
  disabled={!this.areActionsAllowed}/>
318
318
  {this.state.errors.isFirstnameEmpty &&
319
- <div className="first_name error message">
319
+ <div className="first_name error-message">
320
320
  <Trans>A first name is required.</Trans>
321
321
  </div>
322
322
  }
@@ -336,7 +336,7 @@ class EditUserProfile extends Component {
336
336
  onChange={this.handleInputChange}
337
337
  disabled={!this.areActionsAllowed}/>
338
338
  {this.state.errors.isLastnameEmpty &&
339
- <div className="last_name error message">
339
+ <div className="last_name error-message">
340
340
  <Trans>A last name is required.</Trans>
341
341
  </div>
342
342
  }
@@ -355,7 +355,7 @@ class EditUserProfile extends Component {
355
355
  {this.canIUseLocale &&
356
356
  <div className="input select locale required">
357
357
  <label htmlFor="user-profile-locale-input"><Trans>Language</Trans></label>
358
- <select className="large" id="user-profile-locale-input" name="locale" value={this.state.profile.locale}
358
+ <select id="user-profile-locale-input" name="locale" value={this.state.profile.locale}
359
359
  disabled={!this.areActionsAllowed} onChange={this.handleInputChange}>
360
360
  {this.supportedLocales.map(supportedLocale =>
361
361
  <option key={supportedLocale.locale} value={supportedLocale.locale}>