From 549ad9d151eedd73715422bb2c5cfd1cc08e6e3a Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Wed, 21 Aug 2024 14:25:42 -0600
Subject: [PATCH 1/5] update deps

---
 package-lock.json | 8 ++++----
 package.json      | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 2538f37e3..055c0cb66 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21,7 +21,7 @@
         "@asymmetrik/ngx-leaflet": "^18.0.1",
         "@compodoc/compodoc": "^1.1.25",
         "@ghsc/disagg-d3": "^0.9.0",
-        "@ghsc/nshmp-lib-ng": "^18.4.0",
+        "@ghsc/nshmp-lib-ng": "^18.5.0",
         "@ghsc/nshmp-template": "^18.0.3",
         "@ghsc/nshmp-utils-ts": "^3.6.3",
         "angular-plotly.js": "^5.2.2",
@@ -4281,9 +4281,9 @@
       }
     },
     "node_modules/@ghsc/nshmp-lib-ng": {
-      "version": "18.4.0",
-      "resolved": "https://code.usgs.gov/api/v4/projects/12416/packages/npm/@ghsc/nshmp-lib-ng/-/@ghsc/nshmp-lib-ng-18.4.0.tgz",
-      "integrity": "sha1-eyMUGjSiCTN9ZLN5X2qk57gNLBE=",
+      "version": "18.5.0",
+      "resolved": "https://code.usgs.gov/api/v4/projects/12416/packages/npm/@ghsc/nshmp-lib-ng/-/@ghsc/nshmp-lib-ng-18.5.0.tgz",
+      "integrity": "sha1-X6IiwuBwY91lExmbKT7O0bq0NjM=",
       "dependencies": {
         "tslib": "^2.3.0"
       },
diff --git a/package.json b/package.json
index 7d80d79d9..e83806497 100644
--- a/package.json
+++ b/package.json
@@ -45,7 +45,7 @@
     "@asymmetrik/ngx-leaflet": "^18.0.1",
     "@compodoc/compodoc": "^1.1.25",
     "@ghsc/disagg-d3": "^0.9.0",
-    "@ghsc/nshmp-lib-ng": "^18.4.0",
+    "@ghsc/nshmp-lib-ng": "^18.5.0",
     "@ghsc/nshmp-template": "^18.0.3",
     "@ghsc/nshmp-utils-ts": "^3.6.3",
     "angular-plotly.js": "^5.2.2",
-- 
GitLab


From 9cb79b59c67c959a5dd8333e0187f98b9461d144 Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Wed, 21 Aug 2024 14:26:21 -0600
Subject: [PATCH 2/5] use enum

---
 .../components/control-panel/control-panel.component.ts  | 5 +++--
 .../parameter-summary/parameter-summary.component.html   | 4 ++--
 .../parameter-summary/parameter-summary.component.ts     | 6 +++---
 .../dev/gmm/hanging-wall-effects/services/app.service.ts | 4 ++--
 .../components/control-panel/control-panel.component.ts  | 5 +++--
 .../parameter-summary/parameter-summary.component.html   | 4 ++--
 .../parameter-summary/parameter-summary.component.ts     | 6 +++---
 .../src/app/gmm/distance/services/app.service.ts         | 6 +++---
 .../components/control-panel/control-panel.component.ts  | 6 +++---
 .../parameter-summary/parameter-summary.component.html   | 2 +-
 .../parameter-summary/parameter-summary.component.ts     | 6 +++---
 .../src/app/gmm/magnitude/services/app.service.ts        | 9 +++------
 .../components/control-panel/control-panel.component.ts  | 8 +++++---
 .../parameter-summary/parameter-summary.component.html   | 4 ++--
 .../parameter-summary/parameter-summary.component.ts     | 6 +++---
 .../src/app/gmm/spectra/services/app.service.ts          | 4 ++--
 16 files changed, 43 insertions(+), 42 deletions(-)

diff --git a/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/control-panel/control-panel.component.ts b/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/control-panel/control-panel.component.ts
index d1f979313..70ff4120f 100644
--- a/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/control-panel/control-panel.component.ts
+++ b/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/control-panel/control-panel.component.ts
@@ -8,6 +8,7 @@ import {MatSelect} from '@angular/material/select';
 import {
   GmmFormControlIds,
   gmmUtils,
+  MultiSelectableParam,
   MW_COMMON_VALUES,
   NshmpLibNgGmmMenuComponent,
   NshmpLibNgGmmMultiSelectComponent,
@@ -189,11 +190,11 @@ export class ControlPanelComponent implements OnInit, OnDestroy {
     const {multiSelectableParam} = this.formState.getRawValue();
     const parameters = this.service.state().usageResponse.response.parameters;
 
-    if (multiSelectableParam === GmmFormControlIds.MW) {
+    if (multiSelectableParam === MultiSelectableParam.MW) {
       this.formState.controls.gmmSource.setValue([]);
       this.formState.controls.Mw.setValue(parameters.Mw.value as number);
       this.formState.controls.MwMulti.setValue([]);
-    } else if (multiSelectableParam === GmmFormControlIds.VS30) {
+    } else if (multiSelectableParam === MultiSelectableParam.VS30) {
       this.formState.controls.gmmSource.setValue([]);
       this.formState.controls.vs30.setValue(parameters.vs30.value as number);
       this.formState.controls.vs30Multi.setValue([]);
diff --git a/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/parameter-summary/parameter-summary.component.html b/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/parameter-summary/parameter-summary.component.html
index 7478650f2..91953bb6c 100644
--- a/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/parameter-summary/parameter-summary.component.html
+++ b/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/parameter-summary/parameter-summary.component.html
@@ -19,7 +19,7 @@
         {{ imtIdToDisplay(form?.value?.imt) }}
       </mat-list-item>
 
-      @if (form.value.multiSelectableParam === GmmFormControlIds.MW) {
+      @if (form.value.multiSelectableParam === Params.MW) {
         <mat-list-item>
           <span class="parameter">Magnitude</span>:
         </mat-list-item>
@@ -53,7 +53,7 @@
 
   <div class="grid-col-12 tablet-lg:grid-col-3">
     <mat-list class="parameter-list">
-      @if (form.value.multiSelectableParam === GmmFormControlIds.VS30) {
+      @if (form.value.multiSelectableParam === Params.VS30) {
         <mat-list-item> <span class="parameter">Vs30</span>: </mat-list-item>
 
         @for (vs30 of form?.value?.vs30Multi; track vs30) {
diff --git a/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/parameter-summary/parameter-summary.component.ts b/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/parameter-summary/parameter-summary.component.ts
index 0ec319d28..ac81499e3 100644
--- a/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/parameter-summary/parameter-summary.component.ts
+++ b/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/parameter-summary/parameter-summary.component.ts
@@ -1,7 +1,7 @@
 import {AsyncPipe} from '@angular/common';
 import {Component} from '@angular/core';
 import {MatList, MatListItem} from '@angular/material/list';
-import {GmmFormControlIds, gmmUtils} from '@ghsc/nshmp-lib-ng/gmm';
+import {gmmUtils, MultiSelectableParam} from '@ghsc/nshmp-lib-ng/gmm';
 
 import {AppService} from '../../services/app.service';
 
@@ -16,8 +16,8 @@ import {AppService} from '../../services/app.service';
   templateUrl: './parameter-summary.component.html',
 })
 export class ParameterSummaryComponent {
-  /** Control panel ids */
-  GmmFormControlIds = GmmFormControlIds;
+  /** Paramaters */
+  Params = MultiSelectableParam;
 
   /** Function to convert IMT id to display */
   imtIdToDisplay = gmmUtils.imtIdToDisplay;
diff --git a/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/services/app.service.ts b/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/services/app.service.ts
index 6759dcf16..836581e75 100644
--- a/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/services/app.service.ts
@@ -1,6 +1,6 @@
 import {Injectable, signal} from '@angular/core';
 import {AbstractControl, FormBuilder, Validators} from '@angular/forms';
-import {GmmFormControlIds, gmmUtils} from '@ghsc/nshmp-lib-ng/gmm';
+import {gmmUtils, MultiSelectableParam} from '@ghsc/nshmp-lib-ng/gmm';
 import {
   FormGroupControls,
   NshmpService,
@@ -134,7 +134,7 @@ export class AppService
       gmmGroupType: GmmGroupType.ACTIVE_CRUST,
       gmmSource: [],
       imt: gmmUtils.imtPlaceHolder().value,
-      multiSelectableParam: GmmFormControlIds.GMM,
+      multiSelectableParam: MultiSelectableParam.GMM,
       Mw: null,
       MwMulti: [],
       rMax: 100,
diff --git a/projects/nshmp-apps/src/app/gmm/distance/components/control-panel/control-panel.component.ts b/projects/nshmp-apps/src/app/gmm/distance/components/control-panel/control-panel.component.ts
index a1ae1c690..b5e90b932 100644
--- a/projects/nshmp-apps/src/app/gmm/distance/components/control-panel/control-panel.component.ts
+++ b/projects/nshmp-apps/src/app/gmm/distance/components/control-panel/control-panel.component.ts
@@ -8,6 +8,7 @@ import {MatSelect} from '@angular/material/select';
 import {
   GmmFormControlIds,
   gmmUtils,
+  MultiSelectableParam,
   MW_COMMON_VALUES,
   NshmpLibNgGmmMenuComponent,
   NshmpLibNgGmmMultiSelectComponent,
@@ -177,11 +178,11 @@ export class ControlPanelComponent implements OnInit, OnDestroy {
     const {multiSelectableParam} = this.form.getRawValue();
     const parameters = this.service.state().usageResponse.response.parameters;
 
-    if (multiSelectableParam === GmmFormControlIds.MW) {
+    if (multiSelectableParam === MultiSelectableParam.MW) {
       this.controls.gmmSource.setValue([]);
       this.controls.Mw.setValue(parameters.Mw.value as number);
       this.controls.MwMulti.setValue([]);
-    } else if (multiSelectableParam === GmmFormControlIds.VS30) {
+    } else if (multiSelectableParam === MultiSelectableParam.VS30) {
       this.controls.gmmSource.setValue([]);
       this.controls.vs30.setValue(parameters.vs30.value as number);
       this.controls.vs30Multi.setValue([]);
diff --git a/projects/nshmp-apps/src/app/gmm/distance/components/parameter-summary/parameter-summary.component.html b/projects/nshmp-apps/src/app/gmm/distance/components/parameter-summary/parameter-summary.component.html
index d61b7f901..be93c30f8 100644
--- a/projects/nshmp-apps/src/app/gmm/distance/components/parameter-summary/parameter-summary.component.html
+++ b/projects/nshmp-apps/src/app/gmm/distance/components/parameter-summary/parameter-summary.component.html
@@ -20,7 +20,7 @@
         {{ imtIdToDisplay(form?.value?.imt) }}
       </mat-list-item>
 
-      @if (form.value.multiSelectableParam === GmmFormControlIds.MW) {
+      @if (form.value.multiSelectableParam === Params.MW) {
         <mat-list-item>
           <span class="parameter">Magnitude</span>:
         </mat-list-item>
@@ -53,7 +53,7 @@
 
   <div class="grid-col-12 tablet-lg:grid-col-3">
     <mat-list class="parameter-list">
-      @if (form.value.multiSelectableParam === GmmFormControlIds.VS30) {
+      @if (form.value.multiSelectableParam === Params.VS30) {
         <mat-list-item> <span class="parameter">Vs30</span>: </mat-list-item>
         @for (vs30 of form?.value?.vs30Multi; track vs30) {
           <mat-list-item class="indent-list">
diff --git a/projects/nshmp-apps/src/app/gmm/distance/components/parameter-summary/parameter-summary.component.ts b/projects/nshmp-apps/src/app/gmm/distance/components/parameter-summary/parameter-summary.component.ts
index df6fc16b8..ba1827927 100644
--- a/projects/nshmp-apps/src/app/gmm/distance/components/parameter-summary/parameter-summary.component.ts
+++ b/projects/nshmp-apps/src/app/gmm/distance/components/parameter-summary/parameter-summary.component.ts
@@ -1,7 +1,7 @@
 import {AsyncPipe} from '@angular/common';
 import {Component, computed} from '@angular/core';
 import {MatList, MatListItem} from '@angular/material/list';
-import {GmmFormControlIds, gmmUtils} from '@ghsc/nshmp-lib-ng/gmm';
+import {gmmUtils, MultiSelectableParam} from '@ghsc/nshmp-lib-ng/gmm';
 
 import {AppService} from '../../services/app.service';
 
@@ -16,8 +16,8 @@ import {AppService} from '../../services/app.service';
   templateUrl: './parameter-summary.component.html',
 })
 export class ParameterSummaryComponent {
-  /** Control panel ids */
-  GmmFormControlIds = GmmFormControlIds;
+  /** Parameters */
+  Params = MultiSelectableParam;
 
   /** Function to convert IMT id to display */
   imtIdToDisplay = gmmUtils.imtIdToDisplay;
diff --git a/projects/nshmp-apps/src/app/gmm/distance/services/app.service.ts b/projects/nshmp-apps/src/app/gmm/distance/services/app.service.ts
index 1b93e109e..e4de80cbf 100644
--- a/projects/nshmp-apps/src/app/gmm/distance/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/gmm/distance/services/app.service.ts
@@ -1,6 +1,6 @@
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {AbstractControl, FormBuilder, Validators} from '@angular/forms';
-import {gmmUtils} from '@ghsc/nshmp-lib-ng/gmm';
+import {gmmUtils, MultiSelectableParam} from '@ghsc/nshmp-lib-ng/gmm';
 import {
   FormGroupControls,
   NshmpService,
@@ -22,7 +22,7 @@ import {AppServiceModel} from 'projects/nshmp-apps/src/shared/models/app-service
 import {SharedService} from 'projects/nshmp-apps/src/shared/services/shared.service';
 import {catchError} from 'rxjs';
 
-import {FormControlIds, FormControls} from '../models/form-controls.model';
+import {FormControls} from '../models/form-controls.model';
 import {AppState} from '../models/state.model';
 
 /**
@@ -152,7 +152,7 @@ export class AppService
       gmmGroupType: GmmGroupType.ACTIVE_CRUST,
       gmmSource: [],
       imt: 'default',
-      multiSelectableParam: FormControlIds.GMM,
+      multiSelectableParam: MultiSelectableParam.GMM,
       Mw: null,
       MwMulti: [],
       rMax: 300,
diff --git a/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.ts b/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.ts
index fcf830fe4..0adf4ddf4 100644
--- a/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.ts
+++ b/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.ts
@@ -5,8 +5,8 @@ import {MatOption} from '@angular/material/core';
 import {MatFormField, MatLabel} from '@angular/material/form-field';
 import {MatSelect} from '@angular/material/select';
 import {
-  GmmFormControlIds,
   gmmUtils,
+  MultiSelectableParam,
   NshmpLibNgGmmMenuComponent,
   NshmpLibNgGmmPlotOptionsControlPanelComponent,
 } from '@ghsc/nshmp-lib-ng/gmm';
@@ -145,10 +145,10 @@ export class ControlPanelComponent implements OnInit, OnDestroy {
     const {multiSelectableParam} = this.form.getRawValue();
     const parameters = this.service.state().usageResponse.response.parameters;
 
-    if (multiSelectableParam === GmmFormControlIds.MW) {
+    if (multiSelectableParam === MultiSelectableParam.MW) {
       this.controls.Mw.setValue(parameters.Mw.value as number);
       this.controls.MwMulti.setValue([]);
-    } else if (multiSelectableParam === GmmFormControlIds.VS30) {
+    } else if (multiSelectableParam === MultiSelectableParam.VS30) {
       this.controls.vs30.setValue(parameters.vs30.value as number);
       this.controls.vs30Multi.setValue([]);
     }
diff --git a/projects/nshmp-apps/src/app/gmm/magnitude/components/parameter-summary/parameter-summary.component.html b/projects/nshmp-apps/src/app/gmm/magnitude/components/parameter-summary/parameter-summary.component.html
index 06e1589fb..d4055d1a0 100644
--- a/projects/nshmp-apps/src/app/gmm/magnitude/components/parameter-summary/parameter-summary.component.html
+++ b/projects/nshmp-apps/src/app/gmm/magnitude/components/parameter-summary/parameter-summary.component.html
@@ -51,7 +51,7 @@
         <span class="parameter"> Distance</span>: {{ form?.value?.distance }} km
       </mat-list-item>
 
-      @if (form.value.multiSelectableParam === GmmFormControlIds.VS30) {
+      @if (form.value.multiSelectableParam === Params.VS30) {
         <mat-list-item> <span class="parameter">Vs30</span>: </mat-list-item>
         @for (vs30 of form?.value?.vs30Multi; track vs30) {
           <mat-list-item class="indent-list">
diff --git a/projects/nshmp-apps/src/app/gmm/magnitude/components/parameter-summary/parameter-summary.component.ts b/projects/nshmp-apps/src/app/gmm/magnitude/components/parameter-summary/parameter-summary.component.ts
index 97c4c234e..7db551ad9 100644
--- a/projects/nshmp-apps/src/app/gmm/magnitude/components/parameter-summary/parameter-summary.component.ts
+++ b/projects/nshmp-apps/src/app/gmm/magnitude/components/parameter-summary/parameter-summary.component.ts
@@ -1,7 +1,7 @@
 import {AsyncPipe} from '@angular/common';
 import {Component, computed} from '@angular/core';
 import {MatList, MatListItem} from '@angular/material/list';
-import {GmmFormControlIds, gmmUtils} from '@ghsc/nshmp-lib-ng/gmm';
+import {gmmUtils, MultiSelectableParam} from '@ghsc/nshmp-lib-ng/gmm';
 
 import {AppService} from '../../services/app.service';
 
@@ -16,8 +16,8 @@ import {AppService} from '../../services/app.service';
   templateUrl: './parameter-summary.component.html',
 })
 export class ParameterSummaryComponent {
-  /** Control panel ids */
-  GmmFormControlIds = GmmFormControlIds;
+  /** Parameters */
+  Params = MultiSelectableParam;
 
   /** Function to convert IMT id to display */
   imtIdToDisplay = gmmUtils.imtIdToDisplay;
diff --git a/projects/nshmp-apps/src/app/gmm/magnitude/services/app.service.ts b/projects/nshmp-apps/src/app/gmm/magnitude/services/app.service.ts
index 0c92e6215..13e278af5 100644
--- a/projects/nshmp-apps/src/app/gmm/magnitude/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/gmm/magnitude/services/app.service.ts
@@ -1,6 +1,6 @@
 import {computed, Injectable, Signal, signal} from '@angular/core';
 import {AbstractControl, FormBuilder, Validators} from '@angular/forms';
-import {gmmUtils} from '@ghsc/nshmp-lib-ng/gmm';
+import {gmmUtils, MultiSelectableParam} from '@ghsc/nshmp-lib-ng/gmm';
 import {
   FormGroupControls,
   NshmpService,
@@ -26,10 +26,7 @@ import {AppServiceModel} from 'projects/nshmp-apps/src/shared/models/app-service
 import {SharedService} from 'projects/nshmp-apps/src/shared/services/shared.service';
 import {catchError} from 'rxjs';
 
-import {
-  FormControlIds,
-  GmmMagnitudeFormControls,
-} from '../models/gmm-magnitude-form-controls.model';
+import {GmmMagnitudeFormControls} from '../models/gmm-magnitude-form-controls.model';
 import {AppState} from '../models/state.model';
 
 /**
@@ -174,7 +171,7 @@ export class AppService
       imt: 'default',
       mMax: null,
       mMin: null,
-      multiSelectableParam: FormControlIds.GMM,
+      multiSelectableParam: MultiSelectableParam.GMM,
       Mw: null,
       showEpistemicUncertainty: false,
       step: null,
diff --git a/projects/nshmp-apps/src/app/gmm/spectra/components/control-panel/control-panel.component.ts b/projects/nshmp-apps/src/app/gmm/spectra/components/control-panel/control-panel.component.ts
index a43946674..d1805a4fb 100644
--- a/projects/nshmp-apps/src/app/gmm/spectra/components/control-panel/control-panel.component.ts
+++ b/projects/nshmp-apps/src/app/gmm/spectra/components/control-panel/control-panel.component.ts
@@ -5,8 +5,9 @@ import {MatOption} from '@angular/material/core';
 import {MatFormField, MatLabel} from '@angular/material/form-field';
 import {MatSelect} from '@angular/material/select';
 import {
-  GmmFormControlIds,
+  MultiSelectableParam,
   NshmpLibNgGmmMenuComponent,
+  NshmpLibNgGmmMultiParamMenuComponent,
   NshmpLibNgGmmPlotOptionsControlPanelComponent,
 } from '@ghsc/nshmp-lib-ng/gmm';
 import {
@@ -28,6 +29,7 @@ import {SourceParametersComponent} from '../source-parameters/source-parameters.
   imports: [
     NshmpLibNgGmmMenuComponent,
     NshmpLibNgGmmPlotOptionsControlPanelComponent,
+    NshmpLibNgGmmMultiParamMenuComponent,
     NshmpLibNgControlPanelButtonsComponent,
     MatFormField,
     MatLabel,
@@ -115,10 +117,10 @@ export class ControlPanelComponent implements OnInit, OnDestroy {
     const {multiSelectableParam} = this.form.getRawValue();
     const parameters = this.service.state().usageResponse.response.parameters;
 
-    if (multiSelectableParam === GmmFormControlIds.MW) {
+    if (multiSelectableParam === MultiSelectableParam.MW) {
       this.controls.Mw.setValue(parameters.Mw.value as number);
       this.controls.MwMulti.setValue([]);
-    } else if (multiSelectableParam === GmmFormControlIds.VS30) {
+    } else if (multiSelectableParam === MultiSelectableParam.VS30) {
       this.controls.vs30.setValue(parameters.vs30.value as number);
       this.controls.vs30Multi.setValue([]);
     }
diff --git a/projects/nshmp-apps/src/app/gmm/spectra/components/parameter-summary/parameter-summary.component.html b/projects/nshmp-apps/src/app/gmm/spectra/components/parameter-summary/parameter-summary.component.html
index e35d058f4..011bcd97f 100644
--- a/projects/nshmp-apps/src/app/gmm/spectra/components/parameter-summary/parameter-summary.component.html
+++ b/projects/nshmp-apps/src/app/gmm/spectra/components/parameter-summary/parameter-summary.component.html
@@ -15,7 +15,7 @@
 
   <div class="grid-col-12 tablet-lg:grid-col-3">
     <mat-list class="parameter-list">
-      @if (form.value.multiSelectableParam === GmmFormControlIds.MW) {
+      @if (form.value.multiSelectableParam === Params.MW) {
         <mat-list-item>
           <span class="parameter">Magnitude</span>:
         </mat-list-item>
@@ -92,7 +92,7 @@
         {{ form?.value?.hangingWall ? 'Hanging Wall' : 'Footwall' }}
       </mat-list-item>
 
-      @if (form.value.multiSelectableParam === GmmFormControlIds.VS30) {
+      @if (form.value.multiSelectableParam === Params.VS30) {
         <mat-list-item> <span class="parameter">Vs30</span>: </mat-list-item>
         @for (vs30 of form?.value?.vs30Multi; track vs30) {
           <mat-list-item class="indent-list">
diff --git a/projects/nshmp-apps/src/app/gmm/spectra/components/parameter-summary/parameter-summary.component.ts b/projects/nshmp-apps/src/app/gmm/spectra/components/parameter-summary/parameter-summary.component.ts
index 97c4c234e..7db551ad9 100644
--- a/projects/nshmp-apps/src/app/gmm/spectra/components/parameter-summary/parameter-summary.component.ts
+++ b/projects/nshmp-apps/src/app/gmm/spectra/components/parameter-summary/parameter-summary.component.ts
@@ -1,7 +1,7 @@
 import {AsyncPipe} from '@angular/common';
 import {Component, computed} from '@angular/core';
 import {MatList, MatListItem} from '@angular/material/list';
-import {GmmFormControlIds, gmmUtils} from '@ghsc/nshmp-lib-ng/gmm';
+import {gmmUtils, MultiSelectableParam} from '@ghsc/nshmp-lib-ng/gmm';
 
 import {AppService} from '../../services/app.service';
 
@@ -16,8 +16,8 @@ import {AppService} from '../../services/app.service';
   templateUrl: './parameter-summary.component.html',
 })
 export class ParameterSummaryComponent {
-  /** Control panel ids */
-  GmmFormControlIds = GmmFormControlIds;
+  /** Parameters */
+  Params = MultiSelectableParam;
 
   /** Function to convert IMT id to display */
   imtIdToDisplay = gmmUtils.imtIdToDisplay;
diff --git a/projects/nshmp-apps/src/app/gmm/spectra/services/app.service.ts b/projects/nshmp-apps/src/app/gmm/spectra/services/app.service.ts
index 89b4671f9..380aafde4 100644
--- a/projects/nshmp-apps/src/app/gmm/spectra/services/app.service.ts
+++ b/projects/nshmp-apps/src/app/gmm/spectra/services/app.service.ts
@@ -5,7 +5,7 @@ import {
   FormControl,
   Validators,
 } from '@angular/forms';
-import {GmmFormControlIds, gmmUtils} from '@ghsc/nshmp-lib-ng/gmm';
+import {gmmUtils, MultiSelectableParam} from '@ghsc/nshmp-lib-ng/gmm';
 import {
   FormGroupControls,
   NshmpService,
@@ -260,7 +260,7 @@ export class AppService
       gmmGroupType: GmmGroupType.ACTIVE_CRUST,
       gmmSource: [],
       hangingWall: true,
-      multiSelectableParam: GmmFormControlIds.GMM,
+      multiSelectableParam: MultiSelectableParam.GMM,
       Mw: null,
       MwMulti: [],
       rake: 0,
-- 
GitLab


From d96c1e13077c350bbb521500d9ae24d5894a1882 Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Wed, 21 Aug 2024 14:59:04 -0600
Subject: [PATCH 3/5] add new component

---
 .../control-panel/control-panel.component.html        | 11 +++--------
 .../control-panel/control-panel.component.ts          |  2 ++
 .../control-panel/control-panel.component.html        | 11 +++--------
 .../control-panel/control-panel.component.ts          |  2 ++
 .../control-panel/control-panel.component.html        | 10 +++-------
 .../control-panel/control-panel.component.ts          |  2 ++
 .../control-panel/control-panel.component.html        | 11 +++--------
 7 files changed, 18 insertions(+), 31 deletions(-)

diff --git a/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/control-panel/control-panel.component.html b/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/control-panel/control-panel.component.html
index 8c44aad30..ab41fefbf 100644
--- a/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/control-panel/control-panel.component.html
+++ b/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/control-panel/control-panel.component.html
@@ -4,14 +4,9 @@
   [formGroup]="formState"
   (submit)="onSubmit()"
 >
-  <mat-form-field class="grid-col-12 multi-select-parameter-menu padding-top-1">
-    <mat-label>Multi-Selectable Parameter</mat-label>
-    <mat-select [formControl]="formState.controls.multiSelectableParam">
-      <mat-option value="gmm">Ground Motion Models</mat-option>
-      <mat-option value="Mw">M<sub>W</sub></mat-option>
-      <mat-option value="vs30">V<sub>S30</sub></mat-option>
-    </mat-select>
-  </mat-form-field>
+  <nshmp-lib-ng-gmm-multi-param-menu
+    [multiParamControl]="controls.multiSelectableParam"
+  />
 
   <!-- GMM menu -->
   @if (parameters()) {
diff --git a/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/control-panel/control-panel.component.ts b/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/control-panel/control-panel.component.ts
index 70ff4120f..56e685214 100644
--- a/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/control-panel/control-panel.component.ts
+++ b/projects/nshmp-apps/src/app/dev/gmm/hanging-wall-effects/components/control-panel/control-panel.component.ts
@@ -11,6 +11,7 @@ import {
   MultiSelectableParam,
   MW_COMMON_VALUES,
   NshmpLibNgGmmMenuComponent,
+  NshmpLibNgGmmMultiParamMenuComponent,
   NshmpLibNgGmmMultiSelectComponent,
   NshmpLibNgGmmPlotOptionsControlPanelComponent,
   VS30_COMMON_VALUES,
@@ -40,6 +41,7 @@ import {AppService} from '../../services/app.service';
     NshmpLibNgGmmMultiSelectComponent,
     NshmpLibNgGmmPlotOptionsControlPanelComponent,
     NshmpLibNgControlPanelButtonsComponent,
+    NshmpLibNgGmmMultiParamMenuComponent,
     ReactiveFormsModule,
   ],
   selector: 'app-control-panel',
diff --git a/projects/nshmp-apps/src/app/gmm/distance/components/control-panel/control-panel.component.html b/projects/nshmp-apps/src/app/gmm/distance/components/control-panel/control-panel.component.html
index 70060005d..9ea5daa83 100644
--- a/projects/nshmp-apps/src/app/gmm/distance/components/control-panel/control-panel.component.html
+++ b/projects/nshmp-apps/src/app/gmm/distance/components/control-panel/control-panel.component.html
@@ -4,14 +4,9 @@
   [formGroup]="form"
   (submit)="onSubmit()"
 >
-  <mat-form-field class="grid-col-12 multi-select-parameter-menu padding-top-1">
-    <mat-label>Multi-Selectable Parameter</mat-label>
-    <mat-select [formControl]="controls.multiSelectableParam">
-      <mat-option value="gmm">Ground Motion Models</mat-option>
-      <mat-option value="Mw">M<sub>W</sub></mat-option>
-      <mat-option value="vs30">V<sub>S30</sub></mat-option>
-    </mat-select>
-  </mat-form-field>
+  <nshmp-lib-ng-gmm-multi-param-menu
+    [multiParamControl]="controls.multiSelectableParam"
+  />
 
   <!-- GMM menu -->
   @if (parameters()) {
diff --git a/projects/nshmp-apps/src/app/gmm/distance/components/control-panel/control-panel.component.ts b/projects/nshmp-apps/src/app/gmm/distance/components/control-panel/control-panel.component.ts
index b5e90b932..915185830 100644
--- a/projects/nshmp-apps/src/app/gmm/distance/components/control-panel/control-panel.component.ts
+++ b/projects/nshmp-apps/src/app/gmm/distance/components/control-panel/control-panel.component.ts
@@ -11,6 +11,7 @@ import {
   MultiSelectableParam,
   MW_COMMON_VALUES,
   NshmpLibNgGmmMenuComponent,
+  NshmpLibNgGmmMultiParamMenuComponent,
   NshmpLibNgGmmMultiSelectComponent,
   NshmpLibNgGmmPlotOptionsControlPanelComponent,
   VS30_COMMON_VALUES,
@@ -40,6 +41,7 @@ import {AppService} from '../../services/app.service';
     NshmpLibNgGmmMultiSelectComponent,
     NshmpLibNgGmmPlotOptionsControlPanelComponent,
     NshmpLibNgControlPanelButtonsComponent,
+    NshmpLibNgGmmMultiParamMenuComponent,
     ReactiveFormsModule,
   ],
   selector: 'app-control-panel',
diff --git a/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.html b/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.html
index 9a48777ad..7e59e0582 100644
--- a/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.html
+++ b/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.html
@@ -5,13 +5,9 @@
   (submit)="onSubmit()"
   novalidate
 >
-  <mat-form-field class="grid-col-12 multi-select-parameter-menu padding-top-1">
-    <mat-label>Multi-Selectable Parameter</mat-label>
-    <mat-select [formControl]="controls.multiSelectableParam">
-      <mat-option value="gmm">Ground Motion Models</mat-option>
-      <mat-option value="vs30">V30</mat-option>
-    </mat-select>
-  </mat-form-field>
+  <nshmp-lib-ng-gmm-multi-param-menu
+    [multiParamControl]="controls.multiSelectableParam"
+  />
 
   <!-- GMM menu -->
   @if (parameters()) {
diff --git a/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.ts b/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.ts
index 0adf4ddf4..f4acc9baa 100644
--- a/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.ts
+++ b/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.ts
@@ -8,6 +8,7 @@ import {
   gmmUtils,
   MultiSelectableParam,
   NshmpLibNgGmmMenuComponent,
+  NshmpLibNgGmmMultiParamMenuComponent,
   NshmpLibNgGmmPlotOptionsControlPanelComponent,
 } from '@ghsc/nshmp-lib-ng/gmm';
 import {
@@ -30,6 +31,7 @@ import {SourceParametersComponent} from '../source-parameters/source-parameters.
     NshmpLibNgGmmMenuComponent,
     NshmpLibNgGmmPlotOptionsControlPanelComponent,
     NshmpLibNgControlPanelButtonsComponent,
+    NshmpLibNgGmmMultiParamMenuComponent,
     MatFormField,
     MatLabel,
     MatSelect,
diff --git a/projects/nshmp-apps/src/app/gmm/spectra/components/control-panel/control-panel.component.html b/projects/nshmp-apps/src/app/gmm/spectra/components/control-panel/control-panel.component.html
index 16ac7dc53..e48df9933 100644
--- a/projects/nshmp-apps/src/app/gmm/spectra/components/control-panel/control-panel.component.html
+++ b/projects/nshmp-apps/src/app/gmm/spectra/components/control-panel/control-panel.component.html
@@ -5,14 +5,9 @@
   (submit)="onSubmit()"
   novalidate
 >
-  <mat-form-field class="grid-col-12 multi-select-parameter-menu padding-top-1">
-    <mat-label>Multi-Selectable Parameter</mat-label>
-    <mat-select [formControl]="controls.multiSelectableParam">
-      <mat-option value="gmm">Ground Motion Model</mat-option>
-      <mat-option value="Mw">Magnitude</mat-option>
-      <mat-option value="vs30">Site Class</mat-option>
-    </mat-select>
-  </mat-form-field>
+  <nshmp-lib-ng-gmm-multi-param-menu
+    [multiParamControl]="controls.multiSelectableParam"
+  />
 
   <!-- GMM menu -->
   @if (parameters()) {
-- 
GitLab


From 2213ffb9e7c3dadace979b2c47e13895247dbda7 Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Wed, 21 Aug 2024 15:04:56 -0600
Subject: [PATCH 4/5] update dep

---
 package-lock.json | 8 ++++----
 package.json      | 2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 055c0cb66..e7591b1bf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -21,7 +21,7 @@
         "@asymmetrik/ngx-leaflet": "^18.0.1",
         "@compodoc/compodoc": "^1.1.25",
         "@ghsc/disagg-d3": "^0.9.0",
-        "@ghsc/nshmp-lib-ng": "^18.5.0",
+        "@ghsc/nshmp-lib-ng": "^18.5.1",
         "@ghsc/nshmp-template": "^18.0.3",
         "@ghsc/nshmp-utils-ts": "^3.6.3",
         "angular-plotly.js": "^5.2.2",
@@ -4281,9 +4281,9 @@
       }
     },
     "node_modules/@ghsc/nshmp-lib-ng": {
-      "version": "18.5.0",
-      "resolved": "https://code.usgs.gov/api/v4/projects/12416/packages/npm/@ghsc/nshmp-lib-ng/-/@ghsc/nshmp-lib-ng-18.5.0.tgz",
-      "integrity": "sha1-X6IiwuBwY91lExmbKT7O0bq0NjM=",
+      "version": "18.5.1",
+      "resolved": "https://code.usgs.gov/api/v4/projects/12416/packages/npm/@ghsc/nshmp-lib-ng/-/@ghsc/nshmp-lib-ng-18.5.1.tgz",
+      "integrity": "sha1-/MBJxJWn8foExhQSMbvgdRMl/ew=",
       "dependencies": {
         "tslib": "^2.3.0"
       },
diff --git a/package.json b/package.json
index e83806497..01433ce56 100644
--- a/package.json
+++ b/package.json
@@ -45,7 +45,7 @@
     "@asymmetrik/ngx-leaflet": "^18.0.1",
     "@compodoc/compodoc": "^1.1.25",
     "@ghsc/disagg-d3": "^0.9.0",
-    "@ghsc/nshmp-lib-ng": "^18.5.0",
+    "@ghsc/nshmp-lib-ng": "^18.5.1",
     "@ghsc/nshmp-template": "^18.0.3",
     "@ghsc/nshmp-utils-ts": "^3.6.3",
     "angular-plotly.js": "^5.2.2",
-- 
GitLab


From 3fcb5767df44b043b4d0fe2852fe9c2d42158f42 Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Wed, 21 Aug 2024 15:05:04 -0600
Subject: [PATCH 5/5] hide magnitude

---
 .../components/control-panel/control-panel.component.html        | 1 +
 1 file changed, 1 insertion(+)

diff --git a/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.html b/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.html
index 7e59e0582..55762fedf 100644
--- a/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.html
+++ b/projects/nshmp-apps/src/app/gmm/magnitude/components/control-panel/control-panel.component.html
@@ -7,6 +7,7 @@
 >
   <nshmp-lib-ng-gmm-multi-param-menu
     [multiParamControl]="controls.multiSelectableParam"
+    [showMw]="false"
   />
 
   <!-- GMM menu -->
-- 
GitLab