Skip to content

Commit ce24d14

Browse files
Merge branch 'dev' of https://github.com/ASU/asu-unity-stack into uds-1852-mobile-blockquote
2 parents 84cb73f + 9b56a97 commit ce24d14

File tree

162 files changed

+1954
-1449
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

162 files changed

+1954
-1449
lines changed

.github/pull_request_template.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@
88
<!-- Solution -->
99
<!-- Testing Steps -->
1010

11+
## Checklist
12+
13+
- [ ] Tests pass for relevant code changes
14+
15+
## Important Reminders
16+
<!-- Add meaningful tests -->
17+
<!-- Remove tests that do not provide value -->
18+
1119
### Links
1220

1321
- [JIRA ticket](https://asudev.jira.com/browse/UDS-0000)

.storybook-config/index.js

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/app-degree-pages/.storybook/preview-head.html

Lines changed: 0 additions & 35 deletions
This file was deleted.

packages/app-degree-pages/.storybook/preview.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import ListingPage from "../src/components/ListingPage/index.stories";
22
import DetailPage from "../src/components/DetailPage/index.stories";
33
import "@asu/unity-bootstrap-theme/src/scss/unity-bootstrap-theme.bundle.scss";
4+
import "bootstrap/dist/js/bootstrap.bundle.js";
45

56
const parameters = {
67
actions: { argTypesRegex: "^on[A-Z].*" },

packages/app-degree-pages/CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
# [@asu/app-degree-pages-v3.0.4](https://github.com/asu/asu-unity-stack/compare/@asu/app-degree-pages-v3.0.3...@asu/app-degree-pages-v3.0.4) (2025-04-22)
2+
3+
4+
### Bug Fixes
5+
6+
* **app-degree-pages:** show major map link if application-requirements are null ([9b7618b](https://github.com/asu/asu-unity-stack/commit/9b7618b4d7e35ea931771de48af5402aba71db5a))
7+
* **app-degree-pages:** update view majormap to use same style as undergraduateTemplate ([6954dc5](https://github.com/asu/asu-unity-stack/commit/6954dc51f0eb2866deb5590d9f9c524795105a52))
8+
9+
# [@asu/app-degree-pages-v3.0.3](https://github.com/asu/asu-unity-stack/compare/@asu/app-degree-pages-v3.0.2...@asu/app-degree-pages-v3.0.3) (2025-04-08)
10+
11+
12+
### Bug Fixes
13+
14+
* **app-degree-pages:** changes ([43046a8](https://github.com/asu/asu-unity-stack/commit/43046a8f36984a5cfaf583051697ac546291ca50))
15+
* **app-degree-pages:** improve the search relevancy by displaying title matches first ([ad9b0bc](https://github.com/asu/asu-unity-stack/commit/ad9b0bc4f0f9373905e72f22f46697fe29be656c))
16+
* **app-degree-pages:** improving search relevancy ([20e4e20](https://github.com/asu/asu-unity-stack/commit/20e4e20f31c609be24cd8a4f97957c797c2b38ce))
17+
118
# [@asu/app-degree-pages-v3.0.2](https://github.com/asu/asu-unity-stack/compare/@asu/app-degree-pages-v3.0.1...@asu/app-degree-pages-v3.0.2) (2025-03-03)
219

320

packages/app-degree-pages/examples/detail-page.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@
1919
<!-- *************************************************************** -->
2020
<!-- Load React. -->
2121
<script
22-
src="https://unpkg.com/react@18/umd/react.production.min.js"
22+
src="https://unpkg.com/react@18.3.1/umd/react.development.js"
2323
crossorigin
2424
></script>
2525
<script
26-
src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"
26+
src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.development.js"
2727
crossorigin
2828
></script>
2929
<!-- *************************************************************** -->

packages/app-degree-pages/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@asu/app-degree-pages",
3-
"version": "3.0.2",
3+
"version": "3.0.4",
44
"description": "ASU implementation of degree pages",
55
"main": "./dist/degreePages.cjs.js",
66
"browser": "./dist/degreePages.umd.js",

packages/app-degree-pages/src/components/DetailPage/components/ApplicationRequirements/index.jsx

Lines changed: 65 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,29 @@ const undergraduateTemplate = ({
102102
);
103103
};
104104

105+
const viewCurriculum = majorMapURL => {
106+
const label = "View Curriculum";
107+
return (
108+
<>
109+
<p>
110+
View curriculum below for a detailed list of courses and other
111+
requirements.
112+
</p>
113+
<ButtonList>
114+
<li>
115+
<Button
116+
ariaLabel={label}
117+
color="maroon"
118+
href={majorMapURL}
119+
label={label}
120+
size="small"
121+
/>
122+
</li>
123+
</ButtonList>
124+
</>
125+
);
126+
};
127+
105128
/**
106129
* @param {ApplicationRequirementsProps} props
107130
* @returns {JSX.Element}
@@ -112,17 +135,33 @@ function ApplicationRequirements({
112135
isMinorOrCertificate,
113136
additionalRequirements,
114137
minorRequirements,
138+
majorMapURL,
115139
}) {
116-
let reqsLabel;
117-
if (graduateRequirements || isMinorOrCertificate) {
118-
reqsLabel = !isMinorOrCertificate
119-
? "Degree requirements"
120-
: "Program requirements";
121-
} else {
122-
reqsLabel = !isMinorOrCertificate
123-
? "Admission requirements"
124-
: "Program requirements";
140+
if (!graduateRequirements && !isMinorOrCertificate) {
141+
// if the program is not a graduate program AND not a minor/certificate
142+
// we only show the undergraduate template
143+
return (
144+
<section
145+
id={progDetailSectionIds.applicationRequirements.targetIdName}
146+
data-testid="application-requirements"
147+
>
148+
<h2>
149+
<span className="highlight-gold">Admission requirements</span>
150+
</h2>
151+
{undergraduateTemplate({
152+
transferRequirements,
153+
additionalRequirements,
154+
})}
155+
</section>
156+
);
125157
}
158+
159+
const reqsLabel = !isMinorOrCertificate
160+
? "Degree requirements"
161+
: "Program requirements";
162+
163+
const requirements = graduateRequirements || minorRequirements;
164+
126165
return (
127166
<>
128167
<section
@@ -132,35 +171,28 @@ function ApplicationRequirements({
132171
<h2>
133172
<span className="highlight-gold">{reqsLabel}</span>
134173
</h2>
135-
{graduateRequirements || isMinorOrCertificate ? (
174+
{requirements ? (
136175
<div
137-
dangerouslySetInnerHTML={sanitizeDangerousMarkup(
138-
graduateRequirements || minorRequirements
139-
)}
176+
dangerouslySetInnerHTML={sanitizeDangerousMarkup(requirements)}
140177
/>
141178
) : (
142-
undergraduateTemplate({
143-
transferRequirements,
144-
additionalRequirements,
145-
})
179+
viewCurriculum(majorMapURL)
146180
)}
147181
</section>
148182

149-
{graduateRequirements || isMinorOrCertificate ? (
150-
<section
151-
id={progDetailSectionIds.degreeRequirements.targetIdName}
152-
data-testid="degree-requirements"
153-
>
154-
<h2>
155-
<span className="highlight-gold">Admission requirements</span>
156-
</h2>
157-
<div
158-
dangerouslySetInnerHTML={sanitizeDangerousMarkup(
159-
additionalRequirements
160-
)}
161-
/>
162-
</section>
163-
) : null}
183+
<section
184+
id={progDetailSectionIds.degreeRequirements.targetIdName}
185+
data-testid="degree-requirements"
186+
>
187+
<h2>
188+
<span className="highlight-gold">Admission requirements</span>
189+
</h2>
190+
<div
191+
dangerouslySetInnerHTML={sanitizeDangerousMarkup(
192+
additionalRequirements
193+
)}
194+
/>
195+
</section>
164196
</>
165197
);
166198
}
@@ -171,6 +203,7 @@ ApplicationRequirements.propTypes = {
171203
isMinorOrCertificate: PropTypes.bool,
172204
additionalRequirements: PropTypes.string,
173205
minorRequirements: PropTypes.string,
206+
majorMapURL: PropTypes.string,
174207
};
175208

176209
export { ApplicationRequirements };

packages/app-degree-pages/src/components/DetailPage/index.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ const DetailPage = ({
258258
minorRequirements={resolver.getMinorCourseRequirements()}
259259
additionalRequirements={resolver.getAdmissionsRequirementsText()}
260260
transferRequirements={resolver.getTransferAdmission()}
261+
majorMapURL={resolver.getGeneralDegreeMajorMap()}
261262
/>
262263
)}
263264

packages/app-degree-pages/src/core/services/degree-data-manager-service.js

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,26 @@ function filterData({
4646
!isAccelConcValid(acceleratedConcurrent) ||
4747
row[acceleratedConcurrent.value]?.length > 0;
4848

49-
const filterByKeyword = (resolver, searchTerm) => {
49+
const filterByKeywordTitle = (resolver, searchTerm) => {
5050
if (!searchTerm) return true;
5151
const regex = new RegExp(searchTerm, "i");
52-
return regex.test(resolver.getFullDescription());
52+
const title = regex.test(resolver.getMajorDesc());
53+
if (title) {
54+
return true;
55+
}
56+
57+
return false;
58+
};
59+
60+
const filterByKeywordDescription = (resolver, searchTerm) => {
61+
if (!searchTerm) return true;
62+
const regex = new RegExp(searchTerm, "i");
63+
const description = regex.test(resolver.getFullDescription());
64+
if (description) {
65+
return true;
66+
}
67+
68+
return false;
5369
};
5470

5571
const filterByBlacklist = resolver =>
@@ -81,13 +97,39 @@ function filterData({
8197
filterByDepartmentCode(resolver) &&
8298
filterByCampus(resolver) &&
8399
filterByAcceleratedConcurrent(row) &&
84-
filterByKeyword(resolver, keyword) &&
85100
filterByBlacklist(resolver) &&
86101
filterGraduateCerts(resolver)
87102
);
88103
};
89104

90-
return programs.filter(applyFilters);
105+
const filteredByTitle = [];
106+
const filteredByDescription = [];
107+
108+
const newPrograms = programs.filter(degree => {
109+
const resolver = degreeDataPropResolverService(degree);
110+
111+
const isFilteredByTitle = filterByKeywordTitle(resolver, keyword);
112+
const isFilteredByDescription = filterByKeywordDescription(
113+
resolver,
114+
keyword
115+
);
116+
117+
if (
118+
(isFilteredByTitle || isFilteredByDescription) &&
119+
applyFilters(degree)
120+
) {
121+
if (isFilteredByTitle) {
122+
filteredByTitle.push(degree);
123+
} else {
124+
filteredByDescription.push(degree);
125+
}
126+
return true;
127+
}
128+
129+
return false;
130+
});
131+
132+
return filteredByTitle.concat(filteredByDescription);
91133
}
92134

93135
/**

0 commit comments

Comments
 (0)