@asd20/ui-next 2.12.4 → 2.12.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/package.json +1 -1
  3. package/src/components/molecules/Asd20Notification/index.vue +2 -2
  4. package/src/components/organisms/Asd20SiteSearch/index.vue +39 -1
  5. package/src/components/templates/Asd20404Template/index.vue +1 -0
  6. package/src/components/templates/Asd20ArticleDigestCompactTemplate/index.vue +1 -0
  7. package/src/components/templates/Asd20ArticleDigestTemplate/index.vue +1 -0
  8. package/src/components/templates/Asd20ArticleListTemplate/index.vue +1 -0
  9. package/src/components/templates/Asd20ArticleTemplate/index.vue +1 -0
  10. package/src/components/templates/Asd20BasePageTemplate/index.vue +1 -0
  11. package/src/components/templates/Asd20ClubsTemplate/index.vue +1 -0
  12. package/src/components/templates/Asd20DetailAlternateTemplate/index.vue +1 -0
  13. package/src/components/templates/Asd20DetailImageFullTemplate/index.vue +1 -0
  14. package/src/components/templates/Asd20DetailImageTemplate/index.vue +1 -0
  15. package/src/components/templates/Asd20DetailTemplate/index.vue +1 -0
  16. package/src/components/templates/Asd20DistrictHomeTemplate/index.vue +1 -0
  17. package/src/components/templates/Asd20DistrictVideoTemplate/index.vue +1 -0
  18. package/src/components/templates/Asd20FileListPageTemplate/index.vue +1 -0
  19. package/src/components/templates/Asd20GroupFeatureTemplate/index.vue +1 -0
  20. package/src/components/templates/Asd20LoginsTemplate/index.vue +1 -0
  21. package/src/components/templates/Asd20PeopleFeatureTemplate/index.vue +1 -0
  22. package/src/components/templates/Asd20ProfileTemplate/index.vue +1 -0
  23. package/src/components/templates/Asd20SalaryCalculatorTemplate/index.vue +1 -0
  24. package/src/components/templates/Asd20SchoolHomeTemplate/index.vue +1 -0
  25. package/src/components/templates/Asd20SchoolHomeVideoTemplate/index.vue +1 -0
  26. package/src/components/templates/Asd20WayfindingAccessibilityTemplate/index.vue +1 -0
  27. package/src/components/templates/Asd20WayfindingAlternateTemplate/index.vue +1 -0
  28. package/src/components/templates/Asd20WayfindingImageTemplate/index.vue +1 -0
  29. package/src/components/templates/Asd20WayfindingTemplate/index.vue +1 -0
  30. package/src/mixins/pageTemplateMixin.js +29 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.12.6](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.12.5...ui-next-v2.12.6) (2026-06-02)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * allow exact contact matches to rise above group results; fix notification bullet indent ([ab35494](https://github.com/academydistrict20/asd20-ui-next/commit/ab35494603e9b36d79565fe96bcf50c9771e1a5c))
9
+
10
+ ## [2.12.5](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.12.4...ui-next-v2.12.5) (2026-05-28)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * add navigation search props to all non-home templates ([038885c](https://github.com/academydistrict20/asd20-ui-next/commit/038885c83f7d3cc416c52c0305be954f894b8ece))
16
+
3
17
  ## [2.12.4](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.12.3...ui-next-v2.12.4) (2026-05-28)
4
18
 
5
19
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asd20/ui-next",
3
- "version": "2.12.4",
3
+ "version": "2.12.6",
4
4
  "private": false,
5
5
  "description": "ASD20 UI component library for Vue 3.",
6
6
  "license": "MIT",
@@ -185,8 +185,8 @@ export default {
185
185
  display: block;
186
186
  flex-direction: column;
187
187
  margin: 0.5rem 0;
188
- padding-left: 0;
189
- list-style-position: inside;
188
+ padding-left: 1.25rem !important;
189
+ list-style-position: outside !important;
190
190
  white-space: normal;
191
191
  }
192
192
 
@@ -1006,7 +1006,19 @@ export default {
1006
1006
  },
1007
1007
 
1008
1008
  contactListItems() {
1009
- return [...this.peopleListItems, ...this.groupListItems]
1009
+ return [...this.groupListItems, ...this.peopleListItems]
1010
+ .map((item, index) => ({
1011
+ item,
1012
+ index,
1013
+ exactMatch: this.isExactContactMatch(item),
1014
+ typeRank: item.contactType === 'group' ? 0 : 1,
1015
+ }))
1016
+ .sort((a, b) => {
1017
+ if (a.exactMatch !== b.exactMatch) return a.exactMatch ? -1 : 1
1018
+ if (a.typeRank !== b.typeRank) return a.typeRank - b.typeRank
1019
+ return a.index - b.index
1020
+ })
1021
+ .map(entry => entry.item)
1010
1022
  },
1011
1023
  feedbackFormUrlRaw() {
1012
1024
  if (this.aiSearchFeedbackFormUrl) return this.aiSearchFeedbackFormUrl
@@ -1441,6 +1453,32 @@ export default {
1441
1453
  return String(group.id || group.title || group.contactEmail || '').trim()
1442
1454
  },
1443
1455
 
1456
+ normalizeContactMatchValue(value = '') {
1457
+ return String(value || '')
1458
+ .toLowerCase()
1459
+ .replace(/[^a-z0-9\s]/g, ' ')
1460
+ .replace(/\s+/g, ' ')
1461
+ .trim()
1462
+ },
1463
+
1464
+ getContactSearchText() {
1465
+ return (
1466
+ this.searchQuestion ||
1467
+ this.keywords ||
1468
+ this.inputText ||
1469
+ ''
1470
+ ).trim()
1471
+ },
1472
+
1473
+ isExactContactMatch(item = {}) {
1474
+ const searchText = this.normalizeContactMatchValue(
1475
+ this.getContactSearchText()
1476
+ )
1477
+ const label = this.normalizeContactMatchValue(item.label)
1478
+
1479
+ return !!searchText && !!label && label === searchText
1480
+ },
1481
+
1444
1482
  hasGroupContactDetails(group = {}) {
1445
1483
  if (!group || typeof group !== 'object') return false
1446
1484
  const detailFields = [
@@ -41,6 +41,7 @@
41
41
  />
42
42
  <!-- Site Navigation -->
43
43
  <asd20-site-navigation
44
+ v-bind="siteNavigationSearchProps"
44
45
  ref="siteNavigation"
45
46
  :navigation="navigation"
46
47
  :action-items="actionItems"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -13,6 +13,7 @@
13
13
 
14
14
  <!-- Site Navigation -->
15
15
  <asd20-site-navigation
16
+ v-bind="siteNavigationSearchProps"
16
17
  :navigation="navigation"
17
18
  :action-items="actionItems"
18
19
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -7,6 +7,7 @@
7
7
 
8
8
  <!-- Site Navigation -->
9
9
  <asd20-site-navigation
10
+ v-bind="siteNavigationSearchProps"
10
11
  :navigation="navigation"
11
12
  :action-items="actionItems"
12
13
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -13,6 +13,7 @@
13
13
 
14
14
  <!-- Site Navigation -->
15
15
  <asd20-site-navigation
16
+ v-bind="siteNavigationSearchProps"
16
17
  :navigation="navigation"
17
18
  :action-items="actionItems"
18
19
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -13,6 +13,7 @@
13
13
 
14
14
  <!-- Site Navigation -->
15
15
  <asd20-site-navigation
16
+ v-bind="siteNavigationSearchProps"
16
17
  :navigation="navigation"
17
18
  :action-items="actionItems"
18
19
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -5,6 +5,7 @@
5
5
 
6
6
  <!-- Site Navigation -->
7
7
  <asd20-site-navigation
8
+ v-bind="siteNavigationSearchProps"
8
9
  :navigation="navigation"
9
10
  :action-items="actionItems"
10
11
  :menu-open="menuOpen"
@@ -64,6 +64,18 @@ export default {
64
64
  // Page state
65
65
  menuOpen: { type: Boolean, default: false },
66
66
  searchOpen: { type: Boolean, default: false },
67
+ searchPages: { type: Array, default: () => [] },
68
+ searchFiles: { type: Array, default: () => [] },
69
+ searchGroups: { type: Array, default: () => [] },
70
+ searchPeople: { type: Array, default: () => [] },
71
+ includeDistrictResults: { type: Boolean, default: true },
72
+ searchLanguageCode: { type: String, default: null },
73
+ queryPagesHandler: { type: Function, default: null },
74
+ queryFilesHandler: { type: Function, default: null },
75
+ queryGroupsHandler: { type: Function, default: null },
76
+ queryPeopleHandler: { type: Function, default: null },
77
+ queryAiSiteHandler: { type: Function, default: null },
78
+ aiSearchFeedbackFormUrl: { type: String, default: '' },
67
79
 
68
80
  // Navigation
69
81
  navigation: { type: Array, default: () => [] },
@@ -112,6 +124,23 @@ export default {
112
124
  },
113
125
 
114
126
  computed: {
127
+ siteNavigationSearchProps() {
128
+ return {
129
+ pages: this.searchPages,
130
+ files: this.searchFiles,
131
+ groups: this.searchGroups,
132
+ people: this.searchPeople,
133
+ includeDistrictResults: this.includeDistrictResults,
134
+ searchLanguageCode: this.searchLanguageCode,
135
+ queryPagesHandler: this.queryPagesHandler,
136
+ queryFilesHandler: this.queryFilesHandler,
137
+ queryGroupsHandler: this.queryGroupsHandler,
138
+ queryPeopleHandler: this.queryPeopleHandler,
139
+ queryAiSiteHandler: this.queryAiSiteHandler,
140
+ aiSearchFeedbackFormUrl: this.aiSearchFeedbackFormUrl,
141
+ }
142
+ },
143
+
115
144
  firstMessage() {
116
145
  return this.messages.length > 0 ? this.messages[0] : null
117
146
  },