diff --git a/packages/admin-ui/src/lib/core/src/common/generated-types.ts b/packages/admin-ui/src/lib/core/src/common/generated-types.ts index 79eda36720..829bd17cda 100644 --- a/packages/admin-ui/src/lib/core/src/common/generated-types.ts +++ b/packages/admin-ui/src/lib/core/src/common/generated-types.ts @@ -4553,6 +4553,32 @@ export type AddNoteToCustomerMutation = ( ) } ); +export type UpdateCustomerNoteMutationVariables = { + input: UpdateCustomerNoteInput; +}; + + +export type UpdateCustomerNoteMutation = ( + { __typename?: 'Mutation' } + & { updateCustomerNote: ( + { __typename?: 'HistoryEntry' } + & Pick + ) } +); + +export type DeleteCustomerNoteMutationVariables = { + id: Scalars['ID']; +}; + + +export type DeleteCustomerNoteMutation = ( + { __typename?: 'Mutation' } + & { deleteCustomerNote: ( + { __typename?: 'DeletionResponse' } + & Pick + ) } +); + export type FacetValueFragment = ( { __typename?: 'FacetValue' } & Pick @@ -4910,6 +4936,32 @@ export type AddNoteToOrderMutation = ( ) } ); +export type UpdateOrderNoteMutationVariables = { + input: UpdateOrderNoteInput; +}; + + +export type UpdateOrderNoteMutation = ( + { __typename?: 'Mutation' } + & { updateOrderNote: ( + { __typename?: 'HistoryEntry' } + & Pick + ) } +); + +export type DeleteOrderNoteMutationVariables = { + id: Scalars['ID']; +}; + + +export type DeleteOrderNoteMutation = ( + { __typename?: 'Mutation' } + & { deleteOrderNote: ( + { __typename?: 'DeletionResponse' } + & Pick + ) } +); + export type AssetFragment = ( { __typename?: 'Asset' } & Pick @@ -6985,6 +7037,18 @@ export namespace AddNoteToCustomer { export type AddNoteToCustomer = AddNoteToCustomerMutation['addNoteToCustomer']; } +export namespace UpdateCustomerNote { + export type Variables = UpdateCustomerNoteMutationVariables; + export type Mutation = UpdateCustomerNoteMutation; + export type UpdateCustomerNote = UpdateCustomerNoteMutation['updateCustomerNote']; +} + +export namespace DeleteCustomerNote { + export type Variables = DeleteCustomerNoteMutationVariables; + export type Mutation = DeleteCustomerNoteMutation; + export type DeleteCustomerNote = DeleteCustomerNoteMutation['deleteCustomerNote']; +} + export namespace FacetValue { export type Fragment = FacetValueFragment; export type Translations = (NonNullable); @@ -7148,6 +7212,18 @@ export namespace AddNoteToOrder { export type AddNoteToOrder = AddNoteToOrderMutation['addNoteToOrder']; } +export namespace UpdateOrderNote { + export type Variables = UpdateOrderNoteMutationVariables; + export type Mutation = UpdateOrderNoteMutation; + export type UpdateOrderNote = UpdateOrderNoteMutation['updateOrderNote']; +} + +export namespace DeleteOrderNote { + export type Variables = DeleteOrderNoteMutationVariables; + export type Mutation = DeleteOrderNoteMutation; + export type DeleteOrderNote = DeleteOrderNoteMutation['deleteOrderNote']; +} + export namespace Asset { export type Fragment = AssetFragment; export type FocalPoint = (NonNullable); diff --git a/packages/admin-ui/src/lib/core/src/data/definitions/customer-definitions.ts b/packages/admin-ui/src/lib/core/src/data/definitions/customer-definitions.ts index 5cd59d6bf4..a9ce6d91ec 100644 --- a/packages/admin-ui/src/lib/core/src/data/definitions/customer-definitions.ts +++ b/packages/admin-ui/src/lib/core/src/data/definitions/customer-definitions.ts @@ -246,3 +246,22 @@ export const ADD_NOTE_TO_CUSTOMER = gql` } } `; + +export const UPDATE_CUSTOMER_NOTE = gql` + mutation UpdateCustomerNote($input: UpdateCustomerNoteInput!) { + updateCustomerNote(input: $input) { + id + data + isPublic + } + } +`; + +export const DELETE_CUSTOMER_NOTE = gql` + mutation DeleteCustomerNote($id: ID!) { + deleteCustomerNote(id: $id) { + result + message + } + } +`; diff --git a/packages/admin-ui/src/lib/core/src/data/definitions/order-definitions.ts b/packages/admin-ui/src/lib/core/src/data/definitions/order-definitions.ts index 8e52364baf..614e7c4355 100644 --- a/packages/admin-ui/src/lib/core/src/data/definitions/order-definitions.ts +++ b/packages/admin-ui/src/lib/core/src/data/definitions/order-definitions.ts @@ -268,3 +268,22 @@ export const ADD_NOTE_TO_ORDER = gql` } } `; + +export const UPDATE_ORDER_NOTE = gql` + mutation UpdateOrderNote($input: UpdateOrderNoteInput!) { + updateOrderNote(input: $input) { + id + data + isPublic + } + } +`; + +export const DELETE_ORDER_NOTE = gql` + mutation DeleteOrderNote($id: ID!) { + deleteOrderNote(id: $id) { + result + message + } + } +`; diff --git a/packages/admin-ui/src/lib/core/src/data/providers/customer-data.service.ts b/packages/admin-ui/src/lib/core/src/data/providers/customer-data.service.ts index 5769b20880..1addf0ae7e 100644 --- a/packages/admin-ui/src/lib/core/src/data/providers/customer-data.service.ts +++ b/packages/admin-ui/src/lib/core/src/data/providers/customer-data.service.ts @@ -10,6 +10,7 @@ import { CustomerGroupListOptions, CustomerListOptions, DeleteCustomerGroup, + DeleteCustomerNote, GetCustomer, GetCustomerGroups, GetCustomerGroupWithCustomers, @@ -24,6 +25,8 @@ import { UpdateCustomerGroup, UpdateCustomerGroupInput, UpdateCustomerInput, + UpdateCustomerNote, + UpdateCustomerNoteInput, } from '../../common/generated-types'; import { ADD_CUSTOMERS_TO_GROUP, @@ -32,6 +35,7 @@ import { CREATE_CUSTOMER_ADDRESS, CREATE_CUSTOMER_GROUP, DELETE_CUSTOMER_GROUP, + DELETE_CUSTOMER_NOTE, GET_CUSTOMER, GET_CUSTOMER_GROUP_WITH_CUSTOMERS, GET_CUSTOMER_GROUPS, @@ -41,6 +45,7 @@ import { UPDATE_CUSTOMER, UPDATE_CUSTOMER_ADDRESS, UPDATE_CUSTOMER_GROUP, + UPDATE_CUSTOMER_NOTE, } from '../definitions/customer-definitions'; import { BaseDataService } from './base-data.service'; @@ -201,4 +206,22 @@ export class CustomerDataService { }, ); } + + updateCustomerNote(input: UpdateCustomerNoteInput) { + return this.baseDataService.mutate( + UPDATE_CUSTOMER_NOTE, + { + input, + }, + ); + } + + deleteCustomerNote(id: string) { + return this.baseDataService.mutate( + DELETE_CUSTOMER_NOTE, + { + id, + }, + ); + } } diff --git a/packages/admin-ui/src/lib/core/src/data/providers/order-data.service.ts b/packages/admin-ui/src/lib/core/src/data/providers/order-data.service.ts index e54576c7b2..73871bc7c1 100644 --- a/packages/admin-ui/src/lib/core/src/data/providers/order-data.service.ts +++ b/packages/admin-ui/src/lib/core/src/data/providers/order-data.service.ts @@ -4,6 +4,7 @@ import { CancelOrder, CancelOrderInput, CreateFulfillment, + DeleteOrderNote, FulfillOrderInput, GetOrder, GetOrderHistory, @@ -14,17 +15,21 @@ import { SettlePayment, SettleRefund, SettleRefundInput, + UpdateOrderNote, + UpdateOrderNoteInput, } from '../../common/generated-types'; import { ADD_NOTE_TO_ORDER, CANCEL_ORDER, CREATE_FULFILLMENT, + DELETE_ORDER_NOTE, GET_ORDER, GET_ORDER_HISTORY, GET_ORDERS_LIST, REFUND_ORDER, SETTLE_PAYMENT, SETTLE_REFUND, + UPDATE_ORDER_NOTE, } from '../definitions/order-definitions'; import { BaseDataService } from './base-data.service'; @@ -96,4 +101,22 @@ export class OrderDataService { }, ); } + + updateOrderNote(input: UpdateOrderNoteInput) { + return this.baseDataService.mutate( + UPDATE_ORDER_NOTE, + { + input, + }, + ); + } + + deleteOrderNote(id: string) { + return this.baseDataService.mutate( + DELETE_ORDER_NOTE, + { + id, + }, + ); + } } diff --git a/packages/admin-ui/src/lib/core/src/shared/components/edit-note-dialog/edit-note-dialog.component.html b/packages/admin-ui/src/lib/core/src/shared/components/edit-note-dialog/edit-note-dialog.component.html new file mode 100644 index 0000000000..5e7dbf9c93 --- /dev/null +++ b/packages/admin-ui/src/lib/core/src/shared/components/edit-note-dialog/edit-note-dialog.component.html @@ -0,0 +1,23 @@ + + {{ 'common.edit-note' | translate }} + + + +
+ + + + + + {{ 'order.note-only-visible-to-administrators' | translate }} + + + {{ 'order.note-visible-to-customer' | translate }} + +
+ + + + diff --git a/packages/admin-ui/src/lib/core/src/shared/components/edit-note-dialog/edit-note-dialog.component.scss b/packages/admin-ui/src/lib/core/src/shared/components/edit-note-dialog/edit-note-dialog.component.scss new file mode 100644 index 0000000000..bae54fc787 --- /dev/null +++ b/packages/admin-ui/src/lib/core/src/shared/components/edit-note-dialog/edit-note-dialog.component.scss @@ -0,0 +1,19 @@ +@import "variables"; + +.visibility-select { + display: flex; + justify-content: space-between; + align-items: baseline; + .public { + color: $color-warning-500; + } + .private { + color: $color-success-500; + } +} +textarea.note { + width: 100%; + height: 72px; + border-radius: 3px; + margin-right: 6px; +} diff --git a/packages/admin-ui/src/lib/core/src/shared/components/edit-note-dialog/edit-note-dialog.component.ts b/packages/admin-ui/src/lib/core/src/shared/components/edit-note-dialog/edit-note-dialog.component.ts new file mode 100644 index 0000000000..3112e6a4dc --- /dev/null +++ b/packages/admin-ui/src/lib/core/src/shared/components/edit-note-dialog/edit-note-dialog.component.ts @@ -0,0 +1,26 @@ +import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; +import { Dialog } from '@vendure/admin-ui/core'; + +@Component({ + selector: 'vdr-edit-note-dialog', + templateUrl: './edit-note-dialog.component.html', + styleUrls: ['./edit-note-dialog.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class EditNoteDialogComponent implements Dialog<{ note: string; isPrivate?: boolean }> { + displayPrivacyControls = true; + noteIsPrivate = true; + note = ''; + resolveWith: (result?: { note: string; isPrivate?: boolean }) => void; + + confirm() { + this.resolveWith({ + note: this.note, + isPrivate: this.noteIsPrivate, + }); + } + + cancel() { + this.resolveWith(); + } +} diff --git a/packages/admin-ui/src/lib/core/src/shared/shared.module.ts b/packages/admin-ui/src/lib/core/src/shared/shared.module.ts index eccf02f13d..cf121d1955 100644 --- a/packages/admin-ui/src/lib/core/src/shared/shared.module.ts +++ b/packages/admin-ui/src/lib/core/src/shared/shared.module.ts @@ -41,6 +41,7 @@ import { DropdownItemDirective } from './components/dropdown/dropdown-item.direc import { DropdownMenuComponent } from './components/dropdown/dropdown-menu.component'; import { DropdownTriggerDirective } from './components/dropdown/dropdown-trigger.directive'; import { DropdownComponent } from './components/dropdown/dropdown.component'; +import { EditNoteDialogComponent } from './components/edit-note-dialog/edit-note-dialog.component'; import { EmptyPlaceholderComponent } from './components/empty-placeholder/empty-placeholder.component'; import { EntityInfoComponent } from './components/entity-info/entity-info.component'; import { ExtensionHostComponent } from './components/extension-host/extension-host.component'; @@ -170,6 +171,7 @@ const DECLARATIONS = [ EmptyPlaceholderComponent, TimelineEntryComponent, HistoryEntryDetailComponent, + EditNoteDialogComponent, ]; @NgModule({ diff --git a/packages/admin-ui/src/lib/customer/src/components/customer-detail/customer-detail.component.html b/packages/admin-ui/src/lib/customer/src/components/customer-detail/customer-detail.component.html index fe5b77a257..f5bb7dac00 100644 --- a/packages/admin-ui/src/lib/customer/src/components/customer-detail/customer-detail.component.html +++ b/packages/admin-ui/src/lib/customer/src/components/customer-detail/customer-detail.component.html @@ -143,6 +143,12 @@

{{ 'customer.orders' | translate }}

- +
diff --git a/packages/admin-ui/src/lib/customer/src/components/customer-detail/customer-detail.component.ts b/packages/admin-ui/src/lib/customer/src/components/customer-detail/customer-detail.component.ts index 278ce4a363..947272a753 100644 --- a/packages/admin-ui/src/lib/customer/src/components/customer-detail/customer-detail.component.ts +++ b/packages/admin-ui/src/lib/customer/src/components/customer-detail/customer-detail.component.ts @@ -13,6 +13,7 @@ import { GetCustomer, GetCustomerHistory, GetCustomerQuery, + HistoryEntry, ModalService, NotificationService, ServerConfigService, @@ -33,6 +34,7 @@ import { take, } from 'rxjs/operators'; +import { EditNoteDialogComponent } from '../../../../core/src/shared/components/edit-note-dialog/edit-note-dialog.component'; import { SelectCustomerGroupDialogComponent } from '../select-customer-group-dialog/select-customer-group-dialog.component'; type CustomerWithOrders = NonNullable; @@ -324,7 +326,60 @@ export class CustomerDetailComponent extends BaseDetailComponent this.fetchHistory.next()); + this.dataService.customer.addNoteToCustomer(this.id, note).subscribe(() => { + this.fetchHistory.next(); + this.notificationService.success(_('common.notify-create-success'), { + entity: 'Note', + }); + }); + } + + updateNote(entry: HistoryEntry) { + this.modalService + .fromComponent(EditNoteDialogComponent, { + closable: true, + locals: { + displayPrivacyControls: false, + note: entry.data.note, + }, + }) + .pipe( + switchMap((result) => { + if (result) { + return this.dataService.customer.updateCustomerNote({ + noteId: entry.id, + note: result.note, + }); + } else { + return EMPTY; + } + }), + ) + .subscribe((result) => { + this.fetchHistory.next(); + this.notificationService.success(_('common.notify-update-success'), { + entity: 'Note', + }); + }); + } + + deleteNote(entry: HistoryEntry) { + return this.modalService + .dialog({ + title: _('common.confirm-delete-note'), + body: entry.data.note, + buttons: [ + { type: 'secondary', label: _('common.cancel') }, + { type: 'danger', label: _('common.delete'), returnValue: true }, + ], + }) + .pipe(switchMap((res) => (res ? this.dataService.customer.deleteCustomerNote(entry.id) : EMPTY))) + .subscribe(() => { + this.fetchHistory.next(); + this.notificationService.success(_('common.notify-delete-success'), { + entity: 'Note', + }); + }); } protected setFormValues(entity: Customer.Fragment): void { diff --git a/packages/admin-ui/src/lib/customer/src/components/customer-history/customer-history.component.html b/packages/admin-ui/src/lib/customer/src/components/customer-history/customer-history.component.html index 418f6d0c2f..6f0bce80b1 100644 --- a/packages/admin-ui/src/lib/customer/src/components/customer-history/customer-history.component.html +++ b/packages/admin-ui/src/lib/customer/src/components/customer-history/customer-history.component.html @@ -25,7 +25,6 @@

{{ 'customer.customer-history' | translate }}

-
{{ 'customer.history-customer-detail-updated' | translate }} @@ -34,10 +33,16 @@

{{ 'customer.customer-history' | translate }}

- {{ 'customer.history-customer-added-to-group' | translate: { groupName: entry.data.groupName } }} + {{ + 'customer.history-customer-added-to-group' + | translate: { groupName: entry.data.groupName } + }} - {{ 'customer.history-customer-removed-from-group' | translate: { groupName: entry.data.groupName } }} + {{ + 'customer.history-customer-removed-from-group' + | translate: { groupName: entry.data.groupName } + }} {{ 'customer.history-customer-address-created' | translate }} @@ -94,8 +99,37 @@

{{ 'customer.customer-history' | translate }}

-
- {{ entry.data.note }} +
+
+ {{ entry.data.note }} +
+
+ + + + + + + +
diff --git a/packages/admin-ui/src/lib/customer/src/components/customer-history/customer-history.component.ts b/packages/admin-ui/src/lib/customer/src/components/customer-history/customer-history.component.ts index 9859e3225e..4a554aa060 100644 --- a/packages/admin-ui/src/lib/customer/src/components/customer-history/customer-history.component.ts +++ b/packages/admin-ui/src/lib/customer/src/components/customer-history/customer-history.component.ts @@ -1,5 +1,11 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; -import { Customer, GetCustomerHistory, HistoryEntryType, TimelineDisplayType } from '@vendure/admin-ui/core'; +import { + Customer, + GetCustomerHistory, + HistoryEntry, + HistoryEntryType, + TimelineDisplayType, +} from '@vendure/admin-ui/core'; @Component({ selector: 'vdr-customer-history', @@ -11,6 +17,8 @@ export class CustomerHistoryComponent { @Input() customer: Customer.Fragment; @Input() history: GetCustomerHistory.Items[]; @Output() addNote = new EventEmitter<{ note: string }>(); + @Output() updateNote = new EventEmitter(); + @Output() deleteNote = new EventEmitter(); note = ''; readonly type = HistoryEntryType; diff --git a/packages/admin-ui/src/lib/order/src/components/order-detail/order-detail.component.html b/packages/admin-ui/src/lib/order/src/components/order-detail/order-detail.component.html index a71f20f2af..30e3fa4a44 100644 --- a/packages/admin-ui/src/lib/order/src/components/order-detail/order-detail.component.html +++ b/packages/admin-ui/src/lib/order/src/components/order-detail/order-detail.component.html @@ -218,6 +218,8 @@ [order]="order" [history]="history$ | async" (addNote)="addNote($event)" + (updateNote)="updateNote($event)" + (deleteNote)="deleteNote($event)" >
diff --git a/packages/admin-ui/src/lib/order/src/components/order-detail/order-detail.component.ts b/packages/admin-ui/src/lib/order/src/components/order-detail/order-detail.component.ts index 39e3ce9375..dec40244d2 100644 --- a/packages/admin-ui/src/lib/order/src/components/order-detail/order-detail.component.ts +++ b/packages/admin-ui/src/lib/order/src/components/order-detail/order-detail.component.ts @@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnIni import { FormGroup } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; -import { BaseDetailComponent } from '@vendure/admin-ui/core'; +import { BaseDetailComponent, HistoryEntry } from '@vendure/admin-ui/core'; import { AdjustmentType, CustomFieldConfig, @@ -16,9 +16,10 @@ import { DataService } from '@vendure/admin-ui/core'; import { ServerConfigService } from '@vendure/admin-ui/core'; import { ModalService } from '@vendure/admin-ui/core'; import { omit } from '@vendure/common/lib/omit'; -import { Observable, of, Subject } from 'rxjs'; -import { startWith, switchMap, take } from 'rxjs/operators'; +import { EMPTY, Observable, of, Subject } from 'rxjs'; +import { map, startWith, switchMap, take } from 'rxjs/operators'; +import { EditNoteDialogComponent } from '../../../../core/src/shared/components/edit-note-dialog/edit-note-dialog.component'; import { CancelOrderDialogComponent } from '../cancel-order-dialog/cancel-order-dialog.component'; import { FulfillOrderDialogComponent } from '../fulfill-order-dialog/fulfill-order-dialog.component'; import { RefundOrderDialogComponent } from '../refund-order-dialog/refund-order-dialog.component'; @@ -123,6 +124,7 @@ export class OrderDetailComponent extends BaseDetailComponent this.refetchOrder(result))) .subscribe((result) => { - this.notificationService.success(_('order.add-note-success')); + this.notificationService.success(_('common.notify-create-success'), { + entity: 'Note', + }); + }); + } + + updateNote(entry: HistoryEntry) { + this.modalService + .fromComponent(EditNoteDialogComponent, { + closable: true, + locals: { + displayPrivacyControls: true, + note: entry.data.note, + noteIsPrivate: !entry.isPublic, + }, + }) + .pipe( + switchMap((result) => { + if (result) { + return this.dataService.order.updateOrderNote({ + noteId: entry.id, + isPublic: !result.isPrivate, + note: result.note, + }); + } else { + return EMPTY; + } + }), + ) + .subscribe((result) => { + this.fetchHistory.next(); + this.notificationService.success(_('common.notify-update-success'), { + entity: 'Note', + }); + }); + } + + deleteNote(entry: HistoryEntry) { + return this.modalService + .dialog({ + title: _('common.confirm-delete-note'), + body: entry.data.note, + buttons: [ + { type: 'secondary', label: _('common.cancel') }, + { type: 'danger', label: _('common.delete'), returnValue: true }, + ], + }) + .pipe(switchMap((res) => (res ? this.dataService.order.deleteOrderNote(entry.id) : EMPTY))) + .subscribe(() => { + this.fetchHistory.next(); + this.notificationService.success(_('common.notify-delete-success'), { + entity: 'Note', + }); }); } diff --git a/packages/admin-ui/src/lib/order/src/components/order-history/order-history.component.html b/packages/admin-ui/src/lib/order/src/components/order-history/order-history.component.html index 3028bfebe2..eab44d9528 100644 --- a/packages/admin-ui/src/lib/order/src/components/order-history/order-history.component.html +++ b/packages/admin-ui/src/lib/order/src/components/order-history/order-history.component.html @@ -4,7 +4,7 @@

{{ 'order.order-history' | translate }}

@@ -94,14 +94,43 @@

{{ 'order.order-history' | translate }}

-
- {{ - 'common.public' | translate - }} - {{ - 'common.private' | translate - }} - {{ entry.data.note }} +
+
+ {{ + 'common.public' | translate + }} + {{ + 'common.private' | translate + }} + {{ entry.data.note }} +
+
+ + + + + + + +
diff --git a/packages/admin-ui/src/lib/order/src/components/order-history/order-history.component.ts b/packages/admin-ui/src/lib/order/src/components/order-history/order-history.component.ts index 052d4a9831..2a41b2fb4e 100644 --- a/packages/admin-ui/src/lib/order/src/components/order-history/order-history.component.ts +++ b/packages/admin-ui/src/lib/order/src/components/order-history/order-history.component.ts @@ -1,6 +1,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; import { GetOrderHistory, + HistoryEntry, HistoryEntryType, OrderDetail, OrderDetailFragment, @@ -17,6 +18,8 @@ export class OrderHistoryComponent { @Input() order: OrderDetailFragment; @Input() history: GetOrderHistory.Items[]; @Output() addNote = new EventEmitter<{ note: string; isPublic: boolean }>(); + @Output() updateNote = new EventEmitter(); + @Output() deleteNote = new EventEmitter(); note = ''; noteIsPrivate = true; readonly type = HistoryEntryType; diff --git a/packages/admin-ui/src/lib/static/i18n-messages/en.json b/packages/admin-ui/src/lib/static/i18n-messages/en.json index e925cbaf4c..6f9225c95f 100644 --- a/packages/admin-ui/src/lib/static/i18n-messages/en.json +++ b/packages/admin-ui/src/lib/static/i18n-messages/en.json @@ -133,12 +133,15 @@ "ID": "ID", "actions": "Actions", "add-new-variants": "Add {count, plural, one {1 variant} other {{count} variants}}", + "add-note": "Add note", "available-languages": "Available languages", "cancel": "Cancel", "cancel-navigation": "Cancel navigation", "channel": "Channel", "channels": "Channels", "code": "Code", + "confirm": "Confirm", + "confirm-delete-note": "Delete note?", "confirm-navigation": "Confirm navigation", "create": "Create", "created-at": "Created at", @@ -154,6 +157,7 @@ "done": "Done", "edit": "Edit", "edit-field": "Edit field", + "edit-note": "Edit note", "enabled": "Enabled", "extension-running-in-separate-window": "Extension is running in a separate window", "guest": "Guest", @@ -533,7 +537,6 @@ }, "order": { "add-note": "Add note", - "add-note-success": "Note successfully added", "amount": "Amount", "cancel": "Cancel", "cancel-order": "Cancel Order", @@ -702,4 +705,4 @@ "job-result": "Job result", "job-state": "Job state" } -} \ No newline at end of file +}