+ }
@if (project.tags) {
}
diff --git a/src/app/modules/shared/location-select-menu/location-select-menu.component.html b/src/app/modules/shared/location-select-menu/location-select-menu.component.html
new file mode 100644
index 00000000000..99bf52db579
--- /dev/null
+++ b/src/app/modules/shared/location-select-menu/location-select-menu.component.html
@@ -0,0 +1,25 @@
+
+ {{ placeholderText }}
+
+ @if (multiple) {
+
+ {{ selectField.value ? selectField.value[0] : '' }}
+ @if (selectField.value?.length > 1) {
+ (+{{ selectField.value.length - 1 }} more)
+ }
+
+ }
+ @for (label of labels; track label) {
+
+ @for (option of locationOptions[label]; track option.id) {
+ {{ option[viewValueProp] }}
+ }
+
+ }
+
+
diff --git a/src/app/modules/shared/location-select-menu/location-select-menu.component.ts b/src/app/modules/shared/location-select-menu/location-select-menu.component.ts
new file mode 100644
index 00000000000..5fc1ade8149
--- /dev/null
+++ b/src/app/modules/shared/location-select-menu/location-select-menu.component.ts
@@ -0,0 +1,35 @@
+import { Component } from '@angular/core';
+import { SelectMenuComponent } from '../select-menu/select-menu.component';
+import { FormsModule, ReactiveFormsModule } from '@angular/forms';
+import { MatSelectModule } from '@angular/material/select';
+import {
+ Location,
+ LocationOption,
+ LocationType,
+ locationTypeToLabel
+} from '../../library/Location';
+
+@Component({
+ imports: [FormsModule, MatSelectModule, ReactiveFormsModule],
+ selector: 'location-select-menu',
+ templateUrl: './location-select-menu.component.html'
+})
+export class LocationSelectMenuComponent extends SelectMenuComponent {
+ protected labels: LocationType[];
+ protected locationOptions = { level3: [], level2: [], level1: [] };
+ protected locationTypeToLabel = locationTypeToLabel;
+
+ ngOnInit(): void {
+ super.ngOnInit();
+ this.options
+ .flatMap((option: Location) => option.getLocationOptions())
+ .forEach((option: LocationOption) => {
+ if (!this.locationOptions[option.type].some((opt) => opt.name === option.name)) {
+ this.locationOptions[option.type].push(option);
+ }
+ });
+ this.labels = Object.keys(this.locationOptions).filter(
+ (key: LocationType) => this.locationOptions[key].length > 0
+ ) as LocationType[];
+ }
+}
diff --git a/src/messages.xlf b/src/messages.xlf
index ec439f0e92c..167134f8dff 100644
--- a/src/messages.xlf
+++ b/src/messages.xlf
@@ -283,7 +283,7 @@
src/app/modules/library/library-project-details/library-project-details.component.html
- 208,212
+ 218,222src/app/modules/library/public-unit-type-selector/community-library-details.html
@@ -5753,6 +5753,43 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.27,30
+
+ Locale
+
+ src/app/modules/library/Location.ts
+ 4
+
+
+
+ State
+
+ src/app/modules/library/Location.ts
+ 5
+
+
+ src/app/register/register-teacher-form/register-teacher-form.component.html
+ 69,70
+
+
+ src/app/teacher/account/edit-profile/edit-profile.component.html
+ 63,64
+
+
+
+ Country
+
+ src/app/modules/library/Location.ts
+ 6
+
+
+ src/app/register/register-teacher-form/register-teacher-form.component.html
+ 78,79
+
+
+ src/app/teacher/account/edit-profile/edit-profile.component.html
+ 72,73
+
+ Copy Unit
@@ -5868,25 +5905,32 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.104,106
+
+ Locations
+
+ src/app/modules/library/library-filters/library-filters.component.html
+ 138,140
+
+ WISE Platformsrc/app/modules/library/library-filters/library-filters.component.ts
- 48
+ 52Other Platformsrc/app/modules/library/library-filters/library-filters.component.ts
- 49
+ 53NGSSsrc/app/modules/library/library-filters/library-filters.component.ts
- 114
+ 119src/app/modules/library/library-project-details/library-project-details.component.ts
@@ -5897,7 +5941,7 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.Common Core
src/app/modules/library/library-filters/library-filters.component.ts
- 115
+ 120src/app/modules/library/library-project-details/library-project-details.component.ts
@@ -5908,28 +5952,28 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.Learning For Justice
src/app/modules/library/library-filters/library-filters.component.ts
- 116
+ 121src/app/modules/library/library-project-details/library-project-details.component.ts52
-
- "Type" indicates the platform on which a unit runs. "WISE Platform" units are created
- using the WISE authoring tool. Students use WISE accounts to complete lessons and teachers can review and grade
- work on the WISE platform. "Other" units are created using different platforms. Resources for these units
+
+ "Type" indicates the platform on which a unit runs. "WISE Platform" units are created
+ using the WISE authoring tool. Students use WISE accounts to complete lessons and teachers can review and grade
+ work on the WISE platform. "Other" units are created using different platforms. Resources for these units
are linked in the unit details.src/app/modules/library/library-filters/library-filters.component.ts
- 185,188
+ 204,207Unit Typesrc/app/modules/library/library-filters/library-filters.component.ts
- 192
+ 211src/assets/wise5/authoringTool/edit-unit-type/edit-unit-type.component.html
@@ -6021,53 +6065,60 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.121,123
+
+ Locations:
+
+ src/app/modules/library/library-project-details/library-project-details.component.html
+ 153,154
+
+ This unit is a copy of (used under CC BY-SA).src/app/modules/library/library-project-details/library-project-details.component.html
- 164,166
+ 174,176This unit is a copy of by (used under CC BY-SA).src/app/modules/library/library-project-details/library-project-details.component.html
- 170,173
+ 180,183This unit is licensed under CC BY-SA. src/app/modules/library/library-project-details/library-project-details.component.html
- 181,183
+ 191,193This unit is licensed under CC BY-SA by . src/app/modules/library/library-project-details/library-project-details.component.html
- 186,188
+ 196,198View Licensesrc/app/modules/library/library-project-details/library-project-details.component.html
- 193,197
+ 203,207Moresrc/app/modules/library/library-project-details/library-project-details.component.html
- 201,207
+ 211,217Use with Classsrc/app/modules/library/library-project-details/library-project-details.component.html
- 217,222
+ 227,232src/app/teacher/create-run-dialog/create-run-dialog.component.html
@@ -6078,7 +6129,7 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.Previewsrc/app/modules/library/library-project-details/library-project-details.component.html
- 225,227
+ 235,237src/app/teacher/run-menu/run-menu.component.html
@@ -6113,7 +6164,7 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.Unit Resources
src/app/modules/library/library-project-details/library-project-details.component.html
- 227,232
+ 237,242
@@ -6685,6 +6736,10 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.
more
+
+ src/app/modules/shared/location-select-menu/location-select-menu.component.html
+ 13,17
+ src/app/modules/shared/select-menu/select-menu.component.html14,18
@@ -7761,17 +7816,6 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.57,62
-
- State
-
- src/app/register/register-teacher-form/register-teacher-form.component.html
- 69,70
-
-
- src/app/teacher/account/edit-profile/edit-profile.component.html
- 63,64
-
- State required
@@ -7783,17 +7827,6 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.66,71
-
- Country
-
- src/app/register/register-teacher-form/register-teacher-form.component.html
- 78,79
-
-
- src/app/teacher/account/edit-profile/edit-profile.component.html
- 72,73
-
- Country required