support appending custom templates to fields in fmEditor
authorJason Etheridge <jason@EquinoxOLI.org>
Fri, 16 Dec 2022 12:28:38 +0000 (07:28 -0500)
committerJason Etheridge <jason@EquinoxOLI.org>
Fri, 16 Dec 2022 12:28:38 +0000 (07:28 -0500)
Open-ILS/src/eg2/src/app/share/fm-editor/fm-editor.component.html
Open-ILS/src/eg2/src/app/share/fm-editor/fm-editor.component.ts

index 08d2f74..43010a4 100644 (file)
@@ -27,7 +27,8 @@
         <eg-progress-inline></eg-progress-inline> 
       </ng-container>
       <ng-container *ngIf="record">
-      <div class="form-group row" *ngFor="let field of fields">
+      <ng-container *ngFor="let field of fields">
+      <div class="form-group row">
         <div class="col-lg-3">
           <label for="{{idPrefix}}-{{field.name}}">{{field.label}}</label>
           <eg-help-popover [placement]="'right'" *ngIf="field.helpText" helpText="{{field.helpTextValue}}"></eg-help-popover>
           </a>
         </div>
       </div>
+        <ng-container *ngIf="field.append_template">
+          <ng-container
+            *ngTemplateOutlet="field.append_template; context:appendTemplateFieldContext(field)">
+          </ng-container> 
+        </ng-container> 
+      </ng-container>
       </ng-container>
     </form>
   </div>
index 504539a..9b2a992 100644 (file)
@@ -84,6 +84,9 @@ export interface FmFieldOptions {
     // from the default set of form inputs.
     customTemplate?: CustomFieldTemplate;
 
+    // Follow the normal field rendering with this custom template
+    appendTemplate?: CustomFieldTemplate;
+
     // help text to display via a popover
     helpText?: StringComponent;
 
@@ -519,6 +522,11 @@ export class FmRecordEditorComponent
             };
         }
 
+        if (fieldOptions.appendTemplate) {
+            field.append_template = fieldOptions.appendTemplate.template;
+            field.append_context = fieldOptions.appendTemplate.context;
+        }
+
         if (fieldOptions.customTemplate) {
             field.template = fieldOptions.customTemplate.template;
             field.context = fieldOptions.customTemplate.context;
@@ -591,6 +599,13 @@ export class FmRecordEditorComponent
             },  fieldDef.context || {}
         );
     }
+    appendTemplateFieldContext(fieldDef: any): CustomFieldContext {
+        return Object.assign(
+            {   record : this.record,
+                field: fieldDef // from this.fields
+            },  fieldDef.append_context || {}
+        );
+    }
 
     save() {
         const recToSave = this.idl.clone(this.record);