From 3dd9fa8a642c9b42fcdeeba40dfd50fdc4b33f4c Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Fri, 22 Nov 2019 15:24:59 -0500 Subject: [PATCH] LPXXX editor continued Signed-off-by: Bill Erickson --- .../src/eg2/src/app/share/common-widgets.module.ts | 5 +++++ .../context-menu}/context-menu.component.css | 0 .../context-menu}/context-menu.component.html | 0 .../context-menu}/context-menu.component.ts | 24 ++++++++++++++-------- .../share/marc-edit/fixed-field.component.html | 5 +---- .../staff/share/marc-edit/fixed-field.component.ts | 8 +++----- .../app/staff/share/marc-edit/marc-edit.module.ts | 11 ++++------ 7 files changed, 29 insertions(+), 24 deletions(-) rename Open-ILS/src/eg2/src/app/{staff/share/marc-edit => share/context-menu}/context-menu.component.css (100%) rename Open-ILS/src/eg2/src/app/{staff/share/marc-edit => share/context-menu}/context-menu.component.html (100%) rename Open-ILS/src/eg2/src/app/{staff/share/marc-edit => share/context-menu}/context-menu.component.ts (78%) diff --git a/Open-ILS/src/eg2/src/app/share/common-widgets.module.ts b/Open-ILS/src/eg2/src/app/share/common-widgets.module.ts index 01b16bd4da..8ba4750ee1 100644 --- a/Open-ILS/src/eg2/src/app/share/common-widgets.module.ts +++ b/Open-ILS/src/eg2/src/app/share/common-widgets.module.ts @@ -14,6 +14,7 @@ import {DateSelectComponent} from '@eg/share/date-select/date-select.component'; import {OrgSelectComponent} from '@eg/share/org-select/org-select.component'; import {DateRangeSelectComponent} from '@eg/share/daterange-select/daterange-select.component'; import {DateTimeSelectComponent} from '@eg/share/datetime-select/datetime-select.component'; +import {ContextMenuDirective, ContextMenuComponent} from '@eg/share/context-menu/context-menu.component'; @NgModule({ @@ -24,6 +25,8 @@ import {DateTimeSelectComponent} from '@eg/share/datetime-select/datetime-select OrgSelectComponent, DateRangeSelectComponent, DateTimeSelectComponent, + ContextMenuDirective, + ContextMenuComponent ], imports: [ CommonModule, @@ -43,6 +46,8 @@ import {DateTimeSelectComponent} from '@eg/share/datetime-select/datetime-select OrgSelectComponent, DateRangeSelectComponent, DateTimeSelectComponent, + ContextMenuComponent, + ContextMenuDirective ], }) diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/context-menu.component.css b/Open-ILS/src/eg2/src/app/share/context-menu/context-menu.component.css similarity index 100% rename from Open-ILS/src/eg2/src/app/staff/share/marc-edit/context-menu.component.css rename to Open-ILS/src/eg2/src/app/share/context-menu/context-menu.component.css diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/context-menu.component.html b/Open-ILS/src/eg2/src/app/share/context-menu/context-menu.component.html similarity index 100% rename from Open-ILS/src/eg2/src/app/staff/share/marc-edit/context-menu.component.html rename to Open-ILS/src/eg2/src/app/share/context-menu/context-menu.component.html diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/context-menu.component.ts b/Open-ILS/src/eg2/src/app/share/context-menu/context-menu.component.ts similarity index 78% rename from Open-ILS/src/eg2/src/app/staff/share/marc-edit/context-menu.component.ts rename to Open-ILS/src/eg2/src/app/share/context-menu/context-menu.component.ts index 43e8529114..91938e677c 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/context-menu.component.ts +++ b/Open-ILS/src/eg2/src/app/share/context-menu/context-menu.component.ts @@ -3,14 +3,16 @@ import {Component, Input, Output, OnInit, EventEmitter, Directive, import {NgbPopover} from '@ng-bootstrap/ng-bootstrap'; /** - * Right-click context menu component. + * Context menu component. * - * No state is maintained (i.e. no current value), events are + * No state is maintained (i.e. there is no current value), events are * simply emitted as entries are chosen. * - * - * + * + * */ export interface ContextMenuEntry { @@ -50,10 +52,12 @@ export class ContextMenuComponent implements OnInit { selector: '[egContextMenu]', exportAs: 'egContextMenu' }) -export class ContextMenuDirective extends NgbPopover implements OnInit { +export class ContextMenuDirective extends NgbPopover { menuComp: ContextMenuComponent; + triggers = 'contextmenu'; + @Input() set egContextMenu(menuComp: ContextMenuComponent) { this.menuComp = menuComp; } @@ -63,15 +67,19 @@ export class ContextMenuDirective extends NgbPopover implements OnInit { open() { + // Note the popover will automatically close in most cases, + // but context menus typically preventDefault() from firing, + // which prevents right-click from closing existing menus. + if (ContextMenuDirective.activeMenu) { + ContextMenuDirective.activeMenu.close(); + } + if (!this.menuComp.menuEntries || this.menuComp.menuEntries.length === 0) { return; } this.ngbPopover = this.menuComp.menuTemplate; - if (ContextMenuDirective.activeMenu) { - ContextMenuDirective.activeMenu.close(); - } ContextMenuDirective.activeMenu = this; super.open(); } diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.html b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.html index db77bff62c..3d822f9eaf 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.html +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.html @@ -3,7 +3,7 @@ + (entrySelected)="valueChange($event.value)">
@@ -19,10 +19,7 @@ [(ngModel)]="fieldValue" [attr.maxlength]="fieldLength" [attr.size]="fieldLength" [egContextMenu]="contextMenu" - #m="egContextMenu" triggers="manual" - (contextmenu)="$event.preventDefault(); m.open()" />
- diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.ts b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.ts index 9ede60e0c3..3d71ddf891 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.ts +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.ts @@ -83,12 +83,10 @@ export class FixedFieldComponent implements OnInit { }); } - valueChange(newVal?: string) { - if (newVal !== undefined) { - // needed for context menu - this.fieldValue = newVal; - } + valueChange(newVal: string) { + this.fieldValue = newVal; this.context.record.setFixedField(this.fieldCode, this.fieldValue); } } + diff --git a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/marc-edit.module.ts b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/marc-edit.module.ts index 6825a48056..c7bbaba481 100644 --- a/Open-ILS/src/eg2/src/app/staff/share/marc-edit/marc-edit.module.ts +++ b/Open-ILS/src/eg2/src/app/staff/share/marc-edit/marc-edit.module.ts @@ -1,5 +1,6 @@ import {NgModule} from '@angular/core'; import {StaffCommonModule} from '@eg/staff/common.module'; +import {CommonWidgetsModule} from '@eg/share/common-widgets.module'; import {MarcEditorComponent} from './editor.component'; import {MarcRichEditorComponent} from './rich-editor.component'; import {MarcFlatEditorComponent} from './flat-editor.component'; @@ -8,9 +9,6 @@ import {FixedFieldComponent} from './fixed-field.component'; import {TagTableService} from './tagtable.service'; import {EditableContentComponent} from './editable-content.component'; -// TODO: consider moving to share -import {ContextMenuDirective, ContextMenuComponent} from './context-menu.component'; - @NgModule({ declarations: [ MarcEditorComponent, @@ -18,12 +16,11 @@ import {ContextMenuDirective, ContextMenuComponent} from './context-menu.compone MarcFlatEditorComponent, FixedFieldsEditorComponent, FixedFieldComponent, - EditableContentComponent, - ContextMenuDirective, - ContextMenuComponent + EditableContentComponent ], imports: [ - StaffCommonModule + StaffCommonModule, + CommonWidgetsModule ], exports: [ MarcEditorComponent -- 2.11.0