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
@@ -127,7 +127,7 @@ class FilterResourcesByShortcuts extends React.Component {
127
127
 
128
128
  render() {
129
129
  return (
130
- <div className="navigation first shortcuts">
130
+ <div className="navigation-secondary navigation-shortcuts">
131
131
  <ul >
132
132
  <li>
133
133
  <div className={`row ${this.isAllItemsSelected ? "selected" : ""}`}>
@@ -41,7 +41,7 @@ export default class FilterResourcesByShortcutsPage {
41
41
  * Returns the filter resources by shortcuts
42
42
  */
43
43
  get filterResourcesByShortcuts() {
44
- return this._page.container.querySelector('.navigation.first.shortcuts');
44
+ return this._page.container.querySelector('.navigation-secondary.navigation-shortcuts');
45
45
  }
46
46
 
47
47
  /**
@@ -1,7 +1,6 @@
1
1
  import React from "react";
2
2
  import {MemoryRouter, Route} from "react-router-dom";
3
3
  import AppContext from "../../../contexts/AppContext";
4
- import "../../../../css/themes/default/ext_app.css";
5
4
  import FilterResourcesByShortcuts from "./FilterResourcesByShortcuts";
6
5
 
7
6
 
@@ -175,7 +175,7 @@ class FilterResourcesByTags extends React.Component {
175
175
  */
176
176
  render() {
177
177
  return (
178
- <div className="folders navigation first accordion">
178
+ <div className="navigation-secondary-tree navigation-secondary navigation-tags accordion">
179
179
  <ul className="accordion-header">
180
180
  <li className={`node root ${this.state.open ? "open" : "close"}`}>
181
181
  <div className="row title">
@@ -40,6 +40,12 @@ export function defaultProps() {
40
40
  return {
41
41
  history: {
42
42
  push: jest.fn()
43
+ },
44
+ dragContext: {
45
+ dragging: true,
46
+ draggedItems: {
47
+ resources: [resource]
48
+ }
43
49
  }
44
50
  };
45
51
  }
@@ -74,3 +80,44 @@ export const tagsMock = [
74
80
  is_shared: false
75
81
  }
76
82
  ];
83
+
84
+ export const resource = {
85
+ "id": "8e3874ae-4b40-590b-968a-418f704b9d9a",
86
+ "name": "apache",
87
+ "username": "www-data",
88
+ "uri": "http:\/\/www.apache.org\/",
89
+ "description": "Apache is the world\u0027s most used web server software.",
90
+ "deleted": false,
91
+ "created": "2020-08-25T08:35:19+00:00",
92
+ "modified": "2020-08-26T08:35:19+00:00",
93
+ "created_by": "f848277c-5398-58f8-a82a-72397af2d450",
94
+ "modified_by": "f848277c-5398-58f8-a82a-72397af2d450",
95
+ "favorite": {
96
+ "id": "56216dba-b6da-592b-87cb-fb5cbbd0a424",
97
+ "user_id": "f848277c-5398-58f8-a82a-72397af2d450",
98
+ "foreign_key": "8e3874ae-4b40-590b-968a-418f704b9d9a",
99
+ "foreign_model": "Resource",
100
+ "created": "2020-08-27T08:35:21+00:00",
101
+ "modified": "2020-08-27T08:35:21+00:00"
102
+ },
103
+ "permission": {
104
+ "id": "8dfd59a7-852d-5c57-bd45-75c28bbb3f6c",
105
+ "aco": "Resource",
106
+ "aco_foreign_key": "8e3874ae-4b40-590b-968a-418f704b9d9a",
107
+ "aro": "User",
108
+ "aro_foreign_key": "f848277c-5398-58f8-a82a-72397af2d450",
109
+ "type": 15,
110
+ "created": "2020-08-27T08:35:19+00:00",
111
+ "modified": "2020-08-27T08:35:19+00:00"
112
+ },
113
+ "tags": [
114
+ {
115
+ "id": "1",
116
+ "slug": "test",
117
+ "is_shared": false
118
+ },
119
+ ],
120
+ "folder_parent_id": null,
121
+ "personal": false,
122
+ "resource_type_id": "669f8c64-242a-59fb-92fc-81f660975fd3"
123
+ };
@@ -18,12 +18,13 @@
18
18
  import {
19
19
  defaultAppContext,
20
20
  defaultProps,
21
- defaultResourceWorkspaceContext,
21
+ defaultResourceWorkspaceContext, resource,
22
22
  tagsMock
23
23
  } from "./FilterResourcesByTags.test.data";
24
24
  import FilterResourcesByTags from "./FilterResourcesByTags.test.page";
25
25
  import MockPort from "../../../test/mock/MockPort";
26
26
  import {ResourceWorkspaceFilterTypes} from "../../../contexts/ResourceWorkspaceContext";
27
+ import PassboltApiFetchError from "../../../../shared/lib/Error/PassboltApiFetchError";
27
28
 
28
29
  beforeEach(() => {
29
30
  jest.resetModules();
@@ -47,6 +48,9 @@ describe("See tags", () => {
47
48
  };
48
49
  const context = defaultAppContext(appContext); // The applicative context
49
50
  const resourceWorkspaceContext = defaultResourceWorkspaceContext();
51
+ const requestMockImpl = jest.fn((message, data) => data);
52
+ const mockContextRequest = (context, implementation) => jest.spyOn(context.port, 'request').mockImplementation(implementation);
53
+ mockContextRequest(context, requestMockImpl);
50
54
  /**
51
55
  * Given an organization with 5 tags
52
56
  * Then I should see the 5 tags on the left sidebar
@@ -58,12 +62,12 @@ describe("See tags", () => {
58
62
  page = new FilterResourcesByTags(context, props, resourceWorkspaceContext);
59
63
  });
60
64
 
61
- it('I should see the 5 tags made on the resource', () => {
65
+ it('As LU I should see the 5 tags made on the resource', () => {
62
66
  expect(page.sidebarTagFilterSection.exists()).toBeTruthy();
63
67
  expect(page.sidebarTagFilterSection.count()).toBe(5);
64
68
  });
65
69
 
66
- it('I should be able to identify each tag name', () => {
70
+ it('As LU I should be able to identify each tag name', () => {
67
71
  expect(page.sidebarTagFilterSection.name(1)).toBe('#git');
68
72
  expect(page.sidebarTagFilterSection.name(2)).toBe('gpg');
69
73
  expect(page.sidebarTagFilterSection.name(3)).toBe('slug');
@@ -71,6 +75,33 @@ describe("See tags", () => {
71
75
  expect(page.sidebarTagFilterSection.name(5)).toBe('there’s always something to look at if you open your eyes!');
72
76
  });
73
77
 
78
+ it('As LU I should be able to drop a resource on tag', async() => {
79
+ await page.sidebarTagFilterSection.onDropTag(3);
80
+ expect(context.port.request).toHaveBeenCalledWith("passbolt.tags.add-resources-tag", {"resources": [resource.id],"tag": tagsMock[1]});
81
+ });
82
+
83
+ it('As LU I should see tags disabled if a resource is dragging', async() => {
84
+ await page.sidebarTagFilterSection.onDropTag(3);
85
+ expect(page.sidebarTagFilterSection.tagClassname(1)).toBe('row disabled');
86
+ expect(page.sidebarTagFilterSection.tagClassname(2)).toBe('row');
87
+ expect(page.sidebarTagFilterSection.tagClassname(3)).toBe('row');
88
+ expect(page.sidebarTagFilterSection.tagClassname(4)).toBe('row selected');
89
+ expect(page.sidebarTagFilterSection.tagClassname(5)).toBe('row');
90
+ });
91
+
92
+ it('As LU I should see an error dialog if the drop operation fails for an unexpected reason', async() => {
93
+ // Mock the request function to make it return an error.
94
+ jest.spyOn(context.port, 'request').mockImplementationOnce(() => {
95
+ throw new PassboltApiFetchError("Jest simulate API error.");
96
+ });
97
+
98
+ await page.sidebarTagFilterSection.onDropTag(3);
99
+
100
+ // Throw general error message
101
+ expect(page.sidebarTagFilterSection.errorDialogExist).toBeTruthy();
102
+ expect(page.sidebarTagFilterSection.errorDialogExist).toBeTruthy();
103
+ });
104
+
74
105
  it('As LU I filter the tags in the resources workspace primary sidebar by personal tag', async() => {
75
106
  await page.title.click(page.title.filterButton);
76
107
  expect(page.sidebarTagFilterSectionsContextualMenu.personalTagMenu.textContent).toBe("My tags");
@@ -25,6 +25,9 @@ import FilterResourcesByTagsListContextualMenuPageObject from "./FilterResources
25
25
  import {ResourceWorkspaceContext} from "../../../contexts/ResourceWorkspaceContext";
26
26
  import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
27
27
  import FilterResourcesByTags from "./FilterResourcesByTags";
28
+ import {DragContext} from "../../../contexts/DragContext";
29
+ import DialogContextProvider from "../../../contexts/DialogContext";
30
+ import ManageDialogs from "../../../components/Common/Dialog/ManageDialogs/ManageDialogs";
28
31
 
29
32
  /**
30
33
  * The FilterResourcesByTags component represented as a page
@@ -39,14 +42,19 @@ export default class FilterResourcesByTagsPage {
39
42
  this._page = render(
40
43
  <MockTranslationProvider>
41
44
  <AppContext.Provider value={appContext}>
42
- <Router>
43
- <ResourceWorkspaceContext.Provider value={resourceWorkspaceContext}>
44
- <ContextualMenuContextProvider>
45
- <ManageContextualMenu/>
46
- <FilterResourcesByTags.WrappedComponent {...props}/>
47
- </ContextualMenuContextProvider>
48
- </ResourceWorkspaceContext.Provider>
49
- </Router>
45
+ <DialogContextProvider>
46
+ <Router>
47
+ <ManageDialogs/>
48
+ <ResourceWorkspaceContext.Provider value={resourceWorkspaceContext}>
49
+ <ContextualMenuContextProvider>
50
+ <ManageContextualMenu/>
51
+ <DragContext.Provider value={props.dragContext}>
52
+ <FilterResourcesByTags.WrappedComponent {...props}/>
53
+ </DragContext.Provider>
54
+ </ContextualMenuContextProvider>
55
+ </ResourceWorkspaceContext.Provider>
56
+ </Router>
57
+ </DialogContextProvider>
50
58
  </AppContext.Provider>
51
59
  </MockTranslationProvider>
52
60
  );
@@ -207,12 +215,35 @@ class SidebarTagFilterSectionPageObject {
207
215
  return this.list.querySelectorAll('.tag-item')[index - 1].querySelector('.row .main-cell-wrapper .main-cell a');
208
216
  }
209
217
 
218
+ /**
219
+ * return the tag classname for the 'index' one
220
+ * @param index
221
+ */
222
+ tagClassname(index) {
223
+ return this.list.querySelectorAll('.tag-item')[index - 1].querySelector('.row').className.trim();
224
+ }
225
+
210
226
  /**
211
227
  * Returns the displayed tag name for the 'index' one
212
228
  * @param index The display rank of name's tag
213
229
  */
214
230
  name(index) {
215
- return this.list.querySelectorAll('.tag-item')[index - 1].querySelector('.ellipsis').textContent;
231
+ return this.list.querySelectorAll('.tag-item')[index - 1].querySelector('.tag-name').textContent;
232
+ }
233
+
234
+ get errorDialogExist() {
235
+ return this._container.querySelector('.error-dialog') !== null;
236
+ }
237
+
238
+ get errorDialogMessageExist() {
239
+ return this._container.querySelector('.error-dialog .dialog .dialog-content .form-content') !== null;
240
+ }
241
+
242
+ /**
243
+ * Drop on the tag
244
+ */
245
+ onDropTag(index) {
246
+ return this.drop(this.tag(index));
216
247
  }
217
248
 
218
249
  /** Click on the component */
@@ -227,4 +258,10 @@ class SidebarTagFilterSectionPageObject {
227
258
  fireEvent.contextMenu(component);
228
259
  await waitFor(() => {});
229
260
  }
261
+
262
+ /** Drop on the component */
263
+ async drop(component) {
264
+ fireEvent.drop(component);
265
+ await waitFor(() => {});
266
+ }
230
267
  }
@@ -1,6 +1,5 @@
1
1
  import React from "react";
2
2
  import {MemoryRouter, Route} from "react-router-dom";
3
- import "../../../../css/themes/default/ext_app.css";
4
3
  import AppContext from "../../../contexts/AppContext";
5
4
  import PropTypes from "prop-types";
6
5
  import FilterResourcesByTags from "./FilterResourcesByTags";
@@ -19,6 +19,10 @@ import {withContextualMenu} from "../../../contexts/ContextualMenuContext";
19
19
  import {withRouter} from "react-router-dom";
20
20
  import Icon from "../../Common/Icons/Icon";
21
21
  import {Trans, withTranslation} from "react-i18next";
22
+ import {withDrag} from "../../../contexts/DragContext";
23
+ import {withDialog} from "../../../contexts/DialogContext";
24
+ import {withAppContext} from "../../../contexts/AppContext";
25
+ import NotifyError from "../../Common/Error/NotifyError/NotifyError";
22
26
 
23
27
  class FilterResourcesByTagsList extends React.Component {
24
28
  /**
@@ -38,7 +42,8 @@ class FilterResourcesByTagsList extends React.Component {
38
42
  getDefaultState() {
39
43
  return {
40
44
  open: true,
41
- selectedTag: null, // tag selected for the contextual menu
45
+ selectedTag: null, // Tag selected for the contextual menu
46
+ draggingOverTagId: null // The dragging over tag id
42
47
  };
43
48
  }
44
49
 
@@ -48,6 +53,9 @@ class FilterResourcesByTagsList extends React.Component {
48
53
  bindCallbacks() {
49
54
  this.handleContextualMenuEvent = this.handleContextualMenuEvent.bind(this);
50
55
  this.handleMoreClickEvent = this.handleMoreClickEvent.bind(this);
56
+ this.handleDropEvent = this.handleDropEvent.bind(this);
57
+ this.handleDragOverEvent = this.handleDragOverEvent.bind(this);
58
+ this.handleDragLeaveEvent = this.handleDragLeaveEvent.bind(this);
51
59
  }
52
60
 
53
61
  /**
@@ -123,6 +131,56 @@ class FilterResourcesByTagsList extends React.Component {
123
131
  }
124
132
  }
125
133
 
134
+ /**
135
+ * Handle when the user drop content on this component.
136
+ * @param {ReactEvent} event The event
137
+ * @param {Object} tag The tag
138
+ */
139
+ async handleDropEvent(event, tag) {
140
+ this.setState({draggingOverTagId: null});
141
+ try {
142
+ const resources = this.props.dragContext.draggedItems.resources.map(resource => resource.id);
143
+ this.props.context.port.request("passbolt.tags.add-resources-tag", {resources, tag});
144
+ } catch (error) {
145
+ this.onUnexpectedError(error);
146
+ }
147
+ }
148
+
149
+ /**
150
+ * Whenever an unexpected error occured
151
+ * @param {object} error The error
152
+ * @returns {Promise<void>}
153
+ */
154
+ onUnexpectedError(error) {
155
+ const errorDialogProps = {
156
+ title: "There was an unexpected error...",
157
+ message: error.message
158
+ };
159
+ this.props.context.setContext({errorDialogProps});
160
+ this.props.dialogContext.open(NotifyError);
161
+ }
162
+
163
+ /**
164
+ * Handle when the user is dragging over the tag.
165
+ * @param {ReactEvent} event The event
166
+ * @param {string} tagId The tag ID
167
+ */
168
+ handleDragOverEvent(event, tagId) {
169
+ /*
170
+ * If you want to allow a drop, you must prevent the default handling by cancelling both the dragenter and dragover events.
171
+ * see: https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations#droptargets
172
+ */
173
+ event.preventDefault();
174
+ this.setState({draggingOverTagId: tagId});
175
+ }
176
+
177
+ /**
178
+ * Handle when the user is dragging leave the tag.
179
+ */
180
+ handleDragLeaveEvent() {
181
+ this.setState({draggingOverTagId: null});
182
+ }
183
+
126
184
  // Zero conditional statements
127
185
  /**
128
186
  * get the filter according to the type of the filter
@@ -165,6 +223,62 @@ class FilterResourcesByTagsList extends React.Component {
165
223
  return filter.type === ResourceWorkspaceFilterTypes.TAG && filter.payload.tag.id === tagId;
166
224
  }
167
225
 
226
+ /**
227
+ * Check if the user is currently dragging content.
228
+ * @returns {boolean}
229
+ */
230
+ isDragging() {
231
+ return this.props.dragContext.dragging;
232
+ }
233
+
234
+ /**
235
+ * Check if the component is disabled.
236
+ * @param {Object} tag
237
+ * @returns {boolean}
238
+ */
239
+ isDisabled(tag) {
240
+ /*
241
+ * If the user is dragging content, disable the component if:
242
+ * - The user is not allowed to drop content in the shared tag.
243
+ * - The user is not allowed to drop dragged items except resources;
244
+ */
245
+ if (this.isDragging()) {
246
+ if (tag.is_shared) {
247
+ return true;
248
+ }
249
+ if (!this.canDropInto()) {
250
+ return true;
251
+ }
252
+ }
253
+
254
+ return false;
255
+ }
256
+
257
+ /**
258
+ * Show the drop focus for a tag
259
+ * @param tag
260
+ * @returns {boolean}
261
+ */
262
+ showDropFocus(tag) {
263
+ return tag.id === this.state.draggingOverTagId && !this.isDisabled(tag)
264
+ }
265
+
266
+ /**
267
+ * Check if the user can drag all the items they are currently dragging.
268
+ * @returns {boolean}
269
+ */
270
+ canDropInto() {
271
+ return this.draggedItems.resources.length > 0;
272
+ }
273
+
274
+ /**
275
+ * return dragged items
276
+ * @returns {*}
277
+ */
278
+ get draggedItems() {
279
+ return this.props.dragContext.draggedItems;
280
+ }
281
+
168
282
  /**
169
283
  * Get the translate function
170
284
  * @returns {function(...[*]=)}
@@ -192,11 +306,14 @@ class FilterResourcesByTagsList extends React.Component {
192
306
  <ul className="tree ready">
193
307
  {this.filteredTags.map(tag =>
194
308
  <li className="open node root tag-item" key={tag.id}>
195
- <div className={`row ${this.isSelected(tag.id) ? "selected" : ""}`}>
309
+ <div className={`row ${this.isSelected(tag.id) ? "selected" : ""} ${this.isDisabled(tag) ? "disabled" : ""} ${this.showDropFocus(tag) ? "drop-focus" : ""}`}
310
+ onDrop={ event => this.handleDropEvent(event, tag)}
311
+ onDragOver={ event => this.handleDragOverEvent(event, tag.id)}
312
+ onDragLeave={this.handleDragLeaveEvent}>
196
313
  <div className="main-cell-wrapper" onClick={() => this.handleOnClickTag(tag)}
197
314
  onContextMenu={event => this.handleContextualMenuEvent(event, tag)}>
198
315
  <div className="main-cell">
199
- <a title={tag.slug}><span className="ellipsis">{tag.slug}</span></a>
316
+ <a title={tag.slug}><span className="ellipsis tag-name">{tag.slug}</span></a>
200
317
  </div>
201
318
  </div>
202
319
  {!tag.is_shared &&
@@ -218,15 +335,18 @@ class FilterResourcesByTagsList extends React.Component {
218
335
  }
219
336
 
220
337
  FilterResourcesByTagsList.propTypes = {
338
+ context: PropTypes.any, // The app context
221
339
  contextualMenuContext: PropTypes.any, // The contextual menu context
222
340
  tags: PropTypes.array,
223
341
  filterType: PropTypes.string,
224
342
  resourceWorkspaceContext: PropTypes.object,
225
343
  history: PropTypes.any,
344
+ dialogContext: PropTypes.any, // The dialog context
345
+ dragContext: PropTypes.any, // The drag and drop context
226
346
  t: PropTypes.func, // The translation function
227
347
  };
228
348
 
229
- export default withRouter(withResourceWorkspace(withContextualMenu(withTranslation('common')(FilterResourcesByTagsList))));
349
+ export default withRouter(withAppContext(withDialog(withResourceWorkspace(withContextualMenu(withDrag(withTranslation('common')(FilterResourcesByTagsList)))))));
230
350
 
231
351
  export const filterByTagsOptions = {
232
352
  all: "all",
@@ -1,6 +1,5 @@
1
1
  import React from "react";
2
2
  import {MemoryRouter, Route} from "react-router-dom";
3
- import "../../../../css/themes/default/ext_app.css";
4
3
  import FilterResourcesByText from "./FilterResourcesByText";
5
4
 
6
5
 
@@ -16,5 +15,4 @@ const Template = args =>
16
15
  </MemoryRouter>;
17
16
 
18
17
 
19
-
20
18
  export const Initial = Template.bind({});
@@ -401,7 +401,8 @@ class ImportResources extends Component {
401
401
  id="dialog-import-passwords-choose-file"
402
402
  className={`button primary ${this.hasAllInputDisabled() ? "disabled" : ""}`}
403
403
  onClick={this.handleSelectFile}>
404
- <Icon name="upload-a"/> <Trans>Choose a file</Trans>
404
+ <Icon name="upload-a"/>
405
+ <span><Trans>Choose a file</Trans></span>
405
406
  </a>
406
407
  </div>
407
408
  {isInvalidCsvFile &&
@@ -418,26 +419,26 @@ class ImportResources extends Component {
418
419
  </div>
419
420
 
420
421
  {canUseTags &&
421
- <div className="input text">
422
+ <div className="input checkbox medium">
422
423
  <input
423
424
  id="dialog-import-passwords-import-tags"
424
425
  type="checkbox"
425
426
  checked={this.state.options.tags}
426
427
  disabled={this.hasAllInputDisabled()}
427
428
  onChange={this.handleImportOptionTagsChanged}/>
428
- <label htmlFor="dialog-import-passwords-import-tags"> <Trans>Add a unique import tag to passwords</Trans></label>
429
+ <label htmlFor="dialog-import-passwords-import-tags"><Trans>Add a unique import tag to passwords</Trans></label>
429
430
  </div>
430
431
  }
431
432
 
432
433
  {canUseFolders &&
433
- <div className="input text">
434
+ <div className="input checkbox medium">
434
435
  <input
435
436
  id="dialog-import-passwords-import-folders"
436
437
  type="checkbox"
437
438
  checked={this.state.options.folders}
438
439
  disabled={this.hasAllInputDisabled()}
439
440
  onChange={this.handleImportOptionFoldersChanged}/>
440
- <label htmlFor="dialog-import-passwords-import-folders"> <Trans>Import folders</Trans></label>
441
+ <label htmlFor="dialog-import-passwords-import-folders"><Trans>Import folders</Trans></label>
441
442
  </div>
442
443
  }
443
444
  </div>
@@ -276,18 +276,15 @@ class ImportResourcesKeyUnlock extends Component {
276
276
  type={this.state.showPassword ? "text" : "password"}
277
277
  disabled={this.hasAllInputDisabled()}
278
278
  placeholder={this.translate('Passphrase')}
279
- ref={this.passwordInputRef}/>
279
+ ref={this.passwordInputRef}
280
+ autoComplete="off"/>
281
+ <a
282
+ onClick={this.handlePasswordViewToggled}
283
+ className={`password-view button button-icon toggle ${this.state.showPassword ? "selected" : ""} ${this.hasAllInputDisabled() ? "disabled" : ""}`}>
284
+ <Icon name='eye-open' big={true}/>
285
+ <span className="visually-hidden">view</span>
286
+ </a>
280
287
  </div>
281
- <ul className="actions inline">
282
- <li>
283
- <a
284
- onClick={this.handlePasswordViewToggled}
285
- className={`password-view button button-icon toggle ${this.state.showPassword ? "selected" : ""} ${this.hasAllInputDisabled() ? "disabled" : ""}`}>
286
- <Icon name='eye-open' big={true}/>
287
- <span className="visually-hidden">view</span>
288
- </a>
289
- </li>
290
- </ul>
291
288
  </div>
292
289
 
293
290
  <div className="input-file-chooser-wrapper">
@@ -306,7 +303,8 @@ class ImportResourcesKeyUnlock extends Component {
306
303
  <a
307
304
  className={`button primary ${this.hasAllInputDisabled() ? "disabled" : ""}`}
308
305
  onClick={this.handleSelectFile}>
309
- <Icon name="upload-a"/> <Trans>Choose a file</Trans>
306
+ <Icon name="upload-a"/>
307
+ <span><Trans>Choose a file</Trans></span>
310
308
  </a>
311
309
  </div>
312
310
  </div>
@@ -1,8 +1,6 @@
1
1
  import React from "react";
2
2
  import {MemoryRouter, Route} from "react-router-dom";
3
- import "../../../../css/themes/default/ext_app.css";
4
3
  import AppContext from "../../../contexts/AppContext";
5
- import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
6
4
  import ImportResourcesKeyUnlock from "./ImportResourcesKeyUnlock";
7
5
 
8
6
 
@@ -19,15 +17,11 @@ const context = {
19
17
 
20
18
 
21
19
  const Template = args =>
22
- <MockTranslationProvider>
23
- <AppContext.Provider value={context}>
24
- <MemoryRouter initialEntries={['/']}>
25
- <Route component={routerProps => <ImportResourcesKeyUnlock {...args} {...routerProps}/>}></Route>
26
- </MemoryRouter>
27
- </AppContext.Provider>
28
- </MockTranslationProvider>;
29
-
20
+ <AppContext.Provider value={context}>
21
+ <MemoryRouter initialEntries={['/']}>
22
+ <Route component={routerProps => <ImportResourcesKeyUnlock {...args} {...routerProps}/>}></Route>
23
+ </MemoryRouter>
24
+ </AppContext.Provider>;
30
25
 
31
26
 
32
27
  export const Initial = Template.bind({});
33
-
@@ -238,7 +238,7 @@ class ImportResourcesResult extends Component {
238
238
  result += `----------------------------\n${this.translate("Resources errors")}\n----------------------------\n${JSON.stringify(this.resultErrorsResources, null, 4)}\n\n`;
239
239
  }
240
240
  if (this.resultHasErrorsFolders) {
241
- result += `----------------------------\n${this.translate("Folders errors")}\n----------------------------\n${JSON.stringify(this.resultErrorsFolders, null, 4)}`;
241
+ result += `----------------------------\n${this.translate("Folder errors")}\n----------------------------\n${JSON.stringify(this.resultErrorsFolders, null, 4)}`;
242
242
  }
243
243
 
244
244
  return result;
@@ -310,7 +310,7 @@ class ImportResourcesResult extends Component {
310
310
  <div className="accordion error-details">
311
311
  <div className="accordion-header">
312
312
  <a onClick={this.handleErrorDetailsToggle}>
313
- <Trans>Errors details</Trans>
313
+ <Trans>Error details</Trans>
314
314
  <Icon baseline={true} name={this.state.showErrorDetails ? "caret-up" : "caret-down"}/>
315
315
  </a>
316
316
  </div>
@@ -320,7 +320,7 @@ class ImportResourcesResult extends Component {
320
320
  <label
321
321
  htmlFor="js_field_debug"
322
322
  className="visuallyhidden">
323
- <Trans>Errors details</Trans>
323
+ <Trans>Error details</Trans>
324
324
  </label>
325
325
  <textarea
326
326
  id="js_field_debug"
@@ -37,8 +37,8 @@ describe("As LU I should see the password import result dialog", () => {
37
37
  expect(page.exists()).toBeTruthy();
38
38
  expect(page.title).toBe("Import success!");
39
39
 
40
- expect(page.result(1)).toBe("10 password has been imported successfully.");
41
- expect(page.result(2)).toBe("5 folder has been imported successfully.");
40
+ expect(page.result(1)).toBe("10 passwords have been imported successfully.");
41
+ expect(page.result(2)).toBe("5 folders have been imported successfully.");
42
42
 
43
43
  await page.acceptResult();
44
44
  expect(props.onClose).toBeCalled();
@@ -58,7 +58,7 @@ describe("As LU I should see the password import result dialog", () => {
58
58
 
59
59
  const errorDebugValue = "----------------------------\nResources errors\n----------------------------\n" +
60
60
  "[\n {\n \"name\": \"resource1\"\n },\n {\n \"name\": \"resource2\"\n }\n" +
61
- "]\n\n----------------------------\nFolders errors\n----------------------------\n[\n {\n" +
61
+ "]\n\n----------------------------\nFolder errors\n----------------------------\n[\n {\n" +
62
62
  " \"name\": \"folder1\"\n }\n]";
63
63
 
64
64
  expect(page.errorDebug).toBe(errorDebugValue);
@@ -1,9 +1,7 @@
1
1
  import React from "react";
2
2
  import {MemoryRouter, Route} from "react-router-dom";
3
- import "../../../../css/themes/default/ext_app.css";
4
3
  import ImportResourcesResult from "./ImportResourcesResult";
5
4
  import AppContext from "../../../contexts/AppContext";
6
- import MockTranslationProvider from "../../../test/mock/components/Internationalisation/MockTranslationProvider";
7
5
 
8
6
 
9
7
  export default {
@@ -19,14 +17,11 @@ const context = {
19
17
 
20
18
 
21
19
  const Template = args =>
22
- <MockTranslationProvider>
23
- <AppContext.Provider value={context}>
24
- <MemoryRouter initialEntries={['/']}>
25
- <Route component={routerProps => <ImportResourcesResult {...args} {...routerProps}/>}></Route>
26
- </MemoryRouter>
27
- </AppContext.Provider>
28
- </MockTranslationProvider>;
29
-
20
+ <AppContext.Provider value={context}>
21
+ <MemoryRouter initialEntries={['/']}>
22
+ <Route component={routerProps => <ImportResourcesResult {...args} {...routerProps}/>}></Route>
23
+ </MemoryRouter>
24
+ </AppContext.Provider>;
30
25
 
31
26
 
32
27
  export const Initial = Template.bind({});
@@ -40,4 +35,3 @@ Initial.args = {
40
35
  }
41
36
  }
42
37
  };
43
-