diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 014136506eb..0eb1041a731 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -467,6 +467,15 @@ "uri": { "message": "URI" }, + "uriPosition": { + "message": "URI $POSITION$", + "placeholders": { + "position": { + "content": "$1", + "example": "2" + } + } + }, "newUri": { "message": "New URI" }, diff --git a/src/popup2/app-routing.module.ts b/src/popup2/app-routing.module.ts index 548d3a7302b..26f791468dd 100644 --- a/src/popup2/app-routing.module.ts +++ b/src/popup2/app-routing.module.ts @@ -15,6 +15,7 @@ import { RegisterComponent } from './accounts/register.component'; import { TwoFactorOptionsComponent } from './accounts/two-factor-options.component'; import { TwoFactorComponent } from './accounts/two-factor.component'; import { TabsComponent } from './tabs.component'; +import { AddEditComponent } from './vault/add-edit.component'; import { CiphersComponent } from './vault/ciphers.component'; import { CurrentTabComponent } from './vault/current-tab.component'; import { GroupingsComponent } from './vault/groupings.component'; @@ -33,6 +34,8 @@ const routes: Routes = [ { path: 'environment', component: EnvironmentComponent }, { path: 'ciphers', component: CiphersComponent }, { path: 'view-cipher', component: ViewComponent }, + { path: 'add-cipher', component: AddEditComponent }, + { path: 'edit-cipher', component: AddEditComponent }, { path: 'tabs', component: TabsComponent, children: [ diff --git a/src/popup2/app.module.ts b/src/popup2/app.module.ts index ac7132f3f09..b9a7b821c0c 100644 --- a/src/popup2/app.module.ts +++ b/src/popup2/app.module.ts @@ -24,6 +24,7 @@ import { RegisterComponent } from './accounts/register.component'; import { TwoFactorOptionsComponent } from './accounts/two-factor-options.component'; import { TwoFactorComponent } from './accounts/two-factor.component'; import { TabsComponent } from './tabs.component'; +import { AddEditComponent } from './vault/add-edit.component'; import { CiphersComponent } from './vault/ciphers.component'; import { CurrentTabComponent } from './vault/current-tab.component'; import { GroupingsComponent } from './vault/groupings.component'; @@ -62,6 +63,7 @@ import { IconComponent } from 'jslib/angular/components/icon.component'; ], declarations: [ ActionButtonsComponent, + AddEditComponent, ApiActionDirective, AppComponent, AutofocusDirective, diff --git a/src/popup2/vault/add-edit.component.html b/src/popup2/vault/add-edit.component.html new file mode 100644 index 00000000000..ba859d26f3c --- /dev/null +++ b/src/popup2/vault/add-edit.component.html @@ -0,0 +1,303 @@ +
diff --git a/src/popup2/vault/add-edit.component.ts b/src/popup2/vault/add-edit.component.ts new file mode 100644 index 00000000000..7c96c330156 --- /dev/null +++ b/src/popup2/vault/add-edit.component.ts @@ -0,0 +1,58 @@ +import * as template from './add-edit.component.html'; + +import { Location } from '@angular/common'; +import { + Component, + OnInit, +} from '@angular/core'; +import { + ActivatedRoute, + Router, +} from '@angular/router'; + +import { ToasterService } from 'angular2-toaster'; +import { Angulartics2 } from 'angulartics2'; + +import { AuditService } from 'jslib/abstractions/audit.service'; +import { CipherService } from 'jslib/abstractions/cipher.service'; +import { FolderService } from 'jslib/abstractions/folder.service'; +import { I18nService } from 'jslib/abstractions/i18n.service'; +import { PlatformUtilsService } from 'jslib/abstractions/platformUtils.service'; + +import { AddEditComponent as BaseAddEditComponent } from 'jslib/angular/components/add-edit.component'; + +@Component({ + selector: 'app-vault-add-edit', + template: template, +}) +export class AddEditComponent extends BaseAddEditComponent implements OnInit { + constructor(cipherService: CipherService, folderService: FolderService, + i18nService: I18nService, platformUtilsService: PlatformUtilsService, + analytics: Angulartics2, toasterService: ToasterService, + auditService: AuditService, private route: ActivatedRoute, + private router: Router, private location: Location) { + super(cipherService, folderService, i18nService, platformUtilsService, analytics, + toasterService, auditService); + } + + ngOnInit() { + this.route.queryParams.subscribe(async (params) => { + if (params.cipherId) { + this.cipherId = params.cipherId; + } + this.editMode = !params.cipherId; + await this.load(); + }); + } + + async submit() { + if (await super.submit()) { + this.location.back(); + } + } + + cancel() { + super.cancel(); + this.location.back(); + } +} diff --git a/src/popup2/vault/ciphers.component.html b/src/popup2/vault/ciphers.component.html index 691e5dcea4a..df589f5868d 100644 --- a/src/popup2/vault/ciphers.component.html +++ b/src/popup2/vault/ciphers.component.html @@ -1,15 +1,15 @@