LPXXX editor continued
authorBill Erickson <berickxx@gmail.com>
Fri, 22 Nov 2019 19:38:51 +0000 (14:38 -0500)
committerBill Erickson <berickxx@gmail.com>
Fri, 6 Dec 2019 15:37:03 +0000 (10:37 -0500)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/eg2/src/app/staff/share/marc-edit/context-menu.component.ts
Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.html
Open-ILS/src/eg2/src/app/staff/share/marc-edit/fixed-field.component.ts

index fc255f6..43e8529 100644 (file)
@@ -1,5 +1,5 @@
 import {Component, Input, Output, OnInit, EventEmitter, Directive, 
-    ViewChild, TemplateRef} from '@angular/core';
+    ComponentFactoryResolver, ViewChild, TemplateRef} from '@angular/core';
 import {NgbPopover} from '@ng-bootstrap/ng-bootstrap';
 
 /**
@@ -19,7 +19,7 @@ export interface ContextMenuEntry {
 }
 
 @Component({
-  selector: 'eg-context-menu-entries',
+  selector: 'eg-context-menu',
   templateUrl: './context-menu.component.html',
   styleUrls: ['context-menu.component.css']
 })
@@ -46,26 +46,34 @@ export class ContextMenuComponent implements OnInit {
     }
 }
 
-
 @Directive({
   selector: '[egContextMenu]',
   exportAs: 'egContextMenu'
 })
-export class ContextMenuDirective extends NgbPopover {
+export class ContextMenuDirective extends NgbPopover implements OnInit {
+
+    menuComp: ContextMenuComponent;
 
     @Input() set egContextMenu(menuComp: ContextMenuComponent) {
-        this.ngbPopover = menuComp.menuTemplate;
+        this.menuComp = menuComp;
     }
 
     // Only one active menu is allowed at a time.
     static activeMenu: ContextMenuDirective;
 
     open() {
-        super.open();
+
+        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();
     }
 }
 
index 287a70e..db77bff 100644 (file)
@@ -1,13 +1,10 @@
 
 <ng-container *ngIf="fieldMeta">
 
-  <ng-template #menuContent>
-    <div *ngFor="let value of fieldValues" class="menu-entry">
-      <a (click)="valueChange(value.value)">
-        <span class="font-monospace">{{value.label}}</span>
-      </a>
-    </div>
-  </ng-template>
+  <eg-context-menu #contextMenu 
+    [menuEntries]="fieldValues"
+    (entrySelected)="valueChange(value.value)">
+  </eg-context-menu>
 
   <div class="form-inline d-flex">
     <div class="flex-4">
@@ -21,9 +18,9 @@
       (change)="valueChange()"
       [(ngModel)]="fieldValue" 
       [attr.maxlength]="fieldLength" [attr.size]="fieldLength"
-      [ngbPopover]="menuContent"
-      #p="ngbPopover" triggers="manual"
-      (contextmenu)="contextMenu($event, p)"
+      [egContextMenu]="contextMenu"
+      #m="egContextMenu" triggers="manual"
+      (contextmenu)="$event.preventDefault(); m.open()"
       />
   </div>
 
index f0112ed..9ede60e 100644 (file)
@@ -2,7 +2,8 @@ import {Component, Input, Output, OnInit, EventEmitter} from '@angular/core';
 import {MarcRecord} from './marcrecord';
 import {MarcEditContext} from './editor-context';
 import {TagTableService, ValueLabelPair} from './tagtable.service';
-import {NgbPopover} from '@ng-bootstrap/ng-bootstrap';
+//import {NgbPopover} from '@ng-bootstrap/ng-bootstrap';
+//import {ContextMenuDirective} from './context-menu.component';
 
 /**
  * MARC Fixed Field Editing Component
@@ -26,7 +27,7 @@ export class FixedFieldComponent implements OnInit {
     fieldMeta: any;
     fieldLength: number = null;
     fieldValues: ValueLabelPair[] = null;
-    popOver: NgbPopover;
+    //popOver: NgbPopover;
     randId = Math.floor(Math.random() * 10000000);
 
     constructor(private tagTable: TagTableService) {}
@@ -89,18 +90,5 @@ export class FixedFieldComponent implements OnInit {
         }
         this.context.record.setFixedField(this.fieldCode, this.fieldValue);
     }
-
-    contextMenu($event, popOver: NgbPopover) {
-        $event.preventDefault();
-        this.context.closePopovers();
-
-        if (this.fieldValues) {
-            if (!this.popOver) {
-                this.popOver = popOver;
-                this.context.popOvers.push(popOver);
-            }
-            this.popOver.open();
-        }
-    }
 }